Name: series-workflowznvd6 Phase: Succeeded StartedAt: 2026-08-03 11:21:51 +0000 UTC FinishedAt: 2026-08-03 15:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[0] Phase: Succeeded StartedAt: 2026-08-03 11:21:51 +0000 UTC FinishedAt: 2026-08-03 11:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 11:21:51 +0000 UTC FinishedAt: 2026-08-03 11:25:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS", "PERF_EVENTS", "PROVE_LOCKING", "KPROBE_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS", "PERF_EVENTS", "PROVE_LOCKING", "KPROBE_EVENTS" ], "series_id": "0451aa1b-28f3-463b-b657-730c1ca351b3" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "trace_call_bpf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7UEVSRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7UFJPVkVfTE9DS0lORyYjMzQ7LAogICAgJiMzNDtLUFJPQkVfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHJhY2VfY2FsbF9icGYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZnVuY3Rpb25hbGx5IG1vZGlmaWVzIGB0cmFjZV9jYWxsX2JwZmAgdG8gZGlzYWJsZSBsb2NrZGVwIHRyYWNraW5nIHdoaWxlIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdHJhY2Vwb2ludHMgd2l0aCB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnIChzdWNoIGFzIGBsb2NrX3JlbGVhc2VgKS4gVGhpcyBpcyBhIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiB0cmFjaW5nIGJlaGF2aW9yIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIEJQRiBwcm9ncmFtcyBpbnRlcmFjdCB3aXRoIGxvY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTU0NjFkNDUxNWM0MTA5MDkwZDMxYWM5YzI1OGIxMWQ3MzE0OTE1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTE6MjM6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaCBiL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcbmluZGV4IDMwOGM3NmI1N2QxMzIuLjZmNjdiNWU5ZTM4ZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG5AQCAtMzMwLDYgJiM0MzszMzAsNyBAQCBlbnVtIHtcbiBcdFRSQUNFX0VWRU5UX0ZMX0ZQUk9CRV9CSVQsXG4gXHRUUkFDRV9FVkVOVF9GTF9DVVNUT01fQklULFxuIFx0VFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklULFxuJiM0MztcdFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQX0JJVCxcbiB9O1xuIFxuIC8qXG5AQCAtMzQ3LDYgJiM0MzszNDgsNyBAQCBlbnVtIHtcbiAgKiAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHNldCB3aGVuIHRoZSBjdXN0b20gZXZlbnQgaGFzIG5vdCBiZWVuIGF0dGFjaGVkXG4gICogICAgICAgICAgICAgICAgICAgdG8gYSB0cmFjZXBvaW50IHlldCwgdGhlbiBpdCBpcyBjbGVhcmVkIHdoZW4gaXQgaXMuXG4gICogIFRFU1RfU1RSICAgICAgLSBUaGUgZXZlbnQgaGFzIGEgXCYjMzQ7JXNcJiMzNDsgdGhhdCBwb2ludHMgdG8gYSBzdHJpbmcgb3V0c2lkZSB0aGUgZXZlbnRcbiYjNDM7ICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zXG4gICovXG4gZW51bSB7XG4gXHRUUkFDRV9FVkVOVF9GTF9DQVBfQU5ZXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0NBUF9BTllfQklUKSxcbkBAIC0zNjAsNiAmIzQzOzM2Miw3IEBAIGVudW0ge1xuIFx0VFJBQ0VfRVZFTlRfRkxfRlBST0JFXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0ZQUk9CRV9CSVQpLFxuIFx0VFJBQ0VfRVZFTlRfRkxfQ1VTVE9NXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQpLFxuIFx0VFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJcdFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklUKSxcbiYjNDM7XHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBfQklUKSxcbiB9O1xuIFxuICNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxfVUtQUk9CRSAoVFJBQ0VfRVZFTlRfRkxfS1BST0JFIHwgVFJBQ0VfRVZFTlRfRkxfVVBST0JFKVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxuaW5kZXggMWRlZDg2OWNkNjE5Zi4uNWNjZjVjNTRlM2QyZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oXG5AQCAtNzIsNiAmIzQzOzcyLDggQEAgREVGSU5FX0VWRU5UKGxvY2ssIGxvY2tfcmVsZWFzZSxcbiBcdFRQX0FSR1MobG9jaywgaXApXG4gKTtcbiBcbiYjNDM7VFJBQ0VfRVZFTlRfRkxBR1MobG9ja19yZWxlYXNlLCBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUCk7XG4mIzQzO1xuICNpZmRlZiBDT05GSUdfTE9DS19TVEFUXG4gXG4gREVGSU5FX0VWRU5UKGxvY2ssIGxvY2tfY29udGVuZGVkLFxuZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xuaW5kZXggNzU0OTVhNWMzNTA3OS4uZjI0NjBmM2M4NjBlMCAxMDA2NDRcbi0tLSBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jXG5AQCAtMjQsNiAmIzQzOzI0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25hbWVpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbG9ja2RlcC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2JwZl9za19zdG9yYWdlLmhcdTAwM2VcbiBcbkBAIC0xMTAsNiAmIzQzOzExMSw3IEBAIHN0YXRpYyB1NjQgYnBmX3Vwcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eCk7XG4gICovXG4gdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXG4ge1xuJiM0MztcdGJvb2wgbm9fbG9ja2RlcCA9IGNhbGwtXHUwMDNlZmxhZ3MgXHUwMDI2IFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQO1xuIFx0dW5zaWduZWQgaW50IHJldDtcbiBcbiBcdGNhbnRfc2xlZXAoKTtcbkBAIC0xNDQsOCAmIzQzOzE0NiwxMiBAQCB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcbiBcdCAqIHJjdV9kZXJlZmVyZW5jZSgpIHdoaWNoIGlzIGFjY2VwdGVkIHJpc2suXG4gXHQgKi9cbiBcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHRpZiAobm9fbG9ja2RlcClcbiYjNDM7XHRcdGxvY2tkZXBfb2ZmKCk7XG4gXHRyZXQgPSBicGZfcHJvZ19ydW5fYXJyYXkocmN1X2RlcmVmZXJlbmNlKGNhbGwtXHUwMDNlcHJvZ19hcnJheSksXG4gXHRcdFx0XHQgY3R4LCBicGZfcHJvZ19ydW4pO1xuJiM0MztcdGlmIChub19sb2NrZGVwKVxuJiM0MztcdFx0bG9ja2RlcF9vbigpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gIG91dDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQUk9WRV9MT0NLSU5HJiMzNDssCiAgICAmIzM0O0tQUk9CRV9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNTQ2MWQ0NTE1YzQxMDkwOTBkMzFhYzljMjU4YjExZDczMTQ5MTVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAxMToyMzoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmggYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oCmluZGV4IDMwOGM3NmI1N2QxMzIuLjZmNjdiNWU5ZTM4ZDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaApAQCAtMzMwLDYgJiM0MzszMzAsNyBAQCBlbnVtIHsKIAlUUkFDRV9FVkVOVF9GTF9GUFJPQkVfQklULAogCVRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQsCiAJVFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklULAomIzQzOwlUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUF9CSVQsCiB9OwogCiAvKgpAQCAtMzQ3LDYgJiM0MzszNDgsNyBAQCBlbnVtIHsKICAqICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgc2V0IHdoZW4gdGhlIGN1c3RvbSBldmVudCBoYXMgbm90IGJlZW4gYXR0YWNoZWQKICAqICAgICAgICAgICAgICAgICAgIHRvIGEgdHJhY2Vwb2ludCB5ZXQsIHRoZW4gaXQgaXMgY2xlYXJlZCB3aGVuIGl0IGlzLgogICogIFRFU1RfU1RSICAgICAgLSBUaGUgZXZlbnQgaGFzIGEgJiMzNDslcyYjMzQ7IHRoYXQgcG9pbnRzIHRvIGEgc3RyaW5nIG91dHNpZGUgdGhlIGV2ZW50CiYjNDM7ICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zCiAgKi8KIGVudW0gewogCVRSQUNFX0VWRU5UX0ZMX0NBUF9BTlkJCT0gKDEgJmx0OyZsdDsgVFJBQ0VfRVZFTlRfRkxfQ0FQX0FOWV9CSVQpLApAQCAtMzYwLDYgJiM0MzszNjIsNyBAQCBlbnVtIHsKIAlUUkFDRV9FVkVOVF9GTF9GUFJPQkUJCT0gKDEgJmx0OyZsdDsgVFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCksCiAJVFJBQ0VfRVZFTlRfRkxfQ1VTVE9NCQk9ICgxICZsdDsmbHQ7IFRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQpLAogCVRSQUNFX0VWRU5UX0ZMX1RFU1RfU1RSCQk9ICgxICZsdDsmbHQ7IFRSQUNFX0VWRU5UX0ZMX1RFU1RfU1RSX0JJVCksCiYjNDM7CVRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQCT0gKDEgJmx0OyZsdDsgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBfQklUKSwKIH07CiAKICNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxfVUtQUk9CRSAoVFJBQ0VfRVZFTlRfRkxfS1BST0JFIHwgVFJBQ0VfRVZFTlRfRkxfVVBST0JFKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oCmluZGV4IDFkZWQ4NjljZDYxOWYuLjVjY2Y1YzU0ZTNkMmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmgKQEAgLTcyLDYgJiM0Mzs3Miw4IEBAIERFRklORV9FVkVOVChsb2NrLCBsb2NrX3JlbGVhc2UsCiAJVFBfQVJHUyhsb2NrLCBpcCkKICk7CiAKJiM0MztUUkFDRV9FVkVOVF9GTEFHUyhsb2NrX3JlbGVhc2UsIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQKTsKJiM0MzsKICNpZmRlZiBDT05GSUdfTE9DS19TVEFUCiAKIERFRklORV9FVkVOVChsb2NrLCBsb2NrX2NvbnRlbmRlZCwKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYwppbmRleCA3NTQ5NWE1YzM1MDc5Li5mMjQ2MGYzYzg2MGUwIDEwMDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jCkBAIC0yNCw2ICYjNDM7MjQsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2tleS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25hbWVpLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZmlsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9sb2NrZGVwLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDtuZXQvYnBmX3NrX3N0b3JhZ2UuaCZndDsKIApAQCAtMTEwLDYgJiM0MzsxMTEsNyBAQCBzdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpOwogICovCiB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCkKIHsKJiM0MzsJYm9vbCBub19sb2NrZGVwID0gY2FsbC0mZ3Q7ZmxhZ3MgJmFtcDsgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVA7CiAJdW5zaWduZWQgaW50IHJldDsKIAogCWNhbnRfc2xlZXAoKTsKQEAgLTE0NCw4ICYjNDM7MTQ2LDEyIEBAIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KQogCSAqIHJjdV9kZXJlZmVyZW5jZSgpIHdoaWNoIGlzIGFjY2VwdGVkIHJpc2suCiAJICovCiAJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlpZiAobm9fbG9ja2RlcCkKJiM0MzsJCWxvY2tkZXBfb2ZmKCk7CiAJcmV0ID0gYnBmX3Byb2dfcnVuX2FycmF5KHJjdV9kZXJlZmVyZW5jZShjYWxsLSZndDtwcm9nX2FycmF5KSwKIAkJCQkgY3R4LCBicGZfcHJvZ19ydW4pOwomIzQzOwlpZiAobm9fbG9ja2RlcCkKJiM0MzsJCWxvY2tkZXBfb24oKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAogIG91dDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIHRoZSBMb2NrZGVwIERpc2FibGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgZnV6emluZyBpdCBpcyBhIHdvcnRod2hpbGUgZWZmb3J0LiBFc3NlbnRpYWxseSwgaXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgLCBhbmQgYXBwbGllcyBpdCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2UgZXZlbnQuIFRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdHJhY2VfY2FsbF9icGZgLCB3aGVyZSBpdCBkaXNhYmxlcyBsb2NrZGVwIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBydW5uaW5nIGlmIHRoaXMgbmV3IGZsYWcgaXMgcHJlc2VudC4KCkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSYjMzk7cmUgZGlzYWJsaW5nIGxvY2tkZXAgYXJvdW5kIHRoZSBleGVjdXRpb24gb2YgYGJwZl9wcm9nX3J1bl9hcnJheWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzICpyZWFjaGFibGUqIGJ5IGEgZnV6emVyLiBBbmQgaXQgaXMuIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGF0dGFjaGluZyBhIEJQRiBwcm9ncmFtIHRvIGEgdHJhY2Vwb2ludCDigJMgc3BlY2lmaWNhbGx5IGBsb2NrX3JlbGVhc2VgLCBzaW5jZSB0aGlzIGZsYWcgaXMgc2V0IHRoZXJlLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIHRoZSBjb25kaXRpb25zIEkgbmVlZCB0byByZXByb2R1Y2UgdGhlIHNjZW5hcmlvLgoKU28gbmV4dCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIGNoYW5nZSBoYXBwZW5zIHdpdGhpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gSSBrbm93IHRoYXQgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfRVZFTlRTYCBpcyBlbmFibGVkLiBJIG5lZWQgdG8gbm93IGNoZWNrIGVpdGhlciBga2VybmVsL3RyYWNlL01ha2VmaWxlYCBvciBgaW5pdC9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0cnVlIGFuZCB0byBzZWUgaG93IHRvIGFjdHVhbGx5IGVuYWJsZSBgQlBGX0VWRU5UU2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvTWFrZWZpbGU9MTA5PW9iai0kKENPTkZJR19VU0VSX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2V2ZW50c191c2VyLm9cbmtlcm5lbC90cmFjZS9NYWtlZmlsZToxMTA6b2JqLSQoQ09ORklHX0JQRl9FVkVOVFMpICYjNDM7PSBicGZfdHJhY2Uub1xua2VybmVsL3RyYWNlL01ha2VmaWxlLTExMS1vYmotJChDT05GSUdfS1BST0JFX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2twcm9iZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBFdmVudCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYEJQRl9FVkVOVFNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluZWQuIE1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgY2FuZGlkYXRlczogdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgYW5kIHRoZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgYGluaXQvS2NvbmZpZ2AgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGl0JiMzOTtzIHdoZXJlIGNvcmUgc3lzdGVtIGZlYXR1cmVzIGFyZSBvZnRlbiBjb25maWd1cmVkLiBBbHRlcm5hdGl2ZWx5LCBiZWNhdXNlIEJQRiBpcyBoZWF2aWx5IGludm9sdmVkIGluIHRyYWNpbmcgYW5kIGluc3RydW1lbnRhdGlvbiwgdGhlIGBrZXJuZWwvdHJhY2UvS2NvbmZpZ2AgZmlsZSBpcyBhbm90aGVyIGhpZ2hseSBsaWtlbHkgbG9jYXRpb24uIExldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyB0aG9zZSB0d28gZmlsZXMg4oCTIHRoYXQgc2hvdWxkIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSByZXF1ZXN0OgoKKipEZWNvbnN0cnVjdGluZyBgQlBGX0VWRU5UU2AgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoZXkgd2FudCBtZSB0byBkaXNzZWN0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgQlBGX0VWRU5UU2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCBpdCBmcm9tIGEgc3lzdGVtcyBwZXJzcGVjdGl2ZSwgYXMgSSB3b3VsZCBpZiBJIHdlcmUgYXJjaGl0ZWN0aW5nIGEgdHJhY2luZyBmcmFtZXdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICYjMzQ7ZGVwZW5kZW5jaWVzJiMzNDsgYWN0dWFsbHkgbWVhbnMgaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0aGUgdXBzdHJlYW0ga2VybmVsIHN1YnN5c3RlbXMgdGhhdCBmZWVkIGludG8gdGhlIGBCUEZfRVZFTlRTYCBpbmZyYXN0cnVjdHVyZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgdGhlIGRvd25zdHJlYW0gYXBwbGljYXRpb25zIG9yIHRvb2xzIHRoYXQgKmNvbnN1bWUqIHRoZSBldmVudHM/IE9yIHBlcmhhcHMgYm90aD8KCkkmIzM5O2Qgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBCUEYgZXZlbnQtcmVsYXRlZCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMuIEkmIzM5O2QgYmUgc2VhcmNoaW5nIGZvciBpbmNsdWRlcywgZnVuY3Rpb24gY2FsbHMsIGFuZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGBCUEZfRVZFTlRTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGRhdGEgb3JpZ2luYXRlcywgdGhlIHByb2Nlc3Npbmcgc3RlcHMgaXQgZ29lcyB0aHJvdWdoLCBhbmQgaG93IGl0IGlzIHVsdGltYXRlbHkgZXhwb3NlZC4KCk15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiB0aGVzZSBhcmVhczoKCiogICAqKlVwc3RyZWFtIEtlcm5lbCBDb21wb25lbnRzOioqIFdoZXJlIGRvZXMgdGhlIGFjdHVhbCBldmVudCBkYXRhIGNvbWUgZnJvbT8gVHJhY2Vwb2ludHMsIHBlcmYgZXZlbnRzLCBrcHJvYmVzLCB1cHJvYmVzLCBVU0RULCBldGMuPyBIb3cgaXMgdGhlIGRhdGEgc3RydWN0dXJlZCBiZWZvcmUgaXQgZ2V0cyBpbnRvIHRoZSBCUEYgcGlwZWxpbmU/IFdoYXQgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IHNoYXJlZCByZXNvdXJjZXM/CiogICAqKkJQRiBIZWxwZXIgRnVuY3Rpb25zOioqIFdoYXQgQlBGIGhlbHBlciBmdW5jdGlvbnMgYXJlIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3Igd29ya2luZyB3aXRoIGBCUEZfRVZFTlRTYD8gYGJwZl9wZXJmX2V2ZW50X3JlYWQoKWAsIGBicGZfdHJhY2VfcHJpbnRrKClgIGFyZSBnb29kIHN0YXJ0aW5nIHBvaW50cy4gSG93IGRvIHRoZXkgaGFuZGxlIGRhdGEgYnVmZmVyaW5nLCBmaWx0ZXJpbmcsIGFuZCBkZWxpdmVyeT8KKiAgICoqRG93bnN0cmVhbSBDb25zdW1lcnM6KiogSG93IGRvIEJQRiBwcm9ncmFtcyByZWFkIGFuZCBpbnRlcnByZXQgdGhlIGV2ZW50cz8gV2hhdCBCUEYgZGF0YSBzdHJ1Y3R1cmVzIChlLmcuLCByaW5nIGJ1ZmZlcnMsIG1hcHMpIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgdGhpcyBwdXJwb3NlPyBJcyB0aGVyZSBhIHN0YW5kYXJkIHdheSB0byBmb3JtYXQgb3Igc2VyaWFsaXplIHRoZSBldmVudCBkYXRhPwoqICAgKipMaWJicGY6KiogV2hhdCYjMzk7cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBCUEZfRVZFTlRTYCBpbmZyYXN0cnVjdHVyZSBhbmQgdGhlIGBsaWJicGZgIGxpYnJhcnk/IEhvdyBkb2VzIGBsaWJicGZgIGZhY2lsaXRhdGUgdGhlIGxvYWRpbmcsIGF0dGFjaGluZywgYW5kIGludGVyYWN0aW9uIHdpdGggQlBGIHByb2dyYW1zPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGBsaWJicGZgIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGV2ZW50cz8KCkkmIzM5O2xsIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbGltaXRhdGlvbnMuIEFyZSB0aGVyZSBhbnkga25vd24gc2NhbGFiaWxpdHkgaXNzdWVzIHdpdGggYEJQRl9FVkVOVFNgIHVuZGVyIGhpZ2ggbG9hZD8gQXJlIHRoZXJlIGFueSBsb2NrIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBJJiMzOTtsbCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgaXQgd2l0aCBhbnkgaGlzdG9yaWNhbCBkb2N1bWVudGF0aW9uIGFuZCBjb21taXRzLCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSByZWFzb25zIHRoYXQgd2VudCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODUwOlx0XHQgIGNvbnZlcnQgdGhlIHR5cGUgb2YgYW4gZXZlbnQgZmllbGQuIEZvciBleGFtcGxlLCB0dXJuIGFuXG4gODUxOlx0XHQgIGFkZHJlc3MgaW50byBhIHN0cmluZy5cbiA4NTI6XHRcbiA4NTM6XHRjb25maWcgQlBGX0VWRU5UU1xuIDg1NDpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuIDg1NTpcdFx0ZGVwZW5kcyBvbiAoS1BST0JFX0VWRU5UUyB8fCBVUFJPQkVfRVZFTlRTKSBcdTAwMjZcdTAwMjYgUEVSRl9FVkVOVFNcbiA4NTY6XHRcdGJvb2xcbiA4NTc6XHRcdGRlZmF1bHQgeVxuIDg1ODpcdFx0aGVscFxuIDg1OTpcdFx0ICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBhdHRhY2ggQlBGIHByb2dyYW1zIHRvIGtwcm9iZSwgdXByb2JlLCBhbmRcbiA4NjA6XHRcdCAgdHJhY2Vwb2ludCBldmVudHMuXG4gODYxOlx0XG4gODYyOlx0Y29uZmlnIERZTkFNSUNfRVZFTlRTXG4gODYzOlx0XHRkZWZfYm9vbCBuXG4gODY0Olx0XG4gODY1Olx0Y29uZmlnIFBST0JFX0VWRU5UU1xuIDg2NjpcdFx0ZGVmX2Jvb2wgblxuIDg2NzpcdFxuIDg2ODpcdGNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG4gODY5Olx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIEJQRiBFdmVudCBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgYEJQRl9FVkVOVFNgIGhpbmdlcyBvbiBhIGZldyBrZXkgY29tcG9uZW50cy4gU3BlY2lmaWNhbGx5LCBgQlBGX1NZU0NBTExgLCBhbmQgZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKG9yIGJvdGgpLCBwbHVzIGBQRVJGX0VWRU5UU2AuIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGl0IGFwcGVhcnMsIGlzIHRvIGVuYWJsZSB0aGlzIGlmIGFsbCB0aG9zZSBwcmVyZXF1aXNpdGVzIGFyZSBzYXRpc2ZpZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgY2xlYW4gYW5kIGxvZ2ljYWwgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuCgpOb3csIHRoZSB1c2Ugb2YgYGxvY2tkZXBfb2ZmKClgIGFuZCBgbG9ja2RlcF9vbigpYCBjYXVnaHQgbXkgZXllLiBUaGV5IHNlZW0gaW1wb3J0YW50IGhlcmUsIHNvIG5hdHVyYWxseSwgSSBuZWVkIGBDT05GSUdfTE9DS0RFUGAgdG8gYmUgZW5hYmxlZCBmb3IgdGhlbSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nIG1lYW5pbmdmdWwuIEkgc2VlbSB0byByZWNhbGwgdGhhdCB0aGV54oCZcmUgc3RpbGwgZGVmaW5lZCBhcyBlbXB0eSBtYWNyb3MgaWYgYENPTkZJR19MT0NLREVQYCBpcyBub3Qgc2V0LCB0aG91Z2guIExldCBtZSBqdXN0IGNvbmZpcm0gd2hlcmUgdGhvc2UgYXJlIGRlZmluZWQuLi4gQWgsIHJpZ2h0LCB0aGV5JiMzOTtyZSBpbiBgaW5jbHVkZS9saW51eC9sb2NrZGVwLmhgLiBPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGhlYWRlciBmaWxlIGFuZCBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kIHRoZWlyIHVzYWdlIGNvbnRleHQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIGxvY2tkZXBfb2ZmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sb2NrZGVwLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaC0xMDgtXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaC0xMTAtZG8ge1x0XHRcdFx0XHRcdFx0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIyNQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IEVtcHR5IERlZmluaXRpb24qKgoKSG1tLCBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFuIGFjdHVhbCwgZGVmaW5lZCBmdW5jdGlvbiBvciBtYWNybyBhc3NvY2lhdGVkIHdpdGggYGxvY2tkZXBfb2ZmYC4gSXQmIzM5O3MgYSBjb21tb24gcGF0dGVybiwgZXNwZWNpYWxseSBpbiBrZXJuZWwgZGV2ZWxvcG1lbnQuIFNvbWV0aW1lcywgdGhlc2UgZGVidWdnaW5nIG9yIGNvbnRyb2wgbWVjaGFuaXNtcyBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCwgb3IgZXZlbiBkZWZpbmVkIGFzICYjMzQ7bm90aGluZyYjMzQ7IHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMuIEkmIzM5O20gbGlrZWx5IGxvb2tpbmcgZm9yIGEgc2l0dWF0aW9uIHdoZXJlIGBsb2NrZGVwX29mZmAgbWlnaHQgYmUgZGVmaW5lZCBhcyBhbiBlbXB0eSBtYWNybywgb3IgcGVyaGFwcyBldmVuIGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBjb21wbGV0ZWx5IHN0dWJiZWQgb3V0LiBUaGlzIG1lYW5zIGl0IGVpdGhlciBkb2VzIG5vdGhpbmcsIG9yIGlzIGRpc2FibGVkIGFsdG9nZXRoZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBrZXJuZWwgaXMgdXNpbmcgaXQgdG8gZGlzYWJsZSBsb2NrIGRlcGVuZGVuY3kgY2hlY2tpbmcsIG9yIGlmIGl0IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGhvdXQgbG9jayBkZXBlbmRlbmN5IGNoZWNraW5nLCBhcyB0aGlzIHdvdWxkIGNoYW5nZSBob3cgdGhlIGxvY2sgZGVwZW5kZW5jaWVzIGFyZSBhbmFseXNlZC4gSSYjMzk7bSBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGltcGxlbWVudGF0aW9uIGF0dGFjaGVkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgbG9ja2RlcF9vZmYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaD05NT1leHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjEwOTojZGVmaW5lIGxvY2tkZXBfb2ZmKClcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBsb2NrZGVwLmgqKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgbG9ja2RlcCBpbnRlcm5hbHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJoYXBzIHNvbWUgb2YgdGhlIGZ1bmRhbWVudGFsIGNvbmNlcHRzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbG9jayBkZXBlbmRlbmN5IHZhbGlkYXRvci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGluY2x1ZGUvbGludXgvbG9ja2RlcC5oYCwgYXJvdW5kIGxpbmUgMTA5LiBUaGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHNwb3QgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoZSBrZXkgZGVmaW5pdGlvbnMg4oCTIGxpa2VseSB3aGVyZSB0aGUgY29yZSBsb2NrZGVwIHN0cnVjdHVyZXMgbGlrZSBgc3RydWN0IGxvY2tfY2xhc3NgLCBgc3RydWN0IGxvY2tkZXBfbWFwYCBvciBwb3RlbnRpYWxseSBldmVuIHNvbWUgb2YgdGhlIGNydWNpYWwgbWFjcm9zIHRoYXQgYXJlIHRoZSBidWlsZGluZyBibG9ja3Mgb2YgbG9jayBhbmFseXNpcyBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gc2VlIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMg4oCTIHdoYXQgZGF0YSBpcyBzdG9yZWQgYWJvdXQgbG9ja3MsIHdoaWNoIGxpa2VseSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jayYjMzk7cyBjbGFzcywgdXNhZ2UgY29udGV4dCwgYW5kIHBvdGVudGlhbGx5IGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBpdCBmb3JtcyB3aXRoIG90aGVyIGxvY2tzLiBUaGUgbGluZSBudW1iZXIgaXMgYSBzdWdnZXN0aW9uLiBXZSYjMzk7bGwgZmluZCBvdXQsIHNob3J0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sb2NrZGVwLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdCNkZWZpbmUgTE9DS0RFUF9SRUNVUlNJT05fQklUU1x0MTZcbiAxMDE6XHQjZGVmaW5lIExPQ0tERVBfT0ZGXHRcdCgxVSBcdTAwM2NcdTAwM2MgTE9DS0RFUF9SRUNVUlNJT05fQklUUylcbiAxMDI6XHQjZGVmaW5lIExPQ0tERVBfUkVDVVJTSU9OX01BU0tcdChMT0NLREVQX09GRiAtIDEpXG4gMTAzOlx0XG4gMTA0Olx0LypcbiAxMDU6XHQgKiBsb2NrZGVwX3tvZmYsb259KCkgYXJlIG1hY3JvcyB0byBhdm9pZCB0cmFjaW5nIGFuZCBrcHJvYmVzOyBub3QgaW5saW5lcyBkdWVcbiAxMDY6XHQgKiB0byBoZWFkZXIgZGVwZW5kZW5jaWVzLlxuIDEwNzpcdCAqL1xuIDEwODpcdFxuIDEwOTpcdCNkZWZpbmUgbG9ja2RlcF9vZmYoKVx0XHRcdFx0XHRcXFxuIDExMDpcdGRvIHtcdFx0XHRcdFx0XHRcdFxcXG4gMTExOlx0XHRjdXJyZW50LVx1MDAzZWxvY2tkZXBfcmVjdXJzaW9uICYjNDM7PSBMT0NLREVQX09GRjtcdFxcXG4gMTEyOlx0fSB3aGlsZSAoMClcbiAxMTM6XHRcbiAxMTQ6XHQjZGVmaW5lIGxvY2tkZXBfb24oKVx0XHRcdFx0XHRcXFxuIDExNTpcdGRvIHtcdFx0XHRcdFx0XHRcdFxcXG4gMTE2Olx0XHRjdXJyZW50LVx1MDAzZWxvY2tkZXBfcmVjdXJzaW9uIC09IExPQ0tERVBfT0ZGO1x0XFxcbiAxMTc6XHR9IHdoaWxlICgwKVxuIDExODpcdFxuIDExOTpcdGV4dGVybiB2b2lkIGxvY2tkZXBfcmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcbiAxMjA6XHRleHRlcm4gdm9pZCBsb2NrZGVwX3VucmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcbiAxMjE6XHRcbiAxMjI6XHQvKlxuIDEyMzpcdCAqIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgc3BlY2lmaWMgbG9ja2luZyB2YXJpYW50cyAoc3BpbmxvY2tzLFxuIDEyNDpcdCAqIHJ3bG9ja3MsIG11dGV4ZXMgYW5kIHJ3c2VtcykgdG8gcGFzcyBpbml0L2FjcXVpcmUvcmVsZWFzZSBldmVudHNcbiAxMjU6XHQgKiB0byBsb2NrZGVwOlxuIDEyNjpcdCAqL1xuIDEyNzpcdFxuIDEyODpcdGV4dGVybiB2b2lkIGxvY2tkZXBfaW5pdF9tYXBfdHlwZShzdHJ1Y3QgbG9ja2RlcF9tYXAgKmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsXG4gMTI5Olx0XHRzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSwgaW50IHN1YmNsYXNzLCB1OCBpbm5lciwgdTggb3V0ZXIsIHU4IGxvY2tfdHlwZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMzgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipBbmFseXppbmcgTG9ja2RlcCBEZWZpbml0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgYGxvY2tkZXBfb2ZmKClgLi4uIHdoZXJlICppcyogdGhhdCBkZWZpbmVkPyBJIHNlZSB0aGUgcmVmZXJlbmNlIGhlcmUsIHdoaWNoIGlzIGhlbHBmdWwuIE5vdywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIGhvdyBpdCYjMzk7cyAqY29uZGl0aW9uYWxseSogZGVmaW5lZC4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIGxvb2sgdXBzdHJlYW0gZm9yIGFueSBgI2lmZGVmYCBkaXJlY3RpdmVzIHRoYXQgbWlnaHQgY29udHJvbCBpdHMgaW5jbHVzaW9uLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdG8gc2VlIGlmIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBgQ09ORklHX0xPQ0tERVBgLiBJJiMzOTtsbCBzY2FuIHRoZSBwcmVjZWRpbmcgbGluZXMgcXVpY2tseS4gVGhpcyBpcyBjb21tb24gcHJhY3RpY2UsIEkgd2FudCB0byBzZWUgaWYgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgY29uZGl0aW9uYWwgaW4gYW55IHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdC8qXG4gICAzOlx0ICogUnVudGltZSBsb2NraW5nIGNvcnJlY3RuZXNzIHZhbGlkYXRvclxuICAgNDpcdCAqXG4gICA1Olx0ICogIENvcHlyaWdodCAoQykgMjAwNiwyMDA3IFJlZCBIYXQsIEluYy4sIEluZ28gTW9sbmFyIFx1MDAzY21pbmdvQHJlZGhhdC5jb21cdTAwM2VcbiAgIDY6XHQgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFJlZCBIYXQsIEluYy4sIFBldGVyIFppamxzdHJhXG4gICA3Olx0ICpcbiAgIDg6XHQgKiBzZWUgRG9jdW1lbnRhdGlvbi9sb2NraW5nL2xvY2tkZXAtZGVzaWduLnJzdCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgOTpcdCAqL1xuICAxMDpcdCNpZm5kZWYgX19MSU5VWF9MT0NLREVQX0hcbiAgMTE6XHQjZGVmaW5lIF9fTElOVVhfTE9DS0RFUF9IXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbG9ja2RlcF90eXBlcy5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc21wLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2Nhc20vcGVyY3B1LmhcdTAwM2VcbiAgMTY6XHRcbiAgMTc6XHRzdHJ1Y3QgdGFza19zdHJ1Y3Q7XG4gIDE4Olx0XG4gIDE5Olx0I2lmZGVmIENPTkZJR19MT0NLREVQXG4gIDIwOlx0XG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbGlua2FnZS5oXHUwMDNlXG4gIDIyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG4gIDIzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdfbG9ja3MuaFx1MDAzZVxuICAyNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0YWNrdHJhY2UuaFx1MDAzZVxuICAyNTpcdFxuICAyNjpcdHN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX2NvcHlfbWFwKHN0cnVjdCBsb2NrZGVwX21hcCAqdG8sXG4gIDI3Olx0XHRcdFx0XHQgICAgc3RydWN0IGxvY2tkZXBfbWFwICpmcm9tKVxuICAyODpcdHtcbiAgMjk6XHRcdGludCBpO1xuICAzMDpcdFxuICAzMTpcdFx0KnRvID0gKmZyb207XG4gIDMyOlx0XHQvKlxuICAzMzpcdFx0ICogU2luY2UgdGhlIGNsYXNzIGNhY2hlIGNhbiBiZSBtb2RpZmllZCBjb25jdXJyZW50bHkgd2UgY291bGQgb2JzZXJ2ZVxuICAzNDpcdFx0ICogaGFsZiBwb2ludGVycyAoNjRiaXQgYXJjaCB1c2luZyAzMmJpdCBjb3B5IGluc25zKS4gVGhlcmVmb3JlIGNsZWFyXG4gIDM1Olx0XHQgKiB0aGUgY2FjaGVzIGFuZCB0YWtlIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gIDM2Olx0XHQgKlxuICAzNzpcdFx0ICogWFhYIGl0IGRvZXNuJiMzOTt0IHdvcmsgd2VsbCB3aXRoIGxvY2tkZXBfc2V0X2NsYXNzX2FuZF9zdWJjbGFzcygpLCBzaW5jZVxuICAzODpcdFx0ICogICAgIHRoYXQgcmVsaWVzIG9uIGNhY2hlIGFidXNlLlxuICAzOTpcdFx0ICovXG4gIDQwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOUl9MT0NLREVQX0NBQ0hJTkdfQ0xBU1NFUzsgaSYjNDM7JiM0MzspXG4gIDQxOlx0XHRcdHRvLVx1MDAzZWNsYXNzX2NhY2hlW2ldID0gTlVMTDtcbiAgNDI6XHR9XG4gIDQzOlx0XG4gIDQ0Olx0LypcbiAgNDU6XHQgKiBFdmVyeSBsb2NrIGhhcyBhIGxpc3Qgb2Ygb3RoZXIgbG9ja3MgdGhhdCB3ZXJlIHRha2VuIGFmdGVyIGl0LlxuICA0NjpcdCAqIFdlIG9ubHkgZ3JvdyB0aGUgbGlzdCwgbmV2ZXIgcmVtb3ZlIGZyb20gaXQ6XG4gIDQ3Olx0ICovXG4gIDQ4Olx0c3RydWN0IGxvY2tfbGlzdCB7XG4gIDQ5Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkXHRcdGVudHJ5O1xuICA1MDpcdFx0c3RydWN0IGxvY2tfY2xhc3NcdFx0KmNsYXNzO1xuICA1MTpcdFx0c3RydWN0IGxvY2tfY2xhc3NcdFx0KmxpbmtzX3RvO1xuICA1MjpcdFx0Y29uc3Qgc3RydWN0IGxvY2tfdHJhY2VcdFx0KnRyYWNlO1xuICA1MzpcdFx0dTE2XHRcdFx0XHRkaXN0YW5jZTtcbiAgNTQ6XHRcdC8qIGJpdG1hcCBvZiBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzIGZyb20gaGVhZCB0byB0aGlzICovXG4gIDU1Olx0XHR1OFx0XHRcdFx0ZGVwO1xuICA1NjpcdFx0LyogdXNlZCBieSBCRlMgdG8gcmVjb3JkIHdoZXRoZXIgXCYjMzQ7cHJldiAtXHUwMDNlIHRoaXNcJiMzNDsgb25seSBoYXMgLSgqUiktXHUwMDNlICovXG4gIDU3Olx0XHR1OFx0XHRcdFx0b25seV94cjtcbiAgNTg6XHRcbiAgNTk6XHRcdC8qXG4gIDYwOlx0XHQgKiBUaGUgcGFyZW50IGZpZWxkIGlzIHVzZWQgdG8gaW1wbGVtZW50IGJyZWFkdGgtZmlyc3Qgc2VhcmNoLCBhbmQgdGhlXG4gIDYxOlx0XHQgKiBiaXQgMCBpcyByZXVzZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGxvY2sgaGFzIGJlZW4gYWNjZXNzZWQgaW4gQkZTLlxuICA2MjpcdFx0ICovXG4gIDYzOlx0XHRzdHJ1Y3QgbG9ja19saXN0XHRcdCpwYXJlbnQ7XG4gIDY0Olx0fTtcbiAgNjU6XHRcbiAgNjY6XHQvKipcbiAgNjc6XHQgKiBzdHJ1Y3QgbG9ja19jaGFpbiAtIGxvY2sgZGVwZW5kZW5jeSBjaGFpbiByZWNvcmRcbiAgNjg6XHQgKlxuICA2OTpcdCAqIEBpcnFfY29udGV4dDogdGhlIHNhbWUgYXMgaXJxX2NvbnRleHQgaW4gaGVsZF9sb2NrIGJlbG93XG4gIDcwOlx0ICogQGRlcHRoOiAgICAgICB0aGUgbnVtYmVyIG9mIGhlbGQgbG9ja3MgaW4gdGhpcyBjaGFpblxuICA3MTpcdCAqIEBiYXNlOiAgICAgICAgdGhlIGluZGV4IGluIGNoYWluX2hsb2NrcyBmb3IgdGhpcyBjaGFpblxuICA3MjpcdCAqIEBlbnRyeTogICAgICAgdGhlIGNvbGxpZGVkIGxvY2sgY2hhaW5zIGluIGxvY2tfY2hhaW4gaGFzaCBsaXN0XG4gIDczOlx0ICogQGNoYWluX2tleTogICB0aGUgaGFzaCBrZXkgb2YgdGhpcyBsb2NrX2NoYWluXG4gIDc0Olx0ICovXG4gIDc1Olx0c3RydWN0IGxvY2tfY2hhaW4ge1xuICA3NjpcdFx0Lyogc2VlIEJVSUxEX0JVR19PTigpcyBpbiBhZGRfY2hhaW5fY2FjaGUoKSAqL1xuICA3NzpcdFx0dW5zaWduZWQgaW50XHRcdFx0aXJxX2NvbnRleHQgOiAgMixcbiAgNzg6XHRcdFx0XHRcdFx0ZGVwdGggICAgICAgOiAgNixcbiAgNzk6XHRcdFx0XHRcdFx0YmFzZVx0ICAgIDogMjQ7XG4gIDgwOlx0XHQvKiA0IGJ5dGUgaG9sZSAqL1xuICA4MTpcdFx0c3RydWN0IGhsaXN0X25vZGVcdFx0ZW50cnk7XG4gIDgyOlx0XHR1NjRcdFx0XHRcdGNoYWluX2tleTtcbiAgODM6XHR9O1xuICA4NDpcdFxuICA4NTpcdC8qXG4gIDg2Olx0ICogSW5pdGlhbGl6YXRpb24sIHNlbGYtdGVzdCBhbmQgZGVidWdnaW5nLW91dHB1dCBtZXRob2RzOlxuICA4NzpcdCAqL1xuICA4ODpcdGV4dGVybiB2b2lkIGxvY2tkZXBfaW5pdCh2b2lkKTtcbiAgODk6XHRleHRlcm4gdm9pZCBsb2NrZGVwX3Jlc2V0KHZvaWQpO1xuICA5MDpcdGV4dGVybiB2b2lkIGxvY2tkZXBfcmVzZXRfbG9jayhzdHJ1Y3QgbG9ja2RlcF9tYXAgKmxvY2spO1xuICA5MTpcdGV4dGVybiB2b2lkIGxvY2tkZXBfZnJlZV9rZXlfcmFuZ2Uodm9pZCAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4gIDkyOlx0ZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCBsb2NrZGVwX3N5c19leGl0KHZvaWQpO1xuICA5MzpcdGV4dGVybiB2b2lkIGxvY2tkZXBfc2V0X3NlbGZ0ZXN0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbiAgOTQ6XHRcbiAgOTU6XHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuICA5NjpcdFxuICA5NzpcdC8qXG4gIDk4Olx0ICogU3BsaXQgdGhlIHJlY3Vyc2lvbiBjb3VudGVyIGluIHR3byB0byByZWFkaWx5IGRldGVjdCAmIzM5O29mZiYjMzk7IHZzIHJlY3Vyc2lvbi5cbiAgOTk6XHQgKi9cbiAxMDA6XHQjZGVmaW5lIExPQ0tERVBfUkVDVVJTSU9OX0JJVFNcdDE2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTG9ja2RlcCBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIE15IGZvY3VzIGlzIG9uIHRoaXMgc2VjdGlvbiwgd2hpY2ggaXMgY2xlYXJseSBndWFyZGVkIGJ5IGAjaWZkZWYgQ09ORklHX0xPQ0tERVBgLiBPa2F5LCB0aGF0JiMzOTtzIGV4cGVjdGVkLiBMb2NrZGVwIGlzIGNyaXRpY2FsIGZvciBkZXRlY3RpbmcgbG9jay1yZWxhdGVkIGJ1Z3MsIHNvIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBpZiBDT05GSUdfTE9DS0RFUCBpc24mIzM5O3QgKmRlZmluZWQqLCB3aGF0IGhhcHBlbnMgdG8gYGxvY2tkZXBfb2ZmKClgPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIGFuZCBob3cgaXRzIGFic2VuY2UgaXMgaGFuZGxlZC4gSXMgaXQgZGVmaW5lZCBhcyBhIG5vLW9wPyBEb2VzIGl0IGdldCByZXBsYWNlZCB3aXRoIHNvbWV0aGluZyBlbHNlPyBPciwgaXMgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29tcGxldGVseSByZW1vdmVkPyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdHJhY2UgdGhpcyBsb2dpYyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcyB3aGVuIGxvY2tkZXAgaXMgZGlzYWJsZWQuIEtub3dpbmcgaG93IGl0JiMzOTtzIGhhbmRsZWQgaXMgdml0YWwgZm9yIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgbG9jay1yZWxhdGVkIGlzc3VlcyBpbiBkaWZmZXJlbnQgYnVpbGQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlYmFzZSB0byBmaW5kIHRoYXQgZGVmaW5pdGlvbiAob3IgbGFjayB0aGVyZW9mKSB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBsb2NrZGVwX29mZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbG9ja2RlcC5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbG9ja2RlcC5oPTk1PWV4dGVybiB2b2lkIGxvY2tkZXBfaW5pdF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG4tLVxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmgtMTA4LVxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmg6MTA5OiNkZWZpbmUgbG9ja2RlcF9vZmYoKVx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmgtMTEwLWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gbG9ja2RlcC5oJiMzOTtzIENvbmRpdGlvbmFsIExvZ2ljKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaGAsIHNwZWNpZmljYWxseSB0aGUgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAgYmxvY2suIFdlIG5lZWQgdG8gYmUgbWV0aWN1bG91cywgYW5kIHJpZ2h0IG5vdyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBgI2Vsc2VgIGJyYW5jaCwgdGhlIG9uZSB0aGF0IGRlZmluZXMgd2hhdCBoYXBwZW5zIHdoZW4gYENPTkZJR19MT0NLREVQYCAqaXNuJiMzOTt0KiBlbmFibGVkLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlLCAqdW5pbnN0cnVtZW50ZWQqIGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgZGVmaW5lZC4gQSBnb29kIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgYGxvY2tkZXBgLCBvciB0aGUgZWRnZSBjYXNlcyB3aGVuIHlvdSYjMzk7cmUgcnVubmluZyB3aXRob3V0IGl0cyBzYWZldHkgbmV0LiBXZSBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBiYXNlbGluZSB0aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbG9ja2RlcC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNzA6XHRcbiAzNzE6XHRzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF9yZWdpc3Rlcl9rZXkoc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpXG4gMzcyOlx0e1xuIDM3MzpcdH1cbiAzNzQ6XHRcbiAzNzU6XHRzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF91bnJlZ2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSlcbiAzNzY6XHR7XG4gMzc3Olx0fVxuIDM3ODpcdFxuIDM3OTpcdCNkZWZpbmUgbG9ja2RlcF9kZXB0aCh0c2spXHQoMClcbiAzODA6XHRcbiAzODE6XHQvKlxuIDM4MjpcdCAqIER1bW15IGZvcndhcmQgZGVjbGFyYXRpb25zLCBhbGxvdyB1c2VycyB0byB3cml0ZSBsZXNzIGlmZGVmLXkgY29kZVxuIDM4MzpcdCAqIGFuZCBkZXBlbmQgb24gZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuIDM4NDpcdCAqL1xuIDM4NTpcdGV4dGVybiBpbnQgbG9ja19pc19oZWxkKGNvbnN0IHZvaWQgKik7XG4gMzg2Olx0ZXh0ZXJuIGludCBsb2NrZGVwX2lzX2hlbGQoY29uc3Qgdm9pZCAqKTtcbiAzODc6XHQjZGVmaW5lIGxvY2tkZXBfaXNfaGVsZF90eXBlKGwsIHIpXHRcdCgxKVxuIDM4ODpcdFxuIDM4OTpcdCNkZWZpbmUgbG9ja2RlcF9hc3NlcnQoYylcdFx0XHRkbyB7IH0gd2hpbGUgKDApXG4gMzkwOlx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9vbmNlKGMpXHRcdFx0ZG8geyB9IHdoaWxlICgwKVxuIDM5MTpcdFxuIDM5MjpcdCNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZChsKVx0XHRcdF9fYXNzdW1lX2N0eF9sb2NrKGwpXG4gMzkzOlx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9ub3RfaGVsZChsKVx0XHRkbyB7ICh2b2lkKShsKTsgfSB3aGlsZSAoMClcbiAzOTQ6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfd3JpdGUobClcdFx0X19hc3N1bWVfY3R4X2xvY2sobClcbiAzOTU6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfcmVhZChsKVx0XHRfX2Fzc3VtZV9zaGFyZWRfY3R4X2xvY2sobClcbiAzOTY6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfb25jZShsKVx0XHRkbyB7ICh2b2lkKShsKTsgfSB3aGlsZSAoMClcbiAzOTc6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X25vbmVfaGVsZF9vbmNlKClcdGRvIHsgfSB3aGlsZSAoMClcbiAzOTg6XHRcbiAzOTk6XHQjZGVmaW5lIGxvY2tkZXBfcmVjdXJzaW5nKHRzaylcdFx0XHQoMClcbiA0MDA6XHRcbiA0MDE6XHQjZGVmaW5lIE5JTF9DT09LSUUgKHN0cnVjdCBwaW5fY29va2llKXsgfVxuIDQwMjpcdFxuIDQwMzpcdCNkZWZpbmUgbG9ja2RlcF9waW5fbG9jayhsKVx0XHRcdCh7IHN0cnVjdCBwaW5fY29va2llIGNvb2tpZSA9IHsgfTsgY29va2llOyB9KVxuIDQwNDpcdCNkZWZpbmUgbG9ja2RlcF9yZXBpbl9sb2NrKGwsIGMpXHRcdGRvIHsgKHZvaWQpKGwpOyAodm9pZCkoYyk7IH0gd2hpbGUgKDApXG4gNDA1Olx0I2RlZmluZSBsb2NrZGVwX3VucGluX2xvY2sobCwgYylcdFx0ZG8geyAodm9pZCkobCk7ICh2b2lkKShjKTsgfSB3aGlsZSAoMClcbiA0MDY6XHRcbiA0MDc6XHQjZGVmaW5lIERFRklORV9XQUlUX09WRVJSSURFX01BUChfbmFtZSwgX3dhaXRfdHlwZSlcdFxcXG4gNDA4Olx0XHRzdHJ1Y3QgbG9ja2RlcF9tYXAgX19tYXliZV91bnVzZWQgX25hbWUgPSB7fVxuIDQwOTpcdFxuIDQxMDpcdCNlbmRpZiAvKiAhTE9DS0RFUCAqL1xuIDQxMTpcdFxuIDQxMjpcdCNpZmRlZiBDT05GSUdfUFJPVkVfTE9DS0lOR1xuIDQxMzpcdHZvaWQgbG9ja2RlcF9zZXRfbG9ja19jbXBfZm4oc3RydWN0IGxvY2tkZXBfbWFwICosIGxvY2tfY21wX2ZuLCBsb2NrX3ByaW50X2ZuKTtcbiA0MTQ6XHRcbiA0MTU6XHQjZGVmaW5lIGxvY2tfc2V0X2NtcF9mbihsb2NrLCAuLi4pXHRsb2NrZGVwX3NldF9sb2NrX2NtcF9mbihcdTAwMjYobG9jayktXHUwMDNlZGVwX21hcCwgX19WQV9BUkdTX18pXG4gNDE2Olx0I2Vsc2VcbiA0MTc6XHQjZGVmaW5lIGxvY2tfc2V0X2NtcF9mbihsb2NrLCAuLi4pXHRkbyB7IH0gd2hpbGUgKDApXG4gNDE4Olx0I2VuZGlmXG4gNDE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0OTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipNaXNzaW5nIFBpZWNlIERldGVjdGVkOiBMb2NrZGVwIERpc2NyZXBhbmN5KioKCkhtbSwgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gSSYjMzk7bSByZXZpZXdpbmcgdGhpcyBjb25kaXRpb25hbCBicmFuY2gsIGFuZCBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdCBzZWVpbmcgdGhlIGV4cGVjdGVkIGNhbGwgdG8gYGxvY2tkZXBfb2ZmKClgIHdpdGhpbiB0aGF0IGAjZWxzZWAgYmxvY2suIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gV2UgdXN1YWxseSBuZWVkIHRvIGVuc3VyZSB0aGUgbG9ja2RlcCBzZXR0aW5nIGlzIGhhbmRsZWQgY29uc2lzdGVudGx5IGFjcm9zcyBib3RoIGJyYW5jaGVzLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgbXkgbWVudGFsIG1vZGVsIGhlcmUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgZ3JlcCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nIG9idmlvdXMgb3IgaGF2ZSBtaXNzZWQgc29tZSBkb3duc3RyZWFtIGRlcGVuZGVuY3kgb3IgbWFjcm8gdGhhdCBoaWRlcyBpdC4gR290dGEgdmVyaWZ5IGBsb2NrZGVwX29mZmAgaXNuJiMzOTt0IGJlaW5nIGludm9rZWQgaW1wbGljaXRseSBzb21ld2hlcmUgZWxzZSBpbiB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCB0dXJucyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9ja2RlcF9vZmYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaD05NT1leHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjEwOTojZGVmaW5lIGxvY2tkZXBfb2ZmKClcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oPTMyMD1zdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTMyMy1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjMyNDpzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF9vZmYodm9pZClcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTMyNS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5MjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25kaXRpb25hbCBGdW5jdGlvbiBEZWZpbml0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEkgc2VlIHRoYXQgdGhpcyBmdW5jdGlvbiwgd2hhdGV2ZXIgaXQgaXMsIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLCBidXQgb25seSB3aXRoaW4gdGhlIGAjZWxzZWAgYnJhbmNoIG9mIHNvbWUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIE15IGZpcnN0IGFzc3VtcHRpb24sIGFuZCBJJiMzOTtsbCBjb25maXJtIHRoaXMsIGlzIHRoYXQgdGhlIGBDT05GSUdfTE9DS0RFUGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgbmVjZXNzYXJ5IGZvciB0aGlzIGZ1bmN0aW9uIHRvIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgbWVhbmluZ2Z1bC4gT3RoZXJ3aXNlLCBpdCB3aWxsIGxpa2VseSBiZSBjb21waWxlZCBvdXQsIG9yIHJlc29sdmUgdG8gc29tZSBudWxsIG9wZXJhdGlvbi4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKTm93LCB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIGB0cmFjZV9jYWxsX2JwZmAsIGFuZCB0aGF0IHJpbmdzIGEgYmVsbC4gYHRyYWNlX2NhbGxfYnBmYCBpcyB0aGF0IGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGEgQlBGIHByb2dyYW0gaXMgYXR0YWNoZWQgdG8gYSB0cmFjZXBvaW50LiBUaGUgdHJhY2Vwb2ludCBiZWluZyBtb2RpZmllZCBpcyBgbG9ja19yZWxlYXNlYCwgYW5kIHRoYXQmIzM5O3MgZm91bmQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIEkmIzM5O2xsIHdhbnQgdG8gcmV2aWV3IGhvdyBgbG9ja19yZWxlYXNlYCBpcyBkZWZpbmVkLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIHRoZSBgbG9jay5oYCBmaWxlIGFuZCBpbnZvbHZlcyBgbG9ja19yZWxlYXNlYCBtYWtlcyBtZSBhc3N1bWUgdGhhdCBpdCBhbHNvIG11c3QgYmUgZGVmaW5lZCBjb25kaXRpb25hbGx5IHVuZGVyIGFuIGAjaWZkZWYgQ09ORklHX0xPQ0tERVBgIGd1YXJkLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdCN1bmRlZiBUUkFDRV9TWVNURU1cbiAgIDM6XHQjZGVmaW5lIFRSQUNFX1NZU1RFTSBsb2NrXG4gICA0Olx0XG4gICA1Olx0I2lmICFkZWZpbmVkKF9UUkFDRV9MT0NLX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG4gICA2Olx0I2RlZmluZSBfVFJBQ0VfTE9DS19IXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4gICA5Olx0XG4gIDEwOlx0LyogZmxhZ3MgZm9yIGxvY2s6Y29udGVudGlvbl9iZWdpbiAqL1xuICAxMTpcdCNkZWZpbmUgTENCX0ZfU1BJTlx0KDFVIFx1MDAzY1x1MDAzYyAwKVxuICAxMjpcdCNkZWZpbmUgTENCX0ZfUkVBRFx0KDFVIFx1MDAzY1x1MDAzYyAxKVxuICAxMzpcdCNkZWZpbmUgTENCX0ZfV1JJVEVcdCgxVSBcdTAwM2NcdTAwM2MgMilcbiAgMTQ6XHQjZGVmaW5lIExDQl9GX1JUXHQoMVUgXHUwMDNjXHUwMDNjIDMpXG4gIDE1Olx0I2RlZmluZSBMQ0JfRl9QRVJDUFVcdCgxVSBcdTAwM2NcdTAwM2MgNClcbiAgMTY6XHQjZGVmaW5lIExDQl9GX01VVEVYXHQoMVUgXHUwMDNjXHUwMDNjIDUpXG4gIDE3Olx0XG4gIDE4Olx0XG4gIDE5Olx0I2lmZGVmIENPTkZJR19MT0NLREVQXG4gIDIwOlx0XG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbG9ja2RlcC5oXHUwMDNlXG4gIDIyOlx0XG4gIDIzOlx0VFJBQ0VfRVZFTlQobG9ja19hY3F1aXJlLFxuICAyNDpcdFxuICAyNTpcdFx0VFBfUFJPVE8oc3RydWN0IGxvY2tkZXBfbWFwICpsb2NrLCB1bnNpZ25lZCBpbnQgc3ViY2xhc3MsXG4gIDI2Olx0XHRcdGludCB0cnlsb2NrLCBpbnQgcmVhZCwgaW50IGNoZWNrLFxuICAyNzpcdFx0XHRzdHJ1Y3QgbG9ja2RlcF9tYXAgKm5leHRfbG9jaywgdW5zaWduZWQgbG9uZyBpcCksXG4gIDI4Olx0XG4gIDI5Olx0XHRUUF9BUkdTKGxvY2ssIHN1YmNsYXNzLCB0cnlsb2NrLCByZWFkLCBjaGVjaywgbmV4dF9sb2NrLCBpcCksXG4gIDMwOlx0XG4gIDMxOlx0XHRUUF9TVFJVQ1RfX2VudHJ5KFxuICAzMjpcdFx0XHRfX2ZpZWxkKHVuc2lnbmVkIGludCwgZmxhZ3MpXG4gIDMzOlx0XHRcdF9fc3RyaW5nKG5hbWUsIGxvY2stXHUwMDNlbmFtZSlcbiAgMzQ6XHRcdFx0X19maWVsZCh2b2lkICosIGxvY2tkZXBfYWRkcilcbiAgMzU6XHRcdCksXG4gIDM2Olx0XG4gIDM3Olx0XHRUUF9mYXN0X2Fzc2lnbihcbiAgMzg6XHRcdFx0X19lbnRyeS1cdTAwM2VmbGFncyA9ICh0cnlsb2NrID8gMSA6IDApIHwgKHJlYWQgPyAyIDogMCk7XG4gIDM5Olx0XHRcdF9fYXNzaWduX3N0cihuYW1lKTtcbiAgNDA6XHRcdFx0X19lbnRyeS1cdTAwM2Vsb2NrZGVwX2FkZHIgPSBsb2NrO1xuICA0MTpcdFx0KSxcbiAgNDI6XHRcbiAgNDM6XHRcdFRQX3ByaW50ayhcJiMzNDslcCAlcyVzJXNcJiMzNDssIF9fZW50cnktXHUwMDNlbG9ja2RlcF9hZGRyLFxuICA0NDpcdFx0XHQgIChfX2VudHJ5LVx1MDAzZWZsYWdzIFx1MDAyNiAxKSA/IFwmIzM0O3RyeSBcJiMzNDsgOiBcJiMzNDtcJiMzNDssXG4gIDQ1Olx0XHRcdCAgKF9fZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IDIpID8gXCYjMzQ7cmVhZCBcJiMzNDsgOiBcJiMzNDtcJiMzNDssXG4gIDQ2Olx0XHRcdCAgX19nZXRfc3RyKG5hbWUpKVxuICA0NzpcdCk7XG4gIDQ4Olx0XG4gIDQ5Olx0REVDTEFSRV9FVkVOVF9DTEFTUyhsb2NrLFxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTG9ja2RlcCBEaXNhYmxpbmcgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciB0aGF0IGBsb2NrX3JlbGVhc2VgIGlzIGd1YXJkZWQgYnkgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBvYnZpb3VzbHksIGBDT05GSUdfTE9DS0RFUGAgaXMgYSByZXF1aXJlbWVudCBoZXJlLiBBbmQsIGFzIGV4cGVjdGVkLCB3ZSBhbHNvIG5lZWQgYm90aCBgQ09ORklHX0JQRl9FVkVOVFNgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCB0byBiZSBlbmFibGVkLCBiZWNhdXNlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIHRoYXQgaXQmIzM5O3MgZGlzYWJsaW5nIGxvY2tkZXAgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGBsb2NrX3JlbGVhc2VgLiBUaGUgaWRlYSBpcyB0byBwcmV2ZW50IHJlY3Vyc2lvbiBvciBsb2NrZGVwIGZhbHNlIHBvc2l0aXZlcy4gTWFrZXMgc2Vuc2U7IGlmIHRoZSBCUEYgcHJvZ3JhbSBkb2VzIHRoaW5ncyB0aGF0IHRyaWdnZXIgbG9ja2RlcCB3aGlsZSB3ZSYjMzk7cmUgKmFscmVhZHkqIGluc2lkZSBgbG9ja19yZWxlYXNlYCAod2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGxvY2tkZXApLCB3ZSYjMzk7cmUgZ29pbmcgdG8gZ2V0IG5vaXNlIG9yIGV2ZW4gY3Jhc2hlcy4gTm93LCBpcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd29ydGggZnV6emluZz8gWWVzLCB0aGlzIGlzIGEgZGVmaW5pdGUgeWVzLiBJdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGNvcmUgQlBGIHRyYWNpbmcgbG9naWMuIElmIGEgQlBGIHByb2dyYW0gaXMgYXR0YWNoZWQgdG8gYGxvY2tfcmVsZWFzZWAsIGl0IHdpbGwgbm93IHJ1biB3aXRoIGxvY2tkZXAgZGlzYWJsZWQuCgpTbywgd2hlcmUgc2hvdWxkIEkgZGlyZWN0IG15IGZ1enppbmcgZWZmb3J0cz8gSXQgc2VlbXMgbGlrZSBgdHJhY2VfY2FsbF9icGZgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdGFyZ2V0LiBJdCYjMzk7cyB0aGUgcG9pbnQgb2YgZW50cnkgZm9yIHRoaXMgd2hvbGUgdGhpbmcuIE5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGB0cmFjZV9jYWxsX2JwZmAgaXMgY2FsbGVkIGZyZXF1ZW50bHkgaWYgeW91JiMzOTt2ZSBnb3QgbWFueSB0cmFjZXBvaW50cyB3aXRoIEJQRiBwcm9ncmFtcyBhdHRhY2hlZC4gQW5kLCBpdCYjMzk7cyB0aGUgZXhhY3QgZnVuY3Rpb24gdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMuCgpMZXQgbWUgdGhpbmsgZm9yIGEgbW9tZW50Li4uIGlzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbiB0byBjb25zaWRlcj8gQWgsIHllcywgYGJwZl9wcm9nX3J1bl9hcnJheWAgaXMgY2FsbGVkIHdpdGhpbiBgdHJhY2VfY2FsbF9icGZgLiBCdXQsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGZvY3VzaW5nIG9uIGB0cmFjZV9jYWxsX2JwZmAgc2luY2UgaXQgaXMgdGhlIHRvcC1sZXZlbCBpbnRlcmZhY2UuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGB0cmFjZV9jYWxsX2JwZmAgaXMgc3RhdGljIG9yIGlubGluZS4gT2theSwgaXQmIzM5O3MgYHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KWAgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIEl0JiMzOTtzIG5vdCBzdGF0aWMuIEl0JiMzOTtzIGV4cG9ydGVkLCBvciBhdCBsZWFzdCBnbG9iYWxseSB2aXNpYmxlLgoKT2theSwgSSB0aGluayBJJiMzOTttIGhhcHB5IHRvIGZvY3VzIG9uIGB0cmFjZV9jYWxsX2JwZmAgYXMgdGhlIHByaW1hcnkgZnV6emluZyB0YXJnZXQuIEl0IHNlZW1zIGxpa2UgdGhlIGJlc3QgZm9jdXMgc3ltYm9sLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9OTY9c3RhdGljIHU2NCBicGZfdXByb2JlX211bHRpX2VudHJ5X2lwKHN0cnVjdCBicGZfcnVuX2N0eCAqY3R4KTtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtOTgtLyoqXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6OTk6ICogdHJhY2VfY2FsbF9icGYgLSBpbnZva2UgQlBGIHByb2dyYW1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDAtICogQGNhbGw6IHRyYWNlcG9pbnQgZXZlbnRcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTExLSAqL1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjExMjp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMTMte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMzktXHQgKiBJZiBicGZfcHJvZ19hcnJheV92YWxpZCgpIGZldGNoZWQgcHJvZ19hcnJheSB3YXNcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNDA6XHQgKiBub24tTlVMTCwgd2UgZ28gaW50byB0cmFjZV9jYWxsX2JwZigpIGFuZCBkbyB0aGUgYWN0dWFsXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTQxLVx0ICogcHJvcGVyIHJjdV9kZXJlZmVyZW5jZSgpIHVuZGVyIFJDVSBsb2NrLlxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjMtLyoqXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY0OiAqIHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZSAtIGludm9rZSBCUEYgcHJvZ3JhbSBpbiBmYXVsdGFibGUgY29udGV4dFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2NS0gKiBAY2FsbDogdHJhY2Vwb2ludCBldmVudFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjctICpcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjg6ICogVmFyaWFudCBvZiB0cmFjZV9jYWxsX2JwZigpIGZvciBmYXVsdGFibGUgdHJhY2Vwb2ludHMgKHN5c2NhbGxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjktICogdHJhY2Vwb2ludHMpLiBTdXBwb3J0cyBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGJ5IHVzaW5nIHJjdV90YXNrc190cmFjZVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNzgtICovXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTc5OnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBgdHJhY2VfY2FsbF9icGZgIHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gQlBGLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfTE9DS0RFUGAg4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMuCgpOb3csIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuLi4gd2hlcmUgYXJlIGl0cyBkZXBlbmRlbmNpZXM/IEFoLCBpdCYjMzk7cyBpbiBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgcmlnaHQuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBgbG9ja2AgdHJhY2Vwb2ludHMgdGhlbXNlbHZlcyBhcmUgZW5hYmxlZCB2aWEgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBga2VybmVsL3RyYWNlL0tjb25maWdgIG9yIHBvc3NpYmx5IGBsaWIvS2NvbmZpZy5kZWJ1Z2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgb3B0aW9uIHJlbGF0ZWQgdG8gZW5hYmxpbmcgbG9jayB0cmFjZXBvaW50cyB0aGF0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9ja19yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz01OTY9dm9pZCBfX2luaXQgc21wX3NldHVwX3Byb2Nlc3Nvcl9pZCh2b2lkKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTYwOC1cdCAqIHVzaW5nIHBlcmNwdSB2YXJpYWJsZSBlYXJseSwgZm9yIGV4YW1wbGUsIGxvY2tkZXAgd2lsbFxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM6NjA5Olx0ICogYWNjZXNzIHBlcmNwdSB2YXJpYWJsZSBpbnNpZGUgbG9ja19yZWxlYXNlXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy02MTAtXHQgKi9cbi0tXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM9MjY3PWFzbWxpbmthZ2Ugdm9pZCBfX2twcm9iZXMgZG9fc3BhcmM2NF9mYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDQwLVx0aWYgKGZhdWx0IFx1MDAyNiBWTV9GQVVMVF9DT01QTEVURUQpXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM6NDQxOlx0XHRnb3RvIGxvY2tfcmVsZWFzZWQ7XG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDQyLVxuLS1cbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYy00NjQtXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM6NDY1OmxvY2tfcmVsZWFzZWQ6XG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDY2LVx0bW1fcnNzID0gZ2V0X21tX3JzcyhtbSk7XG4tLVxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN5c2ZzX29wcyB0aHJlc2hvbGRfb3BzID0ge1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwMzUtXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMDM2OnN0YXRpYyB2b2lkIHRocmVzaG9sZF9ibG9ja19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwMzctXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYz0xMDM4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIHRocmVzaG9sZF9rdHlwZSA9IHtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYy0xMDQwLVx0LmRlZmF1bHRfZ3JvdXBzXHRcdD0gZGVmYXVsdF9ncm91cHMsXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMDQxOlx0LnJlbGVhc2VcdFx0PSB0aHJlc2hvbGRfYmxvY2tfcmVsZWFzZSxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwNDItfTtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYz0xMTU0PXN0YXRpYyBpbnQgdGhyZXNob2xkX2NyZWF0ZV9iYW5rKHN0cnVjdCB0aHJlc2hvbGRfYmFuayAqKmJwLCB1bnNpZ25lZCBpbnQgY3B1LFxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTExOTQtXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMTk1OnN0YXRpYyB2b2lkIHRocmVzaG9sZF9ibG9ja19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTE5Ni17XG4tLVxuZHJpdmVycy9hY3BpL2RvY2suYz01MDI9c3RhdGljIHNzaXplX3QgdW5kb2NrX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9hY3BpL2RvY2suYy01MTMtXHRyZXQgPSBoYW5kbGVfZWplY3RfcmVxdWVzdChkb2NrX3N0YXRpb24sIEFDUElfTk9USUZZX0VKRUNUX1JFUVVFU1QpO1xuZHJpdmVycy9hY3BpL2RvY2suYzo1MTQ6XHRhY3BpX3NjYW5fbG9ja19yZWxlYXNlKCk7XG5kcml2ZXJzL2FjcGkvZG9jay5jLTUxNS1cdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTYwPUVYUE9SVF9TWU1CT0xfR1BMKGFjcGlfc2Nhbl9sb2NrX2FjcXVpcmUpO1xuZHJpdmVycy9hY3BpL3NjYW4uYy02MS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM6NjI6dm9pZCBhY3BpX3NjYW5fbG9ja19yZWxlYXNlKHZvaWQpXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTYzLXtcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTY1LX1cbmRyaXZlcnMvYWNwaS9zY2FuLmM6NjY6RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9zY2FuX2xvY2tfcmVsZWFzZSk7XG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTY3LVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjQyOT1zdGF0aWMgdm9pZCBhY3BpX3NjYW5fY2xlYXJfZGVwX2ZuKHZvaWQgKmRldiwgYXN5bmNfY29va2llX3QgY29va2llKVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjQzNC1cdGFjcGlfYnVzX2F0dGFjaChhZGV2LCAodm9pZCAqKXRydWUpO1xuZHJpdmVycy9hY3BpL3NjYW4uYzoyNDM1Olx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xuZHJpdmVycy9hY3BpL3NjYW4uYy0yNDM2LVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjkzMj1zdGF0aWMgdm9pZCBhY3BpX3RhYmxlX2V2ZW50c19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9hY3BpL3NjYW4uYy0yOTM1LVx0YWNwaV9idXNfc2NhbihBQ1BJX1JPT1RfT0JKRUNUKTtcbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjkzNjpcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjkzNy1cbi0tXG5kcml2ZXJzL2FjcGkvc2xlZXAuYz01Mzk9c3RhdGljIHZvaWQgYWNwaV9wbV9lbmQodm9pZClcbi0tXG5kcml2ZXJzL2FjcGkvc2xlZXAuYy01NDEtXHRhY3BpX3R1cm5fb2ZmX3VudXNlZF9wb3dlcl9yZXNvdXJjZXMoKTtcbmRyaXZlcnMvYWNwaS9zbGVlcC5jOjU0MjpcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTU0My1cdC8qXG4tLVxuZHJpdmVycy9hY3BpL3NsZWVwLmM9ODQzPXZvaWQgYWNwaV9zMmlkbGVfZW5kKHZvaWQpXG5kcml2ZXJzL2FjcGkvc2xlZXAuYy04NDQte1xuZHJpdmVycy9hY3BpL3NsZWVwLmM6ODQ1Olx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xuZHJpdmVycy9hY3BpL3NsZWVwLmMtODQ2LX1cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9OTA9RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcik7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTEtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6OTI6c3RhdGljIHZvaWQgbWVtb3J5X2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkzLXtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NjgyPXN0YXRpYyBpbnQgX19hZGRfbWVtb3J5X2Jsb2NrKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbW9yeSlcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNjg3LVx0bWVtb3J5LVx1MDAzZWRldi5pZCA9IG1lbW9yeS1cdTAwM2VzdGFydF9zZWN0aW9uX25yIC8gc2VjdGlvbnNfcGVyX2Jsb2NrO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjY4ODpcdG1lbW9yeS1cdTAwM2VkZXYucmVsZWFzZSA9IG1lbW9yeV9ibG9ja19yZWxlYXNlO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY4OS1cdG1lbW9yeS1cdTAwM2VkZXYuZ3JvdXBzID0gbWVtb3J5X21lbWJsa19hdHRyX2dyb3Vwcztcbi0tXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM9MzE1PXZvaWQgZG1hX2ZlbmNlX2VuZF9zaWduYWxsaW5nKGJvb2wgY29va2llKVxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYy0zMTktXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM6MzIwOlx0bG9ja19yZWxlYXNlKFx1MDAyNmRtYV9mZW5jZV9sb2NrZGVwX21hcCwgX1JFVF9JUF8pO1xuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMyMS19XG4tLVxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jPTMyND12b2lkIF9fZG1hX2ZlbmNlX21pZ2h0X3dhaXQodm9pZClcbi0tXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMtMzI5LVx0aWYgKHRtcClcbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYzozMzA6XHRcdGxvY2tfcmVsZWFzZShcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXAsIF9USElTX0lQXyk7XG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMtMzMxLVx0bG9ja19tYXBfYWNxdWlyZShcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXApO1xuLS1cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jPTQyMT1zdGF0aWMgc3NpemVfdCBibG9ja19jZV9jb3VudF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTQyOS0vKiBERVZJQ0UgYmxvY2sga29iamVjdCByZWxlYXNlKCkgZnVuY3Rpb24gKi9cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jOjQzMDpzdGF0aWMgdm9pZCBlZGFjX2RldmljZV9jdHJsX2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00MzEte1xuLS1cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jPTQ4MT1zdGF0aWMgc3RydWN0IGtvYmpfdHlwZSBrdHlwZV9ibG9ja19jdHJsID0ge1xuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM6NDgyOlx0LnJlbGVhc2UgPSBlZGFjX2RldmljZV9jdHJsX2Jsb2NrX3JlbGVhc2UsXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00ODMtXHQuc3lzZnNfb3BzID0gXHUwMDI2ZGV2aWNlX2Jsb2NrX29wcyxcbi0tXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYz01NjI9c3RhdGljIHZvaWQgZWRhY19kZXZpY2VfZGVsZXRlX2Jsb2NrKHN0cnVjdCBlZGFjX2RldmljZV9jdGxfaW5mbyAqZWRhY19kZXYsXG4tLVxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmMtNTgwLVx0LyogdW5yZWdpc3RlciB0aGlzIGJsb2NrJiMzOTtzIGtvYmplY3QsIFNFRTpcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jOjU4MTpcdCAqXHRlZGFjX2RldmljZV9jdHJsX2Jsb2NrX3JlbGVhc2UoKSBjYWxsYmFjayBvcGVyYXRpb25cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTU4Mi1cdCAqL1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYz0xMTU9c21jX2NoYW5uZWxfbG9ja19hY3F1aXJlKHN0cnVjdCBzY21pX3NtYyAqc2NtaV9pbmZvLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0xMjMtXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc3RydWN0IHNjbWlfc21jICpzY21pX2luZm8pXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMTI1LXtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM9MjIzPXN0YXRpYyBpbnQgc21jX3NlbmRfbWVzc2FnZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0yNDctXHRpZiAocmVzLmEwKSB7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MjQ4Olx0XHRzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc2NtaV9pbmZvKTtcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0yNDktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM9MjY0PXN0YXRpYyB2b2lkIHNtY19tYXJrX3R4ZG9uZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLCBpbnQgcmV0LFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0yNjgtXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MjY5Olx0c21jX2NoYW5uZWxfbG9ja19yZWxlYXNlKHNjbWlfaW5mbyk7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMjcwLX1cbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYz0xMzE9c3RhdGljIGludCBtbHhiZjJfZ3Bpb19sb2NrX2FjcXVpcmUoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTE1Ni0gKi9cbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jOjE1NzpzdGF0aWMgdm9pZCBtbHhiZjJfZ3Bpb19sb2NrX3JlbGVhc2Uoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMTU4LVx0X19yZWxlYXNlcyhcdTAwMjZncy1cdTAwM2VjaGlwLmxvY2spXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM9MTg0PXN0YXRpYyBpbnQgbWx4YmYyX2dwaW9fZGlyZWN0aW9uX2lucHV0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjAwLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM6MjAxOlx0bWx4YmYyX2dwaW9fbG9ja19yZWxlYXNlKGdzKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTIwMi1cbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYz0yMTA9c3RhdGljIGludCBtbHhiZjJfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjI4LVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM6MjI5Olx0bWx4YmYyX2dwaW9fbG9ja19yZWxlYXNlKGdzKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTIzMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jPTExMjQ9dm9pZCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyICppdGVyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMtMTEzNC1cdH1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmM6MTEzNTpcdGxvY2tfcmVsZWFzZShcdTAwMjZjb25uZWN0b3JfbGlzdF9pdGVyX2RlcF9tYXAsIF9SRVRfSVBfKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMtMTEzNi19XG4tLVxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jPTEzOT1zdGF0aWMgdm9pZCB0dG1fYm9fcmVzZXJ2ZV9kZWFkbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jLTE1My1cdC8qIFRoZSBkZWFkbG9jayB3aWxsIGJlIGNhdWdodCBieSBXVyBtdXRleCwgZG9uJiMzOTt0IHdhcm4gYWJvdXQgaXQgKi9cbmRyaXZlcnMvZ3B1L2RybS90dG0vdGVzdHMvdHRtX2JvX3Rlc3QuYzoxNTQ6XHRsb2NrX3JlbGVhc2UoXHUwMDI2Ym8yLVx1MDAzZWJhc2UucmVzdi1cdTAwM2Vsb2NrLmJhc2UuZGVwX21hcCwgMSk7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3Rlc3RzL3R0bV9ib190ZXN0LmMtMTU1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jPTEwMD1zdGF0aWMgdm9pZCB4ZV9wbV9ibG9ja19lbmRfc2lnbmFsbGluZyh2b2lkKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BtLmMtMTAxLXtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jOjEwMjpcdGxvY2tfcmVsZWFzZShcdTAwMjZ4ZV9wbV9ibG9ja19sb2NrZGVwX21hcCwgX1JFVF9JUF8pO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BtLmMtMTAzLX1cbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM9ODE1PXN0YXRpYyBpbnQgZGV2bV9od3NwaW5fbG9ja19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODI0LVxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jOjgyNTpzdGF0aWMgdm9pZCBkZXZtX2h3c3Bpbl9sb2NrX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMpXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODI2LXtcbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM9ODQzPWludCBkZXZtX2h3c3Bpbl9sb2NrX2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaHdzcGlubG9jayAqaHdsb2NrKVxuLS1cbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NDYtXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM6ODQ3Olx0cmV0ID0gZGV2cmVzX3JlbGVhc2UoZGV2LCBkZXZtX2h3c3Bpbl9sb2NrX3JlbGVhc2UsXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODQ4LVx0XHRcdCAgICAgZGV2bV9od3NwaW5fbG9ja19tYXRjaCwgaHdsb2NrKTtcbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM9ODcwPXN0cnVjdCBod3NwaW5sb2NrICpkZXZtX2h3c3Bpbl9sb2NrX3JlcXVlc3Rfc3BlY2lmaWMoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NzQtXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM6ODc1Olx0cHRyID0gZGV2cmVzX2FsbG9jKGRldm1faHdzcGluX2xvY2tfcmVsZWFzZSwgc2l6ZW9mKCpwdHIpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NzYtXHRpZiAoIXB0cilcbi0tXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy05Ny1cbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jOjk4OnN0YXRpYyB2b2lkIGlpb19idWZmZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTk5LXtcbi0tXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYz0xMjI9c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19wdXQoc3RydWN0IGlpb19kbWFfYnVmZmVyX2Jsb2NrICpibG9jaylcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTEyMy17XG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYzoxMjQ6XHRrcmVmX3B1dChcdTAwMjZibG9jay1cdTAwM2VrcmVmLCBpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2UpO1xuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTI1LX1cbi0tXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYz0xMzQ9c3RhdGljIHZvaWQgaWlvX2RtYV9idWZmZXJfY2xlYW51cF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0Mi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShibG9jaywgX2Jsb2NrLCBcdTAwMjZibG9ja19saXN0LCBoZWFkKVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6MTQzOlx0XHRpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2UoXHUwMDI2YmxvY2stXHUwMDNla3JlZik7XG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xNDQtfVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTQ1PXN0YXRpYyBERUNMQVJFX1dPUksoaWlvX2RtYV9idWZmZXJfY2xlYW51cF93b3JrLCBpaW9fZG1hX2J1ZmZlcl9jbGVhbnVwX3dvcmtlcik7XG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xNDYtXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYzoxNDc6c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19yZWxlYXNlX2F0b21pYyhzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0OC17XG4tLVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTYyPXN0YXRpYyB2b2lkIGlpb19idWZmZXJfYmxvY2tfcHV0X2F0b21pYyhzdHJ1Y3QgaWlvX2RtYV9idWZmZXJfYmxvY2sgKmJsb2NrKVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTYzLXtcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jOjE2NDpcdGtyZWZfcHV0KFx1MDAyNmJsb2NrLVx1MDAzZWtyZWYsIGlpb19idWZmZXJfYmxvY2tfcmVsZWFzZV9hdG9taWMpO1xuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTY1LX1cbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jPTI1Mz1zdGF0aWMgaW50IG10ZGJsb2NrX29wZW4oc3RydWN0IG10ZF9ibGt0cmFuc19kZXYgKm1iZClcbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4MS1cbmRyaXZlcnMvbXRkL210ZGJsb2NrLmM6MjgyOnN0YXRpYyB2b2lkIG10ZGJsb2NrX3JlbGVhc2Uoc3RydWN0IG10ZF9ibGt0cmFuc19kZXYgKm1iZClcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmMtMjgzLXtcbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4NS1cbmRyaXZlcnMvbXRkL210ZGJsb2NrLmM6Mjg2Olx0cHJfZGVidWcoXCYjMzQ7bXRkYmxvY2tfcmVsZWFzZVxcblwmIzM0Oyk7XG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4Ny1cbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jPTM0Mj1zdGF0aWMgc3RydWN0IG10ZF9ibGt0cmFuc19vcHMgbXRkYmxvY2tfdHIgPSB7XG4tLVxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0zNDgtXHQuZmx1c2hcdFx0PSBtdGRibG9ja19mbHVzaCxcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmM6MzQ5Olx0LnJlbGVhc2VcdD0gbXRkYmxvY2tfcmVsZWFzZSxcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmMtMzUwLVx0LnJlYWRzZWN0XHQ9IG10ZGJsb2NrX3JlYWRzZWN0LFxuLS1cbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jPTIzMD1zdGF0aWMgaW50IHViaWJsb2NrX29wZW4oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGJsa19tb2RlX3QgbW9kZSlcbi0tXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yNzEtXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYzoyNzI6c3RhdGljIHZvaWQgdWJpYmxvY2tfcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZ2QpXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yNzMte1xuLS1cbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHViaWJsb2NrX29wcyA9IHtcbi0tXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yOTctXHQub3BlbiA9IHViaWJsb2NrX29wZW4sXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYzoyOTg6XHQucmVsZWFzZSA9IHViaWJsb2NrX3JlbGVhc2UsXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yOTktXHQuZ2V0Z2VvXHQ9IHViaWJsb2NrX2dldGdlbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYz0xNDE9cHJlc3RlcmFfY291bnRlcl9ibG9ja19nZXQoc3RydWN0IHByZXN0ZXJhX2NvdW50ZXIgKmNvdW50ZXIsIHUzMiBjbGllbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9jb3VudGVyLmMtMTkxLWVycl9zdGF0czpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jOjE5MjpcdHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShjb3VudGVyLVx1MDAzZXN3LCBibG9jay1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYy0xOTMtZXJyX2Jsb2NrOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jPTE5OD1zdGF0aWMgdm9pZCBwcmVzdGVyYV9jb3VudGVyX2Jsb2NrX3B1dChzdHJ1Y3QgcHJlc3RlcmFfY291bnRlciAqY291bnRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYy0yMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYzoyMTg6XHRwcmVzdGVyYV9od19jb3VudGVyX2Jsb2NrX3JlbGVhc2UoY291bnRlci1cdTAwM2VzdywgYmxvY2stXHUwMDNlaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9jb3VudGVyLmMtMjE5LVx0aWRyX2Rlc3Ryb3koXHUwMDI2YmxvY2stXHUwMDNlY291bnRlcl9pZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jPTc5PXByZXN0ZXJhX2Zsb3dfYmxvY2tfY3JlYXRlKHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jOjEwMTpzdGF0aWMgdm9pZCBwcmVzdGVyYV9mbG93X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTEwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmM9MTczPXByZXN0ZXJhX2Zsb3dfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTE4OS1cdFx0XHRcdFx0ICAgICAgIHN3LCBibG9jayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jOjE5MDpcdFx0XHRcdFx0ICAgICAgIHByZXN0ZXJhX2Zsb3dfYmxvY2tfcmVsZWFzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2Zsb3cuYy0xOTEtXHRcdGlmIChJU19FUlIoYmxvY2tfY2IpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jPTIzNDA9aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuYy0yMzYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jOjIzNjI6aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuYy0yMzYzLVx0XHRcdFx0ICAgICAgdTMyIGJsb2NrX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaD0yMzk9aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDEtXHRcdFx0XHQgIHUzMiAqbnVtX2NvdW50ZXJzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaDoyNDI6aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDMtXHRcdFx0XHQgICAgICB1MzIgYmxvY2tfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0xNzQ9c3RhdGljIGludCBtbHhzd19zcF9mbG93X2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0xOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93LmM6MTkyOnN0YXRpYyB2b2lkIG1seHN3X3NwX3RjX2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0xOTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0yMDE9c3RhdGljIGludCBtbHhzd19zcF9zZXR1cF90Y19ibG9ja19iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0yMTgtXHRcdFx0XHRcdCAgICAgICBtbHhzd19zcCwgZmxvd19ibG9jayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYzoyMTk6XHRcdFx0XHRcdCAgICAgICBtbHhzd19zcF90Y19ibG9ja19yZWxlYXNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0yMjAtXHRcdGlmIChJU19FUlIoYmxvY2tfY2IpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTEzPW1seHN3X3NwX3FldmVudF9ibG9ja19kZXN0cm95KHN0cnVjdCBtbHhzd19zcF9xZXZlbnRfYmxvY2sgKnFldmVudF9ibG9jaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jLTIxMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jOjIxMjA6c3RhdGljIHZvaWQgbWx4c3dfc3BfcWV2ZW50X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjEyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTY5PW1seHN3X3NwX3NldHVwX3RjX2Jsb2NrX3FldmVudF9iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjE4OC1cdFx0YmxvY2tfY2IgPSBmbG93X2Jsb2NrX2NiX2FsbG9jKG1seHN3X3NwX3FldmVudF9ibG9ja19jYiwgbWx4c3dfc3AsIHFldmVudF9ibG9jayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmM6MjE4OTpcdFx0XHRcdFx0ICAgICAgIG1seHN3X3NwX3FldmVudF9ibG9ja19yZWxlYXNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjE5MC1cdFx0aWYgKElTX0VSUihibG9ja19jYikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MTYwPWludCBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTk3OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNzE9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTA6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDc6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwOC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzE2LVx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMTc6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTMyMj1zdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3dyaXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNDQ6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNjM6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzcxLVx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzI6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTUwMT1zdGF0aWMgaW50IGxhbjc0M3hfaHNfZWVwcm9tX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE1LVx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTY6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTctXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzAtXHRcdGlmIChyZXR2YWwgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MzE6XHRcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTMyLVx0XHRcdHJldHVybiByZXR2YWw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Mzc6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NTQ2PXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTYwLVx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjE6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01ODAtXHRcdHJldHZhbCA9IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTgxOlx0XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01ODItXHRcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM3PXN0YXRpYyB2b2lkIHBjaTExeDF4X3N0cmFwX2dldF9zdGF0dXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTMtXHRjZmdfbG9hZCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRVRIX1NZU19DT05GSUdfTE9BRF9TVEFSVEVEX1JFRyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NTQ6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NS1cdGh3X2NmZyA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFdfQ0ZHKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg9MTIwOD1pbnQgbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTE2IHRpbWVvdXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjEyMDk6dm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0xMjEwLXZvaWQgbGFuNzQzeF9tYWNfZmxvd19jdHJsX3NldF9lbmFibGVzKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYz0xMDI3PWludCBhY3BpcGhwX2Rpc2FibGVfc2xvdChzdHJ1Y3QgYWNwaXBocF9zbG90ICpzbG90KVxuLS1cbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMtMTAzOC1cdHBjaV91bmxvY2tfcmVzY2FuX3JlbW92ZSgpO1xuZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYzoxMDM5Olx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xuZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYy0xMDQwLVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0xODk9c3RhdGljIHN0cnVjdCBwb3NpeF9jbG9ja19vcGVyYXRpb25zIHB0cF9jbG9ja19vcHMgPSB7XG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjAxLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MjAyOnN0YXRpYyB2b2lkIHB0cF9jbG9ja19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMy17XG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MzE2PXN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDM0LVx0cHRwLVx1MDAzZWRldi5ncm91cHMgPSBwdHAtXHUwMDNlcGluX2F0dHJfZ3JvdXBzO1xuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6NDM1Olx0cHRwLVx1MDAzZWRldi5yZWxlYXNlID0gcHRwX2Nsb2NrX3JlbGVhc2U7XG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy00MzYtXHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2cHRwLVx1MDAzZWRldiwgcHRwKTtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz00OTc9aW50IHB0cF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cClcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy01MjYtXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzo1Mjc6XHQvKiBUaGUgZmluYWwgcHV0LCBub3JtYWxseSBoZXJlLCB3aWxsIGludm9rZSBwdHBfY2xvY2tfcmVsZWFzZSgpLiAqL1xuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNTI4LVx0cHV0X2RldmljZShcdTAwMjZwdHAtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3Njc2kvc3IuYz00OTU9c3RhdGljIGludCBzcl9ibG9ja19vcGVuKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBibGtfbW9kZV90IG1vZGUpXG4tLVxuZHJpdmVycy9zY3NpL3NyLmMtNTIwLVxuZHJpdmVycy9zY3NpL3NyLmM6NTIxOnN0YXRpYyB2b2lkIHNyX2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXG5kcml2ZXJzL3Njc2kvc3IuYy01MjIte1xuLS1cbmRyaXZlcnMvc2NzaS9zci5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHNyX2Jkb3BzID1cbi0tXG5kcml2ZXJzL3Njc2kvc3IuYy01OTItXHQub3Blblx0XHQ9IHNyX2Jsb2NrX29wZW4sXG5kcml2ZXJzL3Njc2kvc3IuYzo1OTM6XHQucmVsZWFzZVx0PSBzcl9ibG9ja19yZWxlYXNlLFxuZHJpdmVycy9zY3NpL3NyLmMtNTk0LVx0LmlvY3RsXHRcdD0gc3JfYmxvY2tfaW9jdGwsXG4tLVxuZnMvYWZzL2Zsb2NrLmM9MjgxPXZvaWQgYWZzX2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZnMvYWZzL2Zsb2NrLmMtMzAzLVx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiB2bm9kZS1cdTAwM2Vsb2NrX3N0YXRlICE9IEFGU19WTk9ERV9MT0NLX0RFTEVURUQpIHtcbmZzL2Fmcy9mbG9jay5jOjMwNDpcdFx0XHR0cmFjZV9hZnNfZmxvY2tfZXYodm5vZGUsIE5VTEwsIGFmc19mbG9ja19yZWxlYXNlX2ZhaWwsXG5mcy9hZnMvZmxvY2suYy0zMDUtXHRcdFx0XHRcdCAgIHJldCk7XG4tLVxuZnMvaHVnZXRsYmZzL2lub2RlLmM9Mzc5PXN0YXRpYyB2b2lkIGh1Z2V0bGJfdW5tYXBfZmlsZV9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTQ0MC1cdFx0XHR1cF93cml0ZShcdTAwMjZ2bWFfbG9jay1cdTAwM2Vyd19zZW1hKTtcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jOjQ0MTpcdFx0XHRrcmVmX3B1dChcdTAwMjZ2bWFfbG9jay1cdTAwM2VyZWZzLCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2UpO1xuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDQyLVx0XHRcdGdvdG8gcmV0cnk7XG4tLVxuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU0LVxuZnMvaHVnZXRsYmZzL2lub2RlLmM6NDU1Olx0XHRrcmVmX3B1dChcdTAwMjZ2bWFfbG9jay1cdTAwM2VyZWZzLCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2UpO1xuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU2LVx0XHRodWdldGxiX3ZtYV91bmxvY2tfd3JpdGUodm1hKTtcbi0tXG5mcy9uZnMvbmZzNHByb2MuYz03MzQzPXN0YXRpYyB2b2lkIG5mczRfbG9ja19kb25lKHN0cnVjdCBycGNfdGFzayAqdGFzaywgdm9pZCAqY2FsbGRhdGEpXG4tLVxuZnMvbmZzL25mczRwcm9jLmMtNzM5MC1cbmZzL25mcy9uZnM0cHJvYy5jOjczOTE6c3RhdGljIHZvaWQgbmZzNF9sb2NrX3JlbGVhc2Uodm9pZCAqY2FsbGRhdGEpXG5mcy9uZnMvbmZzNHByb2MuYy03MzkyLXtcbi0tXG5mcy9uZnMvbmZzNHByb2MuYz03NDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBjX2NhbGxfb3BzIG5mczRfbG9ja19vcHMgPSB7XG4tLVxuZnMvbmZzL25mczRwcm9jLmMtNzQxMi1cdC5ycGNfY2FsbF9kb25lID0gbmZzNF9sb2NrX2RvbmUsXG5mcy9uZnMvbmZzNHByb2MuYzo3NDEzOlx0LnJwY19yZWxlYXNlID0gbmZzNF9sb2NrX3JlbGVhc2UsXG5mcy9uZnMvbmZzNHByb2MuYy03NDE0LX07XG4tLVxuZnMvbmZzZC9uZnM0cHJvYy5jPTM1OTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnNkNF9vcGVyYXRpb24gbmZzZDRfb3BzW10gPSB7XG4tLVxuZnMvbmZzZC9uZnM0cHJvYy5jLTM2NDYtXHRcdC5vcF9mdW5jID0gbmZzZDRfbG9jayxcbmZzL25mc2QvbmZzNHByb2MuYzozNjQ3Olx0XHQub3BfcmVsZWFzZSA9IG5mc2Q0X2xvY2tfcmVsZWFzZSxcbmZzL25mc2QvbmZzNHByb2MuYy0zNjQ4LVx0XHQub3BfZmxhZ3MgPSBPUF9NT0RJRklFU19TT01FVEhJTkcgfFxuLS1cbmZzL25mc2QvbmZzNHN0YXRlLmM9Mzg1PXN0YXRpYyB2b2lkXG5mcy9uZnNkL25mczRzdGF0ZS5jOjM4NjpuZnNkNF9jYl9ub3RpZnlfbG9ja19yZWxlYXNlKHN0cnVjdCBuZnNkNF9jYWxsYmFjayAqY2IpXG5mcy9uZnNkL25mczRzdGF0ZS5jLTM4Ny17XG4tLVxuZnMvbmZzZC9uZnM0c3RhdGUuYz0zOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnNkNF9jYWxsYmFja19vcHMgbmZzZDRfY2Jfbm90aWZ5X2xvY2tfb3BzID0ge1xuLS1cbmZzL25mc2QvbmZzNHN0YXRlLmMtMzk2LVx0LmRvbmVcdFx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19kb25lLFxuZnMvbmZzZC9uZnM0c3RhdGUuYzozOTc6XHQucmVsZWFzZVx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19yZWxlYXNlLFxuZnMvbmZzZC9uZnM0c3RhdGUuYy0zOTgtXHQub3Bjb2RlXHRcdD0gT1BfQ0JfTk9USUZZX0xPQ0ssXG4tLVxuZnMvbmZzZC9uZnM0c3RhdGUuYz04NDI4PW5mc2Q0X2xvY2soc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IG5mc2Q0X2NvbXBvdW5kX3N0YXRlICpjc3RhdGUsXG4tLVxuZnMvbmZzZC9uZnM0c3RhdGUuYy04NjUyLVxuZnMvbmZzZC9uZnM0c3RhdGUuYzo4NjUzOnZvaWQgbmZzZDRfbG9ja19yZWxlYXNlKHVuaW9uIG5mc2Q0X29wX3UgKnUpXG5mcy9uZnNkL25mczRzdGF0ZS5jLTg2NTQte1xuLS1cbmZzL25mc2QveGRyNC5oPTEwMDg9ZXh0ZXJuIF9fYmUzMiBuZnNkNF9sb2NrKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBuZnNkNF9jb21wb3VuZF9zdGF0ZSAqLFxuZnMvbmZzZC94ZHI0LmgtMTAwOS1cdFx0dW5pb24gbmZzZDRfb3BfdSAqdSk7XG5mcy9uZnNkL3hkcjQuaDoxMDEwOmV4dGVybiB2b2lkIG5mc2Q0X2xvY2tfcmVsZWFzZSh1bmlvbiBuZnNkNF9vcF91ICp1KTtcbmZzL25mc2QveGRyNC5oLTEwMTEtZXh0ZXJuIF9fYmUzMiBuZnNkNF9sb2NrdChzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3QgbmZzZDRfY29tcG91bmRfc3RhdGUgKixcbi0tXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jPTQ2PXN0YXRpYyB2b2lkIGRsbV9pbml0X2xvY2soc3RydWN0IGRsbV9sb2NrICpuZXdsb2NrLCBpbnQgdHlwZSxcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmMtNDctXHRcdFx0ICB1OCBub2RlLCB1NjQgY29va2llKTtcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmM6NDg6c3RhdGljIHZvaWQgZGxtX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTQ5LXN0YXRpYyB2b2lkIGRsbV9sb2NrX2RldGFjaF9sb2NrcmVzKHN0cnVjdCBkbG1fbG9jayAqbG9jayk7XG4tLVxuZnMvb2NmczIvZGxtL2RsbWxvY2suYz0zMjk9dm9pZCBkbG1fbG9ja19wdXQoc3RydWN0IGRsbV9sb2NrICpsb2NrKVxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy0zMzAte1xuZnMvb2NmczIvZGxtL2RsbWxvY2suYzozMzE6XHRrcmVmX3B1dChcdTAwMjZsb2NrLVx1MDAzZWxvY2tfcmVmcywgZGxtX2xvY2tfcmVsZWFzZSk7XG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzMi19XG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzMy1cbmZzL29jZnMyL2RsbS9kbG1sb2NrLmM6MzM0OnN0YXRpYyB2b2lkIGRsbV9sb2NrX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzNS17XG4tLVxuZnMvcmVzY3RybC9pbnRlcm5hbC5oPTQ4MD1pbnQgcmR0X3BzZXVkb19sb2NrX2luaXQodm9pZCk7XG5mcy9yZXNjdHJsL2ludGVybmFsLmgtNDgxLVxuZnMvcmVzY3RybC9pbnRlcm5hbC5oOjQ4Mjp2b2lkIHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKHZvaWQpO1xuZnMvcmVzY3RybC9pbnRlcm5hbC5oLTQ4My1cbi0tXG5mcy9yZXNjdHJsL2ludGVybmFsLmg9NTA5PXN0YXRpYyBpbmxpbmUgaW50IHJkdF9wc2V1ZG9fbG9ja19pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH1cbmZzL3Jlc2N0cmwvaW50ZXJuYWwuaDo1MTA6c3RhdGljIGlubGluZSB2b2lkIHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKHZvaWQpIHsgfVxuZnMvcmVzY3RybC9pbnRlcm5hbC5oLTUxMS1zdGF0aWMgaW5saW5lIGludCByZHRncm91cF9wc2V1ZG9fbG9ja19jcmVhdGUoc3RydWN0IHJkdGdyb3VwICpyZHRncnApXG4tLVxuZnMvcmVzY3RybC9wc2V1ZG9fbG9jay5jPTEwNzU9aW50IHJkdF9wc2V1ZG9fbG9ja19pbml0KHZvaWQpXG4tLVxuZnMvcmVzY3RybC9wc2V1ZG9fbG9jay5jLTEwOTMtXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmM6MTA5NDp2b2lkIHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKHZvaWQpXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmMtMTA5NS17XG4tLVxuZnMvcmVzY3RybC9yZHRncm91cC5jPTI4MDM9c3RhdGljIGludCByZHRfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0yOTAzLW91dF9wc2w6XG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM6MjkwNDpcdHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKCk7XG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMjkwNS1vdXRfbW9uZGF0YTpcbi0tXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM9MzE4MT1zdGF0aWMgdm9pZCByZXNjdHJsX2ZzX3RlYXJkb3duKHZvaWQpXG4tLVxuZnMvcmVzY3RybC9yZHRncm91cC5jLTMxOTEtXHRtb25fcHV0X2tuX3ByaXYoKTtcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzozMTkyOlx0cmR0X3BzZXVkb19sb2NrX3JlbGVhc2UoKTtcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTkzLVx0cmR0Z3JvdXBfZGVmYXVsdC5tb2RlID0gUkRUX01PREVfU0hBUkVBQkxFO1xuLS1cbmluY2x1ZGUvYWNwaS9hY3BpX2J1cy5oPTY3ND12b2lkIGFjcGlfc2Nhbl9sb2NrX2FjcXVpcmUodm9pZCk7XG5pbmNsdWRlL2FjcGkvYWNwaV9idXMuaDo2NzU6dm9pZCBhY3BpX3NjYW5fbG9ja19yZWxlYXNlKHZvaWQpO1xuaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmgtNjc2LXZvaWQgYWNwaV9sb2NrX2hwX2NvbnRleHQodm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MjY5PXZvaWQgaHVnZXRsYl92bWFfYXNzZXJ0X2xvY2tlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7XG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoyNzA6dm9pZCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjcxLWxvbmcgaHVnZXRsYl9jaGFuZ2VfcHJvdGVjdGlvbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyOTEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoYXQga2VybmVsIHRhc2s6CgoqKlRyYWNpbmcgTG9jayBCZWhhdmlvcjogQSBLZXJuZWwgRGl2ZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGVyZSB3b3VsZCB0aGUgbG9jayB0cmFjZXBvaW50cyBsaWtlbHkgYmUgZGVmaW5lZD8mIzM0OyBNeSBndXQgdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZvciB0cmFjZXBvaW50cyByZWxhdGVkIHRvIGxvY2tpbmcgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgaW4gdGhlIGBrZXJuZWwvdHJhY2UvYCBkaXJlY3RvcnkuIEdpdmVuIHRoYXQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBLY29uZmlnYCB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBndWFyYW50ZWVkIHRvIGxpc3QgYXZhaWxhYmxlIGZlYXR1cmVzLCBhbmQgb2Z0ZW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcmVsYXRlZCB0byBsb2NrIHRyYWNpbmcuIFRoaXMgaXMgd2hlcmUgdGhlIGh1bnQgYmVnaW5zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGVkIGFuZCB3aGF0JiMzOTtzIG5vdCBpbiB0ZXJtcyBvZiB0cmFjaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTE9DS19TVEFUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTE0OTY9Y29uZmlnIFBST1ZFX1JBV19MT0NLX05FU1RJTkdcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTA0LVxubGliL0tjb25maWcuZGVidWc6MTUwNTpjb25maWcgTE9DS19TVEFUXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTA2LVx0Ym9vbCBcJiMzNDtMb2NrIHVzYWdlIHN0YXRpc3RpY3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1ODMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA3MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIExvY2tkZXAgRGlzYWJsaW5nIFBhdGNoIGZvciBCUEYgVHJhY2Vwb2ludHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaXMgZGVmaW5lZCB3aXRoaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAgYW5kIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBoYXZpbmcgYENPTkZJR19MT0NLREVQYCBlbmFibGVkIGlzIGVzc2VudGlhbCBmb3IgdGhlIHRyYWNlcG9pbnQgZGVmaW5pdGlvbiBpdHNlbGYuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhyZWUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfTE9DS0RFUGAuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gYHRyYWNlX2NhbGxfYnBmYCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZnVuY3Rpb24gaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4gWWVzLCBpdCYjMzk7cyBqdXN0IGB0cmFjZV9jYWxsX2JwZmAuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhgIGFuZCBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgYWRkaW5nIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcuIEkgaGF2ZSB0byBjaGVjayBmb3IgYW55IGxvY2tkZXAgdXNhZ2UgaW4gQlBGLgoKUmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgY29uZGl0aW9uYWwgYGxvY2tkZXBfb2ZmKClgIGFuZCBgbG9ja2RlcF9vbigpYCBhcm91bmQgdGhlIGBicGZfcHJvZ19ydW5fYXJyYXlgIGNhbGwgd2l0aGluIGB0cmFjZV9jYWxsX2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgZXhwbGljaXRseSBkaXNhYmxlcyBsb2NrZGVwICpkdXJpbmcqIHRoZSBleGVjdXRpb24gb2YgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50LiBUaGlzIGlzICpkZWZpbml0ZWx5KiBhbiBhcmVhIHRoYXQgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmchIFRoZXJlIGFyZSBkZWZpbml0ZSBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB0byB0aGlzLgoKSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uczogYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfQlBGX0VWRU5UU2AsIGFuZCBgQ09ORklHX0xPQ0tERVBgLiBUaGUga2V5IHN5bWJvbCBoZXJlIGlzIGB0cmFjZV9jYWxsX2JwZmAuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgb25seSBmdW5jdGlvbiBpbXBhY3RlZC4gSSBjaGVja2VkIGB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGVgOyBub3QgbW9kaWZpZWQuIEkga25vdyB0aGF0IGBicGZfcHJvZ19ydW5fYXJyYXlgIGlzIGFuIGlubGluZSBvciBtYWNybywgc28gaXQmIzM5O3Mgbm90IGRpcmVjdGx5IG1vZGlmaWVkIGVpdGhlci4gU28sIGl0JiMzOTtzIG9ubHkgYHRyYWNlX2NhbGxfYnBmYC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgYHRyYWNlX2NhbGxfYnBmYCBpcyByZWFjaGFibGUsIGFuZCBpdCBpcy4gV2hlbiBhIEJQRiBwcm9ncmFtIGlzIGF0dGFjaGVkIHRvIGEgdHJhY2Vwb2ludCwgYHRyYWNlX2NhbGxfYnBmYCBpcyBjYWxsZWQsIGFuZCBmb3IgYGxvY2tfcmVsZWFzZWAgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBgbm9fbG9ja2RlcCA9IHRydWVgLgoKSnVzdCBkb3VibGUtY2hlY2tpbmcgbXkgY29uZmlndXJhdGlvbiBuYW1lczsgYENPTkZJR19MT0NLREVQYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLgoKTm93LCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHVzdWFsIGRlcGVuZGVuY2llcyBvZiBgTE9DS0RFUGAuIEl0IHVzdWFsbHkgcmVsaWVzIG9uIHRoaW5ncyBsaWtlIGBQUk9WRV9MT0NLSU5HYCwgYExPQ0tfU1RBVGAsIG9yIGBERUJVR19MT0NLX0FMTE9DYC4gSSBzaG91bGQgY2hlY2sgYGxpYi9LY29uZmlnLmRlYnVnYCB0byB2ZXJpZnkgdGhlc2UgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTE9DS0RFUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTE1NzY9Y29uZmlnIERFQlVHX0xPQ0tfQUxMT0Ncbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTkwLVxubGliL0tjb25maWcuZGVidWc6MTU5MTpjb25maWcgTE9DS0RFUFxubGliL0tjb25maWcuZGVidWctMTU5Mi1cdGJvb2xcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTk3LVxubGliL0tjb25maWcuZGVidWc6MTU5ODpjb25maWcgTE9DS0RFUF9TTUFMTFxubGliL0tjb25maWcuZGVidWctMTU5OS1cdGJvb2xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MDAtXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNjAxOmNvbmZpZyBMT0NLREVQX0JJVFNcbmxpYi9LY29uZmlnLmRlYnVnLTE2MDItXHRpbnQgXCYjMzQ7U2l6ZSBmb3IgTUFYX0xPQ0tERVBfRU5UUklFUyAoYXMgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctMTYwOC1cbmxpYi9LY29uZmlnLmRlYnVnOjE2MDk6Y29uZmlnIExPQ0tERVBfQ0hBSU5TX0JJVFNcbmxpYi9LY29uZmlnLmRlYnVnLTE2MTAtXHRpbnQgXCYjMzQ7U2l6ZSBmb3IgTUFYX0xPQ0tERVBfQ0hBSU5TIChhcyBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjE2LVxubGliL0tjb25maWcuZGVidWc6MTYxNzpjb25maWcgTE9DS0RFUF9TVEFDS19UUkFDRV9CSVRTXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjE4LVx0aW50IFwmIzM0O1NpemUgZm9yIE1BWF9TVEFDS19UUkFDRV9FTlRSSUVTIChhcyBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjMxLVxubGliL0tjb25maWcuZGVidWc6MTYzMjpjb25maWcgTE9DS0RFUF9TVEFDS19UUkFDRV9IQVNIX0JJVFNcbmxpYi9LY29uZmlnLmRlYnVnLTE2MzMtXHRpbnQgXCYjMzQ7U2l6ZSBmb3IgU1RBQ0tfVFJBQ0VfSEFTSF9TSVpFIChhcyBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjQwLVxubGliL0tjb25maWcuZGVidWc6MTY0MTpjb25maWcgTE9DS0RFUF9DSVJDVUxBUl9RVUVVRV9CSVRTXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjQyLVx0aW50IFwmIzM0O1NpemUgZm9yIGVsZW1lbnRzIGluIGNpcmN1bGFyX3F1ZXVlIHN0cnVjdCAoYXMgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDI3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTG9ja2RlcCBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYExPQ0tERVBgIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBiaXQgb2YgYSBoaWRkZW4gZ2VtLCBhIGJvb2xlYW4gdGhhdCBnZXRzIGFjdGl2YXRlZCB0aHJvdWdoIGEgZmV3IG90aGVyIG9wdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgUFJPVkVfTE9DS0lOR2AsIGBMT0NLX1NUQVRgLCBhbmQgYERFQlVHX0xPQ0tfQUxMT0NgIGFsbCBoYXZlIGEgaGFuZCBpbiBlbmFibGluZyBpdC4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGluZ3MsIGdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHRoZSBrZXJuZWwmIzM5O3MgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlLgoKVGhlcmVmb3JlLCB0byAqZ3VhcmFudGVlKiB0aGF0IGBMT0NLREVQYCBpcyBhY3R1YWxseSBhY3RpdmUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0byBtZSB0aGF0IEkgc2hvdWxkIGp1c3QgZ28gYWhlYWQgYW5kIGVuYWJsZSBgUFJPVkVfTE9DS0lOR2AuIEdpdmVuIG15IHdvcmssIGl0JiMzOTtzIHRoZSBtb3N0IHN0cmFpZ2h0IGZvcndhcmQgcGF0aC4gU2VlbXMgbGlrZSB0aGF0IHdvdWxkIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0byBlbnN1cmUgdGhhdCB0aGlzIGxvY2sgZGVwZW5kZW5jeSBkZXRlY3Rpb24gbWVjaGFuaXNtIGlzIHRydWx5IHJ1bm5pbmcgYW5kIHdvcmtpbmcgYXMgaW50ZW5kZWQuIFNpbXBsZXIgaXMgYmV0dGVyLCBhZnRlciBhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUk9WRV9MT0NLSU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9MTQ0ND1jb25maWcgTE9DS19ERUJVR0dJTkdfU1VQUE9SVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTE0NDgtXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNDQ5OmNvbmZpZyBQUk9WRV9MT0NLSU5HXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNDUwLVx0Ym9vbCBcJiMzNDtMb2NrIGRlYnVnZ2luZzogcHJvdmUgbG9ja2luZyBjb3JyZWN0bmVzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjc5MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkVuYWJsaW5nIFByb3ZlIExvY2tpbmcgYW5kIFJlLUV4YW1pbmluZyBCUEZfRVZFTlRTIERlcGVuZGVuY2llcyoqCgpSaWdodCwgYFBST1ZFX0xPQ0tJTkdg4oCmIHRoYXQmIzM5O3MgYSBzb2xpZCBjaG9pY2UgdG8gZW5hYmxlLiBJdCYjMzk7cyB0aW1lIHRvIGJyaW5nIGFkZGl0aW9uYWwgZGVidWcgZGF0YSwgcGFydGljdWxhcmx5IGZvciBrZXJuZWwgbG9ja2luZy4gVGhlIHBvdGVudGlhbCBmb3IgY2F0Y2hpbmcgc3VidGxlIGNvbmN1cnJlbmN5IGJ1Z3MgYW5kIGRhdGEgcmFjZXMganVzdGlmaWVzIGl0LgoKTm93LCBiZWZvcmUgSSBjb21taXQgdGhhdCBjaGFuZ2UsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIHRoZSBgQlBGX0VWRU5UU2AgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgZXZlcnl0aGluZyBpcyBzdGlsbCBpbiBzeW5jLiBJIGtub3cgdGhlIGdlbmVyYWwgcmVxdWlyZW1lbnRzLCBidXQgaXQmIzM5O3Mgd29ydGggYSBkb3VibGUtY2hlY2sgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gaW50ZWdyYXRpb24gaXNzdWVzIG9yIGJ1aWxkIGZhaWx1cmVzLiBHb3R0YSBrZWVwIGFuIGV5ZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBhZnRlciBhbnkgdXBzdHJlYW0gY2hhbmdlcy4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODUwOlx0XHQgIGNvbnZlcnQgdGhlIHR5cGUgb2YgYW4gZXZlbnQgZmllbGQuIEZvciBleGFtcGxlLCB0dXJuIGFuXG4gODUxOlx0XHQgIGFkZHJlc3MgaW50byBhIHN0cmluZy5cbiA4NTI6XHRcbiA4NTM6XHRjb25maWcgQlBGX0VWRU5UU1xuIDg1NDpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuIDg1NTpcdFx0ZGVwZW5kcyBvbiAoS1BST0JFX0VWRU5UUyB8fCBVUFJPQkVfRVZFTlRTKSBcdTAwMjZcdTAwMjYgUEVSRl9FVkVOVFNcbiA4NTY6XHRcdGJvb2xcbiA4NTc6XHRcdGRlZmF1bHQgeVxuIDg1ODpcdFx0aGVscFxuIDg1OTpcdFx0ICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBhdHRhY2ggQlBGIHByb2dyYW1zIHRvIGtwcm9iZSwgdXByb2JlLCBhbmRcbiA4NjA6XHRcdCAgdHJhY2Vwb2ludCBldmVudHMuXG4gODYxOlx0XG4gODYyOlx0Y29uZmlnIERZTkFNSUNfRVZFTlRTXG4gODYzOlx0XHRkZWZfYm9vbCBuXG4gODY0Olx0XG4gODY1Olx0Y29uZmlnIFBST0JFX0VWRU5UU1xuIDg2NjpcdFx0ZGVmX2Jvb2wgblxuIDg2NzpcdFxuIDg2ODpcdGNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG4gODY5Olx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Mjk5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uOiBCUEYgRXZlbnQgRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQlBGX0VWRU5UU2AgaXMgY29udGluZ2VudCBvbiBhIGZldyBvdGhlciBjb25maWd1cmF0aW9uczogc3BlY2lmaWNhbGx5LCBgQlBGX1NZU0NBTExgLCBhbmQgZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKmluIGNvbmp1bmN0aW9uIHdpdGgqIGBQRVJGX0VWRU5UU2AuIFRoYXQgc2VlbWVkIHN0cmFpZ2h0Zm9yd2FyZDsgSSBmaWd1cmVkIHdlJiMzOTtkIGhhdmUgdG8gZXhwbGljaXRseSBlbmFibGUgYEJQRl9TWVNDQUxMYCwgYEtQUk9CRV9FVkVOVFNgLCBhbmQgYFBFUkZfRVZFTlRTYCB0byBnZXQgYEJQRl9FVkVOVFNgIHRvIHdvcmsuCgpCdXQgd2FpdCwgaG9sZCBvbi4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBpbiBteSB0aGlua2luZy4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGBCUEZfRVZFTlRTYCBpcyBgeWAgKmlmKiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIFNvLCBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgZW5hYmxpbmcgKmV2ZXJ5dGhpbmcqLCBJIGp1c3QgbmVlZCB0byBlbnN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBJbiB0aGlzIGNhc2UsIHRoYXQgbWVhbnMgSSBzaG91bGQgZXhwbGljaXRseSBzcGVjaWZ5IGBCUEZfU1lTQ0FMTGAsIGBLUFJPQkVfRVZFTlRTYCwgYFBFUkZfRVZFTlRTYCwgYW5kIGFsc28gYFBST1ZFX0xPQ0tJTkdgIGZvciBnb29kIG1lYXN1cmUuCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgS1BST0JFX0VWRU5UU2AgYW5kIGBQRVJGX0VWRU5UU2AgYXJlIHRydWx5IHNldCBjb3JyZWN0bHkuIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtQUk9CRV9FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz03NzA9Y29uZmlnIFBST0JFX0VWRU5UU19CVEZfQVJHU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTc4MS1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjc4Mjpjb25maWcgS1BST0JFX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctNzgzLVx0ZGVwZW5kcyBvbiBLUFJPQkVTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODAwLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODAxOmNvbmZpZyBLUFJPQkVfRVZFTlRTX09OX05PVFJBQ0Vcbmtlcm5lbC90cmFjZS9LY29uZmlnLTgwMi1cdGJvb2wgXCYjMzQ7RG8gTk9UIHByb3RlY3Qgbm90cmFjZSBmdW5jdGlvbiBmcm9tIGtwcm9iZSBldmVudHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NzIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IFVuZGVyc3RhbmRpbmcgb2YgS1BST0JFX0VWRU5UUyBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgS1BST0JFX0VWRU5UU2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0IGZ1bmRhbWVudGFsbHkgZGVwZW5kcyBvbiBgS1BST0JFU2AuIFdpdGhvdXQgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSBvZiBgS1BST0JFU2AsIGBLUFJPQkVfRVZFTlRTYCBqdXN0IHdvdWxkbiYjMzk7dCBiZSBhYmxlIHRvIGRvIHdoYXQgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZG8uIFRoaW5rIG9mIGBLUFJPQkVTYCBhcyB0aGUgcGx1bWJpbmcgYW5kIGBLUFJPQkVfRVZFTlRTYCBhcyB0aGUgZmF1Y2V0OyB5b3UgY2FuJiMzOTt0IGhhdmUgYSB3b3JraW5nIGZhdWNldCB3aXRob3V0IHRoZSBwbHVtYmluZyBpbiBwbGFjZS4gSXQgc2VlbXMgc2ltcGxlLCBhbG1vc3QgdHJpdmlhbCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBzdGF0ZSBpdCBleHBsaWNpdGx5LiBgS1BST0JFU2AgcHJvdmlkZXMgdGhlIG1lY2hhbmlzbSBmb3IgYWN0dWFsbHkgaW5zZXJ0aW5nIHByb2JlcywgYW5kIGBLUFJPQkVfRVZFTlRTYCBidWlsZHMgb24gKnRoYXQqIGZvdW5kYXRpb24gdG8gZG8gbW9yZSBhZHZhbmNlZCBldmVudCBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZy4gU28sIHllYWgsIGl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLUFJPQkVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvS2NvbmZpZz0xMTI9Y29uZmlnIEdFTkVSSUNfRU5UUllcbi0tXG5hcmNoL0tjb25maWctMTE2LVxuYXJjaC9LY29uZmlnOjExNzpjb25maWcgS1BST0JFU1xuYXJjaC9LY29uZmlnLTExOC1cdGJvb2wgXCYjMzQ7S3Byb2Jlc1wmIzM0O1xuLS1cbmFyY2gvS2NvbmZpZz0xNjg9Y29uZmlnIE9QVFBST0JFU1xuLS1cbmFyY2gvS2NvbmZpZy0xNzItXG5hcmNoL0tjb25maWc6MTczOmNvbmZpZyBLUFJPQkVTX09OX0ZUUkFDRVxuYXJjaC9LY29uZmlnLTE3NC1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBQcm9iZXM6IE5hdmlnYXRpbmcgdGhlIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYW5kIGltbWVkaWF0ZWx5IHRoZSBuZWVkIGZvciBgS1BST0JFU2AgcG9wcyBpbnRvIG15IGhlYWQuIEl0JiMzOTtzIHRoZSBnby10byBmb3IgaW4ta2VybmVsIGluc3RydW1lbnRhdGlvbiwgYW5kIGl0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIHByb2JhYmx5IGJlZ2luIG15IGludmVzdGlnYXRpb24uIEJ1dCB0aGVuLCB0aGUgcXVlc3Rpb24gb2Ygc3BlY2lmaWMgZXZlbnRzIHN1cmZhY2VzLiBJJiMzOTttIHdvbmRlcmluZyBpZiBJIHNob3VsZCBhbHNvIGJlIGNvbnNpZGVyaW5nIGBVUFJPQkVfRVZFTlRTYCBpbiB0aGUgbWl4LiBUaGV5JiMzOTtyZSByZWxhdGVkLCBidXQgaGFuZGxlIHVzZXItc3BhY2UgcHJvYmVzLiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIHVzaW5nIHRoZSBiZXN0IHRvb2xzIGZvciB0aGUgam9iLCBkZXBlbmRpbmcgb24gd2hhdCBJJiMzOTttIGxvb2tpbmcgdG8gYWNoaWV2ZSAtIGtlcm5lbCBzcGFjZSBvciB1c2Vyc3BhY2Ugb3IgYm90aC4gTmVlZCB0byBmYWN0b3IgdGhhdCBpbi4gR290dGEgY29uc2lkZXIgdGhhdCB0byBidWlsZCBhIHNvbHV0aW9uIHRoYXQmIzM5O3Mgcm9idXN0IGFuZCBlZmZpY2llbnQsIEkgbmVlZCB0byBtYWtlIHRoZSByaWdodCBjaG9pY2UgYmV0d2VlbiB0aGUgdHdvIGF0IHRoZSBvdXRzZXQuIEkgYW0gcG9uZGVyaW5nIHdoYXQgdGhlIGJlc3Qgd2F5IHRvIGxldmVyYWdlIGJvdGggbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVUFJPQkVfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9ODAxPWNvbmZpZyBLUFJPQkVfRVZFTlRTX09OX05PVFJBQ0Vcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04MjAtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4MjE6Y29uZmlnIFVQUk9CRV9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTgyMi1cdGJvb2wgXCYjMzQ7RW5hYmxlIHVwcm9iZXMtYmFzZWQgZHluYW1pYyBldmVudHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1ODIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgaGF2aW5nIHRoZW06CgoqKkRlcGVuZGVuY3kgQ29uc2lkZXJhdGlvbnMgZm9yIFVQUk9CRV9FVkVOVFMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgVVBST0JFX0VWRU5UU2AgYW5kIHRoZSBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlYWxseS4gSXQmIzM5O3MgY2xlYXIgdGhhdCBgVVBST0JFX0VWRU5UU2AgKmFic29sdXRlbHkqIGRlcGVuZHMgb24gYFVQUk9CRVNgLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIGBVUFJPQkVfRVZFTlRTYCDigJMgd2hpY2ggaXMgb2J2aW91c2x5IGV2ZW50IGNyZWF0aW9uIGFuZCBoYW5kbGluZyByZWxhdGVkIHRvIHVzZXItc3BhY2UgcHJvYmVzIOKAkyBpcyBmdW5kYW1lbnRhbGx5IGJ1aWx0IHVwb24gdGhlIHVuZGVybHlpbmcgY2FwYWJpbGl0aWVzIHByb3ZpZGVkIGJ5IGBVUFJPQkVTYC4gSSBtZWFuLCBob3cgZWxzZSB3b3VsZCB5b3UgY2FwdHVyZSBhbmQgbWFrZSBzZW5zZSBvZiBldmVudHMgcmVsYXRlZCB0byBwcm9iZXMgaWYgeW91IGRpZG4mIzM5O3QgaGF2ZSB0aGUgcHJvYmVzIHRoZW1zZWx2ZXMgaW4gcGxhY2UgZmlyc3Q/IEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBleHBsaWNpdCBpbiBhbnkgZGVzaWduIGRvY3Mgb3IgZGlzY3Vzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVUFJPQkVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvS2NvbmZpZz0xNzM9Y29uZmlnIEtQUk9CRVNfT05fRlRSQUNFXG4tLVxuYXJjaC9LY29uZmlnLTE4MS1cbmFyY2gvS2NvbmZpZzoxODI6Y29uZmlnIFVQUk9CRVNcbmFyY2gvS2NvbmZpZy0xODMtXHRkZWZfYm9vbCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODY4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqU3RyYXRlZ2ljIEFwcHJvYWNoIHRvIEluc3RydW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIHdlIHNob3VsZCBzdHJlYW1saW5lIHRoaXMgcHJvY2Vzcy4gTGV0JiMzOTtzIGp1c3QgbGVhbiBoZWF2aWx5IG9uIGBLUFJPQkVfRVZFTlRTYCBhbmQgcGxhaW4gb2xkIGBLUFJPQkVTYCBmb3IgdGhpcyBpbml0aWFsIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhleSYjMzk7cmUgcG93ZXJmdWwgYW5kIHdlbGwtdW5kZXJzdG9vZCwgc28gc3RhcnRpbmcgd2l0aCB0aGVtIG1ha2VzIHRoZSBtb3N0IHNlbnNlLgoKTm93LCBJIGFsc28gd2FudCB0byBtYWtlIHN1cmUgd2UgY29uc2lkZXIgdGhlIGxvbmcgdGVybS4gSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYFBFUkZfRVZFTlRTYCBpcyBlbmFibGVkIHZpYSBjb25maWd1cmF0aW9uLiBJJiMzOTttIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlLCBhbmQgaWYgaXQgaXMsIHdlIHNob3VsZCBnaXZlIGl0IGZ1bGwgY29uc2lkZXJhdGlvbiBhdCBsZWFzdC4gSXQmIzM5O3Mgb2Z0ZW4gdGhlIGdvbGQgc3RhbmRhcmQuIFdlIG1heSB3YW50IHRvIGV4cGFuZCB0byB1c2UgaXQgYXQgc29tZSBwb2ludC4gQnV0IGZvciBub3csIGxldCYjMzk7cyBrZWVwIGl0IHNpbXBsZSBhbmQgc2VlIGlmIHdlIGNhbiBnZXQgdGhlIGJhc2VsaW5lIGltcGxlbWVudGVkIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEVSRl9FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTIxNDE9bWVudSBcJiMzNDtLZXJuZWwgUGVyZm9ybWFuY2UgRXZlbnRzIEFuZCBDb3VudGVyc1wmIzM0O1xuaW5pdC9LY29uZmlnLTIxNDItXG5pbml0L0tjb25maWc6MjE0Mzpjb25maWcgUEVSRl9FVkVOVFNcbmluaXQvS2NvbmZpZy0yMTQ0LVx0Ym9vbCBcJiMzNDtLZXJuZWwgcGVyZm9ybWFuY2UgZXZlbnRzIGFuZCBjb3VudGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE5MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBLZXJuZWwgQ29uZmlndXJhdGlvbiBNdXNpbmdzKioKCk9rYXksIHllcywgZGVmaW5pdGVseSBgUEVSRl9FVkVOVFNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gUmlnaHQsIHNvIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ6IGBCUEZfU1lTQ0FMTGAsIGBLUFJPQkVTYCwgYEtQUk9CRV9FVkVOVFNgLCBgUEVSRl9FVkVOVFNgIOKAkyBvYnZpb3VzbHkg4oCTIGFuZCBgUFJPVkVfTE9DS0lOR2AuCgpOb3csIGJlZm9yZSBJIG1vdmUgb24sIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIEkgKmNhbiogYWN0dWFsbHkgZW5hYmxlIGBCUEZfRVZFTlRTYCBkaXJlY3RseS4gSG1tLCBpdCYjMzk7cyBhIGBib29sYCBjb25maWcsIGFuZCBpdCBkZWZhdWx0cyB0byAmIzM0O3kmIzM0Oy4gU28sIGl0IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkLiBCdXQsIEkgY2FuIGV4cGxpY2l0bHkgc2V0IGl0IHRvbywgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2QgcHJhY3RpY2UuCgpSaWdodCwgbGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIHRyYWNpbmcgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIHByb2dyYW1zIGdldCBob29rZWQgaW50byB0aGUga2VybmVsLiBMZXQmIzM5O3MgbG9vayBhdCBgdHJhY2VfY2FsbF9icGZgIGluIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBBaGEsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX2JwZl90cmFjZV9ydW5gLiBBbmQgdGhhdCBmdW5jdGlvbiBpcyBnZW5lcmF0ZWQgdXNpbmcgdGhvc2UgYERFQ0xBUkVfRVZFTlRfQ0xBU1NgIG1hY3JvcyBvciBzb21ldGhpbmcgc2ltaWxhci4KCk9rYXksIHNvIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBhdHRhY2hlZCB0byBhIHRyYWNlcG9pbnQsIHRoZSBrZXJuZWwgdXNlcyBzb21ldGhpbmcgbGlrZSBgcGVyZl90cmFjZV8jI2NhbGxgLCB3aGljaCBpcyB3aGF0IHRoZW4gY2FsbHMgYHRyYWNlX2NhbGxfYnBmYC4gV2FpdCBhIHNlY29uZOKApiBpc24mIzM5O3QgYHRyYWNlX2NhbGxfYnBmYCBjYWxsZWQgZnJvbSBgcGVyZl90cmFjZV8jI2NhbGxgPyBZZXMsIHJpZ2h0LCB0aGF0JiMzOTtzIGluIGBpbmNsdWRlL3RyYWNlL3BlcmYuaGAuIE9rYXksIGJldHRlciBnbyBhbmQgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvdHJhY2UvcGVyZi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipMb2NhdGluZyB0aGUgQ2FsbGVycyBvZiBgdHJhY2VfY2FsbF9icGZgKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgdHJhY2VfY2FsbF9icGZgIGlzIGJlaW5nIGludm9rZWQuIEl0JiMzOTtzIGEgY3JpdGljYWwgZnVuY3Rpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgZ3JhcGggaXMgcGFyYW1vdW50LiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nLCBpcyB0aGVyZSBhIHNpbXBsZSBncmVwIEkgY2FuIHJ1biB0byBmaW5kIHRoZSBkaXJlY3QgY2FsbGVycywgb3IgaXMgaXQgbW9yZSBjb21wbGV4IHRoYW4gdGhhdD8gR2l2ZW4gdGhlIG5hdHVyZSBvZiBCUEYsIEkgc3VzcGVjdCBpdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSBwbGFjZXMsIHBlcmhhcHMgZXZlbiBkeW5hbWljYWxseS4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlIEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gTWF5YmUgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyB0cmFjaW5nIG1lY2hhbmlzbSB0aGF0IHVzZXMgdGhpcywgYW5kIEkgY2FuIG5hcnJvdyBkb3duIHRoZSBzZWFyY2ggdGhhdCB3YXkuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBzdGF0aWMgY2FsbHMgYW5kIGluZGlyZWN0IGNhbGxzIHRocm91Z2ggZnVuY3Rpb24gcG9pbnRlcnMgb3IganVtcCB0YWJsZXMuIFRoaXMgcmVxdWlyZXMgYSB0YXJnZXRlZCBpbnZlc3RpZ2F0aW9uOyBhIGJyb2FkIHNlYXJjaCBtaWdodCBiZSB0b28gbm9pc3kuIFRoaW5raW5nIGFsc28gYWJvdXQgYW55IG1vZHVsZSBkZXBlbmRlbmNpZXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwgdG8gcXVpY2tseSByZWR1Y2UgdGhlIHNlYXJjaCBzcGFjZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IEkgY2FuIHVuY292ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhY2VfY2FsbF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL3RyYWNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTIwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKlRyYWNpbmcgdGhlIENhbGxlciBvZiBgdHJhY2VfY2FsbF9icGZgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93IGFyb3VuZCBgdHJhY2VfY2FsbF9icGZgLiBGaXJzdCwgbXkgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbGluZyBjb250ZXh0LiBTbywgbGV0JiMzOTtzIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgc2VhcmNoIGZvciBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgdHJhY2VfY2FsbF9icGZgIGlzIGFjdHVhbGx5IGludm9rZWQuIEkgbmVlZCB0byBzZWUgdGhlIGRpZmZlcmVudCBzY2VuYXJpb3MsIGlkZW50aWZ5IHRoZSBwYXJlbnQgZnVuY3Rpb25zIG9yIGNvZGUgYmxvY2tzLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJiMzOTttIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGZpbmRpbmdzIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgQlBGIGFuZCB0cmFjaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhY2VfY2FsbF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc1OT10cmFjZV90cmlnZ2VyX3NvZnRfZGlzYWJsZWQoc3RydWN0IHRyYWNlX2V2ZW50X2ZpbGUgKmZpbGUpXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzQtI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3NTp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3Njp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzctaW50IHBlcmZfZXZlbnRfYXR0YWNoX2JwZl9wcm9nKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1NjQgYnBmX2Nvb2tpZSk7XG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03OTM9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk0LSNlbHNlXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5NTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTYte1xuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk5LVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4MDA6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzExCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBVc2FnZSBQYXR0ZXJucyoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGFwcGxpY2F0aW9uIG9mIHRoaXMgY29uY2VwdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgYXNzZXNzIGl0cyB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgYmVpbmcgZGVwbG95ZWQsIGFjcm9zcyB3aGljaCBkb21haW5zLCBhbmQgaW4gd2hhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbW1vbmFsaXRpZXMgYW5kIHRoZSB2YXJpYXRpb25zLiBBcmUgd2Ugc2VlaW5nIGl0IHByaW1hcmlseSBpbiByZXNlYXJjaCwgb3IgaXMgaXQgbWFraW5nIGlucm9hZHMgaW50byBwcmFjdGljYWwgYXBwbGljYXRpb25zPyBXaGF0IGluZHVzdHJpZXMgYXJlIGFkb3B0aW5nIGl0LCBhbmQgd2h5PyBBcmUgdGhlcmUgYW55IGNsZWFyIGxlYWRlcnMgb3IgbGFnZ2luZyBhZG9wdGVycz8gVW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aGVyZSYjMzQ7IGlzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEl0IHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBlZmZpY2FjeSBhbmQgbGltaXRhdGlvbnMgd2l0aGluIGl0cyBhcHBsaWNhdGlvbi4gVGhlIGRhdGEgd2lsbCBkaWN0YXRlIG15IG5leHQgc3RlcCwgYmUgdGhhdCBhIGZ1cnRoZXIgZXhhbWluYXRpb24gb2YgbWV0aG9kb2xvZ3kgb3IgYSBjb21wYXJpc29uIGFnYWluc3Qgb3RoZXIgcGFyYWRpZ21zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc1OT10cmFjZV90cmlnZ2VyX3NvZnRfZGlzYWJsZWQoc3RydWN0IHRyYWNlX2V2ZW50X2ZpbGUgKmZpbGUpXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzQtI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3NTp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3Njp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzctaW50IHBlcmZfZXZlbnRfYXR0YWNoX2JwZl9wcm9nKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1NjQgYnBmX2Nvb2tpZSk7XG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03OTM9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk0LSNlbHNlXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5NTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTYte1xuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk5LVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4MDA6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgwMS17XG4tLVxua2VybmVsL2V2ZW50cy9jb3JlLmM9MTEzOTE9dm9pZCBwZXJmX3RyYWNlX3J1bl9icGZfc3VibWl0KHZvaWQgKnJhd19kYXRhLCBpbnQgc2l6ZSwgaW50IHJjdHgsXG4tLVxua2VybmVsL2V2ZW50cy9jb3JlLmMtMTEzOTctXHRcdCooc3RydWN0IHB0X3JlZ3MgKiopcmF3X2RhdGEgPSByZWdzO1xua2VybmVsL2V2ZW50cy9jb3JlLmM6MTEzOTg6XHRcdGlmICghdHJhY2VfY2FsbF9icGYoY2FsbCwgcmF3X2RhdGEpIHx8IGhsaXN0X2VtcHR5KGhlYWQpKSB7XG5rZXJuZWwvZXZlbnRzL2NvcmUuYy0xMTM5OS1cdFx0XHRwZXJmX3N3ZXZlbnRfcHV0X3JlY3Vyc2lvbl9jb250ZXh0KHJjdHgpO1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz05Nj1zdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpO1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy05OC0vKipcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzo5OTogKiB0cmFjZV9jYWxsX2JwZiAtIGludm9rZSBCUEYgcHJvZ3JhbVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEwMC0gKiBAY2FsbDogdHJhY2Vwb2ludCBldmVudFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMTEtICovXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTEyOnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTExMy17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEzOS1cdCAqIElmIGJwZl9wcm9nX2FycmF5X3ZhbGlkKCkgZmV0Y2hlZCBwcm9nX2FycmF5IHdhc1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE0MDpcdCAqIG5vbi1OVUxMLCB3ZSBnbyBpbnRvIHRyYWNlX2NhbGxfYnBmKCkgYW5kIGRvIHRoZSBhY3R1YWxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNDEtXHQgKiBwcm9wZXIgcmN1X2RlcmVmZXJlbmNlKCkgdW5kZXIgUkNVIGxvY2suXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2My0vKipcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjQ6ICogdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlIC0gaW52b2tlIEJQRiBwcm9ncmFtIGluIGZhdWx0YWJsZSBjb250ZXh0XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY1LSAqIEBjYWxsOiB0cmFjZXBvaW50IGV2ZW50XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2Ny0gKlxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2ODogKiBWYXJpYW50IG9mIHRyYWNlX2NhbGxfYnBmKCkgZm9yIGZhdWx0YWJsZSB0cmFjZXBvaW50cyAoc3lzY2FsbFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2OS0gKiB0cmFjZXBvaW50cykuIFN1cHBvcnRzIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgYnkgdXNpbmcgcmN1X3Rhc2tzX3RyYWNlXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE3OC0gKi9cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNzk6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4MC17XG4tLVxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jPTE2ODM9a3Byb2JlX3BlcmZfZnVuYyhzdHJ1Y3QgdHJhY2Vfa3Byb2JlICp0aywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE2OTQtXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmM6MTY5NTpcdFx0cmV0ID0gdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncyk7XG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMtMTY5Ni1cbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmM9MTczMj1rcmV0cHJvYmVfcGVyZl9mdW5jKHN0cnVjdCB0cmFjZV9rcHJvYmUgKnRrLCBzdHJ1Y3Qga3JldHByb2JlX2luc3RhbmNlICpyaSxcbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMtMTc0MC1cbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYzoxNzQxOlx0aWYgKGJwZl9wcm9nX2FycmF5X3ZhbGlkKGNhbGwpIFx1MDAyNlx1MDAyNiAhdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncykpXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMtMTc0Mi1cdFx0cmV0dXJuO1xuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jPTEzNzQ9c3RhdGljIGludCBwZXJmX2NhbGxfYnBmX2VudGVyKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLFxuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTEzOTMtXHRcdHBhcmFtLmFyZ3NbaV0gPSBhcmdzW2ldO1xua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM6MTM5NDpcdHJldHVybiB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoY2FsbCwgXHUwMDI2cGFyYW0pO1xua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmMtMTM5NS19XG4tLVxua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM9MTUyNT1zdGF0aWMgaW50IHBlcmZfY2FsbF9icGZfZXhpdChzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCxcbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYy0xNTM5LVx0cGFyYW0ucmV0ID0gcmV0X3ZhbDtcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jOjE1NDA6XHRyZXR1cm4gdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKGNhbGwsIFx1MDAyNnBhcmFtKTtcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTE1NDEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ0NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCUEYgVHJhY2Vwb2ludCBFeGVjdXRpb24gYW5kIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYHRyYWNlX2NhbGxfYnBmYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBwZXJmX3RyYWNlX3J1bl9icGZfc3VibWl0YCBpbiBga2VybmVsL2V2ZW50cy9jb3JlLmNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGV4ZWN1dGlvbiBwYXRoIGZvciB0cmFjZXBvaW50cyB3aXRoIEJQRiBwcm9ncmFtcyBhdHRhY2hlZDsgdGhhdCYjMzk7cyBnb29kLCBpdCYjMzk7cyBlYXNpbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcHJldHR5IGRpcmVjdCBwYXRoIGZvciBvdXIgYW5hbHlzaXMuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBuZWVkLiBXZSYjMzk7cmUgY29uY2VybmVkIHdpdGggYEJQRl9TWVNDQUxMYCwgYEJQRl9FVkVOVFNgLCBgUEVSRl9FVkVOVFNgLCBhbmQgYFBST1ZFX0xPQ0tJTkdgLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBzaW1wbHkgZW5hYmxlIGBCUEZfRVZFTlRTYCBvciBkbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzZXQ/CgpgQlBGX0VWRU5UU2AgaXMgYSBib29sZWFuIHRoYXQgZGVmYXVsdHMgdG8gJiMzOTt5JiMzOTsgYmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgZGVwZW5kZW50IG9uIGBCUEZfU1lTQ0FMTGAgKmFuZCogZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKmFuZCogYFBFUkZfRVZFTlRTYC4gVGhlcmVmb3JlLCBsaXN0aW5nIGBCUEZfU1lTQ0FMTGAsIGBLUFJPQkVfRVZFTlRTYCwgYFBFUkZfRVZFTlRTYCwgYW5kIGBQUk9WRV9MT0NLSU5HYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgaXQuIFRoZXJlJiMzOTtzIG5vIGhhcm0gaW4gbGlzdGluZyBgQlBGX0VWRU5UU2AgZGlyZWN0bHkgYXMgd2VsbCwgbWlnaHQgbWFrZSB0aGluZ3MgY2xlYXJlci4KCkhhbmcgb24uLi4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgZGlzYWJsZXMgbG9ja2RlcCBmb3IgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuIFRoYXQgaW1wbGllcyB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCAqbXVzdCogYmUgZW5hYmxlZCBmb3IgdGhlIHBhdGNoIHRvIGV2ZW4gaGF2ZSBhbiBlZmZlY3QuIE9rYXksIHNvIHdlIG5lZWQgdG8gdmVyaWZ5IGl0cyBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBkZWZpbmVkIGluIGBpbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhgLCB3aGljaCBpcyBpbmNsdWRlZCBieSBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbG9ja19yZWxlYXNlYCBpcyBhY3R1YWxseSB1c2VkIGluIGBrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmNgLiBUaGlzIHdpbGwgZ2l2ZSB1cyB2YWx1YWJsZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3lzdGVtIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9sb2NrX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jPTU4NzU9dm9pZCBsb2NrX3JlbGVhc2Uoc3RydWN0IGxvY2tkZXBfbWFwICpsb2NrLCB1bnNpZ25lZCBsb25nIGlwKVxuLS1cbmtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYy01ODc4LVxua2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jOjU4Nzk6XHR0cmFjZV9sb2NrX3JlbGVhc2UobG9jaywgaXApO1xua2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jLTU4ODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjkwCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDEzNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYEJQRl9OT19MT0NLREVQYCBpbiBLZXJuZWwgVHJhY2luZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhlIGtleSBpcyB0aGlzIG5ldyBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcuICBJdCYjMzk7cyBzcGVjaWZpY2FsbHkgdXNlZCBpbiB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCwgd2hpY2ggaXMgZGVmaW5lZCBpbiBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gIFRoaXMgbWVhbnMgYENPTkZJR19MT0NLREVQYCBpcyBhIGRlZmluaXRlIHJlcXVpcmVtZW50LCBhbmQgaW5kaXJlY3RseSBgQ09ORklHX1BST1ZFX0xPQ0tJTkdgIGFzIGl0IGVuYWJsZXMgYENPTkZJR19MT0NLREVQYC4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcgYW5kIGNvbmZpZ3VyYXRpb24uICBUaGlzIGNoYW5nZSBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZywgYW5kIHRoZSBwcmltYXJ5IGZvY3VzIHN5bWJvbCBmb3IgdGhhdCBmdXp6aW5nIGlzIGB0cmFjZV9jYWxsX2JwZmAuICBJbiB0ZXJtcyBvZiBjb25maWd1cmF0aW9ucywgdGhlIG5lY2Vzc2FyeSBvbmVzIGFyZSBgQlBGX1NZU0NBTExgLCBgQlBGX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBgUFJPVkVfTE9DS0lOR2AsIHdoaWNoIGluZGlyZWN0bHkgZW5hYmxlcyBgTE9DS0RFUGAuIEkgaGFkIHRvIGRvdWJsZS1jaGVjayB0aGlzLCBidXQgYExPQ0tERVBgIGlzIGEgdmFsaWQgY29uZmlnIGFuZCBjYW4gYmUgbGlzdGVkLiBIb3dldmVyLCBgS1BST0JFX0VWRU5UU2AgaXMgYWxzbyByZXF1aXJlZCwgZXZlbiB0aG91Z2ggaXQgaXNuJiMzOTt0IGRpcmVjdGx5IHVzZWQgYnkgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuIFRoZSByZWFzb24gaXMgYmVjYXVzZSBgQlBGX0VWRU5UU2AgZGVwZW5kcyBvbiBgS1BST0JFX0VWRU5UU2AgKG9yIGBVUFJPQkVfRVZFTlRTYCksIGFuZCBgUEVSRl9FVkVOVFNgLgoKTm93LCByZXZpZXdpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gIFRoZXJlJiMzOTtzIGEgbmV3IGZsYWcsIGBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUGAsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhgLiAgVGhpcyBmbGFnIGdldHMgYWRkZWQgdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIENyaXRpY2FsbHksIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGlzIHVwZGF0ZWQgdG8gY2hlY2sgdGhpcyBuZXcgZmxhZyB3aXRoaW4gdGhlIGB0cmFjZV9jYWxsX2JwZmAgZnVuY3Rpb24uIElmIHRoZSBmbGFnIGlzIHNldCwgbG9ja2RlcCBpcyB0ZW1wb3JhcmlseSBkaXNhYmxlZCBiZWZvcmUgcnVubmluZyB0aGUgQlBGIHByb2dyYW0gYW5kIHJlLWVuYWJsZWQgYWZ0ZXJ3YXJkcyB1c2luZyBgbG9ja2RlcF9vZmYoKWAgYW5kIGBsb2NrZGVwX29uKClgLiBUaGUgZmxhZyBpcyBhZGRlZCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCB1c2luZyBgVFJBQ0VfRVZFTlRfRkxBR1NgLiBUaGlzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgd2l0aCBzeXprYWxsZXIgYnkgYXR0YWNoaW5nIGEgQlBGIHByb2dyYW0gdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDssCiAgICAmIzM0O1BFUkZfRVZFTlRTJiMzNDssCiAgICAmIzM0O1BST1ZFX0xPQ0tJTkcmIzM0OywKICAgICYjMzQ7S1BST0JFX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RyYWNlX2NhbGxfYnBmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZ1bmN0aW9uYWxseSBtb2RpZmllcyBgdHJhY2VfY2FsbF9icGZgIHRvIGRpc2FibGUgbG9ja2RlcCB0cmFja2luZyB3aGlsZSBleGVjdXRpbmcgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRyYWNlcG9pbnRzIHdpdGggdGhlIGBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUGAgZmxhZyAoc3VjaCBhcyBgbG9ja19yZWxlYXNlYCkuIFRoaXMgaXMgYSByZWFjaGFibGUgY29yZSBrZXJuZWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgdHJhY2luZyBiZWhhdmlvciBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQUk9WRV9MT0NLSU5HJiMzNDssCiAgICAmIzM0O0tQUk9CRV9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzoxMi40NDExOTA3OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM1Mjc5MzQ4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIixcbiAgICBcIlBFUkZfRVZFTlRTXCIsXG4gICAgXCJQUk9WRV9MT0NLSU5HXCIsXG4gICAgXCJLUFJPQkVfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHJhY2VfY2FsbF9icGZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MTIuNDQxMTk3NDY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQwMzMyMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNTQ2MWQ0NTE1YzQxMDkwOTBkMzFhYzljMjU4YjExZDczMTQ5MTVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTE6MjM6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaCBiL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcXG5pbmRleCAzMDhjNzZiNTdkMTMyLi42ZjY3YjVlOWUzOGQ2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXFxuQEAgLTMzMCw2ICszMzAsNyBAQCBlbnVtIHtcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCxcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfQ1VTVE9NX0JJVCxcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklULFxcbitcXHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUF9CSVQsXFxuIH07XFxuIFxcbiAvKlxcbkBAIC0zNDcsNiArMzQ4LDcgQEAgZW51bSB7XFxuICAqICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgc2V0IHdoZW4gdGhlIGN1c3RvbSBldmVudCBoYXMgbm90IGJlZW4gYXR0YWNoZWRcXG4gICogICAgICAgICAgICAgICAgICAgdG8gYSB0cmFjZXBvaW50IHlldCwgdGhlbiBpdCBpcyBjbGVhcmVkIHdoZW4gaXQgaXMuXFxuICAqICBURVNUX1NUUiAgICAgIC0gVGhlIGV2ZW50IGhhcyBhIFxcXCIlc1xcXCIgdGhhdCBwb2ludHMgdG8gYSBzdHJpbmcgb3V0c2lkZSB0aGUgZXZlbnRcXG4rICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zXFxuICAqL1xcbiBlbnVtIHtcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfQ0FQX0FOWVxcdFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQ0FQX0FOWV9CSVQpLFxcbkBAIC0zNjAsNiArMzYyLDcgQEAgZW51bSB7XFxuIFxcdFRSQUNFX0VWRU5UX0ZMX0ZQUk9CRVxcdFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCksXFxuIFxcdFRSQUNFX0VWRU5UX0ZMX0NVU1RPTVxcdFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQ1VTVE9NX0JJVCksXFxuIFxcdFRSQUNFX0VWRU5UX0ZMX1RFU1RfU1RSXFx0XFx0PSAoMSBcXHUwMDNjXFx1MDAzYyBUUkFDRV9FVkVOVF9GTF9URVNUX1NUUl9CSVQpLFxcbitcXHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBfQklUKSxcXG4gfTtcXG4gXFxuICNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxfVUtQUk9CRSAoVFJBQ0VfRVZFTlRfRkxfS1BST0JFIHwgVFJBQ0VfRVZFTlRfRkxfVVBST0JFKVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcXG5pbmRleCAxZGVkODY5Y2Q2MTlmLi41Y2NmNWM1NGUzZDJkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxcbkBAIC03Miw2ICs3Miw4IEBAIERFRklORV9FVkVOVChsb2NrLCBsb2NrX3JlbGVhc2UsXFxuIFxcdFRQX0FSR1MobG9jaywgaXApXFxuICk7XFxuIFxcbitUUkFDRV9FVkVOVF9GTEFHUyhsb2NrX3JlbGVhc2UsIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQKTtcXG4rXFxuICNpZmRlZiBDT05GSUdfTE9DS19TVEFUXFxuIFxcbiBERUZJTkVfRVZFTlQobG9jaywgbG9ja19jb250ZW5kZWQsXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xcbmluZGV4IDc1NDk1YTVjMzUwNzkuLmYyNDYwZjNjODYwZTAgMTAwNjQ0XFxuLS0tIGEva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jXFxuKysrIGIva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jXFxuQEAgLTI0LDYgKzI0LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmFtZWkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZpbGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xvY2tkZXAuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvYnBmX3NrX3N0b3JhZ2UuaFxcdTAwM2VcXG4gXFxuQEAgLTExMCw2ICsxMTEsNyBAQCBzdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpO1xcbiAgKi9cXG4gdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXFxuIHtcXG4rXFx0Ym9vbCBub19sb2NrZGVwID0gY2FsbC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUDtcXG4gXFx0dW5zaWduZWQgaW50IHJldDtcXG4gXFxuIFxcdGNhbnRfc2xlZXAoKTtcXG5AQCAtMTQ0LDggKzE0NiwxMiBAQCB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG4gXFx0ICogcmN1X2RlcmVmZXJlbmNlKCkgd2hpY2ggaXMgYWNjZXB0ZWQgcmlzay5cXG4gXFx0ICovXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFx0aWYgKG5vX2xvY2tkZXApXFxuK1xcdFxcdGxvY2tkZXBfb2ZmKCk7XFxuIFxcdHJldCA9IGJwZl9wcm9nX3J1bl9hcnJheShyY3VfZGVyZWZlcmVuY2UoY2FsbC1cXHUwMDNlcHJvZ19hcnJheSksXFxuIFxcdFxcdFxcdFxcdCBjdHgsIGJwZl9wcm9nX3J1bik7XFxuK1xcdGlmIChub19sb2NrZGVwKVxcbitcXHRcXHRsb2NrZGVwX29uKCk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXG4gIG91dDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MTIuODY2MjI3NDUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTUzMTAyODg4NTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiLFxuICAgIFwiUFJPVkVfTE9DS0lOR1wiLFxuICAgIFwiS1BST0JFX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRyYWNlX2NhbGxfYnBmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZnVuY3Rpb25hbGx5IG1vZGlmaWVzIGB0cmFjZV9jYWxsX2JwZmAgdG8gZGlzYWJsZSBsb2NrZGVwIHRyYWNraW5nIHdoaWxlIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdHJhY2Vwb2ludHMgd2l0aCB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnIChzdWNoIGFzIGBsb2NrX3JlbGVhc2VgKS4gVGhpcyBpcyBhIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiB0cmFjaW5nIGJlaGF2aW9yIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU1NDYxZDQ1MTVjNDEwOTA5MGQzMWFjOWMyNThiMTFkNzMxNDkxNWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjIzOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaCBiL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcbmluZGV4IDMwOGM3NmI1N2QxMzIuLjZmNjdiNWU5ZTM4ZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG5AQCAtMzMwLDYgKzMzMCw3IEBAIGVudW0ge1xuIFx0VFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCxcbiBcdFRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQsXG4gXHRUUkFDRV9FVkVOVF9GTF9URVNUX1NUUl9CSVQsXG4rXHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUF9CSVQsXG4gfTtcbiBcbiAvKlxuQEAgLTM0Nyw2ICszNDgsNyBAQCBlbnVtIHtcbiAgKiAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHNldCB3aGVuIHRoZSBjdXN0b20gZXZlbnQgaGFzIG5vdCBiZWVuIGF0dGFjaGVkXG4gICogICAgICAgICAgICAgICAgICAgdG8gYSB0cmFjZXBvaW50IHlldCwgdGhlbiBpdCBpcyBjbGVhcmVkIHdoZW4gaXQgaXMuXG4gICogIFRFU1RfU1RSICAgICAgLSBUaGUgZXZlbnQgaGFzIGEgXCIlc1wiIHRoYXQgcG9pbnRzIHRvIGEgc3RyaW5nIG91dHNpZGUgdGhlIGV2ZW50XG4rICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zXG4gICovXG4gZW51bSB7XG4gXHRUUkFDRV9FVkVOVF9GTF9DQVBfQU5ZXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0NBUF9BTllfQklUKSxcbkBAIC0zNjAsNiArMzYyLDcgQEAgZW51bSB7XG4gXHRUUkFDRV9FVkVOVF9GTF9GUFJPQkVcdFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCksXG4gXHRUUkFDRV9FVkVOVF9GTF9DVVNUT01cdFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQ1VTVE9NX0JJVCksXG4gXHRUUkFDRV9FVkVOVF9GTF9URVNUX1NUUlx0XHQ9ICgxIFx1MDAzY1x1MDAzYyBUUkFDRV9FVkVOVF9GTF9URVNUX1NUUl9CSVQpLFxuK1x0VFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQX0JJVCksXG4gfTtcbiBcbiAjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMX1VLUFJPQkUgKFRSQUNFX0VWRU5UX0ZMX0tQUk9CRSB8IFRSQUNFX0VWRU5UX0ZMX1VQUk9CRSlcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcbmluZGV4IDFkZWQ4NjljZDYxOWYuLjVjY2Y1YzU0ZTNkMmQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxuQEAgLTcyLDYgKzcyLDggQEAgREVGSU5FX0VWRU5UKGxvY2ssIGxvY2tfcmVsZWFzZSxcbiBcdFRQX0FSR1MobG9jaywgaXApXG4gKTtcbiBcbitUUkFDRV9FVkVOVF9GTEFHUyhsb2NrX3JlbGVhc2UsIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQKTtcbitcbiAjaWZkZWYgQ09ORklHX0xPQ0tfU1RBVFxuIFxuIERFRklORV9FVkVOVChsb2NrLCBsb2NrX2NvbnRlbmRlZCxcbmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMgYi9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNcbmluZGV4IDc1NDk1YTVjMzUwNzkuLmYyNDYwZjNjODYwZTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNcbisrKyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xuQEAgLTI0LDYgKzI0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25hbWVpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9sb2NrZGVwLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvYnBmX3NrX3N0b3JhZ2UuaFx1MDAzZVxuIFxuQEAgLTExMCw2ICsxMTEsNyBAQCBzdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpO1xuICAqL1xuIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuIHtcbitcdGJvb2wgbm9fbG9ja2RlcCA9IGNhbGwtXHUwMDNlZmxhZ3MgXHUwMDI2IFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQO1xuIFx0dW5zaWduZWQgaW50IHJldDtcbiBcbiBcdGNhbnRfc2xlZXAoKTtcbkBAIC0xNDQsOCArMTQ2LDEyIEBAIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuIFx0ICogcmN1X2RlcmVmZXJlbmNlKCkgd2hpY2ggaXMgYWNjZXB0ZWQgcmlzay5cbiBcdCAqL1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuK1x0aWYgKG5vX2xvY2tkZXApXG4rXHRcdGxvY2tkZXBfb2ZmKCk7XG4gXHRyZXQgPSBicGZfcHJvZ19ydW5fYXJyYXkocmN1X2RlcmVmZXJlbmNlKGNhbGwtXHUwMDNlcHJvZ19hcnJheSksXG4gXHRcdFx0XHQgY3R4LCBicGZfcHJvZ19ydW4pO1xuK1x0aWYgKG5vX2xvY2tkZXApXG4rXHRcdGxvY2tkZXBfb24oKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuICBvdXQ6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzoxMi44NjYyMjkzMzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTAwODI0NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgb2YgdGhlIExvY2tkZXAgRGlzYWJsaW5nIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgZnV6emluZyBpdCBpcyBhIHdvcnRod2hpbGUgZWZmb3J0LiBFc3NlbnRpYWxseSwgaXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgLCBhbmQgYXBwbGllcyBpdCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2UgZXZlbnQuIFRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdHJhY2VfY2FsbF9icGZgLCB3aGVyZSBpdCBkaXNhYmxlcyBsb2NrZGVwIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBydW5uaW5nIGlmIHRoaXMgbmV3IGZsYWcgaXMgcHJlc2VudC5cblxuRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogd2UncmUgZGlzYWJsaW5nIGxvY2tkZXAgYXJvdW5kIHRoZSBleGVjdXRpb24gb2YgYGJwZl9wcm9nX3J1bl9hcnJheWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzICpyZWFjaGFibGUqIGJ5IGEgZnV6emVyLiBBbmQgaXQgaXMuIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGF0dGFjaGluZyBhIEJQRiBwcm9ncmFtIHRvIGEgdHJhY2Vwb2ludCDigJMgc3BlY2lmaWNhbGx5IGBsb2NrX3JlbGVhc2VgLCBzaW5jZSB0aGlzIGZsYWcgaXMgc2V0IHRoZXJlLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIHRoZSBjb25kaXRpb25zIEkgbmVlZCB0byByZXByb2R1Y2UgdGhlIHNjZW5hcmlvLlxuXG5TbyBuZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgY2hhbmdlIGhhcHBlbnMgd2l0aGluIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGVuYWJsZWQuIEkgbmVlZCB0byBub3cgY2hlY2sgZWl0aGVyIGBrZXJuZWwvdHJhY2UvTWFrZWZpbGVgIG9yIGBpbml0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRydWUgYW5kIHRvIHNlZSBob3cgdG8gYWN0dWFsbHkgZW5hYmxlIGBCUEZfRVZFTlRTYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjE3Ljc2NzA1NzEyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgxNjIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfRVZFTlRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvTWFrZWZpbGU9MTA5PW9iai0kKENPTkZJR19VU0VSX0VWRU5UUykgKz0gdHJhY2VfZXZlbnRzX3VzZXIub1xcbmtlcm5lbC90cmFjZS9NYWtlZmlsZToxMTA6b2JqLSQoQ09ORklHX0JQRl9FVkVOVFMpICs9IGJwZl90cmFjZS5vXFxua2VybmVsL3RyYWNlL01ha2VmaWxlLTExMS1vYmotJChDT05GSUdfS1BST0JFX0VWRU5UUykgKz0gdHJhY2Vfa3Byb2JlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MTcuODI1ODgxMzIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzOTY4MTA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgRXZlbnQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYEJQRl9FVkVOVFNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluZWQuIE1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgY2FuZGlkYXRlczogdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgYW5kIHRoZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgYGluaXQvS2NvbmZpZ2AgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGl0J3Mgd2hlcmUgY29yZSBzeXN0ZW0gZmVhdHVyZXMgYXJlIG9mdGVuIGNvbmZpZ3VyZWQuIEFsdGVybmF0aXZlbHksIGJlY2F1c2UgQlBGIGlzIGhlYXZpbHkgaW52b2x2ZWQgaW4gdHJhY2luZyBhbmQgaW5zdHJ1bWVudGF0aW9uLCB0aGUgYGtlcm5lbC90cmFjZS9LY29uZmlnYCBmaWxlIGlzIGFub3RoZXIgaGlnaGx5IGxpa2VseSBsb2NhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhvc2UgdHdvIGZpbGVzIOKAkyB0aGF0IHNob3VsZCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MjAuNjY1NTY0NzI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDY0MzYxNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjIzLjIxMjAxNTAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODMyOTA2NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcmVxdWVzdDpcblxuKipEZWNvbnN0cnVjdGluZyBgQlBGX0VWRU5UU2AgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhleSB3YW50IG1lIHRvIGRpc3NlY3QgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfRVZFTlRTYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHRoaW5rIGFib3V0IGl0IGZyb20gYSBzeXN0ZW1zIHBlcnNwZWN0aXZlLCBhcyBJIHdvdWxkIGlmIEkgd2VyZSBhcmNoaXRlY3RpbmcgYSB0cmFjaW5nIGZyYW1ld29yay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgXCJkZXBlbmRlbmNpZXNcIiBhY3R1YWxseSBtZWFucyBpbiB0aGlzIGNvbnRleHQuIElzIGl0IHRoZSB1cHN0cmVhbSBrZXJuZWwgc3Vic3lzdGVtcyB0aGF0IGZlZWQgaW50byB0aGUgYEJQRl9FVkVOVFNgIGluZnJhc3RydWN0dXJlPyBBcmUgd2UgdGFsa2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbnMgb3IgdG9vbHMgdGhhdCAqY29uc3VtZSogdGhlIGV2ZW50cz8gT3IgcGVyaGFwcyBib3RoP1xuXG5JJ2Qgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBCUEYgZXZlbnQtcmVsYXRlZCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMuIEknZCBiZSBzZWFyY2hpbmcgZm9yIGluY2x1ZGVzLCBmdW5jdGlvbiBjYWxscywgYW5kIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRpcmVjdGx5IGludGVyYWN0IHdpdGggYEJQRl9FVkVOVFNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgZGF0YSBvcmlnaW5hdGVzLCB0aGUgcHJvY2Vzc2luZyBzdGVwcyBpdCBnb2VzIHRocm91Z2gsIGFuZCBob3cgaXQgaXMgdWx0aW1hdGVseSBleHBvc2VkLlxuXG5NeSBwcmltYXJ5IGZvY3VzIHdpbGwgYmUgb24gdGhlc2UgYXJlYXM6XG5cbiogICAqKlVwc3RyZWFtIEtlcm5lbCBDb21wb25lbnRzOioqIFdoZXJlIGRvZXMgdGhlIGFjdHVhbCBldmVudCBkYXRhIGNvbWUgZnJvbT8gVHJhY2Vwb2ludHMsIHBlcmYgZXZlbnRzLCBrcHJvYmVzLCB1cHJvYmVzLCBVU0RULCBldGMuPyBIb3cgaXMgdGhlIGRhdGEgc3RydWN0dXJlZCBiZWZvcmUgaXQgZ2V0cyBpbnRvIHRoZSBCUEYgcGlwZWxpbmU/IFdoYXQgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IHNoYXJlZCByZXNvdXJjZXM/XG4qICAgKipCUEYgSGVscGVyIEZ1bmN0aW9uczoqKiBXaGF0IEJQRiBoZWxwZXIgZnVuY3Rpb25zIGFyZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHdvcmtpbmcgd2l0aCBgQlBGX0VWRU5UU2A/IGBicGZfcGVyZl9ldmVudF9yZWFkKClgLCBgYnBmX3RyYWNlX3ByaW50aygpYCBhcmUgZ29vZCBzdGFydGluZyBwb2ludHMuIEhvdyBkbyB0aGV5IGhhbmRsZSBkYXRhIGJ1ZmZlcmluZywgZmlsdGVyaW5nLCBhbmQgZGVsaXZlcnk/XG4qICAgKipEb3duc3RyZWFtIENvbnN1bWVyczoqKiBIb3cgZG8gQlBGIHByb2dyYW1zIHJlYWQgYW5kIGludGVycHJldCB0aGUgZXZlbnRzPyBXaGF0IEJQRiBkYXRhIHN0cnVjdHVyZXMgKGUuZy4sIHJpbmcgYnVmZmVycywgbWFwcykgYXJlIHR5cGljYWxseSB1c2VkIGZvciB0aGlzIHB1cnBvc2U/IElzIHRoZXJlIGEgc3RhbmRhcmQgd2F5IHRvIGZvcm1hdCBvciBzZXJpYWxpemUgdGhlIGV2ZW50IGRhdGE/XG4qICAgKipMaWJicGY6KiogV2hhdCdzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYEJQRl9FVkVOVFNgIGluZnJhc3RydWN0dXJlIGFuZCB0aGUgYGxpYmJwZmAgbGlicmFyeT8gSG93IGRvZXMgYGxpYmJwZmAgZmFjaWxpdGF0ZSB0aGUgbG9hZGluZywgYXR0YWNoaW5nLCBhbmQgaW50ZXJhY3Rpb24gd2l0aCBCUEYgcHJvZ3JhbXM/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYGxpYmJwZmAgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZXZlbnRzP1xuXG5JJ2xsIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbGltaXRhdGlvbnMuIEFyZSB0aGVyZSBhbnkga25vd24gc2NhbGFiaWxpdHkgaXNzdWVzIHdpdGggYEJQRl9FVkVOVFNgIHVuZGVyIGhpZ2ggbG9hZD8gQXJlIHRoZXJlIGFueSBsb2NrIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBJJ2xsIHByb2JhYmx5IGNyb3NzLXJlZmVyZW5jZSBpdCB3aXRoIGFueSBoaXN0b3JpY2FsIGRvY3VtZW50YXRpb24gYW5kIGNvbW1pdHMsIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIHJlYXNvbnMgdGhhdCB3ZW50IGludG8gdGhlIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjI3Ljc5NTMwOTUwOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NTA6XFx0XFx0ICBjb252ZXJ0IHRoZSB0eXBlIG9mIGFuIGV2ZW50IGZpZWxkLiBGb3IgZXhhbXBsZSwgdHVybiBhblxcbiA4NTE6XFx0XFx0ICBhZGRyZXNzIGludG8gYSBzdHJpbmcuXFxuIDg1MjpcXHRcXG4gODUzOlxcdGNvbmZpZyBCUEZfRVZFTlRTXFxuIDg1NDpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuIDg1NTpcXHRcXHRkZXBlbmRzIG9uIChLUFJPQkVfRVZFTlRTIHx8IFVQUk9CRV9FVkVOVFMpIFxcdTAwMjZcXHUwMDI2IFBFUkZfRVZFTlRTXFxuIDg1NjpcXHRcXHRib29sXFxuIDg1NzpcXHRcXHRkZWZhdWx0IHlcXG4gODU4OlxcdFxcdGhlbHBcXG4gODU5OlxcdFxcdCAgVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gYXR0YWNoIEJQRiBwcm9ncmFtcyB0byBrcHJvYmUsIHVwcm9iZSwgYW5kXFxuIDg2MDpcXHRcXHQgIHRyYWNlcG9pbnQgZXZlbnRzLlxcbiA4NjE6XFx0XFxuIDg2MjpcXHRjb25maWcgRFlOQU1JQ19FVkVOVFNcXG4gODYzOlxcdFxcdGRlZl9ib29sIG5cXG4gODY0OlxcdFxcbiA4NjU6XFx0Y29uZmlnIFBST0JFX0VWRU5UU1xcbiA4NjY6XFx0XFx0ZGVmX2Jvb2wgblxcbiA4Njc6XFx0XFxuIDg2ODpcXHRjb25maWcgQlBGX0tQUk9CRV9PVkVSUklERVxcbiA4Njk6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBwcm9ncmFtcyB0byBvdmVycmlkZSBhIGtwcm9iZWQgZnVuY3Rpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjI3Ljc5NTQ0MTA5OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTExMjg4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBCUEYgRXZlbnQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyBgQlBGX0VWRU5UU2AgaGluZ2VzIG9uIGEgZmV3IGtleSBjb21wb25lbnRzLiBTcGVjaWZpY2FsbHksIGBCUEZfU1lTQ0FMTGAsIGFuZCBlaXRoZXIgYEtQUk9CRV9FVkVOVFNgIG9yIGBVUFJPQkVfRVZFTlRTYCAob3IgYm90aCksIHBsdXMgYFBFUkZfRVZFTlRTYC4gVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgaXQgYXBwZWFycywgaXMgdG8gZW5hYmxlIHRoaXMgaWYgYWxsIHRob3NlIHByZXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmllZC4gVGhhdCBtYWtlcyBzZW5zZSwgYSBjbGVhbiBhbmQgbG9naWNhbCBkZXBlbmRlbmN5IHN0cnVjdHVyZS5cblxuTm93LCB0aGUgdXNlIG9mIGBsb2NrZGVwX29mZigpYCBhbmQgYGxvY2tkZXBfb24oKWAgY2F1Z2h0IG15IGV5ZS4gVGhleSBzZWVtIGltcG9ydGFudCBoZXJlLCBzbyBuYXR1cmFsbHksIEkgbmVlZCBgQ09ORklHX0xPQ0tERVBgIHRvIGJlIGVuYWJsZWQgZm9yIHRoZW0gdG8gYWN0dWFsbHkgKmRvKiBhbnl0aGluZyBtZWFuaW5nZnVsLiBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgdGhleeKAmXJlIHN0aWxsIGRlZmluZWQgYXMgZW1wdHkgbWFjcm9zIGlmIGBDT05GSUdfTE9DS0RFUGAgaXMgbm90IHNldCwgdGhvdWdoLiBMZXQgbWUganVzdCBjb25maXJtIHdoZXJlIHRob3NlIGFyZSBkZWZpbmVkLi4uIEFoLCByaWdodCwgdGhleSdyZSBpbiBgaW5jbHVkZS9saW51eC9sb2NrZGVwLmhgLiBPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGhlYWRlciBmaWxlIGFuZCBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kIHRoZWlyIHVzYWdlIGNvbnRleHQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjMxLjc0NjU3Mjk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDUzNTM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgbG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzozMS44MDExMTYxMzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4Mzc0NzQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBFbXB0eSBEZWZpbml0aW9uKipcblxuSG1tLCBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW4gYWN0dWFsLCBkZWZpbmVkIGZ1bmN0aW9uIG9yIG1hY3JvIGFzc29jaWF0ZWQgd2l0aCBgbG9ja2RlcF9vZmZgLiBJdCdzIGEgY29tbW9uIHBhdHRlcm4sIGVzcGVjaWFsbHkgaW4ga2VybmVsIGRldmVsb3BtZW50LiBTb21ldGltZXMsIHRoZXNlIGRlYnVnZ2luZyBvciBjb250cm9sIG1lY2hhbmlzbXMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIG9yIGV2ZW4gZGVmaW5lZCBhcyBcIm5vdGhpbmdcIiB1bmRlciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIGEgc2l0dWF0aW9uIHdoZXJlIGBsb2NrZGVwX29mZmAgbWlnaHQgYmUgZGVmaW5lZCBhcyBhbiBlbXB0eSBtYWNybywgb3IgcGVyaGFwcyBldmVuIGEgZnVuY3Rpb24gdGhhdCdzIGNvbXBsZXRlbHkgc3R1YmJlZCBvdXQuIFRoaXMgbWVhbnMgaXQgZWl0aGVyIGRvZXMgbm90aGluZywgb3IgaXMgZGlzYWJsZWQgYWx0b2dldGhlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGtlcm5lbCBpcyB1c2luZyBpdCB0byBkaXNhYmxlIGxvY2sgZGVwZW5kZW5jeSBjaGVja2luZywgb3IgaWYgaXQgaGFzIGJlZW4gY29tcGlsZWQgd2l0aG91dCBsb2NrIGRlcGVuZGVuY3kgY2hlY2tpbmcsIGFzIHRoaXMgd291bGQgY2hhbmdlIGhvdyB0aGUgbG9jayBkZXBlbmRlbmNpZXMgYXJlIGFuYWx5c2VkLiBJJ20gZ29pbmcgdG8gbG9vayBtb3JlIGNsb3NlbHkgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGltcGxlbWVudGF0aW9uIGF0dGFjaGVkIHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjI1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MzQuOTg0ODY3MTA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMzNjUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgbG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzozNS4wMzYyMTE4MDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEwOTc4ODk1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gbG9ja2RlcC5oKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgbG9ja2RlcCBpbnRlcm5hbHMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHBlcmhhcHMgc29tZSBvZiB0aGUgZnVuZGFtZW50YWwgY29uY2VwdHMgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIGxvY2sgZGVwZW5kZW5jeSB2YWxpZGF0b3IuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGluY2x1ZGUvbGludXgvbG9ja2RlcC5oYCwgYXJvdW5kIGxpbmUgMTA5LiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3BvdCB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgdGhlIGtleSBkZWZpbml0aW9ucyDigJMgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGxvY2tkZXAgc3RydWN0dXJlcyBsaWtlIGBzdHJ1Y3QgbG9ja19jbGFzc2AsIGBzdHJ1Y3QgbG9ja2RlcF9tYXBgIG9yIHBvdGVudGlhbGx5IGV2ZW4gc29tZSBvZiB0aGUgY3J1Y2lhbCBtYWNyb3MgdGhhdCBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBvZiBsb2NrIGFuYWx5c2lzIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhlIGJhc2ljIHN0cnVjdHVyZSBkZWZpbml0aW9ucyDigJMgd2hhdCBkYXRhIGlzIHN0b3JlZCBhYm91dCBsb2Nrcywgd2hpY2ggbGlrZWx5IGluY2x1ZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NrJ3MgY2xhc3MsIHVzYWdlIGNvbnRleHQsIGFuZCBwb3RlbnRpYWxseSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgaXQgZm9ybXMgd2l0aCBvdGhlciBsb2Nrcy4gVGhlIGxpbmUgbnVtYmVyIGlzIGEgc3VnZ2VzdGlvbi4gV2UnbGwgZmluZCBvdXQsIHNob3J0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzo1Ni4xMzQxMDQ2NzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdCNkZWZpbmUgTE9DS0RFUF9SRUNVUlNJT05fQklUU1xcdDE2XFxuIDEwMTpcXHQjZGVmaW5lIExPQ0tERVBfT0ZGXFx0XFx0KDFVIFxcdTAwM2NcXHUwMDNjIExPQ0tERVBfUkVDVVJTSU9OX0JJVFMpXFxuIDEwMjpcXHQjZGVmaW5lIExPQ0tERVBfUkVDVVJTSU9OX01BU0tcXHQoTE9DS0RFUF9PRkYgLSAxKVxcbiAxMDM6XFx0XFxuIDEwNDpcXHQvKlxcbiAxMDU6XFx0ICogbG9ja2RlcF97b2ZmLG9ufSgpIGFyZSBtYWNyb3MgdG8gYXZvaWQgdHJhY2luZyBhbmQga3Byb2Jlczsgbm90IGlubGluZXMgZHVlXFxuIDEwNjpcXHQgKiB0byBoZWFkZXIgZGVwZW5kZW5jaWVzLlxcbiAxMDc6XFx0ICovXFxuIDEwODpcXHRcXG4gMTA5OlxcdCNkZWZpbmUgbG9ja2RlcF9vZmYoKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTEwOlxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDExMTpcXHRcXHRjdXJyZW50LVxcdTAwM2Vsb2NrZGVwX3JlY3Vyc2lvbiArPSBMT0NLREVQX09GRjtcXHRcXFxcXFxuIDExMjpcXHR9IHdoaWxlICgwKVxcbiAxMTM6XFx0XFxuIDExNDpcXHQjZGVmaW5lIGxvY2tkZXBfb24oKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTE1OlxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDExNjpcXHRcXHRjdXJyZW50LVxcdTAwM2Vsb2NrZGVwX3JlY3Vyc2lvbiAtPSBMT0NLREVQX09GRjtcXHRcXFxcXFxuIDExNzpcXHR9IHdoaWxlICgwKVxcbiAxMTg6XFx0XFxuIDExOTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX3JlZ2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuIDEyMDpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX3VucmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcXG4gMTIxOlxcdFxcbiAxMjI6XFx0LypcXG4gMTIzOlxcdCAqIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgc3BlY2lmaWMgbG9ja2luZyB2YXJpYW50cyAoc3BpbmxvY2tzLFxcbiAxMjQ6XFx0ICogcndsb2NrcywgbXV0ZXhlcyBhbmQgcndzZW1zKSB0byBwYXNzIGluaXQvYWNxdWlyZS9yZWxlYXNlIGV2ZW50c1xcbiAxMjU6XFx0ICogdG8gbG9ja2RlcDpcXG4gMTI2OlxcdCAqL1xcbiAxMjc6XFx0XFxuIDEyODpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfbWFwX3R5cGUoc3RydWN0IGxvY2tkZXBfbWFwICpsb2NrLCBjb25zdCBjaGFyICpuYW1lLFxcbiAxMjk6XFx0XFx0c3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXksIGludCBzdWJjbGFzcywgdTggaW5uZXIsIHU4IG91dGVyLCB1OCBsb2NrX3R5cGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzo1Ni4xMzQyMDA2NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NjI0NDgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIExvY2tkZXAgRGVmaW5pdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgYGxvY2tkZXBfb2ZmKClgLi4uIHdoZXJlICppcyogdGhhdCBkZWZpbmVkPyBJIHNlZSB0aGUgcmVmZXJlbmNlIGhlcmUsIHdoaWNoIGlzIGhlbHBmdWwuIE5vdywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIGhvdyBpdCdzICpjb25kaXRpb25hbGx5KiBkZWZpbmVkLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gbG9vayB1cHN0cmVhbSBmb3IgYW55IGAjaWZkZWZgIGRpcmVjdGl2ZXMgdGhhdCBtaWdodCBjb250cm9sIGl0cyBpbmNsdXNpb24uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0byBzZWUgaWYgaXQncyBkZXBlbmRlbnQgb24gYENPTkZJR19MT0NLREVQYC4gSSdsbCBzY2FuIHRoZSBwcmVjZWRpbmcgbGluZXMgcXVpY2tseS4gVGhpcyBpcyBjb21tb24gcHJhY3RpY2UsIEkgd2FudCB0byBzZWUgaWYgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgY29uZGl0aW9uYWwgaW4gYW55IHdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6NTkuMDgwNDQ4MjczWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFJ1bnRpbWUgbG9ja2luZyBjb3JyZWN0bmVzcyB2YWxpZGF0b3JcXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiAgQ29weXJpZ2h0IChDKSAyMDA2LDIwMDcgUmVkIEhhdCwgSW5jLiwgSW5nbyBNb2xuYXIgXFx1MDAzY21pbmdvQHJlZGhhdC5jb21cXHUwMDNlXFxuICAgNjpcXHQgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFJlZCBIYXQsIEluYy4sIFBldGVyIFppamxzdHJhXFxuICAgNzpcXHQgKlxcbiAgIDg6XFx0ICogc2VlIERvY3VtZW50YXRpb24vbG9ja2luZy9sb2NrZGVwLWRlc2lnbi5yc3QgZm9yIG1vcmUgZGV0YWlscy5cXG4gICA5OlxcdCAqL1xcbiAgMTA6XFx0I2lmbmRlZiBfX0xJTlVYX0xPQ0tERVBfSFxcbiAgMTE6XFx0I2RlZmluZSBfX0xJTlVYX0xPQ0tERVBfSFxcbiAgMTI6XFx0XFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbG9ja2RlcF90eXBlcy5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS9wZXJjcHUuaFxcdTAwM2VcXG4gIDE2OlxcdFxcbiAgMTc6XFx0c3RydWN0IHRhc2tfc3RydWN0O1xcbiAgMTg6XFx0XFxuICAxOTpcXHQjaWZkZWYgQ09ORklHX0xPQ0tERVBcXG4gIDIwOlxcdFxcbiAgMjE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbmthZ2UuaFxcdTAwM2VcXG4gIDIyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuICAyMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVidWdfbG9ja3MuaFxcdTAwM2VcXG4gIDI0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGFja3RyYWNlLmhcXHUwMDNlXFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX2NvcHlfbWFwKHN0cnVjdCBsb2NrZGVwX21hcCAqdG8sXFxuICAyNzpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGxvY2tkZXBfbWFwICpmcm9tKVxcbiAgMjg6XFx0e1xcbiAgMjk6XFx0XFx0aW50IGk7XFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCp0byA9ICpmcm9tO1xcbiAgMzI6XFx0XFx0LypcXG4gIDMzOlxcdFxcdCAqIFNpbmNlIHRoZSBjbGFzcyBjYWNoZSBjYW4gYmUgbW9kaWZpZWQgY29uY3VycmVudGx5IHdlIGNvdWxkIG9ic2VydmVcXG4gIDM0OlxcdFxcdCAqIGhhbGYgcG9pbnRlcnMgKDY0Yml0IGFyY2ggdXNpbmcgMzJiaXQgY29weSBpbnNucykuIFRoZXJlZm9yZSBjbGVhclxcbiAgMzU6XFx0XFx0ICogdGhlIGNhY2hlcyBhbmQgdGFrZSB0aGUgcGVyZm9ybWFuY2UgaGl0LlxcbiAgMzY6XFx0XFx0ICpcXG4gIDM3OlxcdFxcdCAqIFhYWCBpdCBkb2Vzbid0IHdvcmsgd2VsbCB3aXRoIGxvY2tkZXBfc2V0X2NsYXNzX2FuZF9zdWJjbGFzcygpLCBzaW5jZVxcbiAgMzg6XFx0XFx0ICogICAgIHRoYXQgcmVsaWVzIG9uIGNhY2hlIGFidXNlLlxcbiAgMzk6XFx0XFx0ICovXFxuICA0MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlJfTE9DS0RFUF9DQUNISU5HX0NMQVNTRVM7IGkrKylcXG4gIDQxOlxcdFxcdFxcdHRvLVxcdTAwM2VjbGFzc19jYWNoZVtpXSA9IE5VTEw7XFxuICA0MjpcXHR9XFxuICA0MzpcXHRcXG4gIDQ0OlxcdC8qXFxuICA0NTpcXHQgKiBFdmVyeSBsb2NrIGhhcyBhIGxpc3Qgb2Ygb3RoZXIgbG9ja3MgdGhhdCB3ZXJlIHRha2VuIGFmdGVyIGl0LlxcbiAgNDY6XFx0ICogV2Ugb25seSBncm93IHRoZSBsaXN0LCBuZXZlciByZW1vdmUgZnJvbSBpdDpcXG4gIDQ3OlxcdCAqL1xcbiAgNDg6XFx0c3RydWN0IGxvY2tfbGlzdCB7XFxuICA0OTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0XFx0ZW50cnk7XFxuICA1MDpcXHRcXHRzdHJ1Y3QgbG9ja19jbGFzc1xcdFxcdCpjbGFzcztcXG4gIDUxOlxcdFxcdHN0cnVjdCBsb2NrX2NsYXNzXFx0XFx0KmxpbmtzX3RvO1xcbiAgNTI6XFx0XFx0Y29uc3Qgc3RydWN0IGxvY2tfdHJhY2VcXHRcXHQqdHJhY2U7XFxuICA1MzpcXHRcXHR1MTZcXHRcXHRcXHRcXHRkaXN0YW5jZTtcXG4gIDU0OlxcdFxcdC8qIGJpdG1hcCBvZiBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzIGZyb20gaGVhZCB0byB0aGlzICovXFxuICA1NTpcXHRcXHR1OFxcdFxcdFxcdFxcdGRlcDtcXG4gIDU2OlxcdFxcdC8qIHVzZWQgYnkgQkZTIHRvIHJlY29yZCB3aGV0aGVyIFxcXCJwcmV2IC1cXHUwMDNlIHRoaXNcXFwiIG9ubHkgaGFzIC0oKlIpLVxcdTAwM2UgKi9cXG4gIDU3OlxcdFxcdHU4XFx0XFx0XFx0XFx0b25seV94cjtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0LypcXG4gIDYwOlxcdFxcdCAqIFRoZSBwYXJlbnQgZmllbGQgaXMgdXNlZCB0byBpbXBsZW1lbnQgYnJlYWR0aC1maXJzdCBzZWFyY2gsIGFuZCB0aGVcXG4gIDYxOlxcdFxcdCAqIGJpdCAwIGlzIHJldXNlZCB0byBpbmRpY2F0ZSBpZiB0aGUgbG9jayBoYXMgYmVlbiBhY2Nlc3NlZCBpbiBCRlMuXFxuICA2MjpcXHRcXHQgKi9cXG4gIDYzOlxcdFxcdHN0cnVjdCBsb2NrX2xpc3RcXHRcXHQqcGFyZW50O1xcbiAgNjQ6XFx0fTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0LyoqXFxuICA2NzpcXHQgKiBzdHJ1Y3QgbG9ja19jaGFpbiAtIGxvY2sgZGVwZW5kZW5jeSBjaGFpbiByZWNvcmRcXG4gIDY4OlxcdCAqXFxuICA2OTpcXHQgKiBAaXJxX2NvbnRleHQ6IHRoZSBzYW1lIGFzIGlycV9jb250ZXh0IGluIGhlbGRfbG9jayBiZWxvd1xcbiAgNzA6XFx0ICogQGRlcHRoOiAgICAgICB0aGUgbnVtYmVyIG9mIGhlbGQgbG9ja3MgaW4gdGhpcyBjaGFpblxcbiAgNzE6XFx0ICogQGJhc2U6ICAgICAgICB0aGUgaW5kZXggaW4gY2hhaW5faGxvY2tzIGZvciB0aGlzIGNoYWluXFxuICA3MjpcXHQgKiBAZW50cnk6ICAgICAgIHRoZSBjb2xsaWRlZCBsb2NrIGNoYWlucyBpbiBsb2NrX2NoYWluIGhhc2ggbGlzdFxcbiAgNzM6XFx0ICogQGNoYWluX2tleTogICB0aGUgaGFzaCBrZXkgb2YgdGhpcyBsb2NrX2NoYWluXFxuICA3NDpcXHQgKi9cXG4gIDc1OlxcdHN0cnVjdCBsb2NrX2NoYWluIHtcXG4gIDc2OlxcdFxcdC8qIHNlZSBCVUlMRF9CVUdfT04oKXMgaW4gYWRkX2NoYWluX2NhY2hlKCkgKi9cXG4gIDc3OlxcdFxcdHVuc2lnbmVkIGludFxcdFxcdFxcdGlycV9jb250ZXh0IDogIDIsXFxuICA3ODpcXHRcXHRcXHRcXHRcXHRcXHRkZXB0aCAgICAgICA6ICA2LFxcbiAgNzk6XFx0XFx0XFx0XFx0XFx0XFx0YmFzZVxcdCAgICA6IDI0O1xcbiAgODA6XFx0XFx0LyogNCBieXRlIGhvbGUgKi9cXG4gIDgxOlxcdFxcdHN0cnVjdCBobGlzdF9ub2RlXFx0XFx0ZW50cnk7XFxuICA4MjpcXHRcXHR1NjRcXHRcXHRcXHRcXHRjaGFpbl9rZXk7XFxuICA4MzpcXHR9O1xcbiAgODQ6XFx0XFxuICA4NTpcXHQvKlxcbiAgODY6XFx0ICogSW5pdGlhbGl6YXRpb24sIHNlbGYtdGVzdCBhbmQgZGVidWdnaW5nLW91dHB1dCBtZXRob2RzOlxcbiAgODc6XFx0ICovXFxuICA4ODpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXQodm9pZCk7XFxuICA4OTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX3Jlc2V0KHZvaWQpO1xcbiAgOTA6XFx0ZXh0ZXJuIHZvaWQgbG9ja2RlcF9yZXNldF9sb2NrKHN0cnVjdCBsb2NrZGVwX21hcCAqbG9jayk7XFxuICA5MTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2ZyZWVfa2V5X3JhbmdlKHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpO1xcbiAgOTI6XFx0ZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCBsb2NrZGVwX3N5c19leGl0KHZvaWQpO1xcbiAgOTM6XFx0ZXh0ZXJuIHZvaWQgbG9ja2RlcF9zZXRfc2VsZnRlc3RfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbiAgOTQ6XFx0XFxuICA5NTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbiAgOTY6XFx0XFxuICA5NzpcXHQvKlxcbiAgOTg6XFx0ICogU3BsaXQgdGhlIHJlY3Vyc2lvbiBjb3VudGVyIGluIHR3byB0byByZWFkaWx5IGRldGVjdCAnb2ZmJyB2cyByZWN1cnNpb24uXFxuICA5OTpcXHQgKi9cXG4gMTAwOlxcdCNkZWZpbmUgTE9DS0RFUF9SRUNVUlNJT05fQklUU1xcdDE2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjU5LjA4MDU5ODQ3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc3NTEzNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqTG9ja2RlcCBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBmb2N1cyBpcyBvbiB0aGlzIHNlY3Rpb24sIHdoaWNoIGlzIGNsZWFybHkgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19MT0NLREVQYC4gT2theSwgdGhhdCdzIGV4cGVjdGVkLiBMb2NrZGVwIGlzIGNyaXRpY2FsIGZvciBkZXRlY3RpbmcgbG9jay1yZWxhdGVkIGJ1Z3MsIHNvIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBpZiBDT05GSUdfTE9DS0RFUCBpc24ndCAqZGVmaW5lZCosIHdoYXQgaGFwcGVucyB0byBgbG9ja2RlcF9vZmYoKWA/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0cyBhYnNlbmNlIGlzIGhhbmRsZWQuIElzIGl0IGRlZmluZWQgYXMgYSBuby1vcD8gRG9lcyBpdCBnZXQgcmVwbGFjZWQgd2l0aCBzb21ldGhpbmcgZWxzZT8gT3IsIGlzIHRoZSBzdXJyb3VuZGluZyBjb2RlIGNvbXBsZXRlbHkgcmVtb3ZlZD8gSXQncyBlc3NlbnRpYWwgdG8gdHJhY2UgdGhpcyBsb2dpYyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcyB3aGVuIGxvY2tkZXAgaXMgZGlzYWJsZWQuIEtub3dpbmcgaG93IGl0J3MgaGFuZGxlZCBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIGFuZCB1bmRlcnN0YW5kaW5nIHBvdGVudGlhbCBsb2NrLXJlbGF0ZWQgaXNzdWVzIGluIGRpZmZlcmVudCBidWlsZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGViYXNlIHRvIGZpbmQgdGhhdCBkZWZpbml0aW9uIChvciBsYWNrIHRoZXJlb2YpIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDowMi41NTgxMjI0OTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMzU2NjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgbG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDowMi44OTE2OTc5NDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTAyMzE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gbG9ja2RlcC5oJ3MgQ29uZGl0aW9uYWwgTG9naWMqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGluY2x1ZGUvbGludXgvbG9ja2RlcC5oYCwgc3BlY2lmaWNhbGx5IHRoZSBgI2lmZGVmIENPTkZJR19MT0NLREVQYCBibG9jay4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzLCBhbmQgcmlnaHQgbm93IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB0aGUgYCNlbHNlYCBicmFuY2gsIHRoZSBvbmUgdGhhdCBkZWZpbmVzIHdoYXQgaGFwcGVucyB3aGVuIGBDT05GSUdfTE9DS0RFUGAgKmlzbid0KiBlbmFibGVkLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlLCAqdW5pbnN0cnVtZW50ZWQqIGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgZGVmaW5lZC4gQSBnb29kIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgYGxvY2tkZXBgLCBvciB0aGUgZWRnZSBjYXNlcyB3aGVuIHlvdSdyZSBydW5uaW5nIHdpdGhvdXQgaXRzIHNhZmV0eSBuZXQuIFdlIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGJhc2VsaW5lIHRoYXQncyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMzMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjA2LjAxMjcyNDcxOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTgzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzcwOlxcdFxcbiAzNzE6XFx0c3RhdGljIGlubGluZSB2b2lkIGxvY2tkZXBfcmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KVxcbiAzNzI6XFx0e1xcbiAzNzM6XFx0fVxcbiAzNzQ6XFx0XFxuIDM3NTpcXHRzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF91bnJlZ2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSlcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdH1cXG4gMzc4OlxcdFxcbiAzNzk6XFx0I2RlZmluZSBsb2NrZGVwX2RlcHRoKHRzaylcXHQoMClcXG4gMzgwOlxcdFxcbiAzODE6XFx0LypcXG4gMzgyOlxcdCAqIER1bW15IGZvcndhcmQgZGVjbGFyYXRpb25zLCBhbGxvdyB1c2VycyB0byB3cml0ZSBsZXNzIGlmZGVmLXkgY29kZVxcbiAzODM6XFx0ICogYW5kIGRlcGVuZCBvbiBkZWFkIGNvZGUgZWxpbWluYXRpb24uXFxuIDM4NDpcXHQgKi9cXG4gMzg1OlxcdGV4dGVybiBpbnQgbG9ja19pc19oZWxkKGNvbnN0IHZvaWQgKik7XFxuIDM4NjpcXHRleHRlcm4gaW50IGxvY2tkZXBfaXNfaGVsZChjb25zdCB2b2lkICopO1xcbiAzODc6XFx0I2RlZmluZSBsb2NrZGVwX2lzX2hlbGRfdHlwZShsLCByKVxcdFxcdCgxKVxcbiAzODg6XFx0XFxuIDM4OTpcXHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0KGMpXFx0XFx0XFx0ZG8geyB9IHdoaWxlICgwKVxcbiAzOTA6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9vbmNlKGMpXFx0XFx0XFx0ZG8geyB9IHdoaWxlICgwKVxcbiAzOTE6XFx0XFxuIDM5MjpcXHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGQobClcXHRcXHRcXHRfX2Fzc3VtZV9jdHhfbG9jayhsKVxcbiAzOTM6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9ub3RfaGVsZChsKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyB9IHdoaWxlICgwKVxcbiAzOTQ6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9oZWxkX3dyaXRlKGwpXFx0XFx0X19hc3N1bWVfY3R4X2xvY2sobClcXG4gMzk1OlxcdCNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZF9yZWFkKGwpXFx0XFx0X19hc3N1bWVfc2hhcmVkX2N0eF9sb2NrKGwpXFxuIDM5NjpcXHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfb25jZShsKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyB9IHdoaWxlICgwKVxcbiAzOTc6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9ub25lX2hlbGRfb25jZSgpXFx0ZG8geyB9IHdoaWxlICgwKVxcbiAzOTg6XFx0XFxuIDM5OTpcXHQjZGVmaW5lIGxvY2tkZXBfcmVjdXJzaW5nKHRzaylcXHRcXHRcXHQoMClcXG4gNDAwOlxcdFxcbiA0MDE6XFx0I2RlZmluZSBOSUxfQ09PS0lFIChzdHJ1Y3QgcGluX2Nvb2tpZSl7IH1cXG4gNDAyOlxcdFxcbiA0MDM6XFx0I2RlZmluZSBsb2NrZGVwX3Bpbl9sb2NrKGwpXFx0XFx0XFx0KHsgc3RydWN0IHBpbl9jb29raWUgY29va2llID0geyB9OyBjb29raWU7IH0pXFxuIDQwNDpcXHQjZGVmaW5lIGxvY2tkZXBfcmVwaW5fbG9jayhsLCBjKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyAodm9pZCkoYyk7IH0gd2hpbGUgKDApXFxuIDQwNTpcXHQjZGVmaW5lIGxvY2tkZXBfdW5waW5fbG9jayhsLCBjKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyAodm9pZCkoYyk7IH0gd2hpbGUgKDApXFxuIDQwNjpcXHRcXG4gNDA3OlxcdCNkZWZpbmUgREVGSU5FX1dBSVRfT1ZFUlJJREVfTUFQKF9uYW1lLCBfd2FpdF90eXBlKVxcdFxcXFxcXG4gNDA4OlxcdFxcdHN0cnVjdCBsb2NrZGVwX21hcCBfX21heWJlX3VudXNlZCBfbmFtZSA9IHt9XFxuIDQwOTpcXHRcXG4gNDEwOlxcdCNlbmRpZiAvKiAhTE9DS0RFUCAqL1xcbiA0MTE6XFx0XFxuIDQxMjpcXHQjaWZkZWYgQ09ORklHX1BST1ZFX0xPQ0tJTkdcXG4gNDEzOlxcdHZvaWQgbG9ja2RlcF9zZXRfbG9ja19jbXBfZm4oc3RydWN0IGxvY2tkZXBfbWFwICosIGxvY2tfY21wX2ZuLCBsb2NrX3ByaW50X2ZuKTtcXG4gNDE0OlxcdFxcbiA0MTU6XFx0I2RlZmluZSBsb2NrX3NldF9jbXBfZm4obG9jaywgLi4uKVxcdGxvY2tkZXBfc2V0X2xvY2tfY21wX2ZuKFxcdTAwMjYobG9jayktXFx1MDAzZWRlcF9tYXAsIF9fVkFfQVJHU19fKVxcbiA0MTY6XFx0I2Vsc2VcXG4gNDE3OlxcdCNkZWZpbmUgbG9ja19zZXRfY21wX2ZuKGxvY2ssIC4uLilcXHRkbyB7IH0gd2hpbGUgKDApXFxuIDQxODpcXHQjZW5kaWZcXG4gNDE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDowNi4wMTI5NDUyODhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTk5NDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWlzc2luZyBQaWVjZSBEZXRlY3RlZDogTG9ja2RlcCBEaXNjcmVwYW5jeSoqXG5cbkhtbSwgc29tZXRoaW5nJ3Mgbm90IHF1aXRlIHJpZ2h0LiBJJ20gcmV2aWV3aW5nIHRoaXMgY29uZGl0aW9uYWwgYnJhbmNoLCBhbmQgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY2lmaWNhbGx5LCBJJ20gbm90IHNlZWluZyB0aGUgZXhwZWN0ZWQgY2FsbCB0byBgbG9ja2RlcF9vZmYoKWAgd2l0aGluIHRoYXQgYCNlbHNlYCBibG9jay4gVGhhdCdzIGEgcmVkIGZsYWcuIFdlIHVzdWFsbHkgbmVlZCB0byBlbnN1cmUgdGhlIGxvY2tkZXAgc2V0dGluZyBpcyBoYW5kbGVkIGNvbnNpc3RlbnRseSBhY3Jvc3MgYm90aCBicmFuY2hlcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIG15IG1lbnRhbCBtb2RlbCBoZXJlLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXAsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nIG9idmlvdXMgb3IgaGF2ZSBtaXNzZWQgc29tZSBkb3duc3RyZWFtIGRlcGVuZGVuY3kgb3IgbWFjcm8gdGhhdCBoaWRlcyBpdC4gR290dGEgdmVyaWZ5IGBsb2NrZGVwX29mZmAgaXNuJ3QgYmVpbmcgaW52b2tlZCBpbXBsaWNpdGx5IHNvbWV3aGVyZSBlbHNlIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZS4gTGV0J3Mgc2VlIHdoYXQgdHVybnMgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0OTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjA5LjEzODk0MzI4MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyMDE4MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9MzIwPXN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaC0zMjMtXFxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmg6MzI0OnN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX29mZih2b2lkKVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTMyNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjA5LjE5NDE1MDAyN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI5NDA0Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZGl0aW9uYWwgRnVuY3Rpb24gRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJIHNlZSB0aGF0IHRoaXMgZnVuY3Rpb24sIHdoYXRldmVyIGl0IGlzLCBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiwgYnV0IG9ubHkgd2l0aGluIHRoZSBgI2Vsc2VgIGJyYW5jaCBvZiBzb21lIHByZXByb2Nlc3NvciBkaXJlY3RpdmUuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIE15IGZpcnN0IGFzc3VtcHRpb24sIGFuZCBJJ2xsIGNvbmZpcm0gdGhpcywgaXMgdGhhdCB0aGUgYENPTkZJR19MT0NLREVQYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBuZWNlc3NhcnkgZm9yIHRoaXMgZnVuY3Rpb24gdG8gYWN0dWFsbHkgKmRvKiBhbnl0aGluZyBtZWFuaW5nZnVsLiBPdGhlcndpc2UsIGl0IHdpbGwgbGlrZWx5IGJlIGNvbXBpbGVkIG91dCwgb3IgcmVzb2x2ZSB0byBzb21lIG51bGwgb3BlcmF0aW9uLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk5vdywgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgdHJhY2VfY2FsbF9icGZgLCBhbmQgdGhhdCByaW5ncyBhIGJlbGwuIGB0cmFjZV9jYWxsX2JwZmAgaXMgdGhhdCBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGF0dGFjaGVkIHRvIGEgdHJhY2Vwb2ludC4gVGhlIHRyYWNlcG9pbnQgYmVpbmcgbW9kaWZpZWQgaXMgYGxvY2tfcmVsZWFzZWAsIGFuZCB0aGF0J3MgZm91bmQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIEknbGwgd2FudCB0byByZXZpZXcgaG93IGBsb2NrX3JlbGVhc2VgIGlzIGRlZmluZWQuIFRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgYGxvY2suaGAgZmlsZSBhbmQgaW52b2x2ZXMgYGxvY2tfcmVsZWFzZWAgbWFrZXMgbWUgYXNzdW1lIHRoYXQgaXQgYWxzbyBtdXN0IGJlIGRlZmluZWQgY29uZGl0aW9uYWxseSB1bmRlciBhbiBgI2lmZGVmIENPTkZJR19MT0NLREVQYCBndWFyZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6MTMuNDIzNTU3NDYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I3VuZGVmIFRSQUNFX1NZU1RFTVxcbiAgIDM6XFx0I2RlZmluZSBUUkFDRV9TWVNURU0gbG9ja1xcbiAgIDQ6XFx0XFxuICAgNTpcXHQjaWYgIWRlZmluZWQoX1RSQUNFX0xPQ0tfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcXG4gICA2OlxcdCNkZWZpbmUgX1RSQUNFX0xPQ0tfSFxcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXFx1MDAzZVxcbiAgIDk6XFx0XFxuICAxMDpcXHQvKiBmbGFncyBmb3IgbG9jazpjb250ZW50aW9uX2JlZ2luICovXFxuICAxMTpcXHQjZGVmaW5lIExDQl9GX1NQSU5cXHQoMVUgXFx1MDAzY1xcdTAwM2MgMClcXG4gIDEyOlxcdCNkZWZpbmUgTENCX0ZfUkVBRFxcdCgxVSBcXHUwMDNjXFx1MDAzYyAxKVxcbiAgMTM6XFx0I2RlZmluZSBMQ0JfRl9XUklURVxcdCgxVSBcXHUwMDNjXFx1MDAzYyAyKVxcbiAgMTQ6XFx0I2RlZmluZSBMQ0JfRl9SVFxcdCgxVSBcXHUwMDNjXFx1MDAzYyAzKVxcbiAgMTU6XFx0I2RlZmluZSBMQ0JfRl9QRVJDUFVcXHQoMVUgXFx1MDAzY1xcdTAwM2MgNClcXG4gIDE2OlxcdCNkZWZpbmUgTENCX0ZfTVVURVhcXHQoMVUgXFx1MDAzY1xcdTAwM2MgNSlcXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFxuICAxOTpcXHQjaWZkZWYgQ09ORklHX0xPQ0tERVBcXG4gIDIwOlxcdFxcbiAgMjE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xvY2tkZXAuaFxcdTAwM2VcXG4gIDIyOlxcdFxcbiAgMjM6XFx0VFJBQ0VfRVZFTlQobG9ja19hY3F1aXJlLFxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRUUF9QUk9UTyhzdHJ1Y3QgbG9ja2RlcF9tYXAgKmxvY2ssIHVuc2lnbmVkIGludCBzdWJjbGFzcyxcXG4gIDI2OlxcdFxcdFxcdGludCB0cnlsb2NrLCBpbnQgcmVhZCwgaW50IGNoZWNrLFxcbiAgMjc6XFx0XFx0XFx0c3RydWN0IGxvY2tkZXBfbWFwICpuZXh0X2xvY2ssIHVuc2lnbmVkIGxvbmcgaXApLFxcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRUUF9BUkdTKGxvY2ssIHN1YmNsYXNzLCB0cnlsb2NrLCByZWFkLCBjaGVjaywgbmV4dF9sb2NrLCBpcCksXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdFRQX1NUUlVDVF9fZW50cnkoXFxuICAzMjpcXHRcXHRcXHRfX2ZpZWxkKHVuc2lnbmVkIGludCwgZmxhZ3MpXFxuICAzMzpcXHRcXHRcXHRfX3N0cmluZyhuYW1lLCBsb2NrLVxcdTAwM2VuYW1lKVxcbiAgMzQ6XFx0XFx0XFx0X19maWVsZCh2b2lkICosIGxvY2tkZXBfYWRkcilcXG4gIDM1OlxcdFxcdCksXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdFRQX2Zhc3RfYXNzaWduKFxcbiAgMzg6XFx0XFx0XFx0X19lbnRyeS1cXHUwMDNlZmxhZ3MgPSAodHJ5bG9jayA/IDEgOiAwKSB8IChyZWFkID8gMiA6IDApO1xcbiAgMzk6XFx0XFx0XFx0X19hc3NpZ25fc3RyKG5hbWUpO1xcbiAgNDA6XFx0XFx0XFx0X19lbnRyeS1cXHUwMDNlbG9ja2RlcF9hZGRyID0gbG9jaztcXG4gIDQxOlxcdFxcdCksXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdFRQX3ByaW50ayhcXFwiJXAgJXMlcyVzXFxcIiwgX19lbnRyeS1cXHUwMDNlbG9ja2RlcF9hZGRyLFxcbiAgNDQ6XFx0XFx0XFx0ICAoX19lbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiAxKSA/IFxcXCJ0cnkgXFxcIiA6IFxcXCJcXFwiLFxcbiAgNDU6XFx0XFx0XFx0ICAoX19lbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiAyKSA/IFxcXCJyZWFkIFxcXCIgOiBcXFwiXFxcIixcXG4gIDQ2OlxcdFxcdFxcdCAgX19nZXRfc3RyKG5hbWUpKVxcbiAgNDc6XFx0KTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0REVDTEFSRV9FVkVOVF9DTEFTUyhsb2NrLFxcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjEzLjQyMzY2NzQ1MloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTI4MDkyNDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBMb2NrZGVwIERpc2FibGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQncyBjbGVhciB0aGF0IGBsb2NrX3JlbGVhc2VgIGlzIGd1YXJkZWQgYnkgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBvYnZpb3VzbHksIGBDT05GSUdfTE9DS0RFUGAgaXMgYSByZXF1aXJlbWVudCBoZXJlLiBBbmQsIGFzIGV4cGVjdGVkLCB3ZSBhbHNvIG5lZWQgYm90aCBgQ09ORklHX0JQRl9FVkVOVFNgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCB0byBiZSBlbmFibGVkLCBiZWNhdXNlIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcy5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IGl0J3MgZGlzYWJsaW5nIGxvY2tkZXAgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGBsb2NrX3JlbGVhc2VgLiBUaGUgaWRlYSBpcyB0byBwcmV2ZW50IHJlY3Vyc2lvbiBvciBsb2NrZGVwIGZhbHNlIHBvc2l0aXZlcy4gTWFrZXMgc2Vuc2U7IGlmIHRoZSBCUEYgcHJvZ3JhbSBkb2VzIHRoaW5ncyB0aGF0IHRyaWdnZXIgbG9ja2RlcCB3aGlsZSB3ZSdyZSAqYWxyZWFkeSogaW5zaWRlIGBsb2NrX3JlbGVhc2VgICh3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGZyb20gbG9ja2RlcCksIHdlJ3JlIGdvaW5nIHRvIGdldCBub2lzZSBvciBldmVuIGNyYXNoZXMuIE5vdywgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdvcnRoIGZ1enppbmc/IFllcywgdGhpcyBpcyBhIGRlZmluaXRlIHllcy4gSXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGNvcmUgQlBGIHRyYWNpbmcgbG9naWMuIElmIGEgQlBGIHByb2dyYW0gaXMgYXR0YWNoZWQgdG8gYGxvY2tfcmVsZWFzZWAsIGl0IHdpbGwgbm93IHJ1biB3aXRoIGxvY2tkZXAgZGlzYWJsZWQuXG5cblNvLCB3aGVyZSBzaG91bGQgSSBkaXJlY3QgbXkgZnV6emluZyBlZmZvcnRzPyBJdCBzZWVtcyBsaWtlIGB0cmFjZV9jYWxsX2JwZmAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQuIEl0J3MgdGhlIHBvaW50IG9mIGVudHJ5IGZvciB0aGlzIHdob2xlIHRoaW5nLiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBgdHJhY2VfY2FsbF9icGZgIGlzIGNhbGxlZCBmcmVxdWVudGx5IGlmIHlvdSd2ZSBnb3QgbWFueSB0cmFjZXBvaW50cyB3aXRoIEJQRiBwcm9ncmFtcyBhdHRhY2hlZC4gQW5kLCBpdCdzIHRoZSBleGFjdCBmdW5jdGlvbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcy5cblxuTGV0IG1lIHRoaW5rIGZvciBhIG1vbWVudC4uLiBpcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24gdG8gY29uc2lkZXI/IEFoLCB5ZXMsIGBicGZfcHJvZ19ydW5fYXJyYXlgIGlzIGNhbGxlZCB3aXRoaW4gYHRyYWNlX2NhbGxfYnBmYC4gQnV0LCBJJ20gbGVhbmluZyB0b3dhcmRzIGZvY3VzaW5nIG9uIGB0cmFjZV9jYWxsX2JwZmAgc2luY2UgaXQgaXMgdGhlIHRvcC1sZXZlbCBpbnRlcmZhY2UuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGB0cmFjZV9jYWxsX2JwZmAgaXMgc3RhdGljIG9yIGlubGluZS4gT2theSwgaXQncyBgdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpYCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gSXQncyBub3Qgc3RhdGljLiBJdCdzIGV4cG9ydGVkLCBvciBhdCBsZWFzdCBnbG9iYWxseSB2aXNpYmxlLlxuXG5Pa2F5LCBJIHRoaW5rIEknbSBoYXBweSB0byBmb2N1cyBvbiBgdHJhY2VfY2FsbF9icGZgIGFzIHRoZSBwcmltYXJ5IGZ1enppbmcgdGFyZ2V0LiBJdCBzZWVtcyBsaWtlIHRoZSBiZXN0IGZvY3VzIHN5bWJvbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDoyMC4zNTE3NjIzMjVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTIyMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYWNlX2NhbGxfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9icGZfdHJhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9OTY9c3RhdGljIHU2NCBicGZfdXByb2JlX211bHRpX2VudHJ5X2lwKHN0cnVjdCBicGZfcnVuX2N0eCAqY3R4KTtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy05OC0vKipcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6OTk6ICogdHJhY2VfY2FsbF9icGYgLSBpbnZva2UgQlBGIHByb2dyYW1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTAwLSAqIEBjYWxsOiB0cmFjZXBvaW50IGV2ZW50XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTExLSAqL1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxMTI6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTExMy17XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTM5LVxcdCAqIElmIGJwZl9wcm9nX2FycmF5X3ZhbGlkKCkgZmV0Y2hlZCBwcm9nX2FycmF5IHdhc1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNDA6XFx0ICogbm9uLU5VTEwsIHdlIGdvIGludG8gdHJhY2VfY2FsbF9icGYoKSBhbmQgZG8gdGhlIGFjdHVhbFxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNDEtXFx0ICogcHJvcGVyIHJjdV9kZXJlZmVyZW5jZSgpIHVuZGVyIFJDVSBsb2NrLlxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2My0vKipcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY0OiAqIHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZSAtIGludm9rZSBCUEYgcHJvZ3JhbSBpbiBmYXVsdGFibGUgY29udGV4dFxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjUtICogQGNhbGw6IHRyYWNlcG9pbnQgZXZlbnRcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjctICpcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY4OiAqIFZhcmlhbnQgb2YgdHJhY2VfY2FsbF9icGYoKSBmb3IgZmF1bHRhYmxlIHRyYWNlcG9pbnRzIChzeXNjYWxsXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2OS0gKiB0cmFjZXBvaW50cykuIFN1cHBvcnRzIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgYnkgdXNpbmcgcmN1X3Rhc2tzX3RyYWNlXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTc4LSAqL1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNzk6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDoyMC40MTIyOTE2NTJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczODA0NTA2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGB0cmFjZV9jYWxsX2JwZmAgc2VlbXMgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlbGV2YW50IHRvIEJQRi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gY29uc2lkZXJpbmcgYWxsIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBJJ2xsIHF1aWNrbHkgY2hlY2sgZm9yIGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBhbmQgYENPTkZJR19MT0NLREVQYCDigJMgdGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cy5cblxuTm93LCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50Li4uIHdoZXJlIGFyZSBpdHMgZGVwZW5kZW5jaWVzPyBBaCwgaXQncyBpbiBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgcmlnaHQuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBgbG9ja2AgdHJhY2Vwb2ludHMgdGhlbXNlbHZlcyBhcmUgZW5hYmxlZCB2aWEgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBrZXJuZWwvdHJhY2UvS2NvbmZpZ2Agb3IgcG9zc2libHkgYGxpYi9LY29uZmlnLmRlYnVnYCB0byBzZWUgaWYgdGhlcmUncyBhIHNwZWNpZmljIG9wdGlvbiByZWxhdGVkIHRvIGVuYWJsaW5nIGxvY2sgdHJhY2Vwb2ludHMgdGhhdCBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0OTMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6MjQuMTUwMzQwMDE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY4NDA5MTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvY2tfcmVsZWFzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzM0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz01OTY9dm9pZCBfX2luaXQgc21wX3NldHVwX3Byb2Nlc3Nvcl9pZCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NldHVwLmMtNjA4LVxcdCAqIHVzaW5nIHBlcmNwdSB2YXJpYWJsZSBlYXJseSwgZm9yIGV4YW1wbGUsIGxvY2tkZXAgd2lsbFxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jOjYwOTpcXHQgKiBhY2Nlc3MgcGVyY3B1IHZhcmlhYmxlIGluc2lkZSBsb2NrX3JlbGVhc2VcXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy02MTAtXFx0ICovXFxuLS1cXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM9MjY3PWFzbWxpbmthZ2Ugdm9pZCBfX2twcm9iZXMgZG9fc3BhcmM2NF9mYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYy00NDAtXFx0aWYgKGZhdWx0IFxcdTAwMjYgVk1fRkFVTFRfQ09NUExFVEVEKVxcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYzo0NDE6XFx0XFx0Z290byBsb2NrX3JlbGVhc2VkO1xcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYy00NDItXFxuLS1cXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDY0LVxcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYzo0NjU6bG9ja19yZWxlYXNlZDpcXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDY2LVxcdG1tX3JzcyA9IGdldF9tbV9yc3MobW0pO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN5c2ZzX29wcyB0aHJlc2hvbGRfb3BzID0ge1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTAzNS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMDM2OnN0YXRpYyB2b2lkIHRocmVzaG9sZF9ibG9ja19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYy0xMDM3LVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jPTEwMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgdGhyZXNob2xkX2t0eXBlID0ge1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTA0MC1cXHQuZGVmYXVsdF9ncm91cHNcXHRcXHQ9IGRlZmF1bHRfZ3JvdXBzLFxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jOjEwNDE6XFx0LnJlbGVhc2VcXHRcXHQ9IHRocmVzaG9sZF9ibG9ja19yZWxlYXNlLFxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwNDItfTtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jPTExNTQ9c3RhdGljIGludCB0aHJlc2hvbGRfY3JlYXRlX2Jhbmsoc3RydWN0IHRocmVzaG9sZF9iYW5rICoqYnAsIHVuc2lnbmVkIGludCBjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYy0xMTk0LVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jOjExOTU6c3RhdGljIHZvaWQgdGhyZXNob2xkX2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTE5Ni17XFxuLS1cXG5kcml2ZXJzL2FjcGkvZG9jay5jPTUwMj1zdGF0aWMgc3NpemVfdCB1bmRvY2tfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYWNwaS9kb2NrLmMtNTEzLVxcdHJldCA9IGhhbmRsZV9lamVjdF9yZXF1ZXN0KGRvY2tfc3RhdGlvbiwgQUNQSV9OT1RJRllfRUpFQ1RfUkVRVUVTVCk7XFxuZHJpdmVycy9hY3BpL2RvY2suYzo1MTQ6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvYWNwaS9kb2NrLmMtNTE1LVxcdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvYWNwaS9zY2FuLmM9NjA9RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9zY2FuX2xvY2tfYWNxdWlyZSk7XFxuZHJpdmVycy9hY3BpL3NjYW4uYy02MS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jOjYyOnZvaWQgYWNwaV9zY2FuX2xvY2tfcmVsZWFzZSh2b2lkKVxcbmRyaXZlcnMvYWNwaS9zY2FuLmMtNjMte1xcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy02NS19XFxuZHJpdmVycy9hY3BpL3NjYW4uYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX3NjYW5fbG9ja19yZWxlYXNlKTtcXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTY3LVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYz0yNDI5PXN0YXRpYyB2b2lkIGFjcGlfc2Nhbl9jbGVhcl9kZXBfZm4odm9pZCAqZGV2LCBhc3luY19jb29raWVfdCBjb29raWUpXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI0MzQtXFx0YWNwaV9idXNfYXR0YWNoKGFkZXYsICh2b2lkICopdHJ1ZSk7XFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyNDM1OlxcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI0MzYtXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTI5MzI9c3RhdGljIHZvaWQgYWNwaV90YWJsZV9ldmVudHNfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yOTM1LVxcdGFjcGlfYnVzX3NjYW4oQUNQSV9ST09UX09CSkVDVCk7XFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyOTM2OlxcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI5MzctXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2xlZXAuYz01Mzk9c3RhdGljIHZvaWQgYWNwaV9wbV9lbmQodm9pZClcXG4tLVxcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTU0MS1cXHRhY3BpX3R1cm5fb2ZmX3VudXNlZF9wb3dlcl9yZXNvdXJjZXMoKTtcXG5kcml2ZXJzL2FjcGkvc2xlZXAuYzo1NDI6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTU0My1cXHQvKlxcbi0tXFxuZHJpdmVycy9hY3BpL3NsZWVwLmM9ODQzPXZvaWQgYWNwaV9zMmlkbGVfZW5kKHZvaWQpXFxuZHJpdmVycy9hY3BpL3NsZWVwLmMtODQ0LXtcXG5kcml2ZXJzL2FjcGkvc2xlZXAuYzo4NDU6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTg0Ni19XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9OTA9RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcik7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkxLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo5MjpzdGF0aWMgdm9pZCBtZW1vcnlfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkzLXtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz02ODI9c3RhdGljIGludCBfX2FkZF9tZW1vcnlfYmxvY2soc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtb3J5KVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY4Ny1cXHRtZW1vcnktXFx1MDAzZWRldi5pZCA9IG1lbW9yeS1cXHUwMDNlc3RhcnRfc2VjdGlvbl9uciAvIHNlY3Rpb25zX3Blcl9ibG9jaztcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6Njg4OlxcdG1lbW9yeS1cXHUwMDNlZGV2LnJlbGVhc2UgPSBtZW1vcnlfYmxvY2tfcmVsZWFzZTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNjg5LVxcdG1lbW9yeS1cXHUwMDNlZGV2Lmdyb3VwcyA9IG1lbW9yeV9tZW1ibGtfYXR0cl9ncm91cHM7XFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM9MzE1PXZvaWQgZG1hX2ZlbmNlX2VuZF9zaWduYWxsaW5nKGJvb2wgY29va2llKVxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMxOS1cXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM6MzIwOlxcdGxvY2tfcmVsZWFzZShcXHUwMDI2ZG1hX2ZlbmNlX2xvY2tkZXBfbWFwLCBfUkVUX0lQXyk7XFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMyMS19XFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM9MzI0PXZvaWQgX19kbWFfZmVuY2VfbWlnaHRfd2FpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMyOS1cXHRpZiAodG1wKVxcbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYzozMzA6XFx0XFx0bG9ja19yZWxlYXNlKFxcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXAsIF9USElTX0lQXyk7XFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMzMS1cXHRsb2NrX21hcF9hY3F1aXJlKFxcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXApO1xcbi0tXFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM9NDIxPXN0YXRpYyBzc2l6ZV90IGJsb2NrX2NlX2NvdW50X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00MjktLyogREVWSUNFIGJsb2NrIGtvYmplY3QgcmVsZWFzZSgpIGZ1bmN0aW9uICovXFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM6NDMwOnN0YXRpYyB2b2lkIGVkYWNfZGV2aWNlX2N0cmxfYmxvY2tfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00MzEte1xcbi0tXFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM9NDgxPXN0YXRpYyBzdHJ1Y3Qga29ial90eXBlIGt0eXBlX2Jsb2NrX2N0cmwgPSB7XFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM6NDgyOlxcdC5yZWxlYXNlID0gZWRhY19kZXZpY2VfY3RybF9ibG9ja19yZWxlYXNlLFxcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTQ4My1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmRldmljZV9ibG9ja19vcHMsXFxuLS1cXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYz01NjI9c3RhdGljIHZvaWQgZWRhY19kZXZpY2VfZGVsZXRlX2Jsb2NrKHN0cnVjdCBlZGFjX2RldmljZV9jdGxfaW5mbyAqZWRhY19kZXYsXFxuLS1cXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy01ODAtXFx0LyogdW5yZWdpc3RlciB0aGlzIGJsb2NrJ3Mga29iamVjdCwgU0VFOlxcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jOjU4MTpcXHQgKlxcdGVkYWNfZGV2aWNlX2N0cmxfYmxvY2tfcmVsZWFzZSgpIGNhbGxiYWNrIG9wZXJhdGlvblxcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTU4Mi1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYz0xMTU9c21jX2NoYW5uZWxfbG9ja19hY3F1aXJlKHN0cnVjdCBzY21pX3NtYyAqc2NtaV9pbmZvLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTEyMy1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc3RydWN0IHNjbWlfc21jICpzY21pX2luZm8pXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTEyNS17XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM9MjIzPXN0YXRpYyBpbnQgc21jX3NlbmRfbWVzc2FnZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTI0Ny1cXHRpZiAocmVzLmEwKSB7XFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jOjI0ODpcXHRcXHRzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc2NtaV9pbmZvKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMjQ5LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYz0yNjQ9c3RhdGljIHZvaWQgc21jX21hcmtfdHhkb25lKHN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8sIGludCByZXQsXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMjY4LVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYzoyNjk6XFx0c21jX2NoYW5uZWxfbG9ja19yZWxlYXNlKHNjbWlfaW5mbyk7XFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTI3MC19XFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYz0xMzE9c3RhdGljIGludCBtbHhiZjJfZ3Bpb19sb2NrX2FjcXVpcmUoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMTU2LSAqL1xcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jOjE1NzpzdGF0aWMgdm9pZCBtbHhiZjJfZ3Bpb19sb2NrX3JlbGVhc2Uoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTE1OC1cXHRfX3JlbGVhc2VzKFxcdTAwMjZncy1cXHUwMDNlY2hpcC5sb2NrKVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM9MTg0PXN0YXRpYyBpbnQgbWx4YmYyX2dwaW9fZGlyZWN0aW9uX2lucHV0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYy0yMDAtXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM6MjAxOlxcdG1seGJmMl9ncGlvX2xvY2tfcmVsZWFzZShncyk7XFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjAyLVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM9MjEwPXN0YXRpYyBpbnQgbWx4YmYyX2dwaW9fZGlyZWN0aW9uX291dHB1dChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjI4LVxcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jOjIyOTpcXHRtbHhiZjJfZ3Bpb19sb2NrX3JlbGVhc2UoZ3MpO1xcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTIzMC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmM9MTEyND12b2lkIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgKml0ZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jLTExMzQtXFx0fVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmM6MTEzNTpcXHRsb2NrX3JlbGVhc2UoXFx1MDAyNmNvbm5lY3Rvcl9saXN0X2l0ZXJfZGVwX21hcCwgX1JFVF9JUF8pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMtMTEzNi19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3Rlc3RzL3R0bV9ib190ZXN0LmM9MTM5PXN0YXRpYyB2b2lkIHR0bV9ib19yZXNlcnZlX2RlYWRsb2NrKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdGVzdHMvdHRtX2JvX3Rlc3QuYy0xNTMtXFx0LyogVGhlIGRlYWRsb2NrIHdpbGwgYmUgY2F1Z2h0IGJ5IFdXIG11dGV4LCBkb24ndCB3YXJuIGFib3V0IGl0ICovXFxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jOjE1NDpcXHRsb2NrX3JlbGVhc2UoXFx1MDAyNmJvMi1cXHUwMDNlYmFzZS5yZXN2LVxcdTAwM2Vsb2NrLmJhc2UuZGVwX21hcCwgMSk7XFxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jLTE1NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jPTEwMD1zdGF0aWMgdm9pZCB4ZV9wbV9ibG9ja19lbmRfc2lnbmFsbGluZyh2b2lkKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jLTEwMS17XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BtLmM6MTAyOlxcdGxvY2tfcmVsZWFzZShcXHUwMDI2eGVfcG1fYmxvY2tfbG9ja2RlcF9tYXAsIF9SRVRfSVBfKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfcG0uYy0xMDMtfVxcbi0tXFxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jPTgxNT1zdGF0aWMgaW50IGRldm1faHdzcGluX2xvY2tfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODI0LVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYzo4MjU6c3RhdGljIHZvaWQgZGV2bV9od3NwaW5fbG9ja19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04MjYte1xcbi0tXFxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jPTg0Mz1pbnQgZGV2bV9od3NwaW5fbG9ja19mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jaylcXG4tLVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NDYtXFxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jOjg0NzpcXHRyZXQgPSBkZXZyZXNfcmVsZWFzZShkZXYsIGRldm1faHdzcGluX2xvY2tfcmVsZWFzZSxcXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODQ4LVxcdFxcdFxcdCAgICAgZGV2bV9od3NwaW5fbG9ja19tYXRjaCwgaHdsb2NrKTtcXG4tLVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYz04NzA9c3RydWN0IGh3c3BpbmxvY2sgKmRldm1faHdzcGluX2xvY2tfcmVxdWVzdF9zcGVjaWZpYyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODc0LVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYzo4NzU6XFx0cHRyID0gZGV2cmVzX2FsbG9jKGRldm1faHdzcGluX2xvY2tfcmVsZWFzZSwgc2l6ZW9mKCpwdHIpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODc2LVxcdGlmICghcHRyKVxcbi0tXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtOTctXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6OTg6c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTk5LXtcXG4tLVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jPTEyMj1zdGF0aWMgdm9pZCBpaW9fYnVmZmVyX2Jsb2NrX3B1dChzdHJ1Y3QgaWlvX2RtYV9idWZmZXJfYmxvY2sgKmJsb2NrKVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTEyMy17XFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6MTI0OlxcdGtyZWZfcHV0KFxcdTAwMjZibG9jay1cXHUwMDNla3JlZiwgaWlvX2J1ZmZlcl9ibG9ja19yZWxlYXNlKTtcXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xMjUtfVxcbi0tXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTM0PXN0YXRpYyB2b2lkIGlpb19kbWFfYnVmZmVyX2NsZWFudXBfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0Mi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYmxvY2ssIF9ibG9jaywgXFx1MDAyNmJsb2NrX2xpc3QsIGhlYWQpXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6MTQzOlxcdFxcdGlpb19idWZmZXJfYmxvY2tfcmVsZWFzZShcXHUwMDI2YmxvY2stXFx1MDAzZWtyZWYpO1xcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0NC19XFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTQ1PXN0YXRpYyBERUNMQVJFX1dPUksoaWlvX2RtYV9idWZmZXJfY2xlYW51cF93b3JrLCBpaW9fZG1hX2J1ZmZlcl9jbGVhbnVwX3dvcmtlcik7XFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTQ2LVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jOjE0NzpzdGF0aWMgdm9pZCBpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2VfYXRvbWljKHN0cnVjdCBrcmVmICprcmVmKVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0OC17XFxuLS1cXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYz0xNjI9c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19wdXRfYXRvbWljKHN0cnVjdCBpaW9fZG1hX2J1ZmZlcl9ibG9jayAqYmxvY2spXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTYzLXtcXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYzoxNjQ6XFx0a3JlZl9wdXQoXFx1MDAyNmJsb2NrLVxcdTAwM2VrcmVmLCBpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2VfYXRvbWljKTtcXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xNjUtfVxcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYz0yNTM9c3RhdGljIGludCBtdGRibG9ja19vcGVuKHN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICptYmQpXFxuLS1cXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4MS1cXG5kcml2ZXJzL210ZC9tdGRibG9jay5jOjI4MjpzdGF0aWMgdm9pZCBtdGRibG9ja19yZWxlYXNlKHN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICptYmQpXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0yODMte1xcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0yODUtXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYzoyODY6XFx0cHJfZGVidWcoXFxcIm10ZGJsb2NrX3JlbGVhc2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYz0zNDI9c3RhdGljIHN0cnVjdCBtdGRfYmxrdHJhbnNfb3BzIG10ZGJsb2NrX3RyID0ge1xcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0zNDgtXFx0LmZsdXNoXFx0XFx0PSBtdGRibG9ja19mbHVzaCxcXG5kcml2ZXJzL210ZC9tdGRibG9jay5jOjM0OTpcXHQucmVsZWFzZVxcdD0gbXRkYmxvY2tfcmVsZWFzZSxcXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTM1MC1cXHQucmVhZHNlY3RcXHQ9IG10ZGJsb2NrX3JlYWRzZWN0LFxcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmM9MjMwPXN0YXRpYyBpbnQgdWJpYmxvY2tfb3BlbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgYmxrX21vZGVfdCBtb2RlKVxcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmMtMjcxLVxcbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jOjI3MjpzdGF0aWMgdm9pZCB1YmlibG9ja19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpnZClcXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yNzMte1xcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmM9Mjk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgdWJpYmxvY2tfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmMtMjk3LVxcdC5vcGVuID0gdWJpYmxvY2tfb3BlbixcXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYzoyOTg6XFx0LnJlbGVhc2UgPSB1YmlibG9ja19yZWxlYXNlLFxcbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jLTI5OS1cXHQuZ2V0Z2VvXFx0PSB1YmlibG9ja19nZXRnZW8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYz0xNDE9cHJlc3RlcmFfY291bnRlcl9ibG9ja19nZXQoc3RydWN0IHByZXN0ZXJhX2NvdW50ZXIgKmNvdW50ZXIsIHUzMiBjbGllbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYy0xOTEtZXJyX3N0YXRzOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jOjE5MjpcXHRwcmVzdGVyYV9od19jb3VudGVyX2Jsb2NrX3JlbGVhc2UoY291bnRlci1cXHUwMDNlc3csIGJsb2NrLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9jb3VudGVyLmMtMTkzLWVycl9ibG9jazpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jPTE5OD1zdGF0aWMgdm9pZCBwcmVzdGVyYV9jb3VudGVyX2Jsb2NrX3B1dChzdHJ1Y3QgcHJlc3RlcmFfY291bnRlciAqY291bnRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jLTIxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYzoyMTg6XFx0cHJlc3RlcmFfaHdfY291bnRlcl9ibG9ja19yZWxlYXNlKGNvdW50ZXItXFx1MDAzZXN3LCBibG9jay1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jLTIxOS1cXHRpZHJfZGVzdHJveShcXHUwMDI2YmxvY2stXFx1MDAzZWNvdW50ZXJfaWRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jPTc5PXByZXN0ZXJhX2Zsb3dfYmxvY2tfY3JlYXRlKHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmMtMTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jOjEwMTpzdGF0aWMgdm9pZCBwcmVzdGVyYV9mbG93X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2Zsb3cuYy0xMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmM9MTczPXByZXN0ZXJhX2Zsb3dfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmMtMTg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdywgYmxvY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmM6MTkwOlxcdFxcdFxcdFxcdFxcdCAgICAgICBwcmVzdGVyYV9mbG93X2Jsb2NrX3JlbGVhc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTE5MS1cXHRcXHRpZiAoSVNfRVJSKGJsb2NrX2NiKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jPTIzNDA9aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jLTIzNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jOjIzNjI6aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2h3LmMtMjM2My1cXHRcXHRcXHRcXHQgICAgICB1MzIgYmxvY2tfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2h3Lmg9MjM5PWludCBwcmVzdGVyYV9od19jb3VudGVyX2Jsb2NrX2dldChzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDEtXFx0XFx0XFx0XFx0ICB1MzIgKm51bV9jb3VudGVycyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5oOjI0MjppbnQgcHJlc3RlcmFfaHdfY291bnRlcl9ibG9ja19yZWxlYXNlKHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDMtXFx0XFx0XFx0XFx0ICAgICAgdTMyIGJsb2NrX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0xNzQ9c3RhdGljIGludCBtbHhzd19zcF9mbG93X2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jLTE5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93LmM6MTkyOnN0YXRpYyB2b2lkIG1seHN3X3NwX3RjX2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93LmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0yMDE9c3RhdGljIGludCBtbHhzd19zcF9zZXR1cF90Y19ibG9ja19iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jLTIxOC1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWx4c3dfc3AsIGZsb3dfYmxvY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jOjIxOTpcXHRcXHRcXHRcXHRcXHQgICAgICAgbWx4c3dfc3BfdGNfYmxvY2tfcmVsZWFzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jLTIyMC1cXHRcXHRpZiAoSVNfRVJSKGJsb2NrX2NiKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTEzPW1seHN3X3NwX3FldmVudF9ibG9ja19kZXN0cm95KHN0cnVjdCBtbHhzd19zcF9xZXZlbnRfYmxvY2sgKnFldmVudF9ibG9jaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjExOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jOjIxMjA6c3RhdGljIHZvaWQgbWx4c3dfc3BfcWV2ZW50X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jLTIxMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTY5PW1seHN3X3NwX3NldHVwX3RjX2Jsb2NrX3FldmVudF9iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYy0yMTg4LVxcdFxcdGJsb2NrX2NiID0gZmxvd19ibG9ja19jYl9hbGxvYyhtbHhzd19zcF9xZXZlbnRfYmxvY2tfY2IsIG1seHN3X3NwLCBxZXZlbnRfYmxvY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYzoyMTg5OlxcdFxcdFxcdFxcdFxcdCAgICAgICBtbHhzd19zcF9xZXZlbnRfYmxvY2tfcmVsZWFzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYy0yMTkwLVxcdFxcdGlmIChJU19FUlIoYmxvY2tfY2IpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MTYwPWludCBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTk3OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNzE9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTA6XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwNzpcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzA4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTYtXFx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzE3OlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MzIyPXN0YXRpYyBpbnQgbGFuNzQzeF9oc19vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NDpcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzYzOlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3MS1cXHRsYW43NDN4X2hzX290cF9wb3dlcl9kb3duKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzI6XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz01MDE9c3RhdGljIGludCBsYW43NDN4X2hzX2VlcHJvbV9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE1LVxcdHJldHZhbCA9IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUxNjpcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE3LVxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzMC1cXHRcXHRpZiAocmV0dmFsIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MzE6XFx0XFx0XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzMi1cXHRcXHRcXHRyZXR1cm4gcmV0dmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTM3OlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NTQ2PXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjAtXFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTYxOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgwLVxcdFxcdHJldHZhbCA9IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU4MTpcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgyLVxcdFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM3PXN0YXRpYyB2b2lkIHBjaTExeDF4X3N0cmFwX2dldF9zdGF0dXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01My1cXHRjZmdfbG9hZCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRVRIX1NZU19DT05GSUdfTE9BRF9TVEFSVEVEX1JFRyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU0OlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NS1cXHRod19jZmcgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEhXX0NGRyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg9MTIwOD1pbnQgbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTE2IHRpbWVvdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDoxMjA5OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTEyMTAtdm9pZCBsYW43NDN4X21hY19mbG93X2N0cmxfc2V0X2VuYWJsZXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmM9MTAyNz1pbnQgYWNwaXBocF9kaXNhYmxlX3Nsb3Qoc3RydWN0IGFjcGlwaHBfc2xvdCAqc2xvdClcXG4tLVxcbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMtMTAzOC1cXHRwY2lfdW5sb2NrX3Jlc2Nhbl9yZW1vdmUoKTtcXG5kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jOjEwMzk6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMtMTA0MC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTg5PXN0YXRpYyBzdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyBwdHBfY2xvY2tfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjAxLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjIwMjpzdGF0aWMgdm9pZCBwdHBfY2xvY2tfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjAzLXtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTMxNj1zdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDM0LVxcdHB0cC1cXHUwMDNlZGV2Lmdyb3VwcyA9IHB0cC1cXHUwMDNlcGluX2F0dHJfZ3JvdXBzO1xcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjQzNTpcXHRwdHAtXFx1MDAzZWRldi5yZWxlYXNlID0gcHRwX2Nsb2NrX3JlbGVhc2U7XFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDM2LVxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2cHRwLVxcdTAwM2VkZXYsIHB0cCk7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz00OTc9aW50IHB0cF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cClcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTUyNi1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzo1Mjc6XFx0LyogVGhlIGZpbmFsIHB1dCwgbm9ybWFsbHkgaGVyZSwgd2lsbCBpbnZva2UgcHRwX2Nsb2NrX3JlbGVhc2UoKS4gKi9cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy01MjgtXFx0cHV0X2RldmljZShcXHUwMDI2cHRwLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3NyLmM9NDk1PXN0YXRpYyBpbnQgc3JfYmxvY2tfb3BlbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgYmxrX21vZGVfdCBtb2RlKVxcbi0tXFxuZHJpdmVycy9zY3NpL3NyLmMtNTIwLVxcbmRyaXZlcnMvc2NzaS9zci5jOjUyMTpzdGF0aWMgdm9pZCBzcl9ibG9ja19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbmRyaXZlcnMvc2NzaS9zci5jLTUyMi17XFxuLS1cXG5kcml2ZXJzL3Njc2kvc3IuYz01ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBzcl9iZG9wcyA9XFxuLS1cXG5kcml2ZXJzL3Njc2kvc3IuYy01OTItXFx0Lm9wZW5cXHRcXHQ9IHNyX2Jsb2NrX29wZW4sXFxuZHJpdmVycy9zY3NpL3NyLmM6NTkzOlxcdC5yZWxlYXNlXFx0PSBzcl9ibG9ja19yZWxlYXNlLFxcbmRyaXZlcnMvc2NzaS9zci5jLTU5NC1cXHQuaW9jdGxcXHRcXHQ9IHNyX2Jsb2NrX2lvY3RsLFxcbi0tXFxuZnMvYWZzL2Zsb2NrLmM9MjgxPXZvaWQgYWZzX2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5mcy9hZnMvZmxvY2suYy0zMDMtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgdm5vZGUtXFx1MDAzZWxvY2tfc3RhdGUgIT0gQUZTX1ZOT0RFX0xPQ0tfREVMRVRFRCkge1xcbmZzL2Fmcy9mbG9jay5jOjMwNDpcXHRcXHRcXHR0cmFjZV9hZnNfZmxvY2tfZXYodm5vZGUsIE5VTEwsIGFmc19mbG9ja19yZWxlYXNlX2ZhaWwsXFxuZnMvYWZzL2Zsb2NrLmMtMzA1LVxcdFxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYz0zNzk9c3RhdGljIHZvaWQgaHVnZXRsYl91bm1hcF9maWxlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYy00NDAtXFx0XFx0XFx0dXBfd3JpdGUoXFx1MDAyNnZtYV9sb2NrLVxcdTAwM2Vyd19zZW1hKTtcXG5mcy9odWdldGxiZnMvaW5vZGUuYzo0NDE6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZtYV9sb2NrLVxcdTAwM2VyZWZzLCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2UpO1xcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTQ0Mi1cXHRcXHRcXHRnb3RvIHJldHJ5O1xcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU0LVxcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jOjQ1NTpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dm1hX2xvY2stXFx1MDAzZXJlZnMsIGh1Z2V0bGJfdm1hX2xvY2tfcmVsZWFzZSk7XFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU2LVxcdFxcdGh1Z2V0bGJfdm1hX3VubG9ja193cml0ZSh2bWEpO1xcbi0tXFxuZnMvbmZzL25mczRwcm9jLmM9NzM0Mz1zdGF0aWMgdm9pZCBuZnM0X2xvY2tfZG9uZShzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2ssIHZvaWQgKmNhbGxkYXRhKVxcbi0tXFxuZnMvbmZzL25mczRwcm9jLmMtNzM5MC1cXG5mcy9uZnMvbmZzNHByb2MuYzo3MzkxOnN0YXRpYyB2b2lkIG5mczRfbG9ja19yZWxlYXNlKHZvaWQgKmNhbGxkYXRhKVxcbmZzL25mcy9uZnM0cHJvYy5jLTczOTIte1xcbi0tXFxuZnMvbmZzL25mczRwcm9jLmM9NzQxMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJwY19jYWxsX29wcyBuZnM0X2xvY2tfb3BzID0ge1xcbi0tXFxuZnMvbmZzL25mczRwcm9jLmMtNzQxMi1cXHQucnBjX2NhbGxfZG9uZSA9IG5mczRfbG9ja19kb25lLFxcbmZzL25mcy9uZnM0cHJvYy5jOjc0MTM6XFx0LnJwY19yZWxlYXNlID0gbmZzNF9sb2NrX3JlbGVhc2UsXFxuZnMvbmZzL25mczRwcm9jLmMtNzQxNC19O1xcbi0tXFxuZnMvbmZzZC9uZnM0cHJvYy5jPTM1OTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnNkNF9vcGVyYXRpb24gbmZzZDRfb3BzW10gPSB7XFxuLS1cXG5mcy9uZnNkL25mczRwcm9jLmMtMzY0Ni1cXHRcXHQub3BfZnVuYyA9IG5mc2Q0X2xvY2ssXFxuZnMvbmZzZC9uZnM0cHJvYy5jOjM2NDc6XFx0XFx0Lm9wX3JlbGVhc2UgPSBuZnNkNF9sb2NrX3JlbGVhc2UsXFxuZnMvbmZzZC9uZnM0cHJvYy5jLTM2NDgtXFx0XFx0Lm9wX2ZsYWdzID0gT1BfTU9ESUZJRVNfU09NRVRISU5HIHxcXG4tLVxcbmZzL25mc2QvbmZzNHN0YXRlLmM9Mzg1PXN0YXRpYyB2b2lkXFxuZnMvbmZzZC9uZnM0c3RhdGUuYzozODY6bmZzZDRfY2Jfbm90aWZ5X2xvY2tfcmVsZWFzZShzdHJ1Y3QgbmZzZDRfY2FsbGJhY2sgKmNiKVxcbmZzL25mc2QvbmZzNHN0YXRlLmMtMzg3LXtcXG4tLVxcbmZzL25mc2QvbmZzNHN0YXRlLmM9Mzk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZzZDRfY2FsbGJhY2tfb3BzIG5mc2Q0X2NiX25vdGlmeV9sb2NrX29wcyA9IHtcXG4tLVxcbmZzL25mc2QvbmZzNHN0YXRlLmMtMzk2LVxcdC5kb25lXFx0XFx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19kb25lLFxcbmZzL25mc2QvbmZzNHN0YXRlLmM6Mzk3OlxcdC5yZWxlYXNlXFx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19yZWxlYXNlLFxcbmZzL25mc2QvbmZzNHN0YXRlLmMtMzk4LVxcdC5vcGNvZGVcXHRcXHQ9IE9QX0NCX05PVElGWV9MT0NLLFxcbi0tXFxuZnMvbmZzZC9uZnM0c3RhdGUuYz04NDI4PW5mc2Q0X2xvY2soc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IG5mc2Q0X2NvbXBvdW5kX3N0YXRlICpjc3RhdGUsXFxuLS1cXG5mcy9uZnNkL25mczRzdGF0ZS5jLTg2NTItXFxuZnMvbmZzZC9uZnM0c3RhdGUuYzo4NjUzOnZvaWQgbmZzZDRfbG9ja19yZWxlYXNlKHVuaW9uIG5mc2Q0X29wX3UgKnUpXFxuZnMvbmZzZC9uZnM0c3RhdGUuYy04NjU0LXtcXG4tLVxcbmZzL25mc2QveGRyNC5oPTEwMDg9ZXh0ZXJuIF9fYmUzMiBuZnNkNF9sb2NrKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBuZnNkNF9jb21wb3VuZF9zdGF0ZSAqLFxcbmZzL25mc2QveGRyNC5oLTEwMDktXFx0XFx0dW5pb24gbmZzZDRfb3BfdSAqdSk7XFxuZnMvbmZzZC94ZHI0Lmg6MTAxMDpleHRlcm4gdm9pZCBuZnNkNF9sb2NrX3JlbGVhc2UodW5pb24gbmZzZDRfb3BfdSAqdSk7XFxuZnMvbmZzZC94ZHI0LmgtMTAxMS1leHRlcm4gX19iZTMyIG5mc2Q0X2xvY2t0KHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBuZnNkNF9jb21wb3VuZF9zdGF0ZSAqLFxcbi0tXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYz00Nj1zdGF0aWMgdm9pZCBkbG1faW5pdF9sb2NrKHN0cnVjdCBkbG1fbG9jayAqbmV3bG9jaywgaW50IHR5cGUsXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy00Ny1cXHRcXHRcXHQgIHU4IG5vZGUsIHU2NCBjb29raWUpO1xcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmM6NDg6c3RhdGljIHZvaWQgZGxtX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy00OS1zdGF0aWMgdm9pZCBkbG1fbG9ja19kZXRhY2hfbG9ja3JlcyhzdHJ1Y3QgZGxtX2xvY2sgKmxvY2spO1xcbi0tXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYz0zMjk9dm9pZCBkbG1fbG9ja19wdXQoc3RydWN0IGRsbV9sb2NrICpsb2NrKVxcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmMtMzMwLXtcXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jOjMzMTpcXHRrcmVmX3B1dChcXHUwMDI2bG9jay1cXHUwMDNlbG9ja19yZWZzLCBkbG1fbG9ja19yZWxlYXNlKTtcXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzMi19XFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy0zMzMtXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYzozMzQ6c3RhdGljIHZvaWQgZGxtX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzNS17XFxuLS1cXG5mcy9yZXNjdHJsL2ludGVybmFsLmg9NDgwPWludCByZHRfcHNldWRvX2xvY2tfaW5pdCh2b2lkKTtcXG5mcy9yZXNjdHJsL2ludGVybmFsLmgtNDgxLVxcbmZzL3Jlc2N0cmwvaW50ZXJuYWwuaDo0ODI6dm9pZCByZHRfcHNldWRvX2xvY2tfcmVsZWFzZSh2b2lkKTtcXG5mcy9yZXNjdHJsL2ludGVybmFsLmgtNDgzLVxcbi0tXFxuZnMvcmVzY3RybC9pbnRlcm5hbC5oPTUwOT1zdGF0aWMgaW5saW5lIGludCByZHRfcHNldWRvX2xvY2tfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9XFxuZnMvcmVzY3RybC9pbnRlcm5hbC5oOjUxMDpzdGF0aWMgaW5saW5lIHZvaWQgcmR0X3BzZXVkb19sb2NrX3JlbGVhc2Uodm9pZCkgeyB9XFxuZnMvcmVzY3RybC9pbnRlcm5hbC5oLTUxMS1zdGF0aWMgaW5saW5lIGludCByZHRncm91cF9wc2V1ZG9fbG9ja19jcmVhdGUoc3RydWN0IHJkdGdyb3VwICpyZHRncnApXFxuLS1cXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmM9MTA3NT1pbnQgcmR0X3BzZXVkb19sb2NrX2luaXQodm9pZClcXG4tLVxcbmZzL3Jlc2N0cmwvcHNldWRvX2xvY2suYy0xMDkzLVxcbmZzL3Jlc2N0cmwvcHNldWRvX2xvY2suYzoxMDk0OnZvaWQgcmR0X3BzZXVkb19sb2NrX3JlbGVhc2Uodm9pZClcXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmMtMTA5NS17XFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM9MjgwMz1zdGF0aWMgaW50IHJkdF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMjkwMy1vdXRfcHNsOlxcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzoyOTA0OlxcdHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKCk7XFxuZnMvcmVzY3RybC9yZHRncm91cC5jLTI5MDUtb3V0X21vbmRhdGE6XFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM9MzE4MT1zdGF0aWMgdm9pZCByZXNjdHJsX2ZzX3RlYXJkb3duKHZvaWQpXFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMzE5MS1cXHRtb25fcHV0X2tuX3ByaXYoKTtcXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM6MzE5MjpcXHRyZHRfcHNldWRvX2xvY2tfcmVsZWFzZSgpO1xcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTkzLVxcdHJkdGdyb3VwX2RlZmF1bHQubW9kZSA9IFJEVF9NT0RFX1NIQVJFQUJMRTtcXG4tLVxcbmluY2x1ZGUvYWNwaS9hY3BpX2J1cy5oPTY3ND12b2lkIGFjcGlfc2Nhbl9sb2NrX2FjcXVpcmUodm9pZCk7XFxuaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmg6Njc1OnZvaWQgYWNwaV9zY2FuX2xvY2tfcmVsZWFzZSh2b2lkKTtcXG5pbmNsdWRlL2FjcGkvYWNwaV9idXMuaC02NzYtdm9pZCBhY3BpX2xvY2tfaHBfY29udGV4dCh2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI2OT12b2lkIGh1Z2V0bGJfdm1hX2Fzc2VydF9sb2NrZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI3MDp2b2lkIGh1Z2V0bGJfdm1hX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjcxLWxvbmcgaHVnZXRsYl9jaGFuZ2VfcHJvdGVjdGlvbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDoyNi4wMTg3NTQ5MDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4MDMxMjQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQga2VybmVsIHRhc2s6XG5cbioqVHJhY2luZyBMb2NrIEJlaGF2aW9yOiBBIEtlcm5lbCBEaXZlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSB0aGlua2luZywgXCJXaGVyZSB3b3VsZCB0aGUgbG9jayB0cmFjZXBvaW50cyBsaWtlbHkgYmUgZGVmaW5lZD9cIiBNeSBndXQgdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZvciB0cmFjZXBvaW50cyByZWxhdGVkIHRvIGxvY2tpbmcgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgaW4gdGhlIGBrZXJuZWwvdHJhY2UvYCBkaXJlY3RvcnkuIEdpdmVuIHRoYXQsIGxldCdzIHplcm8gaW4gb24gYEtjb25maWdgIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gSXQncyB0aGUgc3RhbmRhcmQgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgaXQncyBwcmFjdGljYWxseSBndWFyYW50ZWVkIHRvIGxpc3QgYXZhaWxhYmxlIGZlYXR1cmVzLCBhbmQgb2Z0ZW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcmVsYXRlZCB0byBsb2NrIHRyYWNpbmcuIFRoaXMgaXMgd2hlcmUgdGhlIGh1bnQgYmVnaW5zLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZCBhbmQgd2hhdCdzIG5vdCBpbiB0ZXJtcyBvZiB0cmFjaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI5MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjI5LjA5OTA2OTg3OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NTQ3NzAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTE9DS19TVEFUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0xNDk2PWNvbmZpZyBQUk9WRV9SQVdfTE9DS19ORVNUSU5HXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTA0LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE1MDU6Y29uZmlnIExPQ0tfU1RBVFxcbmxpYi9LY29uZmlnLmRlYnVnLTE1MDYtXFx0Ym9vbCBcXFwiTG9jayB1c2FnZSBzdGF0aXN0aWNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDozMC43ODQ1NTIwMDNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI0OTczMDQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTG9ja2RlcCBEaXNhYmxpbmcgUGF0Y2ggZm9yIEJQRiBUcmFjZXBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaXMgZGVmaW5lZCB3aXRoaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAgYW5kIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBoYXZpbmcgYENPTkZJR19MT0NLREVQYCBlbmFibGVkIGlzIGVzc2VudGlhbCBmb3IgdGhlIHRyYWNlcG9pbnQgZGVmaW5pdGlvbiBpdHNlbGYuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhyZWUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfTE9DS0RFUGAuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIHdpdGhpbiBgdHJhY2VfY2FsbF9icGZgIGluIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlICpvbmx5KiBmdW5jdGlvbiBpbXBhY3RlZCBieSB0aGlzIHBhdGNoLiBZZXMsIGl0J3MganVzdCBgdHJhY2VfY2FsbF9icGZgLiBUaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oYCBhbmQgYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAsIGFkZGluZyB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnLiBJIGhhdmUgdG8gY2hlY2sgZm9yIGFueSBsb2NrZGVwIHVzYWdlIGluIEJQRi5cblxuUmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgY29uZGl0aW9uYWwgYGxvY2tkZXBfb2ZmKClgIGFuZCBgbG9ja2RlcF9vbigpYCBhcm91bmQgdGhlIGBicGZfcHJvZ19ydW5fYXJyYXlgIGNhbGwgd2l0aGluIGB0cmFjZV9jYWxsX2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgZXhwbGljaXRseSBkaXNhYmxlcyBsb2NrZGVwICpkdXJpbmcqIHRoZSBleGVjdXRpb24gb2YgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50LiBUaGlzIGlzICpkZWZpbml0ZWx5KiBhbiBhcmVhIHRoYXQgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmchIFRoZXJlIGFyZSBkZWZpbml0ZSBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB0byB0aGlzLlxuXG5JJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnM6IGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBhbmQgYENPTkZJR19MT0NLREVQYC4gVGhlIGtleSBzeW1ib2wgaGVyZSBpcyBgdHJhY2VfY2FsbF9icGZgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGhlIG9ubHkgZnVuY3Rpb24gaW1wYWN0ZWQuIEkgY2hlY2tlZCBgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlYDsgbm90IG1vZGlmaWVkLiBJIGtub3cgdGhhdCBgYnBmX3Byb2dfcnVuX2FycmF5YCBpcyBhbiBpbmxpbmUgb3IgbWFjcm8sIHNvIGl0J3Mgbm90IGRpcmVjdGx5IG1vZGlmaWVkIGVpdGhlci4gU28sIGl0J3Mgb25seSBgdHJhY2VfY2FsbF9icGZgLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIGB0cmFjZV9jYWxsX2JwZmAgaXMgcmVhY2hhYmxlLCBhbmQgaXQgaXMuIFdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBhdHRhY2hlZCB0byBhIHRyYWNlcG9pbnQsIGB0cmFjZV9jYWxsX2JwZmAgaXMgY2FsbGVkLCBhbmQgZm9yIGBsb2NrX3JlbGVhc2VgIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggYG5vX2xvY2tkZXAgPSB0cnVlYC5cblxuSnVzdCBkb3VibGUtY2hlY2tpbmcgbXkgY29uZmlndXJhdGlvbiBuYW1lczsgYENPTkZJR19MT0NLREVQYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLlxuXG5Ob3csIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgdXN1YWwgZGVwZW5kZW5jaWVzIG9mIGBMT0NLREVQYC4gSXQgdXN1YWxseSByZWxpZXMgb24gdGhpbmdzIGxpa2UgYFBST1ZFX0xPQ0tJTkdgLCBgTE9DS19TVEFUYCwgb3IgYERFQlVHX0xPQ0tfQUxMT0NgLiBJIHNob3VsZCBjaGVjayBgbGliL0tjb25maWcuZGVidWdgIHRvIHZlcmlmeSB0aGVzZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTgzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjQwLjAzNDI4NTQyMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwNjA2OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExPQ0tERVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MTU3Nj1jb25maWcgREVCVUdfTE9DS19BTExPQ1xcbi0tXFxubGliL0tjb25maWcuZGVidWctMTU5MC1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNTkxOmNvbmZpZyBMT0NLREVQXFxubGliL0tjb25maWcuZGVidWctMTU5Mi1cXHRib29sXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTk3LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE1OTg6Y29uZmlnIExPQ0tERVBfU01BTExcXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTk5LVxcdGJvb2xcXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjAwLVxcbmxpYi9LY29uZmlnLmRlYnVnOjE2MDE6Y29uZmlnIExPQ0tERVBfQklUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MDItXFx0aW50IFxcXCJTaXplIGZvciBNQVhfTE9DS0RFUF9FTlRSSUVTIChhcyBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjA4LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE2MDk6Y29uZmlnIExPQ0tERVBfQ0hBSU5TX0JJVFNcXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjEwLVxcdGludCBcXFwiU2l6ZSBmb3IgTUFYX0xPQ0tERVBfQ0hBSU5TIChhcyBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjE2LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE2MTc6Y29uZmlnIExPQ0tERVBfU1RBQ0tfVFJBQ0VfQklUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MTgtXFx0aW50IFxcXCJTaXplIGZvciBNQVhfU1RBQ0tfVFJBQ0VfRU5UUklFUyAoYXMgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMTYzMS1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNjMyOmNvbmZpZyBMT0NLREVQX1NUQUNLX1RSQUNFX0hBU0hfQklUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MzMtXFx0aW50IFxcXCJTaXplIGZvciBTVEFDS19UUkFDRV9IQVNIX1NJWkUgKGFzIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTE2NDAtXFxubGliL0tjb25maWcuZGVidWc6MTY0MTpjb25maWcgTE9DS0RFUF9DSVJDVUxBUl9RVUVVRV9CSVRTXFxubGliL0tjb25maWcuZGVidWctMTY0Mi1cXHRpbnQgXFxcIlNpemUgZm9yIGVsZW1lbnRzIGluIGNpcmN1bGFyX3F1ZXVlIHN0cnVjdCAoYXMgTnRoIHBvd2VyIG9mIDIpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo0MC4wODQzNTI2MjlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MDcxMzE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMb2NrZGVwIE11c2luZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYExPQ0tERVBgIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQncyBhIGJpdCBvZiBhIGhpZGRlbiBnZW0sIGEgYm9vbGVhbiB0aGF0IGdldHMgYWN0aXZhdGVkIHRocm91Z2ggYSBmZXcgb3RoZXIgb3B0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGBQUk9WRV9MT0NLSU5HYCwgYExPQ0tfU1RBVGAsIGFuZCBgREVCVUdfTE9DS19BTExPQ2AgYWxsIGhhdmUgYSBoYW5kIGluIGVuYWJsaW5nIGl0LiBUaGF0IG1ha2VzIHNlbnNlLCBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncywgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgdGhlIGtlcm5lbCdzIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZS5cblxuVGhlcmVmb3JlLCB0byAqZ3VhcmFudGVlKiB0aGF0IGBMT0NLREVQYCBpcyBhY3R1YWxseSBhY3RpdmUsIGl0J3MgcHJldHR5IGNsZWFyIHRvIG1lIHRoYXQgSSBzaG91bGQganVzdCBnbyBhaGVhZCBhbmQgZW5hYmxlIGBQUk9WRV9MT0NLSU5HYC4gR2l2ZW4gbXkgd29yaywgaXQncyB0aGUgbW9zdCBzdHJhaWdodCBmb3J3YXJkIHBhdGguIFNlZW1zIGxpa2UgdGhhdCB3b3VsZCBiZSB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhpcyBsb2NrIGRlcGVuZGVuY3kgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcyB0cnVseSBydW5uaW5nIGFuZCB3b3JraW5nIGFzIGludGVuZGVkLiBTaW1wbGVyIGlzIGJldHRlciwgYWZ0ZXIgYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQyNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjQ0LjY1NTA2ODQ1MVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczMzY1NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBST1ZFX0xPQ0tJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MTQ0ND1jb25maWcgTE9DS19ERUJVR0dJTkdfU1VQUE9SVFxcbi0tXFxubGliL0tjb25maWcuZGVidWctMTQ0OC1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNDQ5OmNvbmZpZyBQUk9WRV9MT0NLSU5HXFxubGliL0tjb25maWcuZGVidWctMTQ1MC1cXHRib29sIFxcXCJMb2NrIGRlYnVnZ2luZzogcHJvdmUgbG9ja2luZyBjb3JyZWN0bmVzc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6NDQuNzAyNDEzNDU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NDI1NjY5MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkVuYWJsaW5nIFByb3ZlIExvY2tpbmcgYW5kIFJlLUV4YW1pbmluZyBCUEZfRVZFTlRTIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBgUFJPVkVfTE9DS0lOR2DigKYgdGhhdCdzIGEgc29saWQgY2hvaWNlIHRvIGVuYWJsZS4gSXQncyB0aW1lIHRvIGJyaW5nIGFkZGl0aW9uYWwgZGVidWcgZGF0YSwgcGFydGljdWxhcmx5IGZvciBrZXJuZWwgbG9ja2luZy4gVGhlIHBvdGVudGlhbCBmb3IgY2F0Y2hpbmcgc3VidGxlIGNvbmN1cnJlbmN5IGJ1Z3MgYW5kIGRhdGEgcmFjZXMganVzdGlmaWVzIGl0LlxuXG5Ob3csIGJlZm9yZSBJIGNvbW1pdCB0aGF0IGNoYW5nZSwgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjaywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgYEJQRl9FVkVOVFNgIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgc3RpbGwgaW4gc3luYy4gSSBrbm93IHRoZSBnZW5lcmFsIHJlcXVpcmVtZW50cywgYnV0IGl0J3Mgd29ydGggYSBkb3VibGUtY2hlY2sgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gaW50ZWdyYXRpb24gaXNzdWVzIG9yIGJ1aWxkIGZhaWx1cmVzLiBHb3R0YSBrZWVwIGFuIGV5ZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBhZnRlciBhbnkgdXBzdHJlYW0gY2hhbmdlcy4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3OTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1MC4zNDQ5ODU1OTRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg1MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg1MDpcXHRcXHQgIGNvbnZlcnQgdGhlIHR5cGUgb2YgYW4gZXZlbnQgZmllbGQuIEZvciBleGFtcGxlLCB0dXJuIGFuXFxuIDg1MTpcXHRcXHQgIGFkZHJlc3MgaW50byBhIHN0cmluZy5cXG4gODUyOlxcdFxcbiA4NTM6XFx0Y29uZmlnIEJQRl9FVkVOVFNcXG4gODU0OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4gODU1OlxcdFxcdGRlcGVuZHMgb24gKEtQUk9CRV9FVkVOVFMgfHwgVVBST0JFX0VWRU5UUykgXFx1MDAyNlxcdTAwMjYgUEVSRl9FVkVOVFNcXG4gODU2OlxcdFxcdGJvb2xcXG4gODU3OlxcdFxcdGRlZmF1bHQgeVxcbiA4NTg6XFx0XFx0aGVscFxcbiA4NTk6XFx0XFx0ICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBhdHRhY2ggQlBGIHByb2dyYW1zIHRvIGtwcm9iZSwgdXByb2JlLCBhbmRcXG4gODYwOlxcdFxcdCAgdHJhY2Vwb2ludCBldmVudHMuXFxuIDg2MTpcXHRcXG4gODYyOlxcdGNvbmZpZyBEWU5BTUlDX0VWRU5UU1xcbiA4NjM6XFx0XFx0ZGVmX2Jvb2wgblxcbiA4NjQ6XFx0XFxuIDg2NTpcXHRjb25maWcgUFJPQkVfRVZFTlRTXFxuIDg2NjpcXHRcXHRkZWZfYm9vbCBuXFxuIDg2NzpcXHRcXG4gODY4OlxcdGNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXFxuIDg2OTpcXHRcXHRib29sIFxcXCJFbmFibGUgQlBGIHByb2dyYW1zIHRvIG92ZXJyaWRlIGEga3Byb2JlZCBmdW5jdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6NTAuMzQ1MjE3MDc0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjcyNDE5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb246IEJQRiBFdmVudCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQlBGX0VWRU5UU2AgaXMgY29udGluZ2VudCBvbiBhIGZldyBvdGhlciBjb25maWd1cmF0aW9uczogc3BlY2lmaWNhbGx5LCBgQlBGX1NZU0NBTExgLCBhbmQgZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKmluIGNvbmp1bmN0aW9uIHdpdGgqIGBQRVJGX0VWRU5UU2AuIFRoYXQgc2VlbWVkIHN0cmFpZ2h0Zm9yd2FyZDsgSSBmaWd1cmVkIHdlJ2QgaGF2ZSB0byBleHBsaWNpdGx5IGVuYWJsZSBgQlBGX1NZU0NBTExgLCBgS1BST0JFX0VWRU5UU2AsIGFuZCBgUEVSRl9FVkVOVFNgIHRvIGdldCBgQlBGX0VWRU5UU2AgdG8gd29yay5cblxuQnV0IHdhaXQsIGhvbGQgb24uIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdGhpbmtpbmcuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBgQlBGX0VWRU5UU2AgaXMgYHlgICppZiogaXRzIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbywgaW5zdGVhZCBvZiBleHBsaWNpdGx5IGVuYWJsaW5nICpldmVyeXRoaW5nKiwgSSBqdXN0IG5lZWQgdG8gZW5zdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldC4gSW4gdGhpcyBjYXNlLCB0aGF0IG1lYW5zIEkgc2hvdWxkIGV4cGxpY2l0bHkgc3BlY2lmeSBgQlBGX1NZU0NBTExgLCBgS1BST0JFX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBhbHNvIGBQUk9WRV9MT0NLSU5HYCBmb3IgZ29vZCBtZWFzdXJlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgS1BST0JFX0VWRU5UU2AgYW5kIGBQRVJGX0VWRU5UU2AgYXJlIHRydWx5IHNldCBjb3JyZWN0bHkuIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyOTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1NC4yNzI0NjI5ODdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDE1MjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLUFJPQkVfRVZFTlRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTc3MD1jb25maWcgUFJPQkVfRVZFTlRTX0JURl9BUkdTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy03ODEtXFxua2VybmVsL3RyYWNlL0tjb25maWc6NzgyOmNvbmZpZyBLUFJPQkVfRVZFTlRTXFxua2VybmVsL3RyYWNlL0tjb25maWctNzgzLVxcdGRlcGVuZHMgb24gS1BST0JFU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODAwLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjgwMTpjb25maWcgS1BST0JFX0VWRU5UU19PTl9OT1RSQUNFXFxua2VybmVsL3RyYWNlL0tjb25maWctODAyLVxcdGJvb2wgXFxcIkRvIE5PVCBwcm90ZWN0IG5vdHJhY2UgZnVuY3Rpb24gZnJvbSBrcHJvYmUgZXZlbnRzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1NC4zMjE4ODg1MTNaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxNjU0OTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBVbmRlcnN0YW5kaW5nIG9mIEtQUk9CRV9FVkVOVFMgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBLUFJPQkVfRVZFTlRTYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBmdW5kYW1lbnRhbGx5IGRlcGVuZHMgb24gYEtQUk9CRVNgLiBXaXRob3V0IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgb2YgYEtQUk9CRVNgLCBgS1BST0JFX0VWRU5UU2AganVzdCB3b3VsZG4ndCBiZSBhYmxlIHRvIGRvIHdoYXQgaXQncyBzdXBwb3NlZCB0byBkby4gVGhpbmsgb2YgYEtQUk9CRVNgIGFzIHRoZSBwbHVtYmluZyBhbmQgYEtQUk9CRV9FVkVOVFNgIGFzIHRoZSBmYXVjZXQ7IHlvdSBjYW4ndCBoYXZlIGEgd29ya2luZyBmYXVjZXQgd2l0aG91dCB0aGUgcGx1bWJpbmcgaW4gcGxhY2UuIEl0IHNlZW1zIHNpbXBsZSwgYWxtb3N0IHRyaXZpYWwsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBzdGF0ZSBpdCBleHBsaWNpdGx5LiBgS1BST0JFU2AgcHJvdmlkZXMgdGhlIG1lY2hhbmlzbSBmb3IgYWN0dWFsbHkgaW5zZXJ0aW5nIHByb2JlcywgYW5kIGBLUFJPQkVfRVZFTlRTYCBidWlsZHMgb24gKnRoYXQqIGZvdW5kYXRpb24gdG8gZG8gbW9yZSBhZHZhbmNlZCBldmVudCBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZy4gU28sIHllYWgsIGl0J3MgYSBmb3VuZGF0aW9uYWwgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NzIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1Ny44Mzg0NDEyNjRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDk4ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLUFJPQkVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL0tjb25maWc9MTEyPWNvbmZpZyBHRU5FUklDX0VOVFJZXFxuLS1cXG5hcmNoL0tjb25maWctMTE2LVxcbmFyY2gvS2NvbmZpZzoxMTc6Y29uZmlnIEtQUk9CRVNcXG5hcmNoL0tjb25maWctMTE4LVxcdGJvb2wgXFxcIktwcm9iZXNcXFwiXFxuLS1cXG5hcmNoL0tjb25maWc9MTY4PWNvbmZpZyBPUFRQUk9CRVNcXG4tLVxcbmFyY2gvS2NvbmZpZy0xNzItXFxuYXJjaC9LY29uZmlnOjE3Mzpjb25maWcgS1BST0JFU19PTl9GVFJBQ0VcXG5hcmNoL0tjb25maWctMTc0LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6NTcuODg0NTQ4NzkxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjU1MzcxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIFByb2JlczogTmF2aWdhdGluZyB0aGUgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYW5kIGltbWVkaWF0ZWx5IHRoZSBuZWVkIGZvciBgS1BST0JFU2AgcG9wcyBpbnRvIG15IGhlYWQuIEl0J3MgdGhlIGdvLXRvIGZvciBpbi1rZXJuZWwgaW5zdHJ1bWVudGF0aW9uLCBhbmQgaXQncyB3aGVyZSBJJ2xsIHByb2JhYmx5IGJlZ2luIG15IGludmVzdGlnYXRpb24uIEJ1dCB0aGVuLCB0aGUgcXVlc3Rpb24gb2Ygc3BlY2lmaWMgZXZlbnRzIHN1cmZhY2VzLiBJJ20gd29uZGVyaW5nIGlmIEkgc2hvdWxkIGFsc28gYmUgY29uc2lkZXJpbmcgYFVQUk9CRV9FVkVOVFNgIGluIHRoZSBtaXguIFRoZXkncmUgcmVsYXRlZCwgYnV0IGhhbmRsZSB1c2VyLXNwYWNlIHByb2Jlcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIHVzaW5nIHRoZSBiZXN0IHRvb2xzIGZvciB0aGUgam9iLCBkZXBlbmRpbmcgb24gd2hhdCBJJ20gbG9va2luZyB0byBhY2hpZXZlIC0ga2VybmVsIHNwYWNlIG9yIHVzZXJzcGFjZSBvciBib3RoLiBOZWVkIHRvIGZhY3RvciB0aGF0IGluLiBHb3R0YSBjb25zaWRlciB0aGF0IHRvIGJ1aWxkIGEgc29sdXRpb24gdGhhdCdzIHJvYnVzdCBhbmQgZWZmaWNpZW50LCBJIG5lZWQgdG8gbWFrZSB0aGUgcmlnaHQgY2hvaWNlIGJldHdlZW4gdGhlIHR3byBhdCB0aGUgb3V0c2V0LiBJIGFtIHBvbmRlcmluZyB3aGF0IHRoZSBiZXN0IHdheSB0byBsZXZlcmFnZSBib3RoIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIzNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjAxLjUxMDA4OTg4MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNTExNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVQUk9CRV9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3RyYWNlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL0tjb25maWc9ODAxPWNvbmZpZyBLUFJPQkVfRVZFTlRTX09OX05PVFJBQ0VcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTgyMC1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4MjE6Y29uZmlnIFVQUk9CRV9FVkVOVFNcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04MjItXFx0Ym9vbCBcXFwiRW5hYmxlIHVwcm9iZXMtYmFzZWQgZHluYW1pYyBldmVudHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjAxLjU1NjM0NjQ3OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQxNTc2NjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSdtIHRoZSBvbmUgaGF2aW5nIHRoZW06XG5cbioqRGVwZW5kZW5jeSBDb25zaWRlcmF0aW9ucyBmb3IgVVBST0JFX0VWRU5UUyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgVVBST0JFX0VWRU5UU2AgYW5kIHRoZSBhcmNoaXRlY3R1cmUuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBJdCdzIGNsZWFyIHRoYXQgYFVQUk9CRV9FVkVOVFNgICphYnNvbHV0ZWx5KiBkZXBlbmRzIG9uIGBVUFJPQkVTYC4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiBgVVBST0JFX0VWRU5UU2Ag4oCTIHdoaWNoIGlzIG9idmlvdXNseSBldmVudCBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgcmVsYXRlZCB0byB1c2VyLXNwYWNlIHByb2JlcyDigJMgaXMgZnVuZGFtZW50YWxseSBidWlsdCB1cG9uIHRoZSB1bmRlcmx5aW5nIGNhcGFiaWxpdGllcyBwcm92aWRlZCBieSBgVVBST0JFU2AuIEkgbWVhbiwgaG93IGVsc2Ugd291bGQgeW91IGNhcHR1cmUgYW5kIG1ha2Ugc2Vuc2Ugb2YgZXZlbnRzIHJlbGF0ZWQgdG8gcHJvYmVzIGlmIHlvdSBkaWRuJ3QgaGF2ZSB0aGUgcHJvYmVzIHRoZW1zZWx2ZXMgaW4gcGxhY2UgZmlyc3Q/IEl0J3MgYSBmb3VuZGF0aW9uYWwgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV4cGxpY2l0IGluIGFueSBkZXNpZ24gZG9jcyBvciBkaXNjdXNzaW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1ODIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNTowNC40OTc5MjY2MTRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MzE2NjEwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVBST0JFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9LY29uZmlnPTE3Mz1jb25maWcgS1BST0JFU19PTl9GVFJBQ0VcXG4tLVxcbmFyY2gvS2NvbmZpZy0xODEtXFxuYXJjaC9LY29uZmlnOjE4Mjpjb25maWcgVVBST0JFU1xcbmFyY2gvS2NvbmZpZy0xODMtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNTowNC44NDEwOTg5MzNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxOTM1NDQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqU3RyYXRlZ2ljIEFwcHJvYWNoIHRvIEluc3RydW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyB3ZSBzaG91bGQgc3RyZWFtbGluZSB0aGlzIHByb2Nlc3MuIExldCdzIGp1c3QgbGVhbiBoZWF2aWx5IG9uIGBLUFJPQkVfRVZFTlRTYCBhbmQgcGxhaW4gb2xkIGBLUFJPQkVTYCBmb3IgdGhpcyBpbml0aWFsIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhleSdyZSBwb3dlcmZ1bCBhbmQgd2VsbC11bmRlcnN0b29kLCBzbyBzdGFydGluZyB3aXRoIHRoZW0gbWFrZXMgdGhlIG1vc3Qgc2Vuc2UuXG5cbk5vdywgSSBhbHNvIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGNvbnNpZGVyIHRoZSBsb25nIHRlcm0uIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIGBQRVJGX0VWRU5UU2AgaXMgZW5hYmxlZCB2aWEgY29uZmlndXJhdGlvbi4gSSdtIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlLCBhbmQgaWYgaXQgaXMsIHdlIHNob3VsZCBnaXZlIGl0IGZ1bGwgY29uc2lkZXJhdGlvbiBhdCBsZWFzdC4gSXQncyBvZnRlbiB0aGUgZ29sZCBzdGFuZGFyZC4gV2UgbWF5IHdhbnQgdG8gZXhwYW5kIHRvIHVzZSBpdCBhdCBzb21lIHBvaW50LiBCdXQgZm9yIG5vdywgbGV0J3Mga2VlcCBpdCBzaW1wbGUgYW5kIHNlZSBpZiB3ZSBjYW4gZ2V0IHRoZSBiYXNlbGluZSBpbXBsZW1lbnRlZCBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4NjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNTowOC4xNjA0NTY4MDRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY5MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQRVJGX0VWRU5UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbml0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTIxNDE9bWVudSBcXFwiS2VybmVsIFBlcmZvcm1hbmNlIEV2ZW50cyBBbmQgQ291bnRlcnNcXFwiXFxuaW5pdC9LY29uZmlnLTIxNDItXFxuaW5pdC9LY29uZmlnOjIxNDM6Y29uZmlnIFBFUkZfRVZFTlRTXFxuaW5pdC9LY29uZmlnLTIxNDQtXFx0Ym9vbCBcXFwiS2VybmVsIHBlcmZvcm1hbmNlIGV2ZW50cyBhbmQgY291bnRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjA4LjIwNzMzMTgzMloiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4MDM2MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtlcm5lbCBDb25maWd1cmF0aW9uIE11c2luZ3MqKlxuXG5Pa2F5LCB5ZXMsIGRlZmluaXRlbHkgYFBFUkZfRVZFTlRTYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gUmlnaHQsIHNvIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJQRl9TWVNDQUxMYCwgYEtQUk9CRVNgLCBgS1BST0JFX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2Ag4oCTIG9idmlvdXNseSDigJMgYW5kIGBQUk9WRV9MT0NLSU5HYC5cblxuTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBsZXQncyBqdXN0IHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIEkgKmNhbiogYWN0dWFsbHkgZW5hYmxlIGBCUEZfRVZFTlRTYCBkaXJlY3RseS4gSG1tLCBpdCdzIGEgYGJvb2xgIGNvbmZpZywgYW5kIGl0IGRlZmF1bHRzIHRvIFwieVwiLiBTbywgaXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpZiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIEJ1dCwgSSBjYW4gZXhwbGljaXRseSBzZXQgaXQgdG9vLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBwcmFjdGljZS5cblxuUmlnaHQsIGxldCdzIGRlbHZlIGludG8gdGhlIHRyYWNpbmcgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIHByb2dyYW1zIGdldCBob29rZWQgaW50byB0aGUga2VybmVsLiBMZXQncyBsb29rIGF0IGB0cmFjZV9jYWxsX2JwZmAgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIEFoYSwgaXQncyBjYWxsZWQgZnJvbSBgX19icGZfdHJhY2VfcnVuYC4gQW5kIHRoYXQgZnVuY3Rpb24gaXMgZ2VuZXJhdGVkIHVzaW5nIHRob3NlIGBERUNMQVJFX0VWRU5UX0NMQVNTYCBtYWNyb3Mgb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cbk9rYXksIHNvIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBhdHRhY2hlZCB0byBhIHRyYWNlcG9pbnQsIHRoZSBrZXJuZWwgdXNlcyBzb21ldGhpbmcgbGlrZSBgcGVyZl90cmFjZV8jI2NhbGxgLCB3aGljaCBpcyB3aGF0IHRoZW4gY2FsbHMgYHRyYWNlX2NhbGxfYnBmYC4gV2FpdCBhIHNlY29uZOKApiBpc24ndCBgdHJhY2VfY2FsbF9icGZgIGNhbGxlZCBmcm9tIGBwZXJmX3RyYWNlXyMjY2FsbGA/IFllcywgcmlnaHQsIHRoYXQncyBpbiBgaW5jbHVkZS90cmFjZS9wZXJmLmhgLiBPa2F5LCBiZXR0ZXIgZ28gYW5kIGNoZWNrIHRoYXQgaGVhZGVyIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjEzLjk3NTM3MDk2WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzUxMDgyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJhY2VfY2FsbF9icGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS90cmFjZS9wZXJmLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjE0LjAyODg5MTM0N1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU4NTcxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkxvY2F0aW5nIHRoZSBDYWxsZXJzIG9mIGB0cmFjZV9jYWxsX2JwZmAqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHRyYWNlX2NhbGxfYnBmYCBpcyBiZWluZyBpbnZva2VkLiBJdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgZ3JhcGggaXMgcGFyYW1vdW50LiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsIGlzIHRoZXJlIGEgc2ltcGxlIGdyZXAgSSBjYW4gcnVuIHRvIGZpbmQgdGhlIGRpcmVjdCBjYWxsZXJzLCBvciBpcyBpdCBtb3JlIGNvbXBsZXggdGhhbiB0aGF0PyBHaXZlbiB0aGUgbmF0dXJlIG9mIEJQRiwgSSBzdXNwZWN0IGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlcywgcGVyaGFwcyBldmVuIGR5bmFtaWNhbGx5LiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoZSBCUEYgc3Vic3lzdGVtIGludGVyYWN0cyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIE1heWJlIHRoZXJlJ3MgYSBzcGVjaWZpYyB0cmFjaW5nIG1lY2hhbmlzbSB0aGF0IHVzZXMgdGhpcywgYW5kIEkgY2FuIG5hcnJvdyBkb3duIHRoZSBzZWFyY2ggdGhhdCB3YXkuIEknbGwgbmVlZCB0byBjb25zaWRlciBib3RoIHN0YXRpYyBjYWxscyBhbmQgaW5kaXJlY3QgY2FsbHMgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyBvciBqdW1wIHRhYmxlcy4gVGhpcyByZXF1aXJlcyBhIHRhcmdldGVkIGludmVzdGlnYXRpb247IGEgYnJvYWQgc2VhcmNoIG1pZ2h0IGJlIHRvbyBub2lzeS4gVGhpbmtpbmcgYWxzbyBhYm91dCBhbnkgbW9kdWxlIGRlcGVuZGVuY2llcyBtaWdodCBhbHNvIGJlIHVzZWZ1bCB0byBxdWlja2x5IHJlZHVjZSB0aGUgc2VhcmNoIHNwYWNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgSSBjYW4gdW5jb3Zlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MzIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNToxNy43ODc0NjU1NDFaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjU4NTU3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmFjZV9jYWxsX2JwZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3RyYWNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MTcuODM1MTM0NDk4WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4OTU5NjAzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipUcmFjaW5nIHRoZSBDYWxsZXIgb2YgYHRyYWNlX2NhbGxfYnBmYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93IGFyb3VuZCBgdHJhY2VfY2FsbF9icGZgLiBGaXJzdCwgbXkgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbGluZyBjb250ZXh0LiBTbywgbGV0J3Mgc3RhcnQgYnkgZG9pbmcgYSBxdWljayBzZWFyY2ggZm9yIGFsbCB0aGUgcGxhY2VzIHdoZXJlIGB0cmFjZV9jYWxsX2JwZmAgaXMgYWN0dWFsbHkgaW52b2tlZC4gSSBuZWVkIHRvIHNlZSB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcywgaWRlbnRpZnkgdGhlIHBhcmVudCBmdW5jdGlvbnMgb3IgY29kZSBibG9ja3MuIFRoYXQnbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGZpbmRpbmdzIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgQlBGIGFuZCB0cmFjaW5nLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEyMCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjIwLjczMTA5NzYxNloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE3Njk3NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJhY2VfY2FsbF9icGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03NTk9dHJhY2VfdHJpZ2dlcl9zb2Z0X2Rpc2FibGVkKHN0cnVjdCB0cmFjZV9ldmVudF9maWxlICpmaWxlKVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzQtI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3NzU6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6Nzc2OnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzctaW50IHBlcmZfZXZlbnRfYXR0YWNoX2JwZl9wcm9nKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1NjQgYnBmX2Nvb2tpZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc5Mz1pbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk0LSNlbHNlXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3OTU6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5Ni17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5OS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjgwMDpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgwMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjIwLjgyMjg3NTUxMVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIzMDUwNjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBVc2FnZSBQYXR0ZXJucyoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgYXBwbGljYXRpb24gb2YgdGhpcyBjb25jZXB0LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBhc3Nlc3MgaXRzIHVzYWdlIHBhdHRlcm5zLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCdzIGJlaW5nIGRlcGxveWVkLCBhY3Jvc3Mgd2hpY2ggZG9tYWlucywgYW5kIGluIHdoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvbW1vbmFsaXRpZXMgYW5kIHRoZSB2YXJpYXRpb25zLiBBcmUgd2Ugc2VlaW5nIGl0IHByaW1hcmlseSBpbiByZXNlYXJjaCwgb3IgaXMgaXQgbWFraW5nIGlucm9hZHMgaW50byBwcmFjdGljYWwgYXBwbGljYXRpb25zPyBXaGF0IGluZHVzdHJpZXMgYXJlIGFkb3B0aW5nIGl0LCBhbmQgd2h5PyBBcmUgdGhlcmUgYW55IGNsZWFyIGxlYWRlcnMgb3IgbGFnZ2luZyBhZG9wdGVycz8gVW5kZXJzdGFuZGluZyB0aGUgXCJ3aGVyZVwiIGlzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEl0IHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBlZmZpY2FjeSBhbmQgbGltaXRhdGlvbnMgd2l0aGluIGl0cyBhcHBsaWNhdGlvbi4gVGhlIGRhdGEgd2lsbCBkaWN0YXRlIG15IG5leHQgc3RlcCwgYmUgdGhhdCBhIGZ1cnRoZXIgZXhhbWluYXRpb24gb2YgbWV0aG9kb2xvZ3kgb3IgYSBjb21wYXJpc29uIGFnYWluc3Qgb3RoZXIgcGFyYWRpZ21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDcxMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MjMuOTQ1OTI5MTQ2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQxMjM2NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYWNlX2NhbGxfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc1OT10cmFjZV90cmlnZ2VyX3NvZnRfZGlzYWJsZWQoc3RydWN0IHRyYWNlX2V2ZW50X2ZpbGUgKmZpbGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc3NC0jaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3NTp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3NzY6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc3Ny1pbnQgcGVyZl9ldmVudF9hdHRhY2hfYnBmX3Byb2coc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHU2NCBicGZfY29va2llKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9NzkzPWludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTQtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5NTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk2LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk5LVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODAwOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODAxLXtcXG4tLVxcbmtlcm5lbC9ldmVudHMvY29yZS5jPTExMzkxPXZvaWQgcGVyZl90cmFjZV9ydW5fYnBmX3N1Ym1pdCh2b2lkICpyYXdfZGF0YSwgaW50IHNpemUsIGludCByY3R4LFxcbi0tXFxua2VybmVsL2V2ZW50cy9jb3JlLmMtMTEzOTctXFx0XFx0KihzdHJ1Y3QgcHRfcmVncyAqKilyYXdfZGF0YSA9IHJlZ3M7XFxua2VybmVsL2V2ZW50cy9jb3JlLmM6MTEzOTg6XFx0XFx0aWYgKCF0cmFjZV9jYWxsX2JwZihjYWxsLCByYXdfZGF0YSkgfHwgaGxpc3RfZW1wdHkoaGVhZCkpIHtcXG5rZXJuZWwvZXZlbnRzL2NvcmUuYy0xMTM5OS1cXHRcXHRcXHRwZXJmX3N3ZXZlbnRfcHV0X3JlY3Vyc2lvbl9jb250ZXh0KHJjdHgpO1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTk2PXN0YXRpYyB1NjQgYnBmX3Vwcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eCk7XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtOTgtLyoqXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjk5OiAqIHRyYWNlX2NhbGxfYnBmIC0gaW52b2tlIEJQRiBwcm9ncmFtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEwMC0gKiBAY2FsbDogdHJhY2Vwb2ludCBldmVudFxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTExMS0gKi9cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTEyOnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMTMte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEzOS1cXHQgKiBJZiBicGZfcHJvZ19hcnJheV92YWxpZCgpIGZldGNoZWQgcHJvZ19hcnJheSB3YXNcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTQwOlxcdCAqIG5vbi1OVUxMLCB3ZSBnbyBpbnRvIHRyYWNlX2NhbGxfYnBmKCkgYW5kIGRvIHRoZSBhY3R1YWxcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTQxLVxcdCAqIHByb3BlciByY3VfZGVyZWZlcmVuY2UoKSB1bmRlciBSQ1UgbG9jay5cXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjMtLyoqXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2NDogKiB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUgLSBpbnZva2UgQlBGIHByb2dyYW0gaW4gZmF1bHRhYmxlIGNvbnRleHRcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY1LSAqIEBjYWxsOiB0cmFjZXBvaW50IGV2ZW50XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY3LSAqXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2ODogKiBWYXJpYW50IG9mIHRyYWNlX2NhbGxfYnBmKCkgZm9yIGZhdWx0YWJsZSB0cmFjZXBvaW50cyAoc3lzY2FsbFxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjktICogdHJhY2Vwb2ludHMpLiBTdXBwb3J0cyBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGJ5IHVzaW5nIHJjdV90YXNrc190cmFjZVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE3OC0gKi9cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTc5OnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTgwLXtcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYz0xNjgzPWtwcm9iZV9wZXJmX2Z1bmMoc3RydWN0IHRyYWNlX2twcm9iZSAqdGssIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE2OTQtXFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jOjE2OTU6XFx0XFx0cmV0ID0gdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncyk7XFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE2OTYtXFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmM9MTczMj1rcmV0cHJvYmVfcGVyZl9mdW5jKHN0cnVjdCB0cmFjZV9rcHJvYmUgKnRrLCBzdHJ1Y3Qga3JldHByb2JlX2luc3RhbmNlICpyaSxcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYy0xNzQwLVxcbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYzoxNzQxOlxcdGlmIChicGZfcHJvZ19hcnJheV92YWxpZChjYWxsKSBcXHUwMDI2XFx1MDAyNiAhdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncykpXFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE3NDItXFx0XFx0cmV0dXJuO1xcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM9MTM3ND1zdGF0aWMgaW50IHBlcmZfY2FsbF9icGZfZW50ZXIoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsXFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYy0xMzkzLVxcdFxcdHBhcmFtLmFyZ3NbaV0gPSBhcmdzW2ldO1xcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jOjEzOTQ6XFx0cmV0dXJuIHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShjYWxsLCBcXHUwMDI2cGFyYW0pO1xcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTEzOTUtfVxcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM9MTUyNT1zdGF0aWMgaW50IHBlcmZfY2FsbF9icGZfZXhpdChzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCxcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTE1MzktXFx0cGFyYW0ucmV0ID0gcmV0X3ZhbDtcXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYzoxNTQwOlxcdHJldHVybiB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoY2FsbCwgXFx1MDAyNnBhcmFtKTtcXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYy0xNTQxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MjUuNjg3MTcyMjg3WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNTAxNDUzODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQlBGIFRyYWNlcG9pbnQgRXhlY3V0aW9uIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYHRyYWNlX2NhbGxfYnBmYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBwZXJmX3RyYWNlX3J1bl9icGZfc3VibWl0YCBpbiBga2VybmVsL2V2ZW50cy9jb3JlLmNgLiBUaGF0J3MgdGhlIGNvcmUgZXhlY3V0aW9uIHBhdGggZm9yIHRyYWNlcG9pbnRzIHdpdGggQlBGIHByb2dyYW1zIGF0dGFjaGVkOyB0aGF0J3MgZ29vZCwgaXQncyBlYXNpbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuIFdlJ3JlIGxvb2tpbmcgYXQgYSBwcmV0dHkgZGlyZWN0IHBhdGggZm9yIG91ciBhbmFseXNpcy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBuZWVkLiBXZSdyZSBjb25jZXJuZWQgd2l0aCBgQlBGX1NZU0NBTExgLCBgQlBGX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBgUFJPVkVfTE9DS0lOR2AuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIHNpbXBseSBlbmFibGUgYEJQRl9FVkVOVFNgIG9yIGRvIHdlIG5lZWQgdG8gZW5zdXJlIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNldD9cblxuYEJQRl9FVkVOVFNgIGlzIGEgYm9vbGVhbiB0aGF0IGRlZmF1bHRzIHRvICd5JyBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLiBJdCdzIGRlcGVuZGVudCBvbiBgQlBGX1NZU0NBTExgICphbmQqIGVpdGhlciBgS1BST0JFX0VWRU5UU2Agb3IgYFVQUk9CRV9FVkVOVFNgICphbmQqIGBQRVJGX0VWRU5UU2AuIFRoZXJlZm9yZSwgbGlzdGluZyBgQlBGX1NZU0NBTExgLCBgS1BST0JFX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBgUFJPVkVfTE9DS0lOR2Agc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5hYmxlIGl0LiBUaGVyZSdzIG5vIGhhcm0gaW4gbGlzdGluZyBgQlBGX0VWRU5UU2AgZGlyZWN0bHkgYXMgd2VsbCwgbWlnaHQgbWFrZSB0aGluZ3MgY2xlYXJlci5cblxuSGFuZyBvbi4uLiBUaGlzIHBhdGNoIHNwZWNpZmljYWxseSBkaXNhYmxlcyBsb2NrZGVwIGZvciB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludC4gVGhhdCBpbXBsaWVzIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50ICptdXN0KiBiZSBlbmFibGVkIGZvciB0aGUgcGF0Y2ggdG8gZXZlbiBoYXZlIGFuIGVmZmVjdC4gT2theSwgc28gd2UgbmVlZCB0byB2ZXJpZnkgaXRzIGNvbmZpZ3VyYXRpb24uIEl0J3MgZGVmaW5lZCBpbiBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgd2hpY2ggaXMgaW5jbHVkZWQgYnkgYGtlcm5lbC9sb2NraW5nL2xvY2tkZXAuY2AuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGxvY2tfcmVsZWFzZWAgaXMgYWN0dWFsbHkgdXNlZCBpbiBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gVGhpcyB3aWxsIGdpdmUgdXMgdmFsdWFibGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5c3RlbSBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0NDUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MzEuOTM3MzIxMzg1WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA1NzYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmFjZV9sb2NrX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYz01ODc1PXZvaWQgbG9ja19yZWxlYXNlKHN0cnVjdCBsb2NrZGVwX21hcCAqbG9jaywgdW5zaWduZWQgbG9uZyBpcClcXG4tLVxcbmtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYy01ODc4LVxcbmtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYzo1ODc5OlxcdHRyYWNlX2xvY2tfcmVsZWFzZShsb2NrLCBpcCk7XFxua2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jLTU4ODAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjMxLjk4OTM4NTMzMloiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzg5NjYxNjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgQlBGX05PX0xPQ0tERVBgIGluIEtlcm5lbCBUcmFjaW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSdzIHdoYXQgSSd2ZSBnb3QuIFRoZSBrZXkgaXMgdGhpcyBuZXcgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnLiAgSXQncyBzcGVjaWZpY2FsbHkgdXNlZCBpbiB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCwgd2hpY2ggaXMgZGVmaW5lZCBpbiBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gIFRoaXMgbWVhbnMgYENPTkZJR19MT0NLREVQYCBpcyBhIGRlZmluaXRlIHJlcXVpcmVtZW50LCBhbmQgaW5kaXJlY3RseSBgQ09ORklHX1BST1ZFX0xPQ0tJTkdgIGFzIGl0IGVuYWJsZXMgYENPTkZJR19MT0NLREVQYC5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGFuZCBjb25maWd1cmF0aW9uLiAgVGhpcyBjaGFuZ2UgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2wgZm9yIHRoYXQgZnV6emluZyBpcyBgdHJhY2VfY2FsbF9icGZgLiAgSW4gdGVybXMgb2YgY29uZmlndXJhdGlvbnMsIHRoZSBuZWNlc3Nhcnkgb25lcyBhcmUgYEJQRl9TWVNDQUxMYCwgYEJQRl9FVkVOVFNgLCBgUEVSRl9FVkVOVFNgLCBhbmQgYFBST1ZFX0xPQ0tJTkdgLCB3aGljaCBpbmRpcmVjdGx5IGVuYWJsZXMgYExPQ0tERVBgLiBJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhpcywgYnV0IGBMT0NLREVQYCBpcyBhIHZhbGlkIGNvbmZpZyBhbmQgY2FuIGJlIGxpc3RlZC4gSG93ZXZlciwgYEtQUk9CRV9FVkVOVFNgIGlzIGFsc28gcmVxdWlyZWQsIGV2ZW4gdGhvdWdoIGl0IGlzbid0IGRpcmVjdGx5IHVzZWQgYnkgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuIFRoZSByZWFzb24gaXMgYmVjYXVzZSBgQlBGX0VWRU5UU2AgZGVwZW5kcyBvbiBgS1BST0JFX0VWRU5UU2AgKG9yIGBVUFJPQkVfRVZFTlRTYCksIGFuZCBgUEVSRl9FVkVOVFNgLlxuXG5Ob3csIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuICBUaGVyZSdzIGEgbmV3IGZsYWcsIGBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUGAsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhgLiAgVGhpcyBmbGFnIGdldHMgYWRkZWQgdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIENyaXRpY2FsbHksIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGlzIHVwZGF0ZWQgdG8gY2hlY2sgdGhpcyBuZXcgZmxhZyB3aXRoaW4gdGhlIGB0cmFjZV9jYWxsX2JwZmAgZnVuY3Rpb24uIElmIHRoZSBmbGFnIGlzIHNldCwgbG9ja2RlcCBpcyB0ZW1wb3JhcmlseSBkaXNhYmxlZCBiZWZvcmUgcnVubmluZyB0aGUgQlBGIHByb2dyYW0gYW5kIHJlLWVuYWJsZWQgYWZ0ZXJ3YXJkcyB1c2luZyBgbG9ja2RlcF9vZmYoKWAgYW5kIGBsb2NrZGVwX29uKClgLiBUaGUgZmxhZyBpcyBhZGRlZCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCB1c2luZyBgVFJBQ0VfRVZFTlRfRkxBR1NgLiBUaGlzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgd2l0aCBzeXprYWxsZXIgYnkgYXR0YWNoaW5nIGEgQlBGIHByb2dyYW0gdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjkwLCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6NDUuODg2MDA1MDE5WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMxMDcyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiLFxuICAgIFwiUFJPVkVfTE9DS0lOR1wiLFxuICAgIFwiS1BST0JFX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRyYWNlX2NhbGxfYnBmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZnVuY3Rpb25hbGx5IG1vZGlmaWVzIGB0cmFjZV9jYWxsX2JwZmAgdG8gZGlzYWJsZSBsb2NrZGVwIHRyYWNraW5nIHdoaWxlIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdHJhY2Vwb2ludHMgd2l0aCB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnIChzdWNoIGFzIGBsb2NrX3JlbGVhc2VgKS4gVGhpcyBpcyBhIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiB0cmFjaW5nIGJlaGF2aW9yIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIixcbiAgICBcIlBFUkZfRVZFTlRTXCIsXG4gICAgXCJQUk9WRV9MT0NLSU5HXCIsXG4gICAgXCJLUFJPQkVfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHJhY2VfY2FsbF9icGZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowznvd6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 11:21:51 +0000 UTC FinishedAt: 2026-08-03 11:25:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS", "PERF_EVENTS", "PROVE_LOCKING", "KPROBE_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS", "PERF_EVENTS", "PROVE_LOCKING", "KPROBE_EVENTS" ], "series_id": "0451aa1b-28f3-463b-b657-730c1ca351b3" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "trace_call_bpf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7UEVSRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7UFJPVkVfTE9DS0lORyYjMzQ7LAogICAgJiMzNDtLUFJPQkVfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHJhY2VfY2FsbF9icGYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZnVuY3Rpb25hbGx5IG1vZGlmaWVzIGB0cmFjZV9jYWxsX2JwZmAgdG8gZGlzYWJsZSBsb2NrZGVwIHRyYWNraW5nIHdoaWxlIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdHJhY2Vwb2ludHMgd2l0aCB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnIChzdWNoIGFzIGBsb2NrX3JlbGVhc2VgKS4gVGhpcyBpcyBhIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiB0cmFjaW5nIGJlaGF2aW9yIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIEJQRiBwcm9ncmFtcyBpbnRlcmFjdCB3aXRoIGxvY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTU0NjFkNDUxNWM0MTA5MDkwZDMxYWM5YzI1OGIxMWQ3MzE0OTE1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTE6MjM6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaCBiL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcbmluZGV4IDMwOGM3NmI1N2QxMzIuLjZmNjdiNWU5ZTM4ZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG5AQCAtMzMwLDYgJiM0MzszMzAsNyBAQCBlbnVtIHtcbiBcdFRSQUNFX0VWRU5UX0ZMX0ZQUk9CRV9CSVQsXG4gXHRUUkFDRV9FVkVOVF9GTF9DVVNUT01fQklULFxuIFx0VFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklULFxuJiM0MztcdFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQX0JJVCxcbiB9O1xuIFxuIC8qXG5AQCAtMzQ3LDYgJiM0MzszNDgsNyBAQCBlbnVtIHtcbiAgKiAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHNldCB3aGVuIHRoZSBjdXN0b20gZXZlbnQgaGFzIG5vdCBiZWVuIGF0dGFjaGVkXG4gICogICAgICAgICAgICAgICAgICAgdG8gYSB0cmFjZXBvaW50IHlldCwgdGhlbiBpdCBpcyBjbGVhcmVkIHdoZW4gaXQgaXMuXG4gICogIFRFU1RfU1RSICAgICAgLSBUaGUgZXZlbnQgaGFzIGEgXCYjMzQ7JXNcJiMzNDsgdGhhdCBwb2ludHMgdG8gYSBzdHJpbmcgb3V0c2lkZSB0aGUgZXZlbnRcbiYjNDM7ICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zXG4gICovXG4gZW51bSB7XG4gXHRUUkFDRV9FVkVOVF9GTF9DQVBfQU5ZXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0NBUF9BTllfQklUKSxcbkBAIC0zNjAsNiAmIzQzOzM2Miw3IEBAIGVudW0ge1xuIFx0VFJBQ0VfRVZFTlRfRkxfRlBST0JFXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0ZQUk9CRV9CSVQpLFxuIFx0VFJBQ0VfRVZFTlRfRkxfQ1VTVE9NXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQpLFxuIFx0VFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJcdFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklUKSxcbiYjNDM7XHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBfQklUKSxcbiB9O1xuIFxuICNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxfVUtQUk9CRSAoVFJBQ0VfRVZFTlRfRkxfS1BST0JFIHwgVFJBQ0VfRVZFTlRfRkxfVVBST0JFKVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxuaW5kZXggMWRlZDg2OWNkNjE5Zi4uNWNjZjVjNTRlM2QyZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oXG5AQCAtNzIsNiAmIzQzOzcyLDggQEAgREVGSU5FX0VWRU5UKGxvY2ssIGxvY2tfcmVsZWFzZSxcbiBcdFRQX0FSR1MobG9jaywgaXApXG4gKTtcbiBcbiYjNDM7VFJBQ0VfRVZFTlRfRkxBR1MobG9ja19yZWxlYXNlLCBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUCk7XG4mIzQzO1xuICNpZmRlZiBDT05GSUdfTE9DS19TVEFUXG4gXG4gREVGSU5FX0VWRU5UKGxvY2ssIGxvY2tfY29udGVuZGVkLFxuZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xuaW5kZXggNzU0OTVhNWMzNTA3OS4uZjI0NjBmM2M4NjBlMCAxMDA2NDRcbi0tLSBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jXG5AQCAtMjQsNiAmIzQzOzI0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25hbWVpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbG9ja2RlcC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2JwZl9za19zdG9yYWdlLmhcdTAwM2VcbiBcbkBAIC0xMTAsNiAmIzQzOzExMSw3IEBAIHN0YXRpYyB1NjQgYnBmX3Vwcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eCk7XG4gICovXG4gdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXG4ge1xuJiM0MztcdGJvb2wgbm9fbG9ja2RlcCA9IGNhbGwtXHUwMDNlZmxhZ3MgXHUwMDI2IFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQO1xuIFx0dW5zaWduZWQgaW50IHJldDtcbiBcbiBcdGNhbnRfc2xlZXAoKTtcbkBAIC0xNDQsOCAmIzQzOzE0NiwxMiBAQCB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcbiBcdCAqIHJjdV9kZXJlZmVyZW5jZSgpIHdoaWNoIGlzIGFjY2VwdGVkIHJpc2suXG4gXHQgKi9cbiBcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHRpZiAobm9fbG9ja2RlcClcbiYjNDM7XHRcdGxvY2tkZXBfb2ZmKCk7XG4gXHRyZXQgPSBicGZfcHJvZ19ydW5fYXJyYXkocmN1X2RlcmVmZXJlbmNlKGNhbGwtXHUwMDNlcHJvZ19hcnJheSksXG4gXHRcdFx0XHQgY3R4LCBicGZfcHJvZ19ydW4pO1xuJiM0MztcdGlmIChub19sb2NrZGVwKVxuJiM0MztcdFx0bG9ja2RlcF9vbigpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gIG91dDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQUk9WRV9MT0NLSU5HJiMzNDssCiAgICAmIzM0O0tQUk9CRV9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNTQ2MWQ0NTE1YzQxMDkwOTBkMzFhYzljMjU4YjExZDczMTQ5MTVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAxMToyMzoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmggYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oCmluZGV4IDMwOGM3NmI1N2QxMzIuLjZmNjdiNWU5ZTM4ZDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaApAQCAtMzMwLDYgJiM0MzszMzAsNyBAQCBlbnVtIHsKIAlUUkFDRV9FVkVOVF9GTF9GUFJPQkVfQklULAogCVRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQsCiAJVFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklULAomIzQzOwlUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUF9CSVQsCiB9OwogCiAvKgpAQCAtMzQ3LDYgJiM0MzszNDgsNyBAQCBlbnVtIHsKICAqICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgc2V0IHdoZW4gdGhlIGN1c3RvbSBldmVudCBoYXMgbm90IGJlZW4gYXR0YWNoZWQKICAqICAgICAgICAgICAgICAgICAgIHRvIGEgdHJhY2Vwb2ludCB5ZXQsIHRoZW4gaXQgaXMgY2xlYXJlZCB3aGVuIGl0IGlzLgogICogIFRFU1RfU1RSICAgICAgLSBUaGUgZXZlbnQgaGFzIGEgJiMzNDslcyYjMzQ7IHRoYXQgcG9pbnRzIHRvIGEgc3RyaW5nIG91dHNpZGUgdGhlIGV2ZW50CiYjNDM7ICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zCiAgKi8KIGVudW0gewogCVRSQUNFX0VWRU5UX0ZMX0NBUF9BTlkJCT0gKDEgJmx0OyZsdDsgVFJBQ0VfRVZFTlRfRkxfQ0FQX0FOWV9CSVQpLApAQCAtMzYwLDYgJiM0MzszNjIsNyBAQCBlbnVtIHsKIAlUUkFDRV9FVkVOVF9GTF9GUFJPQkUJCT0gKDEgJmx0OyZsdDsgVFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCksCiAJVFJBQ0VfRVZFTlRfRkxfQ1VTVE9NCQk9ICgxICZsdDsmbHQ7IFRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQpLAogCVRSQUNFX0VWRU5UX0ZMX1RFU1RfU1RSCQk9ICgxICZsdDsmbHQ7IFRSQUNFX0VWRU5UX0ZMX1RFU1RfU1RSX0JJVCksCiYjNDM7CVRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQCT0gKDEgJmx0OyZsdDsgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBfQklUKSwKIH07CiAKICNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxfVUtQUk9CRSAoVFJBQ0VfRVZFTlRfRkxfS1BST0JFIHwgVFJBQ0VfRVZFTlRfRkxfVVBST0JFKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oCmluZGV4IDFkZWQ4NjljZDYxOWYuLjVjY2Y1YzU0ZTNkMmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmgKQEAgLTcyLDYgJiM0Mzs3Miw4IEBAIERFRklORV9FVkVOVChsb2NrLCBsb2NrX3JlbGVhc2UsCiAJVFBfQVJHUyhsb2NrLCBpcCkKICk7CiAKJiM0MztUUkFDRV9FVkVOVF9GTEFHUyhsb2NrX3JlbGVhc2UsIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQKTsKJiM0MzsKICNpZmRlZiBDT05GSUdfTE9DS19TVEFUCiAKIERFRklORV9FVkVOVChsb2NrLCBsb2NrX2NvbnRlbmRlZCwKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYwppbmRleCA3NTQ5NWE1YzM1MDc5Li5mMjQ2MGYzYzg2MGUwIDEwMDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jCkBAIC0yNCw2ICYjNDM7MjQsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2tleS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25hbWVpLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZmlsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9sb2NrZGVwLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDtuZXQvYnBmX3NrX3N0b3JhZ2UuaCZndDsKIApAQCAtMTEwLDYgJiM0MzsxMTEsNyBAQCBzdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpOwogICovCiB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCkKIHsKJiM0MzsJYm9vbCBub19sb2NrZGVwID0gY2FsbC0mZ3Q7ZmxhZ3MgJmFtcDsgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVA7CiAJdW5zaWduZWQgaW50IHJldDsKIAogCWNhbnRfc2xlZXAoKTsKQEAgLTE0NCw4ICYjNDM7MTQ2LDEyIEBAIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KQogCSAqIHJjdV9kZXJlZmVyZW5jZSgpIHdoaWNoIGlzIGFjY2VwdGVkIHJpc2suCiAJICovCiAJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlpZiAobm9fbG9ja2RlcCkKJiM0MzsJCWxvY2tkZXBfb2ZmKCk7CiAJcmV0ID0gYnBmX3Byb2dfcnVuX2FycmF5KHJjdV9kZXJlZmVyZW5jZShjYWxsLSZndDtwcm9nX2FycmF5KSwKIAkJCQkgY3R4LCBicGZfcHJvZ19ydW4pOwomIzQzOwlpZiAobm9fbG9ja2RlcCkKJiM0MzsJCWxvY2tkZXBfb24oKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAogIG91dDoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIHRoZSBMb2NrZGVwIERpc2FibGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgZnV6emluZyBpdCBpcyBhIHdvcnRod2hpbGUgZWZmb3J0LiBFc3NlbnRpYWxseSwgaXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgLCBhbmQgYXBwbGllcyBpdCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2UgZXZlbnQuIFRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdHJhY2VfY2FsbF9icGZgLCB3aGVyZSBpdCBkaXNhYmxlcyBsb2NrZGVwIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBydW5uaW5nIGlmIHRoaXMgbmV3IGZsYWcgaXMgcHJlc2VudC4KCkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSYjMzk7cmUgZGlzYWJsaW5nIGxvY2tkZXAgYXJvdW5kIHRoZSBleGVjdXRpb24gb2YgYGJwZl9wcm9nX3J1bl9hcnJheWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzICpyZWFjaGFibGUqIGJ5IGEgZnV6emVyLiBBbmQgaXQgaXMuIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGF0dGFjaGluZyBhIEJQRiBwcm9ncmFtIHRvIGEgdHJhY2Vwb2ludCDigJMgc3BlY2lmaWNhbGx5IGBsb2NrX3JlbGVhc2VgLCBzaW5jZSB0aGlzIGZsYWcgaXMgc2V0IHRoZXJlLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIHRoZSBjb25kaXRpb25zIEkgbmVlZCB0byByZXByb2R1Y2UgdGhlIHNjZW5hcmlvLgoKU28gbmV4dCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIGNoYW5nZSBoYXBwZW5zIHdpdGhpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gSSBrbm93IHRoYXQgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CUEZfRVZFTlRTYCBpcyBlbmFibGVkLiBJIG5lZWQgdG8gbm93IGNoZWNrIGVpdGhlciBga2VybmVsL3RyYWNlL01ha2VmaWxlYCBvciBgaW5pdC9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyB0cnVlIGFuZCB0byBzZWUgaG93IHRvIGFjdHVhbGx5IGVuYWJsZSBgQlBGX0VWRU5UU2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvTWFrZWZpbGU9MTA5PW9iai0kKENPTkZJR19VU0VSX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2V2ZW50c191c2VyLm9cbmtlcm5lbC90cmFjZS9NYWtlZmlsZToxMTA6b2JqLSQoQ09ORklHX0JQRl9FVkVOVFMpICYjNDM7PSBicGZfdHJhY2Uub1xua2VybmVsL3RyYWNlL01ha2VmaWxlLTExMS1vYmotJChDT05GSUdfS1BST0JFX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2twcm9iZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBFdmVudCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYEJQRl9FVkVOVFNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluZWQuIE1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgY2FuZGlkYXRlczogdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgYW5kIHRoZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgYGluaXQvS2NvbmZpZ2AgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGl0JiMzOTtzIHdoZXJlIGNvcmUgc3lzdGVtIGZlYXR1cmVzIGFyZSBvZnRlbiBjb25maWd1cmVkLiBBbHRlcm5hdGl2ZWx5LCBiZWNhdXNlIEJQRiBpcyBoZWF2aWx5IGludm9sdmVkIGluIHRyYWNpbmcgYW5kIGluc3RydW1lbnRhdGlvbiwgdGhlIGBrZXJuZWwvdHJhY2UvS2NvbmZpZ2AgZmlsZSBpcyBhbm90aGVyIGhpZ2hseSBsaWtlbHkgbG9jYXRpb24uIExldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyB0aG9zZSB0d28gZmlsZXMg4oCTIHRoYXQgc2hvdWxkIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSByZXF1ZXN0OgoKKipEZWNvbnN0cnVjdGluZyBgQlBGX0VWRU5UU2AgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoZXkgd2FudCBtZSB0byBkaXNzZWN0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgQlBGX0VWRU5UU2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCBpdCBmcm9tIGEgc3lzdGVtcyBwZXJzcGVjdGl2ZSwgYXMgSSB3b3VsZCBpZiBJIHdlcmUgYXJjaGl0ZWN0aW5nIGEgdHJhY2luZyBmcmFtZXdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICYjMzQ7ZGVwZW5kZW5jaWVzJiMzNDsgYWN0dWFsbHkgbWVhbnMgaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0aGUgdXBzdHJlYW0ga2VybmVsIHN1YnN5c3RlbXMgdGhhdCBmZWVkIGludG8gdGhlIGBCUEZfRVZFTlRTYCBpbmZyYXN0cnVjdHVyZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgdGhlIGRvd25zdHJlYW0gYXBwbGljYXRpb25zIG9yIHRvb2xzIHRoYXQgKmNvbnN1bWUqIHRoZSBldmVudHM/IE9yIHBlcmhhcHMgYm90aD8KCkkmIzM5O2Qgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBCUEYgZXZlbnQtcmVsYXRlZCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMuIEkmIzM5O2QgYmUgc2VhcmNoaW5nIGZvciBpbmNsdWRlcywgZnVuY3Rpb24gY2FsbHMsIGFuZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGBCUEZfRVZFTlRTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGRhdGEgb3JpZ2luYXRlcywgdGhlIHByb2Nlc3Npbmcgc3RlcHMgaXQgZ29lcyB0aHJvdWdoLCBhbmQgaG93IGl0IGlzIHVsdGltYXRlbHkgZXhwb3NlZC4KCk15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiB0aGVzZSBhcmVhczoKCiogICAqKlVwc3RyZWFtIEtlcm5lbCBDb21wb25lbnRzOioqIFdoZXJlIGRvZXMgdGhlIGFjdHVhbCBldmVudCBkYXRhIGNvbWUgZnJvbT8gVHJhY2Vwb2ludHMsIHBlcmYgZXZlbnRzLCBrcHJvYmVzLCB1cHJvYmVzLCBVU0RULCBldGMuPyBIb3cgaXMgdGhlIGRhdGEgc3RydWN0dXJlZCBiZWZvcmUgaXQgZ2V0cyBpbnRvIHRoZSBCUEYgcGlwZWxpbmU/IFdoYXQgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IHNoYXJlZCByZXNvdXJjZXM/CiogICAqKkJQRiBIZWxwZXIgRnVuY3Rpb25zOioqIFdoYXQgQlBGIGhlbHBlciBmdW5jdGlvbnMgYXJlIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3Igd29ya2luZyB3aXRoIGBCUEZfRVZFTlRTYD8gYGJwZl9wZXJmX2V2ZW50X3JlYWQoKWAsIGBicGZfdHJhY2VfcHJpbnRrKClgIGFyZSBnb29kIHN0YXJ0aW5nIHBvaW50cy4gSG93IGRvIHRoZXkgaGFuZGxlIGRhdGEgYnVmZmVyaW5nLCBmaWx0ZXJpbmcsIGFuZCBkZWxpdmVyeT8KKiAgICoqRG93bnN0cmVhbSBDb25zdW1lcnM6KiogSG93IGRvIEJQRiBwcm9ncmFtcyByZWFkIGFuZCBpbnRlcnByZXQgdGhlIGV2ZW50cz8gV2hhdCBCUEYgZGF0YSBzdHJ1Y3R1cmVzIChlLmcuLCByaW5nIGJ1ZmZlcnMsIG1hcHMpIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgdGhpcyBwdXJwb3NlPyBJcyB0aGVyZSBhIHN0YW5kYXJkIHdheSB0byBmb3JtYXQgb3Igc2VyaWFsaXplIHRoZSBldmVudCBkYXRhPwoqICAgKipMaWJicGY6KiogV2hhdCYjMzk7cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBCUEZfRVZFTlRTYCBpbmZyYXN0cnVjdHVyZSBhbmQgdGhlIGBsaWJicGZgIGxpYnJhcnk/IEhvdyBkb2VzIGBsaWJicGZgIGZhY2lsaXRhdGUgdGhlIGxvYWRpbmcsIGF0dGFjaGluZywgYW5kIGludGVyYWN0aW9uIHdpdGggQlBGIHByb2dyYW1zPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGBsaWJicGZgIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGV2ZW50cz8KCkkmIzM5O2xsIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbGltaXRhdGlvbnMuIEFyZSB0aGVyZSBhbnkga25vd24gc2NhbGFiaWxpdHkgaXNzdWVzIHdpdGggYEJQRl9FVkVOVFNgIHVuZGVyIGhpZ2ggbG9hZD8gQXJlIHRoZXJlIGFueSBsb2NrIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBJJiMzOTtsbCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgaXQgd2l0aCBhbnkgaGlzdG9yaWNhbCBkb2N1bWVudGF0aW9uIGFuZCBjb21taXRzLCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSByZWFzb25zIHRoYXQgd2VudCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODUwOlx0XHQgIGNvbnZlcnQgdGhlIHR5cGUgb2YgYW4gZXZlbnQgZmllbGQuIEZvciBleGFtcGxlLCB0dXJuIGFuXG4gODUxOlx0XHQgIGFkZHJlc3MgaW50byBhIHN0cmluZy5cbiA4NTI6XHRcbiA4NTM6XHRjb25maWcgQlBGX0VWRU5UU1xuIDg1NDpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuIDg1NTpcdFx0ZGVwZW5kcyBvbiAoS1BST0JFX0VWRU5UUyB8fCBVUFJPQkVfRVZFTlRTKSBcdTAwMjZcdTAwMjYgUEVSRl9FVkVOVFNcbiA4NTY6XHRcdGJvb2xcbiA4NTc6XHRcdGRlZmF1bHQgeVxuIDg1ODpcdFx0aGVscFxuIDg1OTpcdFx0ICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBhdHRhY2ggQlBGIHByb2dyYW1zIHRvIGtwcm9iZSwgdXByb2JlLCBhbmRcbiA4NjA6XHRcdCAgdHJhY2Vwb2ludCBldmVudHMuXG4gODYxOlx0XG4gODYyOlx0Y29uZmlnIERZTkFNSUNfRVZFTlRTXG4gODYzOlx0XHRkZWZfYm9vbCBuXG4gODY0Olx0XG4gODY1Olx0Y29uZmlnIFBST0JFX0VWRU5UU1xuIDg2NjpcdFx0ZGVmX2Jvb2wgblxuIDg2NzpcdFxuIDg2ODpcdGNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG4gODY5Olx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIEJQRiBFdmVudCBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgYEJQRl9FVkVOVFNgIGhpbmdlcyBvbiBhIGZldyBrZXkgY29tcG9uZW50cy4gU3BlY2lmaWNhbGx5LCBgQlBGX1NZU0NBTExgLCBhbmQgZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKG9yIGJvdGgpLCBwbHVzIGBQRVJGX0VWRU5UU2AuIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGl0IGFwcGVhcnMsIGlzIHRvIGVuYWJsZSB0aGlzIGlmIGFsbCB0aG9zZSBwcmVyZXF1aXNpdGVzIGFyZSBzYXRpc2ZpZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgY2xlYW4gYW5kIGxvZ2ljYWwgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuCgpOb3csIHRoZSB1c2Ugb2YgYGxvY2tkZXBfb2ZmKClgIGFuZCBgbG9ja2RlcF9vbigpYCBjYXVnaHQgbXkgZXllLiBUaGV5IHNlZW0gaW1wb3J0YW50IGhlcmUsIHNvIG5hdHVyYWxseSwgSSBuZWVkIGBDT05GSUdfTE9DS0RFUGAgdG8gYmUgZW5hYmxlZCBmb3IgdGhlbSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nIG1lYW5pbmdmdWwuIEkgc2VlbSB0byByZWNhbGwgdGhhdCB0aGV54oCZcmUgc3RpbGwgZGVmaW5lZCBhcyBlbXB0eSBtYWNyb3MgaWYgYENPTkZJR19MT0NLREVQYCBpcyBub3Qgc2V0LCB0aG91Z2guIExldCBtZSBqdXN0IGNvbmZpcm0gd2hlcmUgdGhvc2UgYXJlIGRlZmluZWQuLi4gQWgsIHJpZ2h0LCB0aGV5JiMzOTtyZSBpbiBgaW5jbHVkZS9saW51eC9sb2NrZGVwLmhgLiBPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGhlYWRlciBmaWxlIGFuZCBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kIHRoZWlyIHVzYWdlIGNvbnRleHQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIGxvY2tkZXBfb2ZmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sb2NrZGVwLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaC0xMDgtXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaC0xMTAtZG8ge1x0XHRcdFx0XHRcdFx0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIyNQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IEVtcHR5IERlZmluaXRpb24qKgoKSG1tLCBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFuIGFjdHVhbCwgZGVmaW5lZCBmdW5jdGlvbiBvciBtYWNybyBhc3NvY2lhdGVkIHdpdGggYGxvY2tkZXBfb2ZmYC4gSXQmIzM5O3MgYSBjb21tb24gcGF0dGVybiwgZXNwZWNpYWxseSBpbiBrZXJuZWwgZGV2ZWxvcG1lbnQuIFNvbWV0aW1lcywgdGhlc2UgZGVidWdnaW5nIG9yIGNvbnRyb2wgbWVjaGFuaXNtcyBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCwgb3IgZXZlbiBkZWZpbmVkIGFzICYjMzQ7bm90aGluZyYjMzQ7IHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMuIEkmIzM5O20gbGlrZWx5IGxvb2tpbmcgZm9yIGEgc2l0dWF0aW9uIHdoZXJlIGBsb2NrZGVwX29mZmAgbWlnaHQgYmUgZGVmaW5lZCBhcyBhbiBlbXB0eSBtYWNybywgb3IgcGVyaGFwcyBldmVuIGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBjb21wbGV0ZWx5IHN0dWJiZWQgb3V0LiBUaGlzIG1lYW5zIGl0IGVpdGhlciBkb2VzIG5vdGhpbmcsIG9yIGlzIGRpc2FibGVkIGFsdG9nZXRoZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBrZXJuZWwgaXMgdXNpbmcgaXQgdG8gZGlzYWJsZSBsb2NrIGRlcGVuZGVuY3kgY2hlY2tpbmcsIG9yIGlmIGl0IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGhvdXQgbG9jayBkZXBlbmRlbmN5IGNoZWNraW5nLCBhcyB0aGlzIHdvdWxkIGNoYW5nZSBob3cgdGhlIGxvY2sgZGVwZW5kZW5jaWVzIGFyZSBhbmFseXNlZC4gSSYjMzk7bSBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGltcGxlbWVudGF0aW9uIGF0dGFjaGVkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgbG9ja2RlcF9vZmYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaD05NT1leHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjEwOTojZGVmaW5lIGxvY2tkZXBfb2ZmKClcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBsb2NrZGVwLmgqKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgbG9ja2RlcCBpbnRlcm5hbHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJoYXBzIHNvbWUgb2YgdGhlIGZ1bmRhbWVudGFsIGNvbmNlcHRzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbG9jayBkZXBlbmRlbmN5IHZhbGlkYXRvci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGluY2x1ZGUvbGludXgvbG9ja2RlcC5oYCwgYXJvdW5kIGxpbmUgMTA5LiBUaGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHNwb3QgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoZSBrZXkgZGVmaW5pdGlvbnMg4oCTIGxpa2VseSB3aGVyZSB0aGUgY29yZSBsb2NrZGVwIHN0cnVjdHVyZXMgbGlrZSBgc3RydWN0IGxvY2tfY2xhc3NgLCBgc3RydWN0IGxvY2tkZXBfbWFwYCBvciBwb3RlbnRpYWxseSBldmVuIHNvbWUgb2YgdGhlIGNydWNpYWwgbWFjcm9zIHRoYXQgYXJlIHRoZSBidWlsZGluZyBibG9ja3Mgb2YgbG9jayBhbmFseXNpcyBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gc2VlIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMg4oCTIHdoYXQgZGF0YSBpcyBzdG9yZWQgYWJvdXQgbG9ja3MsIHdoaWNoIGxpa2VseSBpbmNsdWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jayYjMzk7cyBjbGFzcywgdXNhZ2UgY29udGV4dCwgYW5kIHBvdGVudGlhbGx5IGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBpdCBmb3JtcyB3aXRoIG90aGVyIGxvY2tzLiBUaGUgbGluZSBudW1iZXIgaXMgYSBzdWdnZXN0aW9uLiBXZSYjMzk7bGwgZmluZCBvdXQsIHNob3J0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9sb2NrZGVwLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdCNkZWZpbmUgTE9DS0RFUF9SRUNVUlNJT05fQklUU1x0MTZcbiAxMDE6XHQjZGVmaW5lIExPQ0tERVBfT0ZGXHRcdCgxVSBcdTAwM2NcdTAwM2MgTE9DS0RFUF9SRUNVUlNJT05fQklUUylcbiAxMDI6XHQjZGVmaW5lIExPQ0tERVBfUkVDVVJTSU9OX01BU0tcdChMT0NLREVQX09GRiAtIDEpXG4gMTAzOlx0XG4gMTA0Olx0LypcbiAxMDU6XHQgKiBsb2NrZGVwX3tvZmYsb259KCkgYXJlIG1hY3JvcyB0byBhdm9pZCB0cmFjaW5nIGFuZCBrcHJvYmVzOyBub3QgaW5saW5lcyBkdWVcbiAxMDY6XHQgKiB0byBoZWFkZXIgZGVwZW5kZW5jaWVzLlxuIDEwNzpcdCAqL1xuIDEwODpcdFxuIDEwOTpcdCNkZWZpbmUgbG9ja2RlcF9vZmYoKVx0XHRcdFx0XHRcXFxuIDExMDpcdGRvIHtcdFx0XHRcdFx0XHRcdFxcXG4gMTExOlx0XHRjdXJyZW50LVx1MDAzZWxvY2tkZXBfcmVjdXJzaW9uICYjNDM7PSBMT0NLREVQX09GRjtcdFxcXG4gMTEyOlx0fSB3aGlsZSAoMClcbiAxMTM6XHRcbiAxMTQ6XHQjZGVmaW5lIGxvY2tkZXBfb24oKVx0XHRcdFx0XHRcXFxuIDExNTpcdGRvIHtcdFx0XHRcdFx0XHRcdFxcXG4gMTE2Olx0XHRjdXJyZW50LVx1MDAzZWxvY2tkZXBfcmVjdXJzaW9uIC09IExPQ0tERVBfT0ZGO1x0XFxcbiAxMTc6XHR9IHdoaWxlICgwKVxuIDExODpcdFxuIDExOTpcdGV4dGVybiB2b2lkIGxvY2tkZXBfcmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcbiAxMjA6XHRleHRlcm4gdm9pZCBsb2NrZGVwX3VucmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcbiAxMjE6XHRcbiAxMjI6XHQvKlxuIDEyMzpcdCAqIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgc3BlY2lmaWMgbG9ja2luZyB2YXJpYW50cyAoc3BpbmxvY2tzLFxuIDEyNDpcdCAqIHJ3bG9ja3MsIG11dGV4ZXMgYW5kIHJ3c2VtcykgdG8gcGFzcyBpbml0L2FjcXVpcmUvcmVsZWFzZSBldmVudHNcbiAxMjU6XHQgKiB0byBsb2NrZGVwOlxuIDEyNjpcdCAqL1xuIDEyNzpcdFxuIDEyODpcdGV4dGVybiB2b2lkIGxvY2tkZXBfaW5pdF9tYXBfdHlwZShzdHJ1Y3QgbG9ja2RlcF9tYXAgKmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsXG4gMTI5Olx0XHRzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSwgaW50IHN1YmNsYXNzLCB1OCBpbm5lciwgdTggb3V0ZXIsIHU4IGxvY2tfdHlwZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMzgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipBbmFseXppbmcgTG9ja2RlcCBEZWZpbml0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgYGxvY2tkZXBfb2ZmKClgLi4uIHdoZXJlICppcyogdGhhdCBkZWZpbmVkPyBJIHNlZSB0aGUgcmVmZXJlbmNlIGhlcmUsIHdoaWNoIGlzIGhlbHBmdWwuIE5vdywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIGhvdyBpdCYjMzk7cyAqY29uZGl0aW9uYWxseSogZGVmaW5lZC4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIGxvb2sgdXBzdHJlYW0gZm9yIGFueSBgI2lmZGVmYCBkaXJlY3RpdmVzIHRoYXQgbWlnaHQgY29udHJvbCBpdHMgaW5jbHVzaW9uLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdG8gc2VlIGlmIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBgQ09ORklHX0xPQ0tERVBgLiBJJiMzOTtsbCBzY2FuIHRoZSBwcmVjZWRpbmcgbGluZXMgcXVpY2tseS4gVGhpcyBpcyBjb21tb24gcHJhY3RpY2UsIEkgd2FudCB0byBzZWUgaWYgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgY29uZGl0aW9uYWwgaW4gYW55IHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdC8qXG4gICAzOlx0ICogUnVudGltZSBsb2NraW5nIGNvcnJlY3RuZXNzIHZhbGlkYXRvclxuICAgNDpcdCAqXG4gICA1Olx0ICogIENvcHlyaWdodCAoQykgMjAwNiwyMDA3IFJlZCBIYXQsIEluYy4sIEluZ28gTW9sbmFyIFx1MDAzY21pbmdvQHJlZGhhdC5jb21cdTAwM2VcbiAgIDY6XHQgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFJlZCBIYXQsIEluYy4sIFBldGVyIFppamxzdHJhXG4gICA3Olx0ICpcbiAgIDg6XHQgKiBzZWUgRG9jdW1lbnRhdGlvbi9sb2NraW5nL2xvY2tkZXAtZGVzaWduLnJzdCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgOTpcdCAqL1xuICAxMDpcdCNpZm5kZWYgX19MSU5VWF9MT0NLREVQX0hcbiAgMTE6XHQjZGVmaW5lIF9fTElOVVhfTE9DS0RFUF9IXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbG9ja2RlcF90eXBlcy5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc21wLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2Nhc20vcGVyY3B1LmhcdTAwM2VcbiAgMTY6XHRcbiAgMTc6XHRzdHJ1Y3QgdGFza19zdHJ1Y3Q7XG4gIDE4Olx0XG4gIDE5Olx0I2lmZGVmIENPTkZJR19MT0NLREVQXG4gIDIwOlx0XG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbGlua2FnZS5oXHUwMDNlXG4gIDIyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG4gIDIzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdfbG9ja3MuaFx1MDAzZVxuICAyNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0YWNrdHJhY2UuaFx1MDAzZVxuICAyNTpcdFxuICAyNjpcdHN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX2NvcHlfbWFwKHN0cnVjdCBsb2NrZGVwX21hcCAqdG8sXG4gIDI3Olx0XHRcdFx0XHQgICAgc3RydWN0IGxvY2tkZXBfbWFwICpmcm9tKVxuICAyODpcdHtcbiAgMjk6XHRcdGludCBpO1xuICAzMDpcdFxuICAzMTpcdFx0KnRvID0gKmZyb207XG4gIDMyOlx0XHQvKlxuICAzMzpcdFx0ICogU2luY2UgdGhlIGNsYXNzIGNhY2hlIGNhbiBiZSBtb2RpZmllZCBjb25jdXJyZW50bHkgd2UgY291bGQgb2JzZXJ2ZVxuICAzNDpcdFx0ICogaGFsZiBwb2ludGVycyAoNjRiaXQgYXJjaCB1c2luZyAzMmJpdCBjb3B5IGluc25zKS4gVGhlcmVmb3JlIGNsZWFyXG4gIDM1Olx0XHQgKiB0aGUgY2FjaGVzIGFuZCB0YWtlIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gIDM2Olx0XHQgKlxuICAzNzpcdFx0ICogWFhYIGl0IGRvZXNuJiMzOTt0IHdvcmsgd2VsbCB3aXRoIGxvY2tkZXBfc2V0X2NsYXNzX2FuZF9zdWJjbGFzcygpLCBzaW5jZVxuICAzODpcdFx0ICogICAgIHRoYXQgcmVsaWVzIG9uIGNhY2hlIGFidXNlLlxuICAzOTpcdFx0ICovXG4gIDQwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOUl9MT0NLREVQX0NBQ0hJTkdfQ0xBU1NFUzsgaSYjNDM7JiM0MzspXG4gIDQxOlx0XHRcdHRvLVx1MDAzZWNsYXNzX2NhY2hlW2ldID0gTlVMTDtcbiAgNDI6XHR9XG4gIDQzOlx0XG4gIDQ0Olx0LypcbiAgNDU6XHQgKiBFdmVyeSBsb2NrIGhhcyBhIGxpc3Qgb2Ygb3RoZXIgbG9ja3MgdGhhdCB3ZXJlIHRha2VuIGFmdGVyIGl0LlxuICA0NjpcdCAqIFdlIG9ubHkgZ3JvdyB0aGUgbGlzdCwgbmV2ZXIgcmVtb3ZlIGZyb20gaXQ6XG4gIDQ3Olx0ICovXG4gIDQ4Olx0c3RydWN0IGxvY2tfbGlzdCB7XG4gIDQ5Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkXHRcdGVudHJ5O1xuICA1MDpcdFx0c3RydWN0IGxvY2tfY2xhc3NcdFx0KmNsYXNzO1xuICA1MTpcdFx0c3RydWN0IGxvY2tfY2xhc3NcdFx0KmxpbmtzX3RvO1xuICA1MjpcdFx0Y29uc3Qgc3RydWN0IGxvY2tfdHJhY2VcdFx0KnRyYWNlO1xuICA1MzpcdFx0dTE2XHRcdFx0XHRkaXN0YW5jZTtcbiAgNTQ6XHRcdC8qIGJpdG1hcCBvZiBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzIGZyb20gaGVhZCB0byB0aGlzICovXG4gIDU1Olx0XHR1OFx0XHRcdFx0ZGVwO1xuICA1NjpcdFx0LyogdXNlZCBieSBCRlMgdG8gcmVjb3JkIHdoZXRoZXIgXCYjMzQ7cHJldiAtXHUwMDNlIHRoaXNcJiMzNDsgb25seSBoYXMgLSgqUiktXHUwMDNlICovXG4gIDU3Olx0XHR1OFx0XHRcdFx0b25seV94cjtcbiAgNTg6XHRcbiAgNTk6XHRcdC8qXG4gIDYwOlx0XHQgKiBUaGUgcGFyZW50IGZpZWxkIGlzIHVzZWQgdG8gaW1wbGVtZW50IGJyZWFkdGgtZmlyc3Qgc2VhcmNoLCBhbmQgdGhlXG4gIDYxOlx0XHQgKiBiaXQgMCBpcyByZXVzZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGxvY2sgaGFzIGJlZW4gYWNjZXNzZWQgaW4gQkZTLlxuICA2MjpcdFx0ICovXG4gIDYzOlx0XHRzdHJ1Y3QgbG9ja19saXN0XHRcdCpwYXJlbnQ7XG4gIDY0Olx0fTtcbiAgNjU6XHRcbiAgNjY6XHQvKipcbiAgNjc6XHQgKiBzdHJ1Y3QgbG9ja19jaGFpbiAtIGxvY2sgZGVwZW5kZW5jeSBjaGFpbiByZWNvcmRcbiAgNjg6XHQgKlxuICA2OTpcdCAqIEBpcnFfY29udGV4dDogdGhlIHNhbWUgYXMgaXJxX2NvbnRleHQgaW4gaGVsZF9sb2NrIGJlbG93XG4gIDcwOlx0ICogQGRlcHRoOiAgICAgICB0aGUgbnVtYmVyIG9mIGhlbGQgbG9ja3MgaW4gdGhpcyBjaGFpblxuICA3MTpcdCAqIEBiYXNlOiAgICAgICAgdGhlIGluZGV4IGluIGNoYWluX2hsb2NrcyBmb3IgdGhpcyBjaGFpblxuICA3MjpcdCAqIEBlbnRyeTogICAgICAgdGhlIGNvbGxpZGVkIGxvY2sgY2hhaW5zIGluIGxvY2tfY2hhaW4gaGFzaCBsaXN0XG4gIDczOlx0ICogQGNoYWluX2tleTogICB0aGUgaGFzaCBrZXkgb2YgdGhpcyBsb2NrX2NoYWluXG4gIDc0Olx0ICovXG4gIDc1Olx0c3RydWN0IGxvY2tfY2hhaW4ge1xuICA3NjpcdFx0Lyogc2VlIEJVSUxEX0JVR19PTigpcyBpbiBhZGRfY2hhaW5fY2FjaGUoKSAqL1xuICA3NzpcdFx0dW5zaWduZWQgaW50XHRcdFx0aXJxX2NvbnRleHQgOiAgMixcbiAgNzg6XHRcdFx0XHRcdFx0ZGVwdGggICAgICAgOiAgNixcbiAgNzk6XHRcdFx0XHRcdFx0YmFzZVx0ICAgIDogMjQ7XG4gIDgwOlx0XHQvKiA0IGJ5dGUgaG9sZSAqL1xuICA4MTpcdFx0c3RydWN0IGhsaXN0X25vZGVcdFx0ZW50cnk7XG4gIDgyOlx0XHR1NjRcdFx0XHRcdGNoYWluX2tleTtcbiAgODM6XHR9O1xuICA4NDpcdFxuICA4NTpcdC8qXG4gIDg2Olx0ICogSW5pdGlhbGl6YXRpb24sIHNlbGYtdGVzdCBhbmQgZGVidWdnaW5nLW91dHB1dCBtZXRob2RzOlxuICA4NzpcdCAqL1xuICA4ODpcdGV4dGVybiB2b2lkIGxvY2tkZXBfaW5pdCh2b2lkKTtcbiAgODk6XHRleHRlcm4gdm9pZCBsb2NrZGVwX3Jlc2V0KHZvaWQpO1xuICA5MDpcdGV4dGVybiB2b2lkIGxvY2tkZXBfcmVzZXRfbG9jayhzdHJ1Y3QgbG9ja2RlcF9tYXAgKmxvY2spO1xuICA5MTpcdGV4dGVybiB2b2lkIGxvY2tkZXBfZnJlZV9rZXlfcmFuZ2Uodm9pZCAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4gIDkyOlx0ZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCBsb2NrZGVwX3N5c19leGl0KHZvaWQpO1xuICA5MzpcdGV4dGVybiB2b2lkIGxvY2tkZXBfc2V0X3NlbGZ0ZXN0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbiAgOTQ6XHRcbiAgOTU6XHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuICA5NjpcdFxuICA5NzpcdC8qXG4gIDk4Olx0ICogU3BsaXQgdGhlIHJlY3Vyc2lvbiBjb3VudGVyIGluIHR3byB0byByZWFkaWx5IGRldGVjdCAmIzM5O29mZiYjMzk7IHZzIHJlY3Vyc2lvbi5cbiAgOTk6XHQgKi9cbiAxMDA6XHQjZGVmaW5lIExPQ0tERVBfUkVDVVJTSU9OX0JJVFNcdDE2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTG9ja2RlcCBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIE15IGZvY3VzIGlzIG9uIHRoaXMgc2VjdGlvbiwgd2hpY2ggaXMgY2xlYXJseSBndWFyZGVkIGJ5IGAjaWZkZWYgQ09ORklHX0xPQ0tERVBgLiBPa2F5LCB0aGF0JiMzOTtzIGV4cGVjdGVkLiBMb2NrZGVwIGlzIGNyaXRpY2FsIGZvciBkZXRlY3RpbmcgbG9jay1yZWxhdGVkIGJ1Z3MsIHNvIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBpZiBDT05GSUdfTE9DS0RFUCBpc24mIzM5O3QgKmRlZmluZWQqLCB3aGF0IGhhcHBlbnMgdG8gYGxvY2tkZXBfb2ZmKClgPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIGFuZCBob3cgaXRzIGFic2VuY2UgaXMgaGFuZGxlZC4gSXMgaXQgZGVmaW5lZCBhcyBhIG5vLW9wPyBEb2VzIGl0IGdldCByZXBsYWNlZCB3aXRoIHNvbWV0aGluZyBlbHNlPyBPciwgaXMgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29tcGxldGVseSByZW1vdmVkPyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdHJhY2UgdGhpcyBsb2dpYyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcyB3aGVuIGxvY2tkZXAgaXMgZGlzYWJsZWQuIEtub3dpbmcgaG93IGl0JiMzOTtzIGhhbmRsZWQgaXMgdml0YWwgZm9yIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgbG9jay1yZWxhdGVkIGlzc3VlcyBpbiBkaWZmZXJlbnQgYnVpbGQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlYmFzZSB0byBmaW5kIHRoYXQgZGVmaW5pdGlvbiAob3IgbGFjayB0aGVyZW9mKSB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBsb2NrZGVwX29mZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbG9ja2RlcC5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbG9ja2RlcC5oPTk1PWV4dGVybiB2b2lkIGxvY2tkZXBfaW5pdF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG4tLVxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmgtMTA4LVxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmg6MTA5OiNkZWZpbmUgbG9ja2RlcF9vZmYoKVx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmgtMTEwLWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gbG9ja2RlcC5oJiMzOTtzIENvbmRpdGlvbmFsIExvZ2ljKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaGAsIHNwZWNpZmljYWxseSB0aGUgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAgYmxvY2suIFdlIG5lZWQgdG8gYmUgbWV0aWN1bG91cywgYW5kIHJpZ2h0IG5vdyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBgI2Vsc2VgIGJyYW5jaCwgdGhlIG9uZSB0aGF0IGRlZmluZXMgd2hhdCBoYXBwZW5zIHdoZW4gYENPTkZJR19MT0NLREVQYCAqaXNuJiMzOTt0KiBlbmFibGVkLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlLCAqdW5pbnN0cnVtZW50ZWQqIGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgZGVmaW5lZC4gQSBnb29kIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgYGxvY2tkZXBgLCBvciB0aGUgZWRnZSBjYXNlcyB3aGVuIHlvdSYjMzk7cmUgcnVubmluZyB3aXRob3V0IGl0cyBzYWZldHkgbmV0LiBXZSBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBiYXNlbGluZSB0aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbG9ja2RlcC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNzA6XHRcbiAzNzE6XHRzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF9yZWdpc3Rlcl9rZXkoc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpXG4gMzcyOlx0e1xuIDM3MzpcdH1cbiAzNzQ6XHRcbiAzNzU6XHRzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF91bnJlZ2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSlcbiAzNzY6XHR7XG4gMzc3Olx0fVxuIDM3ODpcdFxuIDM3OTpcdCNkZWZpbmUgbG9ja2RlcF9kZXB0aCh0c2spXHQoMClcbiAzODA6XHRcbiAzODE6XHQvKlxuIDM4MjpcdCAqIER1bW15IGZvcndhcmQgZGVjbGFyYXRpb25zLCBhbGxvdyB1c2VycyB0byB3cml0ZSBsZXNzIGlmZGVmLXkgY29kZVxuIDM4MzpcdCAqIGFuZCBkZXBlbmQgb24gZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuIDM4NDpcdCAqL1xuIDM4NTpcdGV4dGVybiBpbnQgbG9ja19pc19oZWxkKGNvbnN0IHZvaWQgKik7XG4gMzg2Olx0ZXh0ZXJuIGludCBsb2NrZGVwX2lzX2hlbGQoY29uc3Qgdm9pZCAqKTtcbiAzODc6XHQjZGVmaW5lIGxvY2tkZXBfaXNfaGVsZF90eXBlKGwsIHIpXHRcdCgxKVxuIDM4ODpcdFxuIDM4OTpcdCNkZWZpbmUgbG9ja2RlcF9hc3NlcnQoYylcdFx0XHRkbyB7IH0gd2hpbGUgKDApXG4gMzkwOlx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9vbmNlKGMpXHRcdFx0ZG8geyB9IHdoaWxlICgwKVxuIDM5MTpcdFxuIDM5MjpcdCNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZChsKVx0XHRcdF9fYXNzdW1lX2N0eF9sb2NrKGwpXG4gMzkzOlx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9ub3RfaGVsZChsKVx0XHRkbyB7ICh2b2lkKShsKTsgfSB3aGlsZSAoMClcbiAzOTQ6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfd3JpdGUobClcdFx0X19hc3N1bWVfY3R4X2xvY2sobClcbiAzOTU6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfcmVhZChsKVx0XHRfX2Fzc3VtZV9zaGFyZWRfY3R4X2xvY2sobClcbiAzOTY6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfb25jZShsKVx0XHRkbyB7ICh2b2lkKShsKTsgfSB3aGlsZSAoMClcbiAzOTc6XHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X25vbmVfaGVsZF9vbmNlKClcdGRvIHsgfSB3aGlsZSAoMClcbiAzOTg6XHRcbiAzOTk6XHQjZGVmaW5lIGxvY2tkZXBfcmVjdXJzaW5nKHRzaylcdFx0XHQoMClcbiA0MDA6XHRcbiA0MDE6XHQjZGVmaW5lIE5JTF9DT09LSUUgKHN0cnVjdCBwaW5fY29va2llKXsgfVxuIDQwMjpcdFxuIDQwMzpcdCNkZWZpbmUgbG9ja2RlcF9waW5fbG9jayhsKVx0XHRcdCh7IHN0cnVjdCBwaW5fY29va2llIGNvb2tpZSA9IHsgfTsgY29va2llOyB9KVxuIDQwNDpcdCNkZWZpbmUgbG9ja2RlcF9yZXBpbl9sb2NrKGwsIGMpXHRcdGRvIHsgKHZvaWQpKGwpOyAodm9pZCkoYyk7IH0gd2hpbGUgKDApXG4gNDA1Olx0I2RlZmluZSBsb2NrZGVwX3VucGluX2xvY2sobCwgYylcdFx0ZG8geyAodm9pZCkobCk7ICh2b2lkKShjKTsgfSB3aGlsZSAoMClcbiA0MDY6XHRcbiA0MDc6XHQjZGVmaW5lIERFRklORV9XQUlUX09WRVJSSURFX01BUChfbmFtZSwgX3dhaXRfdHlwZSlcdFxcXG4gNDA4Olx0XHRzdHJ1Y3QgbG9ja2RlcF9tYXAgX19tYXliZV91bnVzZWQgX25hbWUgPSB7fVxuIDQwOTpcdFxuIDQxMDpcdCNlbmRpZiAvKiAhTE9DS0RFUCAqL1xuIDQxMTpcdFxuIDQxMjpcdCNpZmRlZiBDT05GSUdfUFJPVkVfTE9DS0lOR1xuIDQxMzpcdHZvaWQgbG9ja2RlcF9zZXRfbG9ja19jbXBfZm4oc3RydWN0IGxvY2tkZXBfbWFwICosIGxvY2tfY21wX2ZuLCBsb2NrX3ByaW50X2ZuKTtcbiA0MTQ6XHRcbiA0MTU6XHQjZGVmaW5lIGxvY2tfc2V0X2NtcF9mbihsb2NrLCAuLi4pXHRsb2NrZGVwX3NldF9sb2NrX2NtcF9mbihcdTAwMjYobG9jayktXHUwMDNlZGVwX21hcCwgX19WQV9BUkdTX18pXG4gNDE2Olx0I2Vsc2VcbiA0MTc6XHQjZGVmaW5lIGxvY2tfc2V0X2NtcF9mbihsb2NrLCAuLi4pXHRkbyB7IH0gd2hpbGUgKDApXG4gNDE4Olx0I2VuZGlmXG4gNDE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0OTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipNaXNzaW5nIFBpZWNlIERldGVjdGVkOiBMb2NrZGVwIERpc2NyZXBhbmN5KioKCkhtbSwgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gSSYjMzk7bSByZXZpZXdpbmcgdGhpcyBjb25kaXRpb25hbCBicmFuY2gsIGFuZCBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdCBzZWVpbmcgdGhlIGV4cGVjdGVkIGNhbGwgdG8gYGxvY2tkZXBfb2ZmKClgIHdpdGhpbiB0aGF0IGAjZWxzZWAgYmxvY2suIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gV2UgdXN1YWxseSBuZWVkIHRvIGVuc3VyZSB0aGUgbG9ja2RlcCBzZXR0aW5nIGlzIGhhbmRsZWQgY29uc2lzdGVudGx5IGFjcm9zcyBib3RoIGJyYW5jaGVzLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgbXkgbWVudGFsIG1vZGVsIGhlcmUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgZ3JlcCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nIG9idmlvdXMgb3IgaGF2ZSBtaXNzZWQgc29tZSBkb3duc3RyZWFtIGRlcGVuZGVuY3kgb3IgbWFjcm8gdGhhdCBoaWRlcyBpdC4gR290dGEgdmVyaWZ5IGBsb2NrZGVwX29mZmAgaXNuJiMzOTt0IGJlaW5nIGludm9rZWQgaW1wbGljaXRseSBzb21ld2hlcmUgZWxzZSBpbiB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCB0dXJucyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9ja2RlcF9vZmYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaD05NT1leHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjEwOTojZGVmaW5lIGxvY2tkZXBfb2ZmKClcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oPTMyMD1zdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuLS1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTMyMy1cbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjMyNDpzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF9vZmYodm9pZClcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTMyNS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5MjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25kaXRpb25hbCBGdW5jdGlvbiBEZWZpbml0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEkgc2VlIHRoYXQgdGhpcyBmdW5jdGlvbiwgd2hhdGV2ZXIgaXQgaXMsIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLCBidXQgb25seSB3aXRoaW4gdGhlIGAjZWxzZWAgYnJhbmNoIG9mIHNvbWUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIE15IGZpcnN0IGFzc3VtcHRpb24sIGFuZCBJJiMzOTtsbCBjb25maXJtIHRoaXMsIGlzIHRoYXQgdGhlIGBDT05GSUdfTE9DS0RFUGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgbmVjZXNzYXJ5IGZvciB0aGlzIGZ1bmN0aW9uIHRvIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgbWVhbmluZ2Z1bC4gT3RoZXJ3aXNlLCBpdCB3aWxsIGxpa2VseSBiZSBjb21waWxlZCBvdXQsIG9yIHJlc29sdmUgdG8gc29tZSBudWxsIG9wZXJhdGlvbi4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKTm93LCB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIGB0cmFjZV9jYWxsX2JwZmAsIGFuZCB0aGF0IHJpbmdzIGEgYmVsbC4gYHRyYWNlX2NhbGxfYnBmYCBpcyB0aGF0IGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGEgQlBGIHByb2dyYW0gaXMgYXR0YWNoZWQgdG8gYSB0cmFjZXBvaW50LiBUaGUgdHJhY2Vwb2ludCBiZWluZyBtb2RpZmllZCBpcyBgbG9ja19yZWxlYXNlYCwgYW5kIHRoYXQmIzM5O3MgZm91bmQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIEkmIzM5O2xsIHdhbnQgdG8gcmV2aWV3IGhvdyBgbG9ja19yZWxlYXNlYCBpcyBkZWZpbmVkLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIHRoZSBgbG9jay5oYCBmaWxlIGFuZCBpbnZvbHZlcyBgbG9ja19yZWxlYXNlYCBtYWtlcyBtZSBhc3N1bWUgdGhhdCBpdCBhbHNvIG11c3QgYmUgZGVmaW5lZCBjb25kaXRpb25hbGx5IHVuZGVyIGFuIGAjaWZkZWYgQ09ORklHX0xPQ0tERVBgIGd1YXJkLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuICAgMjpcdCN1bmRlZiBUUkFDRV9TWVNURU1cbiAgIDM6XHQjZGVmaW5lIFRSQUNFX1NZU1RFTSBsb2NrXG4gICA0Olx0XG4gICA1Olx0I2lmICFkZWZpbmVkKF9UUkFDRV9MT0NLX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG4gICA2Olx0I2RlZmluZSBfVFJBQ0VfTE9DS19IXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4gICA5Olx0XG4gIDEwOlx0LyogZmxhZ3MgZm9yIGxvY2s6Y29udGVudGlvbl9iZWdpbiAqL1xuICAxMTpcdCNkZWZpbmUgTENCX0ZfU1BJTlx0KDFVIFx1MDAzY1x1MDAzYyAwKVxuICAxMjpcdCNkZWZpbmUgTENCX0ZfUkVBRFx0KDFVIFx1MDAzY1x1MDAzYyAxKVxuICAxMzpcdCNkZWZpbmUgTENCX0ZfV1JJVEVcdCgxVSBcdTAwM2NcdTAwM2MgMilcbiAgMTQ6XHQjZGVmaW5lIExDQl9GX1JUXHQoMVUgXHUwMDNjXHUwMDNjIDMpXG4gIDE1Olx0I2RlZmluZSBMQ0JfRl9QRVJDUFVcdCgxVSBcdTAwM2NcdTAwM2MgNClcbiAgMTY6XHQjZGVmaW5lIExDQl9GX01VVEVYXHQoMVUgXHUwMDNjXHUwMDNjIDUpXG4gIDE3Olx0XG4gIDE4Olx0XG4gIDE5Olx0I2lmZGVmIENPTkZJR19MT0NLREVQXG4gIDIwOlx0XG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbG9ja2RlcC5oXHUwMDNlXG4gIDIyOlx0XG4gIDIzOlx0VFJBQ0VfRVZFTlQobG9ja19hY3F1aXJlLFxuICAyNDpcdFxuICAyNTpcdFx0VFBfUFJPVE8oc3RydWN0IGxvY2tkZXBfbWFwICpsb2NrLCB1bnNpZ25lZCBpbnQgc3ViY2xhc3MsXG4gIDI2Olx0XHRcdGludCB0cnlsb2NrLCBpbnQgcmVhZCwgaW50IGNoZWNrLFxuICAyNzpcdFx0XHRzdHJ1Y3QgbG9ja2RlcF9tYXAgKm5leHRfbG9jaywgdW5zaWduZWQgbG9uZyBpcCksXG4gIDI4Olx0XG4gIDI5Olx0XHRUUF9BUkdTKGxvY2ssIHN1YmNsYXNzLCB0cnlsb2NrLCByZWFkLCBjaGVjaywgbmV4dF9sb2NrLCBpcCksXG4gIDMwOlx0XG4gIDMxOlx0XHRUUF9TVFJVQ1RfX2VudHJ5KFxuICAzMjpcdFx0XHRfX2ZpZWxkKHVuc2lnbmVkIGludCwgZmxhZ3MpXG4gIDMzOlx0XHRcdF9fc3RyaW5nKG5hbWUsIGxvY2stXHUwMDNlbmFtZSlcbiAgMzQ6XHRcdFx0X19maWVsZCh2b2lkICosIGxvY2tkZXBfYWRkcilcbiAgMzU6XHRcdCksXG4gIDM2Olx0XG4gIDM3Olx0XHRUUF9mYXN0X2Fzc2lnbihcbiAgMzg6XHRcdFx0X19lbnRyeS1cdTAwM2VmbGFncyA9ICh0cnlsb2NrID8gMSA6IDApIHwgKHJlYWQgPyAyIDogMCk7XG4gIDM5Olx0XHRcdF9fYXNzaWduX3N0cihuYW1lKTtcbiAgNDA6XHRcdFx0X19lbnRyeS1cdTAwM2Vsb2NrZGVwX2FkZHIgPSBsb2NrO1xuICA0MTpcdFx0KSxcbiAgNDI6XHRcbiAgNDM6XHRcdFRQX3ByaW50ayhcJiMzNDslcCAlcyVzJXNcJiMzNDssIF9fZW50cnktXHUwMDNlbG9ja2RlcF9hZGRyLFxuICA0NDpcdFx0XHQgIChfX2VudHJ5LVx1MDAzZWZsYWdzIFx1MDAyNiAxKSA/IFwmIzM0O3RyeSBcJiMzNDsgOiBcJiMzNDtcJiMzNDssXG4gIDQ1Olx0XHRcdCAgKF9fZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IDIpID8gXCYjMzQ7cmVhZCBcJiMzNDsgOiBcJiMzNDtcJiMzNDssXG4gIDQ2Olx0XHRcdCAgX19nZXRfc3RyKG5hbWUpKVxuICA0NzpcdCk7XG4gIDQ4Olx0XG4gIDQ5Olx0REVDTEFSRV9FVkVOVF9DTEFTUyhsb2NrLFxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTG9ja2RlcCBEaXNhYmxpbmcgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciB0aGF0IGBsb2NrX3JlbGVhc2VgIGlzIGd1YXJkZWQgYnkgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBvYnZpb3VzbHksIGBDT05GSUdfTE9DS0RFUGAgaXMgYSByZXF1aXJlbWVudCBoZXJlLiBBbmQsIGFzIGV4cGVjdGVkLCB3ZSBhbHNvIG5lZWQgYm90aCBgQ09ORklHX0JQRl9FVkVOVFNgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCB0byBiZSBlbmFibGVkLCBiZWNhdXNlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIHRoYXQgaXQmIzM5O3MgZGlzYWJsaW5nIGxvY2tkZXAgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGBsb2NrX3JlbGVhc2VgLiBUaGUgaWRlYSBpcyB0byBwcmV2ZW50IHJlY3Vyc2lvbiBvciBsb2NrZGVwIGZhbHNlIHBvc2l0aXZlcy4gTWFrZXMgc2Vuc2U7IGlmIHRoZSBCUEYgcHJvZ3JhbSBkb2VzIHRoaW5ncyB0aGF0IHRyaWdnZXIgbG9ja2RlcCB3aGlsZSB3ZSYjMzk7cmUgKmFscmVhZHkqIGluc2lkZSBgbG9ja19yZWxlYXNlYCAod2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGxvY2tkZXApLCB3ZSYjMzk7cmUgZ29pbmcgdG8gZ2V0IG5vaXNlIG9yIGV2ZW4gY3Jhc2hlcy4gTm93LCBpcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd29ydGggZnV6emluZz8gWWVzLCB0aGlzIGlzIGEgZGVmaW5pdGUgeWVzLiBJdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGNvcmUgQlBGIHRyYWNpbmcgbG9naWMuIElmIGEgQlBGIHByb2dyYW0gaXMgYXR0YWNoZWQgdG8gYGxvY2tfcmVsZWFzZWAsIGl0IHdpbGwgbm93IHJ1biB3aXRoIGxvY2tkZXAgZGlzYWJsZWQuCgpTbywgd2hlcmUgc2hvdWxkIEkgZGlyZWN0IG15IGZ1enppbmcgZWZmb3J0cz8gSXQgc2VlbXMgbGlrZSBgdHJhY2VfY2FsbF9icGZgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdGFyZ2V0LiBJdCYjMzk7cyB0aGUgcG9pbnQgb2YgZW50cnkgZm9yIHRoaXMgd2hvbGUgdGhpbmcuIE5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGB0cmFjZV9jYWxsX2JwZmAgaXMgY2FsbGVkIGZyZXF1ZW50bHkgaWYgeW91JiMzOTt2ZSBnb3QgbWFueSB0cmFjZXBvaW50cyB3aXRoIEJQRiBwcm9ncmFtcyBhdHRhY2hlZC4gQW5kLCBpdCYjMzk7cyB0aGUgZXhhY3QgZnVuY3Rpb24gdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMuCgpMZXQgbWUgdGhpbmsgZm9yIGEgbW9tZW50Li4uIGlzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbiB0byBjb25zaWRlcj8gQWgsIHllcywgYGJwZl9wcm9nX3J1bl9hcnJheWAgaXMgY2FsbGVkIHdpdGhpbiBgdHJhY2VfY2FsbF9icGZgLiBCdXQsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGZvY3VzaW5nIG9uIGB0cmFjZV9jYWxsX2JwZmAgc2luY2UgaXQgaXMgdGhlIHRvcC1sZXZlbCBpbnRlcmZhY2UuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGB0cmFjZV9jYWxsX2JwZmAgaXMgc3RhdGljIG9yIGlubGluZS4gT2theSwgaXQmIzM5O3MgYHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KWAgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIEl0JiMzOTtzIG5vdCBzdGF0aWMuIEl0JiMzOTtzIGV4cG9ydGVkLCBvciBhdCBsZWFzdCBnbG9iYWxseSB2aXNpYmxlLgoKT2theSwgSSB0aGluayBJJiMzOTttIGhhcHB5IHRvIGZvY3VzIG9uIGB0cmFjZV9jYWxsX2JwZmAgYXMgdGhlIHByaW1hcnkgZnV6emluZyB0YXJnZXQuIEl0IHNlZW1zIGxpa2UgdGhlIGJlc3QgZm9jdXMgc3ltYm9sLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9OTY9c3RhdGljIHU2NCBicGZfdXByb2JlX211bHRpX2VudHJ5X2lwKHN0cnVjdCBicGZfcnVuX2N0eCAqY3R4KTtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtOTgtLyoqXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6OTk6ICogdHJhY2VfY2FsbF9icGYgLSBpbnZva2UgQlBGIHByb2dyYW1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDAtICogQGNhbGw6IHRyYWNlcG9pbnQgZXZlbnRcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTExLSAqL1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjExMjp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMTMte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMzktXHQgKiBJZiBicGZfcHJvZ19hcnJheV92YWxpZCgpIGZldGNoZWQgcHJvZ19hcnJheSB3YXNcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNDA6XHQgKiBub24tTlVMTCwgd2UgZ28gaW50byB0cmFjZV9jYWxsX2JwZigpIGFuZCBkbyB0aGUgYWN0dWFsXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTQxLVx0ICogcHJvcGVyIHJjdV9kZXJlZmVyZW5jZSgpIHVuZGVyIFJDVSBsb2NrLlxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjMtLyoqXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY0OiAqIHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZSAtIGludm9rZSBCUEYgcHJvZ3JhbSBpbiBmYXVsdGFibGUgY29udGV4dFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2NS0gKiBAY2FsbDogdHJhY2Vwb2ludCBldmVudFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjctICpcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjg6ICogVmFyaWFudCBvZiB0cmFjZV9jYWxsX2JwZigpIGZvciBmYXVsdGFibGUgdHJhY2Vwb2ludHMgKHN5c2NhbGxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjktICogdHJhY2Vwb2ludHMpLiBTdXBwb3J0cyBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGJ5IHVzaW5nIHJjdV90YXNrc190cmFjZVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNzgtICovXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTc5OnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBgdHJhY2VfY2FsbF9icGZgIHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gQlBGLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY29uc2lkZXJpbmcgYWxsIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfTE9DS0RFUGAg4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMuCgpOb3csIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuLi4gd2hlcmUgYXJlIGl0cyBkZXBlbmRlbmNpZXM/IEFoLCBpdCYjMzk7cyBpbiBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgcmlnaHQuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBgbG9ja2AgdHJhY2Vwb2ludHMgdGhlbXNlbHZlcyBhcmUgZW5hYmxlZCB2aWEgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBga2VybmVsL3RyYWNlL0tjb25maWdgIG9yIHBvc3NpYmx5IGBsaWIvS2NvbmZpZy5kZWJ1Z2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgb3B0aW9uIHJlbGF0ZWQgdG8gZW5hYmxpbmcgbG9jayB0cmFjZXBvaW50cyB0aGF0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9ja19yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz01OTY9dm9pZCBfX2luaXQgc21wX3NldHVwX3Byb2Nlc3Nvcl9pZCh2b2lkKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTYwOC1cdCAqIHVzaW5nIHBlcmNwdSB2YXJpYWJsZSBlYXJseSwgZm9yIGV4YW1wbGUsIGxvY2tkZXAgd2lsbFxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM6NjA5Olx0ICogYWNjZXNzIHBlcmNwdSB2YXJpYWJsZSBpbnNpZGUgbG9ja19yZWxlYXNlXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy02MTAtXHQgKi9cbi0tXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM9MjY3PWFzbWxpbmthZ2Ugdm9pZCBfX2twcm9iZXMgZG9fc3BhcmM2NF9mYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDQwLVx0aWYgKGZhdWx0IFx1MDAyNiBWTV9GQVVMVF9DT01QTEVURUQpXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM6NDQxOlx0XHRnb3RvIGxvY2tfcmVsZWFzZWQ7XG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDQyLVxuLS1cbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYy00NjQtXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM6NDY1OmxvY2tfcmVsZWFzZWQ6XG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDY2LVx0bW1fcnNzID0gZ2V0X21tX3JzcyhtbSk7XG4tLVxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN5c2ZzX29wcyB0aHJlc2hvbGRfb3BzID0ge1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwMzUtXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMDM2OnN0YXRpYyB2b2lkIHRocmVzaG9sZF9ibG9ja19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwMzctXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYz0xMDM4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIHRocmVzaG9sZF9rdHlwZSA9IHtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYy0xMDQwLVx0LmRlZmF1bHRfZ3JvdXBzXHRcdD0gZGVmYXVsdF9ncm91cHMsXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMDQxOlx0LnJlbGVhc2VcdFx0PSB0aHJlc2hvbGRfYmxvY2tfcmVsZWFzZSxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwNDItfTtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYz0xMTU0PXN0YXRpYyBpbnQgdGhyZXNob2xkX2NyZWF0ZV9iYW5rKHN0cnVjdCB0aHJlc2hvbGRfYmFuayAqKmJwLCB1bnNpZ25lZCBpbnQgY3B1LFxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTExOTQtXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMTk1OnN0YXRpYyB2b2lkIHRocmVzaG9sZF9ibG9ja19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTE5Ni17XG4tLVxuZHJpdmVycy9hY3BpL2RvY2suYz01MDI9c3RhdGljIHNzaXplX3QgdW5kb2NrX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9hY3BpL2RvY2suYy01MTMtXHRyZXQgPSBoYW5kbGVfZWplY3RfcmVxdWVzdChkb2NrX3N0YXRpb24sIEFDUElfTk9USUZZX0VKRUNUX1JFUVVFU1QpO1xuZHJpdmVycy9hY3BpL2RvY2suYzo1MTQ6XHRhY3BpX3NjYW5fbG9ja19yZWxlYXNlKCk7XG5kcml2ZXJzL2FjcGkvZG9jay5jLTUxNS1cdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTYwPUVYUE9SVF9TWU1CT0xfR1BMKGFjcGlfc2Nhbl9sb2NrX2FjcXVpcmUpO1xuZHJpdmVycy9hY3BpL3NjYW4uYy02MS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM6NjI6dm9pZCBhY3BpX3NjYW5fbG9ja19yZWxlYXNlKHZvaWQpXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTYzLXtcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTY1LX1cbmRyaXZlcnMvYWNwaS9zY2FuLmM6NjY6RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9zY2FuX2xvY2tfcmVsZWFzZSk7XG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTY3LVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjQyOT1zdGF0aWMgdm9pZCBhY3BpX3NjYW5fY2xlYXJfZGVwX2ZuKHZvaWQgKmRldiwgYXN5bmNfY29va2llX3QgY29va2llKVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjQzNC1cdGFjcGlfYnVzX2F0dGFjaChhZGV2LCAodm9pZCAqKXRydWUpO1xuZHJpdmVycy9hY3BpL3NjYW4uYzoyNDM1Olx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xuZHJpdmVycy9hY3BpL3NjYW4uYy0yNDM2LVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjkzMj1zdGF0aWMgdm9pZCBhY3BpX3RhYmxlX2V2ZW50c19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9hY3BpL3NjYW4uYy0yOTM1LVx0YWNwaV9idXNfc2NhbihBQ1BJX1JPT1RfT0JKRUNUKTtcbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjkzNjpcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjkzNy1cbi0tXG5kcml2ZXJzL2FjcGkvc2xlZXAuYz01Mzk9c3RhdGljIHZvaWQgYWNwaV9wbV9lbmQodm9pZClcbi0tXG5kcml2ZXJzL2FjcGkvc2xlZXAuYy01NDEtXHRhY3BpX3R1cm5fb2ZmX3VudXNlZF9wb3dlcl9yZXNvdXJjZXMoKTtcbmRyaXZlcnMvYWNwaS9zbGVlcC5jOjU0MjpcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTU0My1cdC8qXG4tLVxuZHJpdmVycy9hY3BpL3NsZWVwLmM9ODQzPXZvaWQgYWNwaV9zMmlkbGVfZW5kKHZvaWQpXG5kcml2ZXJzL2FjcGkvc2xlZXAuYy04NDQte1xuZHJpdmVycy9hY3BpL3NsZWVwLmM6ODQ1Olx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xuZHJpdmVycy9hY3BpL3NsZWVwLmMtODQ2LX1cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9OTA9RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcik7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTEtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6OTI6c3RhdGljIHZvaWQgbWVtb3J5X2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkzLXtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NjgyPXN0YXRpYyBpbnQgX19hZGRfbWVtb3J5X2Jsb2NrKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbW9yeSlcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNjg3LVx0bWVtb3J5LVx1MDAzZWRldi5pZCA9IG1lbW9yeS1cdTAwM2VzdGFydF9zZWN0aW9uX25yIC8gc2VjdGlvbnNfcGVyX2Jsb2NrO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjY4ODpcdG1lbW9yeS1cdTAwM2VkZXYucmVsZWFzZSA9IG1lbW9yeV9ibG9ja19yZWxlYXNlO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY4OS1cdG1lbW9yeS1cdTAwM2VkZXYuZ3JvdXBzID0gbWVtb3J5X21lbWJsa19hdHRyX2dyb3Vwcztcbi0tXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM9MzE1PXZvaWQgZG1hX2ZlbmNlX2VuZF9zaWduYWxsaW5nKGJvb2wgY29va2llKVxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYy0zMTktXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM6MzIwOlx0bG9ja19yZWxlYXNlKFx1MDAyNmRtYV9mZW5jZV9sb2NrZGVwX21hcCwgX1JFVF9JUF8pO1xuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMyMS19XG4tLVxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jPTMyND12b2lkIF9fZG1hX2ZlbmNlX21pZ2h0X3dhaXQodm9pZClcbi0tXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMtMzI5LVx0aWYgKHRtcClcbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYzozMzA6XHRcdGxvY2tfcmVsZWFzZShcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXAsIF9USElTX0lQXyk7XG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMtMzMxLVx0bG9ja19tYXBfYWNxdWlyZShcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXApO1xuLS1cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jPTQyMT1zdGF0aWMgc3NpemVfdCBibG9ja19jZV9jb3VudF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTQyOS0vKiBERVZJQ0UgYmxvY2sga29iamVjdCByZWxlYXNlKCkgZnVuY3Rpb24gKi9cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jOjQzMDpzdGF0aWMgdm9pZCBlZGFjX2RldmljZV9jdHJsX2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00MzEte1xuLS1cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jPTQ4MT1zdGF0aWMgc3RydWN0IGtvYmpfdHlwZSBrdHlwZV9ibG9ja19jdHJsID0ge1xuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM6NDgyOlx0LnJlbGVhc2UgPSBlZGFjX2RldmljZV9jdHJsX2Jsb2NrX3JlbGVhc2UsXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00ODMtXHQuc3lzZnNfb3BzID0gXHUwMDI2ZGV2aWNlX2Jsb2NrX29wcyxcbi0tXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYz01NjI9c3RhdGljIHZvaWQgZWRhY19kZXZpY2VfZGVsZXRlX2Jsb2NrKHN0cnVjdCBlZGFjX2RldmljZV9jdGxfaW5mbyAqZWRhY19kZXYsXG4tLVxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmMtNTgwLVx0LyogdW5yZWdpc3RlciB0aGlzIGJsb2NrJiMzOTtzIGtvYmplY3QsIFNFRTpcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jOjU4MTpcdCAqXHRlZGFjX2RldmljZV9jdHJsX2Jsb2NrX3JlbGVhc2UoKSBjYWxsYmFjayBvcGVyYXRpb25cbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTU4Mi1cdCAqL1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYz0xMTU9c21jX2NoYW5uZWxfbG9ja19hY3F1aXJlKHN0cnVjdCBzY21pX3NtYyAqc2NtaV9pbmZvLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0xMjMtXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc3RydWN0IHNjbWlfc21jICpzY21pX2luZm8pXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMTI1LXtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM9MjIzPXN0YXRpYyBpbnQgc21jX3NlbmRfbWVzc2FnZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0yNDctXHRpZiAocmVzLmEwKSB7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MjQ4Olx0XHRzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc2NtaV9pbmZvKTtcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0yNDktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM9MjY0PXN0YXRpYyB2b2lkIHNtY19tYXJrX3R4ZG9uZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLCBpbnQgcmV0LFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYy0yNjgtXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MjY5Olx0c21jX2NoYW5uZWxfbG9ja19yZWxlYXNlKHNjbWlfaW5mbyk7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMjcwLX1cbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYz0xMzE9c3RhdGljIGludCBtbHhiZjJfZ3Bpb19sb2NrX2FjcXVpcmUoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTE1Ni0gKi9cbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jOjE1NzpzdGF0aWMgdm9pZCBtbHhiZjJfZ3Bpb19sb2NrX3JlbGVhc2Uoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMTU4LVx0X19yZWxlYXNlcyhcdTAwMjZncy1cdTAwM2VjaGlwLmxvY2spXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM9MTg0PXN0YXRpYyBpbnQgbWx4YmYyX2dwaW9fZGlyZWN0aW9uX2lucHV0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjAwLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM6MjAxOlx0bWx4YmYyX2dwaW9fbG9ja19yZWxlYXNlKGdzKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTIwMi1cbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYz0yMTA9c3RhdGljIGludCBtbHhiZjJfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjI4LVxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM6MjI5Olx0bWx4YmYyX2dwaW9fbG9ja19yZWxlYXNlKGdzKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTIzMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jPTExMjQ9dm9pZCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyICppdGVyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMtMTEzNC1cdH1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmM6MTEzNTpcdGxvY2tfcmVsZWFzZShcdTAwMjZjb25uZWN0b3JfbGlzdF9pdGVyX2RlcF9tYXAsIF9SRVRfSVBfKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMtMTEzNi19XG4tLVxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jPTEzOT1zdGF0aWMgdm9pZCB0dG1fYm9fcmVzZXJ2ZV9kZWFkbG9jayhzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jLTE1My1cdC8qIFRoZSBkZWFkbG9jayB3aWxsIGJlIGNhdWdodCBieSBXVyBtdXRleCwgZG9uJiMzOTt0IHdhcm4gYWJvdXQgaXQgKi9cbmRyaXZlcnMvZ3B1L2RybS90dG0vdGVzdHMvdHRtX2JvX3Rlc3QuYzoxNTQ6XHRsb2NrX3JlbGVhc2UoXHUwMDI2Ym8yLVx1MDAzZWJhc2UucmVzdi1cdTAwM2Vsb2NrLmJhc2UuZGVwX21hcCwgMSk7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3Rlc3RzL3R0bV9ib190ZXN0LmMtMTU1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jPTEwMD1zdGF0aWMgdm9pZCB4ZV9wbV9ibG9ja19lbmRfc2lnbmFsbGluZyh2b2lkKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BtLmMtMTAxLXtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jOjEwMjpcdGxvY2tfcmVsZWFzZShcdTAwMjZ4ZV9wbV9ibG9ja19sb2NrZGVwX21hcCwgX1JFVF9JUF8pO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BtLmMtMTAzLX1cbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM9ODE1PXN0YXRpYyBpbnQgZGV2bV9od3NwaW5fbG9ja19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODI0LVxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jOjgyNTpzdGF0aWMgdm9pZCBkZXZtX2h3c3Bpbl9sb2NrX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMpXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODI2LXtcbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM9ODQzPWludCBkZXZtX2h3c3Bpbl9sb2NrX2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaHdzcGlubG9jayAqaHdsb2NrKVxuLS1cbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NDYtXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM6ODQ3Olx0cmV0ID0gZGV2cmVzX3JlbGVhc2UoZGV2LCBkZXZtX2h3c3Bpbl9sb2NrX3JlbGVhc2UsXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODQ4LVx0XHRcdCAgICAgZGV2bV9od3NwaW5fbG9ja19tYXRjaCwgaHdsb2NrKTtcbi0tXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM9ODcwPXN0cnVjdCBod3NwaW5sb2NrICpkZXZtX2h3c3Bpbl9sb2NrX3JlcXVlc3Rfc3BlY2lmaWMoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NzQtXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmM6ODc1Olx0cHRyID0gZGV2cmVzX2FsbG9jKGRldm1faHdzcGluX2xvY2tfcmVsZWFzZSwgc2l6ZW9mKCpwdHIpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NzYtXHRpZiAoIXB0cilcbi0tXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy05Ny1cbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jOjk4OnN0YXRpYyB2b2lkIGlpb19idWZmZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTk5LXtcbi0tXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYz0xMjI9c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19wdXQoc3RydWN0IGlpb19kbWFfYnVmZmVyX2Jsb2NrICpibG9jaylcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTEyMy17XG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYzoxMjQ6XHRrcmVmX3B1dChcdTAwMjZibG9jay1cdTAwM2VrcmVmLCBpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2UpO1xuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTI1LX1cbi0tXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYz0xMzQ9c3RhdGljIHZvaWQgaWlvX2RtYV9idWZmZXJfY2xlYW51cF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0Mi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShibG9jaywgX2Jsb2NrLCBcdTAwMjZibG9ja19saXN0LCBoZWFkKVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6MTQzOlx0XHRpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2UoXHUwMDI2YmxvY2stXHUwMDNla3JlZik7XG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xNDQtfVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTQ1PXN0YXRpYyBERUNMQVJFX1dPUksoaWlvX2RtYV9idWZmZXJfY2xlYW51cF93b3JrLCBpaW9fZG1hX2J1ZmZlcl9jbGVhbnVwX3dvcmtlcik7XG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xNDYtXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYzoxNDc6c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19yZWxlYXNlX2F0b21pYyhzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0OC17XG4tLVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTYyPXN0YXRpYyB2b2lkIGlpb19idWZmZXJfYmxvY2tfcHV0X2F0b21pYyhzdHJ1Y3QgaWlvX2RtYV9idWZmZXJfYmxvY2sgKmJsb2NrKVxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTYzLXtcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jOjE2NDpcdGtyZWZfcHV0KFx1MDAyNmJsb2NrLVx1MDAzZWtyZWYsIGlpb19idWZmZXJfYmxvY2tfcmVsZWFzZV9hdG9taWMpO1xuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTY1LX1cbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jPTI1Mz1zdGF0aWMgaW50IG10ZGJsb2NrX29wZW4oc3RydWN0IG10ZF9ibGt0cmFuc19kZXYgKm1iZClcbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4MS1cbmRyaXZlcnMvbXRkL210ZGJsb2NrLmM6MjgyOnN0YXRpYyB2b2lkIG10ZGJsb2NrX3JlbGVhc2Uoc3RydWN0IG10ZF9ibGt0cmFuc19kZXYgKm1iZClcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmMtMjgzLXtcbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4NS1cbmRyaXZlcnMvbXRkL210ZGJsb2NrLmM6Mjg2Olx0cHJfZGVidWcoXCYjMzQ7bXRkYmxvY2tfcmVsZWFzZVxcblwmIzM0Oyk7XG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4Ny1cbi0tXG5kcml2ZXJzL210ZC9tdGRibG9jay5jPTM0Mj1zdGF0aWMgc3RydWN0IG10ZF9ibGt0cmFuc19vcHMgbXRkYmxvY2tfdHIgPSB7XG4tLVxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0zNDgtXHQuZmx1c2hcdFx0PSBtdGRibG9ja19mbHVzaCxcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmM6MzQ5Olx0LnJlbGVhc2VcdD0gbXRkYmxvY2tfcmVsZWFzZSxcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmMtMzUwLVx0LnJlYWRzZWN0XHQ9IG10ZGJsb2NrX3JlYWRzZWN0LFxuLS1cbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jPTIzMD1zdGF0aWMgaW50IHViaWJsb2NrX29wZW4oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGJsa19tb2RlX3QgbW9kZSlcbi0tXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yNzEtXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYzoyNzI6c3RhdGljIHZvaWQgdWJpYmxvY2tfcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZ2QpXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yNzMte1xuLS1cbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jPTI5NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHViaWJsb2NrX29wcyA9IHtcbi0tXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yOTctXHQub3BlbiA9IHViaWJsb2NrX29wZW4sXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYzoyOTg6XHQucmVsZWFzZSA9IHViaWJsb2NrX3JlbGVhc2UsXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yOTktXHQuZ2V0Z2VvXHQ9IHViaWJsb2NrX2dldGdlbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYz0xNDE9cHJlc3RlcmFfY291bnRlcl9ibG9ja19nZXQoc3RydWN0IHByZXN0ZXJhX2NvdW50ZXIgKmNvdW50ZXIsIHUzMiBjbGllbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9jb3VudGVyLmMtMTkxLWVycl9zdGF0czpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jOjE5MjpcdHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShjb3VudGVyLVx1MDAzZXN3LCBibG9jay1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYy0xOTMtZXJyX2Jsb2NrOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jPTE5OD1zdGF0aWMgdm9pZCBwcmVzdGVyYV9jb3VudGVyX2Jsb2NrX3B1dChzdHJ1Y3QgcHJlc3RlcmFfY291bnRlciAqY291bnRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYy0yMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYzoyMTg6XHRwcmVzdGVyYV9od19jb3VudGVyX2Jsb2NrX3JlbGVhc2UoY291bnRlci1cdTAwM2VzdywgYmxvY2stXHUwMDNlaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9jb3VudGVyLmMtMjE5LVx0aWRyX2Rlc3Ryb3koXHUwMDI2YmxvY2stXHUwMDNlY291bnRlcl9pZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jPTc5PXByZXN0ZXJhX2Zsb3dfYmxvY2tfY3JlYXRlKHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jOjEwMTpzdGF0aWMgdm9pZCBwcmVzdGVyYV9mbG93X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTEwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmM9MTczPXByZXN0ZXJhX2Zsb3dfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTE4OS1cdFx0XHRcdFx0ICAgICAgIHN3LCBibG9jayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jOjE5MDpcdFx0XHRcdFx0ICAgICAgIHByZXN0ZXJhX2Zsb3dfYmxvY2tfcmVsZWFzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2Zsb3cuYy0xOTEtXHRcdGlmIChJU19FUlIoYmxvY2tfY2IpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jPTIzNDA9aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuYy0yMzYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jOjIzNjI6aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuYy0yMzYzLVx0XHRcdFx0ICAgICAgdTMyIGJsb2NrX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaD0yMzk9aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDEtXHRcdFx0XHQgIHUzMiAqbnVtX2NvdW50ZXJzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaDoyNDI6aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDMtXHRcdFx0XHQgICAgICB1MzIgYmxvY2tfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0xNzQ9c3RhdGljIGludCBtbHhzd19zcF9mbG93X2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0xOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93LmM6MTkyOnN0YXRpYyB2b2lkIG1seHN3X3NwX3RjX2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0xOTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0yMDE9c3RhdGljIGludCBtbHhzd19zcF9zZXR1cF90Y19ibG9ja19iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0yMTgtXHRcdFx0XHRcdCAgICAgICBtbHhzd19zcCwgZmxvd19ibG9jayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYzoyMTk6XHRcdFx0XHRcdCAgICAgICBtbHhzd19zcF90Y19ibG9ja19yZWxlYXNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYy0yMjAtXHRcdGlmIChJU19FUlIoYmxvY2tfY2IpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTEzPW1seHN3X3NwX3FldmVudF9ibG9ja19kZXN0cm95KHN0cnVjdCBtbHhzd19zcF9xZXZlbnRfYmxvY2sgKnFldmVudF9ibG9jaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jLTIxMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jOjIxMjA6c3RhdGljIHZvaWQgbWx4c3dfc3BfcWV2ZW50X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjEyMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTY5PW1seHN3X3NwX3NldHVwX3RjX2Jsb2NrX3FldmVudF9iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjE4OC1cdFx0YmxvY2tfY2IgPSBmbG93X2Jsb2NrX2NiX2FsbG9jKG1seHN3X3NwX3FldmVudF9ibG9ja19jYiwgbWx4c3dfc3AsIHFldmVudF9ibG9jayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmM6MjE4OTpcdFx0XHRcdFx0ICAgICAgIG1seHN3X3NwX3FldmVudF9ibG9ja19yZWxlYXNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjE5MC1cdFx0aWYgKElTX0VSUihibG9ja19jYikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MTYwPWludCBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTk3OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNzE9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTA6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDc6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwOC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzE2LVx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMTc6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTMyMj1zdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3dyaXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNDQ6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNjM6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzcxLVx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzI6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTUwMT1zdGF0aWMgaW50IGxhbjc0M3hfaHNfZWVwcm9tX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE1LVx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTY6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTctXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzAtXHRcdGlmIChyZXR2YWwgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MzE6XHRcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTMyLVx0XHRcdHJldHVybiByZXR2YWw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Mzc6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NTQ2PXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTYwLVx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjE6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01ODAtXHRcdHJldHZhbCA9IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTgxOlx0XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01ODItXHRcdGlmIChyZXR2YWwgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM3PXN0YXRpYyB2b2lkIHBjaTExeDF4X3N0cmFwX2dldF9zdGF0dXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTMtXHRjZmdfbG9hZCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRVRIX1NZU19DT05GSUdfTE9BRF9TVEFSVEVEX1JFRyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NTQ6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NS1cdGh3X2NmZyA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFdfQ0ZHKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg9MTIwOD1pbnQgbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTE2IHRpbWVvdXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjEyMDk6dm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0xMjEwLXZvaWQgbGFuNzQzeF9tYWNfZmxvd19jdHJsX3NldF9lbmFibGVzKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYz0xMDI3PWludCBhY3BpcGhwX2Rpc2FibGVfc2xvdChzdHJ1Y3QgYWNwaXBocF9zbG90ICpzbG90KVxuLS1cbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMtMTAzOC1cdHBjaV91bmxvY2tfcmVzY2FuX3JlbW92ZSgpO1xuZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYzoxMDM5Olx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xuZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYy0xMDQwLVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0xODk9c3RhdGljIHN0cnVjdCBwb3NpeF9jbG9ja19vcGVyYXRpb25zIHB0cF9jbG9ja19vcHMgPSB7XG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjAxLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MjAyOnN0YXRpYyB2b2lkIHB0cF9jbG9ja19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMy17XG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MzE2PXN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDM0LVx0cHRwLVx1MDAzZWRldi5ncm91cHMgPSBwdHAtXHUwMDNlcGluX2F0dHJfZ3JvdXBzO1xuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6NDM1Olx0cHRwLVx1MDAzZWRldi5yZWxlYXNlID0gcHRwX2Nsb2NrX3JlbGVhc2U7XG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy00MzYtXHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2cHRwLVx1MDAzZWRldiwgcHRwKTtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz00OTc9aW50IHB0cF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cClcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy01MjYtXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzo1Mjc6XHQvKiBUaGUgZmluYWwgcHV0LCBub3JtYWxseSBoZXJlLCB3aWxsIGludm9rZSBwdHBfY2xvY2tfcmVsZWFzZSgpLiAqL1xuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNTI4LVx0cHV0X2RldmljZShcdTAwMjZwdHAtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL3Njc2kvc3IuYz00OTU9c3RhdGljIGludCBzcl9ibG9ja19vcGVuKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBibGtfbW9kZV90IG1vZGUpXG4tLVxuZHJpdmVycy9zY3NpL3NyLmMtNTIwLVxuZHJpdmVycy9zY3NpL3NyLmM6NTIxOnN0YXRpYyB2b2lkIHNyX2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXG5kcml2ZXJzL3Njc2kvc3IuYy01MjIte1xuLS1cbmRyaXZlcnMvc2NzaS9zci5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHNyX2Jkb3BzID1cbi0tXG5kcml2ZXJzL3Njc2kvc3IuYy01OTItXHQub3Blblx0XHQ9IHNyX2Jsb2NrX29wZW4sXG5kcml2ZXJzL3Njc2kvc3IuYzo1OTM6XHQucmVsZWFzZVx0PSBzcl9ibG9ja19yZWxlYXNlLFxuZHJpdmVycy9zY3NpL3NyLmMtNTk0LVx0LmlvY3RsXHRcdD0gc3JfYmxvY2tfaW9jdGwsXG4tLVxuZnMvYWZzL2Zsb2NrLmM9MjgxPXZvaWQgYWZzX2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZnMvYWZzL2Zsb2NrLmMtMzAzLVx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiB2bm9kZS1cdTAwM2Vsb2NrX3N0YXRlICE9IEFGU19WTk9ERV9MT0NLX0RFTEVURUQpIHtcbmZzL2Fmcy9mbG9jay5jOjMwNDpcdFx0XHR0cmFjZV9hZnNfZmxvY2tfZXYodm5vZGUsIE5VTEwsIGFmc19mbG9ja19yZWxlYXNlX2ZhaWwsXG5mcy9hZnMvZmxvY2suYy0zMDUtXHRcdFx0XHRcdCAgIHJldCk7XG4tLVxuZnMvaHVnZXRsYmZzL2lub2RlLmM9Mzc5PXN0YXRpYyB2b2lkIGh1Z2V0bGJfdW5tYXBfZmlsZV9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTQ0MC1cdFx0XHR1cF93cml0ZShcdTAwMjZ2bWFfbG9jay1cdTAwM2Vyd19zZW1hKTtcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jOjQ0MTpcdFx0XHRrcmVmX3B1dChcdTAwMjZ2bWFfbG9jay1cdTAwM2VyZWZzLCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2UpO1xuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDQyLVx0XHRcdGdvdG8gcmV0cnk7XG4tLVxuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU0LVxuZnMvaHVnZXRsYmZzL2lub2RlLmM6NDU1Olx0XHRrcmVmX3B1dChcdTAwMjZ2bWFfbG9jay1cdTAwM2VyZWZzLCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2UpO1xuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU2LVx0XHRodWdldGxiX3ZtYV91bmxvY2tfd3JpdGUodm1hKTtcbi0tXG5mcy9uZnMvbmZzNHByb2MuYz03MzQzPXN0YXRpYyB2b2lkIG5mczRfbG9ja19kb25lKHN0cnVjdCBycGNfdGFzayAqdGFzaywgdm9pZCAqY2FsbGRhdGEpXG4tLVxuZnMvbmZzL25mczRwcm9jLmMtNzM5MC1cbmZzL25mcy9uZnM0cHJvYy5jOjczOTE6c3RhdGljIHZvaWQgbmZzNF9sb2NrX3JlbGVhc2Uodm9pZCAqY2FsbGRhdGEpXG5mcy9uZnMvbmZzNHByb2MuYy03MzkyLXtcbi0tXG5mcy9uZnMvbmZzNHByb2MuYz03NDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBjX2NhbGxfb3BzIG5mczRfbG9ja19vcHMgPSB7XG4tLVxuZnMvbmZzL25mczRwcm9jLmMtNzQxMi1cdC5ycGNfY2FsbF9kb25lID0gbmZzNF9sb2NrX2RvbmUsXG5mcy9uZnMvbmZzNHByb2MuYzo3NDEzOlx0LnJwY19yZWxlYXNlID0gbmZzNF9sb2NrX3JlbGVhc2UsXG5mcy9uZnMvbmZzNHByb2MuYy03NDE0LX07XG4tLVxuZnMvbmZzZC9uZnM0cHJvYy5jPTM1OTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnNkNF9vcGVyYXRpb24gbmZzZDRfb3BzW10gPSB7XG4tLVxuZnMvbmZzZC9uZnM0cHJvYy5jLTM2NDYtXHRcdC5vcF9mdW5jID0gbmZzZDRfbG9jayxcbmZzL25mc2QvbmZzNHByb2MuYzozNjQ3Olx0XHQub3BfcmVsZWFzZSA9IG5mc2Q0X2xvY2tfcmVsZWFzZSxcbmZzL25mc2QvbmZzNHByb2MuYy0zNjQ4LVx0XHQub3BfZmxhZ3MgPSBPUF9NT0RJRklFU19TT01FVEhJTkcgfFxuLS1cbmZzL25mc2QvbmZzNHN0YXRlLmM9Mzg1PXN0YXRpYyB2b2lkXG5mcy9uZnNkL25mczRzdGF0ZS5jOjM4NjpuZnNkNF9jYl9ub3RpZnlfbG9ja19yZWxlYXNlKHN0cnVjdCBuZnNkNF9jYWxsYmFjayAqY2IpXG5mcy9uZnNkL25mczRzdGF0ZS5jLTM4Ny17XG4tLVxuZnMvbmZzZC9uZnM0c3RhdGUuYz0zOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnNkNF9jYWxsYmFja19vcHMgbmZzZDRfY2Jfbm90aWZ5X2xvY2tfb3BzID0ge1xuLS1cbmZzL25mc2QvbmZzNHN0YXRlLmMtMzk2LVx0LmRvbmVcdFx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19kb25lLFxuZnMvbmZzZC9uZnM0c3RhdGUuYzozOTc6XHQucmVsZWFzZVx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19yZWxlYXNlLFxuZnMvbmZzZC9uZnM0c3RhdGUuYy0zOTgtXHQub3Bjb2RlXHRcdD0gT1BfQ0JfTk9USUZZX0xPQ0ssXG4tLVxuZnMvbmZzZC9uZnM0c3RhdGUuYz04NDI4PW5mc2Q0X2xvY2soc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IG5mc2Q0X2NvbXBvdW5kX3N0YXRlICpjc3RhdGUsXG4tLVxuZnMvbmZzZC9uZnM0c3RhdGUuYy04NjUyLVxuZnMvbmZzZC9uZnM0c3RhdGUuYzo4NjUzOnZvaWQgbmZzZDRfbG9ja19yZWxlYXNlKHVuaW9uIG5mc2Q0X29wX3UgKnUpXG5mcy9uZnNkL25mczRzdGF0ZS5jLTg2NTQte1xuLS1cbmZzL25mc2QveGRyNC5oPTEwMDg9ZXh0ZXJuIF9fYmUzMiBuZnNkNF9sb2NrKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBuZnNkNF9jb21wb3VuZF9zdGF0ZSAqLFxuZnMvbmZzZC94ZHI0LmgtMTAwOS1cdFx0dW5pb24gbmZzZDRfb3BfdSAqdSk7XG5mcy9uZnNkL3hkcjQuaDoxMDEwOmV4dGVybiB2b2lkIG5mc2Q0X2xvY2tfcmVsZWFzZSh1bmlvbiBuZnNkNF9vcF91ICp1KTtcbmZzL25mc2QveGRyNC5oLTEwMTEtZXh0ZXJuIF9fYmUzMiBuZnNkNF9sb2NrdChzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3QgbmZzZDRfY29tcG91bmRfc3RhdGUgKixcbi0tXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jPTQ2PXN0YXRpYyB2b2lkIGRsbV9pbml0X2xvY2soc3RydWN0IGRsbV9sb2NrICpuZXdsb2NrLCBpbnQgdHlwZSxcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmMtNDctXHRcdFx0ICB1OCBub2RlLCB1NjQgY29va2llKTtcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmM6NDg6c3RhdGljIHZvaWQgZGxtX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTQ5LXN0YXRpYyB2b2lkIGRsbV9sb2NrX2RldGFjaF9sb2NrcmVzKHN0cnVjdCBkbG1fbG9jayAqbG9jayk7XG4tLVxuZnMvb2NmczIvZGxtL2RsbWxvY2suYz0zMjk9dm9pZCBkbG1fbG9ja19wdXQoc3RydWN0IGRsbV9sb2NrICpsb2NrKVxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy0zMzAte1xuZnMvb2NmczIvZGxtL2RsbWxvY2suYzozMzE6XHRrcmVmX3B1dChcdTAwMjZsb2NrLVx1MDAzZWxvY2tfcmVmcywgZGxtX2xvY2tfcmVsZWFzZSk7XG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzMi19XG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzMy1cbmZzL29jZnMyL2RsbS9kbG1sb2NrLmM6MzM0OnN0YXRpYyB2b2lkIGRsbV9sb2NrX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzNS17XG4tLVxuZnMvcmVzY3RybC9pbnRlcm5hbC5oPTQ4MD1pbnQgcmR0X3BzZXVkb19sb2NrX2luaXQodm9pZCk7XG5mcy9yZXNjdHJsL2ludGVybmFsLmgtNDgxLVxuZnMvcmVzY3RybC9pbnRlcm5hbC5oOjQ4Mjp2b2lkIHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKHZvaWQpO1xuZnMvcmVzY3RybC9pbnRlcm5hbC5oLTQ4My1cbi0tXG5mcy9yZXNjdHJsL2ludGVybmFsLmg9NTA5PXN0YXRpYyBpbmxpbmUgaW50IHJkdF9wc2V1ZG9fbG9ja19pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH1cbmZzL3Jlc2N0cmwvaW50ZXJuYWwuaDo1MTA6c3RhdGljIGlubGluZSB2b2lkIHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKHZvaWQpIHsgfVxuZnMvcmVzY3RybC9pbnRlcm5hbC5oLTUxMS1zdGF0aWMgaW5saW5lIGludCByZHRncm91cF9wc2V1ZG9fbG9ja19jcmVhdGUoc3RydWN0IHJkdGdyb3VwICpyZHRncnApXG4tLVxuZnMvcmVzY3RybC9wc2V1ZG9fbG9jay5jPTEwNzU9aW50IHJkdF9wc2V1ZG9fbG9ja19pbml0KHZvaWQpXG4tLVxuZnMvcmVzY3RybC9wc2V1ZG9fbG9jay5jLTEwOTMtXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmM6MTA5NDp2b2lkIHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKHZvaWQpXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmMtMTA5NS17XG4tLVxuZnMvcmVzY3RybC9yZHRncm91cC5jPTI4MDM9c3RhdGljIGludCByZHRfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0yOTAzLW91dF9wc2w6XG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM6MjkwNDpcdHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKCk7XG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMjkwNS1vdXRfbW9uZGF0YTpcbi0tXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM9MzE4MT1zdGF0aWMgdm9pZCByZXNjdHJsX2ZzX3RlYXJkb3duKHZvaWQpXG4tLVxuZnMvcmVzY3RybC9yZHRncm91cC5jLTMxOTEtXHRtb25fcHV0X2tuX3ByaXYoKTtcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzozMTkyOlx0cmR0X3BzZXVkb19sb2NrX3JlbGVhc2UoKTtcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTkzLVx0cmR0Z3JvdXBfZGVmYXVsdC5tb2RlID0gUkRUX01PREVfU0hBUkVBQkxFO1xuLS1cbmluY2x1ZGUvYWNwaS9hY3BpX2J1cy5oPTY3ND12b2lkIGFjcGlfc2Nhbl9sb2NrX2FjcXVpcmUodm9pZCk7XG5pbmNsdWRlL2FjcGkvYWNwaV9idXMuaDo2NzU6dm9pZCBhY3BpX3NjYW5fbG9ja19yZWxlYXNlKHZvaWQpO1xuaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmgtNjc2LXZvaWQgYWNwaV9sb2NrX2hwX2NvbnRleHQodm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MjY5PXZvaWQgaHVnZXRsYl92bWFfYXNzZXJ0X2xvY2tlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7XG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoyNzA6dm9pZCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjcxLWxvbmcgaHVnZXRsYl9jaGFuZ2VfcHJvdGVjdGlvbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyOTEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoYXQga2VybmVsIHRhc2s6CgoqKlRyYWNpbmcgTG9jayBCZWhhdmlvcjogQSBLZXJuZWwgRGl2ZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGVyZSB3b3VsZCB0aGUgbG9jayB0cmFjZXBvaW50cyBsaWtlbHkgYmUgZGVmaW5lZD8mIzM0OyBNeSBndXQgdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZvciB0cmFjZXBvaW50cyByZWxhdGVkIHRvIGxvY2tpbmcgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgaW4gdGhlIGBrZXJuZWwvdHJhY2UvYCBkaXJlY3RvcnkuIEdpdmVuIHRoYXQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBLY29uZmlnYCB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBndWFyYW50ZWVkIHRvIGxpc3QgYXZhaWxhYmxlIGZlYXR1cmVzLCBhbmQgb2Z0ZW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcmVsYXRlZCB0byBsb2NrIHRyYWNpbmcuIFRoaXMgaXMgd2hlcmUgdGhlIGh1bnQgYmVnaW5zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGVkIGFuZCB3aGF0JiMzOTtzIG5vdCBpbiB0ZXJtcyBvZiB0cmFjaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTE9DS19TVEFUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTE0OTY9Y29uZmlnIFBST1ZFX1JBV19MT0NLX05FU1RJTkdcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTA0LVxubGliL0tjb25maWcuZGVidWc6MTUwNTpjb25maWcgTE9DS19TVEFUXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTA2LVx0Ym9vbCBcJiMzNDtMb2NrIHVzYWdlIHN0YXRpc3RpY3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1ODMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA3MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIExvY2tkZXAgRGlzYWJsaW5nIFBhdGNoIGZvciBCUEYgVHJhY2Vwb2ludHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaXMgZGVmaW5lZCB3aXRoaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAgYW5kIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBoYXZpbmcgYENPTkZJR19MT0NLREVQYCBlbmFibGVkIGlzIGVzc2VudGlhbCBmb3IgdGhlIHRyYWNlcG9pbnQgZGVmaW5pdGlvbiBpdHNlbGYuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhyZWUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfTE9DS0RFUGAuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gYHRyYWNlX2NhbGxfYnBmYCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSAqb25seSogZnVuY3Rpb24gaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4gWWVzLCBpdCYjMzk7cyBqdXN0IGB0cmFjZV9jYWxsX2JwZmAuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhgIGFuZCBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgYWRkaW5nIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcuIEkgaGF2ZSB0byBjaGVjayBmb3IgYW55IGxvY2tkZXAgdXNhZ2UgaW4gQlBGLgoKUmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgY29uZGl0aW9uYWwgYGxvY2tkZXBfb2ZmKClgIGFuZCBgbG9ja2RlcF9vbigpYCBhcm91bmQgdGhlIGBicGZfcHJvZ19ydW5fYXJyYXlgIGNhbGwgd2l0aGluIGB0cmFjZV9jYWxsX2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgZXhwbGljaXRseSBkaXNhYmxlcyBsb2NrZGVwICpkdXJpbmcqIHRoZSBleGVjdXRpb24gb2YgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50LiBUaGlzIGlzICpkZWZpbml0ZWx5KiBhbiBhcmVhIHRoYXQgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmchIFRoZXJlIGFyZSBkZWZpbml0ZSBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB0byB0aGlzLgoKSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uczogYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfQlBGX0VWRU5UU2AsIGFuZCBgQ09ORklHX0xPQ0tERVBgLiBUaGUga2V5IHN5bWJvbCBoZXJlIGlzIGB0cmFjZV9jYWxsX2JwZmAuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgb25seSBmdW5jdGlvbiBpbXBhY3RlZC4gSSBjaGVja2VkIGB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGVgOyBub3QgbW9kaWZpZWQuIEkga25vdyB0aGF0IGBicGZfcHJvZ19ydW5fYXJyYXlgIGlzIGFuIGlubGluZSBvciBtYWNybywgc28gaXQmIzM5O3Mgbm90IGRpcmVjdGx5IG1vZGlmaWVkIGVpdGhlci4gU28sIGl0JiMzOTtzIG9ubHkgYHRyYWNlX2NhbGxfYnBmYC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgYHRyYWNlX2NhbGxfYnBmYCBpcyByZWFjaGFibGUsIGFuZCBpdCBpcy4gV2hlbiBhIEJQRiBwcm9ncmFtIGlzIGF0dGFjaGVkIHRvIGEgdHJhY2Vwb2ludCwgYHRyYWNlX2NhbGxfYnBmYCBpcyBjYWxsZWQsIGFuZCBmb3IgYGxvY2tfcmVsZWFzZWAgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBgbm9fbG9ja2RlcCA9IHRydWVgLgoKSnVzdCBkb3VibGUtY2hlY2tpbmcgbXkgY29uZmlndXJhdGlvbiBuYW1lczsgYENPTkZJR19MT0NLREVQYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLgoKTm93LCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHVzdWFsIGRlcGVuZGVuY2llcyBvZiBgTE9DS0RFUGAuIEl0IHVzdWFsbHkgcmVsaWVzIG9uIHRoaW5ncyBsaWtlIGBQUk9WRV9MT0NLSU5HYCwgYExPQ0tfU1RBVGAsIG9yIGBERUJVR19MT0NLX0FMTE9DYC4gSSBzaG91bGQgY2hlY2sgYGxpYi9LY29uZmlnLmRlYnVnYCB0byB2ZXJpZnkgdGhlc2UgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTE9DS0RFUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTE1NzY9Y29uZmlnIERFQlVHX0xPQ0tfQUxMT0Ncbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTkwLVxubGliL0tjb25maWcuZGVidWc6MTU5MTpjb25maWcgTE9DS0RFUFxubGliL0tjb25maWcuZGVidWctMTU5Mi1cdGJvb2xcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTk3LVxubGliL0tjb25maWcuZGVidWc6MTU5ODpjb25maWcgTE9DS0RFUF9TTUFMTFxubGliL0tjb25maWcuZGVidWctMTU5OS1cdGJvb2xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MDAtXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNjAxOmNvbmZpZyBMT0NLREVQX0JJVFNcbmxpYi9LY29uZmlnLmRlYnVnLTE2MDItXHRpbnQgXCYjMzQ7U2l6ZSBmb3IgTUFYX0xPQ0tERVBfRU5UUklFUyAoYXMgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctMTYwOC1cbmxpYi9LY29uZmlnLmRlYnVnOjE2MDk6Y29uZmlnIExPQ0tERVBfQ0hBSU5TX0JJVFNcbmxpYi9LY29uZmlnLmRlYnVnLTE2MTAtXHRpbnQgXCYjMzQ7U2l6ZSBmb3IgTUFYX0xPQ0tERVBfQ0hBSU5TIChhcyBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjE2LVxubGliL0tjb25maWcuZGVidWc6MTYxNzpjb25maWcgTE9DS0RFUF9TVEFDS19UUkFDRV9CSVRTXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjE4LVx0aW50IFwmIzM0O1NpemUgZm9yIE1BWF9TVEFDS19UUkFDRV9FTlRSSUVTIChhcyBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjMxLVxubGliL0tjb25maWcuZGVidWc6MTYzMjpjb25maWcgTE9DS0RFUF9TVEFDS19UUkFDRV9IQVNIX0JJVFNcbmxpYi9LY29uZmlnLmRlYnVnLTE2MzMtXHRpbnQgXCYjMzQ7U2l6ZSBmb3IgU1RBQ0tfVFJBQ0VfSEFTSF9TSVpFIChhcyBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjQwLVxubGliL0tjb25maWcuZGVidWc6MTY0MTpjb25maWcgTE9DS0RFUF9DSVJDVUxBUl9RVUVVRV9CSVRTXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjQyLVx0aW50IFwmIzM0O1NpemUgZm9yIGVsZW1lbnRzIGluIGNpcmN1bGFyX3F1ZXVlIHN0cnVjdCAoYXMgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDI3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTG9ja2RlcCBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYExPQ0tERVBgIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBiaXQgb2YgYSBoaWRkZW4gZ2VtLCBhIGJvb2xlYW4gdGhhdCBnZXRzIGFjdGl2YXRlZCB0aHJvdWdoIGEgZmV3IG90aGVyIG9wdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgUFJPVkVfTE9DS0lOR2AsIGBMT0NLX1NUQVRgLCBhbmQgYERFQlVHX0xPQ0tfQUxMT0NgIGFsbCBoYXZlIGEgaGFuZCBpbiBlbmFibGluZyBpdC4gVGhhdCBtYWtlcyBzZW5zZSwgaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGluZ3MsIGdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHRoZSBrZXJuZWwmIzM5O3MgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlLgoKVGhlcmVmb3JlLCB0byAqZ3VhcmFudGVlKiB0aGF0IGBMT0NLREVQYCBpcyBhY3R1YWxseSBhY3RpdmUsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0byBtZSB0aGF0IEkgc2hvdWxkIGp1c3QgZ28gYWhlYWQgYW5kIGVuYWJsZSBgUFJPVkVfTE9DS0lOR2AuIEdpdmVuIG15IHdvcmssIGl0JiMzOTtzIHRoZSBtb3N0IHN0cmFpZ2h0IGZvcndhcmQgcGF0aC4gU2VlbXMgbGlrZSB0aGF0IHdvdWxkIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0byBlbnN1cmUgdGhhdCB0aGlzIGxvY2sgZGVwZW5kZW5jeSBkZXRlY3Rpb24gbWVjaGFuaXNtIGlzIHRydWx5IHJ1bm5pbmcgYW5kIHdvcmtpbmcgYXMgaW50ZW5kZWQuIFNpbXBsZXIgaXMgYmV0dGVyLCBhZnRlciBhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUk9WRV9MT0NLSU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9MTQ0ND1jb25maWcgTE9DS19ERUJVR0dJTkdfU1VQUE9SVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTE0NDgtXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNDQ5OmNvbmZpZyBQUk9WRV9MT0NLSU5HXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNDUwLVx0Ym9vbCBcJiMzNDtMb2NrIGRlYnVnZ2luZzogcHJvdmUgbG9ja2luZyBjb3JyZWN0bmVzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjc5MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkVuYWJsaW5nIFByb3ZlIExvY2tpbmcgYW5kIFJlLUV4YW1pbmluZyBCUEZfRVZFTlRTIERlcGVuZGVuY2llcyoqCgpSaWdodCwgYFBST1ZFX0xPQ0tJTkdg4oCmIHRoYXQmIzM5O3MgYSBzb2xpZCBjaG9pY2UgdG8gZW5hYmxlLiBJdCYjMzk7cyB0aW1lIHRvIGJyaW5nIGFkZGl0aW9uYWwgZGVidWcgZGF0YSwgcGFydGljdWxhcmx5IGZvciBrZXJuZWwgbG9ja2luZy4gVGhlIHBvdGVudGlhbCBmb3IgY2F0Y2hpbmcgc3VidGxlIGNvbmN1cnJlbmN5IGJ1Z3MgYW5kIGRhdGEgcmFjZXMganVzdGlmaWVzIGl0LgoKTm93LCBiZWZvcmUgSSBjb21taXQgdGhhdCBjaGFuZ2UsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIHRoZSBgQlBGX0VWRU5UU2AgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgZXZlcnl0aGluZyBpcyBzdGlsbCBpbiBzeW5jLiBJIGtub3cgdGhlIGdlbmVyYWwgcmVxdWlyZW1lbnRzLCBidXQgaXQmIzM5O3Mgd29ydGggYSBkb3VibGUtY2hlY2sgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gaW50ZWdyYXRpb24gaXNzdWVzIG9yIGJ1aWxkIGZhaWx1cmVzLiBHb3R0YSBrZWVwIGFuIGV5ZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBhZnRlciBhbnkgdXBzdHJlYW0gY2hhbmdlcy4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODUwOlx0XHQgIGNvbnZlcnQgdGhlIHR5cGUgb2YgYW4gZXZlbnQgZmllbGQuIEZvciBleGFtcGxlLCB0dXJuIGFuXG4gODUxOlx0XHQgIGFkZHJlc3MgaW50byBhIHN0cmluZy5cbiA4NTI6XHRcbiA4NTM6XHRjb25maWcgQlBGX0VWRU5UU1xuIDg1NDpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuIDg1NTpcdFx0ZGVwZW5kcyBvbiAoS1BST0JFX0VWRU5UUyB8fCBVUFJPQkVfRVZFTlRTKSBcdTAwMjZcdTAwMjYgUEVSRl9FVkVOVFNcbiA4NTY6XHRcdGJvb2xcbiA4NTc6XHRcdGRlZmF1bHQgeVxuIDg1ODpcdFx0aGVscFxuIDg1OTpcdFx0ICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBhdHRhY2ggQlBGIHByb2dyYW1zIHRvIGtwcm9iZSwgdXByb2JlLCBhbmRcbiA4NjA6XHRcdCAgdHJhY2Vwb2ludCBldmVudHMuXG4gODYxOlx0XG4gODYyOlx0Y29uZmlnIERZTkFNSUNfRVZFTlRTXG4gODYzOlx0XHRkZWZfYm9vbCBuXG4gODY0Olx0XG4gODY1Olx0Y29uZmlnIFBST0JFX0VWRU5UU1xuIDg2NjpcdFx0ZGVmX2Jvb2wgblxuIDg2NzpcdFxuIDg2ODpcdGNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG4gODY5Olx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Mjk5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uOiBCUEYgRXZlbnQgRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQlBGX0VWRU5UU2AgaXMgY29udGluZ2VudCBvbiBhIGZldyBvdGhlciBjb25maWd1cmF0aW9uczogc3BlY2lmaWNhbGx5LCBgQlBGX1NZU0NBTExgLCBhbmQgZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKmluIGNvbmp1bmN0aW9uIHdpdGgqIGBQRVJGX0VWRU5UU2AuIFRoYXQgc2VlbWVkIHN0cmFpZ2h0Zm9yd2FyZDsgSSBmaWd1cmVkIHdlJiMzOTtkIGhhdmUgdG8gZXhwbGljaXRseSBlbmFibGUgYEJQRl9TWVNDQUxMYCwgYEtQUk9CRV9FVkVOVFNgLCBhbmQgYFBFUkZfRVZFTlRTYCB0byBnZXQgYEJQRl9FVkVOVFNgIHRvIHdvcmsuCgpCdXQgd2FpdCwgaG9sZCBvbi4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBpbiBteSB0aGlua2luZy4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGBCUEZfRVZFTlRTYCBpcyBgeWAgKmlmKiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIFNvLCBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgZW5hYmxpbmcgKmV2ZXJ5dGhpbmcqLCBJIGp1c3QgbmVlZCB0byBlbnN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBJbiB0aGlzIGNhc2UsIHRoYXQgbWVhbnMgSSBzaG91bGQgZXhwbGljaXRseSBzcGVjaWZ5IGBCUEZfU1lTQ0FMTGAsIGBLUFJPQkVfRVZFTlRTYCwgYFBFUkZfRVZFTlRTYCwgYW5kIGFsc28gYFBST1ZFX0xPQ0tJTkdgIGZvciBnb29kIG1lYXN1cmUuCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgS1BST0JFX0VWRU5UU2AgYW5kIGBQRVJGX0VWRU5UU2AgYXJlIHRydWx5IHNldCBjb3JyZWN0bHkuIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtQUk9CRV9FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz03NzA9Y29uZmlnIFBST0JFX0VWRU5UU19CVEZfQVJHU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTc4MS1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjc4Mjpjb25maWcgS1BST0JFX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctNzgzLVx0ZGVwZW5kcyBvbiBLUFJPQkVTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODAwLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODAxOmNvbmZpZyBLUFJPQkVfRVZFTlRTX09OX05PVFJBQ0Vcbmtlcm5lbC90cmFjZS9LY29uZmlnLTgwMi1cdGJvb2wgXCYjMzQ7RG8gTk9UIHByb3RlY3Qgbm90cmFjZSBmdW5jdGlvbiBmcm9tIGtwcm9iZSBldmVudHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NzIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IFVuZGVyc3RhbmRpbmcgb2YgS1BST0JFX0VWRU5UUyBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgS1BST0JFX0VWRU5UU2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0IGZ1bmRhbWVudGFsbHkgZGVwZW5kcyBvbiBgS1BST0JFU2AuIFdpdGhvdXQgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSBvZiBgS1BST0JFU2AsIGBLUFJPQkVfRVZFTlRTYCBqdXN0IHdvdWxkbiYjMzk7dCBiZSBhYmxlIHRvIGRvIHdoYXQgaXQmIzM5O3Mgc3VwcG9zZWQgdG8gZG8uIFRoaW5rIG9mIGBLUFJPQkVTYCBhcyB0aGUgcGx1bWJpbmcgYW5kIGBLUFJPQkVfRVZFTlRTYCBhcyB0aGUgZmF1Y2V0OyB5b3UgY2FuJiMzOTt0IGhhdmUgYSB3b3JraW5nIGZhdWNldCB3aXRob3V0IHRoZSBwbHVtYmluZyBpbiBwbGFjZS4gSXQgc2VlbXMgc2ltcGxlLCBhbG1vc3QgdHJpdmlhbCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBzdGF0ZSBpdCBleHBsaWNpdGx5LiBgS1BST0JFU2AgcHJvdmlkZXMgdGhlIG1lY2hhbmlzbSBmb3IgYWN0dWFsbHkgaW5zZXJ0aW5nIHByb2JlcywgYW5kIGBLUFJPQkVfRVZFTlRTYCBidWlsZHMgb24gKnRoYXQqIGZvdW5kYXRpb24gdG8gZG8gbW9yZSBhZHZhbmNlZCBldmVudCBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZy4gU28sIHllYWgsIGl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLUFJPQkVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvS2NvbmZpZz0xMTI9Y29uZmlnIEdFTkVSSUNfRU5UUllcbi0tXG5hcmNoL0tjb25maWctMTE2LVxuYXJjaC9LY29uZmlnOjExNzpjb25maWcgS1BST0JFU1xuYXJjaC9LY29uZmlnLTExOC1cdGJvb2wgXCYjMzQ7S3Byb2Jlc1wmIzM0O1xuLS1cbmFyY2gvS2NvbmZpZz0xNjg9Y29uZmlnIE9QVFBST0JFU1xuLS1cbmFyY2gvS2NvbmZpZy0xNzItXG5hcmNoL0tjb25maWc6MTczOmNvbmZpZyBLUFJPQkVTX09OX0ZUUkFDRVxuYXJjaC9LY29uZmlnLTE3NC1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBQcm9iZXM6IE5hdmlnYXRpbmcgdGhlIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYW5kIGltbWVkaWF0ZWx5IHRoZSBuZWVkIGZvciBgS1BST0JFU2AgcG9wcyBpbnRvIG15IGhlYWQuIEl0JiMzOTtzIHRoZSBnby10byBmb3IgaW4ta2VybmVsIGluc3RydW1lbnRhdGlvbiwgYW5kIGl0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIHByb2JhYmx5IGJlZ2luIG15IGludmVzdGlnYXRpb24uIEJ1dCB0aGVuLCB0aGUgcXVlc3Rpb24gb2Ygc3BlY2lmaWMgZXZlbnRzIHN1cmZhY2VzLiBJJiMzOTttIHdvbmRlcmluZyBpZiBJIHNob3VsZCBhbHNvIGJlIGNvbnNpZGVyaW5nIGBVUFJPQkVfRVZFTlRTYCBpbiB0aGUgbWl4LiBUaGV5JiMzOTtyZSByZWxhdGVkLCBidXQgaGFuZGxlIHVzZXItc3BhY2UgcHJvYmVzLiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIHVzaW5nIHRoZSBiZXN0IHRvb2xzIGZvciB0aGUgam9iLCBkZXBlbmRpbmcgb24gd2hhdCBJJiMzOTttIGxvb2tpbmcgdG8gYWNoaWV2ZSAtIGtlcm5lbCBzcGFjZSBvciB1c2Vyc3BhY2Ugb3IgYm90aC4gTmVlZCB0byBmYWN0b3IgdGhhdCBpbi4gR290dGEgY29uc2lkZXIgdGhhdCB0byBidWlsZCBhIHNvbHV0aW9uIHRoYXQmIzM5O3Mgcm9idXN0IGFuZCBlZmZpY2llbnQsIEkgbmVlZCB0byBtYWtlIHRoZSByaWdodCBjaG9pY2UgYmV0d2VlbiB0aGUgdHdvIGF0IHRoZSBvdXRzZXQuIEkgYW0gcG9uZGVyaW5nIHdoYXQgdGhlIGJlc3Qgd2F5IHRvIGxldmVyYWdlIGJvdGggbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVUFJPQkVfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9ODAxPWNvbmZpZyBLUFJPQkVfRVZFTlRTX09OX05PVFJBQ0Vcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04MjAtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4MjE6Y29uZmlnIFVQUk9CRV9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTgyMi1cdGJvb2wgXCYjMzQ7RW5hYmxlIHVwcm9iZXMtYmFzZWQgZHluYW1pYyBldmVudHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1ODIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgaGF2aW5nIHRoZW06CgoqKkRlcGVuZGVuY3kgQ29uc2lkZXJhdGlvbnMgZm9yIFVQUk9CRV9FVkVOVFMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgVVBST0JFX0VWRU5UU2AgYW5kIHRoZSBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlYWxseS4gSXQmIzM5O3MgY2xlYXIgdGhhdCBgVVBST0JFX0VWRU5UU2AgKmFic29sdXRlbHkqIGRlcGVuZHMgb24gYFVQUk9CRVNgLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIGBVUFJPQkVfRVZFTlRTYCDigJMgd2hpY2ggaXMgb2J2aW91c2x5IGV2ZW50IGNyZWF0aW9uIGFuZCBoYW5kbGluZyByZWxhdGVkIHRvIHVzZXItc3BhY2UgcHJvYmVzIOKAkyBpcyBmdW5kYW1lbnRhbGx5IGJ1aWx0IHVwb24gdGhlIHVuZGVybHlpbmcgY2FwYWJpbGl0aWVzIHByb3ZpZGVkIGJ5IGBVUFJPQkVTYC4gSSBtZWFuLCBob3cgZWxzZSB3b3VsZCB5b3UgY2FwdHVyZSBhbmQgbWFrZSBzZW5zZSBvZiBldmVudHMgcmVsYXRlZCB0byBwcm9iZXMgaWYgeW91IGRpZG4mIzM5O3QgaGF2ZSB0aGUgcHJvYmVzIHRoZW1zZWx2ZXMgaW4gcGxhY2UgZmlyc3Q/IEl0JiMzOTtzIGEgZm91bmRhdGlvbmFsIGRlcGVuZGVuY3kuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBleHBsaWNpdCBpbiBhbnkgZGVzaWduIGRvY3Mgb3IgZGlzY3Vzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVUFJPQkVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvS2NvbmZpZz0xNzM9Y29uZmlnIEtQUk9CRVNfT05fRlRSQUNFXG4tLVxuYXJjaC9LY29uZmlnLTE4MS1cbmFyY2gvS2NvbmZpZzoxODI6Y29uZmlnIFVQUk9CRVNcbmFyY2gvS2NvbmZpZy0xODMtXHRkZWZfYm9vbCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODY4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqU3RyYXRlZ2ljIEFwcHJvYWNoIHRvIEluc3RydW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIHdlIHNob3VsZCBzdHJlYW1saW5lIHRoaXMgcHJvY2Vzcy4gTGV0JiMzOTtzIGp1c3QgbGVhbiBoZWF2aWx5IG9uIGBLUFJPQkVfRVZFTlRTYCBhbmQgcGxhaW4gb2xkIGBLUFJPQkVTYCBmb3IgdGhpcyBpbml0aWFsIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhleSYjMzk7cmUgcG93ZXJmdWwgYW5kIHdlbGwtdW5kZXJzdG9vZCwgc28gc3RhcnRpbmcgd2l0aCB0aGVtIG1ha2VzIHRoZSBtb3N0IHNlbnNlLgoKTm93LCBJIGFsc28gd2FudCB0byBtYWtlIHN1cmUgd2UgY29uc2lkZXIgdGhlIGxvbmcgdGVybS4gSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYFBFUkZfRVZFTlRTYCBpcyBlbmFibGVkIHZpYSBjb25maWd1cmF0aW9uLiBJJiMzOTttIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlLCBhbmQgaWYgaXQgaXMsIHdlIHNob3VsZCBnaXZlIGl0IGZ1bGwgY29uc2lkZXJhdGlvbiBhdCBsZWFzdC4gSXQmIzM5O3Mgb2Z0ZW4gdGhlIGdvbGQgc3RhbmRhcmQuIFdlIG1heSB3YW50IHRvIGV4cGFuZCB0byB1c2UgaXQgYXQgc29tZSBwb2ludC4gQnV0IGZvciBub3csIGxldCYjMzk7cyBrZWVwIGl0IHNpbXBsZSBhbmQgc2VlIGlmIHdlIGNhbiBnZXQgdGhlIGJhc2VsaW5lIGltcGxlbWVudGVkIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEVSRl9FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTIxNDE9bWVudSBcJiMzNDtLZXJuZWwgUGVyZm9ybWFuY2UgRXZlbnRzIEFuZCBDb3VudGVyc1wmIzM0O1xuaW5pdC9LY29uZmlnLTIxNDItXG5pbml0L0tjb25maWc6MjE0Mzpjb25maWcgUEVSRl9FVkVOVFNcbmluaXQvS2NvbmZpZy0yMTQ0LVx0Ym9vbCBcJiMzNDtLZXJuZWwgcGVyZm9ybWFuY2UgZXZlbnRzIGFuZCBjb3VudGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE5MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBLZXJuZWwgQ29uZmlndXJhdGlvbiBNdXNpbmdzKioKCk9rYXksIHllcywgZGVmaW5pdGVseSBgUEVSRl9FVkVOVFNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gUmlnaHQsIHNvIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ6IGBCUEZfU1lTQ0FMTGAsIGBLUFJPQkVTYCwgYEtQUk9CRV9FVkVOVFNgLCBgUEVSRl9FVkVOVFNgIOKAkyBvYnZpb3VzbHkg4oCTIGFuZCBgUFJPVkVfTE9DS0lOR2AuCgpOb3csIGJlZm9yZSBJIG1vdmUgb24sIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIEkgKmNhbiogYWN0dWFsbHkgZW5hYmxlIGBCUEZfRVZFTlRTYCBkaXJlY3RseS4gSG1tLCBpdCYjMzk7cyBhIGBib29sYCBjb25maWcsIGFuZCBpdCBkZWZhdWx0cyB0byAmIzM0O3kmIzM0Oy4gU28sIGl0IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkLiBCdXQsIEkgY2FuIGV4cGxpY2l0bHkgc2V0IGl0IHRvbywgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2QgcHJhY3RpY2UuCgpSaWdodCwgbGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIHRyYWNpbmcgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIHByb2dyYW1zIGdldCBob29rZWQgaW50byB0aGUga2VybmVsLiBMZXQmIzM5O3MgbG9vayBhdCBgdHJhY2VfY2FsbF9icGZgIGluIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBBaGEsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX2JwZl90cmFjZV9ydW5gLiBBbmQgdGhhdCBmdW5jdGlvbiBpcyBnZW5lcmF0ZWQgdXNpbmcgdGhvc2UgYERFQ0xBUkVfRVZFTlRfQ0xBU1NgIG1hY3JvcyBvciBzb21ldGhpbmcgc2ltaWxhci4KCk9rYXksIHNvIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBhdHRhY2hlZCB0byBhIHRyYWNlcG9pbnQsIHRoZSBrZXJuZWwgdXNlcyBzb21ldGhpbmcgbGlrZSBgcGVyZl90cmFjZV8jI2NhbGxgLCB3aGljaCBpcyB3aGF0IHRoZW4gY2FsbHMgYHRyYWNlX2NhbGxfYnBmYC4gV2FpdCBhIHNlY29uZOKApiBpc24mIzM5O3QgYHRyYWNlX2NhbGxfYnBmYCBjYWxsZWQgZnJvbSBgcGVyZl90cmFjZV8jI2NhbGxgPyBZZXMsIHJpZ2h0LCB0aGF0JiMzOTtzIGluIGBpbmNsdWRlL3RyYWNlL3BlcmYuaGAuIE9rYXksIGJldHRlciBnbyBhbmQgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvdHJhY2UvcGVyZi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipMb2NhdGluZyB0aGUgQ2FsbGVycyBvZiBgdHJhY2VfY2FsbF9icGZgKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgdHJhY2VfY2FsbF9icGZgIGlzIGJlaW5nIGludm9rZWQuIEl0JiMzOTtzIGEgY3JpdGljYWwgZnVuY3Rpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgZ3JhcGggaXMgcGFyYW1vdW50LiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nLCBpcyB0aGVyZSBhIHNpbXBsZSBncmVwIEkgY2FuIHJ1biB0byBmaW5kIHRoZSBkaXJlY3QgY2FsbGVycywgb3IgaXMgaXQgbW9yZSBjb21wbGV4IHRoYW4gdGhhdD8gR2l2ZW4gdGhlIG5hdHVyZSBvZiBCUEYsIEkgc3VzcGVjdCBpdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSBwbGFjZXMsIHBlcmhhcHMgZXZlbiBkeW5hbWljYWxseS4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlIEJQRiBzdWJzeXN0ZW0gaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gTWF5YmUgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyB0cmFjaW5nIG1lY2hhbmlzbSB0aGF0IHVzZXMgdGhpcywgYW5kIEkgY2FuIG5hcnJvdyBkb3duIHRoZSBzZWFyY2ggdGhhdCB3YXkuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBzdGF0aWMgY2FsbHMgYW5kIGluZGlyZWN0IGNhbGxzIHRocm91Z2ggZnVuY3Rpb24gcG9pbnRlcnMgb3IganVtcCB0YWJsZXMuIFRoaXMgcmVxdWlyZXMgYSB0YXJnZXRlZCBpbnZlc3RpZ2F0aW9uOyBhIGJyb2FkIHNlYXJjaCBtaWdodCBiZSB0b28gbm9pc3kuIFRoaW5raW5nIGFsc28gYWJvdXQgYW55IG1vZHVsZSBkZXBlbmRlbmNpZXMgbWlnaHQgYWxzbyBiZSB1c2VmdWwgdG8gcXVpY2tseSByZWR1Y2UgdGhlIHNlYXJjaCBzcGFjZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IEkgY2FuIHVuY292ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhY2VfY2FsbF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL3RyYWNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTIwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKlRyYWNpbmcgdGhlIENhbGxlciBvZiBgdHJhY2VfY2FsbF9icGZgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93IGFyb3VuZCBgdHJhY2VfY2FsbF9icGZgLiBGaXJzdCwgbXkgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbGluZyBjb250ZXh0LiBTbywgbGV0JiMzOTtzIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgc2VhcmNoIGZvciBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgdHJhY2VfY2FsbF9icGZgIGlzIGFjdHVhbGx5IGludm9rZWQuIEkgbmVlZCB0byBzZWUgdGhlIGRpZmZlcmVudCBzY2VuYXJpb3MsIGlkZW50aWZ5IHRoZSBwYXJlbnQgZnVuY3Rpb25zIG9yIGNvZGUgYmxvY2tzLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJiMzOTttIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGZpbmRpbmdzIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgQlBGIGFuZCB0cmFjaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhY2VfY2FsbF9icGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc1OT10cmFjZV90cmlnZ2VyX3NvZnRfZGlzYWJsZWQoc3RydWN0IHRyYWNlX2V2ZW50X2ZpbGUgKmZpbGUpXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzQtI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3NTp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3Njp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzctaW50IHBlcmZfZXZlbnRfYXR0YWNoX2JwZl9wcm9nKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1NjQgYnBmX2Nvb2tpZSk7XG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03OTM9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk0LSNlbHNlXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5NTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTYte1xuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk5LVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4MDA6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzExCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBVc2FnZSBQYXR0ZXJucyoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGFwcGxpY2F0aW9uIG9mIHRoaXMgY29uY2VwdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgYXNzZXNzIGl0cyB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgYmVpbmcgZGVwbG95ZWQsIGFjcm9zcyB3aGljaCBkb21haW5zLCBhbmQgaW4gd2hhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbW1vbmFsaXRpZXMgYW5kIHRoZSB2YXJpYXRpb25zLiBBcmUgd2Ugc2VlaW5nIGl0IHByaW1hcmlseSBpbiByZXNlYXJjaCwgb3IgaXMgaXQgbWFraW5nIGlucm9hZHMgaW50byBwcmFjdGljYWwgYXBwbGljYXRpb25zPyBXaGF0IGluZHVzdHJpZXMgYXJlIGFkb3B0aW5nIGl0LCBhbmQgd2h5PyBBcmUgdGhlcmUgYW55IGNsZWFyIGxlYWRlcnMgb3IgbGFnZ2luZyBhZG9wdGVycz8gVW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aGVyZSYjMzQ7IGlzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEl0IHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBlZmZpY2FjeSBhbmQgbGltaXRhdGlvbnMgd2l0aGluIGl0cyBhcHBsaWNhdGlvbi4gVGhlIGRhdGEgd2lsbCBkaWN0YXRlIG15IG5leHQgc3RlcCwgYmUgdGhhdCBhIGZ1cnRoZXIgZXhhbWluYXRpb24gb2YgbWV0aG9kb2xvZ3kgb3IgYSBjb21wYXJpc29uIGFnYWluc3Qgb3RoZXIgcGFyYWRpZ21zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc1OT10cmFjZV90cmlnZ2VyX3NvZnRfZGlzYWJsZWQoc3RydWN0IHRyYWNlX2V2ZW50X2ZpbGUgKmZpbGUpXG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzQtI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3NTp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3Njp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzctaW50IHBlcmZfZXZlbnRfYXR0YWNoX2JwZl9wcm9nKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1NjQgYnBmX2Nvb2tpZSk7XG4tLVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03OTM9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk0LSNlbHNlXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5NTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTYte1xuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk5LVxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4MDA6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgwMS17XG4tLVxua2VybmVsL2V2ZW50cy9jb3JlLmM9MTEzOTE9dm9pZCBwZXJmX3RyYWNlX3J1bl9icGZfc3VibWl0KHZvaWQgKnJhd19kYXRhLCBpbnQgc2l6ZSwgaW50IHJjdHgsXG4tLVxua2VybmVsL2V2ZW50cy9jb3JlLmMtMTEzOTctXHRcdCooc3RydWN0IHB0X3JlZ3MgKiopcmF3X2RhdGEgPSByZWdzO1xua2VybmVsL2V2ZW50cy9jb3JlLmM6MTEzOTg6XHRcdGlmICghdHJhY2VfY2FsbF9icGYoY2FsbCwgcmF3X2RhdGEpIHx8IGhsaXN0X2VtcHR5KGhlYWQpKSB7XG5rZXJuZWwvZXZlbnRzL2NvcmUuYy0xMTM5OS1cdFx0XHRwZXJmX3N3ZXZlbnRfcHV0X3JlY3Vyc2lvbl9jb250ZXh0KHJjdHgpO1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz05Nj1zdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpO1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy05OC0vKipcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzo5OTogKiB0cmFjZV9jYWxsX2JwZiAtIGludm9rZSBCUEYgcHJvZ3JhbVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEwMC0gKiBAY2FsbDogdHJhY2Vwb2ludCBldmVudFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMTEtICovXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTEyOnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTExMy17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEzOS1cdCAqIElmIGJwZl9wcm9nX2FycmF5X3ZhbGlkKCkgZmV0Y2hlZCBwcm9nX2FycmF5IHdhc1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE0MDpcdCAqIG5vbi1OVUxMLCB3ZSBnbyBpbnRvIHRyYWNlX2NhbGxfYnBmKCkgYW5kIGRvIHRoZSBhY3R1YWxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNDEtXHQgKiBwcm9wZXIgcmN1X2RlcmVmZXJlbmNlKCkgdW5kZXIgUkNVIGxvY2suXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2My0vKipcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNjQ6ICogdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlIC0gaW52b2tlIEJQRiBwcm9ncmFtIGluIGZhdWx0YWJsZSBjb250ZXh0XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY1LSAqIEBjYWxsOiB0cmFjZXBvaW50IGV2ZW50XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2Ny0gKlxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2ODogKiBWYXJpYW50IG9mIHRyYWNlX2NhbGxfYnBmKCkgZm9yIGZhdWx0YWJsZSB0cmFjZXBvaW50cyAoc3lzY2FsbFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2OS0gKiB0cmFjZXBvaW50cykuIFN1cHBvcnRzIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgYnkgdXNpbmcgcmN1X3Rhc2tzX3RyYWNlXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE3OC0gKi9cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNzk6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE4MC17XG4tLVxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jPTE2ODM9a3Byb2JlX3BlcmZfZnVuYyhzdHJ1Y3QgdHJhY2Vfa3Byb2JlICp0aywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE2OTQtXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmM6MTY5NTpcdFx0cmV0ID0gdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncyk7XG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMtMTY5Ni1cbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmM9MTczMj1rcmV0cHJvYmVfcGVyZl9mdW5jKHN0cnVjdCB0cmFjZV9rcHJvYmUgKnRrLCBzdHJ1Y3Qga3JldHByb2JlX2luc3RhbmNlICpyaSxcbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMtMTc0MC1cbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYzoxNzQxOlx0aWYgKGJwZl9wcm9nX2FycmF5X3ZhbGlkKGNhbGwpIFx1MDAyNlx1MDAyNiAhdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncykpXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMtMTc0Mi1cdFx0cmV0dXJuO1xuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jPTEzNzQ9c3RhdGljIGludCBwZXJmX2NhbGxfYnBmX2VudGVyKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLFxuLS1cbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTEzOTMtXHRcdHBhcmFtLmFyZ3NbaV0gPSBhcmdzW2ldO1xua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM6MTM5NDpcdHJldHVybiB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoY2FsbCwgXHUwMDI2cGFyYW0pO1xua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmMtMTM5NS19XG4tLVxua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM9MTUyNT1zdGF0aWMgaW50IHBlcmZfY2FsbF9icGZfZXhpdChzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCxcbi0tXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYy0xNTM5LVx0cGFyYW0ucmV0ID0gcmV0X3ZhbDtcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jOjE1NDA6XHRyZXR1cm4gdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlKGNhbGwsIFx1MDAyNnBhcmFtKTtcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTE1NDEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ0NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCUEYgVHJhY2Vwb2ludCBFeGVjdXRpb24gYW5kIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gYHRyYWNlX2NhbGxfYnBmYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBwZXJmX3RyYWNlX3J1bl9icGZfc3VibWl0YCBpbiBga2VybmVsL2V2ZW50cy9jb3JlLmNgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGV4ZWN1dGlvbiBwYXRoIGZvciB0cmFjZXBvaW50cyB3aXRoIEJQRiBwcm9ncmFtcyBhdHRhY2hlZDsgdGhhdCYjMzk7cyBnb29kLCBpdCYjMzk7cyBlYXNpbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcHJldHR5IGRpcmVjdCBwYXRoIGZvciBvdXIgYW5hbHlzaXMuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBuZWVkLiBXZSYjMzk7cmUgY29uY2VybmVkIHdpdGggYEJQRl9TWVNDQUxMYCwgYEJQRl9FVkVOVFNgLCBgUEVSRl9FVkVOVFNgLCBhbmQgYFBST1ZFX0xPQ0tJTkdgLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBzaW1wbHkgZW5hYmxlIGBCUEZfRVZFTlRTYCBvciBkbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzZXQ/CgpgQlBGX0VWRU5UU2AgaXMgYSBib29sZWFuIHRoYXQgZGVmYXVsdHMgdG8gJiMzOTt5JiMzOTsgYmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgZGVwZW5kZW50IG9uIGBCUEZfU1lTQ0FMTGAgKmFuZCogZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKmFuZCogYFBFUkZfRVZFTlRTYC4gVGhlcmVmb3JlLCBsaXN0aW5nIGBCUEZfU1lTQ0FMTGAsIGBLUFJPQkVfRVZFTlRTYCwgYFBFUkZfRVZFTlRTYCwgYW5kIGBQUk9WRV9MT0NLSU5HYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgaXQuIFRoZXJlJiMzOTtzIG5vIGhhcm0gaW4gbGlzdGluZyBgQlBGX0VWRU5UU2AgZGlyZWN0bHkgYXMgd2VsbCwgbWlnaHQgbWFrZSB0aGluZ3MgY2xlYXJlci4KCkhhbmcgb24uLi4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgZGlzYWJsZXMgbG9ja2RlcCBmb3IgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuIFRoYXQgaW1wbGllcyB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCAqbXVzdCogYmUgZW5hYmxlZCBmb3IgdGhlIHBhdGNoIHRvIGV2ZW4gaGF2ZSBhbiBlZmZlY3QuIE9rYXksIHNvIHdlIG5lZWQgdG8gdmVyaWZ5IGl0cyBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBkZWZpbmVkIGluIGBpbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhgLCB3aGljaCBpcyBpbmNsdWRlZCBieSBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbG9ja19yZWxlYXNlYCBpcyBhY3R1YWxseSB1c2VkIGluIGBrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmNgLiBUaGlzIHdpbGwgZ2l2ZSB1cyB2YWx1YWJsZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3lzdGVtIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFjZV9sb2NrX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jPTU4NzU9dm9pZCBsb2NrX3JlbGVhc2Uoc3RydWN0IGxvY2tkZXBfbWFwICpsb2NrLCB1bnNpZ25lZCBsb25nIGlwKVxuLS1cbmtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYy01ODc4LVxua2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jOjU4Nzk6XHR0cmFjZV9sb2NrX3JlbGVhc2UobG9jaywgaXApO1xua2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jLTU4ODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjkwCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDEzNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYEJQRl9OT19MT0NLREVQYCBpbiBLZXJuZWwgVHJhY2luZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhlIGtleSBpcyB0aGlzIG5ldyBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcuICBJdCYjMzk7cyBzcGVjaWZpY2FsbHkgdXNlZCBpbiB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCwgd2hpY2ggaXMgZGVmaW5lZCBpbiBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gIFRoaXMgbWVhbnMgYENPTkZJR19MT0NLREVQYCBpcyBhIGRlZmluaXRlIHJlcXVpcmVtZW50LCBhbmQgaW5kaXJlY3RseSBgQ09ORklHX1BST1ZFX0xPQ0tJTkdgIGFzIGl0IGVuYWJsZXMgYENPTkZJR19MT0NLREVQYC4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcgYW5kIGNvbmZpZ3VyYXRpb24uICBUaGlzIGNoYW5nZSBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZywgYW5kIHRoZSBwcmltYXJ5IGZvY3VzIHN5bWJvbCBmb3IgdGhhdCBmdXp6aW5nIGlzIGB0cmFjZV9jYWxsX2JwZmAuICBJbiB0ZXJtcyBvZiBjb25maWd1cmF0aW9ucywgdGhlIG5lY2Vzc2FyeSBvbmVzIGFyZSBgQlBGX1NZU0NBTExgLCBgQlBGX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBgUFJPVkVfTE9DS0lOR2AsIHdoaWNoIGluZGlyZWN0bHkgZW5hYmxlcyBgTE9DS0RFUGAuIEkgaGFkIHRvIGRvdWJsZS1jaGVjayB0aGlzLCBidXQgYExPQ0tERVBgIGlzIGEgdmFsaWQgY29uZmlnIGFuZCBjYW4gYmUgbGlzdGVkLiBIb3dldmVyLCBgS1BST0JFX0VWRU5UU2AgaXMgYWxzbyByZXF1aXJlZCwgZXZlbiB0aG91Z2ggaXQgaXNuJiMzOTt0IGRpcmVjdGx5IHVzZWQgYnkgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuIFRoZSByZWFzb24gaXMgYmVjYXVzZSBgQlBGX0VWRU5UU2AgZGVwZW5kcyBvbiBgS1BST0JFX0VWRU5UU2AgKG9yIGBVUFJPQkVfRVZFTlRTYCksIGFuZCBgUEVSRl9FVkVOVFNgLgoKTm93LCByZXZpZXdpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gIFRoZXJlJiMzOTtzIGEgbmV3IGZsYWcsIGBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUGAsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhgLiAgVGhpcyBmbGFnIGdldHMgYWRkZWQgdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIENyaXRpY2FsbHksIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGlzIHVwZGF0ZWQgdG8gY2hlY2sgdGhpcyBuZXcgZmxhZyB3aXRoaW4gdGhlIGB0cmFjZV9jYWxsX2JwZmAgZnVuY3Rpb24uIElmIHRoZSBmbGFnIGlzIHNldCwgbG9ja2RlcCBpcyB0ZW1wb3JhcmlseSBkaXNhYmxlZCBiZWZvcmUgcnVubmluZyB0aGUgQlBGIHByb2dyYW0gYW5kIHJlLWVuYWJsZWQgYWZ0ZXJ3YXJkcyB1c2luZyBgbG9ja2RlcF9vZmYoKWAgYW5kIGBsb2NrZGVwX29uKClgLiBUaGUgZmxhZyBpcyBhZGRlZCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCB1c2luZyBgVFJBQ0VfRVZFTlRfRkxBR1NgLiBUaGlzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgd2l0aCBzeXprYWxsZXIgYnkgYXR0YWNoaW5nIGEgQlBGIHByb2dyYW0gdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDssCiAgICAmIzM0O1BFUkZfRVZFTlRTJiMzNDssCiAgICAmIzM0O1BST1ZFX0xPQ0tJTkcmIzM0OywKICAgICYjMzQ7S1BST0JFX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RyYWNlX2NhbGxfYnBmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZ1bmN0aW9uYWxseSBtb2RpZmllcyBgdHJhY2VfY2FsbF9icGZgIHRvIGRpc2FibGUgbG9ja2RlcCB0cmFja2luZyB3aGlsZSBleGVjdXRpbmcgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRyYWNlcG9pbnRzIHdpdGggdGhlIGBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUGAgZmxhZyAoc3VjaCBhcyBgbG9ja19yZWxlYXNlYCkuIFRoaXMgaXMgYSByZWFjaGFibGUgY29yZSBrZXJuZWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgdHJhY2luZyBiZWhhdmlvciBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtQUk9WRV9MT0NLSU5HJiMzNDssCiAgICAmIzM0O0tQUk9CRV9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cmFjZV9jYWxsX2JwZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzoxMi40NDExOTA3OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM1Mjc5MzQ4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIixcbiAgICBcIlBFUkZfRVZFTlRTXCIsXG4gICAgXCJQUk9WRV9MT0NLSU5HXCIsXG4gICAgXCJLUFJPQkVfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHJhY2VfY2FsbF9icGZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MTIuNDQxMTk3NDY5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQwMzMyMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNTQ2MWQ0NTE1YzQxMDkwOTBkMzFhYzljMjU4YjExZDczMTQ5MTVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTE6MjM6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaCBiL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcXG5pbmRleCAzMDhjNzZiNTdkMTMyLi42ZjY3YjVlOWUzOGQ2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXFxuQEAgLTMzMCw2ICszMzAsNyBAQCBlbnVtIHtcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCxcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfQ1VTVE9NX0JJVCxcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfVEVTVF9TVFJfQklULFxcbitcXHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUF9CSVQsXFxuIH07XFxuIFxcbiAvKlxcbkBAIC0zNDcsNiArMzQ4LDcgQEAgZW51bSB7XFxuICAqICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgc2V0IHdoZW4gdGhlIGN1c3RvbSBldmVudCBoYXMgbm90IGJlZW4gYXR0YWNoZWRcXG4gICogICAgICAgICAgICAgICAgICAgdG8gYSB0cmFjZXBvaW50IHlldCwgdGhlbiBpdCBpcyBjbGVhcmVkIHdoZW4gaXQgaXMuXFxuICAqICBURVNUX1NUUiAgICAgIC0gVGhlIGV2ZW50IGhhcyBhIFxcXCIlc1xcXCIgdGhhdCBwb2ludHMgdG8gYSBzdHJpbmcgb3V0c2lkZSB0aGUgZXZlbnRcXG4rICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zXFxuICAqL1xcbiBlbnVtIHtcXG4gXFx0VFJBQ0VfRVZFTlRfRkxfQ0FQX0FOWVxcdFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQ0FQX0FOWV9CSVQpLFxcbkBAIC0zNjAsNiArMzYyLDcgQEAgZW51bSB7XFxuIFxcdFRSQUNFX0VWRU5UX0ZMX0ZQUk9CRVxcdFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCksXFxuIFxcdFRSQUNFX0VWRU5UX0ZMX0NVU1RPTVxcdFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQ1VTVE9NX0JJVCksXFxuIFxcdFRSQUNFX0VWRU5UX0ZMX1RFU1RfU1RSXFx0XFx0PSAoMSBcXHUwMDNjXFx1MDAzYyBUUkFDRV9FVkVOVF9GTF9URVNUX1NUUl9CSVQpLFxcbitcXHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUFxcdD0gKDEgXFx1MDAzY1xcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBfQklUKSxcXG4gfTtcXG4gXFxuICNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxfVUtQUk9CRSAoVFJBQ0VfRVZFTlRfRkxfS1BST0JFIHwgVFJBQ0VfRVZFTlRfRkxfVVBST0JFKVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcXG5pbmRleCAxZGVkODY5Y2Q2MTlmLi41Y2NmNWM1NGUzZDJkIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxcbkBAIC03Miw2ICs3Miw4IEBAIERFRklORV9FVkVOVChsb2NrLCBsb2NrX3JlbGVhc2UsXFxuIFxcdFRQX0FSR1MobG9jaywgaXApXFxuICk7XFxuIFxcbitUUkFDRV9FVkVOVF9GTEFHUyhsb2NrX3JlbGVhc2UsIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQKTtcXG4rXFxuICNpZmRlZiBDT05GSUdfTE9DS19TVEFUXFxuIFxcbiBERUZJTkVfRVZFTlQobG9jaywgbG9ja19jb250ZW5kZWQsXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xcbmluZGV4IDc1NDk1YTVjMzUwNzkuLmYyNDYwZjNjODYwZTAgMTAwNjQ0XFxuLS0tIGEva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jXFxuKysrIGIva2VybmVsL3RyYWNlL2JwZl90cmFjZS5jXFxuQEAgLTI0LDYgKzI0LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmFtZWkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZpbGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xvY2tkZXAuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvYnBmX3NrX3N0b3JhZ2UuaFxcdTAwM2VcXG4gXFxuQEAgLTExMCw2ICsxMTEsNyBAQCBzdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpO1xcbiAgKi9cXG4gdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXFxuIHtcXG4rXFx0Ym9vbCBub19sb2NrZGVwID0gY2FsbC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUDtcXG4gXFx0dW5zaWduZWQgaW50IHJldDtcXG4gXFxuIFxcdGNhbnRfc2xlZXAoKTtcXG5AQCAtMTQ0LDggKzE0NiwxMiBAQCB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG4gXFx0ICogcmN1X2RlcmVmZXJlbmNlKCkgd2hpY2ggaXMgYWNjZXB0ZWQgcmlzay5cXG4gXFx0ICovXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFx0aWYgKG5vX2xvY2tkZXApXFxuK1xcdFxcdGxvY2tkZXBfb2ZmKCk7XFxuIFxcdHJldCA9IGJwZl9wcm9nX3J1bl9hcnJheShyY3VfZGVyZWZlcmVuY2UoY2FsbC1cXHUwMDNlcHJvZ19hcnJheSksXFxuIFxcdFxcdFxcdFxcdCBjdHgsIGJwZl9wcm9nX3J1bik7XFxuK1xcdGlmIChub19sb2NrZGVwKVxcbitcXHRcXHRsb2NrZGVwX29uKCk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXG4gIG91dDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MTIuODY2MjI3NDUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTUzMTAyODg4NTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiLFxuICAgIFwiUFJPVkVfTE9DS0lOR1wiLFxuICAgIFwiS1BST0JFX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRyYWNlX2NhbGxfYnBmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZnVuY3Rpb25hbGx5IG1vZGlmaWVzIGB0cmFjZV9jYWxsX2JwZmAgdG8gZGlzYWJsZSBsb2NrZGVwIHRyYWNraW5nIHdoaWxlIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdHJhY2Vwb2ludHMgd2l0aCB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnIChzdWNoIGFzIGBsb2NrX3JlbGVhc2VgKS4gVGhpcyBpcyBhIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiB0cmFjaW5nIGJlaGF2aW9yIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU1NDYxZDQ1MTVjNDEwOTA5MGQzMWFjOWMyNThiMTFkNzMxNDkxNWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjIzOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaCBiL2luY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhcbmluZGV4IDMwOGM3NmI1N2QxMzIuLjZmNjdiNWU5ZTM4ZDYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oXG5AQCAtMzMwLDYgKzMzMCw3IEBAIGVudW0ge1xuIFx0VFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCxcbiBcdFRSQUNFX0VWRU5UX0ZMX0NVU1RPTV9CSVQsXG4gXHRUUkFDRV9FVkVOVF9GTF9URVNUX1NUUl9CSVQsXG4rXHRUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUF9CSVQsXG4gfTtcbiBcbiAvKlxuQEAgLTM0Nyw2ICszNDgsNyBAQCBlbnVtIHtcbiAgKiAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHNldCB3aGVuIHRoZSBjdXN0b20gZXZlbnQgaGFzIG5vdCBiZWVuIGF0dGFjaGVkXG4gICogICAgICAgICAgICAgICAgICAgdG8gYSB0cmFjZXBvaW50IHlldCwgdGhlbiBpdCBpcyBjbGVhcmVkIHdoZW4gaXQgaXMuXG4gICogIFRFU1RfU1RSICAgICAgLSBUaGUgZXZlbnQgaGFzIGEgXCIlc1wiIHRoYXQgcG9pbnRzIHRvIGEgc3RyaW5nIG91dHNpZGUgdGhlIGV2ZW50XG4rICogIEJQRl9OT19MT0NLREVQIC0gRGlzYWJsZSBsb2NrZGVwIHdoaWxlIHJ1bm5pbmcgYXR0YWNoZWQgQlBGIHByb2dyYW1zXG4gICovXG4gZW51bSB7XG4gXHRUUkFDRV9FVkVOVF9GTF9DQVBfQU5ZXHRcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0NBUF9BTllfQklUKSxcbkBAIC0zNjAsNiArMzYyLDcgQEAgZW51bSB7XG4gXHRUUkFDRV9FVkVOVF9GTF9GUFJPQkVcdFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfRlBST0JFX0JJVCksXG4gXHRUUkFDRV9FVkVOVF9GTF9DVVNUT01cdFx0PSAoMSBcdTAwM2NcdTAwM2MgVFJBQ0VfRVZFTlRfRkxfQ1VTVE9NX0JJVCksXG4gXHRUUkFDRV9FVkVOVF9GTF9URVNUX1NUUlx0XHQ9ICgxIFx1MDAzY1x1MDAzYyBUUkFDRV9FVkVOVF9GTF9URVNUX1NUUl9CSVQpLFxuK1x0VFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBcdD0gKDEgXHUwMDNjXHUwMDNjIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQX0JJVCksXG4gfTtcbiBcbiAjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMX1VLUFJPQkUgKFRSQUNFX0VWRU5UX0ZMX0tQUk9CRSB8IFRSQUNFX0VWRU5UX0ZMX1VQUk9CRSlcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcbmluZGV4IDFkZWQ4NjljZDYxOWYuLjVjY2Y1YzU0ZTNkMmQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaFxuQEAgLTcyLDYgKzcyLDggQEAgREVGSU5FX0VWRU5UKGxvY2ssIGxvY2tfcmVsZWFzZSxcbiBcdFRQX0FSR1MobG9jaywgaXApXG4gKTtcbiBcbitUUkFDRV9FVkVOVF9GTEFHUyhsb2NrX3JlbGVhc2UsIFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQKTtcbitcbiAjaWZkZWYgQ09ORklHX0xPQ0tfU1RBVFxuIFxuIERFRklORV9FVkVOVChsb2NrLCBsb2NrX2NvbnRlbmRlZCxcbmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMgYi9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNcbmluZGV4IDc1NDk1YTVjMzUwNzkuLmYyNDYwZjNjODYwZTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNcbisrKyBiL2tlcm5lbC90cmFjZS9icGZfdHJhY2UuY1xuQEAgLTI0LDYgKzI0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25hbWVpLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9sb2NrZGVwLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvYnBmX3NrX3N0b3JhZ2UuaFx1MDAzZVxuIFxuQEAgLTExMCw2ICsxMTEsNyBAQCBzdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpO1xuICAqL1xuIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuIHtcbitcdGJvb2wgbm9fbG9ja2RlcCA9IGNhbGwtXHUwMDNlZmxhZ3MgXHUwMDI2IFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQO1xuIFx0dW5zaWduZWQgaW50IHJldDtcbiBcbiBcdGNhbnRfc2xlZXAoKTtcbkBAIC0xNDQsOCArMTQ2LDEyIEBAIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxuIFx0ICogcmN1X2RlcmVmZXJlbmNlKCkgd2hpY2ggaXMgYWNjZXB0ZWQgcmlzay5cbiBcdCAqL1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuK1x0aWYgKG5vX2xvY2tkZXApXG4rXHRcdGxvY2tkZXBfb2ZmKCk7XG4gXHRyZXQgPSBicGZfcHJvZ19ydW5fYXJyYXkocmN1X2RlcmVmZXJlbmNlKGNhbGwtXHUwMDNlcHJvZ19hcnJheSksXG4gXHRcdFx0XHQgY3R4LCBicGZfcHJvZ19ydW4pO1xuK1x0aWYgKG5vX2xvY2tkZXApXG4rXHRcdGxvY2tkZXBfb24oKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuICBvdXQ6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzoxMi44NjYyMjkzMzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTAwODI0NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgb2YgdGhlIExvY2tkZXAgRGlzYWJsaW5nIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgZnV6emluZyBpdCBpcyBhIHdvcnRod2hpbGUgZWZmb3J0LiBFc3NlbnRpYWxseSwgaXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgLCBhbmQgYXBwbGllcyBpdCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2UgZXZlbnQuIFRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdHJhY2VfY2FsbF9icGZgLCB3aGVyZSBpdCBkaXNhYmxlcyBsb2NrZGVwIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBydW5uaW5nIGlmIHRoaXMgbmV3IGZsYWcgaXMgcHJlc2VudC5cblxuRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogd2UncmUgZGlzYWJsaW5nIGxvY2tkZXAgYXJvdW5kIHRoZSBleGVjdXRpb24gb2YgYGJwZl9wcm9nX3J1bl9hcnJheWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzICpyZWFjaGFibGUqIGJ5IGEgZnV6emVyLiBBbmQgaXQgaXMuIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IGF0dGFjaGluZyBhIEJQRiBwcm9ncmFtIHRvIGEgdHJhY2Vwb2ludCDigJMgc3BlY2lmaWNhbGx5IGBsb2NrX3JlbGVhc2VgLCBzaW5jZSB0aGlzIGZsYWcgaXMgc2V0IHRoZXJlLiBUaGlzIG1ha2VzIG1lIGNvbnNpZGVyIHRoZSBjb25kaXRpb25zIEkgbmVlZCB0byByZXByb2R1Y2UgdGhlIHNjZW5hcmlvLlxuXG5TbyBuZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgY2hhbmdlIGhhcHBlbnMgd2l0aGluIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGVuYWJsZWQuIEkgbmVlZCB0byBub3cgY2hlY2sgZWl0aGVyIGBrZXJuZWwvdHJhY2UvTWFrZWZpbGVgIG9yIGBpbml0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRydWUgYW5kIHRvIHNlZSBob3cgdG8gYWN0dWFsbHkgZW5hYmxlIGBCUEZfRVZFTlRTYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjE3Ljc2NzA1NzEyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgxNjIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfRVZFTlRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvTWFrZWZpbGU9MTA5PW9iai0kKENPTkZJR19VU0VSX0VWRU5UUykgKz0gdHJhY2VfZXZlbnRzX3VzZXIub1xcbmtlcm5lbC90cmFjZS9NYWtlZmlsZToxMTA6b2JqLSQoQ09ORklHX0JQRl9FVkVOVFMpICs9IGJwZl90cmFjZS5vXFxua2VybmVsL3RyYWNlL01ha2VmaWxlLTExMS1vYmotJChDT05GSUdfS1BST0JFX0VWRU5UUykgKz0gdHJhY2Vfa3Byb2JlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MTcuODI1ODgxMzIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzOTY4MTA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgRXZlbnQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYEJQRl9FVkVOVFNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluZWQuIE1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgY2FuZGlkYXRlczogdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgYW5kIHRoZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgYGluaXQvS2NvbmZpZ2AgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGl0J3Mgd2hlcmUgY29yZSBzeXN0ZW0gZmVhdHVyZXMgYXJlIG9mdGVuIGNvbmZpZ3VyZWQuIEFsdGVybmF0aXZlbHksIGJlY2F1c2UgQlBGIGlzIGhlYXZpbHkgaW52b2x2ZWQgaW4gdHJhY2luZyBhbmQgaW5zdHJ1bWVudGF0aW9uLCB0aGUgYGtlcm5lbC90cmFjZS9LY29uZmlnYCBmaWxlIGlzIGFub3RoZXIgaGlnaGx5IGxpa2VseSBsb2NhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgdGhvc2UgdHdvIGZpbGVzIOKAkyB0aGF0IHNob3VsZCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MjAuNjY1NTY0NzI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDY0MzYxNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjIzLjIxMjAxNTAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODMyOTA2NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcmVxdWVzdDpcblxuKipEZWNvbnN0cnVjdGluZyBgQlBGX0VWRU5UU2AgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhleSB3YW50IG1lIHRvIGRpc3NlY3QgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfRVZFTlRTYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHRoaW5rIGFib3V0IGl0IGZyb20gYSBzeXN0ZW1zIHBlcnNwZWN0aXZlLCBhcyBJIHdvdWxkIGlmIEkgd2VyZSBhcmNoaXRlY3RpbmcgYSB0cmFjaW5nIGZyYW1ld29yay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgXCJkZXBlbmRlbmNpZXNcIiBhY3R1YWxseSBtZWFucyBpbiB0aGlzIGNvbnRleHQuIElzIGl0IHRoZSB1cHN0cmVhbSBrZXJuZWwgc3Vic3lzdGVtcyB0aGF0IGZlZWQgaW50byB0aGUgYEJQRl9FVkVOVFNgIGluZnJhc3RydWN0dXJlPyBBcmUgd2UgdGFsa2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBhcHBsaWNhdGlvbnMgb3IgdG9vbHMgdGhhdCAqY29uc3VtZSogdGhlIGV2ZW50cz8gT3IgcGVyaGFwcyBib3RoP1xuXG5JJ2Qgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUga2VybmVsIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBCUEYgZXZlbnQtcmVsYXRlZCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMuIEknZCBiZSBzZWFyY2hpbmcgZm9yIGluY2x1ZGVzLCBmdW5jdGlvbiBjYWxscywgYW5kIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRpcmVjdGx5IGludGVyYWN0IHdpdGggYEJQRl9FVkVOVFNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgZGF0YSBvcmlnaW5hdGVzLCB0aGUgcHJvY2Vzc2luZyBzdGVwcyBpdCBnb2VzIHRocm91Z2gsIGFuZCBob3cgaXQgaXMgdWx0aW1hdGVseSBleHBvc2VkLlxuXG5NeSBwcmltYXJ5IGZvY3VzIHdpbGwgYmUgb24gdGhlc2UgYXJlYXM6XG5cbiogICAqKlVwc3RyZWFtIEtlcm5lbCBDb21wb25lbnRzOioqIFdoZXJlIGRvZXMgdGhlIGFjdHVhbCBldmVudCBkYXRhIGNvbWUgZnJvbT8gVHJhY2Vwb2ludHMsIHBlcmYgZXZlbnRzLCBrcHJvYmVzLCB1cHJvYmVzLCBVU0RULCBldGMuPyBIb3cgaXMgdGhlIGRhdGEgc3RydWN0dXJlZCBiZWZvcmUgaXQgZ2V0cyBpbnRvIHRoZSBCUEYgcGlwZWxpbmU/IFdoYXQgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgYXJlIGludm9sdmVkPyBBcmUgdGhlcmUgYW55IHNoYXJlZCByZXNvdXJjZXM/XG4qICAgKipCUEYgSGVscGVyIEZ1bmN0aW9uczoqKiBXaGF0IEJQRiBoZWxwZXIgZnVuY3Rpb25zIGFyZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHdvcmtpbmcgd2l0aCBgQlBGX0VWRU5UU2A/IGBicGZfcGVyZl9ldmVudF9yZWFkKClgLCBgYnBmX3RyYWNlX3ByaW50aygpYCBhcmUgZ29vZCBzdGFydGluZyBwb2ludHMuIEhvdyBkbyB0aGV5IGhhbmRsZSBkYXRhIGJ1ZmZlcmluZywgZmlsdGVyaW5nLCBhbmQgZGVsaXZlcnk/XG4qICAgKipEb3duc3RyZWFtIENvbnN1bWVyczoqKiBIb3cgZG8gQlBGIHByb2dyYW1zIHJlYWQgYW5kIGludGVycHJldCB0aGUgZXZlbnRzPyBXaGF0IEJQRiBkYXRhIHN0cnVjdHVyZXMgKGUuZy4sIHJpbmcgYnVmZmVycywgbWFwcykgYXJlIHR5cGljYWxseSB1c2VkIGZvciB0aGlzIHB1cnBvc2U/IElzIHRoZXJlIGEgc3RhbmRhcmQgd2F5IHRvIGZvcm1hdCBvciBzZXJpYWxpemUgdGhlIGV2ZW50IGRhdGE/XG4qICAgKipMaWJicGY6KiogV2hhdCdzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYEJQRl9FVkVOVFNgIGluZnJhc3RydWN0dXJlIGFuZCB0aGUgYGxpYmJwZmAgbGlicmFyeT8gSG93IGRvZXMgYGxpYmJwZmAgZmFjaWxpdGF0ZSB0aGUgbG9hZGluZywgYXR0YWNoaW5nLCBhbmQgaW50ZXJhY3Rpb24gd2l0aCBCUEYgcHJvZ3JhbXM/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYGxpYmJwZmAgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZXZlbnRzP1xuXG5JJ2xsIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbGltaXRhdGlvbnMuIEFyZSB0aGVyZSBhbnkga25vd24gc2NhbGFiaWxpdHkgaXNzdWVzIHdpdGggYEJQRl9FVkVOVFNgIHVuZGVyIGhpZ2ggbG9hZD8gQXJlIHRoZXJlIGFueSBsb2NrIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBJJ2xsIHByb2JhYmx5IGNyb3NzLXJlZmVyZW5jZSBpdCB3aXRoIGFueSBoaXN0b3JpY2FsIGRvY3VtZW50YXRpb24gYW5kIGNvbW1pdHMsIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIHJlYXNvbnMgdGhhdCB3ZW50IGludG8gdGhlIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjI3Ljc5NTMwOTUwOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NTA6XFx0XFx0ICBjb252ZXJ0IHRoZSB0eXBlIG9mIGFuIGV2ZW50IGZpZWxkLiBGb3IgZXhhbXBsZSwgdHVybiBhblxcbiA4NTE6XFx0XFx0ICBhZGRyZXNzIGludG8gYSBzdHJpbmcuXFxuIDg1MjpcXHRcXG4gODUzOlxcdGNvbmZpZyBCUEZfRVZFTlRTXFxuIDg1NDpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuIDg1NTpcXHRcXHRkZXBlbmRzIG9uIChLUFJPQkVfRVZFTlRTIHx8IFVQUk9CRV9FVkVOVFMpIFxcdTAwMjZcXHUwMDI2IFBFUkZfRVZFTlRTXFxuIDg1NjpcXHRcXHRib29sXFxuIDg1NzpcXHRcXHRkZWZhdWx0IHlcXG4gODU4OlxcdFxcdGhlbHBcXG4gODU5OlxcdFxcdCAgVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gYXR0YWNoIEJQRiBwcm9ncmFtcyB0byBrcHJvYmUsIHVwcm9iZSwgYW5kXFxuIDg2MDpcXHRcXHQgIHRyYWNlcG9pbnQgZXZlbnRzLlxcbiA4NjE6XFx0XFxuIDg2MjpcXHRjb25maWcgRFlOQU1JQ19FVkVOVFNcXG4gODYzOlxcdFxcdGRlZl9ib29sIG5cXG4gODY0OlxcdFxcbiA4NjU6XFx0Y29uZmlnIFBST0JFX0VWRU5UU1xcbiA4NjY6XFx0XFx0ZGVmX2Jvb2wgblxcbiA4Njc6XFx0XFxuIDg2ODpcXHRjb25maWcgQlBGX0tQUk9CRV9PVkVSUklERVxcbiA4Njk6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBwcm9ncmFtcyB0byBvdmVycmlkZSBhIGtwcm9iZWQgZnVuY3Rpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjI3Ljc5NTQ0MTA5OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTExMjg4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBCUEYgRXZlbnQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyBgQlBGX0VWRU5UU2AgaGluZ2VzIG9uIGEgZmV3IGtleSBjb21wb25lbnRzLiBTcGVjaWZpY2FsbHksIGBCUEZfU1lTQ0FMTGAsIGFuZCBlaXRoZXIgYEtQUk9CRV9FVkVOVFNgIG9yIGBVUFJPQkVfRVZFTlRTYCAob3IgYm90aCksIHBsdXMgYFBFUkZfRVZFTlRTYC4gVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgaXQgYXBwZWFycywgaXMgdG8gZW5hYmxlIHRoaXMgaWYgYWxsIHRob3NlIHByZXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmllZC4gVGhhdCBtYWtlcyBzZW5zZSwgYSBjbGVhbiBhbmQgbG9naWNhbCBkZXBlbmRlbmN5IHN0cnVjdHVyZS5cblxuTm93LCB0aGUgdXNlIG9mIGBsb2NrZGVwX29mZigpYCBhbmQgYGxvY2tkZXBfb24oKWAgY2F1Z2h0IG15IGV5ZS4gVGhleSBzZWVtIGltcG9ydGFudCBoZXJlLCBzbyBuYXR1cmFsbHksIEkgbmVlZCBgQ09ORklHX0xPQ0tERVBgIHRvIGJlIGVuYWJsZWQgZm9yIHRoZW0gdG8gYWN0dWFsbHkgKmRvKiBhbnl0aGluZyBtZWFuaW5nZnVsLiBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgdGhleeKAmXJlIHN0aWxsIGRlZmluZWQgYXMgZW1wdHkgbWFjcm9zIGlmIGBDT05GSUdfTE9DS0RFUGAgaXMgbm90IHNldCwgdGhvdWdoLiBMZXQgbWUganVzdCBjb25maXJtIHdoZXJlIHRob3NlIGFyZSBkZWZpbmVkLi4uIEFoLCByaWdodCwgdGhleSdyZSBpbiBgaW5jbHVkZS9saW51eC9sb2NrZGVwLmhgLiBPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGhlYWRlciBmaWxlIGFuZCBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kIHRoZWlyIHVzYWdlIGNvbnRleHQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjMxLjc0NjU3Mjk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDUzNTM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgbG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzozMS44MDExMTYxMzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4Mzc0NzQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBFbXB0eSBEZWZpbml0aW9uKipcblxuSG1tLCBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW4gYWN0dWFsLCBkZWZpbmVkIGZ1bmN0aW9uIG9yIG1hY3JvIGFzc29jaWF0ZWQgd2l0aCBgbG9ja2RlcF9vZmZgLiBJdCdzIGEgY29tbW9uIHBhdHRlcm4sIGVzcGVjaWFsbHkgaW4ga2VybmVsIGRldmVsb3BtZW50LiBTb21ldGltZXMsIHRoZXNlIGRlYnVnZ2luZyBvciBjb250cm9sIG1lY2hhbmlzbXMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIG9yIGV2ZW4gZGVmaW5lZCBhcyBcIm5vdGhpbmdcIiB1bmRlciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIGEgc2l0dWF0aW9uIHdoZXJlIGBsb2NrZGVwX29mZmAgbWlnaHQgYmUgZGVmaW5lZCBhcyBhbiBlbXB0eSBtYWNybywgb3IgcGVyaGFwcyBldmVuIGEgZnVuY3Rpb24gdGhhdCdzIGNvbXBsZXRlbHkgc3R1YmJlZCBvdXQuIFRoaXMgbWVhbnMgaXQgZWl0aGVyIGRvZXMgbm90aGluZywgb3IgaXMgZGlzYWJsZWQgYWx0b2dldGhlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGtlcm5lbCBpcyB1c2luZyBpdCB0byBkaXNhYmxlIGxvY2sgZGVwZW5kZW5jeSBjaGVja2luZywgb3IgaWYgaXQgaGFzIGJlZW4gY29tcGlsZWQgd2l0aG91dCBsb2NrIGRlcGVuZGVuY3kgY2hlY2tpbmcsIGFzIHRoaXMgd291bGQgY2hhbmdlIGhvdyB0aGUgbG9jayBkZXBlbmRlbmNpZXMgYXJlIGFuYWx5c2VkLiBJJ20gZ29pbmcgdG8gbG9vayBtb3JlIGNsb3NlbHkgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGltcGxlbWVudGF0aW9uIGF0dGFjaGVkIHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjI1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6MzQuOTg0ODY3MTA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMzNjUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgbG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzozNS4wMzYyMTE4MDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEwOTc4ODk1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gbG9ja2RlcC5oKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgbG9ja2RlcCBpbnRlcm5hbHMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHBlcmhhcHMgc29tZSBvZiB0aGUgZnVuZGFtZW50YWwgY29uY2VwdHMgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIGxvY2sgZGVwZW5kZW5jeSB2YWxpZGF0b3IuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGluY2x1ZGUvbGludXgvbG9ja2RlcC5oYCwgYXJvdW5kIGxpbmUgMTA5LiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3BvdCB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgdGhlIGtleSBkZWZpbml0aW9ucyDigJMgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGxvY2tkZXAgc3RydWN0dXJlcyBsaWtlIGBzdHJ1Y3QgbG9ja19jbGFzc2AsIGBzdHJ1Y3QgbG9ja2RlcF9tYXBgIG9yIHBvdGVudGlhbGx5IGV2ZW4gc29tZSBvZiB0aGUgY3J1Y2lhbCBtYWNyb3MgdGhhdCBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBvZiBsb2NrIGFuYWx5c2lzIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhlIGJhc2ljIHN0cnVjdHVyZSBkZWZpbml0aW9ucyDigJMgd2hhdCBkYXRhIGlzIHN0b3JlZCBhYm91dCBsb2Nrcywgd2hpY2ggbGlrZWx5IGluY2x1ZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NrJ3MgY2xhc3MsIHVzYWdlIGNvbnRleHQsIGFuZCBwb3RlbnRpYWxseSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgaXQgZm9ybXMgd2l0aCBvdGhlciBsb2Nrcy4gVGhlIGxpbmUgbnVtYmVyIGlzIGEgc3VnZ2VzdGlvbi4gV2UnbGwgZmluZCBvdXQsIHNob3J0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzo1Ni4xMzQxMDQ2NzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdCNkZWZpbmUgTE9DS0RFUF9SRUNVUlNJT05fQklUU1xcdDE2XFxuIDEwMTpcXHQjZGVmaW5lIExPQ0tERVBfT0ZGXFx0XFx0KDFVIFxcdTAwM2NcXHUwMDNjIExPQ0tERVBfUkVDVVJTSU9OX0JJVFMpXFxuIDEwMjpcXHQjZGVmaW5lIExPQ0tERVBfUkVDVVJTSU9OX01BU0tcXHQoTE9DS0RFUF9PRkYgLSAxKVxcbiAxMDM6XFx0XFxuIDEwNDpcXHQvKlxcbiAxMDU6XFx0ICogbG9ja2RlcF97b2ZmLG9ufSgpIGFyZSBtYWNyb3MgdG8gYXZvaWQgdHJhY2luZyBhbmQga3Byb2Jlczsgbm90IGlubGluZXMgZHVlXFxuIDEwNjpcXHQgKiB0byBoZWFkZXIgZGVwZW5kZW5jaWVzLlxcbiAxMDc6XFx0ICovXFxuIDEwODpcXHRcXG4gMTA5OlxcdCNkZWZpbmUgbG9ja2RlcF9vZmYoKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTEwOlxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDExMTpcXHRcXHRjdXJyZW50LVxcdTAwM2Vsb2NrZGVwX3JlY3Vyc2lvbiArPSBMT0NLREVQX09GRjtcXHRcXFxcXFxuIDExMjpcXHR9IHdoaWxlICgwKVxcbiAxMTM6XFx0XFxuIDExNDpcXHQjZGVmaW5lIGxvY2tkZXBfb24oKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMTE1OlxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDExNjpcXHRcXHRjdXJyZW50LVxcdTAwM2Vsb2NrZGVwX3JlY3Vyc2lvbiAtPSBMT0NLREVQX09GRjtcXHRcXFxcXFxuIDExNzpcXHR9IHdoaWxlICgwKVxcbiAxMTg6XFx0XFxuIDExOTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX3JlZ2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuIDEyMDpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX3VucmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcXG4gMTIxOlxcdFxcbiAxMjI6XFx0LypcXG4gMTIzOlxcdCAqIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgc3BlY2lmaWMgbG9ja2luZyB2YXJpYW50cyAoc3BpbmxvY2tzLFxcbiAxMjQ6XFx0ICogcndsb2NrcywgbXV0ZXhlcyBhbmQgcndzZW1zKSB0byBwYXNzIGluaXQvYWNxdWlyZS9yZWxlYXNlIGV2ZW50c1xcbiAxMjU6XFx0ICogdG8gbG9ja2RlcDpcXG4gMTI2OlxcdCAqL1xcbiAxMjc6XFx0XFxuIDEyODpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfbWFwX3R5cGUoc3RydWN0IGxvY2tkZXBfbWFwICpsb2NrLCBjb25zdCBjaGFyICpuYW1lLFxcbiAxMjk6XFx0XFx0c3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXksIGludCBzdWJjbGFzcywgdTggaW5uZXIsIHU4IG91dGVyLCB1OCBsb2NrX3R5cGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyMzo1Ni4xMzQyMDA2NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NjI0NDgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIExvY2tkZXAgRGVmaW5pdGlvbioqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgYGxvY2tkZXBfb2ZmKClgLi4uIHdoZXJlICppcyogdGhhdCBkZWZpbmVkPyBJIHNlZSB0aGUgcmVmZXJlbmNlIGhlcmUsIHdoaWNoIGlzIGhlbHBmdWwuIE5vdywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIGhvdyBpdCdzICpjb25kaXRpb25hbGx5KiBkZWZpbmVkLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gbG9vayB1cHN0cmVhbSBmb3IgYW55IGAjaWZkZWZgIGRpcmVjdGl2ZXMgdGhhdCBtaWdodCBjb250cm9sIGl0cyBpbmNsdXNpb24uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0byBzZWUgaWYgaXQncyBkZXBlbmRlbnQgb24gYENPTkZJR19MT0NLREVQYC4gSSdsbCBzY2FuIHRoZSBwcmVjZWRpbmcgbGluZXMgcXVpY2tseS4gVGhpcyBpcyBjb21tb24gcHJhY3RpY2UsIEkgd2FudCB0byBzZWUgaWYgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgY29uZGl0aW9uYWwgaW4gYW55IHdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjM6NTkuMDgwNDQ4MjczWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2xvY2tkZXAuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFJ1bnRpbWUgbG9ja2luZyBjb3JyZWN0bmVzcyB2YWxpZGF0b3JcXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiAgQ29weXJpZ2h0IChDKSAyMDA2LDIwMDcgUmVkIEhhdCwgSW5jLiwgSW5nbyBNb2xuYXIgXFx1MDAzY21pbmdvQHJlZGhhdC5jb21cXHUwMDNlXFxuICAgNjpcXHQgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFJlZCBIYXQsIEluYy4sIFBldGVyIFppamxzdHJhXFxuICAgNzpcXHQgKlxcbiAgIDg6XFx0ICogc2VlIERvY3VtZW50YXRpb24vbG9ja2luZy9sb2NrZGVwLWRlc2lnbi5yc3QgZm9yIG1vcmUgZGV0YWlscy5cXG4gICA5OlxcdCAqL1xcbiAgMTA6XFx0I2lmbmRlZiBfX0xJTlVYX0xPQ0tERVBfSFxcbiAgMTE6XFx0I2RlZmluZSBfX0xJTlVYX0xPQ0tERVBfSFxcbiAgMTI6XFx0XFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbG9ja2RlcF90eXBlcy5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS9wZXJjcHUuaFxcdTAwM2VcXG4gIDE2OlxcdFxcbiAgMTc6XFx0c3RydWN0IHRhc2tfc3RydWN0O1xcbiAgMTg6XFx0XFxuICAxOTpcXHQjaWZkZWYgQ09ORklHX0xPQ0tERVBcXG4gIDIwOlxcdFxcbiAgMjE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbmthZ2UuaFxcdTAwM2VcXG4gIDIyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuICAyMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVidWdfbG9ja3MuaFxcdTAwM2VcXG4gIDI0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGFja3RyYWNlLmhcXHUwMDNlXFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX2NvcHlfbWFwKHN0cnVjdCBsb2NrZGVwX21hcCAqdG8sXFxuICAyNzpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGxvY2tkZXBfbWFwICpmcm9tKVxcbiAgMjg6XFx0e1xcbiAgMjk6XFx0XFx0aW50IGk7XFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCp0byA9ICpmcm9tO1xcbiAgMzI6XFx0XFx0LypcXG4gIDMzOlxcdFxcdCAqIFNpbmNlIHRoZSBjbGFzcyBjYWNoZSBjYW4gYmUgbW9kaWZpZWQgY29uY3VycmVudGx5IHdlIGNvdWxkIG9ic2VydmVcXG4gIDM0OlxcdFxcdCAqIGhhbGYgcG9pbnRlcnMgKDY0Yml0IGFyY2ggdXNpbmcgMzJiaXQgY29weSBpbnNucykuIFRoZXJlZm9yZSBjbGVhclxcbiAgMzU6XFx0XFx0ICogdGhlIGNhY2hlcyBhbmQgdGFrZSB0aGUgcGVyZm9ybWFuY2UgaGl0LlxcbiAgMzY6XFx0XFx0ICpcXG4gIDM3OlxcdFxcdCAqIFhYWCBpdCBkb2Vzbid0IHdvcmsgd2VsbCB3aXRoIGxvY2tkZXBfc2V0X2NsYXNzX2FuZF9zdWJjbGFzcygpLCBzaW5jZVxcbiAgMzg6XFx0XFx0ICogICAgIHRoYXQgcmVsaWVzIG9uIGNhY2hlIGFidXNlLlxcbiAgMzk6XFx0XFx0ICovXFxuICA0MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlJfTE9DS0RFUF9DQUNISU5HX0NMQVNTRVM7IGkrKylcXG4gIDQxOlxcdFxcdFxcdHRvLVxcdTAwM2VjbGFzc19jYWNoZVtpXSA9IE5VTEw7XFxuICA0MjpcXHR9XFxuICA0MzpcXHRcXG4gIDQ0OlxcdC8qXFxuICA0NTpcXHQgKiBFdmVyeSBsb2NrIGhhcyBhIGxpc3Qgb2Ygb3RoZXIgbG9ja3MgdGhhdCB3ZXJlIHRha2VuIGFmdGVyIGl0LlxcbiAgNDY6XFx0ICogV2Ugb25seSBncm93IHRoZSBsaXN0LCBuZXZlciByZW1vdmUgZnJvbSBpdDpcXG4gIDQ3OlxcdCAqL1xcbiAgNDg6XFx0c3RydWN0IGxvY2tfbGlzdCB7XFxuICA0OTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0XFx0ZW50cnk7XFxuICA1MDpcXHRcXHRzdHJ1Y3QgbG9ja19jbGFzc1xcdFxcdCpjbGFzcztcXG4gIDUxOlxcdFxcdHN0cnVjdCBsb2NrX2NsYXNzXFx0XFx0KmxpbmtzX3RvO1xcbiAgNTI6XFx0XFx0Y29uc3Qgc3RydWN0IGxvY2tfdHJhY2VcXHRcXHQqdHJhY2U7XFxuICA1MzpcXHRcXHR1MTZcXHRcXHRcXHRcXHRkaXN0YW5jZTtcXG4gIDU0OlxcdFxcdC8qIGJpdG1hcCBvZiBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzIGZyb20gaGVhZCB0byB0aGlzICovXFxuICA1NTpcXHRcXHR1OFxcdFxcdFxcdFxcdGRlcDtcXG4gIDU2OlxcdFxcdC8qIHVzZWQgYnkgQkZTIHRvIHJlY29yZCB3aGV0aGVyIFxcXCJwcmV2IC1cXHUwMDNlIHRoaXNcXFwiIG9ubHkgaGFzIC0oKlIpLVxcdTAwM2UgKi9cXG4gIDU3OlxcdFxcdHU4XFx0XFx0XFx0XFx0b25seV94cjtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0LypcXG4gIDYwOlxcdFxcdCAqIFRoZSBwYXJlbnQgZmllbGQgaXMgdXNlZCB0byBpbXBsZW1lbnQgYnJlYWR0aC1maXJzdCBzZWFyY2gsIGFuZCB0aGVcXG4gIDYxOlxcdFxcdCAqIGJpdCAwIGlzIHJldXNlZCB0byBpbmRpY2F0ZSBpZiB0aGUgbG9jayBoYXMgYmVlbiBhY2Nlc3NlZCBpbiBCRlMuXFxuICA2MjpcXHRcXHQgKi9cXG4gIDYzOlxcdFxcdHN0cnVjdCBsb2NrX2xpc3RcXHRcXHQqcGFyZW50O1xcbiAgNjQ6XFx0fTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0LyoqXFxuICA2NzpcXHQgKiBzdHJ1Y3QgbG9ja19jaGFpbiAtIGxvY2sgZGVwZW5kZW5jeSBjaGFpbiByZWNvcmRcXG4gIDY4OlxcdCAqXFxuICA2OTpcXHQgKiBAaXJxX2NvbnRleHQ6IHRoZSBzYW1lIGFzIGlycV9jb250ZXh0IGluIGhlbGRfbG9jayBiZWxvd1xcbiAgNzA6XFx0ICogQGRlcHRoOiAgICAgICB0aGUgbnVtYmVyIG9mIGhlbGQgbG9ja3MgaW4gdGhpcyBjaGFpblxcbiAgNzE6XFx0ICogQGJhc2U6ICAgICAgICB0aGUgaW5kZXggaW4gY2hhaW5faGxvY2tzIGZvciB0aGlzIGNoYWluXFxuICA3MjpcXHQgKiBAZW50cnk6ICAgICAgIHRoZSBjb2xsaWRlZCBsb2NrIGNoYWlucyBpbiBsb2NrX2NoYWluIGhhc2ggbGlzdFxcbiAgNzM6XFx0ICogQGNoYWluX2tleTogICB0aGUgaGFzaCBrZXkgb2YgdGhpcyBsb2NrX2NoYWluXFxuICA3NDpcXHQgKi9cXG4gIDc1OlxcdHN0cnVjdCBsb2NrX2NoYWluIHtcXG4gIDc2OlxcdFxcdC8qIHNlZSBCVUlMRF9CVUdfT04oKXMgaW4gYWRkX2NoYWluX2NhY2hlKCkgKi9cXG4gIDc3OlxcdFxcdHVuc2lnbmVkIGludFxcdFxcdFxcdGlycV9jb250ZXh0IDogIDIsXFxuICA3ODpcXHRcXHRcXHRcXHRcXHRcXHRkZXB0aCAgICAgICA6ICA2LFxcbiAgNzk6XFx0XFx0XFx0XFx0XFx0XFx0YmFzZVxcdCAgICA6IDI0O1xcbiAgODA6XFx0XFx0LyogNCBieXRlIGhvbGUgKi9cXG4gIDgxOlxcdFxcdHN0cnVjdCBobGlzdF9ub2RlXFx0XFx0ZW50cnk7XFxuICA4MjpcXHRcXHR1NjRcXHRcXHRcXHRcXHRjaGFpbl9rZXk7XFxuICA4MzpcXHR9O1xcbiAgODQ6XFx0XFxuICA4NTpcXHQvKlxcbiAgODY6XFx0ICogSW5pdGlhbGl6YXRpb24sIHNlbGYtdGVzdCBhbmQgZGVidWdnaW5nLW91dHB1dCBtZXRob2RzOlxcbiAgODc6XFx0ICovXFxuICA4ODpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXQodm9pZCk7XFxuICA4OTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX3Jlc2V0KHZvaWQpO1xcbiAgOTA6XFx0ZXh0ZXJuIHZvaWQgbG9ja2RlcF9yZXNldF9sb2NrKHN0cnVjdCBsb2NrZGVwX21hcCAqbG9jayk7XFxuICA5MTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2ZyZWVfa2V5X3JhbmdlKHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpO1xcbiAgOTI6XFx0ZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCBsb2NrZGVwX3N5c19leGl0KHZvaWQpO1xcbiAgOTM6XFx0ZXh0ZXJuIHZvaWQgbG9ja2RlcF9zZXRfc2VsZnRlc3RfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbiAgOTQ6XFx0XFxuICA5NTpcXHRleHRlcm4gdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbiAgOTY6XFx0XFxuICA5NzpcXHQvKlxcbiAgOTg6XFx0ICogU3BsaXQgdGhlIHJlY3Vyc2lvbiBjb3VudGVyIGluIHR3byB0byByZWFkaWx5IGRldGVjdCAnb2ZmJyB2cyByZWN1cnNpb24uXFxuICA5OTpcXHQgKi9cXG4gMTAwOlxcdCNkZWZpbmUgTE9DS0RFUF9SRUNVUlNJT05fQklUU1xcdDE2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjIzOjU5LjA4MDU5ODQ3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc3NTEzNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqTG9ja2RlcCBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBmb2N1cyBpcyBvbiB0aGlzIHNlY3Rpb24sIHdoaWNoIGlzIGNsZWFybHkgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19MT0NLREVQYC4gT2theSwgdGhhdCdzIGV4cGVjdGVkLiBMb2NrZGVwIGlzIGNyaXRpY2FsIGZvciBkZXRlY3RpbmcgbG9jay1yZWxhdGVkIGJ1Z3MsIHNvIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBpZiBDT05GSUdfTE9DS0RFUCBpc24ndCAqZGVmaW5lZCosIHdoYXQgaGFwcGVucyB0byBgbG9ja2RlcF9vZmYoKWA/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0cyBhYnNlbmNlIGlzIGhhbmRsZWQuIElzIGl0IGRlZmluZWQgYXMgYSBuby1vcD8gRG9lcyBpdCBnZXQgcmVwbGFjZWQgd2l0aCBzb21ldGhpbmcgZWxzZT8gT3IsIGlzIHRoZSBzdXJyb3VuZGluZyBjb2RlIGNvbXBsZXRlbHkgcmVtb3ZlZD8gSXQncyBlc3NlbnRpYWwgdG8gdHJhY2UgdGhpcyBsb2dpYyB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcyB3aGVuIGxvY2tkZXAgaXMgZGlzYWJsZWQuIEtub3dpbmcgaG93IGl0J3MgaGFuZGxlZCBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIGFuZCB1bmRlcnN0YW5kaW5nIHBvdGVudGlhbCBsb2NrLXJlbGF0ZWQgaXNzdWVzIGluIGRpZmZlcmVudCBidWlsZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGViYXNlIHRvIGZpbmQgdGhhdCBkZWZpbml0aW9uIChvciBsYWNrIHRoZXJlb2YpIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDowMi41NTgxMjI0OTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMzU2NjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgbG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDowMi44OTE2OTc5NDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTAyMzE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gbG9ja2RlcC5oJ3MgQ29uZGl0aW9uYWwgTG9naWMqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGluY2x1ZGUvbGludXgvbG9ja2RlcC5oYCwgc3BlY2lmaWNhbGx5IHRoZSBgI2lmZGVmIENPTkZJR19MT0NLREVQYCBibG9jay4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzLCBhbmQgcmlnaHQgbm93IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB0aGUgYCNlbHNlYCBicmFuY2gsIHRoZSBvbmUgdGhhdCBkZWZpbmVzIHdoYXQgaGFwcGVucyB3aGVuIGBDT05GSUdfTE9DS0RFUGAgKmlzbid0KiBlbmFibGVkLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlLCAqdW5pbnN0cnVtZW50ZWQqIGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgZGVmaW5lZC4gQSBnb29kIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgYGxvY2tkZXBgLCBvciB0aGUgZWRnZSBjYXNlcyB3aGVuIHlvdSdyZSBydW5uaW5nIHdpdGhvdXQgaXRzIHNhZmV0eSBuZXQuIFdlIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGJhc2VsaW5lIHRoYXQncyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMzMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjA2LjAxMjcyNDcxOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTgzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzcwOlxcdFxcbiAzNzE6XFx0c3RhdGljIGlubGluZSB2b2lkIGxvY2tkZXBfcmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KVxcbiAzNzI6XFx0e1xcbiAzNzM6XFx0fVxcbiAzNzQ6XFx0XFxuIDM3NTpcXHRzdGF0aWMgaW5saW5lIHZvaWQgbG9ja2RlcF91bnJlZ2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSlcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdH1cXG4gMzc4OlxcdFxcbiAzNzk6XFx0I2RlZmluZSBsb2NrZGVwX2RlcHRoKHRzaylcXHQoMClcXG4gMzgwOlxcdFxcbiAzODE6XFx0LypcXG4gMzgyOlxcdCAqIER1bW15IGZvcndhcmQgZGVjbGFyYXRpb25zLCBhbGxvdyB1c2VycyB0byB3cml0ZSBsZXNzIGlmZGVmLXkgY29kZVxcbiAzODM6XFx0ICogYW5kIGRlcGVuZCBvbiBkZWFkIGNvZGUgZWxpbWluYXRpb24uXFxuIDM4NDpcXHQgKi9cXG4gMzg1OlxcdGV4dGVybiBpbnQgbG9ja19pc19oZWxkKGNvbnN0IHZvaWQgKik7XFxuIDM4NjpcXHRleHRlcm4gaW50IGxvY2tkZXBfaXNfaGVsZChjb25zdCB2b2lkICopO1xcbiAzODc6XFx0I2RlZmluZSBsb2NrZGVwX2lzX2hlbGRfdHlwZShsLCByKVxcdFxcdCgxKVxcbiAzODg6XFx0XFxuIDM4OTpcXHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0KGMpXFx0XFx0XFx0ZG8geyB9IHdoaWxlICgwKVxcbiAzOTA6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9vbmNlKGMpXFx0XFx0XFx0ZG8geyB9IHdoaWxlICgwKVxcbiAzOTE6XFx0XFxuIDM5MjpcXHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGQobClcXHRcXHRcXHRfX2Fzc3VtZV9jdHhfbG9jayhsKVxcbiAzOTM6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9ub3RfaGVsZChsKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyB9IHdoaWxlICgwKVxcbiAzOTQ6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9oZWxkX3dyaXRlKGwpXFx0XFx0X19hc3N1bWVfY3R4X2xvY2sobClcXG4gMzk1OlxcdCNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZF9yZWFkKGwpXFx0XFx0X19hc3N1bWVfc2hhcmVkX2N0eF9sb2NrKGwpXFxuIDM5NjpcXHQjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfb25jZShsKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyB9IHdoaWxlICgwKVxcbiAzOTc6XFx0I2RlZmluZSBsb2NrZGVwX2Fzc2VydF9ub25lX2hlbGRfb25jZSgpXFx0ZG8geyB9IHdoaWxlICgwKVxcbiAzOTg6XFx0XFxuIDM5OTpcXHQjZGVmaW5lIGxvY2tkZXBfcmVjdXJzaW5nKHRzaylcXHRcXHRcXHQoMClcXG4gNDAwOlxcdFxcbiA0MDE6XFx0I2RlZmluZSBOSUxfQ09PS0lFIChzdHJ1Y3QgcGluX2Nvb2tpZSl7IH1cXG4gNDAyOlxcdFxcbiA0MDM6XFx0I2RlZmluZSBsb2NrZGVwX3Bpbl9sb2NrKGwpXFx0XFx0XFx0KHsgc3RydWN0IHBpbl9jb29raWUgY29va2llID0geyB9OyBjb29raWU7IH0pXFxuIDQwNDpcXHQjZGVmaW5lIGxvY2tkZXBfcmVwaW5fbG9jayhsLCBjKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyAodm9pZCkoYyk7IH0gd2hpbGUgKDApXFxuIDQwNTpcXHQjZGVmaW5lIGxvY2tkZXBfdW5waW5fbG9jayhsLCBjKVxcdFxcdGRvIHsgKHZvaWQpKGwpOyAodm9pZCkoYyk7IH0gd2hpbGUgKDApXFxuIDQwNjpcXHRcXG4gNDA3OlxcdCNkZWZpbmUgREVGSU5FX1dBSVRfT1ZFUlJJREVfTUFQKF9uYW1lLCBfd2FpdF90eXBlKVxcdFxcXFxcXG4gNDA4OlxcdFxcdHN0cnVjdCBsb2NrZGVwX21hcCBfX21heWJlX3VudXNlZCBfbmFtZSA9IHt9XFxuIDQwOTpcXHRcXG4gNDEwOlxcdCNlbmRpZiAvKiAhTE9DS0RFUCAqL1xcbiA0MTE6XFx0XFxuIDQxMjpcXHQjaWZkZWYgQ09ORklHX1BST1ZFX0xPQ0tJTkdcXG4gNDEzOlxcdHZvaWQgbG9ja2RlcF9zZXRfbG9ja19jbXBfZm4oc3RydWN0IGxvY2tkZXBfbWFwICosIGxvY2tfY21wX2ZuLCBsb2NrX3ByaW50X2ZuKTtcXG4gNDE0OlxcdFxcbiA0MTU6XFx0I2RlZmluZSBsb2NrX3NldF9jbXBfZm4obG9jaywgLi4uKVxcdGxvY2tkZXBfc2V0X2xvY2tfY21wX2ZuKFxcdTAwMjYobG9jayktXFx1MDAzZWRlcF9tYXAsIF9fVkFfQVJHU19fKVxcbiA0MTY6XFx0I2Vsc2VcXG4gNDE3OlxcdCNkZWZpbmUgbG9ja19zZXRfY21wX2ZuKGxvY2ssIC4uLilcXHRkbyB7IH0gd2hpbGUgKDApXFxuIDQxODpcXHQjZW5kaWZcXG4gNDE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDowNi4wMTI5NDUyODhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTk5NDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWlzc2luZyBQaWVjZSBEZXRlY3RlZDogTG9ja2RlcCBEaXNjcmVwYW5jeSoqXG5cbkhtbSwgc29tZXRoaW5nJ3Mgbm90IHF1aXRlIHJpZ2h0LiBJJ20gcmV2aWV3aW5nIHRoaXMgY29uZGl0aW9uYWwgYnJhbmNoLCBhbmQgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY2lmaWNhbGx5LCBJJ20gbm90IHNlZWluZyB0aGUgZXhwZWN0ZWQgY2FsbCB0byBgbG9ja2RlcF9vZmYoKWAgd2l0aGluIHRoYXQgYCNlbHNlYCBibG9jay4gVGhhdCdzIGEgcmVkIGZsYWcuIFdlIHVzdWFsbHkgbmVlZCB0byBlbnN1cmUgdGhlIGxvY2tkZXAgc2V0dGluZyBpcyBoYW5kbGVkIGNvbnNpc3RlbnRseSBhY3Jvc3MgYm90aCBicmFuY2hlcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIG15IG1lbnRhbCBtb2RlbCBoZXJlLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXAsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZXRoaW5nIG9idmlvdXMgb3IgaGF2ZSBtaXNzZWQgc29tZSBkb3duc3RyZWFtIGRlcGVuZGVuY3kgb3IgbWFjcm8gdGhhdCBoaWRlcyBpdC4gR290dGEgdmVyaWZ5IGBsb2NrZGVwX29mZmAgaXNuJ3QgYmVpbmcgaW52b2tlZCBpbXBsaWNpdGx5IHNvbWV3aGVyZSBlbHNlIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZS4gTGV0J3Mgc2VlIHdoYXQgdHVybnMgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0OTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjA5LjEzODk0MzI4MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyMDE4MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibG9ja2RlcF9vZmZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9OTU9ZXh0ZXJuIHZvaWQgbG9ja2RlcF9pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTEwOC1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaDoxMDk6I2RlZmluZSBsb2NrZGVwX29mZigpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTExMC1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmg9MzIwPXN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaC0zMjMtXFxuaW5jbHVkZS9saW51eC9sb2NrZGVwLmg6MzI0OnN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrZGVwX29mZih2b2lkKVxcbmluY2x1ZGUvbGludXgvbG9ja2RlcC5oLTMyNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjA5LjE5NDE1MDAyN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI5NDA0Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZGl0aW9uYWwgRnVuY3Rpb24gRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJIHNlZSB0aGF0IHRoaXMgZnVuY3Rpb24sIHdoYXRldmVyIGl0IGlzLCBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiwgYnV0IG9ubHkgd2l0aGluIHRoZSBgI2Vsc2VgIGJyYW5jaCBvZiBzb21lIHByZXByb2Nlc3NvciBkaXJlY3RpdmUuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIE15IGZpcnN0IGFzc3VtcHRpb24sIGFuZCBJJ2xsIGNvbmZpcm0gdGhpcywgaXMgdGhhdCB0aGUgYENPTkZJR19MT0NLREVQYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBuZWNlc3NhcnkgZm9yIHRoaXMgZnVuY3Rpb24gdG8gYWN0dWFsbHkgKmRvKiBhbnl0aGluZyBtZWFuaW5nZnVsLiBPdGhlcndpc2UsIGl0IHdpbGwgbGlrZWx5IGJlIGNvbXBpbGVkIG91dCwgb3IgcmVzb2x2ZSB0byBzb21lIG51bGwgb3BlcmF0aW9uLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk5vdywgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgdHJhY2VfY2FsbF9icGZgLCBhbmQgdGhhdCByaW5ncyBhIGJlbGwuIGB0cmFjZV9jYWxsX2JwZmAgaXMgdGhhdCBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGF0dGFjaGVkIHRvIGEgdHJhY2Vwb2ludC4gVGhlIHRyYWNlcG9pbnQgYmVpbmcgbW9kaWZpZWQgaXMgYGxvY2tfcmVsZWFzZWAsIGFuZCB0aGF0J3MgZm91bmQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIEknbGwgd2FudCB0byByZXZpZXcgaG93IGBsb2NrX3JlbGVhc2VgIGlzIGRlZmluZWQuIFRoZSBmYWN0IHRoYXQgaXQncyBpbiB0aGUgYGxvY2suaGAgZmlsZSBhbmQgaW52b2x2ZXMgYGxvY2tfcmVsZWFzZWAgbWFrZXMgbWUgYXNzdW1lIHRoYXQgaXQgYWxzbyBtdXN0IGJlIGRlZmluZWQgY29uZGl0aW9uYWxseSB1bmRlciBhbiBgI2lmZGVmIENPTkZJR19MT0NLREVQYCBndWFyZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6MTMuNDIzNTU3NDYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL3RyYWNlL2V2ZW50cy9sb2NrLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I3VuZGVmIFRSQUNFX1NZU1RFTVxcbiAgIDM6XFx0I2RlZmluZSBUUkFDRV9TWVNURU0gbG9ja1xcbiAgIDQ6XFx0XFxuICAgNTpcXHQjaWYgIWRlZmluZWQoX1RSQUNFX0xPQ0tfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcXG4gICA2OlxcdCNkZWZpbmUgX1RSQUNFX0xPQ0tfSFxcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXFx1MDAzZVxcbiAgIDk6XFx0XFxuICAxMDpcXHQvKiBmbGFncyBmb3IgbG9jazpjb250ZW50aW9uX2JlZ2luICovXFxuICAxMTpcXHQjZGVmaW5lIExDQl9GX1NQSU5cXHQoMVUgXFx1MDAzY1xcdTAwM2MgMClcXG4gIDEyOlxcdCNkZWZpbmUgTENCX0ZfUkVBRFxcdCgxVSBcXHUwMDNjXFx1MDAzYyAxKVxcbiAgMTM6XFx0I2RlZmluZSBMQ0JfRl9XUklURVxcdCgxVSBcXHUwMDNjXFx1MDAzYyAyKVxcbiAgMTQ6XFx0I2RlZmluZSBMQ0JfRl9SVFxcdCgxVSBcXHUwMDNjXFx1MDAzYyAzKVxcbiAgMTU6XFx0I2RlZmluZSBMQ0JfRl9QRVJDUFVcXHQoMVUgXFx1MDAzY1xcdTAwM2MgNClcXG4gIDE2OlxcdCNkZWZpbmUgTENCX0ZfTVVURVhcXHQoMVUgXFx1MDAzY1xcdTAwM2MgNSlcXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFxuICAxOTpcXHQjaWZkZWYgQ09ORklHX0xPQ0tERVBcXG4gIDIwOlxcdFxcbiAgMjE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xvY2tkZXAuaFxcdTAwM2VcXG4gIDIyOlxcdFxcbiAgMjM6XFx0VFJBQ0VfRVZFTlQobG9ja19hY3F1aXJlLFxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRUUF9QUk9UTyhzdHJ1Y3QgbG9ja2RlcF9tYXAgKmxvY2ssIHVuc2lnbmVkIGludCBzdWJjbGFzcyxcXG4gIDI2OlxcdFxcdFxcdGludCB0cnlsb2NrLCBpbnQgcmVhZCwgaW50IGNoZWNrLFxcbiAgMjc6XFx0XFx0XFx0c3RydWN0IGxvY2tkZXBfbWFwICpuZXh0X2xvY2ssIHVuc2lnbmVkIGxvbmcgaXApLFxcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRUUF9BUkdTKGxvY2ssIHN1YmNsYXNzLCB0cnlsb2NrLCByZWFkLCBjaGVjaywgbmV4dF9sb2NrLCBpcCksXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdFRQX1NUUlVDVF9fZW50cnkoXFxuICAzMjpcXHRcXHRcXHRfX2ZpZWxkKHVuc2lnbmVkIGludCwgZmxhZ3MpXFxuICAzMzpcXHRcXHRcXHRfX3N0cmluZyhuYW1lLCBsb2NrLVxcdTAwM2VuYW1lKVxcbiAgMzQ6XFx0XFx0XFx0X19maWVsZCh2b2lkICosIGxvY2tkZXBfYWRkcilcXG4gIDM1OlxcdFxcdCksXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdFRQX2Zhc3RfYXNzaWduKFxcbiAgMzg6XFx0XFx0XFx0X19lbnRyeS1cXHUwMDNlZmxhZ3MgPSAodHJ5bG9jayA/IDEgOiAwKSB8IChyZWFkID8gMiA6IDApO1xcbiAgMzk6XFx0XFx0XFx0X19hc3NpZ25fc3RyKG5hbWUpO1xcbiAgNDA6XFx0XFx0XFx0X19lbnRyeS1cXHUwMDNlbG9ja2RlcF9hZGRyID0gbG9jaztcXG4gIDQxOlxcdFxcdCksXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdFRQX3ByaW50ayhcXFwiJXAgJXMlcyVzXFxcIiwgX19lbnRyeS1cXHUwMDNlbG9ja2RlcF9hZGRyLFxcbiAgNDQ6XFx0XFx0XFx0ICAoX19lbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiAxKSA/IFxcXCJ0cnkgXFxcIiA6IFxcXCJcXFwiLFxcbiAgNDU6XFx0XFx0XFx0ICAoX19lbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiAyKSA/IFxcXCJyZWFkIFxcXCIgOiBcXFwiXFxcIixcXG4gIDQ2OlxcdFxcdFxcdCAgX19nZXRfc3RyKG5hbWUpKVxcbiAgNDc6XFx0KTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0REVDTEFSRV9FVkVOVF9DTEFTUyhsb2NrLFxcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjEzLjQyMzY2NzQ1MloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTI4MDkyNDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBMb2NrZGVwIERpc2FibGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQncyBjbGVhciB0aGF0IGBsb2NrX3JlbGVhc2VgIGlzIGd1YXJkZWQgYnkgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBvYnZpb3VzbHksIGBDT05GSUdfTE9DS0RFUGAgaXMgYSByZXF1aXJlbWVudCBoZXJlLiBBbmQsIGFzIGV4cGVjdGVkLCB3ZSBhbHNvIG5lZWQgYm90aCBgQ09ORklHX0JQRl9FVkVOVFNgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCB0byBiZSBlbmFibGVkLCBiZWNhdXNlIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcy5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IGl0J3MgZGlzYWJsaW5nIGxvY2tkZXAgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGBsb2NrX3JlbGVhc2VgLiBUaGUgaWRlYSBpcyB0byBwcmV2ZW50IHJlY3Vyc2lvbiBvciBsb2NrZGVwIGZhbHNlIHBvc2l0aXZlcy4gTWFrZXMgc2Vuc2U7IGlmIHRoZSBCUEYgcHJvZ3JhbSBkb2VzIHRoaW5ncyB0aGF0IHRyaWdnZXIgbG9ja2RlcCB3aGlsZSB3ZSdyZSAqYWxyZWFkeSogaW5zaWRlIGBsb2NrX3JlbGVhc2VgICh3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGZyb20gbG9ja2RlcCksIHdlJ3JlIGdvaW5nIHRvIGdldCBub2lzZSBvciBldmVuIGNyYXNoZXMuIE5vdywgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdvcnRoIGZ1enppbmc/IFllcywgdGhpcyBpcyBhIGRlZmluaXRlIHllcy4gSXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGNvcmUgQlBGIHRyYWNpbmcgbG9naWMuIElmIGEgQlBGIHByb2dyYW0gaXMgYXR0YWNoZWQgdG8gYGxvY2tfcmVsZWFzZWAsIGl0IHdpbGwgbm93IHJ1biB3aXRoIGxvY2tkZXAgZGlzYWJsZWQuXG5cblNvLCB3aGVyZSBzaG91bGQgSSBkaXJlY3QgbXkgZnV6emluZyBlZmZvcnRzPyBJdCBzZWVtcyBsaWtlIGB0cmFjZV9jYWxsX2JwZmAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byB0YXJnZXQuIEl0J3MgdGhlIHBvaW50IG9mIGVudHJ5IGZvciB0aGlzIHdob2xlIHRoaW5nLiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBgdHJhY2VfY2FsbF9icGZgIGlzIGNhbGxlZCBmcmVxdWVudGx5IGlmIHlvdSd2ZSBnb3QgbWFueSB0cmFjZXBvaW50cyB3aXRoIEJQRiBwcm9ncmFtcyBhdHRhY2hlZC4gQW5kLCBpdCdzIHRoZSBleGFjdCBmdW5jdGlvbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcy5cblxuTGV0IG1lIHRoaW5rIGZvciBhIG1vbWVudC4uLiBpcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24gdG8gY29uc2lkZXI/IEFoLCB5ZXMsIGBicGZfcHJvZ19ydW5fYXJyYXlgIGlzIGNhbGxlZCB3aXRoaW4gYHRyYWNlX2NhbGxfYnBmYC4gQnV0LCBJJ20gbGVhbmluZyB0b3dhcmRzIGZvY3VzaW5nIG9uIGB0cmFjZV9jYWxsX2JwZmAgc2luY2UgaXQgaXMgdGhlIHRvcC1sZXZlbCBpbnRlcmZhY2UuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGB0cmFjZV9jYWxsX2JwZmAgaXMgc3RhdGljIG9yIGlubGluZS4gT2theSwgaXQncyBgdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpYCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYC4gSXQncyBub3Qgc3RhdGljLiBJdCdzIGV4cG9ydGVkLCBvciBhdCBsZWFzdCBnbG9iYWxseSB2aXNpYmxlLlxuXG5Pa2F5LCBJIHRoaW5rIEknbSBoYXBweSB0byBmb2N1cyBvbiBgdHJhY2VfY2FsbF9icGZgIGFzIHRoZSBwcmltYXJ5IGZ1enppbmcgdGFyZ2V0LiBJdCBzZWVtcyBsaWtlIHRoZSBiZXN0IGZvY3VzIHN5bWJvbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDoyMC4zNTE3NjIzMjVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTIyMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYWNlX2NhbGxfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9icGZfdHJhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9OTY9c3RhdGljIHU2NCBicGZfdXByb2JlX211bHRpX2VudHJ5X2lwKHN0cnVjdCBicGZfcnVuX2N0eCAqY3R4KTtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy05OC0vKipcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6OTk6ICogdHJhY2VfY2FsbF9icGYgLSBpbnZva2UgQlBGIHByb2dyYW1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTAwLSAqIEBjYWxsOiB0cmFjZXBvaW50IGV2ZW50XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTExLSAqL1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxMTI6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTExMy17XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTM5LVxcdCAqIElmIGJwZl9wcm9nX2FycmF5X3ZhbGlkKCkgZmV0Y2hlZCBwcm9nX2FycmF5IHdhc1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNDA6XFx0ICogbm9uLU5VTEwsIHdlIGdvIGludG8gdHJhY2VfY2FsbF9icGYoKSBhbmQgZG8gdGhlIGFjdHVhbFxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNDEtXFx0ICogcHJvcGVyIHJjdV9kZXJlZmVyZW5jZSgpIHVuZGVyIFJDVSBsb2NrLlxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2My0vKipcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY0OiAqIHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZSAtIGludm9rZSBCUEYgcHJvZ3JhbSBpbiBmYXVsdGFibGUgY29udGV4dFxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjUtICogQGNhbGw6IHRyYWNlcG9pbnQgZXZlbnRcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjctICpcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTY4OiAqIFZhcmlhbnQgb2YgdHJhY2VfY2FsbF9icGYoKSBmb3IgZmF1bHRhYmxlIHRyYWNlcG9pbnRzIChzeXNjYWxsXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE2OS0gKiB0cmFjZXBvaW50cykuIFN1cHBvcnRzIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgYnkgdXNpbmcgcmN1X3Rhc2tzX3RyYWNlXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTc4LSAqL1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxNzk6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xODAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDoyMC40MTIyOTE2NTJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczODA0NTA2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgQlBGIFRyYWNlcG9pbnQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGB0cmFjZV9jYWxsX2JwZmAgc2VlbXMgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlbGV2YW50IHRvIEJQRi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gY29uc2lkZXJpbmcgYWxsIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBJJ2xsIHF1aWNrbHkgY2hlY2sgZm9yIGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBhbmQgYENPTkZJR19MT0NLREVQYCDigJMgdGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cy5cblxuTm93LCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50Li4uIHdoZXJlIGFyZSBpdHMgZGVwZW5kZW5jaWVzPyBBaCwgaXQncyBpbiBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgcmlnaHQuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBgbG9ja2AgdHJhY2Vwb2ludHMgdGhlbXNlbHZlcyBhcmUgZW5hYmxlZCB2aWEgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBrZXJuZWwvdHJhY2UvS2NvbmZpZ2Agb3IgcG9zc2libHkgYGxpYi9LY29uZmlnLmRlYnVnYCB0byBzZWUgaWYgdGhlcmUncyBhIHNwZWNpZmljIG9wdGlvbiByZWxhdGVkIHRvIGVuYWJsaW5nIGxvY2sgdHJhY2Vwb2ludHMgdGhhdCBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0OTMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6MjQuMTUwMzQwMDE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY4NDA5MTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvY2tfcmVsZWFzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzM0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz01OTY9dm9pZCBfX2luaXQgc21wX3NldHVwX3Byb2Nlc3Nvcl9pZCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3NldHVwLmMtNjA4LVxcdCAqIHVzaW5nIHBlcmNwdSB2YXJpYWJsZSBlYXJseSwgZm9yIGV4YW1wbGUsIGxvY2tkZXAgd2lsbFxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jOjYwOTpcXHQgKiBhY2Nlc3MgcGVyY3B1IHZhcmlhYmxlIGluc2lkZSBsb2NrX3JlbGVhc2VcXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy02MTAtXFx0ICovXFxuLS1cXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmM9MjY3PWFzbWxpbmthZ2Ugdm9pZCBfX2twcm9iZXMgZG9fc3BhcmM2NF9mYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYy00NDAtXFx0aWYgKGZhdWx0IFxcdTAwMjYgVk1fRkFVTFRfQ09NUExFVEVEKVxcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYzo0NDE6XFx0XFx0Z290byBsb2NrX3JlbGVhc2VkO1xcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYy00NDItXFxuLS1cXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDY0LVxcbmFyY2gvc3BhcmMvbW0vZmF1bHRfNjQuYzo0NjU6bG9ja19yZWxlYXNlZDpcXG5hcmNoL3NwYXJjL21tL2ZhdWx0XzY0LmMtNDY2LVxcdG1tX3JzcyA9IGdldF9tbV9yc3MobW0pO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN5c2ZzX29wcyB0aHJlc2hvbGRfb3BzID0ge1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTAzNS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYzoxMDM2OnN0YXRpYyB2b2lkIHRocmVzaG9sZF9ibG9ja19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYy0xMDM3LVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jPTEwMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgdGhyZXNob2xkX2t0eXBlID0ge1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTA0MC1cXHQuZGVmYXVsdF9ncm91cHNcXHRcXHQ9IGRlZmF1bHRfZ3JvdXBzLFxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jOjEwNDE6XFx0LnJlbGVhc2VcXHRcXHQ9IHRocmVzaG9sZF9ibG9ja19yZWxlYXNlLFxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jLTEwNDItfTtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jPTExNTQ9c3RhdGljIGludCB0aHJlc2hvbGRfY3JlYXRlX2Jhbmsoc3RydWN0IHRocmVzaG9sZF9iYW5rICoqYnAsIHVuc2lnbmVkIGludCBjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS9hbWQuYy0xMTk0LVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvbWNlL2FtZC5jOjExOTU6c3RhdGljIHZvaWQgdGhyZXNob2xkX2Jsb2NrX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxuYXJjaC94ODYva2VybmVsL2NwdS9tY2UvYW1kLmMtMTE5Ni17XFxuLS1cXG5kcml2ZXJzL2FjcGkvZG9jay5jPTUwMj1zdGF0aWMgc3NpemVfdCB1bmRvY2tfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYWNwaS9kb2NrLmMtNTEzLVxcdHJldCA9IGhhbmRsZV9lamVjdF9yZXF1ZXN0KGRvY2tfc3RhdGlvbiwgQUNQSV9OT1RJRllfRUpFQ1RfUkVRVUVTVCk7XFxuZHJpdmVycy9hY3BpL2RvY2suYzo1MTQ6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvYWNwaS9kb2NrLmMtNTE1LVxcdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvYWNwaS9zY2FuLmM9NjA9RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9zY2FuX2xvY2tfYWNxdWlyZSk7XFxuZHJpdmVycy9hY3BpL3NjYW4uYy02MS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jOjYyOnZvaWQgYWNwaV9zY2FuX2xvY2tfcmVsZWFzZSh2b2lkKVxcbmRyaXZlcnMvYWNwaS9zY2FuLmMtNjMte1xcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy02NS19XFxuZHJpdmVycy9hY3BpL3NjYW4uYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX3NjYW5fbG9ja19yZWxlYXNlKTtcXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTY3LVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYz0yNDI5PXN0YXRpYyB2b2lkIGFjcGlfc2Nhbl9jbGVhcl9kZXBfZm4odm9pZCAqZGV2LCBhc3luY19jb29raWVfdCBjb29raWUpXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI0MzQtXFx0YWNwaV9idXNfYXR0YWNoKGFkZXYsICh2b2lkICopdHJ1ZSk7XFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyNDM1OlxcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI0MzYtXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTI5MzI9c3RhdGljIHZvaWQgYWNwaV90YWJsZV9ldmVudHNfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yOTM1LVxcdGFjcGlfYnVzX3NjYW4oQUNQSV9ST09UX09CSkVDVCk7XFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyOTM2OlxcdGFjcGlfc2Nhbl9sb2NrX3JlbGVhc2UoKTtcXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI5MzctXFxuLS1cXG5kcml2ZXJzL2FjcGkvc2xlZXAuYz01Mzk9c3RhdGljIHZvaWQgYWNwaV9wbV9lbmQodm9pZClcXG4tLVxcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTU0MS1cXHRhY3BpX3R1cm5fb2ZmX3VudXNlZF9wb3dlcl9yZXNvdXJjZXMoKTtcXG5kcml2ZXJzL2FjcGkvc2xlZXAuYzo1NDI6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTU0My1cXHQvKlxcbi0tXFxuZHJpdmVycy9hY3BpL3NsZWVwLmM9ODQzPXZvaWQgYWNwaV9zMmlkbGVfZW5kKHZvaWQpXFxuZHJpdmVycy9hY3BpL3NsZWVwLmMtODQ0LXtcXG5kcml2ZXJzL2FjcGkvc2xlZXAuYzo4NDU6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvYWNwaS9zbGVlcC5jLTg0Ni19XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9OTA9RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcik7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkxLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo5MjpzdGF0aWMgdm9pZCBtZW1vcnlfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkzLXtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz02ODI9c3RhdGljIGludCBfX2FkZF9tZW1vcnlfYmxvY2soc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtb3J5KVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY4Ny1cXHRtZW1vcnktXFx1MDAzZWRldi5pZCA9IG1lbW9yeS1cXHUwMDNlc3RhcnRfc2VjdGlvbl9uciAvIHNlY3Rpb25zX3Blcl9ibG9jaztcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6Njg4OlxcdG1lbW9yeS1cXHUwMDNlZGV2LnJlbGVhc2UgPSBtZW1vcnlfYmxvY2tfcmVsZWFzZTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNjg5LVxcdG1lbW9yeS1cXHUwMDNlZGV2Lmdyb3VwcyA9IG1lbW9yeV9tZW1ibGtfYXR0cl9ncm91cHM7XFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM9MzE1PXZvaWQgZG1hX2ZlbmNlX2VuZF9zaWduYWxsaW5nKGJvb2wgY29va2llKVxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMxOS1cXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM6MzIwOlxcdGxvY2tfcmVsZWFzZShcXHUwMDI2ZG1hX2ZlbmNlX2xvY2tkZXBfbWFwLCBfUkVUX0lQXyk7XFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMyMS19XFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmM9MzI0PXZvaWQgX19kbWFfZmVuY2VfbWlnaHRfd2FpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMyOS1cXHRpZiAodG1wKVxcbmRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYzozMzA6XFx0XFx0bG9ja19yZWxlYXNlKFxcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXAsIF9USElTX0lQXyk7XFxuZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jLTMzMS1cXHRsb2NrX21hcF9hY3F1aXJlKFxcdTAwMjZkbWFfZmVuY2VfbG9ja2RlcF9tYXApO1xcbi0tXFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM9NDIxPXN0YXRpYyBzc2l6ZV90IGJsb2NrX2NlX2NvdW50X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00MjktLyogREVWSUNFIGJsb2NrIGtvYmplY3QgcmVsZWFzZSgpIGZ1bmN0aW9uICovXFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM6NDMwOnN0YXRpYyB2b2lkIGVkYWNfZGV2aWNlX2N0cmxfYmxvY2tfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy00MzEte1xcbi0tXFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM9NDgxPXN0YXRpYyBzdHJ1Y3Qga29ial90eXBlIGt0eXBlX2Jsb2NrX2N0cmwgPSB7XFxuZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmM6NDgyOlxcdC5yZWxlYXNlID0gZWRhY19kZXZpY2VfY3RybF9ibG9ja19yZWxlYXNlLFxcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTQ4My1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmRldmljZV9ibG9ja19vcHMsXFxuLS1cXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYz01NjI9c3RhdGljIHZvaWQgZWRhY19kZXZpY2VfZGVsZXRlX2Jsb2NrKHN0cnVjdCBlZGFjX2RldmljZV9jdGxfaW5mbyAqZWRhY19kZXYsXFxuLS1cXG5kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYy01ODAtXFx0LyogdW5yZWdpc3RlciB0aGlzIGJsb2NrJ3Mga29iamVjdCwgU0VFOlxcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jOjU4MTpcXHQgKlxcdGVkYWNfZGV2aWNlX2N0cmxfYmxvY2tfcmVsZWFzZSgpIGNhbGxiYWNrIG9wZXJhdGlvblxcbmRyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jLTU4Mi1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYz0xMTU9c21jX2NoYW5uZWxfbG9ja19hY3F1aXJlKHN0cnVjdCBzY21pX3NtYyAqc2NtaV9pbmZvLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTEyMy1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc3RydWN0IHNjbWlfc21jICpzY21pX2luZm8pXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTEyNS17XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmM9MjIzPXN0YXRpYyBpbnQgc21jX3NlbmRfbWVzc2FnZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTI0Ny1cXHRpZiAocmVzLmEwKSB7XFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jOjI0ODpcXHRcXHRzbWNfY2hhbm5lbF9sb2NrX3JlbGVhc2Uoc2NtaV9pbmZvKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMjQ5LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYz0yNjQ9c3RhdGljIHZvaWQgc21jX21hcmtfdHhkb25lKHN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8sIGludCByZXQsXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvc21jLmMtMjY4LVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9zbWMuYzoyNjk6XFx0c21jX2NoYW5uZWxfbG9ja19yZWxlYXNlKHNjbWlfaW5mbyk7XFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL3NtYy5jLTI3MC19XFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYz0xMzE9c3RhdGljIGludCBtbHhiZjJfZ3Bpb19sb2NrX2FjcXVpcmUoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMTU2LSAqL1xcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jOjE1NzpzdGF0aWMgdm9pZCBtbHhiZjJfZ3Bpb19sb2NrX3JlbGVhc2Uoc3RydWN0IG1seGJmMl9ncGlvX2NvbnRleHQgKmdzKVxcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTE1OC1cXHRfX3JlbGVhc2VzKFxcdTAwMjZncy1cXHUwMDNlY2hpcC5sb2NrKVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM9MTg0PXN0YXRpYyBpbnQgbWx4YmYyX2dwaW9fZGlyZWN0aW9uX2lucHV0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1tbHhiZjIuYy0yMDAtXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM6MjAxOlxcdG1seGJmMl9ncGlvX2xvY2tfcmVsZWFzZShncyk7XFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjAyLVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmM9MjEwPXN0YXRpYyBpbnQgbWx4YmYyX2dwaW9fZGlyZWN0aW9uX291dHB1dChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tbWx4YmYyLmMtMjI4LVxcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jOjIyOTpcXHRtbHhiZjJfZ3Bpb19sb2NrX3JlbGVhc2UoZ3MpO1xcbmRyaXZlcnMvZ3Bpby9ncGlvLW1seGJmMi5jLTIzMC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmM9MTEyND12b2lkIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgKml0ZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jLTExMzQtXFx0fVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmM6MTEzNTpcXHRsb2NrX3JlbGVhc2UoXFx1MDAyNmNvbm5lY3Rvcl9saXN0X2l0ZXJfZGVwX21hcCwgX1JFVF9JUF8pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMtMTEzNi19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3Rlc3RzL3R0bV9ib190ZXN0LmM9MTM5PXN0YXRpYyB2b2lkIHR0bV9ib19yZXNlcnZlX2RlYWRsb2NrKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdGVzdHMvdHRtX2JvX3Rlc3QuYy0xNTMtXFx0LyogVGhlIGRlYWRsb2NrIHdpbGwgYmUgY2F1Z2h0IGJ5IFdXIG11dGV4LCBkb24ndCB3YXJuIGFib3V0IGl0ICovXFxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jOjE1NDpcXHRsb2NrX3JlbGVhc2UoXFx1MDAyNmJvMi1cXHUwMDNlYmFzZS5yZXN2LVxcdTAwM2Vsb2NrLmJhc2UuZGVwX21hcCwgMSk7XFxuZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdGVzdC5jLTE1NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jPTEwMD1zdGF0aWMgdm9pZCB4ZV9wbV9ibG9ja19lbmRfc2lnbmFsbGluZyh2b2lkKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9wbS5jLTEwMS17XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX3BtLmM6MTAyOlxcdGxvY2tfcmVsZWFzZShcXHUwMDI2eGVfcG1fYmxvY2tfbG9ja2RlcF9tYXAsIF9SRVRfSVBfKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfcG0uYy0xMDMtfVxcbi0tXFxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jPTgxNT1zdGF0aWMgaW50IGRldm1faHdzcGluX2xvY2tfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODI0LVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYzo4MjU6c3RhdGljIHZvaWQgZGV2bV9od3NwaW5fbG9ja19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04MjYte1xcbi0tXFxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jPTg0Mz1pbnQgZGV2bV9od3NwaW5fbG9ja19mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jaylcXG4tLVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYy04NDYtXFxuZHJpdmVycy9od3NwaW5sb2NrL2h3c3BpbmxvY2tfY29yZS5jOjg0NzpcXHRyZXQgPSBkZXZyZXNfcmVsZWFzZShkZXYsIGRldm1faHdzcGluX2xvY2tfcmVsZWFzZSxcXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODQ4LVxcdFxcdFxcdCAgICAgZGV2bV9od3NwaW5fbG9ja19tYXRjaCwgaHdsb2NrKTtcXG4tLVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYz04NzA9c3RydWN0IGh3c3BpbmxvY2sgKmRldm1faHdzcGluX2xvY2tfcmVxdWVzdF9zcGVjaWZpYyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODc0LVxcbmRyaXZlcnMvaHdzcGlubG9jay9od3NwaW5sb2NrX2NvcmUuYzo4NzU6XFx0cHRyID0gZGV2cmVzX2FsbG9jKGRldm1faHdzcGluX2xvY2tfcmVsZWFzZSwgc2l6ZW9mKCpwdHIpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL2h3c3BpbmxvY2svaHdzcGlubG9ja19jb3JlLmMtODc2LVxcdGlmICghcHRyKVxcbi0tXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtOTctXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6OTg6c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTk5LXtcXG4tLVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jPTEyMj1zdGF0aWMgdm9pZCBpaW9fYnVmZmVyX2Jsb2NrX3B1dChzdHJ1Y3QgaWlvX2RtYV9idWZmZXJfYmxvY2sgKmJsb2NrKVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTEyMy17XFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6MTI0OlxcdGtyZWZfcHV0KFxcdTAwMjZibG9jay1cXHUwMDNla3JlZiwgaWlvX2J1ZmZlcl9ibG9ja19yZWxlYXNlKTtcXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xMjUtfVxcbi0tXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTM0PXN0YXRpYyB2b2lkIGlpb19kbWFfYnVmZmVyX2NsZWFudXBfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0Mi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYmxvY2ssIF9ibG9jaywgXFx1MDAyNmJsb2NrX2xpc3QsIGhlYWQpXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM6MTQzOlxcdFxcdGlpb19idWZmZXJfYmxvY2tfcmVsZWFzZShcXHUwMDI2YmxvY2stXFx1MDAzZWtyZWYpO1xcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0NC19XFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmM9MTQ1PXN0YXRpYyBERUNMQVJFX1dPUksoaWlvX2RtYV9idWZmZXJfY2xlYW51cF93b3JrLCBpaW9fZG1hX2J1ZmZlcl9jbGVhbnVwX3dvcmtlcik7XFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTQ2LVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jOjE0NzpzdGF0aWMgdm9pZCBpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2VfYXRvbWljKHN0cnVjdCBrcmVmICprcmVmKVxcbmRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tYnVmZmVyLWRtYS5jLTE0OC17XFxuLS1cXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYz0xNjI9c3RhdGljIHZvaWQgaWlvX2J1ZmZlcl9ibG9ja19wdXRfYXRvbWljKHN0cnVjdCBpaW9fZG1hX2J1ZmZlcl9ibG9jayAqYmxvY2spXFxuZHJpdmVycy9paW8vYnVmZmVyL2luZHVzdHJpYWxpby1idWZmZXItZG1hLmMtMTYzLXtcXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYzoxNjQ6XFx0a3JlZl9wdXQoXFx1MDAyNmJsb2NrLVxcdTAwM2VrcmVmLCBpaW9fYnVmZmVyX2Jsb2NrX3JlbGVhc2VfYXRvbWljKTtcXG5kcml2ZXJzL2lpby9idWZmZXIvaW5kdXN0cmlhbGlvLWJ1ZmZlci1kbWEuYy0xNjUtfVxcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYz0yNTM9c3RhdGljIGludCBtdGRibG9ja19vcGVuKHN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICptYmQpXFxuLS1cXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTI4MS1cXG5kcml2ZXJzL210ZC9tdGRibG9jay5jOjI4MjpzdGF0aWMgdm9pZCBtdGRibG9ja19yZWxlYXNlKHN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICptYmQpXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0yODMte1xcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0yODUtXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYzoyODY6XFx0cHJfZGVidWcoXFxcIm10ZGJsb2NrX3JlbGVhc2VcXFxcblxcXCIpO1xcbmRyaXZlcnMvbXRkL210ZGJsb2NrLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYz0zNDI9c3RhdGljIHN0cnVjdCBtdGRfYmxrdHJhbnNfb3BzIG10ZGJsb2NrX3RyID0ge1xcbi0tXFxuZHJpdmVycy9tdGQvbXRkYmxvY2suYy0zNDgtXFx0LmZsdXNoXFx0XFx0PSBtdGRibG9ja19mbHVzaCxcXG5kcml2ZXJzL210ZC9tdGRibG9jay5jOjM0OTpcXHQucmVsZWFzZVxcdD0gbXRkYmxvY2tfcmVsZWFzZSxcXG5kcml2ZXJzL210ZC9tdGRibG9jay5jLTM1MC1cXHQucmVhZHNlY3RcXHQ9IG10ZGJsb2NrX3JlYWRzZWN0LFxcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmM9MjMwPXN0YXRpYyBpbnQgdWJpYmxvY2tfb3BlbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgYmxrX21vZGVfdCBtb2RlKVxcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmMtMjcxLVxcbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jOjI3MjpzdGF0aWMgdm9pZCB1YmlibG9ja19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpnZClcXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYy0yNzMte1xcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmM9Mjk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgdWJpYmxvY2tfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9tdGQvdWJpL2Jsb2NrLmMtMjk3LVxcdC5vcGVuID0gdWJpYmxvY2tfb3BlbixcXG5kcml2ZXJzL210ZC91YmkvYmxvY2suYzoyOTg6XFx0LnJlbGVhc2UgPSB1YmlibG9ja19yZWxlYXNlLFxcbmRyaXZlcnMvbXRkL3ViaS9ibG9jay5jLTI5OS1cXHQuZ2V0Z2VvXFx0PSB1YmlibG9ja19nZXRnZW8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYz0xNDE9cHJlc3RlcmFfY291bnRlcl9ibG9ja19nZXQoc3RydWN0IHByZXN0ZXJhX2NvdW50ZXIgKmNvdW50ZXIsIHUzMiBjbGllbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYy0xOTEtZXJyX3N0YXRzOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jOjE5MjpcXHRwcmVzdGVyYV9od19jb3VudGVyX2Jsb2NrX3JlbGVhc2UoY291bnRlci1cXHUwMDNlc3csIGJsb2NrLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9jb3VudGVyLmMtMTkzLWVycl9ibG9jazpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jPTE5OD1zdGF0aWMgdm9pZCBwcmVzdGVyYV9jb3VudGVyX2Jsb2NrX3B1dChzdHJ1Y3QgcHJlc3RlcmFfY291bnRlciAqY291bnRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jLTIxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2NvdW50ZXIuYzoyMTg6XFx0cHJlc3RlcmFfaHdfY291bnRlcl9ibG9ja19yZWxlYXNlKGNvdW50ZXItXFx1MDAzZXN3LCBibG9jay1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfY291bnRlci5jLTIxOS1cXHRpZHJfZGVzdHJveShcXHUwMDI2YmxvY2stXFx1MDAzZWNvdW50ZXJfaWRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jPTc5PXByZXN0ZXJhX2Zsb3dfYmxvY2tfY3JlYXRlKHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmMtMTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jOjEwMTpzdGF0aWMgdm9pZCBwcmVzdGVyYV9mbG93X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2Zsb3cuYy0xMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmM9MTczPXByZXN0ZXJhX2Zsb3dfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmMtMTg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdywgYmxvY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9mbG93LmM6MTkwOlxcdFxcdFxcdFxcdFxcdCAgICAgICBwcmVzdGVyYV9mbG93X2Jsb2NrX3JlbGVhc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfZmxvdy5jLTE5MS1cXHRcXHRpZiAoSVNfRVJSKGJsb2NrX2NiKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jPTIzNDA9aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfZ2V0KHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jLTIzNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5jOjIzNjI6aW50IHByZXN0ZXJhX2h3X2NvdW50ZXJfYmxvY2tfcmVsZWFzZShzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2h3LmMtMjM2My1cXHRcXHRcXHRcXHQgICAgICB1MzIgYmxvY2tfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX2h3Lmg9MjM5PWludCBwcmVzdGVyYV9od19jb3VudGVyX2Jsb2NrX2dldChzdHJ1Y3QgcHJlc3RlcmFfc3dpdGNoICpzdyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDEtXFx0XFx0XFx0XFx0ICB1MzIgKm51bV9jb3VudGVycyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9ody5oOjI0MjppbnQgcHJlc3RlcmFfaHdfY291bnRlcl9ibG9ja19yZWxlYXNlKHN0cnVjdCBwcmVzdGVyYV9zd2l0Y2ggKnN3LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfaHcuaC0yNDMtXFx0XFx0XFx0XFx0ICAgICAgdTMyIGJsb2NrX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0xNzQ9c3RhdGljIGludCBtbHhzd19zcF9mbG93X2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jLTE5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93LmM6MTkyOnN0YXRpYyB2b2lkIG1seHN3X3NwX3RjX2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93LmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3cuYz0yMDE9c3RhdGljIGludCBtbHhzd19zcF9zZXR1cF90Y19ibG9ja19iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jLTIxOC1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWx4c3dfc3AsIGZsb3dfYmxvY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jOjIxOTpcXHRcXHRcXHRcXHRcXHQgICAgICAgbWx4c3dfc3BfdGNfYmxvY2tfcmVsZWFzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvdy5jLTIyMC1cXHRcXHRpZiAoSVNfRVJSKGJsb2NrX2NiKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTEzPW1seHN3X3NwX3FldmVudF9ibG9ja19kZXN0cm95KHN0cnVjdCBtbHhzd19zcF9xZXZlbnRfYmxvY2sgKnFldmVudF9ibG9jaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3FkaXNjLmMtMjExOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jOjIxMjA6c3RhdGljIHZvaWQgbWx4c3dfc3BfcWV2ZW50X2Jsb2NrX3JlbGVhc2Uodm9pZCAqY2JfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9xZGlzYy5jLTIxMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYz0yMTY5PW1seHN3X3NwX3NldHVwX3RjX2Jsb2NrX3FldmVudF9iaW5kKHN0cnVjdCBtbHhzd19zcF9wb3J0ICptbHhzd19zcF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYy0yMTg4LVxcdFxcdGJsb2NrX2NiID0gZmxvd19ibG9ja19jYl9hbGxvYyhtbHhzd19zcF9xZXZlbnRfYmxvY2tfY2IsIG1seHN3X3NwLCBxZXZlbnRfYmxvY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYzoyMTg5OlxcdFxcdFxcdFxcdFxcdCAgICAgICBtbHhzd19zcF9xZXZlbnRfYmxvY2tfcmVsZWFzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcWRpc2MuYy0yMTkwLVxcdFxcdGlmIChJU19FUlIoYmxvY2tfY2IpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MTYwPWludCBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTk3OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNzE9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTA6XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwNzpcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzA4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTYtXFx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzE3OlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MzIyPXN0YXRpYyBpbnQgbGFuNzQzeF9oc19vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NDpcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzYzOlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3MS1cXHRsYW43NDN4X2hzX290cF9wb3dlcl9kb3duKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzI6XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz01MDE9c3RhdGljIGludCBsYW43NDN4X2hzX2VlcHJvbV9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE1LVxcdHJldHZhbCA9IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUxNjpcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE3LVxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzMC1cXHRcXHRpZiAocmV0dmFsIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MzE6XFx0XFx0XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzMi1cXHRcXHRcXHRyZXR1cm4gcmV0dmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTM3OlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NTQ2PXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjAtXFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTYxOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgwLVxcdFxcdHJldHZhbCA9IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU4MTpcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgyLVxcdFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM3PXN0YXRpYyB2b2lkIHBjaTExeDF4X3N0cmFwX2dldF9zdGF0dXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01My1cXHRjZmdfbG9hZCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRVRIX1NZU19DT05GSUdfTE9BRF9TVEFSVEVEX1JFRyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU0OlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NS1cXHRod19jZmcgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEhXX0NGRyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg9MTIwOD1pbnQgbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTE2IHRpbWVvdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDoxMjA5OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTEyMTAtdm9pZCBsYW43NDN4X21hY19mbG93X2N0cmxfc2V0X2VuYWJsZXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmM9MTAyNz1pbnQgYWNwaXBocF9kaXNhYmxlX3Nsb3Qoc3RydWN0IGFjcGlwaHBfc2xvdCAqc2xvdClcXG4tLVxcbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMtMTAzOC1cXHRwY2lfdW5sb2NrX3Jlc2Nhbl9yZW1vdmUoKTtcXG5kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jOjEwMzk6XFx0YWNwaV9zY2FuX2xvY2tfcmVsZWFzZSgpO1xcbmRyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMtMTA0MC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTg5PXN0YXRpYyBzdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyBwdHBfY2xvY2tfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjAxLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjIwMjpzdGF0aWMgdm9pZCBwdHBfY2xvY2tfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjAzLXtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTMxNj1zdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDM0LVxcdHB0cC1cXHUwMDNlZGV2Lmdyb3VwcyA9IHB0cC1cXHUwMDNlcGluX2F0dHJfZ3JvdXBzO1xcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjQzNTpcXHRwdHAtXFx1MDAzZWRldi5yZWxlYXNlID0gcHRwX2Nsb2NrX3JlbGVhc2U7XFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDM2LVxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2cHRwLVxcdTAwM2VkZXYsIHB0cCk7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz00OTc9aW50IHB0cF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cClcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTUyNi1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzo1Mjc6XFx0LyogVGhlIGZpbmFsIHB1dCwgbm9ybWFsbHkgaGVyZSwgd2lsbCBpbnZva2UgcHRwX2Nsb2NrX3JlbGVhc2UoKS4gKi9cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy01MjgtXFx0cHV0X2RldmljZShcXHUwMDI2cHRwLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3NyLmM9NDk1PXN0YXRpYyBpbnQgc3JfYmxvY2tfb3BlbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgYmxrX21vZGVfdCBtb2RlKVxcbi0tXFxuZHJpdmVycy9zY3NpL3NyLmMtNTIwLVxcbmRyaXZlcnMvc2NzaS9zci5jOjUyMTpzdGF0aWMgdm9pZCBzcl9ibG9ja19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbmRyaXZlcnMvc2NzaS9zci5jLTUyMi17XFxuLS1cXG5kcml2ZXJzL3Njc2kvc3IuYz01ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBzcl9iZG9wcyA9XFxuLS1cXG5kcml2ZXJzL3Njc2kvc3IuYy01OTItXFx0Lm9wZW5cXHRcXHQ9IHNyX2Jsb2NrX29wZW4sXFxuZHJpdmVycy9zY3NpL3NyLmM6NTkzOlxcdC5yZWxlYXNlXFx0PSBzcl9ibG9ja19yZWxlYXNlLFxcbmRyaXZlcnMvc2NzaS9zci5jLTU5NC1cXHQuaW9jdGxcXHRcXHQ9IHNyX2Jsb2NrX2lvY3RsLFxcbi0tXFxuZnMvYWZzL2Zsb2NrLmM9MjgxPXZvaWQgYWZzX2xvY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5mcy9hZnMvZmxvY2suYy0zMDMtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgdm5vZGUtXFx1MDAzZWxvY2tfc3RhdGUgIT0gQUZTX1ZOT0RFX0xPQ0tfREVMRVRFRCkge1xcbmZzL2Fmcy9mbG9jay5jOjMwNDpcXHRcXHRcXHR0cmFjZV9hZnNfZmxvY2tfZXYodm5vZGUsIE5VTEwsIGFmc19mbG9ja19yZWxlYXNlX2ZhaWwsXFxuZnMvYWZzL2Zsb2NrLmMtMzA1LVxcdFxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYz0zNzk9c3RhdGljIHZvaWQgaHVnZXRsYl91bm1hcF9maWxlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYy00NDAtXFx0XFx0XFx0dXBfd3JpdGUoXFx1MDAyNnZtYV9sb2NrLVxcdTAwM2Vyd19zZW1hKTtcXG5mcy9odWdldGxiZnMvaW5vZGUuYzo0NDE6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZtYV9sb2NrLVxcdTAwM2VyZWZzLCBodWdldGxiX3ZtYV9sb2NrX3JlbGVhc2UpO1xcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTQ0Mi1cXHRcXHRcXHRnb3RvIHJldHJ5O1xcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU0LVxcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jOjQ1NTpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dm1hX2xvY2stXFx1MDAzZXJlZnMsIGh1Z2V0bGJfdm1hX2xvY2tfcmVsZWFzZSk7XFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtNDU2LVxcdFxcdGh1Z2V0bGJfdm1hX3VubG9ja193cml0ZSh2bWEpO1xcbi0tXFxuZnMvbmZzL25mczRwcm9jLmM9NzM0Mz1zdGF0aWMgdm9pZCBuZnM0X2xvY2tfZG9uZShzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2ssIHZvaWQgKmNhbGxkYXRhKVxcbi0tXFxuZnMvbmZzL25mczRwcm9jLmMtNzM5MC1cXG5mcy9uZnMvbmZzNHByb2MuYzo3MzkxOnN0YXRpYyB2b2lkIG5mczRfbG9ja19yZWxlYXNlKHZvaWQgKmNhbGxkYXRhKVxcbmZzL25mcy9uZnM0cHJvYy5jLTczOTIte1xcbi0tXFxuZnMvbmZzL25mczRwcm9jLmM9NzQxMD1zdGF0aWMgY29uc3Qgc3RydWN0IHJwY19jYWxsX29wcyBuZnM0X2xvY2tfb3BzID0ge1xcbi0tXFxuZnMvbmZzL25mczRwcm9jLmMtNzQxMi1cXHQucnBjX2NhbGxfZG9uZSA9IG5mczRfbG9ja19kb25lLFxcbmZzL25mcy9uZnM0cHJvYy5jOjc0MTM6XFx0LnJwY19yZWxlYXNlID0gbmZzNF9sb2NrX3JlbGVhc2UsXFxuZnMvbmZzL25mczRwcm9jLmMtNzQxNC19O1xcbi0tXFxuZnMvbmZzZC9uZnM0cHJvYy5jPTM1OTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnNkNF9vcGVyYXRpb24gbmZzZDRfb3BzW10gPSB7XFxuLS1cXG5mcy9uZnNkL25mczRwcm9jLmMtMzY0Ni1cXHRcXHQub3BfZnVuYyA9IG5mc2Q0X2xvY2ssXFxuZnMvbmZzZC9uZnM0cHJvYy5jOjM2NDc6XFx0XFx0Lm9wX3JlbGVhc2UgPSBuZnNkNF9sb2NrX3JlbGVhc2UsXFxuZnMvbmZzZC9uZnM0cHJvYy5jLTM2NDgtXFx0XFx0Lm9wX2ZsYWdzID0gT1BfTU9ESUZJRVNfU09NRVRISU5HIHxcXG4tLVxcbmZzL25mc2QvbmZzNHN0YXRlLmM9Mzg1PXN0YXRpYyB2b2lkXFxuZnMvbmZzZC9uZnM0c3RhdGUuYzozODY6bmZzZDRfY2Jfbm90aWZ5X2xvY2tfcmVsZWFzZShzdHJ1Y3QgbmZzZDRfY2FsbGJhY2sgKmNiKVxcbmZzL25mc2QvbmZzNHN0YXRlLmMtMzg3LXtcXG4tLVxcbmZzL25mc2QvbmZzNHN0YXRlLmM9Mzk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZzZDRfY2FsbGJhY2tfb3BzIG5mc2Q0X2NiX25vdGlmeV9sb2NrX29wcyA9IHtcXG4tLVxcbmZzL25mc2QvbmZzNHN0YXRlLmMtMzk2LVxcdC5kb25lXFx0XFx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19kb25lLFxcbmZzL25mc2QvbmZzNHN0YXRlLmM6Mzk3OlxcdC5yZWxlYXNlXFx0PSBuZnNkNF9jYl9ub3RpZnlfbG9ja19yZWxlYXNlLFxcbmZzL25mc2QvbmZzNHN0YXRlLmMtMzk4LVxcdC5vcGNvZGVcXHRcXHQ9IE9QX0NCX05PVElGWV9MT0NLLFxcbi0tXFxuZnMvbmZzZC9uZnM0c3RhdGUuYz04NDI4PW5mc2Q0X2xvY2soc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IG5mc2Q0X2NvbXBvdW5kX3N0YXRlICpjc3RhdGUsXFxuLS1cXG5mcy9uZnNkL25mczRzdGF0ZS5jLTg2NTItXFxuZnMvbmZzZC9uZnM0c3RhdGUuYzo4NjUzOnZvaWQgbmZzZDRfbG9ja19yZWxlYXNlKHVuaW9uIG5mc2Q0X29wX3UgKnUpXFxuZnMvbmZzZC9uZnM0c3RhdGUuYy04NjU0LXtcXG4tLVxcbmZzL25mc2QveGRyNC5oPTEwMDg9ZXh0ZXJuIF9fYmUzMiBuZnNkNF9sb2NrKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBuZnNkNF9jb21wb3VuZF9zdGF0ZSAqLFxcbmZzL25mc2QveGRyNC5oLTEwMDktXFx0XFx0dW5pb24gbmZzZDRfb3BfdSAqdSk7XFxuZnMvbmZzZC94ZHI0Lmg6MTAxMDpleHRlcm4gdm9pZCBuZnNkNF9sb2NrX3JlbGVhc2UodW5pb24gbmZzZDRfb3BfdSAqdSk7XFxuZnMvbmZzZC94ZHI0LmgtMTAxMS1leHRlcm4gX19iZTMyIG5mc2Q0X2xvY2t0KHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBuZnNkNF9jb21wb3VuZF9zdGF0ZSAqLFxcbi0tXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYz00Nj1zdGF0aWMgdm9pZCBkbG1faW5pdF9sb2NrKHN0cnVjdCBkbG1fbG9jayAqbmV3bG9jaywgaW50IHR5cGUsXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy00Ny1cXHRcXHRcXHQgIHU4IG5vZGUsIHU2NCBjb29raWUpO1xcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmM6NDg6c3RhdGljIHZvaWQgZGxtX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy00OS1zdGF0aWMgdm9pZCBkbG1fbG9ja19kZXRhY2hfbG9ja3JlcyhzdHJ1Y3QgZGxtX2xvY2sgKmxvY2spO1xcbi0tXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYz0zMjk9dm9pZCBkbG1fbG9ja19wdXQoc3RydWN0IGRsbV9sb2NrICpsb2NrKVxcbmZzL29jZnMyL2RsbS9kbG1sb2NrLmMtMzMwLXtcXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jOjMzMTpcXHRrcmVmX3B1dChcXHUwMDI2bG9jay1cXHUwMDNlbG9ja19yZWZzLCBkbG1fbG9ja19yZWxlYXNlKTtcXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzMi19XFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYy0zMzMtXFxuZnMvb2NmczIvZGxtL2RsbWxvY2suYzozMzQ6c3RhdGljIHZvaWQgZGxtX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG5mcy9vY2ZzMi9kbG0vZGxtbG9jay5jLTMzNS17XFxuLS1cXG5mcy9yZXNjdHJsL2ludGVybmFsLmg9NDgwPWludCByZHRfcHNldWRvX2xvY2tfaW5pdCh2b2lkKTtcXG5mcy9yZXNjdHJsL2ludGVybmFsLmgtNDgxLVxcbmZzL3Jlc2N0cmwvaW50ZXJuYWwuaDo0ODI6dm9pZCByZHRfcHNldWRvX2xvY2tfcmVsZWFzZSh2b2lkKTtcXG5mcy9yZXNjdHJsL2ludGVybmFsLmgtNDgzLVxcbi0tXFxuZnMvcmVzY3RybC9pbnRlcm5hbC5oPTUwOT1zdGF0aWMgaW5saW5lIGludCByZHRfcHNldWRvX2xvY2tfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9XFxuZnMvcmVzY3RybC9pbnRlcm5hbC5oOjUxMDpzdGF0aWMgaW5saW5lIHZvaWQgcmR0X3BzZXVkb19sb2NrX3JlbGVhc2Uodm9pZCkgeyB9XFxuZnMvcmVzY3RybC9pbnRlcm5hbC5oLTUxMS1zdGF0aWMgaW5saW5lIGludCByZHRncm91cF9wc2V1ZG9fbG9ja19jcmVhdGUoc3RydWN0IHJkdGdyb3VwICpyZHRncnApXFxuLS1cXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmM9MTA3NT1pbnQgcmR0X3BzZXVkb19sb2NrX2luaXQodm9pZClcXG4tLVxcbmZzL3Jlc2N0cmwvcHNldWRvX2xvY2suYy0xMDkzLVxcbmZzL3Jlc2N0cmwvcHNldWRvX2xvY2suYzoxMDk0OnZvaWQgcmR0X3BzZXVkb19sb2NrX3JlbGVhc2Uodm9pZClcXG5mcy9yZXNjdHJsL3BzZXVkb19sb2NrLmMtMTA5NS17XFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM9MjgwMz1zdGF0aWMgaW50IHJkdF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMjkwMy1vdXRfcHNsOlxcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYzoyOTA0OlxcdHJkdF9wc2V1ZG9fbG9ja19yZWxlYXNlKCk7XFxuZnMvcmVzY3RybC9yZHRncm91cC5jLTI5MDUtb3V0X21vbmRhdGE6XFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM9MzE4MT1zdGF0aWMgdm9pZCByZXNjdHJsX2ZzX3RlYXJkb3duKHZvaWQpXFxuLS1cXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmMtMzE5MS1cXHRtb25fcHV0X2tuX3ByaXYoKTtcXG5mcy9yZXNjdHJsL3JkdGdyb3VwLmM6MzE5MjpcXHRyZHRfcHNldWRvX2xvY2tfcmVsZWFzZSgpO1xcbmZzL3Jlc2N0cmwvcmR0Z3JvdXAuYy0zMTkzLVxcdHJkdGdyb3VwX2RlZmF1bHQubW9kZSA9IFJEVF9NT0RFX1NIQVJFQUJMRTtcXG4tLVxcbmluY2x1ZGUvYWNwaS9hY3BpX2J1cy5oPTY3ND12b2lkIGFjcGlfc2Nhbl9sb2NrX2FjcXVpcmUodm9pZCk7XFxuaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmg6Njc1OnZvaWQgYWNwaV9zY2FuX2xvY2tfcmVsZWFzZSh2b2lkKTtcXG5pbmNsdWRlL2FjcGkvYWNwaV9idXMuaC02NzYtdm9pZCBhY3BpX2xvY2tfaHBfY29udGV4dCh2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI2OT12b2lkIGh1Z2V0bGJfdm1hX2Fzc2VydF9sb2NrZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI3MDp2b2lkIGh1Z2V0bGJfdm1hX2xvY2tfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjcxLWxvbmcgaHVnZXRsYl9jaGFuZ2VfcHJvdGVjdGlvbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDoyNi4wMTg3NTQ5MDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4MDMxMjQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoYXQga2VybmVsIHRhc2s6XG5cbioqVHJhY2luZyBMb2NrIEJlaGF2aW9yOiBBIEtlcm5lbCBEaXZlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSB0aGlua2luZywgXCJXaGVyZSB3b3VsZCB0aGUgbG9jayB0cmFjZXBvaW50cyBsaWtlbHkgYmUgZGVmaW5lZD9cIiBNeSBndXQgdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZvciB0cmFjZXBvaW50cyByZWxhdGVkIHRvIGxvY2tpbmcgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgaW4gdGhlIGBrZXJuZWwvdHJhY2UvYCBkaXJlY3RvcnkuIEdpdmVuIHRoYXQsIGxldCdzIHplcm8gaW4gb24gYEtjb25maWdgIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gSXQncyB0aGUgc3RhbmRhcmQgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgaXQncyBwcmFjdGljYWxseSBndWFyYW50ZWVkIHRvIGxpc3QgYXZhaWxhYmxlIGZlYXR1cmVzLCBhbmQgb2Z0ZW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgcmVsYXRlZCB0byBsb2NrIHRyYWNpbmcuIFRoaXMgaXMgd2hlcmUgdGhlIGh1bnQgYmVnaW5zLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZCBhbmQgd2hhdCdzIG5vdCBpbiB0ZXJtcyBvZiB0cmFjaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI5MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjI5LjA5OTA2OTg3OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NTQ3NzAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTE9DS19TVEFUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0xNDk2PWNvbmZpZyBQUk9WRV9SQVdfTE9DS19ORVNUSU5HXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTA0LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE1MDU6Y29uZmlnIExPQ0tfU1RBVFxcbmxpYi9LY29uZmlnLmRlYnVnLTE1MDYtXFx0Ym9vbCBcXFwiTG9jayB1c2FnZSBzdGF0aXN0aWNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDozMC43ODQ1NTIwMDNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI0OTczMDQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTG9ja2RlcCBEaXNhYmxpbmcgUGF0Y2ggZm9yIEJQRiBUcmFjZXBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaXMgZGVmaW5lZCB3aXRoaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAgYW5kIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgdW5kZXIgYCNpZmRlZiBDT05GSUdfTE9DS0RFUGAuIFNvLCBoYXZpbmcgYENPTkZJR19MT0NLREVQYCBlbmFibGVkIGlzIGVzc2VudGlhbCBmb3IgdGhlIHRyYWNlcG9pbnQgZGVmaW5pdGlvbiBpdHNlbGYuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhyZWUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfTE9DS0RFUGAuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIHdpdGhpbiBgdHJhY2VfY2FsbF9icGZgIGluIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlICpvbmx5KiBmdW5jdGlvbiBpbXBhY3RlZCBieSB0aGlzIHBhdGNoLiBZZXMsIGl0J3MganVzdCBgdHJhY2VfY2FsbF9icGZgLiBUaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oYCBhbmQgYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAsIGFkZGluZyB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnLiBJIGhhdmUgdG8gY2hlY2sgZm9yIGFueSBsb2NrZGVwIHVzYWdlIGluIEJQRi5cblxuUmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgY29uZGl0aW9uYWwgYGxvY2tkZXBfb2ZmKClgIGFuZCBgbG9ja2RlcF9vbigpYCBhcm91bmQgdGhlIGBicGZfcHJvZ19ydW5fYXJyYXlgIGNhbGwgd2l0aGluIGB0cmFjZV9jYWxsX2JwZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgZXhwbGljaXRseSBkaXNhYmxlcyBsb2NrZGVwICpkdXJpbmcqIHRoZSBleGVjdXRpb24gb2YgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50LiBUaGlzIGlzICpkZWZpbml0ZWx5KiBhbiBhcmVhIHRoYXQgbmVlZHMgc29tZSBzZXJpb3VzIGZ1enppbmchIFRoZXJlIGFyZSBkZWZpbml0ZSBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB0byB0aGlzLlxuXG5JJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIG9uIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnM6IGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0JQRl9FVkVOVFNgLCBhbmQgYENPTkZJR19MT0NLREVQYC4gVGhlIGtleSBzeW1ib2wgaGVyZSBpcyBgdHJhY2VfY2FsbF9icGZgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGhlIG9ubHkgZnVuY3Rpb24gaW1wYWN0ZWQuIEkgY2hlY2tlZCBgdHJhY2VfY2FsbF9icGZfZmF1bHRhYmxlYDsgbm90IG1vZGlmaWVkLiBJIGtub3cgdGhhdCBgYnBmX3Byb2dfcnVuX2FycmF5YCBpcyBhbiBpbmxpbmUgb3IgbWFjcm8sIHNvIGl0J3Mgbm90IGRpcmVjdGx5IG1vZGlmaWVkIGVpdGhlci4gU28sIGl0J3Mgb25seSBgdHJhY2VfY2FsbF9icGZgLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIGB0cmFjZV9jYWxsX2JwZmAgaXMgcmVhY2hhYmxlLCBhbmQgaXQgaXMuIFdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBhdHRhY2hlZCB0byBhIHRyYWNlcG9pbnQsIGB0cmFjZV9jYWxsX2JwZmAgaXMgY2FsbGVkLCBhbmQgZm9yIGBsb2NrX3JlbGVhc2VgIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggYG5vX2xvY2tkZXAgPSB0cnVlYC5cblxuSnVzdCBkb3VibGUtY2hlY2tpbmcgbXkgY29uZmlndXJhdGlvbiBuYW1lczsgYENPTkZJR19MT0NLREVQYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLlxuXG5Ob3csIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgdXN1YWwgZGVwZW5kZW5jaWVzIG9mIGBMT0NLREVQYC4gSXQgdXN1YWxseSByZWxpZXMgb24gdGhpbmdzIGxpa2UgYFBST1ZFX0xPQ0tJTkdgLCBgTE9DS19TVEFUYCwgb3IgYERFQlVHX0xPQ0tfQUxMT0NgLiBJIHNob3VsZCBjaGVjayBgbGliL0tjb25maWcuZGVidWdgIHRvIHZlcmlmeSB0aGVzZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTgzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjQwLjAzNDI4NTQyMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwNjA2OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIExPQ0tERVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MTU3Nj1jb25maWcgREVCVUdfTE9DS19BTExPQ1xcbi0tXFxubGliL0tjb25maWcuZGVidWctMTU5MC1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNTkxOmNvbmZpZyBMT0NLREVQXFxubGliL0tjb25maWcuZGVidWctMTU5Mi1cXHRib29sXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTk3LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE1OTg6Y29uZmlnIExPQ0tERVBfU01BTExcXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNTk5LVxcdGJvb2xcXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjAwLVxcbmxpYi9LY29uZmlnLmRlYnVnOjE2MDE6Y29uZmlnIExPQ0tERVBfQklUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MDItXFx0aW50IFxcXCJTaXplIGZvciBNQVhfTE9DS0RFUF9FTlRSSUVTIChhcyBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjA4LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE2MDk6Y29uZmlnIExPQ0tERVBfQ0hBSU5TX0JJVFNcXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjEwLVxcdGludCBcXFwiU2l6ZSBmb3IgTUFYX0xPQ0tERVBfQ0hBSU5TIChhcyBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0xNjE2LVxcbmxpYi9LY29uZmlnLmRlYnVnOjE2MTc6Y29uZmlnIExPQ0tERVBfU1RBQ0tfVFJBQ0VfQklUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MTgtXFx0aW50IFxcXCJTaXplIGZvciBNQVhfU1RBQ0tfVFJBQ0VfRU5UUklFUyAoYXMgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMTYzMS1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNjMyOmNvbmZpZyBMT0NLREVQX1NUQUNLX1RSQUNFX0hBU0hfQklUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTE2MzMtXFx0aW50IFxcXCJTaXplIGZvciBTVEFDS19UUkFDRV9IQVNIX1NJWkUgKGFzIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTE2NDAtXFxubGliL0tjb25maWcuZGVidWc6MTY0MTpjb25maWcgTE9DS0RFUF9DSVJDVUxBUl9RVUVVRV9CSVRTXFxubGliL0tjb25maWcuZGVidWctMTY0Mi1cXHRpbnQgXFxcIlNpemUgZm9yIGVsZW1lbnRzIGluIGNpcmN1bGFyX3F1ZXVlIHN0cnVjdCAoYXMgTnRoIHBvd2VyIG9mIDIpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo0MC4wODQzNTI2MjlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MDcxMzE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMb2NrZGVwIE11c2luZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYExPQ0tERVBgIGhlcmUuIEl0IHNlZW1zIGxpa2UgaXQncyBhIGJpdCBvZiBhIGhpZGRlbiBnZW0sIGEgYm9vbGVhbiB0aGF0IGdldHMgYWN0aXZhdGVkIHRocm91Z2ggYSBmZXcgb3RoZXIgb3B0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGBQUk9WRV9MT0NLSU5HYCwgYExPQ0tfU1RBVGAsIGFuZCBgREVCVUdfTE9DS19BTExPQ2AgYWxsIGhhdmUgYSBoYW5kIGluIGVuYWJsaW5nIGl0LiBUaGF0IG1ha2VzIHNlbnNlLCBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncywgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgdGhlIGtlcm5lbCdzIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZS5cblxuVGhlcmVmb3JlLCB0byAqZ3VhcmFudGVlKiB0aGF0IGBMT0NLREVQYCBpcyBhY3R1YWxseSBhY3RpdmUsIGl0J3MgcHJldHR5IGNsZWFyIHRvIG1lIHRoYXQgSSBzaG91bGQganVzdCBnbyBhaGVhZCBhbmQgZW5hYmxlIGBQUk9WRV9MT0NLSU5HYC4gR2l2ZW4gbXkgd29yaywgaXQncyB0aGUgbW9zdCBzdHJhaWdodCBmb3J3YXJkIHBhdGguIFNlZW1zIGxpa2UgdGhhdCB3b3VsZCBiZSB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhpcyBsb2NrIGRlcGVuZGVuY3kgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcyB0cnVseSBydW5uaW5nIGFuZCB3b3JraW5nIGFzIGludGVuZGVkLiBTaW1wbGVyIGlzIGJldHRlciwgYWZ0ZXIgYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQyNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI0OjQ0LjY1NTA2ODQ1MVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczMzY1NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBST1ZFX0xPQ0tJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MTQ0ND1jb25maWcgTE9DS19ERUJVR0dJTkdfU1VQUE9SVFxcbi0tXFxubGliL0tjb25maWcuZGVidWctMTQ0OC1cXG5saWIvS2NvbmZpZy5kZWJ1ZzoxNDQ5OmNvbmZpZyBQUk9WRV9MT0NLSU5HXFxubGliL0tjb25maWcuZGVidWctMTQ1MC1cXHRib29sIFxcXCJMb2NrIGRlYnVnZ2luZzogcHJvdmUgbG9ja2luZyBjb3JyZWN0bmVzc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6NDQuNzAyNDEzNDU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NDI1NjY5MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkVuYWJsaW5nIFByb3ZlIExvY2tpbmcgYW5kIFJlLUV4YW1pbmluZyBCUEZfRVZFTlRTIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBgUFJPVkVfTE9DS0lOR2DigKYgdGhhdCdzIGEgc29saWQgY2hvaWNlIHRvIGVuYWJsZS4gSXQncyB0aW1lIHRvIGJyaW5nIGFkZGl0aW9uYWwgZGVidWcgZGF0YSwgcGFydGljdWxhcmx5IGZvciBrZXJuZWwgbG9ja2luZy4gVGhlIHBvdGVudGlhbCBmb3IgY2F0Y2hpbmcgc3VidGxlIGNvbmN1cnJlbmN5IGJ1Z3MgYW5kIGRhdGEgcmFjZXMganVzdGlmaWVzIGl0LlxuXG5Ob3csIGJlZm9yZSBJIGNvbW1pdCB0aGF0IGNoYW5nZSwgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjaywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgYEJQRl9FVkVOVFNgIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgc3RpbGwgaW4gc3luYy4gSSBrbm93IHRoZSBnZW5lcmFsIHJlcXVpcmVtZW50cywgYnV0IGl0J3Mgd29ydGggYSBkb3VibGUtY2hlY2sgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gaW50ZWdyYXRpb24gaXNzdWVzIG9yIGJ1aWxkIGZhaWx1cmVzLiBHb3R0YSBrZWVwIGFuIGV5ZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBhZnRlciBhbnkgdXBzdHJlYW0gY2hhbmdlcy4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3OTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1MC4zNDQ5ODU1OTRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg1MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg1MDpcXHRcXHQgIGNvbnZlcnQgdGhlIHR5cGUgb2YgYW4gZXZlbnQgZmllbGQuIEZvciBleGFtcGxlLCB0dXJuIGFuXFxuIDg1MTpcXHRcXHQgIGFkZHJlc3MgaW50byBhIHN0cmluZy5cXG4gODUyOlxcdFxcbiA4NTM6XFx0Y29uZmlnIEJQRl9FVkVOVFNcXG4gODU0OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4gODU1OlxcdFxcdGRlcGVuZHMgb24gKEtQUk9CRV9FVkVOVFMgfHwgVVBST0JFX0VWRU5UUykgXFx1MDAyNlxcdTAwMjYgUEVSRl9FVkVOVFNcXG4gODU2OlxcdFxcdGJvb2xcXG4gODU3OlxcdFxcdGRlZmF1bHQgeVxcbiA4NTg6XFx0XFx0aGVscFxcbiA4NTk6XFx0XFx0ICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBhdHRhY2ggQlBGIHByb2dyYW1zIHRvIGtwcm9iZSwgdXByb2JlLCBhbmRcXG4gODYwOlxcdFxcdCAgdHJhY2Vwb2ludCBldmVudHMuXFxuIDg2MTpcXHRcXG4gODYyOlxcdGNvbmZpZyBEWU5BTUlDX0VWRU5UU1xcbiA4NjM6XFx0XFx0ZGVmX2Jvb2wgblxcbiA4NjQ6XFx0XFxuIDg2NTpcXHRjb25maWcgUFJPQkVfRVZFTlRTXFxuIDg2NjpcXHRcXHRkZWZfYm9vbCBuXFxuIDg2NzpcXHRcXG4gODY4OlxcdGNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXFxuIDg2OTpcXHRcXHRib29sIFxcXCJFbmFibGUgQlBGIHByb2dyYW1zIHRvIG92ZXJyaWRlIGEga3Byb2JlZCBmdW5jdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6NTAuMzQ1MjE3MDc0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjcyNDE5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb246IEJQRiBFdmVudCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQlBGX0VWRU5UU2AgaXMgY29udGluZ2VudCBvbiBhIGZldyBvdGhlciBjb25maWd1cmF0aW9uczogc3BlY2lmaWNhbGx5LCBgQlBGX1NZU0NBTExgLCBhbmQgZWl0aGVyIGBLUFJPQkVfRVZFTlRTYCBvciBgVVBST0JFX0VWRU5UU2AgKmluIGNvbmp1bmN0aW9uIHdpdGgqIGBQRVJGX0VWRU5UU2AuIFRoYXQgc2VlbWVkIHN0cmFpZ2h0Zm9yd2FyZDsgSSBmaWd1cmVkIHdlJ2QgaGF2ZSB0byBleHBsaWNpdGx5IGVuYWJsZSBgQlBGX1NZU0NBTExgLCBgS1BST0JFX0VWRU5UU2AsIGFuZCBgUEVSRl9FVkVOVFNgIHRvIGdldCBgQlBGX0VWRU5UU2AgdG8gd29yay5cblxuQnV0IHdhaXQsIGhvbGQgb24uIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdGhpbmtpbmcuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBgQlBGX0VWRU5UU2AgaXMgYHlgICppZiogaXRzIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbywgaW5zdGVhZCBvZiBleHBsaWNpdGx5IGVuYWJsaW5nICpldmVyeXRoaW5nKiwgSSBqdXN0IG5lZWQgdG8gZW5zdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldC4gSW4gdGhpcyBjYXNlLCB0aGF0IG1lYW5zIEkgc2hvdWxkIGV4cGxpY2l0bHkgc3BlY2lmeSBgQlBGX1NZU0NBTExgLCBgS1BST0JFX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBhbHNvIGBQUk9WRV9MT0NLSU5HYCBmb3IgZ29vZCBtZWFzdXJlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgS1BST0JFX0VWRU5UU2AgYW5kIGBQRVJGX0VWRU5UU2AgYXJlIHRydWx5IHNldCBjb3JyZWN0bHkuIEFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyOTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1NC4yNzI0NjI5ODdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDE1MjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLUFJPQkVfRVZFTlRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTc3MD1jb25maWcgUFJPQkVfRVZFTlRTX0JURl9BUkdTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy03ODEtXFxua2VybmVsL3RyYWNlL0tjb25maWc6NzgyOmNvbmZpZyBLUFJPQkVfRVZFTlRTXFxua2VybmVsL3RyYWNlL0tjb25maWctNzgzLVxcdGRlcGVuZHMgb24gS1BST0JFU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODAwLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjgwMTpjb25maWcgS1BST0JFX0VWRU5UU19PTl9OT1RSQUNFXFxua2VybmVsL3RyYWNlL0tjb25maWctODAyLVxcdGJvb2wgXFxcIkRvIE5PVCBwcm90ZWN0IG5vdHJhY2UgZnVuY3Rpb24gZnJvbSBrcHJvYmUgZXZlbnRzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1NC4zMjE4ODg1MTNaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxNjU0OTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBVbmRlcnN0YW5kaW5nIG9mIEtQUk9CRV9FVkVOVFMgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBLUFJPQkVfRVZFTlRTYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBmdW5kYW1lbnRhbGx5IGRlcGVuZHMgb24gYEtQUk9CRVNgLiBXaXRob3V0IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgb2YgYEtQUk9CRVNgLCBgS1BST0JFX0VWRU5UU2AganVzdCB3b3VsZG4ndCBiZSBhYmxlIHRvIGRvIHdoYXQgaXQncyBzdXBwb3NlZCB0byBkby4gVGhpbmsgb2YgYEtQUk9CRVNgIGFzIHRoZSBwbHVtYmluZyBhbmQgYEtQUk9CRV9FVkVOVFNgIGFzIHRoZSBmYXVjZXQ7IHlvdSBjYW4ndCBoYXZlIGEgd29ya2luZyBmYXVjZXQgd2l0aG91dCB0aGUgcGx1bWJpbmcgaW4gcGxhY2UuIEl0IHNlZW1zIHNpbXBsZSwgYWxtb3N0IHRyaXZpYWwsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBzdGF0ZSBpdCBleHBsaWNpdGx5LiBgS1BST0JFU2AgcHJvdmlkZXMgdGhlIG1lY2hhbmlzbSBmb3IgYWN0dWFsbHkgaW5zZXJ0aW5nIHByb2JlcywgYW5kIGBLUFJPQkVfRVZFTlRTYCBidWlsZHMgb24gKnRoYXQqIGZvdW5kYXRpb24gdG8gZG8gbW9yZSBhZHZhbmNlZCBldmVudCBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZy4gU28sIHllYWgsIGl0J3MgYSBmb3VuZGF0aW9uYWwgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NzIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNDo1Ny44Mzg0NDEyNjRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDk4ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLUFJPQkVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL0tjb25maWc9MTEyPWNvbmZpZyBHRU5FUklDX0VOVFJZXFxuLS1cXG5hcmNoL0tjb25maWctMTE2LVxcbmFyY2gvS2NvbmZpZzoxMTc6Y29uZmlnIEtQUk9CRVNcXG5hcmNoL0tjb25maWctMTE4LVxcdGJvb2wgXFxcIktwcm9iZXNcXFwiXFxuLS1cXG5hcmNoL0tjb25maWc9MTY4PWNvbmZpZyBPUFRQUk9CRVNcXG4tLVxcbmFyY2gvS2NvbmZpZy0xNzItXFxuYXJjaC9LY29uZmlnOjE3Mzpjb25maWcgS1BST0JFU19PTl9GVFJBQ0VcXG5hcmNoL0tjb25maWctMTc0LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjQ6NTcuODg0NTQ4NzkxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjU1MzcxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIFByb2JlczogTmF2aWdhdGluZyB0aGUgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYW5kIGltbWVkaWF0ZWx5IHRoZSBuZWVkIGZvciBgS1BST0JFU2AgcG9wcyBpbnRvIG15IGhlYWQuIEl0J3MgdGhlIGdvLXRvIGZvciBpbi1rZXJuZWwgaW5zdHJ1bWVudGF0aW9uLCBhbmQgaXQncyB3aGVyZSBJJ2xsIHByb2JhYmx5IGJlZ2luIG15IGludmVzdGlnYXRpb24uIEJ1dCB0aGVuLCB0aGUgcXVlc3Rpb24gb2Ygc3BlY2lmaWMgZXZlbnRzIHN1cmZhY2VzLiBJJ20gd29uZGVyaW5nIGlmIEkgc2hvdWxkIGFsc28gYmUgY29uc2lkZXJpbmcgYFVQUk9CRV9FVkVOVFNgIGluIHRoZSBtaXguIFRoZXkncmUgcmVsYXRlZCwgYnV0IGhhbmRsZSB1c2VyLXNwYWNlIHByb2Jlcy4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIHVzaW5nIHRoZSBiZXN0IHRvb2xzIGZvciB0aGUgam9iLCBkZXBlbmRpbmcgb24gd2hhdCBJJ20gbG9va2luZyB0byBhY2hpZXZlIC0ga2VybmVsIHNwYWNlIG9yIHVzZXJzcGFjZSBvciBib3RoLiBOZWVkIHRvIGZhY3RvciB0aGF0IGluLiBHb3R0YSBjb25zaWRlciB0aGF0IHRvIGJ1aWxkIGEgc29sdXRpb24gdGhhdCdzIHJvYnVzdCBhbmQgZWZmaWNpZW50LCBJIG5lZWQgdG8gbWFrZSB0aGUgcmlnaHQgY2hvaWNlIGJldHdlZW4gdGhlIHR3byBhdCB0aGUgb3V0c2V0LiBJIGFtIHBvbmRlcmluZyB3aGF0IHRoZSBiZXN0IHdheSB0byBsZXZlcmFnZSBib3RoIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIzNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjAxLjUxMDA4OTg4MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNTExNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVQUk9CRV9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL3RyYWNlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL0tjb25maWc9ODAxPWNvbmZpZyBLUFJPQkVfRVZFTlRTX09OX05PVFJBQ0VcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTgyMC1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4MjE6Y29uZmlnIFVQUk9CRV9FVkVOVFNcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04MjItXFx0Ym9vbCBcXFwiRW5hYmxlIHVwcm9iZXMtYmFzZWQgZHluYW1pYyBldmVudHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjAxLjU1NjM0NjQ3OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQxNTc2NjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSdtIHRoZSBvbmUgaGF2aW5nIHRoZW06XG5cbioqRGVwZW5kZW5jeSBDb25zaWRlcmF0aW9ucyBmb3IgVVBST0JFX0VWRU5UUyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgVVBST0JFX0VWRU5UU2AgYW5kIHRoZSBhcmNoaXRlY3R1cmUuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBJdCdzIGNsZWFyIHRoYXQgYFVQUk9CRV9FVkVOVFNgICphYnNvbHV0ZWx5KiBkZXBlbmRzIG9uIGBVUFJPQkVTYC4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiBgVVBST0JFX0VWRU5UU2Ag4oCTIHdoaWNoIGlzIG9idmlvdXNseSBldmVudCBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgcmVsYXRlZCB0byB1c2VyLXNwYWNlIHByb2JlcyDigJMgaXMgZnVuZGFtZW50YWxseSBidWlsdCB1cG9uIHRoZSB1bmRlcmx5aW5nIGNhcGFiaWxpdGllcyBwcm92aWRlZCBieSBgVVBST0JFU2AuIEkgbWVhbiwgaG93IGVsc2Ugd291bGQgeW91IGNhcHR1cmUgYW5kIG1ha2Ugc2Vuc2Ugb2YgZXZlbnRzIHJlbGF0ZWQgdG8gcHJvYmVzIGlmIHlvdSBkaWRuJ3QgaGF2ZSB0aGUgcHJvYmVzIHRoZW1zZWx2ZXMgaW4gcGxhY2UgZmlyc3Q/IEl0J3MgYSBmb3VuZGF0aW9uYWwgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV4cGxpY2l0IGluIGFueSBkZXNpZ24gZG9jcyBvciBkaXNjdXNzaW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1ODIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNTowNC40OTc5MjY2MTRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MzE2NjEwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVBST0JFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9LY29uZmlnPTE3Mz1jb25maWcgS1BST0JFU19PTl9GVFJBQ0VcXG4tLVxcbmFyY2gvS2NvbmZpZy0xODEtXFxuYXJjaC9LY29uZmlnOjE4Mjpjb25maWcgVVBST0JFU1xcbmFyY2gvS2NvbmZpZy0xODMtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNTowNC44NDEwOTg5MzNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxOTM1NDQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqU3RyYXRlZ2ljIEFwcHJvYWNoIHRvIEluc3RydW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIEknbSB0aGlua2luZyB3ZSBzaG91bGQgc3RyZWFtbGluZSB0aGlzIHByb2Nlc3MuIExldCdzIGp1c3QgbGVhbiBoZWF2aWx5IG9uIGBLUFJPQkVfRVZFTlRTYCBhbmQgcGxhaW4gb2xkIGBLUFJPQkVTYCBmb3IgdGhpcyBpbml0aWFsIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhleSdyZSBwb3dlcmZ1bCBhbmQgd2VsbC11bmRlcnN0b29kLCBzbyBzdGFydGluZyB3aXRoIHRoZW0gbWFrZXMgdGhlIG1vc3Qgc2Vuc2UuXG5cbk5vdywgSSBhbHNvIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGNvbnNpZGVyIHRoZSBsb25nIHRlcm0uIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIGBQRVJGX0VWRU5UU2AgaXMgZW5hYmxlZCB2aWEgY29uZmlndXJhdGlvbi4gSSdtIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlLCBhbmQgaWYgaXQgaXMsIHdlIHNob3VsZCBnaXZlIGl0IGZ1bGwgY29uc2lkZXJhdGlvbiBhdCBsZWFzdC4gSXQncyBvZnRlbiB0aGUgZ29sZCBzdGFuZGFyZC4gV2UgbWF5IHdhbnQgdG8gZXhwYW5kIHRvIHVzZSBpdCBhdCBzb21lIHBvaW50LiBCdXQgZm9yIG5vdywgbGV0J3Mga2VlcCBpdCBzaW1wbGUgYW5kIHNlZSBpZiB3ZSBjYW4gZ2V0IHRoZSBiYXNlbGluZSBpbXBsZW1lbnRlZCBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4NjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNTowOC4xNjA0NTY4MDRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY5MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQRVJGX0VWRU5UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbml0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTIxNDE9bWVudSBcXFwiS2VybmVsIFBlcmZvcm1hbmNlIEV2ZW50cyBBbmQgQ291bnRlcnNcXFwiXFxuaW5pdC9LY29uZmlnLTIxNDItXFxuaW5pdC9LY29uZmlnOjIxNDM6Y29uZmlnIFBFUkZfRVZFTlRTXFxuaW5pdC9LY29uZmlnLTIxNDQtXFx0Ym9vbCBcXFwiS2VybmVsIHBlcmZvcm1hbmNlIGV2ZW50cyBhbmQgY291bnRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjA4LjIwNzMzMTgzMloiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4MDM2MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtlcm5lbCBDb25maWd1cmF0aW9uIE11c2luZ3MqKlxuXG5Pa2F5LCB5ZXMsIGRlZmluaXRlbHkgYFBFUkZfRVZFTlRTYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gUmlnaHQsIHNvIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJQRl9TWVNDQUxMYCwgYEtQUk9CRVNgLCBgS1BST0JFX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2Ag4oCTIG9idmlvdXNseSDigJMgYW5kIGBQUk9WRV9MT0NLSU5HYC5cblxuTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBsZXQncyBqdXN0IHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIEkgKmNhbiogYWN0dWFsbHkgZW5hYmxlIGBCUEZfRVZFTlRTYCBkaXJlY3RseS4gSG1tLCBpdCdzIGEgYGJvb2xgIGNvbmZpZywgYW5kIGl0IGRlZmF1bHRzIHRvIFwieVwiLiBTbywgaXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpZiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIEJ1dCwgSSBjYW4gZXhwbGljaXRseSBzZXQgaXQgdG9vLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBwcmFjdGljZS5cblxuUmlnaHQsIGxldCdzIGRlbHZlIGludG8gdGhlIHRyYWNpbmcgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQlBGIHByb2dyYW1zIGdldCBob29rZWQgaW50byB0aGUga2VybmVsLiBMZXQncyBsb29rIGF0IGB0cmFjZV9jYWxsX2JwZmAgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIEFoYSwgaXQncyBjYWxsZWQgZnJvbSBgX19icGZfdHJhY2VfcnVuYC4gQW5kIHRoYXQgZnVuY3Rpb24gaXMgZ2VuZXJhdGVkIHVzaW5nIHRob3NlIGBERUNMQVJFX0VWRU5UX0NMQVNTYCBtYWNyb3Mgb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cbk9rYXksIHNvIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBhdHRhY2hlZCB0byBhIHRyYWNlcG9pbnQsIHRoZSBrZXJuZWwgdXNlcyBzb21ldGhpbmcgbGlrZSBgcGVyZl90cmFjZV8jI2NhbGxgLCB3aGljaCBpcyB3aGF0IHRoZW4gY2FsbHMgYHRyYWNlX2NhbGxfYnBmYC4gV2FpdCBhIHNlY29uZOKApiBpc24ndCBgdHJhY2VfY2FsbF9icGZgIGNhbGxlZCBmcm9tIGBwZXJmX3RyYWNlXyMjY2FsbGA/IFllcywgcmlnaHQsIHRoYXQncyBpbiBgaW5jbHVkZS90cmFjZS9wZXJmLmhgLiBPa2F5LCBiZXR0ZXIgZ28gYW5kIGNoZWNrIHRoYXQgaGVhZGVyIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjEzLjk3NTM3MDk2WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzUxMDgyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJhY2VfY2FsbF9icGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS90cmFjZS9wZXJmLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjE0LjAyODg5MTM0N1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU4NTcxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkxvY2F0aW5nIHRoZSBDYWxsZXJzIG9mIGB0cmFjZV9jYWxsX2JwZmAqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHRyYWNlX2NhbGxfYnBmYCBpcyBiZWluZyBpbnZva2VkLiBJdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgZ3JhcGggaXMgcGFyYW1vdW50LiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsIGlzIHRoZXJlIGEgc2ltcGxlIGdyZXAgSSBjYW4gcnVuIHRvIGZpbmQgdGhlIGRpcmVjdCBjYWxsZXJzLCBvciBpcyBpdCBtb3JlIGNvbXBsZXggdGhhbiB0aGF0PyBHaXZlbiB0aGUgbmF0dXJlIG9mIEJQRiwgSSBzdXNwZWN0IGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlcywgcGVyaGFwcyBldmVuIGR5bmFtaWNhbGx5LiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoZSBCUEYgc3Vic3lzdGVtIGludGVyYWN0cyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIE1heWJlIHRoZXJlJ3MgYSBzcGVjaWZpYyB0cmFjaW5nIG1lY2hhbmlzbSB0aGF0IHVzZXMgdGhpcywgYW5kIEkgY2FuIG5hcnJvdyBkb3duIHRoZSBzZWFyY2ggdGhhdCB3YXkuIEknbGwgbmVlZCB0byBjb25zaWRlciBib3RoIHN0YXRpYyBjYWxscyBhbmQgaW5kaXJlY3QgY2FsbHMgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyBvciBqdW1wIHRhYmxlcy4gVGhpcyByZXF1aXJlcyBhIHRhcmdldGVkIGludmVzdGlnYXRpb247IGEgYnJvYWQgc2VhcmNoIG1pZ2h0IGJlIHRvbyBub2lzeS4gVGhpbmtpbmcgYWxzbyBhYm91dCBhbnkgbW9kdWxlIGRlcGVuZGVuY2llcyBtaWdodCBhbHNvIGJlIHVzZWZ1bCB0byBxdWlja2x5IHJlZHVjZSB0aGUgc2VhcmNoIHNwYWNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgSSBjYW4gdW5jb3Zlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MzIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMToyNToxNy43ODc0NjU1NDFaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjU4NTU3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmFjZV9jYWxsX2JwZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3RyYWNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MTcuODM1MTM0NDk4WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4OTU5NjAzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipUcmFjaW5nIHRoZSBDYWxsZXIgb2YgYHRyYWNlX2NhbGxfYnBmYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93IGFyb3VuZCBgdHJhY2VfY2FsbF9icGZgLiBGaXJzdCwgbXkgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbGluZyBjb250ZXh0LiBTbywgbGV0J3Mgc3RhcnQgYnkgZG9pbmcgYSBxdWljayBzZWFyY2ggZm9yIGFsbCB0aGUgcGxhY2VzIHdoZXJlIGB0cmFjZV9jYWxsX2JwZmAgaXMgYWN0dWFsbHkgaW52b2tlZC4gSSBuZWVkIHRvIHNlZSB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcywgaWRlbnRpZnkgdGhlIHBhcmVudCBmdW5jdGlvbnMgb3IgY29kZSBibG9ja3MuIFRoYXQnbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGV4cGVjdGluZyBzb21lIGludGVyZXN0aW5nIGZpbmRpbmdzIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgQlBGIGFuZCB0cmFjaW5nLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEyMCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjIwLjczMTA5NzYxNloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE3Njk3NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJhY2VfY2FsbF9icGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03NTk9dHJhY2VfdHJpZ2dlcl9zb2Z0X2Rpc2FibGVkKHN0cnVjdCB0cmFjZV9ldmVudF9maWxlICpmaWxlKVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzQtI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3NzU6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmKHN0cnVjdCB0cmFjZV9ldmVudF9jYWxsICpjYWxsLCB2b2lkICpjdHgpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6Nzc2OnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03NzctaW50IHBlcmZfZXZlbnRfYXR0YWNoX2JwZl9wcm9nKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1NjQgYnBmX2Nvb2tpZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc5Mz1pbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk0LSNlbHNlXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3OTU6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5Ni17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5OS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjgwMDpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTgwMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjIwLjgyMjg3NTUxMVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIzMDUwNjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBVc2FnZSBQYXR0ZXJucyoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgYXBwbGljYXRpb24gb2YgdGhpcyBjb25jZXB0LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBhc3Nlc3MgaXRzIHVzYWdlIHBhdHRlcm5zLiBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCdzIGJlaW5nIGRlcGxveWVkLCBhY3Jvc3Mgd2hpY2ggZG9tYWlucywgYW5kIGluIHdoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvbW1vbmFsaXRpZXMgYW5kIHRoZSB2YXJpYXRpb25zLiBBcmUgd2Ugc2VlaW5nIGl0IHByaW1hcmlseSBpbiByZXNlYXJjaCwgb3IgaXMgaXQgbWFraW5nIGlucm9hZHMgaW50byBwcmFjdGljYWwgYXBwbGljYXRpb25zPyBXaGF0IGluZHVzdHJpZXMgYXJlIGFkb3B0aW5nIGl0LCBhbmQgd2h5PyBBcmUgdGhlcmUgYW55IGNsZWFyIGxlYWRlcnMgb3IgbGFnZ2luZyBhZG9wdGVycz8gVW5kZXJzdGFuZGluZyB0aGUgXCJ3aGVyZVwiIGlzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEl0IHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBlZmZpY2FjeSBhbmQgbGltaXRhdGlvbnMgd2l0aGluIGl0cyBhcHBsaWNhdGlvbi4gVGhlIGRhdGEgd2lsbCBkaWN0YXRlIG15IG5leHQgc3RlcCwgYmUgdGhhdCBhIGZ1cnRoZXIgZXhhbWluYXRpb24gb2YgbWV0aG9kb2xvZ3kgb3IgYSBjb21wYXJpc29uIGFnYWluc3Qgb3RoZXIgcGFyYWRpZ21zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDcxMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MjMuOTQ1OTI5MTQ2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQxMjM2NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYWNlX2NhbGxfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc1OT10cmFjZV90cmlnZ2VyX3NvZnRfZGlzYWJsZWQoc3RydWN0IHRyYWNlX2V2ZW50X2ZpbGUgKmZpbGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc3NC0jaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc3NTp1bnNpZ25lZCBpbnQgdHJhY2VfY2FsbF9icGYoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eCk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3NzY6dW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc3Ny1pbnQgcGVyZl9ldmVudF9hdHRhY2hfYnBmX3Byb2coc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHU2NCBicGZfY29va2llKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9NzkzPWludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTQtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5NTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk2LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzk5LVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODAwOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODAxLXtcXG4tLVxcbmtlcm5lbC9ldmVudHMvY29yZS5jPTExMzkxPXZvaWQgcGVyZl90cmFjZV9ydW5fYnBmX3N1Ym1pdCh2b2lkICpyYXdfZGF0YSwgaW50IHNpemUsIGludCByY3R4LFxcbi0tXFxua2VybmVsL2V2ZW50cy9jb3JlLmMtMTEzOTctXFx0XFx0KihzdHJ1Y3QgcHRfcmVncyAqKilyYXdfZGF0YSA9IHJlZ3M7XFxua2VybmVsL2V2ZW50cy9jb3JlLmM6MTEzOTg6XFx0XFx0aWYgKCF0cmFjZV9jYWxsX2JwZihjYWxsLCByYXdfZGF0YSkgfHwgaGxpc3RfZW1wdHkoaGVhZCkpIHtcXG5rZXJuZWwvZXZlbnRzL2NvcmUuYy0xMTM5OS1cXHRcXHRcXHRwZXJmX3N3ZXZlbnRfcHV0X3JlY3Vyc2lvbl9jb250ZXh0KHJjdHgpO1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTk2PXN0YXRpYyB1NjQgYnBmX3Vwcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eCk7XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtOTgtLyoqXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjk5OiAqIHRyYWNlX2NhbGxfYnBmIC0gaW52b2tlIEJQRiBwcm9ncmFtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEwMC0gKiBAY2FsbDogdHJhY2Vwb2ludCBldmVudFxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTExMS0gKi9cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTEyOnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZihzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCwgdm9pZCAqY3R4KVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMTMte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEzOS1cXHQgKiBJZiBicGZfcHJvZ19hcnJheV92YWxpZCgpIGZldGNoZWQgcHJvZ19hcnJheSB3YXNcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTQwOlxcdCAqIG5vbi1OVUxMLCB3ZSBnbyBpbnRvIHRyYWNlX2NhbGxfYnBmKCkgYW5kIGRvIHRoZSBhY3R1YWxcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTQxLVxcdCAqIHByb3BlciByY3VfZGVyZWZlcmVuY2UoKSB1bmRlciBSQ1UgbG9jay5cXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjMtLyoqXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2NDogKiB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUgLSBpbnZva2UgQlBGIHByb2dyYW0gaW4gZmF1bHRhYmxlIGNvbnRleHRcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY1LSAqIEBjYWxsOiB0cmFjZXBvaW50IGV2ZW50XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTY3LSAqXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjE2ODogKiBWYXJpYW50IG9mIHRyYWNlX2NhbGxfYnBmKCkgZm9yIGZhdWx0YWJsZSB0cmFjZXBvaW50cyAoc3lzY2FsbFxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xNjktICogdHJhY2Vwb2ludHMpLiBTdXBwb3J0cyBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGJ5IHVzaW5nIHJjdV90YXNrc190cmFjZVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTE3OC0gKi9cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTc5OnVuc2lnbmVkIGludCB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsIHZvaWQgKmN0eClcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMTgwLXtcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYz0xNjgzPWtwcm9iZV9wZXJmX2Z1bmMoc3RydWN0IHRyYWNlX2twcm9iZSAqdGssIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE2OTQtXFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jOjE2OTU6XFx0XFx0cmV0ID0gdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncyk7XFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE2OTYtXFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmM9MTczMj1rcmV0cHJvYmVfcGVyZl9mdW5jKHN0cnVjdCB0cmFjZV9rcHJvYmUgKnRrLCBzdHJ1Y3Qga3JldHByb2JlX2luc3RhbmNlICpyaSxcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYy0xNzQwLVxcbmtlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYzoxNzQxOlxcdGlmIChicGZfcHJvZ19hcnJheV92YWxpZChjYWxsKSBcXHUwMDI2XFx1MDAyNiAhdHJhY2VfY2FsbF9icGYoY2FsbCwgcmVncykpXFxua2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jLTE3NDItXFx0XFx0cmV0dXJuO1xcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM9MTM3ND1zdGF0aWMgaW50IHBlcmZfY2FsbF9icGZfZW50ZXIoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwsXFxuLS1cXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYy0xMzkzLVxcdFxcdHBhcmFtLmFyZ3NbaV0gPSBhcmdzW2ldO1xcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jOjEzOTQ6XFx0cmV0dXJuIHRyYWNlX2NhbGxfYnBmX2ZhdWx0YWJsZShjYWxsLCBcXHUwMDI2cGFyYW0pO1xcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTEzOTUtfVxcbi0tXFxua2VybmVsL3RyYWNlL3RyYWNlX3N5c2NhbGxzLmM9MTUyNT1zdGF0aWMgaW50IHBlcmZfY2FsbF9icGZfZXhpdChzdHJ1Y3QgdHJhY2VfZXZlbnRfY2FsbCAqY2FsbCxcXG4tLVxcbmtlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jLTE1MzktXFx0cGFyYW0ucmV0ID0gcmV0X3ZhbDtcXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYzoxNTQwOlxcdHJldHVybiB0cmFjZV9jYWxsX2JwZl9mYXVsdGFibGUoY2FsbCwgXFx1MDAyNnBhcmFtKTtcXG5rZXJuZWwvdHJhY2UvdHJhY2Vfc3lzY2FsbHMuYy0xNTQxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MjUuNjg3MTcyMjg3WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNTAxNDUzODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQlBGIFRyYWNlcG9pbnQgRXhlY3V0aW9uIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYHRyYWNlX2NhbGxfYnBmYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBwZXJmX3RyYWNlX3J1bl9icGZfc3VibWl0YCBpbiBga2VybmVsL2V2ZW50cy9jb3JlLmNgLiBUaGF0J3MgdGhlIGNvcmUgZXhlY3V0aW9uIHBhdGggZm9yIHRyYWNlcG9pbnRzIHdpdGggQlBGIHByb2dyYW1zIGF0dGFjaGVkOyB0aGF0J3MgZ29vZCwgaXQncyBlYXNpbHkgcmVhY2hhYmxlIGFuZCB0aGVyZWZvcmUgdGVzdGFibGUuIFdlJ3JlIGxvb2tpbmcgYXQgYSBwcmV0dHkgZGlyZWN0IHBhdGggZm9yIG91ciBhbmFseXNpcy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSBuZWVkLiBXZSdyZSBjb25jZXJuZWQgd2l0aCBgQlBGX1NZU0NBTExgLCBgQlBGX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBgUFJPVkVfTE9DS0lOR2AuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIHNpbXBseSBlbmFibGUgYEJQRl9FVkVOVFNgIG9yIGRvIHdlIG5lZWQgdG8gZW5zdXJlIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNldD9cblxuYEJQRl9FVkVOVFNgIGlzIGEgYm9vbGVhbiB0aGF0IGRlZmF1bHRzIHRvICd5JyBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLiBJdCdzIGRlcGVuZGVudCBvbiBgQlBGX1NZU0NBTExgICphbmQqIGVpdGhlciBgS1BST0JFX0VWRU5UU2Agb3IgYFVQUk9CRV9FVkVOVFNgICphbmQqIGBQRVJGX0VWRU5UU2AuIFRoZXJlZm9yZSwgbGlzdGluZyBgQlBGX1NZU0NBTExgLCBgS1BST0JFX0VWRU5UU2AsIGBQRVJGX0VWRU5UU2AsIGFuZCBgUFJPVkVfTE9DS0lOR2Agc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5hYmxlIGl0LiBUaGVyZSdzIG5vIGhhcm0gaW4gbGlzdGluZyBgQlBGX0VWRU5UU2AgZGlyZWN0bHkgYXMgd2VsbCwgbWlnaHQgbWFrZSB0aGluZ3MgY2xlYXJlci5cblxuSGFuZyBvbi4uLiBUaGlzIHBhdGNoIHNwZWNpZmljYWxseSBkaXNhYmxlcyBsb2NrZGVwIGZvciB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludC4gVGhhdCBpbXBsaWVzIHRoZSBgbG9ja19yZWxlYXNlYCB0cmFjZXBvaW50ICptdXN0KiBiZSBlbmFibGVkIGZvciB0aGUgcGF0Y2ggdG8gZXZlbiBoYXZlIGFuIGVmZmVjdC4gT2theSwgc28gd2UgbmVlZCB0byB2ZXJpZnkgaXRzIGNvbmZpZ3VyYXRpb24uIEl0J3MgZGVmaW5lZCBpbiBgaW5jbHVkZS90cmFjZS9ldmVudHMvbG9jay5oYCwgd2hpY2ggaXMgaW5jbHVkZWQgYnkgYGtlcm5lbC9sb2NraW5nL2xvY2tkZXAuY2AuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGxvY2tfcmVsZWFzZWAgaXMgYWN0dWFsbHkgdXNlZCBpbiBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gVGhpcyB3aWxsIGdpdmUgdXMgdmFsdWFibGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5c3RlbSBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0NDUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6MzEuOTM3MzIxMzg1WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA1NzYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmFjZV9sb2NrX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYz01ODc1PXZvaWQgbG9ja19yZWxlYXNlKHN0cnVjdCBsb2NrZGVwX21hcCAqbG9jaywgdW5zaWduZWQgbG9uZyBpcClcXG4tLVxcbmtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYy01ODc4LVxcbmtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYzo1ODc5OlxcdHRyYWNlX2xvY2tfcmVsZWFzZShsb2NrLCBpcCk7XFxua2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jLTU4ODAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjI1OjMxLjk4OTM4NTMzMloiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzg5NjYxNjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgQlBGX05PX0xPQ0tERVBgIGluIEtlcm5lbCBUcmFjaW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSdzIHdoYXQgSSd2ZSBnb3QuIFRoZSBrZXkgaXMgdGhpcyBuZXcgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnLiAgSXQncyBzcGVjaWZpY2FsbHkgdXNlZCBpbiB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCwgd2hpY2ggaXMgZGVmaW5lZCBpbiBga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jYC4gIFRoaXMgbWVhbnMgYENPTkZJR19MT0NLREVQYCBpcyBhIGRlZmluaXRlIHJlcXVpcmVtZW50LCBhbmQgaW5kaXJlY3RseSBgQ09ORklHX1BST1ZFX0xPQ0tJTkdgIGFzIGl0IGVuYWJsZXMgYENPTkZJR19MT0NLREVQYC5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGFuZCBjb25maWd1cmF0aW9uLiAgVGhpcyBjaGFuZ2UgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2wgZm9yIHRoYXQgZnV6emluZyBpcyBgdHJhY2VfY2FsbF9icGZgLiAgSW4gdGVybXMgb2YgY29uZmlndXJhdGlvbnMsIHRoZSBuZWNlc3Nhcnkgb25lcyBhcmUgYEJQRl9TWVNDQUxMYCwgYEJQRl9FVkVOVFNgLCBgUEVSRl9FVkVOVFNgLCBhbmQgYFBST1ZFX0xPQ0tJTkdgLCB3aGljaCBpbmRpcmVjdGx5IGVuYWJsZXMgYExPQ0tERVBgLiBJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhpcywgYnV0IGBMT0NLREVQYCBpcyBhIHZhbGlkIGNvbmZpZyBhbmQgY2FuIGJlIGxpc3RlZC4gSG93ZXZlciwgYEtQUk9CRV9FVkVOVFNgIGlzIGFsc28gcmVxdWlyZWQsIGV2ZW4gdGhvdWdoIGl0IGlzbid0IGRpcmVjdGx5IHVzZWQgYnkgdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuIFRoZSByZWFzb24gaXMgYmVjYXVzZSBgQlBGX0VWRU5UU2AgZGVwZW5kcyBvbiBgS1BST0JFX0VWRU5UU2AgKG9yIGBVUFJPQkVfRVZFTlRTYCksIGFuZCBgUEVSRl9FVkVOVFNgLlxuXG5Ob3csIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuICBUaGVyZSdzIGEgbmV3IGZsYWcsIGBUUkFDRV9FVkVOVF9GTF9CUEZfTk9fTE9DS0RFUGAsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmhgLiAgVGhpcyBmbGFnIGdldHMgYWRkZWQgdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQgaW4gYGluY2x1ZGUvdHJhY2UvZXZlbnRzL2xvY2suaGAuIENyaXRpY2FsbHksIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGlzIHVwZGF0ZWQgdG8gY2hlY2sgdGhpcyBuZXcgZmxhZyB3aXRoaW4gdGhlIGB0cmFjZV9jYWxsX2JwZmAgZnVuY3Rpb24uIElmIHRoZSBmbGFnIGlzIHNldCwgbG9ja2RlcCBpcyB0ZW1wb3JhcmlseSBkaXNhYmxlZCBiZWZvcmUgcnVubmluZyB0aGUgQlBGIHByb2dyYW0gYW5kIHJlLWVuYWJsZWQgYWZ0ZXJ3YXJkcyB1c2luZyBgbG9ja2RlcF9vZmYoKWAgYW5kIGBsb2NrZGVwX29uKClgLiBUaGUgZmxhZyBpcyBhZGRlZCB0byB0aGUgYGxvY2tfcmVsZWFzZWAgdHJhY2Vwb2ludCB1c2luZyBgVFJBQ0VfRVZFTlRfRkxBR1NgLiBUaGlzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgd2l0aCBzeXprYWxsZXIgYnkgYXR0YWNoaW5nIGEgQlBGIHByb2dyYW0gdG8gdGhlIGBsb2NrX3JlbGVhc2VgIHRyYWNlcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjkwLCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MjU6NDUuODg2MDA1MDE5WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMxMDcyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfRVZFTlRTXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiLFxuICAgIFwiUFJPVkVfTE9DS0lOR1wiLFxuICAgIFwiS1BST0JFX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRyYWNlX2NhbGxfYnBmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZnVuY3Rpb25hbGx5IG1vZGlmaWVzIGB0cmFjZV9jYWxsX2JwZmAgdG8gZGlzYWJsZSBsb2NrZGVwIHRyYWNraW5nIHdoaWxlIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gdHJhY2Vwb2ludHMgd2l0aCB0aGUgYFRSQUNFX0VWRU5UX0ZMX0JQRl9OT19MT0NLREVQYCBmbGFnIChzdWNoIGFzIGBsb2NrX3JlbGVhc2VgKS4gVGhpcyBpcyBhIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiB0cmFjaW5nIGJlaGF2aW9yIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggbG9ja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIixcbiAgICBcIlBFUkZfRVZFTlRTXCIsXG4gICAgXCJQUk9WRV9MT0NLSU5HXCIsXG4gICAgXCJLUFJPQkVfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHJhY2VfY2FsbF9icGZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmdW5jdGlvbmFsbHkgbW9kaWZpZXMgYHRyYWNlX2NhbGxfYnBmYCB0byBkaXNhYmxlIGxvY2tkZXAgdHJhY2tpbmcgd2hpbGUgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byB0cmFjZXBvaW50cyB3aXRoIHRoZSBgVFJBQ0VfRVZFTlRfRkxfQlBGX05PX0xPQ0tERVBgIGZsYWcgKHN1Y2ggYXMgYGxvY2tfcmVsZWFzZWApLiBUaGlzIGlzIGEgcmVhY2hhYmxlIGNvcmUga2VybmVsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIHRyYWNpbmcgYmVoYXZpb3IgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBCUEYgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowznvd6[1] Phase: Succeeded StartedAt: 2026-08-03 11:25:57 +0000 UTC FinishedAt: 2026-08-03 11:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 11:25:57 +0000 UTC FinishedAt: 2026-08-03 11:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2] Phase: Succeeded StartedAt: 2026-08-03 11:25:57 +0000 UTC FinishedAt: 2026-08-03 15:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 11:25:57 +0000 UTC FinishedAt: 2026-08-03 15:08:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 11:25:57 +0000 UTC FinishedAt: 2026-08-03 11:26:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 11:25:57 +0000 UTC FinishedAt: 2026-08-03 11:26:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowznvd6/series-workflowznvd6-convert-artifact-2958899665/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 11:26:07 +0000 UTC FinishedAt: 2026-08-03 11:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 11:26:07 +0000 UTC FinishedAt: 2026-08-03 11:42:09 +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:*ee80b1cf-10d8-48c9-8b72-1bd9d17fe536,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-workflowznvd6/series-workflowznvd6-convert-artifact-2958899665/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": "46055ada-c046-4e33-b698-979976019793", "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-workflowznvd6/series-workflowznvd6-build-action-1532875647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 11:26:07 +0000 UTC FinishedAt: 2026-08-03 11:41:59 +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:*ee80b1cf-10d8-48c9-8b72-1bd9d17fe536,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-workflowznvd6/series-workflowznvd6-convert-artifact-2958899665/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": "46055ada-c046-4e33-b698-979976019793", "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-workflowznvd6/series-workflowznvd6-build-action-1532875647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 11:42:09 +0000 UTC FinishedAt: 2026-08-03 11:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 11:42:09 +0000 UTC FinishedAt: 2026-08-03 11:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 11:42:09 +0000 UTC FinishedAt: 2026-08-03 11:42:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 11:42:09 +0000 UTC FinishedAt: 2026-08-03 11:42:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowznvd6/series-workflowznvd6-convert-artifact-916337828/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 11:42:19 +0000 UTC FinishedAt: 2026-08-03 11:44:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 11:42:19 +0000 UTC FinishedAt: 2026-08-03 11:44:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*46055ada-c046-4e33-b698-979976019793,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-workflowznvd6/series-workflowznvd6-build-action-1532875647/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-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 11:44:25 +0000 UTC FinishedAt: 2026-08-03 11:44:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 11:44:25 +0000 UTC FinishedAt: 2026-08-03 11:44:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 11:44:25 +0000 UTC FinishedAt: 2026-08-03 12:01:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 11:44:25 +0000 UTC FinishedAt: 2026-08-03 12:01:24 +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:*ee80b1cf-10d8-48c9-8b72-1bd9d17fe536,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-workflowznvd6/series-workflowznvd6-convert-artifact-916337828/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": "65e33432-16f2-4fab-828e-7be3d405f2c9", "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-workflowznvd6/series-workflowznvd6-build-action-2363271984/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 11:44:25 +0000 UTC FinishedAt: 2026-08-03 12:01:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ee80b1cf-10d8-48c9-8b72-1bd9d17fe536,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-workflowznvd6/series-workflowznvd6-convert-artifact-916337828/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": "65e33432-16f2-4fab-828e-7be3d405f2c9", "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-workflowznvd6/series-workflowznvd6-build-action-2363271984/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 12:01:24 +0000 UTC FinishedAt: 2026-08-03 12:01:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 12:01:24 +0000 UTC FinishedAt: 2026-08-03 12:01:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 12:01:24 +0000 UTC FinishedAt: 2026-08-03 12:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 12:01:24 +0000 UTC FinishedAt: 2026-08-03 12:03:21 +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:*65e33432-16f2-4fab-828e-7be3d405f2c9,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-workflowznvd6/series-workflowznvd6-build-action-2363271984/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-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 15:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 15:08:33 +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"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"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:*46055ada-c046-4e33-b698-979976019793,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*65e33432-16f2-4fab-828e-7be3d405f2c9,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-workflowznvd6/series-workflowznvd6-build-action-1532875647/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-workflowznvd6/series-workflowznvd6-build-action-2363271984/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 12:03:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 12:03:37 +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"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"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-workflowznvd6/series-workflowznvd6-convert-artifact-589571373/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 12:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 12:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 12:03:31 +0000 UTC FinishedAt: 2026-08-03 12:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 12:03:41 +0000 UTC FinishedAt: 2026-08-03 15:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznvd6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["trace_call_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS","PERF_EVENTS","PROVE_LOCKING","KPROBE_EVENTS"],"series_id":"0451aa1b-28f3-463b-b657-730c1ca351b3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 12:03:41 +0000 UTC FinishedAt: 2026-08-03 15:08:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*46055ada-c046-4e33-b698-979976019793,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*65e33432-16f2-4fab-828e-7be3d405f2c9,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-workflowznvd6/series-workflowznvd6-build-action-1532875647/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-workflowznvd6/series-workflowznvd6-build-action-2363271984/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-workflowznvd6/series-workflowznvd6-convert-artifact-589571373/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,}