Name: series-workflowzk828 Phase: Succeeded StartedAt: 2026-06-25 15:46:36 +0000 UTC FinishedAt: 2026-06-25 20:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[0] Phase: Succeeded StartedAt: 2026-06-25 15:46:36 +0000 UTC FinishedAt: 2026-06-25 15:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 15:46:36 +0000 UTC FinishedAt: 2026-06-25 15:59:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADVISE_SYSCALLS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADVISE_SYSCALLS" ], "series_id": "1636bf6c-e98c-4dc4-abac-a73dab6c9a05" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "do_mincore", "madvise_pageout", "madvise_cold_or_pageout_pte_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FEVklTRV9TWVNDQUxMUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RvX21pbmNvcmUmIzM0OywKICAgICYjMzQ7bWFkdmlzZV9wYWdlb3V0JiMzNDssCiAgICAmIzM0O21hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBpZG1hcHBlZCBtb3VudHMgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYFx1MDAyNm5vcF9tbnRfaWRtYXBgIHdpdGggdGhlIGFjdHVhbCBtb3VudCBpZG1hcCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjZGYyOTEzMTlkN2M5NTg0YWM4NzhhYzI4NzAzMWU2YTM5Mzk5ZTU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMTU6NTc6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9saW51eC9mcy5oXG5pbmRleCBkMTA4OTdiM2ExZTM1MC4uNTBjZTczMWEyYjc4ZjEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZnMuaFxuQEAgLTI0NDQsNiAmIzQzOzI0NDQsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbW50X2lkbWFwICpmaWxlX21udF9pZG1hcChjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdHJldHVybiBtbnRfaWRtYXAoZmlsZS1cdTAwM2VmX3BhdGgubW50KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBmaWxlX293bmVyX29yX2NhcGFibGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSk7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaXNfaWRtYXBwZWRfbW50IC0gY2hlY2sgd2hldGhlciBhIG1vdW50IGlzIG1hcHBlZFxuICAqIEBtbnQ6IHRoZSBtb3VudCB0byBjaGVja1xuZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuY1xuaW5kZXggNWFmNjJlNmFiY2E1OGIuLjU4ZWI5ZDI0MDY0MzQ4IDEwMDY0NFxuLS0tIGEvbW0vZmlsZW1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9maWxlbWFwLmNcbkBAIC00NzA0LDcgJiM0Mzs0NzA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpXG4ge1xuIFx0aWYgKGYtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9XUklURSlcbiBcdFx0cmV0dXJuIHRydWU7XG4tXHRpZiAoaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmKSwgZmlsZV9pbm9kZShmKSkpXG4mIzQzO1x0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHRyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vbWFkdmlzZS5jIGIvbW0vbWFkdmlzZS5jXG5pbmRleCBjZDliYjA3NzA3MmNjYi4uNzc1NTJiMDNkMzE4ZDkgMTAwNjQ0XG4tLS0gYS9tbS9tYWR2aXNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21hZHZpc2UuY1xuQEAgLTMzNiw4ICYjNDM7MzM2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19maWxlX3BhZ2VvdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4gXHQgKiBvdGhlcndpc2Ugd2UmIzM5O2QgYmUgaW5jbHVkaW5nIHNoYXJlZCBub24tZXhjbHVzaXZlIG1hcHBpbmdzLCB3aGljaFxuIFx0ICogb3BlbnMgYSBzaWRlIGNoYW5uZWwuXG4gXHQgKi9cbi1cdHJldHVybiBpbm9kZV9vd25lcl9vcl9jYXBhYmxlKFx1MDAyNm5vcF9tbnRfaWRtYXAsXG4tXHRcdFx0XHQgICAgICBmaWxlX2lub2RlKHZtYS1cdTAwM2V2bV9maWxlKSkgfHxcbiYjNDM7XHRyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS1cdTAwM2V2bV9maWxlKSB8fFxuIFx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9tbS9taW5jb3JlLmMgYi9tbS9taW5jb3JlLmNcbmluZGV4IDI5NmYyZTM5MjJiNWY0Li5jODc1N2M1MDg1YmY5MCAxMDA2NDRcbi0tLSBhL21tL21pbmNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWluY29yZS5jXG5AQCAtMjI3LDggJiM0MzsyMjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4gXHQgKiBmb3Igd3JpdGluZzsgb3RoZXJ3aXNlIHdlJiMzOTtkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZVxuIFx0ICogbWFwcGluZ3MsIHdoaWNoIG9wZW5zIGEgc2lkZSBjaGFubmVsLlxuIFx0ICovXG4tXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShcdTAwMjZub3BfbW50X2lkbWFwLFxuLVx0XHRcdFx0ICAgICAgZmlsZV9pbm9kZSh2bWEtXHUwMDNldm1fZmlsZSkpIHx8XG4mIzQzO1x0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXHUwMDNldm1fZmlsZSkgfHxcbiBcdCAgICAgICBmaWxlX3Blcm1pc3Npb24odm1hLVx1MDAzZXZtX2ZpbGUsIE1BWV9XUklURSkgPT0gMDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QURWSVNFX1NZU0NBTExTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fbWluY29yZSYjMzQ7LAogICAgJiMzNDttYWR2aXNlX3BhZ2VvdXQmIzM0OywKICAgICYjMzQ7bWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGlkbWFwcGVkIG1vdW50cyB3ZXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGluIGBtYWR2aXNlYCBhbmQgYG1pbmNvcmVgIGJ5IHJlcGxhY2luZyBgXHUwMDI2bm9wX21udF9pZG1hcGAgd2l0aCB0aGUgYWN0dWFsIG1vdW50IGlkbWFwIG9mIHRoZSBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2RmMjkxMzE5ZDdjOTU4NGFjODc4YWMyODcwMzFlNmEzOTM5OWU1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDE1OjU3OjA5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9saW51eC9mcy5oCmluZGV4IGQxMDg5N2IzYTFlMzUwLi41MGNlNzMxYTJiNzhmMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMjQ0NCw2ICYjNDM7MjQ0NCwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBtbnRfaWRtYXAgKmZpbGVfbW50X2lkbWFwKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKQogCXJldHVybiBtbnRfaWRtYXAoZmlsZS0mZ3Q7Zl9wYXRoLm1udCk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKQomIzQzO3sKJiM0MzsJcmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpOwomIzQzO30KJiM0MzsKIC8qKgogICogaXNfaWRtYXBwZWRfbW50IC0gY2hlY2sgd2hldGhlciBhIG1vdW50IGlzIG1hcHBlZAogICogQG1udDogdGhlIG1vdW50IHRvIGNoZWNrCmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmMKaW5kZXggNWFmNjJlNmFiY2E1OGIuLjU4ZWI5ZDI0MDY0MzQ4IDEwMDY0NAotLS0gYS9tbS9maWxlbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZmlsZW1hcC5jCkBAIC00NzA0LDcgJiM0Mzs0NzA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpCiB7CiAJaWYgKGYtJmd0O2ZfbW9kZSAmYW1wOyBGTU9ERV9XUklURSkKIAkJcmV0dXJuIHRydWU7Ci0JaWYgKGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZiksIGZpbGVfaW5vZGUoZikpKQomIzQzOwlpZiAoZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpKQogCQlyZXR1cm4gdHJ1ZTsKIAlyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDsKIH0KZGlmZiAtLWdpdCBhL21tL21hZHZpc2UuYyBiL21tL21hZHZpc2UuYwppbmRleCBjZDliYjA3NzA3MmNjYi4uNzc1NTJiMDNkMzE4ZDkgMTAwNjQ0Ci0tLSBhL21tL21hZHZpc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tYWR2aXNlLmMKQEAgLTMzNiw4ICYjNDM7MzM2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19maWxlX3BhZ2VvdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJICogb3RoZXJ3aXNlIHdlJiMzOTtkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZSBtYXBwaW5ncywgd2hpY2gKIAkgKiBvcGVucyBhIHNpZGUgY2hhbm5lbC4KIAkgKi8KLQlyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZSgmYW1wO25vcF9tbnRfaWRtYXAsCi0JCQkJICAgICAgZmlsZV9pbm9kZSh2bWEtJmd0O3ZtX2ZpbGUpKSB8fAomIzQzOwlyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS0mZ3Q7dm1fZmlsZSkgfHwKIAkgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS0mZ3Q7dm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwOwogfQogCmRpZmYgLS1naXQgYS9tbS9taW5jb3JlLmMgYi9tbS9taW5jb3JlLmMKaW5kZXggMjk2ZjJlMzkyMmI1ZjQuLmM4NzU3YzUwODViZjkwIDEwMDY0NAotLS0gYS9tbS9taW5jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWluY29yZS5jCkBAIC0yMjcsOCAmIzQzOzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkgKiBmb3Igd3JpdGluZzsgb3RoZXJ3aXNlIHdlJiMzOTtkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZQogCSAqIG1hcHBpbmdzLCB3aGljaCBvcGVucyBhIHNpZGUgY2hhbm5lbC4KIAkgKi8KLQlyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZSgmYW1wO25vcF9tbnRfaWRtYXAsCi0JCQkJICAgICAgZmlsZV9pbm9kZSh2bWEtJmd0O3ZtX2ZpbGUpKSB8fAomIzQzOwlyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS0mZ3Q7dm1fZmlsZSkgfHwKIAkgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS0mZ3Q7dm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaWxlIFBlcm1pc3Npb24gQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgbmV3IGlubGluZSBmdW5jdGlvbiwgYGZpbGVfb3duZXJfb3JfY2FwYWJsZWAsIGFuZCBJIHNlZSBpdCYjMzk7cyBpbnRlbmRlZCB0byBzaW1wbGlmeSBzb21lIGNoZWNrcyByZWxhdGVkIHRvIGZpbGUgb3duZXJzaGlwIGFuZCBjYXBhYmlsaXR5LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHJlcGxhY2luZyBkaXJlY3QgY2FsbHMgdG8gYGlub2RlX293bmVyX29yX2NhcGFibGVgIHdpdGggdGhpcyBuZXcgZnVuY3Rpb24gaW4gYSBmZXcga2V5IGFyZWFzOiBgbW0vZmlsZW1hcC5jYCwgYG1tL21hZHZpc2UuY2AsIGFuZCBgbW0vbWluY29yZS5jYC4KCkhvbGQgb24uLi4gSSYjMzk7bSBub3RpY2luZyBzb21ldGhpbmcgY3J1Y2lhbCBoZXJlLCBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJbiBgbW0vbWFkdmlzZS5jYCBhbmQgYG1tL21pbmNvcmUuY2AsIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIGAmYW1wO25vcF9tbnRfaWRtYXBgIHRvIGBpbm9kZV9vd25lcl9vcl9jYXBhYmxlYCwgYnV0IG5vdyB0aGUgcGF0Y2ggZGlyZWN0bHkgdXNlcyBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS0mZ3Q7dm1fZmlsZSlgLiBUaGlzIG1lYW5zIGl0IHdpbGwgY2FsbCBgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSlgLiBTbywgdGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBtb3VudCBJRCBtYXBwaW5nIHVzZWQgaW4gdGhlIG93bmVyc2hpcCBjaGVjayBmcm9tIGEgbm8tb3AgdG8gdGhlIGFjdHVhbCBmaWxlJiMzOTtzIG1vdW50IElELiBUaGlzIGhhcyB0byBiZSBhIGZpeCEgVGhpcyBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSB3aGVyZSBJRC1tYXBwZWQgbW91bnRzIHdlcmVuJiMzOTt0IGJlaW5nIGNvcnJlY3RseSBoYW5kbGVkIHdpdGhpbiB0aGUgYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgZnVuY3Rpb25zLgoKTm93LCBJIHdhbnQgdG8gZHJpbGwgZG93biBmdXJ0aGVyLiBMZXQmIzM5O3MgbG9vayBjbG9zZWx5IGF0IHdoZXJlIHRoZXNlIGNoYW5nZXMgYXJlIGltcGFjdGluZyB1cy4gVGhlIGxvZ2ljIG5vdyB0b3VjaGVzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCB3aXRoaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBjYW5fZG9fbWluY29yZWAgd2l0aGluIGBtbS9taW5jb3JlLmNgLiBgY2FuX2RvX2ZpbGVfcGFnZW91dGAgaXMsIGFzIEkgcmVjYWxsLCBhIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYG1hZHZpc2VfcGFnZW91dGAuIGBjYW5fZG9fbWluY29yZWAgaXMgdXNlZCBieSBhIGZ1bmN0aW9uIHNpbWlsYXIgdG8gYG1pbmNvcmVfcGFnZV9yYW5nZWAgb3Igc2ltaWxhciBpbiBgbW0vbWluY29yZS5jYC4KClRpbWUgdG8gc2VlIHdoZXJlIHRoZXNlIGFyZSB1c2VkLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgY2FsbGVkLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgYW5kIHdoYXQgZG93bnN0cmVhbSBpbXBhY3QgdGhpcyBmaXggbWlnaHQgaGF2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fZG9fZmlsZV9wYWdlb3V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21hZHZpc2UuYz0yODE9c3RhdGljIGxvbmcgbWFkdmlzZV93aWxsbmVlZChzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtMzI4LVxubW0vbWFkdmlzZS5jOjMyOTpzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2ZpbGVfcGFnZW91dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbm1tL21hZHZpc2UuYy0zMzAte1xuLS1cbm1tL21hZHZpc2UuYz0zNTM9c3RhdGljIGludCBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UocG1kX3QgKnBtZCxcbi0tXG5tbS9tYWR2aXNlLmMtMzczLVx0cGFnZW91dF9hbm9uX29ubHlfZmlsdGVyID0gcGFnZW91dCBcdTAwMjZcdTAwMjYgIXZtYV9pc19hbm9ueW1vdXModm1hKSBcdTAwMjZcdTAwMjZcbm1tL21hZHZpc2UuYzozNzQ6XHRcdFx0XHRcdCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7XG5tbS9tYWR2aXNlLmMtMzc1LVxuLS1cbm1tL21hZHZpc2UuYz02MjY9c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxuLS1cbm1tL21hZHZpc2UuYy02MzktXHQgKi9cbm1tL21hZHZpc2UuYzo2NDA6XHRpZiAoIXZtYV9pc19hbm9ueW1vdXModm1hKSBcdTAwMjZcdTAwMjYgKCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSkgXHUwMDI2XHUwMDI2XG5tbS9tYWR2aXNlLmMtNjQxLVx0XHRcdFx0KHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fTUFZU0hBUkUpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fZG9fbWluY29yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taW5jb3JlLmM9MTYzPXN0YXRpYyBpbnQgbWluY29yZV9wdGVfcmFuZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9taW5jb3JlLmMtMjE3LVxubW0vbWluY29yZS5jOjIxODpzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5tbS9taW5jb3JlLmMtMjE5LXtcbi0tXG5tbS9taW5jb3JlLmM9MjQ2PXN0YXRpYyBsb25nIGRvX21pbmNvcmUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCB1bnNpZ25lZCBjaGFyICp2ZWMpXG4tLVxubW0vbWluY29yZS5jLTI1NS1cdGVuZCA9IG1pbih2bWEtXHUwMDNldm1fZW5kLCBhZGRyICYjNDM7IChwYWdlcyBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCkpO1xubW0vbWluY29yZS5jOjI1NjpcdGlmICghY2FuX2RvX21pbmNvcmUodm1hKSkge1xubW0vbWluY29yZS5jLTI1Ny1cdFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IERJVl9ST1VORF9VUChlbmQgLSBhZGRyLCBQQUdFX1NJWkUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpZG1hcHBlZCBtb3VudCBjaGFuZ2UqKgoKT2theSwgc28gdGhpcyBjaGFuZ2UgdGFja2xlcyBob3cgaWRtYXBwZWQgbW91bnRzIGFyZSBoYW5kbGVkIHdpdGhpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgcmVwbGFjaW5nIGAmYW1wO25vcF9tbnRfaWRtYXBgIHdpdGggYGZpbGVfbW50X2lkbWFwKHZtYS0mZ3Q7dm1fZmlsZSlgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIHNoaWZ0LCBtZWFuaW5nIHRoZXJlJiMzOTtzIGEgcmVhbCBwb3NzaWJpbGl0eSBvZiBmaW5kaW5nIHNvbWUgZWRnZSBjYXNlcy4gRGVmaW5pdGVseSB3b3J0aCB0aHJvd2luZyBzb21lIGZ1enppbmcgYXQgaXQuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIG9uIGBtYWR2aXNlX3BhZ2VvdXRgLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgYW5kIGBkb19taW5jb3JlYC4gV2FpdCwgcmUtcmVhZGluZyB0aGUgcGF0Y2guLi5pdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNoYW5nZSBpcyBhY3R1YWxseSB3aXRoaW4gYGNhbl9kb19maWxlX3BhZ2VvdXRgIGFuZCBgY2FuX2RvX21pbmNvcmVgLiBBaCwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBnZXQgY2FsbGVkIHdpdGhpbiB0aGUgZW50cnkgcG9pbnRzLCBuYW1lbHkgYG1hZHZpc2VfcGFnZW91dGAgYW5kIGBkb19taW5jb3JlYC4KCkxldCBtZSBzZWUgaWYgdGhpcyBpcyB0aWVkIHRvIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucy4gSWRtYXBwZWQgbW91bnRzIHJlbHkgb24gYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgLCBJIHRoaW5rPyBUaG91Z2gsIGlkbWFwcGVkIG1vdW50cyBhcmUgZ2VuZXJhbGx5IGF2YWlsYWJsZSBub3csIHJpZ2h0PyBPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBvdGhlciBzcGVjaWZpYyBjb25maWcgdGhhdCBtaWdodCBiZSBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmlsZV9tbnRfaWRtYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96bG9vcC5jPTcwMD1zdGF0aWMgaW50IHpsb29wX3JlY29yZF9zYWZlX3dwcyhzdHJ1Y3Qgemxvb3BfZGV2aWNlICp6bG8pXG4tLVxuZHJpdmVycy9ibG9jay96bG9vcC5jLTcxMC1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvYmxvY2svemxvb3AuYzo3MTE6XHRcdHJldCA9IHZmc19zZXR4YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXG5kcml2ZXJzL2Jsb2NrL3psb29wLmMtNzEyLVx0XHRcdFx0XCYjMzQ7dXNlci56bG9vcC53cFwmIzM0OywgXHUwMDI2em9uZS1cdTAwM2V3cCwgc2l6ZW9mKHpvbmUtXHUwMDNld3ApLCAwKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3psb29wLmM9MTM2NT1zdGF0aWMgdm9pZCB6bG9vcF9mb3JnZXRfY2FjaGUoc3RydWN0IHpsb29wX2RldmljZSAqemxvKVxuLS1cbmRyaXZlcnMvYmxvY2svemxvb3AuYy0xMzc5LVxuZHJpdmVycy9ibG9jay96bG9vcC5jOjEzODA6XHRcdHJldCA9IHZmc19nZXR4YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXG5kcml2ZXJzL2Jsb2NrL3psb29wLmMtMTM4MS1cdFx0XHRcdFwmIzM0O3VzZXIuemxvb3Aud3BcJiMzNDssIFx1MDAyNm9sZF93cCwgc2l6ZW9mKG9sZF93cCkpO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9MTIwMT1zdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX3NuYXBfY3JlYXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMTIxNi1cbmZzL2J0cmZzL2lvY3RsLmM6MTIxNzpcdHJldHVybiBfX2J0cmZzX2lvY3RsX3NuYXBfY3JlYXRlKGZpbGUsIGZpbGVfbW50X2lkbWFwKGZpbGUpLFxuZnMvYnRyZnMvaW9jdGwuYy0xMjE4LVx0XHRcdFx0XHQgdm9sX2FyZ3MtXHUwMDNlbmFtZSwgdm9sX2FyZ3MtXHUwMDNlZmQsIHN1YnZvbCxcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTEyMjI9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZV92MihzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTEyNjAtXG5mcy9idHJmcy9pb2N0bC5jOjEyNjE6XHRyZXR1cm4gX19idHJmc19pb2N0bF9zbmFwX2NyZWF0ZShmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSxcbmZzL2J0cmZzL2lvY3RsLmMtMTI2Mi1cdFx0XHRcdFx0IHZvbF9hcmdzLVx1MDAzZW5hbWUsIHZvbF9hcmdzLVx1MDAzZWZkLCBzdWJ2b2wsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0xMjg4PXN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc3Vidm9sX3NldGZsYWdzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMTI5OC1cbmZzL2J0cmZzL2lvY3RsLmM6MTI5OTpcdGlmICghaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUpKVxuZnMvYnRyZnMvaW9jdGwuYy0xMzAwLVx0XHRyZXR1cm4gLUVQRVJNO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9MTkyMT1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2lub19sb29rdXBfdXNlcihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy0xOTQxLVxuZnMvYnRyZnMvaW9jdGwuYzoxOTQyOlx0cmV0ID0gYnRyZnNfc2VhcmNoX3BhdGhfaW5fdHJlZV91c2VyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgYXJncyk7XG5mcy9idHJmcy9pb2N0bC5jLTE5NDMtXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0yMjExPXN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc25hcF9kZXN0cm95KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMjIyMy1cdHN0cnVjdCBidHJmc19pb2N0bF92b2xfYXJnc192MiBBVVRPX0tGUkVFKHZvbF9hcmdzMik7XG5mcy9idHJmcy9pb2N0bC5jOjIyMjQ6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xuZnMvYnRyZnMvaW9jdGwuYy0yMjI1LVx0Y2hhciAqc3Vidm9sX25hbWUsICpzdWJ2b2xfbmFtZV9wdHIgPSBOVUxMO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9Mzk1Nj1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sXzMyKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMzk3OS1cbmZzL2J0cmZzL2lvY3RsLmM6Mzk4MDpcdHJldCA9IF9idHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKGZpbGUsIGZpbGVfbW50X2lkbWFwKGZpbGUpLCBhcmdzNjQpO1xuZnMvYnRyZnMvaW9jdGwuYy0zOTgxLVx0aWYgKHJldClcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTQwMDE9c3RhdGljIGxvbmcgYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQwMTAtXG5mcy9idHJmcy9pb2N0bC5jOjQwMTE6XHRyZXQgPSBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSwgc2EpO1xuZnMvYnRyZnMvaW9jdGwuYy00MDEyLVx0aWYgKHJldClcbi0tXG5mcy9jZXBoL2ZpbGUuYz03OTM9aW50IGNlcGhfYXRvbWljX29wZW4oc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9jZXBoL2ZpbGUuYy03OTUte1xuZnMvY2VwaC9maWxlLmM6Nzk2Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2NlcGgvZmlsZS5jLTc5Ny1cdHN0cnVjdCBjZXBoX2ZzX2NsaWVudCAqZnNjID0gY2VwaF9zYl90b19mc19jbGllbnQoZGlyLVx1MDAzZWlfc2IpO1xuLS1cbmZzL2NvcmVkdW1wLmM9ODc4PXN0YXRpYyBib29sIGNvcmVkdW1wX2ZpbGUoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy05NTUtXHQgKi9cbmZzL2NvcmVkdW1wLmM6OTU2Olx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2NvcmVkdW1wLmMtOTU3LVx0aWYgKCF2ZnN1aWRfZXFfa3VpZChpX3VpZF9pbnRvX3Zmc3VpZChpZG1hcCwgaW5vZGUpLCBjdXJyZW50X2ZzdWlkKCkpKSB7XG4tLVxuZnMvZXhlYy5jPTEzMTI9dm9pZCB3b3VsZF9kdW1wKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2V4ZWMuYy0xMzE0LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XG5mcy9leGVjLmM6MTMxNTpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XG5mcy9leGVjLmMtMTMxNi1cdGlmIChpbm9kZV9wZXJtaXNzaW9uKGlkbWFwLCBpbm9kZSwgTUFZX1JFQUQpIFx1MDAzYyAwKSB7XG4tLVxuZnMvZXhlYy5jPTE1NTg9c3RhdGljIHZvaWQgYnBybV9maWxsX3VpZChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9leGVjLmMtMTU3Ny1cbmZzL2V4ZWMuYzoxNTc4Olx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2V4ZWMuYy0xNTc5LVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYz00NDU9c3RhdGljIGludCBleGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy00OTYtXHQgKi9cbmZzL2V4ZmF0L2ZpbGUuYzo0OTc6XHRlcnIgPSBzZWN1cml0eV9pbm9kZV9zZXRhdHRyKGZpbGVfbW50X2lkbWFwKGZpbGUpLFxuZnMvZXhmYXQvZmlsZS5jLTQ5OC1cdFx0XHRcdCAgICAgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZpYSk7XG4tLVxuZnMvZXhmYXQvZmlsZS5jLTUwMi1cdC8qIFRoaXMgTVVTVCBiZSBkb25lIGJlZm9yZSBkb2luZyBhbnl0aGluZyBpcnJldmVyc2libGUuLi4gKi9cbmZzL2V4ZmF0L2ZpbGUuYzo1MDM6XHRlcnIgPSBleGZhdF9zZXRhdHRyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnksIFx1MDAyNmlhKTtcbmZzL2V4ZmF0L2ZpbGUuYy01MDQtXHRpZiAoZXJyKVxuLS1cbmZzL2V4dDQvaW9jdGwuYz0xNTM4PXN0YXRpYyBsb25nIF9fZXh0NF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZnMvZXh0NC9pb2N0bC5jLTE1NDEtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbmZzL2V4dDQvaW9jdGwuYzoxNTQyOlx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcbmZzL2V4dDQvaW9jdGwuYy0xNTQzLVxuLS1cbmZzL2YyZnMvZmlsZS5jPTIyNzk9c3RhdGljIGludCBmMmZzX2lvY19zdGFydF9hdG9taWNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGJvb2wgdHJ1bmNhdGUpXG4tLVxuZnMvZjJmcy9maWxlLmMtMjI4MS1cdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApO1xuZnMvZjJmcy9maWxlLmM6MjI4MjpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlscCk7XG5mcy9mMmZzL2ZpbGUuYy0yMjgzLVx0c3RydWN0IGYyZnNfaW5vZGVfaW5mbyAqZmkgPSBGMkZTX0koaW5vZGUpO1xuLS1cbmZzL2YyZnMvZmlsZS5jPTIzOTE9c3RhdGljIGludCBmMmZzX2lvY19jb21taXRfYXRvbWljX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmZzL2YyZnMvZmlsZS5jLTIzOTMtXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTtcbmZzL2YyZnMvZmlsZS5jOjIzOTQ6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xuZnMvZjJmcy9maWxlLmMtMjM5NS1cdGludCByZXQ7XG4tLVxuZnMvZjJmcy9maWxlLmM9MjQyNj1zdGF0aWMgaW50IGYyZnNfaW9jX2Fib3J0X2F0b21pY193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscClcbi0tXG5mcy9mMmZzL2ZpbGUuYy0yNDI4LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XG5mcy9mMmZzL2ZpbGUuYzoyNDI5Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcbmZzL2YyZnMvZmlsZS5jLTI0MzAtXHRpbnQgcmV0O1xuLS1cbmZzL2ZhdC9maWxlLmM9Mzc9c3RhdGljIGludCBmYXRfaW9jdGxfc2V0X2F0dHJpYnV0ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHUzMiBfX3VzZXIgKnVzZXJfYXR0cilcbi0tXG5mcy9mYXQvZmlsZS5jLTk0LVx0ICovXG5mcy9mYXQvZmlsZS5jOjk1Olx0ZXJyID0gc2VjdXJpdHlfaW5vZGVfc2V0YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSxcbmZzL2ZhdC9maWxlLmMtOTYtXHRcdFx0XHQgICAgIGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSwgXHUwMDI2aWEpO1xuLS1cbmZzL2ZhdC9maWxlLmMtMTAwLVx0LyogVGhpcyBNVVNUIGJlIGRvbmUgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGlycmV2ZXJzaWJsZS4uLiAqL1xuZnMvZmF0L2ZpbGUuYzoxMDE6XHRlcnIgPSBmYXRfc2V0YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZpYSk7XG5mcy9mYXQvZmlsZS5jLTEwMi1cdGlmIChlcnIpXG4tLVxuZnMvZmNudGwuYz0zOT1zdGF0aWMgaW50IHNldGZsKGludCBmZCwgc3RydWN0IGZpbGUgKiBmaWxwLCB1bnNpZ25lZCBpbnQgYXJnKVxuLS1cbmZzL2ZjbnRsLmMtNTItXHRpZiAoKGFyZyBcdTAwMjYgT19OT0FUSU1FKSBcdTAwMjZcdTAwMjYgIShmaWxwLVx1MDAzZWZfZmxhZ3MgXHUwMDI2IE9fTk9BVElNRSkpXG5mcy9mY250bC5jOjUzOlx0XHRpZiAoIWlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlscCksIGlub2RlKSlcbmZzL2ZjbnRsLmMtNTQtXHRcdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5mcy9mY250bC5jPTM2OT1zdGF0aWMgbG9uZyBmY250bF9zZXRfcndfaGludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZnMvZmNudGwuYy0zNzQtXG5mcy9mY250bC5jOjM3NTpcdGlmICghaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUpKVxuZnMvZmNudGwuYy0zNzYtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZnMvZmlsZV9hdHRyLmM9MzI0PWludCBpb2N0bF9zZXRmbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IF9fdXNlciAqYXJncClcbmZzL2ZpbGVfYXR0ci5jLTMyNS17XG5mcy9maWxlX2F0dHIuYzozMjY6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xuZnMvZmlsZV9hdHRyLmMtMzI3LVx0c3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5O1xuLS1cbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG5mcy9maWxlX2F0dHIuYy0zNTcte1xuZnMvZmlsZV9hdHRyLmM6MzU4Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2ZpbGVfYXR0ci5jLTM1OS1cdHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeTtcbi0tXG5mcy9mdXNlL2Rpci5jPTkzMD1zdGF0aWMgaW50IGZ1c2VfYXRvbWljX29wZW4oc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmVudHJ5LFxuLS1cbmZzL2Z1c2UvZGlyLmMtOTM0LVx0aW50IGVycjtcbmZzL2Z1c2UvZGlyLmM6OTM1Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2Z1c2UvZGlyLmMtOTM2LVx0c3RydWN0IGZ1c2VfY29ubiAqZmMgPSBnZXRfZnVzZV9jb25uKGRpcik7XG4tLVxuZnMvZnVzZS9maWxlLmM9MTUwMz1zdGF0aWMgc3NpemVfdCBmdXNlX2NhY2hlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxuZnMvZnVzZS9maWxlLmMtMTUwNS1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZnVzZS9maWxlLmM6MTUwNjpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XG5mcy9mdXNlL2ZpbGUuYy0xNTA3LVx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVx1MDAzZWZfbWFwcGluZztcbi0tXG5mcy9mdXNlL2ZpbGUuYz0yNzE2PXN0YXRpYyB2b2lkIGZ1c2VfZG9fdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9maWxlLmMtMjcyNi1cbmZzL2Z1c2UvZmlsZS5jOjI3Mjc6XHRmdXNlX2RvX3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfZGVudHJ5KGZpbGUpLCBcdTAwMjZhdHRyLCBmaWxlKTtcbmZzL2Z1c2UvZmlsZS5jLTI3MjgtfVxuLS1cbmZzL2lub2RlLmM9MjM3Nj1zdGF0aWMgaW50IGZpbGVfcmVtb3ZlX3ByaXZzX2ZsYWdzKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvaW5vZGUuYy0yMzg1LVxuZnMvaW5vZGUuYzoyMzg2Olx0a2lsbCA9IGRlbnRyeV9uZWVkc19yZW1vdmVfcHJpdnMoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSk7XG5mcy9pbm9kZS5jLTIzODctXHRpZiAoa2lsbCBcdTAwM2MgMClcbi0tXG5mcy9pbm9kZS5jLTIzOTMtXG5mcy9pbm9kZS5jOjIzOTQ6XHRcdGVycm9yID0gX19yZW1vdmVfcHJpdnMoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSwga2lsbCk7XG5mcy9pbm9kZS5jLTIzOTUtXHR9XG4tLVxuZnMvbG9ja3MuYz0yMTM2PXZmc19zZXRsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCwgaW50IGFyZywgc3RydWN0IGZpbGVfbGVhc2UgKipsZWFzZSwgdm9pZCAqKnByaXYpXG4tLVxuZnMvbG9ja3MuYy0yMTM4LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XG5mcy9sb2Nrcy5jOjIxMzk6XHR2ZnN1aWRfdCB2ZnN1aWQgPSBpX3VpZF9pbnRvX3Zmc3VpZChmaWxlX21udF9pZG1hcChmaWxwKSwgaW5vZGUpO1xuZnMvbG9ja3MuYy0yMTQwLVx0aW50IGVycm9yO1xuLS1cbmZzL29wZW4uYz0xNjQ9aW50IGRvX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IGxlbmd0aCwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmZzL29wZW4uYy0xOTMtXHRzY29wZWRfZ3VhcmQoc3VwZXJfd3JpdGUsIGlub2RlLVx1MDAzZWlfc2IpXG5mcy9vcGVuLmM6MTk0Olx0XHRyZXR1cm4gZG9fdHJ1bmNhdGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSwgbGVuZ3RoLFxuZnMvb3Blbi5jLTE5NS1cdFx0XHRcdCAgIEFUVFJfTVRJTUUgfCBBVFRSX0NUSU1FLCBmaWxlKTtcbi0tXG5mcy9yZW1hcF9yYW5nZS5jPTQxNj1zdGF0aWMgYm9vbCBtYXlfZGVkdXBlX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9yZW1hcF9yYW5nZS5jLTQxNy17XG5mcy9yZW1hcF9yYW5nZS5jOjQxODpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XG5mcy9yZW1hcF9yYW5nZS5jLTQxOS1cdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MTc0ND12b2lkIGNyZWF0ZV9wb3NpeF9yc3BfYnVmKGNoYXIgKmNjLCBzdHJ1Y3Qga3NtYmRfZmlsZSAqZnApXG4tLVxuZnMvc21iL3NlcnZlci9vcGxvY2suYy0xNzQ3LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL29wbG9jay5jOjE3NDg6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9vcGxvY2suYy0xNzQ5LVx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoaWRtYXAsIGlub2RlKTtcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz00MjczPXN0YXRpYyBpbnQgcHJvY2Vzc19xdWVyeV9kaXJfZW50cmllcyhzdHJ1Y3Qgc21iMl9xdWVyeV9kaXJfcHJpdmF0ZSAqcHJpdilcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTQyNzQte1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NDI3NTpcdHN0cnVjdCBtbnRfaWRtYXBcdCppZG1hcCA9IGZpbGVfbW50X2lkbWFwKHByaXYtXHUwMDNlZGlyX2ZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDI3Ni1cdHN0cnVjdCBrc3RhdFx0XHRrc3RhdDtcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz00NTA5PWludCBzbWIyX3F1ZXJ5X2RpcihzdHJ1Y3Qga3NtYmRfd29yayAqd29yaylcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy00NTQ1LVx0aWYgKCEoZGlyX2ZwLVx1MDAzZWRhY2Nlc3MgXHUwMDI2IEZJTEVfTElTVF9ESVJFQ1RPUllfTEUpIHx8XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYzo0NTQ2Olx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZGlyX2ZwLVx1MDAzZWZpbHApLFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDU0Ny1cdFx0XHQgICAgIGZpbGVfaW5vZGUoZGlyX2ZwLVx1MDAzZWZpbHApLFxuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTQ4MTg9c3RhdGljIGludCBzbWIyX2dldF9lYShzdHJ1Y3Qga3NtYmRfd29yayAqd29yaywgc3RydWN0IGtzbWJkX2ZpbGUgKmZwLFxuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTQ4MjctXHRjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aDtcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQ4Mjg6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDgyOS1cbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz01NDMxPXN0YXRpYyBpbnQgZmluZF9maWxlX3Bvc2l4X2luZm8oc3RydWN0IHNtYjJfcXVlcnlfaW5mb19yc3AgKnJzcCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01NDM1LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYzo1NDM2Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cdTAwM2VmaWxwKTtcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTU0MzctXHR2ZnN1aWRfdCB2ZnN1aWQgPSBpX3VpZF9pbnRvX3Zmc3VpZChpZG1hcCwgaW5vZGUpO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTU4ODM9c3RhdGljIGludCBzbWIyX2dldF9pbmZvX3NlYyhzdHJ1Y3Qga3NtYmRfd29yayAqd29yayxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01OTI1LVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NTkyNjpcdGlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01OTI3LVx0aW5vZGUgPSBmaWxlX2lub2RlKGZwLVx1MDAzZWZpbHApO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTYyMzQ9c3RhdGljIGludCBzbWIyX3JlbmFtZShzdHJ1Y3Qga3NtYmRfd29yayAqd29yayxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy02MjczLVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NjI3NDpcdFx0cmMgPSBrc21iZF92ZnNfc2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZnAtXHUwMDNlZmlscCksXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy02Mjc1LVx0XHRcdFx0XHRcdTAwMjZmcC1cdTAwM2VmaWxwLVx1MDAzZWZfcGF0aCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz02MzczPXN0YXRpYyBpbnQgc2V0X2ZpbGVfYmFzaWNfaW5mbyhzdHJ1Y3Qga3NtYmRfZmlsZSAqZnAsXG4tLVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjM4OC1cdGlub2RlID0gZmlsZV9pbm9kZShmaWxwKTtcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjYzODk6XHRpZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjM5MC1cbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz04MzU3PXN0YXRpYyBpbmxpbmUgaW50IGZzY3RsX3NldF9zcGFyc2Uoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHU2NCBpZCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy04Mzc4LVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6ODM3OTpcdGlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy04MzgwLVxuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iX2NvbW1vbi5jPTQ0NT1pbnQga3NtYmRfcG9wdWxhdGVfZG90X2RvdGRvdF9lbnRyaWVzKHN0cnVjdCBrc21iZF93b3JrICp3b3JrLCBpbnQgaW5mb19sZXZlbCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYl9jb21tb24uYy00NTQtXHRzdHJ1Y3Qga3NtYmRfY29ubiAqY29ubiA9IHdvcmstXHUwMDNlY29ubjtcbmZzL3NtYi9zZXJ2ZXIvc21iX2NvbW1vbi5jOjQ1NTpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZGlyLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9zbWJfY29tbW9uLmMtNDU2LVxuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzLmM9MjQ4PXN0YXRpYyBpbnQga3NtYmRfdmZzX3N0cmVhbV9yZWFkKHN0cnVjdCBrc21iZF9maWxlICpmcCwgY2hhciAqYnVmLCBsb2ZmX3QgKnBvcyxcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTI1OC1cdHNhdmVkX2NyZWQgPSBvdmVycmlkZV9jcmVkcyhmcC1cdTAwM2VmaWxwLVx1MDAzZWZfY3JlZCk7XG5mcy9zbWIvc2VydmVyL3Zmcy5jOjI1OTpcdHZfbGVuID0ga3NtYmRfdmZzX2dldGNhc2V4YXR0cihmaWxlX21udF9pZG1hcChmcC1cdTAwM2VmaWxwKSxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMjYwLVx0XHRcdFx0ICAgICAgIGZwLVx1MDAzZWZpbHAtXHUwMDNlZl9wYXRoLmRlbnRyeSxcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTM4NT1zdGF0aWMgaW50IGtzbWJkX3Zmc19zdHJlYW1fd3JpdGUoc3RydWN0IGtzbWJkX2ZpbGUgKmZwLCBjaGFyICpidWYsIGxvZmZfdCAqcG9zLFxuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMzg5LVx0Y2hhciAqc3RyZWFtX2J1ZiA9IE5VTEwsICp3YnVmO1xuZnMvc21iL3NlcnZlci92ZnMuYzozOTA6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci92ZnMuYy0zOTEtXHRzaXplX3Qgc2l6ZTtcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTEwMTU9aW50IGtzbWJkX3Zmc191bmxpbmsoc3RydWN0IGZpbGUgKmZpbHApXG4tLVxuZnMvc21iL3NlcnZlci92ZnMuYy0xMDE5LVx0c3RydWN0IGRlbnRyeSAqZGlyLCAqZGVudHJ5ID0gZmlscC1cdTAwM2VmX3BhdGguZGVudHJ5O1xuZnMvc21iL3NlcnZlci92ZnMuYzoxMDIwOlx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMTAyMS1cbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTE5NTc9aW50IGtzbWJkX3Zmc19zZXRfY29tcHJlc3Npb24oc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHN0cnVjdCBrc21iZF9maWxlICpmcCwgdTE2IGZtdClcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTE5NjEtXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmcC1cdTAwM2VmaWxwLVx1MDAzZWZfcGF0aC5kZW50cnk7XG5mcy9zbWIvc2VydmVyL3Zmcy5jOjE5NjI6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci92ZnMuYy0xOTYzLVx0dTMyIGZsYWdzO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzX2NhY2hlLmM9MzY5PXN0YXRpYyB2b2lkIF9fa3NtYmRfaW5vZGVfY2xvc2Uoc3RydWN0IGtzbWJkX2ZpbGUgKmZwKVxuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzX2NhY2hlLmMtMzkwLVx0XHRcdHNhdmVkX2NyZWQgPSBvdmVycmlkZV9jcmVkcyhmaWxwLVx1MDAzZWZfY3JlZCk7XG5mcy9zbWIvc2VydmVyL3Zmc19jYWNoZS5jOjM5MTpcdFx0XHRlcnIgPSBrc21iZF92ZnNfcmVtb3ZlX3hhdHRyKGZpbGVfbW50X2lkbWFwKGZpbHApLFxuZnMvc21iL3NlcnZlci92ZnNfY2FjaGUuYy0zOTItXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZmaWxwLVx1MDAzZWZfcGF0aCxcbi0tXG5mcy94YXR0ci5jPTY2Nj1pbnQgZmlsZV9zZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGtlcm5lbF94YXR0cl9jdHggKmN0eClcbi0tXG5mcy94YXR0ci5jLTY3MS1cdFx0YXVkaXRfZmlsZShmKTtcbmZzL3hhdHRyLmM6NjcyOlx0XHRlcnJvciA9IGRvX3NldHhhdHRyKGZpbGVfbW50X2lkbWFwKGYpLCBmLVx1MDAzZWZfcGF0aC5kZW50cnksIGN0eCk7XG5mcy94YXR0ci5jLTY3My1cdFx0bW50X2Ryb3Bfd3JpdGVfZmlsZShmKTtcbi0tXG5mcy94YXR0ci5jPTgyMj1zc2l6ZV90IGZpbGVfZ2V0eGF0dHIoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCBrZXJuZWxfeGF0dHJfY3R4ICpjdHgpXG4tLVxuZnMveGF0dHIuYy04MjQtXHRhdWRpdF9maWxlKGYpO1xuZnMveGF0dHIuYzo4MjU6XHRyZXR1cm4gZG9fZ2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZiksIGYtXHUwMDNlZl9wYXRoLmRlbnRyeSwgY3R4KTtcbmZzL3hhdHRyLmMtODI2LX1cbi0tXG5mcy94YXR0ci5jPTEwMzk9c3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4tLVxuZnMveGF0dHIuYy0xMDQ0LVx0XHRhdWRpdF9maWxlKGYpO1xuZnMveGF0dHIuYzoxMDQ1Olx0XHRlcnJvciA9IHJlbW92ZXhhdHRyKGZpbGVfbW50X2lkbWFwKGYpLFxuZnMveGF0dHIuYy0xMDQ2LVx0XHRcdFx0ICAgIGYtXHUwMDNlZl9wYXRoLmRlbnRyeSwga25hbWUtXHUwMDNlbmFtZSk7XG4tLVxuZnMveGZzL3hmc19maWxlLmM9MTI0Mz14ZnNfZmFsbG9jX3NldHNpemUoXG4tLVxuZnMveGZzL3hmc19maWxlLmMtMTI1My1cdFx0cmV0dXJuIDA7XG5mcy94ZnMveGZzX2ZpbGUuYzoxMjU0Olx0cmV0dXJuIHhmc192bl9zZXRhdHRyX3NpemUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfZGVudHJ5KGZpbGUpLFxuZnMveGZzL3hmc19maWxlLmMtMTI1NS1cdFx0XHRcdTAwMjZpYXR0cik7XG4tLVxuZnMveGZzL3hmc19pb2N0bC5jPTgxPXhmc19pb2NfZnNidWxrc3RhdChcbi0tXG5mcy94ZnMveGZzX2lvY3RsLmMtODktXHRcdC5tcFx0XHQ9IG1wLFxuZnMveGZzL3hmc19pb2N0bC5jOjkwOlx0XHQuaWRtYXBcdFx0PSBmaWxlX21udF9pZG1hcChmaWxlKSxcbmZzL3hmcy94ZnNfaW9jdGwuYy05MS1cdFx0Lm9jb3VudFx0XHQ9IDAsXG4tLVxuZnMveGZzL3hmc19pb2N0bC5jPTI2ND14ZnNfaW9jX2J1bGtzdGF0KFxuLS1cbmZzL3hmcy94ZnNfaW9jdGwuYy0yNzItXHRcdC5tcFx0XHRcdD0gbXAsXG5mcy94ZnMveGZzX2lvY3RsLmM6MjczOlx0XHQuaWRtYXBcdFx0XHQ9IGZpbGVfbW50X2lkbWFwKGZpbGUpLFxuZnMveGZzL3hmc19pb2N0bC5jLTI3NC1cdH07XG4tLVxuZnMveGZzL3hmc19pb2N0bDMyLmM9MTk4PXhmc19jb21wYXRfaW9jX2ZzYnVsa3N0YXQoXG4tLVxuZnMveGZzL3hmc19pb2N0bDMyLmMtMjA3LVx0XHQubXBcdFx0PSBtcCxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jOjIwODpcdFx0LmlkbWFwXHRcdD0gZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5mcy94ZnMveGZzX2lvY3RsMzIuYy0yMDktXHRcdC5vY291bnRcdFx0PSAwLFxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD0yNDQwPXN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBmaWxlbmFtZSkgJSA2NCA9PSAwKTtcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQxLVxuaW5jbHVkZS9saW51eC9mcy5oOjI0NDI6c3RhdGljIGlubGluZSBzdHJ1Y3QgbW50X2lkbWFwICpmaWxlX21udF9pZG1hcChjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQzLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MjQ0Nz1zdGF0aWMgaW5saW5lIGJvb2wgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKVxuaW5jbHVkZS9saW51eC9mcy5oLTI0NDgte1xuaW5jbHVkZS9saW51eC9mcy5oOjI0NDk6XHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSk7XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ1MC19XG4tLVxuaW5jbHVkZS9saW51eC9mcy5oPTI2OTQ9c3RhdGljIGlubGluZSBpbnQgZmlsZV9wZXJtaXNzaW9uKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbWFzaylcbmluY2x1ZGUvbGludXgvZnMuaC0yNjk1LXtcbmluY2x1ZGUvbGludXgvZnMuaDoyNjk2Olx0cmV0dXJuIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjY5Ny1cdFx0XHRcdGZpbGVfaW5vZGUoZmlsZSksIG1hc2spO1xuLS1cbnNlY3VyaXR5L2FwcGFybW9yL2RvbWFpbi5jPTkxOT1pbnQgYXBwYXJtb3JfYnBybV9jcmVkc19mb3JfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbnNlY3VyaXR5L2FwcGFybW9yL2RvbWFpbi5jLTkyOC1cdGJvb2wgdW5zYWZlID0gZmFsc2U7XG5zZWN1cml0eS9hcHBhcm1vci9kb21haW4uYzo5Mjk6XHR2ZnN1aWRfdCB2ZnN1aWQgPSBpX3VpZF9pbnRvX3Zmc3VpZChmaWxlX21udF9pZG1hcChicHJtLVx1MDAzZWZpbGUpLFxuc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMtOTMwLVx0XHRcdFx0XHQgICAgZmlsZV9pbm9kZShicHJtLVx1MDAzZWZpbGUpKTtcbi0tXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmM9NDgzPXN0YXRpYyBpbnQgX19maWxlX3BhdGhfcGVybShjb25zdCBjaGFyICpvcCwgY29uc3Qgc3RydWN0IGNyZWQgKnN1YmpfY3JlZCxcbi0tXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmMtNDg5LVx0c3RydWN0IGFhX3Blcm1zIHBlcm1zID0ge307XG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmM6NDkwOlx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmMtNDkxLVx0XHRcdFx0XHQgICAgZmlsZV9pbm9kZShmaWxlKSk7XG4tLVxuc2VjdXJpdHkvYXBwYXJtb3IvbHNtLmM9NDYxPXN0YXRpYyBpbnQgYXBwYXJtb3JfZmlsZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbnNlY3VyaXR5L2FwcGFybW9yL2xzbS5jLTQ4NC1cdGlmICghdW5jb25maW5lZChsYWJlbCkpIHtcbnNlY3VyaXR5L2FwcGFybW9yL2xzbS5jOjQ4NTpcdFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbnNlY3VyaXR5L2FwcGFybW9yL2xzbS5jLTQ4Ni1cdFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XG4tLVxuc2VjdXJpdHkvY29tbW9uY2FwLmM9NzYzPXN0YXRpYyBpbnQgZ2V0X2ZpbGVfY2FwcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5zZWN1cml0eS9jb21tb25jYXAuYy03ODQtXG5zZWN1cml0eS9jb21tb25jYXAuYzo3ODU6XHRyYyA9IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5zZWN1cml0eS9jb21tb25jYXAuYy03ODYtXHRcdFx0XHQgICAgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZ2Y2Fwcyk7XG4tLVxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTI1ND1zdGF0aWMgaW50IHByb2Nlc3NfbWVhc3VyZW1lbnQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkLFxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy0yODItXHQgKi9cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYzoyODM6XHRhY3Rpb24gPSBpbWFfZ2V0X2FjdGlvbihmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUsIGNyZWQsIHByb3AsXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtMjg0LVx0XHRcdFx0bWFzaywgZnVuYywgXHUwMDI2cGNyLCBcdTAwMjZ0ZW1wbGF0ZV9kZXNjLCBOVUxMLFxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYz01NDM9c3RhdGljIGludCBpbWFfZmlsZV9tcHJvdGVjdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyByZXFwcm90LFxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy01NjMtXHRpbm9kZSA9IGZpbGVfaW5vZGUodm1hLVx1MDAzZXZtX2ZpbGUpO1xuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjU2NDpcdGFjdGlvbiA9IGltYV9nZXRfYWN0aW9uKGZpbGVfbW50X2lkbWFwKHZtYS1cdTAwM2V2bV9maWxlKSwgaW5vZGUsXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtNTY1LVx0XHRcdFx0Y3VycmVudF9jcmVkKCksIFx1MDAyNnByb3AsIE1BWV9FWEVDLCBNTUFQX0NIRUNLLFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTU2Ni1cdFx0XHRcdFx1MDAyNnBjciwgXHUwMDI2dGVtcGxhdGUsIE5VTEwsIE5VTEwpO1xuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjU2NzpcdGFjdGlvbiB8PSBpbWFfZ2V0X2FjdGlvbihmaWxlX21udF9pZG1hcCh2bWEtXHUwMDNldm1fZmlsZSksIGlub2RlLFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTU2OC1cdFx0XHRcdCBjdXJyZW50X2NyZWQoKSwgXHUwMDI2cHJvcCwgTUFZX0VYRUMsXG4tLVxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTExNzY9dm9pZCBpbWFfa2V4ZWNfY21kbGluZShpbnQga2VybmVsX2ZkLCBjb25zdCB2b2lkICpidWYsIGludCBzaXplKVxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy0xMTg0LVxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjExODU6XHRwcm9jZXNzX2J1ZmZlcl9tZWFzdXJlbWVudChmaWxlX21udF9pZG1hcChmZF9maWxlKGYpKSwgZmlsZV9pbm9kZShmZF9maWxlKGYpKSxcbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy0xMTg2LVx0XHRcdFx0ICAgYnVmLCBzaXplLCBcJiMzNDtrZXhlYy1jbWRsaW5lXCYjMzQ7LCBLRVhFQ19DTURMSU5FLCAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzE3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWFkdmlzZSBhbmQgTWluY29yZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBtbS9taW5jb3JlLmNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgLCBhbmQgYGRvX21pbmNvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlci4gSG1tLCBgbWFkdmlzZV9wYWdlb3V0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpa2VseSBjYWxsZWQgd2l0aGluIHRoZSBzYW1lIGZpbGUuIExldCYjMzk7cyBzZWUuLi4gaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBpbnZva2VkIGJ5IGBtYWR2aXNlX3ZtYV9iZWhhdmlvcmAgb3IgcGVyaGFwcyBkaXJlY3RseSBieSBgZG9fbWFkdmlzZWAuIEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdC4KCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBib3RoIGBtYWR2aXNlX3BhZ2VvdXRgIGFuZCBgZG9fbWluY29yZWAgY2FyZWZ1bGx5LiBJIHJlY2FsbCBgZG9fbWluY29yZWAgaXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBiZWhpbmQgdGhlIGBzeXNfbWluY29yZWAgc3lzdGVtIGNhbGwsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgZm9yIGBtYWR2aXNlX3BhZ2VvdXRgLiBJIHN1c3BlY3QgSSYjMzk7bGwgZmluZCBpdCB3aXRoaW4gYG1hZHZpc2Vfdm1hX2JlaGF2aW9yYCBvciBzb21lIHNpbWlsYXIgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIGluIGBtbS9tYWR2aXNlLmNgLiBPa2F5LCBsZXQmIzM5O3Mgb3BlbiB0aGF0IGZpbGUgYW5kIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hZHZpc2VfcGFnZW91dCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tYWR2aXNlLmM9NTk1PXN0YXRpYyBsb25nIG1hZHZpc2VfY29sZChzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtNjEwLVxubW0vbWFkdmlzZS5jOjYxMTpzdGF0aWMgdm9pZCBtYWR2aXNlX3BhZ2VvdXRfcGFnZV9yYW5nZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLFxubW0vbWFkdmlzZS5jLTYxMi1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vbWFkdmlzZS5jLTYyNS1cbm1tL21hZHZpc2UuYzo2MjY6c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxubW0vbWFkdmlzZS5jLTYyNy17XG4tLVxubW0vbWFkdmlzZS5jLTY0NS1cdHRsYl9nYXRoZXJfbW11KFx1MDAyNnRsYiwgbWFkdl9iZWhhdmlvci1cdTAwM2VtbSk7XG5tbS9tYWR2aXNlLmM6NjQ2Olx0bWFkdmlzZV9wYWdlb3V0X3BhZ2VfcmFuZ2UoXHUwMDI2dGxiLCB2bWEsIFx1MDAyNm1hZHZfYmVoYXZpb3ItXHUwMDNlcmFuZ2UpO1xubW0vbWFkdmlzZS5jLTY0Ny1cdHRsYl9maW5pc2hfbW11KFx1MDAyNnRsYik7XG4tLVxubW0vbWFkdmlzZS5jPTEzMzg9c3RhdGljIGludCBtYWR2aXNlX3ZtYV9iZWhhdmlvcihzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtMTM1Ni1cdGNhc2UgTUFEVl9QQUdFT1VUOlxubW0vbWFkdmlzZS5jOjEzNTc6XHRcdHJldHVybiBtYWR2aXNlX3BhZ2VvdXQobWFkdl9iZWhhdmlvcik7XG5tbS9tYWR2aXNlLmMtMTM1OC1cdGNhc2UgTUFEVl9GUkVFOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU5NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUGFnZW91dCBhbmQgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhlIHBhZ2VvdXQgcHJvY2VzcyDigJMgYGRvX21pbmNvcmVgIGFuZCBgbWFkdmlzZV9wYWdlb3V0YC4gQnV0IGhvbGQgb24sIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUgc2xpZ2h0bHkuIExvb2tpbmcgZGVlcGVyLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBzZWVtcyBpbXBvcnRhbnQgYXMgd2VsbCwgYmVjYXVzZSBpdCBjYWxscyBgY2FuX2RvX2ZpbGVfcGFnZW91dGAuIE5vdywgSSByZWNhbGwgdGhhdCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBmdW5jdGlvbnMgYXMgYSBwYWdlIHdhbGsgY2FsbGJhY2suIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCBpdHNlbGYuIEnigJlsbCBuYXZpZ2F0ZSB0byBgbW0vbWFkdmlzZS5jYCB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgd2l0aGluIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nhbl9kb19maWxlX3BhZ2VvdXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWFkdmlzZS5jPTI4MT1zdGF0aWMgbG9uZyBtYWR2aXNlX3dpbGxuZWVkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxuLS1cbm1tL21hZHZpc2UuYy0zMjgtXG5tbS9tYWR2aXNlLmM6MzI5OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxubW0vbWFkdmlzZS5jLTMzMC17XG4tLVxubW0vbWFkdmlzZS5jPTM1Mz1zdGF0aWMgaW50IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZShwbWRfdCAqcG1kLFxuLS1cbm1tL21hZHZpc2UuYy0zNzMtXHRwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0IFx1MDAyNlx1MDAyNiAhdm1hX2lzX2Fub255bW91cyh2bWEpIFx1MDAyNlx1MDAyNlxubW0vbWFkdmlzZS5jOjM3NDpcdFx0XHRcdFx0IWNhbl9kb19maWxlX3BhZ2VvdXQodm1hKTtcbm1tL21hZHZpc2UuYy0zNzUtXG4tLVxubW0vbWFkdmlzZS5jPTYyNj1zdGF0aWMgbG9uZyBtYWR2aXNlX3BhZ2VvdXQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXG4tLVxubW0vbWFkdmlzZS5jLTYzOS1cdCAqL1xubW0vbWFkdmlzZS5jOjY0MDpcdGlmICghdm1hX2lzX2Fub255bW91cyh2bWEpIFx1MDAyNlx1MDAyNiAoIWNhbl9kb19maWxlX3BhZ2VvdXQodm1hKSBcdTAwMjZcdTAwMjZcbm1tL21hZHZpc2UuYy02NDEtXHRcdFx0XHQodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9NQVlTSEFSRSkpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIzMgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGb2N1c2luZyBNeSBBbmFseXNpcyBvZiBNZW1vcnkgTWFuYWdlbWVudCoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlciBpbnRvIHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgdG9vbHMgYW5kIGJlaGF2aW9ycy4gSSYjMzk7dmUgZ290IGEgY291cGxlIG9mIGtleSBhcmVhcyB0byBjb25jZW50cmF0ZSBvbi4gSXQgbG9va3MgbGlrZSBgbWFkdmlzZV9wYWdlb3V0YCBhbmQgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgYXJlIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiBwYWdlb3V0IG1lY2hhbmlzbXMgYW5kIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHRoZW0uIFRob3NlIGZ1bmN0aW9ucyBsaWtlbHkgaG9sZCB0aGUgY29yZSBsb2dpYyBJJiMzOTttIGxvb2tpbmcgZm9yLgoKVGhlbiB0aGVyZSYjMzk7cyBgbWluY29yZS5jYCwgYW5kIHNwZWNpZmljYWxseSBgZG9fbWluY29yZWAuIFRoYXQgc2VlbXMgbGlrZSBhbiBvYnZpb3VzIGZ1bmN0aW9uIHRvIHN0dWR5LiBUaGlzIHdvdWxkIGJlIGNlbnRyYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGBtaW5jb3JlYCBzeXN0ZW0gY2FsbCB3b3JrcyB0byBkZXRlcm1pbmUgcmVzaWRlbnQgbWVtb3J5IHBhZ2VzLiBJIHRoaW5rIEkgd2lsbCBzdHVkeSBob3cgdGhhdCBzeXN0ZW0gY2FsbCBpcyBpbXBsZW1lbnRlZCwgc28gdGhhdCBJIGhhdmUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIHVzZXIgYWNjZXNzZXMgbWVtb3J5IHJlc2lkZW5jZSBpbmZvcm1hdGlvbi4KCkFuZCBmaW5hbGx5LCBzb21ldGhpbmcgZWxzZSB0aGF0IGNhdWdodCBteSBleWUgaXMgYGNhbl9kb19jYWNoZXN0YXRgIGluIGBtbS9maWxlbWFwLmNgLiBUaGF0IGZ1bmN0aW9uICpjb3VsZCogYmUgYSByZWxhdGVkIGFyZWEgZm9yIGNvbnNpZGVyYXRpb24gYXMgd2VsbCwgc2luY2UgdGhhdCBmaWxlIGlzIHJlbGF0ZWQgdG8gYGZpbGVtYXBgLCB3aGljaCByZWxhdGVzIHRvIGNhY2hlZCBmaWxlIGRhdGEgdGhhdCB3b3VsZCBhbHNvIGJlIHBhZ2VkIG91dCBvciBtYW5hZ2VkIGRpZmZlcmVudGx5IGluIHRoZSBzeXN0ZW0uIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoYXQsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIGltcGxpY2F0aW9ucyBvbiBwYWdlb3V0L2NhY2hlc3RhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2FuX2RvX2NhY2hlc3RhdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9maWxlbWFwLmM9NDYwMj1zdGF0aWMgdm9pZCBmaWxlbWFwX2NhY2hlc3RhdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9maWxlbWFwLmMtNDcwMi0gKi9cbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxubW0vZmlsZW1hcC5jLTQ3MDQte1xuLS1cbm1tL2ZpbGVtYXAuYz00NzQ2PVNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4tLVxubW0vZmlsZW1hcC5jLTQ3NjYtXG5tbS9maWxlbWFwLmM6NDc2NzpcdGlmICghY2FuX2RvX2NhY2hlc3RhdChmZF9maWxlKGYpKSlcbm1tL2ZpbGVtYXAuYy00NzY4LVx0XHRyZXR1cm4gLUVQRVJNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc5NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyBmb3IgSWRlbnRpZnlpbmcgUmVsZXZhbnQgRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBmdW5jdGlvbnMgcmVsYXRlZCB0byBjYWNoZSBzdGF0aXN0aWNzLiBJcyBpdCBgc3lzX2NhY2hlc3RhdGAsIGBfX3g2NF9zeXNfY2FjaGVzdGF0YCwgb3IgcGVyaGFwcyBgZmlsZW1hcF9jYWNoZXN0YXRgPyBObywgd2FpdCBhIG1pbnV0ZSwgYGNhbl9kb19jYWNoZXN0YXRgIGlzICpjYWxsZWQqIGluIGBTWVNDQUxMX0RFRklORTQoY2FjaGVzdGF0LCAuLi4pYCB3aGljaCAqaXMqIGBzeXNfY2FjaGVzdGF0YC4gVGhhdCBzZXR0bGVzIGl0LgoKU28sIHRoZSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgZG9fbWluY29yZWAsIGBtYWR2aXNlX3BhZ2VvdXRgLCBhbmQgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAuCgpBaCwgYnV0IHRoZSBvcmlnaW5hbCB0aG91Z2h0IGhhZCBgc3lzX2NhY2hlc3RhdGAgYXMgYSBzeXNjYWxsLCBhbmQgc3l6a2FsbGVyIHVzdWFsbHkgYXR0YWNrcyBzeXNjYWxscyBkaXJlY3RseS4gU28gbWF5YmUgdGhlIGZvY3VzIHNob3VsZCBiZSBgZmlsZW1hcF9jYWNoZXN0YXRgPyBObywgbm8sIGBjYW5fZG9fY2FjaGVzdGF0YCAqaXMqIHdpdGhpbiBgc3lzX2NhY2hlc3RhdGAsIHNvIHRoYXQmIzM5O3MgdGhlIHBhdGguIEkmIzM5O2xsIGp1c3Qga2VlcCB0aGUgcHJpb3IgbGlzdCBvZiBmdW5jdGlvbnM6IGBkb19taW5jb3JlYCwgYG1hZHZpc2VfcGFnZW91dGAsIGFuZCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYC4KCk5vdywgY29uZmlndXJhdGlvbnMuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhdCBwbGF5LiBJZG1hcHBlZCBtb3VudHMgYXJlIGVuYWJsZWQgYnkgYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgLiBCdXQgdGhvc2UgYXJlIGdlbmVyYWwgYW5kIG5vdCBzcGVjaWZpYyB0byB0aGlzIHBhdGNoLgoKSXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBgbWFkdmlzZWAgb3IgYG1pbmNvcmVgPyBQZXJoYXBzIGBDT05GSUdfQURWSVNFX1NZU0NBTExTYD8gVGltZSB0byBkaWcgaW50byBgbW0vS2NvbmZpZ2Agb3IgYGluaXQvS2NvbmZpZ2AgYW5kIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQURWSVNFX1NZU0NBTExTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xOTM3PWNvbmZpZyBJT19VUklOR19NT0NLX0ZJTEVcbi0tXG5pbml0L0tjb25maWctMTk0Ny1cbmluaXQvS2NvbmZpZzoxOTQ4OmNvbmZpZyBBRFZJU0VfU1lTQ0FMTFNcbmluaXQvS2NvbmZpZy0xOTQ5LVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFkdmlzZS9mYWR2aXNlIHN5c2NhbGxzXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU1NQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkNvbnNpZGVyaW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBNZW1vcnkgTWFuYWdlbWVudCoqCgpSaWdodCwgc28gSSYjMzk7bSBldmFsdWF0aW5nIGtlcm5lbCBjb25maWd1cmF0aW9ucyBhbmQgaW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsIGluY2x1ZGluZyBgQURWSVNFX1NZU0NBTExTYCBpcyBhIHNvbGlkIG1vdmUuIEl0IHByb3ZpZGVzIGltcG9ydGFudCBoaW50cyB0byB0aGUga2VybmVsIGFib3V0IGhvdyB3ZSBleHBlY3QgdG8gYWNjZXNzIG1lbW9yeSBhbmQgdGhhdCYjMzk7cyBnZW5lcmFsbHkgYSBwZXJmb3JtYW5jZSB3aW4uIEJ1dCB0aGF0IGxlYWRzIG1lIHRvIHRoaW5rIGFib3V0IGBtaW5jb3JlYCwgYW5kIGhvdyBpdCByZWxhdGVzLiBJcyB0aGVyZSBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlZGljYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgYG1pbmNvcmVgIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIHRoZSBjdXJyZW50IGJ1aWxkIGluY2x1ZGVzIHRoYXQgYWJpbGl0eSBhbmQgaWYgbm90LCBob3cgZWFzaWx5IGl0IGNhbiBiZSBpbnRyb2R1Y2VkLiBUaGF0IGtpbmQgb2YgaW5zaWdodCBkaXJlY3RseSBpbmZsdWVuY2VzIG15IG5leHQgc3RlcHMgaW4gdGhlIGJ1aWxkIGFuZCBvcHRpbWl6YXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUlOQ09SRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzczCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgQnVpbGQgUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG1pbmNvcmUub2AgaXMgYmVpbmcgYnVpbHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBtZW1vcnkgbWFuYWdlbWVudC1yZWxhdGVkIG9iamVjdCBmaWxlcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVmaW5lZCwgb3IgYXQgbGVhc3QgbGlua2VkLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIHVuZGVyIHRoZSBgbW0vYCBkaXJlY3RvcnksIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3Iga2VybmVsIGNvZGUuIE1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZXJlLCBhcyB0aGUgbWFrZWZpbGVzIG9yY2hlc3RyYXRlIHRoZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyBwcm9jZXNzLCBzbyBpdCYjMzk7cyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCByZWNpcGUgZm9yIGEgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgbWFrZWZpbGUgdGVsbHMgdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pbmNvcmVcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTM2PW1tdS15XHRcdFx0Oj0gbm9tbXUub1xubW0vTWFrZWZpbGU6Mzc6bW11LSQoQ09ORklHX01NVSlcdDo9IGhpZ2htZW0ubyBtZW1vcnkubyBtaW5jb3JlLm8gXFxcbm1tL01ha2VmaWxlLTM4LVx0XHRcdCAgIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDU4CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGxhaW5pbmcgYWJvdXQgYG1pbmNvcmUub2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBpc3N1ZSBib2lscyBkb3duIHRvIGBDT05GSUdfTU1VYC4gQnV0IGhvbGQgb24sIGlzbiYjMzk7dCBgQ09ORklHX01NVWAgYSBnaXZlbiBmb3IgYWxsIG9mIG91ciB0YXJnZXQgcGxhdGZvcm1zPyBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGlzLiBXZSYjMzk7dmUgYWx3YXlzIG5lZWRlZCBhIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXQsIHNvIHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucywgdGhvdWdoLCBhbmQgSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNvbmZpcm0gaXQgaW4gb3VyIGJhc2UgY29uZmlnIGZpbGVzLiBJdCYjMzk7cyB1c3VhbGx5IHRoZSBzaW1wbGUgdGhpbmdzIHRoYXQgdHJpcCB1cyB1cC4KCk5vdywgd2hhdCB3YXMgdGhhdCBvdGhlciBtb2R1bGUgdGhlIGJ1aWxkIHdhcyBncnVtYmxpbmcgYWJvdXQ/IE9oIHllYWgsIGBjYWNoZXN0YXRgLiBEb2VzIGBjYWNoZXN0YXRgIHJlbHkgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSSBzaG91bGQgcXVpY2tseSBzY2FuIHRoZSBLY29uZmlnIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHJlbGV2YW50IG9wdGlvbiBJJiMzOTt2ZSBvdmVybG9va2VkLCBiZWNhdXNlIEkgYW0gZmFpcmx5IGNlcnRhaW4gSSBoYXZlIG5ldmVyIGRlYWx0IHdpdGggaXQgYmVmb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYWNoZXN0YXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9NTcxMz1TOlx0TWFpbnRhaW5lZFxuTUFJTlRBSU5FUlM6NTcxNDpGOlx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmNcbk1BSU5UQUlORVJTLTU3MTUtXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDkyLTU2MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfbmlfc3lzY2FsbFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDkzOjU2MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTQtNTYyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00NjctNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6NDY4OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00NjktNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQ2NC00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQ2NTo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00NjYtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Mi00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1Mzo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTQtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1OC00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1OTo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjAtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zOTEtNDUwXHRuMzJcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzkyOjQ1MVx0bjMyXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zOTMtNDUyXHRuMzJcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjctNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzY4OjQ1MVx0bjY0XHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjktNDUyXHRuNjRcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NDAtNDUwXHRvMzJcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6NDQxOjQ1MVx0bzMyXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NDItNDUyXHRvMzJcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUxLTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTI6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTU0My00NTAgXHRub3NwdVx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU0NDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NDUtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OS00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODEtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTYtNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU3OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NTgtNDUwXHRpMzg2XHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ1OTo0NTFcdGkzODZcdGNhY2hlc3RhdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjAtNDUyXHRpMzg2XHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM3Ny00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzc4OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc5LTQ1Mlx0Y29tbW9uXHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MjMtNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQyNDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNS00NTJcdGNvbW1vblx0ZmNobW9kYXQyXHRcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD03ND1lbnVtIGxhbmRsb2NrX3J1bGVfdHlwZTtcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo3NTpzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjc2OnN0cnVjdCBjYWNoZXN0YXQ7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNzctc3RydWN0IHN0YXRtb3VudDtcbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9OTk1PWFzbWxpbmthZ2UgbG9uZyBzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTk5Ny1cdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjk5ODphc21saW5rYWdlIGxvbmcgc3lzX2NhY2hlc3RhdCh1bnNpZ25lZCBpbnQgZmQsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6OTk5Olx0XHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIF9fdXNlciAqY3N0YXRfcmFuZ2UsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6MTAwMDpcdFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKmNzdGF0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTEwMDEtYXNtbGlua2FnZSBsb25nIHN5c19tYXBfc2hhZG93X3N0YWNrKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuLS1cbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD04MTQ9X19TWVNDQUxMKF9fTlJfc2V0X21lbXBvbGljeV9ob21lX25vZGUsIHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZSlcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4MTU6I2RlZmluZSBfX05SX2NhY2hlc3RhdCA0NTFcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4MTY6X19TWVNDQUxMKF9fTlJfY2FjaGVzdGF0LCBzeXNfY2FjaGVzdGF0KVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTgxNy0jZGVmaW5lIF9fTlJfZmNobW9kYXQyIDQ1MlxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDUtXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjQ2OnN0cnVjdCBjYWNoZXN0YXRfcmFuZ2Uge1xuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC00Ny1cdF9fdTY0IG9mZjtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oLTUwLVxuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaDo1MTpzdHJ1Y3QgY2FjaGVzdGF0IHtcbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNTItXHRfX3U2NCBucl9jYWNoZTtcbi0tXG5pbml0L0tjb25maWc9MjA0MT1jb25maWcgQ0FDSEVTVEFUX1NZU0NBTExcbmluaXQvS2NvbmZpZzoyMDQyOlx0Ym9vbCBcJiMzNDtFbmFibGUgY2FjaGVzdGF0KCkgc3lzdGVtIGNhbGxcJiMzNDsgaWYgRVhQRVJUXG5pbml0L0tjb25maWctMjA0My1cdGRlZmF1bHQgeVxuaW5pdC9LY29uZmlnLTIwNDQtXHRoZWxwXG5pbml0L0tjb25maWc6MjA0NTpcdCAgRW5hYmxlIHRoZSBjYWNoZXN0YXQgc3lzdGVtIGNhbGwsIHdoaWNoIHF1ZXJpZXMgdGhlIHBhZ2UgY2FjaGVcbmluaXQvS2NvbmZpZy0yMDQ2LVx0ICBzdGF0aXN0aWNzIG9mIGEgZmlsZSAobnVtYmVyIG9mIGNhY2hlZCBwYWdlcywgZGlydHkgcGFnZXMsXG4tLVxua2VybmVsL3N5c19uaS5jPTE5NT1DT05EX1NZU0NBTEwoc2V0X21lbXBvbGljeV9ob21lX25vZGUpO1xua2VybmVsL3N5c19uaS5jOjE5NjpDT05EX1NZU0NBTEwoY2FjaGVzdGF0KTtcbmtlcm5lbC9zeXNfbmkuYy0xOTctQ09ORF9TWVNDQUxMKG1zZWFsKTtcbi0tXG5tbS9maWxlbWFwLmM9NDU4Nz1FWFBPUlRfU1lNQk9MX0dQTChmaWxlbWFwX2ludmFsaWRhdGVfaW5vZGUpO1xuLS1cbm1tL2ZpbGVtYXAuYy00NTkwLS8qKlxubW0vZmlsZW1hcC5jOjQ1OTE6ICogZmlsZW1hcF9jYWNoZXN0YXQoKSAtIGNvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIG1hcHBpbmdcbm1tL2ZpbGVtYXAuYy00NTkyLSAqIEBtYXBwaW5nOlx0VGhlIG1hcHBpbmcgdG8gY29tcHV0ZSB0aGUgc3RhdGlzdGljcyBmb3IuXG4tLVxubW0vZmlsZW1hcC5jLTQ1OTQtICogQGxhc3RfaW5kZXg6XHRUaGUgZmluYWwgcGFnZSBpbmRleCAoaW5jbHVzaXZlKS5cbm1tL2ZpbGVtYXAuYzo0NTk1OiAqIEBjczpcdHRoZSBjYWNoZXN0YXQgc3RydWN0IHRvIHdyaXRlIHRoZSByZXN1bHQgdG8uXG5tbS9maWxlbWFwLmMtNDU5Ni0gKlxuLS1cbm1tL2ZpbGVtYXAuYy00NjAxLSAqL1xubW0vZmlsZW1hcC5jOjQ2MDI6c3RhdGljIHZvaWQgZmlsZW1hcF9jYWNoZXN0YXQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5tbS9maWxlbWFwLmM6NDYwMzpcdFx0cGdvZmZfdCBmaXJzdF9pbmRleCwgcGdvZmZfdCBsYXN0X2luZGV4LCBzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbm1tL2ZpbGVtYXAuYy00NjA0LXtcbi0tXG5tbS9maWxlbWFwLmMtNDcwMi0gKi9cbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxubW0vZmlsZW1hcC5jLTQ3MDQte1xuLS1cbm1tL2ZpbGVtYXAuYy00NzEyLS8qXG5tbS9maWxlbWFwLmM6NDcxMzogKiBUaGUgY2FjaGVzdGF0KDIpIHN5c3RlbSBjYWxsLlxubW0vZmlsZW1hcC5jLTQ3MTQtICpcbm1tL2ZpbGVtYXAuYzo0NzE1OiAqIGNhY2hlc3RhdCgpIHJldHVybnMgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIGZpbGUgaW4gdGhlXG5tbS9maWxlbWFwLmMtNDcxNi0gKiBieXRlcyByYW5nZSBzcGVjaWZpZWQgYnkgYG9mZmAgYW5kIGBsZW5gOiBudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLFxuLS1cbm1tL2ZpbGVtYXAuYy00NzM0LSAqXG5tbS9maWxlbWFwLmM6NDczNTogKiBCZWNhdXNlIHRoZSBzdGF0dXMgb2YgYSBwYWdlIGNhbiBjaGFuZ2UgYWZ0ZXIgY2FjaGVzdGF0KCkgY2hlY2tzIGl0XG5tbS9maWxlbWFwLmMtNDczNi0gKiBidXQgYmVmb3JlIGl0IHJldHVybnMgdG8gdGhlIGFwcGxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgdmFsdWVzIG1heVxuLS1cbm1tL2ZpbGVtYXAuYy00NzQ1LSAqL1xubW0vZmlsZW1hcC5jOjQ3NDY6U1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcbm1tL2ZpbGVtYXAuYzo0NzQ3Olx0XHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIF9fdXNlciAqLCBjc3RhdF9yYW5nZSxcbm1tL2ZpbGVtYXAuYzo0NzQ4Olx0XHRzdHJ1Y3QgY2FjaGVzdGF0IF9fdXNlciAqLCBjc3RhdCwgdW5zaWduZWQgaW50LCBmbGFncylcbm1tL2ZpbGVtYXAuYy00NzQ5LXtcbi0tXG5tbS9maWxlbWFwLmMtNDc1MS1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nO1xubW0vZmlsZW1hcC5jOjQ3NTI6XHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIGNzcjtcbm1tL2ZpbGVtYXAuYzo0NzUzOlx0c3RydWN0IGNhY2hlc3RhdCBjcztcbm1tL2ZpbGVtYXAuYy00NzU0LVx0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcbi0tXG5tbS9maWxlbWFwLmMtNDc1OS1cdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZjc3IsIGNzdGF0X3JhbmdlLFxubW0vZmlsZW1hcC5jOjQ3NjA6XHRcdFx0c2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UpKSlcbm1tL2ZpbGVtYXAuYy00NzYxLVx0XHRyZXR1cm4gLUVGQVVMVDtcbi0tXG5tbS9maWxlbWFwLmMtNDc2Ni1cbm1tL2ZpbGVtYXAuYzo0NzY3Olx0aWYgKCFjYW5fZG9fY2FjaGVzdGF0KGZkX2ZpbGUoZikpKVxubW0vZmlsZW1hcC5jLTQ3NjgtXHRcdHJldHVybiAtRVBFUk07XG4tLVxubW0vZmlsZW1hcC5jLTQ3NzUtXHRcdGNzci5sZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3Iub2ZmICYjNDM7IGNzci5sZW4gLSAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbm1tL2ZpbGVtYXAuYzo0Nzc2Olx0bWVtc2V0KFx1MDAyNmNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xubW0vZmlsZW1hcC5jLTQ3NzctXHRtYXBwaW5nID0gZmRfZmlsZShmKS1cdTAwM2VmX21hcHBpbmc7XG5tbS9maWxlbWFwLmM6NDc3ODpcdGZpbGVtYXBfY2FjaGVzdGF0KG1hcHBpbmcsIGZpcnN0X2luZGV4LCBsYXN0X2luZGV4LCBcdTAwMjZjcyk7XG5tbS9maWxlbWFwLmMtNDc3OS1cbm1tL2ZpbGVtYXAuYzo0NzgwOlx0aWYgKGNvcHlfdG9fdXNlcihjc3RhdCwgXHUwMDI2Y3MsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSkpXG5tbS9maWxlbWFwLmMtNDc4MS1cdFx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxubW0vd29ya2luZ3NldC5jPTQzMD1ib29sIHdvcmtpbmdzZXRfdGVzdF9yZWNlbnQodm9pZCAqc2hhZG93LCBib29sIGZpbGUsIGJvb2wgKndvcmtpbmdzZXQsXG4tLVxubW0vd29ya2luZ3NldC5jLTQ4Mi1cdCAqIE5vdGUgdGhhdCB3b3JraW5nc2V0X3Rlc3RfcmVjZW50KCkgaXRzZWxmIG1pZ2h0IGJlIGNhbGxlZCBpbiBSQ1UgcmVhZFxubW0vd29ya2luZ3NldC5jOjQ4MzpcdCAqIHNlY3Rpb24gKGZvciBlLmcsIGluIGNhY2hlc3RhdCkgLSB0aGVzZSBjYWxsZXJzIG5lZWQgdG8gc2tpcCBmbHVzaGluZ1xubW0vd29ya2luZ3NldC5jLTQ4NC1cdCAqIHN0YXRzICh2aWEgdGhlIGZsdXNoIGFyZ3VtZW50KS5cbi0tXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM5My00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5zY3JpcHRzL3N5c2NhbGwudGJsOjM5NDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuc2NyaXB0cy9zeXNjYWxsLnRibC0zOTUtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODE0PV9fU1lTQ0FMTChfX05SX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlLCBzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGUpXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE1OiNkZWZpbmUgX19OUl9jYWNoZXN0YXQgNDUxXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE2Ol9fU1lTQ0FMTChfX05SX2NhY2hlc3RhdCwgc3lzX2NhY2hlc3RhdClcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04MTctI2RlZmluZSBfX05SX2ZjaG1vZGF0MiA0NTJcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oLTQ1LVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaDo0NjpzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIHtcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDctXHRfX3U2NCBvZmY7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC01MC1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmg6NTE6c3RydWN0IGNhY2hlc3RhdCB7XG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oLTUyLVx0X191NjQgbnJfY2FjaGU7XG4tLVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ5Mi01NjBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX25pX3N5c2NhbGxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTM6NTYxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00OTQtNTYyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ2Ny00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ2ODo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NjktNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDY0LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NjU6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjYtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzY3LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibDozNjg6NDUxXHRuNjRcdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjktNDUyXHRuNjRcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1MS00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1Mjo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NDMtNDUwIFx0bm9zcHVcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTQ0OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NDUtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzktNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzgwOjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODEtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU2LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTc6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk4LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ1OC00NTBcdGkzODZcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NTk6NDUxXHRpMzg2XHRjYWNoZXN0YXRcdFx0c3lzX2NhY2hlc3RhdFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjAtNDUyXHRpMzg2XHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc3LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjM3ODo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc5LTQ1Mlx0Y29tbW9uXHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIzLTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDI0OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNS00NTJcdGNvbW1vblx0ZmNobW9kYXQyXHRcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzkzLTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6Mzk0OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTM5NS00NTJcdGNvbW1vblx0ZmNobW9kYXQyXHRcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlPTc9VEFSR0VUUyAmIzQzOz0gYnJlYWtwb2ludHNcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlOjg6VEFSR0VUUyAmIzQzOz0gY2FjaGVzdGF0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9NYWtlZmlsZS05LVRBUkdFVFMgJiM0Mzs9IGNhcGFiaWxpdGllc1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC8uZ2l0aWdub3JlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZToyOnRlc3RfY2FjaGVzdGF0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZS0zLXRtcHNobWNzdGF0XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L01ha2VmaWxlOjI6VEVTVF9HRU5fUFJPR1MgOj0gdGVzdF9jYWNoZXN0YXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC9NYWtlZmlsZS0zLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGV2X2ZpbGVzW10gPSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjctXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyODp2b2lkIHByaW50X2NhY2hlc3RhdChzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMwLVx0a3NmdF9wcmludF9tc2coXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMTpcdFwmIzM0O1VzaW5nIGNhY2hlc3RhdDogQ2FjaGVkOiAlbGx1LCBEaXJ0eTogJWxsdSwgV3JpdGViYWNrOiAlbGx1LCBFdmljdGVkOiAlbGx1LCBSZWNlbnRseSBFdmljdGVkOiAlbGx1XFxuXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzItXHRjcy1cdTAwM2Vucl9jYWNoZSwgY3MtXHUwMDNlbnJfZGlydHksIGNzLVx1MDAzZW5yX3dyaXRlYmFjayxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYz0xMDY9c3RhdGljIGJvb2wgaXNfb25fdG1wZnMoaW50IGZkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTExNy0gKiBPcGVuL2NyZWF0ZSB0aGUgZmlsZSBhdCBmaWxlbmFtZSwgKG9wdGlvbmFsbHkpIHdyaXRlIHJhbmRvbSBkYXRhIHRvIGl0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxMTg6ICogKGV4YWN0bHkgbnVtX3BhZ2VzKSwgdGhlbiB0ZXN0IHRoZSBjYWNoZXN0YXQgc3lzY2FsbCBvbiB0aGlzIGZpbGUuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMTktICpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMjItICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxMjM6c3RhdGljIGludCB0ZXN0X2NhY2hlc3RhdChjb25zdCBjaGFyICpmaWxlbmFtZSwgYm9vbCB3cml0ZV9yYW5kb20sIGJvb2wgY3JlYXRlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTI0LVx0XHRcdCAgYm9vbCB0ZXN0X2ZzeW5jLCB1bnNpZ25lZCBsb25nIG51bV9wYWdlcyxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMzAtXHRsb25nIHN5c2NhbGxfcmV0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTMxOlx0c3RydWN0IGNhY2hlc3RhdCBjcztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEzMjpcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NfcmFuZ2UgPSB7IDAsIGZpbGVzaXplIH07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMzMtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTUxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTUyOlx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXHUwMDI2Y3NfcmFuZ2UsIFx1MDAyNmNzLCAwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE1My1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xNjEtXHR9IGVsc2Uge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTYyOlx0XHRwcmludF9jYWNoZXN0YXQoXHUwMDI2Y3MpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTYzLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE3OS1cdFx0fSBlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjE4MDpcdFx0XHRzeXNjYWxsX3JldCA9IHN5c2NhbGwoX19OUl9jYWNoZXN0YXQsIGZkLCBcdTAwMjZjc19yYW5nZSwgXHUwMDI2Y3MsIDApO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTgxLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4NS1cdFx0XHRpZiAoIXN5c2NhbGxfcmV0KSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxODY6XHRcdFx0XHRwcmludF9jYWNoZXN0YXQoXHUwMDI2Y3MpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTg3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIwOT1jb25zdCBjaGFyICpmaWxlX3R5cGVfc3RyKGVudW0gZmlsZV90eXBlIHR5cGUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjIxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjIyOmJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMjMte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTIyNy1cdHNpemVfdCBjb21wdXRlX2xlbiA9IFBTICogNTEyO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjI4Olx0c3RydWN0IGNhY2hlc3RhdF9yYW5nZSBjc19yYW5nZSA9IHsgUFMsIGNvbXB1dGVfbGVuIH07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMjktXHRjaGFyICpmaWxlbmFtZSA9IFwmIzM0O3RtcHNobWNzdGF0XCYjMzQ7LCAqbWFwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjMwOlx0c3RydWN0IGNhY2hlc3RhdCBjcztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTIzMS1cdGJvb2wgcmV0ID0gdHJ1ZTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yNzUtXHR9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyNzY6XHRzeXNjYWxsX3JldCA9IHN5c2NhbGwoX19OUl9jYWNoZXN0YXQsIGZkLCBcdTAwMjZjc19yYW5nZSwgXHUwMDI2Y3MsIDApO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjc3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI4Mi1cdH0gZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyODM6XHRcdHByaW50X2NhY2hlc3RhdChcdTAwMjZjcyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yODQtXHRcdGlmIChjcy5ucl9jYWNoZSAmIzQzOyBjcy5ucl9ldmljdGVkICE9IG51bV9wYWdlcykge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTI5Nz1pbnQgbWFpbih2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMwMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwMzpcdHJldCA9IHN5c2NhbGwoX19OUl9jYWNoZXN0YXQsIC0xLCBOVUxMLCBOVUxMLCAwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMwNC1cdGlmIChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVOT1NZUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwNTpcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7Y2FjaGVzdGF0IHN5c2NhbGwgbm90IGF2YWlsYWJsZVxcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMDYtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzE5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzIwOlx0XHRpZiAodGVzdF9jYWNoZXN0YXQoZGV2X2ZpbGVuYW1lLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzIxLVx0XHRcdDQsIE9fUkRPTkxZLCAwNDAwKSA9PSBLU0ZUX1BBU1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjI6XHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoICVzXFxuXCYjMzQ7LCBkZXZfZmlsZW5hbWUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzIzLVx0XHRlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMyNDpcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7Y2FjaGVzdGF0IGZhaWxzIHdpdGggJXNcXG5cJiMzNDssIGRldl9maWxlbmFtZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMjUtXHRcdFx0cmV0ID0gMTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMjgtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjk6XHRpZiAodGVzdF9jYWNoZXN0YXQoXCYjMzQ7dG1wZmlsZWNhY2hlc3RhdFwmIzM0OywgdHJ1ZSwgdHJ1ZSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMzMC1cdFx0ZmFsc2UsIDQsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2MDApID09IEtTRlRfUEFTUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMzMTpcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoIGEgbm9ybWFsIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzMyLVx0ZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMzM6XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBub3JtYWwgZmlsZVxcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzQtXHRcdHJldCA9IDE7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM2LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzM3Olx0c3dpdGNoICh0ZXN0X2NhY2hlc3RhdChcJiMzNDt0bXBmaWxlY2FjaGVzdGF0XCYjMzQ7LCB0cnVlLCB0cnVlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM4LVx0XHR0cnVlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKSkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM5LVx0Y2FzZSBLU0ZUX0ZBSUw6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNDA6XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtjYWNoZXN0YXQgZnN5bmMgZmFpbHMgd2l0aCBub3JtYWwgZmlsZVxcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDEtXHRcdHJldCA9IEtTRlRfRkFJTDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDMtXHRjYXNlIEtTRlRfUEFTUzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM0NDpcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCBmc3luYyB3b3JrcyB3aXRoIGEgbm9ybWFsIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzQ1LVx0XHRicmVhaztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM0Ni1cdGNhc2UgS1NGVF9TS0lQOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzQ3Olx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCYjMzQ7dG1wZmlsZWNhY2hlc3RhdCBpcyBvbiB0bXBmc1xcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDgtXHRcdGJyZWFrO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM1MC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1MTpcdGlmIChydW5fY2FjaGVzdGF0X3Rlc3QoRklMRV9TSE1FTSkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNTI6XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcJiMzNDtjYWNoZXN0YXQgd29ya3Mgd2l0aCBhIHNobWVtIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzUzLVx0ZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNTQ6XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBhIHNobWVtIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzU1LVx0XHRyZXQgPSAxO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM1Ny1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1ODpcdGlmIChydW5fY2FjaGVzdGF0X3Rlc3QoRklMRV9NTUFQKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1OTpcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoIGEgbW1hcCBmaWxlXFxuXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM2MC1cdGVsc2Uge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzYxOlx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7Y2FjaGVzdGF0IGZhaWxzIHdpdGggYSBtbWFwIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzYyLVx0XHRyZXQgPSAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ2OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENhY2hlc3RhdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgIHBvcHMgb3V0LiBUaGF0JiMzOTtzIHRoZSBjb25maWcgZm9yIGBjYWNoZXN0YXRgLCByaWdodD8gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoYXQuIEkmIzM5O2xsIGNoZWNrIGBpbml0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCBgQ0FDSEVTVEFUX1NZU0NBTExgIGlzIHRoZXJlLiBBaCwgeWVzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSBleHBsaWNpdC4gR29vZCB0byBpbmNsdWRlIGl0IGluIHRoZSBtZW50YWwgY2hlY2tsaXN0LgoKV2FpdCwgYSBiaXQgZnVydGhlciBkb3duLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGNhbl9kb19jYWNoZXN0YXRgIHdpdGhpbiBgbW0vZmlsZW1hcC5jYC4gVGhhdCB0ZWxscyBtZSB0aGUgYHN5c19jYWNoZXN0YXRgIHN5c3RlbSBjYWxsIGlzIHByb2JhYmx5IHRoZSBrZXkgZm9jdXMgcG9pbnQgaGVyZS4gSSBzaG91bGQgYWRkIGBzeXNfY2FjaGVzdGF0YCB0byBteSBsaXN0IG9mIEZvY3VzU3ltYm9scy4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgZm9yIGZ1dHVyZSBhbmFseXNpcy4KCkhtbSwgYSBjaGFuZ2UgaGVyZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgcmVwbGFjaW5nIGBpbm9kZV9vd25lcl9vcl9jYXBhYmxlKGZpbGVfbW50X2lkbWFwKGYpLCBmaWxlX2lub2RlKGYpKWAgd2l0aCBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpYCBpbiBgbW0vZmlsZW1hcC5jYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBmdW5jdGlvbmFsIGNoYW5nZSBhdCBmaXJzdCBnbGFuY2UuIEl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgcmVmYWN0b3JpbmcgYmVjYXVzZSBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpYCBzZWVtcyB0byBiZSAqZGVmaW5lZCogYXMgZXhhY3RseSBgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmKSwgZmlsZV9pbm9kZShmKSlgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBkZWZpbml0aW9uIGluIGBpbmNsdWRlL2xpbnV4L2ZzLmhgIGJlZm9yZSBJIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbGVfb3duZXJfb3JfY2FwYWJsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZzLmg9MjQ0Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbnRfaWRtYXAgKmZpbGVfbW50X2lkbWFwKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaC0yNDQ2LVxuaW5jbHVkZS9saW51eC9mcy5oOjI0NDc6c3RhdGljIGlubGluZSBib29sIGZpbGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQ4LXtcbi0tXG5tbS9maWxlbWFwLmM9NDcwMz1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZilcbi0tXG5tbS9maWxlbWFwLmMtNDcwNi1cdFx0cmV0dXJuIHRydWU7XG5tbS9maWxlbWFwLmM6NDcwNzpcdGlmIChmaWxlX293bmVyX29yX2NhcGFibGUoZikpXG5tbS9maWxlbWFwLmMtNDcwOC1cdFx0cmV0dXJuIHRydWU7XG4tLVxubW0vbWFkdmlzZS5jPTMyOT1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2ZpbGVfcGFnZW91dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5tbS9tYWR2aXNlLmMtMzM4LVx0ICovXG5tbS9tYWR2aXNlLmM6MzM5Olx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXHUwMDNldm1fZmlsZSkgfHxcbm1tL21hZHZpc2UuYy0zNDAtXHQgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS1cdTAwM2V2bV9maWxlLCBNQVlfV1JJVEUpID09IDA7XG4tLVxubW0vbWluY29yZS5jPTIxOD1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxubW0vbWluY29yZS5jLTIyOS1cdCAqL1xubW0vbWluY29yZS5jOjIzMDpcdHJldHVybiBmaWxlX293bmVyX29yX2NhcGFibGUodm1hLVx1MDAzZXZtX2ZpbGUpIHx8XG5tbS9taW5jb3JlLmMtMjMxLVx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjUwMgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDczMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGNvZGUgZGlmZiwgaXQgbG9va3MgbGlrZSBhIHJlZmFjdG9yaW5nIGluIGBtbS9maWxlbWFwLmNgLCBidXQgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgbW0vbWFkdmlzZS5jYCBhbmQgYG1tL21pbmNvcmUuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgY29ycmVjdGluZyB0aGUgaGFuZGxpbmcgb2YgaWRtYXBwZWQgbW91bnRzLiBUaGV5JiMzOTtyZSByZXBsYWNpbmcgdGhlIHVzZSBvZiBgJmFtcDtub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBjb3JyZWN0IGBmaWxlX21udF9pZG1hcCh2bWEtJmd0O3ZtX2ZpbGUpYC4gVGhpcyBtZWFucyBgc3lzX2NhY2hlc3RhdGAgKmlzbiYjMzk7dCogZnVuY3Rpb25hbGx5IGFsdGVyZWQsIGJ1dCBgZG9fbWluY29yZWAgYW5kIGBtYWR2aXNlX3BhZ2VvdXRgICphcmUqLgoKU28sIG15IGZvY3VzIHN5bWJvbHMgbmVlZCB0byByZWZsZWN0IHRoZXNlIGZ1bmN0aW9uYWwgY2hhbmdlcy4gSSYjMzk7bGwgbmVlZCB0byBpbmNsdWRlIGBkb19taW5jb3JlYCBhbmQgYG1hZHZpc2VfcGFnZW91dGAuIFdhaXQsIGlzbiYjMzk7dCBgbWFkdmlzZV9wYWdlb3V0YCBzdGF0aWM/IFllcywgYnV0IGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIGBzeXNfbWFkdmlzZWAsIHNvIHRoYXQmIzM5O3MgZmluZS4gU2ltaWxhcmx5LCBgZG9fbWluY29yZWAgaXMgc3RhdGljIGJ1dCByZWFjaGFibGUgdGhyb3VnaCBgc3lzX21pbmNvcmVgLiBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgYXMgaXQmIzM5O3MgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGZpeC4KClRoZSBrZXkgY29uZmlndXJhdGlvbiB0byBlbmFibGUgaGVyZSBpcyBgQURWSVNFX1NZU0NBTExTYC4gYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgIGFyZSBsaWtlbHkgcHJlcmVxdWlzaXRlcywgYnV0IHRoZXkmIzM5O3JlIGZhaXJseSBzdGFuZGFyZCBhbmQgY2FuIGJlIGFzc3VtZWQuIEkmIzM5O2xsIHN0aWNrIHdpdGgganVzdCBlbmFibGluZyBgQURWSVNFX1NZU0NBTExTYC4KCk9rYXksIHN1bW1hcml6aW5nIG15IGZpbmRpbmdzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byBpZG1hcHBlZCBtb3VudHMsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIGZ1enouCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggY29ycmVjdHMgdGhlIGhhbmRsaW5nIG9mIGlkbWFwcGVkIG1vdW50cyBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYSBwbGFjZWhvbGRlciBpZG1hcCB3aXRoIHRoZSBjb3JyZWN0IG1vdW50JiMzOTtzIGlkbWFwLCBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBkb19taW5jb3JlYCwgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEFEVklTRV9TWVNDQUxMU2AKCkkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTUFEVl9DT0xEYCBhY3R1YWxseSB1c2VzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YC4gQWgsIGluIGBtbS9tYWR2aXNlLmNgLCB0aGVyZSYjMzk7cyBhIGNoZWNrIGBwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0ICZhbXA7JmFtcDsgIXZtYV9pc19hbm9ueW1vdXModm1hKSAmYW1wOyZhbXA7ICFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7YCwgc28gaXQgZG9lcyEgVGhhdCBjb25maXJtcyBteSBjaG9pY2Ugb2YgZm9jdXMgc3ltYm9scy4gYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgaXMgZGVmaW5pdGVseSByZWxldmFudC4gVGhpcyBpcyBnb29kLiBJIHRoaW5rIEkmIzM5O20gZG9uZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19taW5jb3JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pbmNvcmUuYz0xNjM9c3RhdGljIGludCBtaW5jb3JlX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL21pbmNvcmUuYy0yMTctXG5tbS9taW5jb3JlLmM6MjE4OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbm1tL21pbmNvcmUuYy0yMTkte1xuLS1cbm1tL21pbmNvcmUuYz0yMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBtaW5jb3JlX3dhbGtfb3BzID0ge1xuLS1cbm1tL21pbmNvcmUuYy0yNDUtICovXG5tbS9taW5jb3JlLmM6MjQ2OnN0YXRpYyBsb25nIGRvX21pbmNvcmUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCB1bnNpZ25lZCBjaGFyICp2ZWMpXG5tbS9taW5jb3JlLmMtMjQ3LXtcbi0tXG5tbS9taW5jb3JlLmMtMjU1LVx0ZW5kID0gbWluKHZtYS1cdTAwM2V2bV9lbmQsIGFkZHIgJiM0MzsgKHBhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKSk7XG5tbS9taW5jb3JlLmM6MjU2Olx0aWYgKCFjYW5fZG9fbWluY29yZSh2bWEpKSB7XG5tbS9taW5jb3JlLmMtMjU3LVx0XHR1bnNpZ25lZCBsb25nIHBhZ2VzID0gRElWX1JPVU5EX1VQKGVuZCAtIGFkZHIsIFBBR0VfU0laRSk7XG4tLVxubW0vbWluY29yZS5jPTI5MT1TWVNDQUxMX0RFRklORTMobWluY29yZSwgdW5zaWduZWQgbG9uZywgc3RhcnQsIHNpemVfdCwgbGVuLFxuLS1cbm1tL21pbmNvcmUuYy0zMjUtXHRcdG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtXHUwMDNlbW0pO1xubW0vbWluY29yZS5jOjMyNjpcdFx0cmV0dmFsID0gZG9fbWluY29yZShzdGFydCwgbWluKHBhZ2VzLCBQQUdFX1NJWkUpLCB0bXApO1xubW0vbWluY29yZS5jLTMyNy1cdFx0bW1hcF9yZWFkX3VubG9jayhjdXJyZW50LVx1MDAzZW1tKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyNTMKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipNeSBUaGlua2luZyBvbiBgbWluY29yZWAgSW1wbGVtZW50YXRpb24gYW5kIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBkb19taW5jb3JlYC4uLiB0aGF0JiMzOTtzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYGNhbl9kb19taW5jb3JlYC4gVGhhdCYjMzk7cyBhIGtleSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEFuZCB0aGUgb3RoZXIgRm9jdXNTeW1ib2xzIEkmIzM5O20gY29uY2VybmVkIHdpdGggYXJlIGBtYWR2aXNlX3BhZ2VvdXRgIGFuZCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgd2hpY2ggYXJlIGxpa2VseSByZWxhdGVkIHRvIHBhZ2VvdXQgZnVuY3Rpb25hbGl0eS4KCk5vdywgdGhlIGBBRFZJU0VfU1lTQ0FMTFNgIEVuYWJsZUNvbmZpZyBpcyBjZXJ0YWlubHkgcmVsZXZhbnQgaGVyZS4KCkhtbSwgSSByZWNhbGwgdGhlcmUgd2FzbiYjMzk7dCBhIGRlZGljYXRlZCBjb25maWcgc3BlY2lmaWNhbGx5IGZvciBgbWluY29yZWAgaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0IGdldHMgYnVpbHQgaW5kaXJlY3RseSwgYmFzZWQgb24gd2hldGhlciBgQ09ORklHX01NVWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGltcGxpY2F0aW9ucy4KCkFscmlnaHQsIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgc29saWQgZ3Jhc3Agb2YgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucywgY29uZmlndXJhdGlvbiwgYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7bSByZWFkeSB0byBtb3ZlIG9uIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRFZJU0VfU1lTQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19taW5jb3JlJiMzNDssCiAgICAmIzM0O21hZHZpc2VfcGFnZW91dCYjMzQ7LAogICAgJiMzNDttYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgaWRtYXBwZWQgbW91bnRzIHdlcmUgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgYnkgcmVwbGFjaW5nIGBcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRFZJU0VfU1lTQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19taW5jb3JlJiMzNDssCiAgICAmIzM0O21hZHZpc2VfcGFnZW91dCYjMzQ7LAogICAgJiMzNDttYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgaWRtYXBwZWQgbW91bnRzIHdlcmUgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgYnkgcmVwbGFjaW5nIGBcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6MTAuOTM1Nzk5ODgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM2MDU1NzA1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURWSVNFX1NZU0NBTExTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZG9fbWluY29yZVwiLFxuICAgIFwibWFkdmlzZV9wYWdlb3V0XCIsXG4gICAgXCJtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBpZG1hcHBlZCBtb3VudHMgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYFxcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoxMC45MzU4MDYxNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODkzNDM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNkZjI5MTMxOWQ3Yzk1ODRhYzg3OGFjMjg3MDMxZTZhMzkzOTllNTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMTU6NTc6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9saW51eC9mcy5oXFxuaW5kZXggZDEwODk3YjNhMWUzNTAuLjUwY2U3MzFhMmI3OGYxIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZnMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZnMuaFxcbkBAIC0yNDQ0LDYgKzI0NDQsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbW50X2lkbWFwICpmaWxlX21udF9pZG1hcChjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gXFx0cmV0dXJuIG1udF9pZG1hcChmaWxlLVxcdTAwM2VmX3BhdGgubW50KTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIGZpbGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4re1xcbitcXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpc19pZG1hcHBlZF9tbnQgLSBjaGVjayB3aGV0aGVyIGEgbW91bnQgaXMgbWFwcGVkXFxuICAqIEBtbnQ6IHRoZSBtb3VudCB0byBjaGVja1xcbmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmNcXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uNThlYjlkMjQwNjQzNDggMTAwNjQ0XFxuLS0tIGEvbW0vZmlsZW1hcC5jXFxuKysrIGIvbW0vZmlsZW1hcC5jXFxuQEAgLTQ3MDQsNyArNDcwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbiB7XFxuIFxcdGlmIChmLVxcdTAwM2VmX21vZGUgXFx1MDAyNiBGTU9ERV9XUklURSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuLVxcdGlmIChpbm9kZV9vd25lcl9vcl9jYXBhYmxlKGZpbGVfbW50X2lkbWFwKGYpLCBmaWxlX2lub2RlKGYpKSlcXG4rXFx0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdHJldHVybiBmaWxlX3Blcm1pc3Npb24oZiwgTUFZX1dSSVRFKSA9PSAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL21tL21hZHZpc2UuYyBiL21tL21hZHZpc2UuY1xcbmluZGV4IGNkOWJiMDc3MDcyY2NiLi43NzU1MmIwM2QzMThkOSAxMDA2NDRcXG4tLS0gYS9tbS9tYWR2aXNlLmNcXG4rKysgYi9tbS9tYWR2aXNlLmNcXG5AQCAtMzM2LDggKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiBcXHQgKiBvdGhlcndpc2Ugd2UnZCBiZSBpbmNsdWRpbmcgc2hhcmVkIG5vbi1leGNsdXNpdmUgbWFwcGluZ3MsIHdoaWNoXFxuIFxcdCAqIG9wZW5zIGEgc2lkZSBjaGFubmVsLlxcbiBcXHQgKi9cXG4tXFx0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoXFx1MDAyNm5vcF9tbnRfaWRtYXAsXFxuLVxcdFxcdFxcdFxcdCAgICAgIGZpbGVfaW5vZGUodm1hLVxcdTAwM2V2bV9maWxlKSkgfHxcXG4rXFx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXFx1MDAzZXZtX2ZpbGUpIHx8XFxuIFxcdCAgICAgICBmaWxlX3Blcm1pc3Npb24odm1hLVxcdTAwM2V2bV9maWxlLCBNQVlfV1JJVEUpID09IDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL21tL21pbmNvcmUuYyBiL21tL21pbmNvcmUuY1xcbmluZGV4IDI5NmYyZTM5MjJiNWY0Li5jODc1N2M1MDg1YmY5MCAxMDA2NDRcXG4tLS0gYS9tbS9taW5jb3JlLmNcXG4rKysgYi9tbS9taW5jb3JlLmNcXG5AQCAtMjI3LDggKzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4gXFx0ICogZm9yIHdyaXRpbmc7IG90aGVyd2lzZSB3ZSdkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZVxcbiBcXHQgKiBtYXBwaW5ncywgd2hpY2ggb3BlbnMgYSBzaWRlIGNoYW5uZWwuXFxuIFxcdCAqL1xcbi1cXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShcXHUwMDI2bm9wX21udF9pZG1hcCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgZmlsZV9pbm9kZSh2bWEtXFx1MDAzZXZtX2ZpbGUpKSB8fFxcbitcXHRyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS1cXHUwMDNldm1fZmlsZSkgfHxcXG4gXFx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXFx1MDAzZXZtX2ZpbGUsIE1BWV9XUklURSkgPT0gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6MTEuNDI1NDIwMjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTE1OTQxMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFEVklTRV9TWVNDQUxMU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX21pbmNvcmVcIixcbiAgICBcIm1hZHZpc2VfcGFnZW91dFwiLFxuICAgIFwibWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgaWRtYXBwZWQgbW91bnRzIHdlcmUgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgYnkgcmVwbGFjaW5nIGBcXHUwMDI2bm9wX21udF9pZG1hcGAgd2l0aCB0aGUgYWN0dWFsIG1vdW50IGlkbWFwIG9mIHRoZSBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZGYyOTEzMTlkN2M5NTg0YWM4NzhhYzI4NzAzMWU2YTM5Mzk5ZTU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMTU6NTc6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmhcbmluZGV4IGQxMDg5N2IzYTFlMzUwLi41MGNlNzMxYTJiNzhmMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZnMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9mcy5oXG5AQCAtMjQ0NCw2ICsyNDQ0LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IG1udF9pZG1hcCAqZmlsZV9tbnRfaWRtYXAoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRyZXR1cm4gbW50X2lkbWFwKGZpbGUtXHUwMDNlZl9wYXRoLm1udCk7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBmaWxlX293bmVyX29yX2NhcGFibGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXG4re1xuK1x0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpO1xuK31cbitcbiAvKipcbiAgKiBpc19pZG1hcHBlZF9tbnQgLSBjaGVjayB3aGV0aGVyIGEgbW91bnQgaXMgbWFwcGVkXG4gICogQG1udDogdGhlIG1vdW50IHRvIGNoZWNrXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uNThlYjlkMjQwNjQzNDggMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbisrKyBiL21tL2ZpbGVtYXAuY1xuQEAgLTQ3MDQsNyArNDcwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxuIHtcbiBcdGlmIChmLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfV1JJVEUpXG4gXHRcdHJldHVybiB0cnVlO1xuLVx0aWYgKGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZiksIGZpbGVfaW5vZGUoZikpKVxuK1x0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHRyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vbWFkdmlzZS5jIGIvbW0vbWFkdmlzZS5jXG5pbmRleCBjZDliYjA3NzA3MmNjYi4uNzc1NTJiMDNkMzE4ZDkgMTAwNjQ0XG4tLS0gYS9tbS9tYWR2aXNlLmNcbisrKyBiL21tL21hZHZpc2UuY1xuQEAgLTMzNiw4ICszMzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2ZpbGVfcGFnZW91dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiBcdCAqIG90aGVyd2lzZSB3ZSdkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZSBtYXBwaW5ncywgd2hpY2hcbiBcdCAqIG9wZW5zIGEgc2lkZSBjaGFubmVsLlxuIFx0ICovXG4tXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShcdTAwMjZub3BfbW50X2lkbWFwLFxuLVx0XHRcdFx0ICAgICAgZmlsZV9pbm9kZSh2bWEtXHUwMDNldm1fZmlsZSkpIHx8XG4rXHRyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS1cdTAwM2V2bV9maWxlKSB8fFxuIFx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9tbS9taW5jb3JlLmMgYi9tbS9taW5jb3JlLmNcbmluZGV4IDI5NmYyZTM5MjJiNWY0Li5jODc1N2M1MDg1YmY5MCAxMDA2NDRcbi0tLSBhL21tL21pbmNvcmUuY1xuKysrIGIvbW0vbWluY29yZS5jXG5AQCAtMjI3LDggKzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiBcdCAqIGZvciB3cml0aW5nOyBvdGhlcndpc2Ugd2UnZCBiZSBpbmNsdWRpbmcgc2hhcmVkIG5vbi1leGNsdXNpdmVcbiBcdCAqIG1hcHBpbmdzLCB3aGljaCBvcGVucyBhIHNpZGUgY2hhbm5lbC5cbiBcdCAqL1xuLVx0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoXHUwMDI2bm9wX21udF9pZG1hcCxcbi1cdFx0XHRcdCAgICAgIGZpbGVfaW5vZGUodm1hLVx1MDAzZXZtX2ZpbGUpKSB8fFxuK1x0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXHUwMDNldm1fZmlsZSkgfHxcbiBcdCAgICAgICBmaWxlX3Blcm1pc3Npb24odm1hLVx1MDAzZXZtX2ZpbGUsIE1BWV9XUklURSkgPT0gMDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoxMS40MjU0MjE4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MzYxNzgyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGaWxlIFBlcm1pc3Npb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgaW5saW5lIGZ1bmN0aW9uLCBgZmlsZV9vd25lcl9vcl9jYXBhYmxlYCwgYW5kIEkgc2VlIGl0J3MgaW50ZW5kZWQgdG8gc2ltcGxpZnkgc29tZSBjaGVja3MgcmVsYXRlZCB0byBmaWxlIG93bmVyc2hpcCBhbmQgY2FwYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlcGxhY2luZyBkaXJlY3QgY2FsbHMgdG8gYGlub2RlX293bmVyX29yX2NhcGFibGVgIHdpdGggdGhpcyBuZXcgZnVuY3Rpb24gaW4gYSBmZXcga2V5IGFyZWFzOiBgbW0vZmlsZW1hcC5jYCwgYG1tL21hZHZpc2UuY2AsIGFuZCBgbW0vbWluY29yZS5jYC5cblxuSG9sZCBvbi4uLiBJJ20gbm90aWNpbmcgc29tZXRoaW5nIGNydWNpYWwgaGVyZSwgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSW4gYG1tL21hZHZpc2UuY2AgYW5kIGBtbS9taW5jb3JlLmNgLCB0aGUgb3JpZ2luYWwgY29kZSB3YXMgcGFzc2luZyBgXHUwMDI2bm9wX21udF9pZG1hcGAgdG8gYGlub2RlX293bmVyX29yX2NhcGFibGVgLCBidXQgbm93IHRoZSBwYXRjaCBkaXJlY3RseSB1c2VzIGBmaWxlX293bmVyX29yX2NhcGFibGUodm1hLVx1MDAzZXZtX2ZpbGUpYC4gVGhpcyBtZWFucyBpdCB3aWxsIGNhbGwgYGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpYC4gU28sIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbW91bnQgSUQgbWFwcGluZyB1c2VkIGluIHRoZSBvd25lcnNoaXAgY2hlY2sgZnJvbSBhIG5vLW9wIHRvIHRoZSBhY3R1YWwgZmlsZSdzIG1vdW50IElELiBUaGlzIGhhcyB0byBiZSBhIGZpeCEgVGhpcyBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSB3aGVyZSBJRC1tYXBwZWQgbW91bnRzIHdlcmVuJ3QgYmVpbmcgY29ycmVjdGx5IGhhbmRsZWQgd2l0aGluIHRoZSBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBmdW5jdGlvbnMuXG5cbk5vdywgSSB3YW50IHRvIGRyaWxsIGRvd24gZnVydGhlci4gTGV0J3MgbG9vayBjbG9zZWx5IGF0IHdoZXJlIHRoZXNlIGNoYW5nZXMgYXJlIGltcGFjdGluZyB1cy4gVGhlIGxvZ2ljIG5vdyB0b3VjaGVzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCB3aXRoaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBjYW5fZG9fbWluY29yZWAgd2l0aGluIGBtbS9taW5jb3JlLmNgLiBgY2FuX2RvX2ZpbGVfcGFnZW91dGAgaXMsIGFzIEkgcmVjYWxsLCBhIGZ1bmN0aW9uIHRoYXQncyBjYWxsZWQgZnJvbSBgbWFkdmlzZV9wYWdlb3V0YC4gYGNhbl9kb19taW5jb3JlYCBpcyB1c2VkIGJ5IGEgZnVuY3Rpb24gc2ltaWxhciB0byBgbWluY29yZV9wYWdlX3JhbmdlYCBvciBzaW1pbGFyIGluIGBtbS9taW5jb3JlLmNgLlxuXG5UaW1lIHRvIHNlZSB3aGVyZSB0aGVzZSBhcmUgdXNlZC4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgY2FsbGVkLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgYW5kIHdoYXQgZG93bnN0cmVhbSBpbXBhY3QgdGhpcyBmaXggbWlnaHQgaGF2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjE4Ljg2MTYwMzc1NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYxMDQ3NTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9kb19maWxlX3BhZ2VvdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWFkdmlzZS5jPTI4MT1zdGF0aWMgbG9uZyBtYWR2aXNlX3dpbGxuZWVkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTMyOC1cXG5tbS9tYWR2aXNlLmM6MzI5OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbm1tL21hZHZpc2UuYy0zMzAte1xcbi0tXFxubW0vbWFkdmlzZS5jPTM1Mz1zdGF0aWMgaW50IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZShwbWRfdCAqcG1kLFxcbi0tXFxubW0vbWFkdmlzZS5jLTM3My1cXHRwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0IFxcdTAwMjZcXHUwMDI2ICF2bWFfaXNfYW5vbnltb3VzKHZtYSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9tYWR2aXNlLmM6Mzc0OlxcdFxcdFxcdFxcdFxcdCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7XFxubW0vbWFkdmlzZS5jLTM3NS1cXG4tLVxcbm1tL21hZHZpc2UuYz02MjY9c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTYzOS1cXHQgKi9cXG5tbS9tYWR2aXNlLmM6NjQwOlxcdGlmICghdm1hX2lzX2Fub255bW91cyh2bWEpIFxcdTAwMjZcXHUwMDI2ICghY2FuX2RvX2ZpbGVfcGFnZW91dCh2bWEpIFxcdTAwMjZcXHUwMDI2XFxubW0vbWFkdmlzZS5jLTY0MS1cXHRcXHRcXHRcXHQodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX01BWVNIQVJFKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjIyLjIyMjY2MDc3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc2NDY5NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9kb19taW5jb3JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21pbmNvcmUuYz0xNjM9c3RhdGljIGludCBtaW5jb3JlX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vbWluY29yZS5jLTIxNy1cXG5tbS9taW5jb3JlLmM6MjE4OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5tbS9taW5jb3JlLmMtMjE5LXtcXG4tLVxcbm1tL21pbmNvcmUuYz0yNDY9c3RhdGljIGxvbmcgZG9fbWluY29yZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgcGFnZXMsIHVuc2lnbmVkIGNoYXIgKnZlYylcXG4tLVxcbm1tL21pbmNvcmUuYy0yNTUtXFx0ZW5kID0gbWluKHZtYS1cXHUwMDNldm1fZW5kLCBhZGRyICsgKHBhZ2VzIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpKTtcXG5tbS9taW5jb3JlLmM6MjU2OlxcdGlmICghY2FuX2RvX21pbmNvcmUodm1hKSkge1xcbm1tL21pbmNvcmUuYy0yNTctXFx0XFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IERJVl9ST1VORF9VUChlbmQgLSBhZGRyLCBQQUdFX1NJWkUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoyNC4yOTkxNDEzNDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE5MTM4OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaWRtYXBwZWQgbW91bnQgY2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgdGFja2xlcyBob3cgaWRtYXBwZWQgbW91bnRzIGFyZSBoYW5kbGVkIHdpdGhpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSByZXBsYWNpbmcgYFx1MDAyNm5vcF9tbnRfaWRtYXBgIHdpdGggYGZpbGVfbW50X2lkbWFwKHZtYS1cdTAwM2V2bV9maWxlKWAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgc2hpZnQsIG1lYW5pbmcgdGhlcmUncyBhIHJlYWwgcG9zc2liaWxpdHkgb2YgZmluZGluZyBzb21lIGVkZ2UgY2FzZXMuIERlZmluaXRlbHkgd29ydGggdGhyb3dpbmcgc29tZSBmdXp6aW5nIGF0IGl0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIG9uIGBtYWR2aXNlX3BhZ2VvdXRgLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgYW5kIGBkb19taW5jb3JlYC4gV2FpdCwgcmUtcmVhZGluZyB0aGUgcGF0Y2guLi5pdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNoYW5nZSBpcyBhY3R1YWxseSB3aXRoaW4gYGNhbl9kb19maWxlX3BhZ2VvdXRgIGFuZCBgY2FuX2RvX21pbmNvcmVgLiBBaCwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBnZXQgY2FsbGVkIHdpdGhpbiB0aGUgZW50cnkgcG9pbnRzLCBuYW1lbHkgYG1hZHZpc2VfcGFnZW91dGAgYW5kIGBkb19taW5jb3JlYC5cblxuTGV0IG1lIHNlZSBpZiB0aGlzIGlzIHRpZWQgdG8gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJZG1hcHBlZCBtb3VudHMgcmVseSBvbiBgQ09ORklHX1VTRVJfTlNgIGFuZCBgQ09ORklHX01VTFRJVVNFUmAsIEkgdGhpbms/IFRob3VnaCwgaWRtYXBwZWQgbW91bnRzIGFyZSBnZW5lcmFsbHkgYXZhaWxhYmxlIG5vdywgcmlnaHQ/IE9rYXksIGxldCdzIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlnIHRoYXQgbWlnaHQgYmUgcGFydGljdWxhcmx5IHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTkxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoyOC44MTgyODI2ODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MDg3NDA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWxlX21udF9pZG1hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3psb29wLmM9NzAwPXN0YXRpYyBpbnQgemxvb3BfcmVjb3JkX3NhZmVfd3BzKHN0cnVjdCB6bG9vcF9kZXZpY2UgKnpsbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svemxvb3AuYy03MTAtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9ibG9jay96bG9vcC5jOjcxMTpcXHRcXHRyZXQgPSB2ZnNfc2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfZGVudHJ5KGZpbGUpLFxcbmRyaXZlcnMvYmxvY2svemxvb3AuYy03MTItXFx0XFx0XFx0XFx0XFxcInVzZXIuemxvb3Aud3BcXFwiLCBcXHUwMDI2em9uZS1cXHUwMDNld3AsIHNpemVvZih6b25lLVxcdTAwM2V3cCksIDApO1xcbi0tXFxuZHJpdmVycy9ibG9jay96bG9vcC5jPTEzNjU9c3RhdGljIHZvaWQgemxvb3BfZm9yZ2V0X2NhY2hlKHN0cnVjdCB6bG9vcF9kZXZpY2UgKnpsbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svemxvb3AuYy0xMzc5LVxcbmRyaXZlcnMvYmxvY2svemxvb3AuYzoxMzgwOlxcdFxcdHJldCA9IHZmc19nZXR4YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXFxuZHJpdmVycy9ibG9jay96bG9vcC5jLTEzODEtXFx0XFx0XFx0XFx0XFxcInVzZXIuemxvb3Aud3BcXFwiLCBcXHUwMDI2b2xkX3dwLCBzaXplb2Yob2xkX3dwKSk7XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTEyMDE9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMTIxNi1cXG5mcy9idHJmcy9pb2N0bC5jOjEyMTc6XFx0cmV0dXJuIF9fYnRyZnNfaW9jdGxfc25hcF9jcmVhdGUoZmlsZSwgZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvYnRyZnMvaW9jdGwuYy0xMjE4LVxcdFxcdFxcdFxcdFxcdCB2b2xfYXJncy1cXHUwMDNlbmFtZSwgdm9sX2FyZ3MtXFx1MDAzZWZkLCBzdWJ2b2wsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTEyMjI9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZV92MihzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMTI2MC1cXG5mcy9idHJmcy9pb2N0bC5jOjEyNjE6XFx0cmV0dXJuIF9fYnRyZnNfaW9jdGxfc25hcF9jcmVhdGUoZmlsZSwgZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvYnRyZnMvaW9jdGwuYy0xMjYyLVxcdFxcdFxcdFxcdFxcdCB2b2xfYXJncy1cXHUwMDNlbmFtZSwgdm9sX2FyZ3MtXFx1MDAzZWZkLCBzdWJ2b2wsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTEyODg9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zdWJ2b2xfc2V0ZmxhZ3Moc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTEyOTgtXFxuZnMvYnRyZnMvaW9jdGwuYzoxMjk5OlxcdGlmICghaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUpKVxcbmZzL2J0cmZzL2lvY3RsLmMtMTMwMC1cXHRcXHRyZXR1cm4gLUVQRVJNO1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz0xOTIxPXN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfaW5vX2xvb2t1cF91c2VyKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMTk0MS1cXG5mcy9idHJmcy9pb2N0bC5jOjE5NDI6XFx0cmV0ID0gYnRyZnNfc2VhcmNoX3BhdGhfaW5fdHJlZV91c2VyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgYXJncyk7XFxuZnMvYnRyZnMvaW9jdGwuYy0xOTQzLVxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz0yMjExPXN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc25hcF9kZXN0cm95KHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0yMjIzLVxcdHN0cnVjdCBidHJmc19pb2N0bF92b2xfYXJnc192MiBBVVRPX0tGUkVFKHZvbF9hcmdzMik7XFxuZnMvYnRyZnMvaW9jdGwuYzoyMjI0OlxcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XFxuZnMvYnRyZnMvaW9jdGwuYy0yMjI1LVxcdGNoYXIgKnN1YnZvbF9uYW1lLCAqc3Vidm9sX25hbWVfcHRyID0gTlVMTDtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9Mzk1Nj1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sXzMyKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0zOTc5LVxcbmZzL2J0cmZzL2lvY3RsLmM6Mzk4MDpcXHRyZXQgPSBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSwgYXJnczY0KTtcXG5mcy9idHJmcy9pb2N0bC5jLTM5ODEtXFx0aWYgKHJldClcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NDAwMT1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy00MDEwLVxcbmZzL2J0cmZzL2lvY3RsLmM6NDAxMTpcXHRyZXQgPSBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSwgc2EpO1xcbmZzL2J0cmZzL2lvY3RsLmMtNDAxMi1cXHRpZiAocmV0KVxcbi0tXFxuZnMvY2VwaC9maWxlLmM9NzkzPWludCBjZXBoX2F0b21pY19vcGVuKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9jZXBoL2ZpbGUuYy03OTUte1xcbmZzL2NlcGgvZmlsZS5jOjc5NjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2NlcGgvZmlsZS5jLTc5Ny1cXHRzdHJ1Y3QgY2VwaF9mc19jbGllbnQgKmZzYyA9IGNlcGhfc2JfdG9fZnNfY2xpZW50KGRpci1cXHUwMDNlaV9zYik7XFxuLS1cXG5mcy9jb3JlZHVtcC5jPTg3OD1zdGF0aWMgYm9vbCBjb3JlZHVtcF9maWxlKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbi0tXFxuZnMvY29yZWR1bXAuYy05NTUtXFx0ICovXFxuZnMvY29yZWR1bXAuYzo5NTY6XFx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9jb3JlZHVtcC5jLTk1Ny1cXHRpZiAoIXZmc3VpZF9lcV9rdWlkKGlfdWlkX2ludG9fdmZzdWlkKGlkbWFwLCBpbm9kZSksIGN1cnJlbnRfZnN1aWQoKSkpIHtcXG4tLVxcbmZzL2V4ZWMuYz0xMzEyPXZvaWQgd291bGRfZHVtcChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2V4ZWMuYy0xMzE0LVxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpO1xcbmZzL2V4ZWMuYzoxMzE1OlxcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XFxuZnMvZXhlYy5jLTEzMTYtXFx0aWYgKGlub2RlX3Blcm1pc3Npb24oaWRtYXAsIGlub2RlLCBNQVlfUkVBRCkgXFx1MDAzYyAwKSB7XFxuLS1cXG5mcy9leGVjLmM9MTU1OD1zdGF0aWMgdm9pZCBicHJtX2ZpbGxfdWlkKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZXhlYy5jLTE1NzctXFxuZnMvZXhlYy5jOjE1Nzg6XFx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9leGVjLmMtMTU3OS1cXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz00NDU9c3RhdGljIGludCBleGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jLTQ5Ni1cXHQgKi9cXG5mcy9leGZhdC9maWxlLmM6NDk3OlxcdGVyciA9IHNlY3VyaXR5X2lub2RlX3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvZXhmYXQvZmlsZS5jLTQ5OC1cXHRcXHRcXHRcXHQgICAgIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtNTAyLVxcdC8qIFRoaXMgTVVTVCBiZSBkb25lIGJlZm9yZSBkb2luZyBhbnl0aGluZyBpcnJldmVyc2libGUuLi4gKi9cXG5mcy9leGZhdC9maWxlLmM6NTAzOlxcdGVyciA9IGV4ZmF0X3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuZnMvZXhmYXQvZmlsZS5jLTUwNC1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jPTE1Mzg9c3RhdGljIGxvbmcgX19leHQ0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmZzL2V4dDQvaW9jdGwuYy0xNTQxLVxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG5mcy9leHQ0L2lvY3RsLmM6MTU0MjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xcbmZzL2V4dDQvaW9jdGwuYy0xNTQzLVxcbi0tXFxuZnMvZjJmcy9maWxlLmM9MjI3OT1zdGF0aWMgaW50IGYyZnNfaW9jX3N0YXJ0X2F0b21pY193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgYm9vbCB0cnVuY2F0ZSlcXG4tLVxcbmZzL2YyZnMvZmlsZS5jLTIyODEtXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XFxuZnMvZjJmcy9maWxlLmM6MjI4MjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xcbmZzL2YyZnMvZmlsZS5jLTIyODMtXFx0c3RydWN0IGYyZnNfaW5vZGVfaW5mbyAqZmkgPSBGMkZTX0koaW5vZGUpO1xcbi0tXFxuZnMvZjJmcy9maWxlLmM9MjM5MT1zdGF0aWMgaW50IGYyZnNfaW9jX2NvbW1pdF9hdG9taWNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5mcy9mMmZzL2ZpbGUuYy0yMzkzLVxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApO1xcbmZzL2YyZnMvZmlsZS5jOjIzOTQ6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcXG5mcy9mMmZzL2ZpbGUuYy0yMzk1LVxcdGludCByZXQ7XFxuLS1cXG5mcy9mMmZzL2ZpbGUuYz0yNDI2PXN0YXRpYyBpbnQgZjJmc19pb2NfYWJvcnRfYXRvbWljX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZnMvZjJmcy9maWxlLmMtMjQyOC1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTtcXG5mcy9mMmZzL2ZpbGUuYzoyNDI5OlxcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlscCk7XFxuZnMvZjJmcy9maWxlLmMtMjQzMC1cXHRpbnQgcmV0O1xcbi0tXFxuZnMvZmF0L2ZpbGUuYz0zNz1zdGF0aWMgaW50IGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxcbi0tXFxuZnMvZmF0L2ZpbGUuYy05NC1cXHQgKi9cXG5mcy9mYXQvZmlsZS5jOjk1OlxcdGVyciA9IHNlY3VyaXR5X2lub2RlX3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvZmF0L2ZpbGUuYy05Ni1cXHRcXHRcXHRcXHQgICAgIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuLS1cXG5mcy9mYXQvZmlsZS5jLTEwMC1cXHQvKiBUaGlzIE1VU1QgYmUgZG9uZSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgaXJyZXZlcnNpYmxlLi4uICovXFxuZnMvZmF0L2ZpbGUuYzoxMDE6XFx0ZXJyID0gZmF0X3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuZnMvZmF0L2ZpbGUuYy0xMDItXFx0aWYgKGVycilcXG4tLVxcbmZzL2ZjbnRsLmM9Mzk9c3RhdGljIGludCBzZXRmbChpbnQgZmQsIHN0cnVjdCBmaWxlICogZmlscCwgdW5zaWduZWQgaW50IGFyZylcXG4tLVxcbmZzL2ZjbnRsLmMtNTItXFx0aWYgKChhcmcgXFx1MDAyNiBPX05PQVRJTUUpIFxcdTAwMjZcXHUwMDI2ICEoZmlscC1cXHUwMDNlZl9mbGFncyBcXHUwMDI2IE9fTk9BVElNRSkpXFxuZnMvZmNudGwuYzo1MzpcXHRcXHRpZiAoIWlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlscCksIGlub2RlKSlcXG5mcy9mY250bC5jLTU0LVxcdFxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5mcy9mY250bC5jPTM2OT1zdGF0aWMgbG9uZyBmY250bF9zZXRfcndfaGludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5mcy9mY250bC5jLTM3NC1cXG5mcy9mY250bC5jOjM3NTpcXHRpZiAoIWlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGlub2RlKSlcXG5mcy9mY250bC5jLTM3Ni1cXHRcXHRyZXR1cm4gLUVQRVJNO1xcbi0tXFxuZnMvZmlsZV9hdHRyLmM9MzI0PWludCBpb2N0bF9zZXRmbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IF9fdXNlciAqYXJncClcXG5mcy9maWxlX2F0dHIuYy0zMjUte1xcbmZzL2ZpbGVfYXR0ci5jOjMyNjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2ZpbGVfYXR0ci5jLTMyNy1cXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5O1xcbi0tXFxuZnMvZmlsZV9hdHRyLmM9MzU2PWludCBpb2N0bF9mc3NldHhhdHRyKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG5mcy9maWxlX2F0dHIuYy0zNTcte1xcbmZzL2ZpbGVfYXR0ci5jOjM1ODpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2ZpbGVfYXR0ci5jLTM1OS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5O1xcbi0tXFxuZnMvZnVzZS9kaXIuYz05MzA9c3RhdGljIGludCBmdXNlX2F0b21pY19vcGVuKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICplbnRyeSxcXG4tLVxcbmZzL2Z1c2UvZGlyLmMtOTM0LVxcdGludCBlcnI7XFxuZnMvZnVzZS9kaXIuYzo5MzU6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9mdXNlL2Rpci5jLTkzNi1cXHRzdHJ1Y3QgZnVzZV9jb25uICpmYyA9IGdldF9mdXNlX2Nvbm4oZGlyKTtcXG4tLVxcbmZzL2Z1c2UvZmlsZS5jPTE1MDM9c3RhdGljIHNzaXplX3QgZnVzZV9jYWNoZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvZnVzZS9maWxlLmMtMTUwNS1cXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuZnMvZnVzZS9maWxlLmM6MTUwNjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2Z1c2UvZmlsZS5jLTE1MDctXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVxcdTAwM2VmX21hcHBpbmc7XFxuLS1cXG5mcy9mdXNlL2ZpbGUuYz0yNzE2PXN0YXRpYyB2b2lkIGZ1c2VfZG9fdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2ZpbGUuYy0yNzI2LVxcbmZzL2Z1c2UvZmlsZS5jOjI3Mjc6XFx0ZnVzZV9kb19zZXRhdHRyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBmaWxlX2RlbnRyeShmaWxlKSwgXFx1MDAyNmF0dHIsIGZpbGUpO1xcbmZzL2Z1c2UvZmlsZS5jLTI3MjgtfVxcbi0tXFxuZnMvaW5vZGUuYz0yMzc2PXN0YXRpYyBpbnQgZmlsZV9yZW1vdmVfcHJpdnNfZmxhZ3Moc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbmZzL2lub2RlLmMtMjM4NS1cXG5mcy9pbm9kZS5jOjIzODY6XFx0a2lsbCA9IGRlbnRyeV9uZWVkc19yZW1vdmVfcHJpdnMoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSk7XFxuZnMvaW5vZGUuYy0yMzg3LVxcdGlmIChraWxsIFxcdTAwM2MgMClcXG4tLVxcbmZzL2lub2RlLmMtMjM5My1cXG5mcy9pbm9kZS5jOjIzOTQ6XFx0XFx0ZXJyb3IgPSBfX3JlbW92ZV9wcml2cyhmaWxlX21udF9pZG1hcChmaWxlKSwgZGVudHJ5LCBraWxsKTtcXG5mcy9pbm9kZS5jLTIzOTUtXFx0fVxcbi0tXFxuZnMvbG9ja3MuYz0yMTM2PXZmc19zZXRsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCwgaW50IGFyZywgc3RydWN0IGZpbGVfbGVhc2UgKipsZWFzZSwgdm9pZCAqKnByaXYpXFxuLS1cXG5mcy9sb2Nrcy5jLTIxMzgtXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XFxuZnMvbG9ja3MuYzoyMTM5OlxcdHZmc3VpZF90IHZmc3VpZCA9IGlfdWlkX2ludG9fdmZzdWlkKGZpbGVfbW50X2lkbWFwKGZpbHApLCBpbm9kZSk7XFxuZnMvbG9ja3MuYy0yMTQwLVxcdGludCBlcnJvcjtcXG4tLVxcbmZzL29wZW4uYz0xNjQ9aW50IGRvX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IGxlbmd0aCwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuZnMvb3Blbi5jLTE5My1cXHRzY29wZWRfZ3VhcmQoc3VwZXJfd3JpdGUsIGlub2RlLVxcdTAwM2VpX3NiKVxcbmZzL29wZW4uYzoxOTQ6XFx0XFx0cmV0dXJuIGRvX3RydW5jYXRlKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBkZW50cnksIGxlbmd0aCxcXG5mcy9vcGVuLmMtMTk1LVxcdFxcdFxcdFxcdCAgIEFUVFJfTVRJTUUgfCBBVFRSX0NUSU1FLCBmaWxlKTtcXG4tLVxcbmZzL3JlbWFwX3JhbmdlLmM9NDE2PXN0YXRpYyBib29sIG1heV9kZWR1cGVfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9yZW1hcF9yYW5nZS5jLTQxNy17XFxuZnMvcmVtYXBfcmFuZ2UuYzo0MTg6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9yZW1hcF9yYW5nZS5jLTQxOS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxlKTtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MTc0ND12b2lkIGNyZWF0ZV9wb3NpeF9yc3BfYnVmKGNoYXIgKmNjLCBzdHJ1Y3Qga3NtYmRfZmlsZSAqZnApXFxuLS1cXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTE3NDctXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZnAtXFx1MDAzZWZpbHApO1xcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM6MTc0ODpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKTtcXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTE3NDktXFx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoaWRtYXAsIGlub2RlKTtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTQyNzM9c3RhdGljIGludCBwcm9jZXNzX3F1ZXJ5X2Rpcl9lbnRyaWVzKHN0cnVjdCBzbWIyX3F1ZXJ5X2Rpcl9wcml2YXRlICpwcml2KVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTQyNzQte1xcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQyNzU6XFx0c3RydWN0IG1udF9pZG1hcFxcdCppZG1hcCA9IGZpbGVfbW50X2lkbWFwKHByaXYtXFx1MDAzZWRpcl9mcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDI3Ni1cXHRzdHJ1Y3Qga3N0YXRcXHRcXHRrc3RhdDtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTQ1MDk9aW50IHNtYjJfcXVlcnlfZGlyKHN0cnVjdCBrc21iZF93b3JrICp3b3JrKVxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDU0NS1cXHRpZiAoIShkaXJfZnAtXFx1MDAzZWRhY2Nlc3MgXFx1MDAyNiBGSUxFX0xJU1RfRElSRUNUT1JZX0xFKSB8fFxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQ1NDY6XFx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZGlyX2ZwLVxcdTAwM2VmaWxwKSxcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy00NTQ3LVxcdFxcdFxcdCAgICAgZmlsZV9pbm9kZShkaXJfZnAtXFx1MDAzZWZpbHApLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM9NDgxOD1zdGF0aWMgaW50IHNtYjJfZ2V0X2VhKHN0cnVjdCBrc21iZF93b3JrICp3b3JrLCBzdHJ1Y3Qga3NtYmRfZmlsZSAqZnAsXFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy00ODI3LVxcdGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoO1xcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQ4Mjg6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDgyOS1cXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTU0MzE9c3RhdGljIGludCBmaW5kX2ZpbGVfcG9zaXhfaW5mbyhzdHJ1Y3Qgc21iMl9xdWVyeV9pbmZvX3JzcCAqcnNwLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNTQzNS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NTQzNjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKTtcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01NDM3LVxcdHZmc3VpZF90IHZmc3VpZCA9IGlfdWlkX2ludG9fdmZzdWlkKGlkbWFwLCBpbm9kZSk7XFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz01ODgzPXN0YXRpYyBpbnQgc21iMl9nZXRfaW5mb19zZWMoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssXFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01OTI1LVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjU5MjY6XFx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNTkyNy1cXHRpbm9kZSA9IGZpbGVfaW5vZGUoZnAtXFx1MDAzZWZpbHApO1xcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM9NjIzND1zdGF0aWMgaW50IHNtYjJfcmVuYW1lKHN0cnVjdCBrc21iZF93b3JrICp3b3JrLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjI3My1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYzo2Mjc0OlxcdFxcdHJjID0ga3NtYmRfdmZzX3NldHhhdHRyKGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKSxcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy02Mjc1LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9wYXRoLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM9NjM3Mz1zdGF0aWMgaW50IHNldF9maWxlX2Jhc2ljX2luZm8oc3RydWN0IGtzbWJkX2ZpbGUgKmZwLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjM4OC1cXHRpbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NjM4OTpcXHRpZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTYzOTAtXFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz04MzU3PXN0YXRpYyBpbmxpbmUgaW50IGZzY3RsX3NldF9zcGFyc2Uoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHU2NCBpZCxcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTgzNzgtXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6ODM3OTpcXHRpZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKTtcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy04MzgwLVxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWJfY29tbW9uLmM9NDQ1PWludCBrc21iZF9wb3B1bGF0ZV9kb3RfZG90ZG90X2VudHJpZXMoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIGludCBpbmZvX2xldmVsLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWJfY29tbW9uLmMtNDU0LVxcdHN0cnVjdCBrc21iZF9jb25uICpjb25uID0gd29yay1cXHUwMDNlY29ubjtcXG5mcy9zbWIvc2VydmVyL3NtYl9jb21tb24uYzo0NTU6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChkaXItXFx1MDAzZWZpbHApO1xcbmZzL3NtYi9zZXJ2ZXIvc21iX2NvbW1vbi5jLTQ1Ni1cXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmM9MjQ4PXN0YXRpYyBpbnQga3NtYmRfdmZzX3N0cmVhbV9yZWFkKHN0cnVjdCBrc21iZF9maWxlICpmcCwgY2hhciAqYnVmLCBsb2ZmX3QgKnBvcyxcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMjU4LVxcdHNhdmVkX2NyZWQgPSBvdmVycmlkZV9jcmVkcyhmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9jcmVkKTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jOjI1OTpcXHR2X2xlbiA9IGtzbWJkX3Zmc19nZXRjYXNleGF0dHIoZmlsZV9tbnRfaWRtYXAoZnAtXFx1MDAzZWZpbHApLFxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMjYwLVxcdFxcdFxcdFxcdCAgICAgICBmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9wYXRoLmRlbnRyeSxcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmM9Mzg1PXN0YXRpYyBpbnQga3NtYmRfdmZzX3N0cmVhbV93cml0ZShzdHJ1Y3Qga3NtYmRfZmlsZSAqZnAsIGNoYXIgKmJ1ZiwgbG9mZl90ICpwb3MsXFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTM4OS1cXHRjaGFyICpzdHJlYW1fYnVmID0gTlVMTCwgKndidWY7XFxuZnMvc21iL3NlcnZlci92ZnMuYzozOTA6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci92ZnMuYy0zOTEtXFx0c2l6ZV90IHNpemU7XFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTEwMTU9aW50IGtzbWJkX3Zmc191bmxpbmsoc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTEwMTktXFx0c3RydWN0IGRlbnRyeSAqZGlyLCAqZGVudHJ5ID0gZmlscC1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jOjEwMjA6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTEwMjEtXFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTE5NTc9aW50IGtzbWJkX3Zmc19zZXRfY29tcHJlc3Npb24oc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHN0cnVjdCBrc21iZF9maWxlICpmcCwgdTE2IGZtdClcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMTk2MS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jOjE5NjI6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci92ZnMuYy0xOTYzLVxcdHUzMiBmbGFncztcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzX2NhY2hlLmM9MzY5PXN0YXRpYyB2b2lkIF9fa3NtYmRfaW5vZGVfY2xvc2Uoc3RydWN0IGtzbWJkX2ZpbGUgKmZwKVxcbi0tXFxuZnMvc21iL3NlcnZlci92ZnNfY2FjaGUuYy0zOTAtXFx0XFx0XFx0c2F2ZWRfY3JlZCA9IG92ZXJyaWRlX2NyZWRzKGZpbHAtXFx1MDAzZWZfY3JlZCk7XFxuZnMvc21iL3NlcnZlci92ZnNfY2FjaGUuYzozOTE6XFx0XFx0XFx0ZXJyID0ga3NtYmRfdmZzX3JlbW92ZV94YXR0cihmaWxlX21udF9pZG1hcChmaWxwKSxcXG5mcy9zbWIvc2VydmVyL3Zmc19jYWNoZS5jLTM5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZmaWxwLVxcdTAwM2VmX3BhdGgsXFxuLS1cXG5mcy94YXR0ci5jPTY2Nj1pbnQgZmlsZV9zZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGtlcm5lbF94YXR0cl9jdHggKmN0eClcXG4tLVxcbmZzL3hhdHRyLmMtNjcxLVxcdFxcdGF1ZGl0X2ZpbGUoZik7XFxuZnMveGF0dHIuYzo2NzI6XFx0XFx0ZXJyb3IgPSBkb19zZXR4YXR0cihmaWxlX21udF9pZG1hcChmKSwgZi1cXHUwMDNlZl9wYXRoLmRlbnRyeSwgY3R4KTtcXG5mcy94YXR0ci5jLTY3My1cXHRcXHRtbnRfZHJvcF93cml0ZV9maWxlKGYpO1xcbi0tXFxuZnMveGF0dHIuYz04MjI9c3NpemVfdCBmaWxlX2dldHhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KVxcbi0tXFxuZnMveGF0dHIuYy04MjQtXFx0YXVkaXRfZmlsZShmKTtcXG5mcy94YXR0ci5jOjgyNTpcXHRyZXR1cm4gZG9fZ2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZiksIGYtXFx1MDAzZWZfcGF0aC5kZW50cnksIGN0eCk7XFxuZnMveGF0dHIuYy04MjYtfVxcbi0tXFxuZnMveGF0dHIuYz0xMDM5PXN0YXRpYyBpbnQgZmlsZV9yZW1vdmV4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lKVxcbi0tXFxuZnMveGF0dHIuYy0xMDQ0LVxcdFxcdGF1ZGl0X2ZpbGUoZik7XFxuZnMveGF0dHIuYzoxMDQ1OlxcdFxcdGVycm9yID0gcmVtb3ZleGF0dHIoZmlsZV9tbnRfaWRtYXAoZiksXFxuZnMveGF0dHIuYy0xMDQ2LVxcdFxcdFxcdFxcdCAgICBmLVxcdTAwM2VmX3BhdGguZGVudHJ5LCBrbmFtZS1cXHUwMDNlbmFtZSk7XFxuLS1cXG5mcy94ZnMveGZzX2ZpbGUuYz0xMjQzPXhmc19mYWxsb2Nfc2V0c2l6ZShcXG4tLVxcbmZzL3hmcy94ZnNfZmlsZS5jLTEyNTMtXFx0XFx0cmV0dXJuIDA7XFxuZnMveGZzL3hmc19maWxlLmM6MTI1NDpcXHRyZXR1cm4geGZzX3ZuX3NldGF0dHJfc2l6ZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXFxuZnMveGZzL3hmc19maWxlLmMtMTI1NS1cXHRcXHRcXHRcXHUwMDI2aWF0dHIpO1xcbi0tXFxuZnMveGZzL3hmc19pb2N0bC5jPTgxPXhmc19pb2NfZnNidWxrc3RhdChcXG4tLVxcbmZzL3hmcy94ZnNfaW9jdGwuYy04OS1cXHRcXHQubXBcXHRcXHQ9IG1wLFxcbmZzL3hmcy94ZnNfaW9jdGwuYzo5MDpcXHRcXHQuaWRtYXBcXHRcXHQ9IGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbmZzL3hmcy94ZnNfaW9jdGwuYy05MS1cXHRcXHQub2NvdW50XFx0XFx0PSAwLFxcbi0tXFxuZnMveGZzL3hmc19pb2N0bC5jPTI2ND14ZnNfaW9jX2J1bGtzdGF0KFxcbi0tXFxuZnMveGZzL3hmc19pb2N0bC5jLTI3Mi1cXHRcXHQubXBcXHRcXHRcXHQ9IG1wLFxcbmZzL3hmcy94ZnNfaW9jdGwuYzoyNzM6XFx0XFx0LmlkbWFwXFx0XFx0XFx0PSBmaWxlX21udF9pZG1hcChmaWxlKSxcXG5mcy94ZnMveGZzX2lvY3RsLmMtMjc0LVxcdH07XFxuLS1cXG5mcy94ZnMveGZzX2lvY3RsMzIuYz0xOTg9eGZzX2NvbXBhdF9pb2NfZnNidWxrc3RhdChcXG4tLVxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jLTIwNy1cXHRcXHQubXBcXHRcXHQ9IG1wLFxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jOjIwODpcXHRcXHQuaWRtYXBcXHRcXHQ9IGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jLTIwOS1cXHRcXHQub2NvdW50XFx0XFx0PSAwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTI0NDA9c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IGZpbGVuYW1lKSAlIDY0ID09IDApO1xcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQxLVxcbmluY2x1ZGUvbGludXgvZnMuaDoyNDQyOnN0YXRpYyBpbmxpbmUgc3RydWN0IG1udF9pZG1hcCAqZmlsZV9tbnRfaWRtYXAoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXFxuaW5jbHVkZS9saW51eC9mcy5oLTI0NDMte1xcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTI0NDc9c3RhdGljIGlubGluZSBib29sIGZpbGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ0OC17XFxuaW5jbHVkZS9saW51eC9mcy5oOjI0NDk6XFx0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpO1xcbmluY2x1ZGUvbGludXgvZnMuaC0yNDUwLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaD0yNjk0PXN0YXRpYyBpbmxpbmUgaW50IGZpbGVfcGVybWlzc2lvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1hc2spXFxuaW5jbHVkZS9saW51eC9mcy5oLTI2OTUte1xcbmluY2x1ZGUvbGludXgvZnMuaDoyNjk2OlxcdHJldHVybiBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbmluY2x1ZGUvbGludXgvZnMuaC0yNjk3LVxcdFxcdFxcdFxcdGZpbGVfaW5vZGUoZmlsZSksIG1hc2spO1xcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmM9OTE5PWludCBhcHBhcm1vcl9icHJtX2NyZWRzX2Zvcl9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5zZWN1cml0eS9hcHBhcm1vci9kb21haW4uYy05MjgtXFx0Ym9vbCB1bnNhZmUgPSBmYWxzZTtcXG5zZWN1cml0eS9hcHBhcm1vci9kb21haW4uYzo5Mjk6XFx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoZmlsZV9tbnRfaWRtYXAoYnBybS1cXHUwMDNlZmlsZSksXFxuc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMtOTMwLVxcdFxcdFxcdFxcdFxcdCAgICBmaWxlX2lub2RlKGJwcm0tXFx1MDAzZWZpbGUpKTtcXG4tLVxcbnNlY3VyaXR5L2FwcGFybW9yL2ZpbGUuYz00ODM9c3RhdGljIGludCBfX2ZpbGVfcGF0aF9wZXJtKGNvbnN0IGNoYXIgKm9wLCBjb25zdCBzdHJ1Y3QgY3JlZCAqc3Vial9jcmVkLFxcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvZmlsZS5jLTQ4OS1cXHRzdHJ1Y3QgYWFfcGVybXMgcGVybXMgPSB7fTtcXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmM6NDkwOlxcdHZmc3VpZF90IHZmc3VpZCA9IGlfdWlkX2ludG9fdmZzdWlkKGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbnNlY3VyaXR5L2FwcGFybW9yL2ZpbGUuYy00OTEtXFx0XFx0XFx0XFx0XFx0ICAgIGZpbGVfaW5vZGUoZmlsZSkpO1xcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvbHNtLmM9NDYxPXN0YXRpYyBpbnQgYXBwYXJtb3JfZmlsZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvbHNtLmMtNDg0LVxcdGlmICghdW5jb25maW5lZChsYWJlbCkpIHtcXG5zZWN1cml0eS9hcHBhcm1vci9sc20uYzo0ODU6XFx0XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5zZWN1cml0eS9hcHBhcm1vci9sc20uYy00ODYtXFx0XFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XFxuLS1cXG5zZWN1cml0eS9jb21tb25jYXAuYz03NjM9c3RhdGljIGludCBnZXRfZmlsZV9jYXBzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuc2VjdXJpdHkvY29tbW9uY2FwLmMtNzg0LVxcbnNlY3VyaXR5L2NvbW1vbmNhcC5jOjc4NTpcXHRyYyA9IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuc2VjdXJpdHkvY29tbW9uY2FwLmMtNzg2LVxcdFxcdFxcdFxcdCAgICBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5LCBcXHUwMDI2dmNhcHMpO1xcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTI1ND1zdGF0aWMgaW50IHByb2Nlc3NfbWVhc3VyZW1lbnQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkLFxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTI4Mi1cXHQgKi9cXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmM6MjgzOlxcdGFjdGlvbiA9IGltYV9nZXRfYWN0aW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgY3JlZCwgcHJvcCxcXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtMjg0LVxcdFxcdFxcdFxcdG1hc2ssIGZ1bmMsIFxcdTAwMjZwY3IsIFxcdTAwMjZ0ZW1wbGF0ZV9kZXNjLCBOVUxMLFxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTU0Mz1zdGF0aWMgaW50IGltYV9maWxlX21wcm90ZWN0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHJlcXByb3QsXFxuLS1cXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtNTYzLVxcdGlub2RlID0gZmlsZV9pbm9kZSh2bWEtXFx1MDAzZXZtX2ZpbGUpO1xcbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYzo1NjQ6XFx0YWN0aW9uID0gaW1hX2dldF9hY3Rpb24oZmlsZV9tbnRfaWRtYXAodm1hLVxcdTAwM2V2bV9maWxlKSwgaW5vZGUsXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTU2NS1cXHRcXHRcXHRcXHRjdXJyZW50X2NyZWQoKSwgXFx1MDAyNnByb3AsIE1BWV9FWEVDLCBNTUFQX0NIRUNLLFxcbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy01NjYtXFx0XFx0XFx0XFx0XFx1MDAyNnBjciwgXFx1MDAyNnRlbXBsYXRlLCBOVUxMLCBOVUxMKTtcXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmM6NTY3OlxcdGFjdGlvbiB8PSBpbWFfZ2V0X2FjdGlvbihmaWxlX21udF9pZG1hcCh2bWEtXFx1MDAzZXZtX2ZpbGUpLCBpbm9kZSxcXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtNTY4LVxcdFxcdFxcdFxcdCBjdXJyZW50X2NyZWQoKSwgXFx1MDAyNnByb3AsIE1BWV9FWEVDLFxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTExNzY9dm9pZCBpbWFfa2V4ZWNfY21kbGluZShpbnQga2VybmVsX2ZkLCBjb25zdCB2b2lkICpidWYsIGludCBzaXplKVxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTExODQtXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjExODU6XFx0cHJvY2Vzc19idWZmZXJfbWVhc3VyZW1lbnQoZmlsZV9tbnRfaWRtYXAoZmRfZmlsZShmKSksIGZpbGVfaW5vZGUoZmRfZmlsZShmKSksXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTExODYtXFx0XFx0XFx0XFx0ICAgYnVmLCBzaXplLCBcXFwia2V4ZWMtY21kbGluZVxcXCIsIEtFWEVDX0NNRExJTkUsIDAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjMwLjY5OTE2MzM4NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2OTgzMjM5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYWR2aXNlIGFuZCBNaW5jb3JlIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBtbS9taW5jb3JlLmNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgLCBhbmQgYGRvX21pbmNvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlci4gSG1tLCBgbWFkdmlzZV9wYWdlb3V0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl0J3MgbGlrZWx5IGNhbGxlZCB3aXRoaW4gdGhlIHNhbWUgZmlsZS4gTGV0J3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgaXQncyBpbnZva2VkIGJ5IGBtYWR2aXNlX3ZtYV9iZWhhdmlvcmAgb3IgcGVyaGFwcyBkaXJlY3RseSBieSBgZG9fbWFkdmlzZWAuIEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdC5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYm90aCBgbWFkdmlzZV9wYWdlb3V0YCBhbmQgYGRvX21pbmNvcmVgIGNhcmVmdWxseS4gSSByZWNhbGwgYGRvX21pbmNvcmVgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVoaW5kIHRoZSBgc3lzX21pbmNvcmVgIHN5c3RlbSBjYWxsLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgZm9yIGBtYWR2aXNlX3BhZ2VvdXRgLiBJIHN1c3BlY3QgSSdsbCBmaW5kIGl0IHdpdGhpbiBgbWFkdmlzZV92bWFfYmVoYXZpb3JgIG9yIHNvbWUgc2ltaWxhciBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gaW4gYG1tL21hZHZpc2UuY2AuIE9rYXksIGxldCdzIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI3MTcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6MzUuMzk3NDg5MjAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDYxNTYyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFkdmlzZV9wYWdlb3V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21hZHZpc2UuYz01OTU9c3RhdGljIGxvbmcgbWFkdmlzZV9jb2xkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTYxMC1cXG5tbS9tYWR2aXNlLmM6NjExOnN0YXRpYyB2b2lkIG1hZHZpc2VfcGFnZW91dF9wYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXFxubW0vbWFkdmlzZS5jLTYxMi1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL21hZHZpc2UuYy02MjUtXFxubW0vbWFkdmlzZS5jOjYyNjpzdGF0aWMgbG9uZyBtYWR2aXNlX3BhZ2VvdXQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXFxubW0vbWFkdmlzZS5jLTYyNy17XFxuLS1cXG5tbS9tYWR2aXNlLmMtNjQ1LVxcdHRsYl9nYXRoZXJfbW11KFxcdTAwMjZ0bGIsIG1hZHZfYmVoYXZpb3ItXFx1MDAzZW1tKTtcXG5tbS9tYWR2aXNlLmM6NjQ2OlxcdG1hZHZpc2VfcGFnZW91dF9wYWdlX3JhbmdlKFxcdTAwMjZ0bGIsIHZtYSwgXFx1MDAyNm1hZHZfYmVoYXZpb3ItXFx1MDAzZXJhbmdlKTtcXG5tbS9tYWR2aXNlLmMtNjQ3LVxcdHRsYl9maW5pc2hfbW11KFxcdTAwMjZ0bGIpO1xcbi0tXFxubW0vbWFkdmlzZS5jPTEzMzg9c3RhdGljIGludCBtYWR2aXNlX3ZtYV9iZWhhdmlvcihzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcXG4tLVxcbm1tL21hZHZpc2UuYy0xMzU2LVxcdGNhc2UgTUFEVl9QQUdFT1VUOlxcbm1tL21hZHZpc2UuYzoxMzU3OlxcdFxcdHJldHVybiBtYWR2aXNlX3BhZ2VvdXQobWFkdl9iZWhhdmlvcik7XFxubW0vbWFkdmlzZS5jLTEzNTgtXFx0Y2FzZSBNQURWX0ZSRUU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjM3LjIwMzY1MTc2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk0OTE5NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQYWdlb3V0IGFuZCBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhlIHBhZ2VvdXQgcHJvY2VzcyDigJMgYGRvX21pbmNvcmVgIGFuZCBgbWFkdmlzZV9wYWdlb3V0YC4gQnV0IGhvbGQgb24sIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUgc2xpZ2h0bHkuIExvb2tpbmcgZGVlcGVyLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBzZWVtcyBpbXBvcnRhbnQgYXMgd2VsbCwgYmVjYXVzZSBpdCBjYWxscyBgY2FuX2RvX2ZpbGVfcGFnZW91dGAuIE5vdywgSSByZWNhbGwgdGhhdCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBmdW5jdGlvbnMgYXMgYSBwYWdlIHdhbGsgY2FsbGJhY2suIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCBpdHNlbGYuIEnigJlsbCBuYXZpZ2F0ZSB0byBgbW0vbWFkdmlzZS5jYCB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyB3aXRoaW4gdGhhdCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1OTYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6NDEuMDk4NTc0NDE5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk3MjQ3OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9kb19maWxlX3BhZ2VvdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWFkdmlzZS5jPTI4MT1zdGF0aWMgbG9uZyBtYWR2aXNlX3dpbGxuZWVkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTMyOC1cXG5tbS9tYWR2aXNlLmM6MzI5OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbm1tL21hZHZpc2UuYy0zMzAte1xcbi0tXFxubW0vbWFkdmlzZS5jPTM1Mz1zdGF0aWMgaW50IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZShwbWRfdCAqcG1kLFxcbi0tXFxubW0vbWFkdmlzZS5jLTM3My1cXHRwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0IFxcdTAwMjZcXHUwMDI2ICF2bWFfaXNfYW5vbnltb3VzKHZtYSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9tYWR2aXNlLmM6Mzc0OlxcdFxcdFxcdFxcdFxcdCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7XFxubW0vbWFkdmlzZS5jLTM3NS1cXG4tLVxcbm1tL21hZHZpc2UuYz02MjY9c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTYzOS1cXHQgKi9cXG5tbS9tYWR2aXNlLmM6NjQwOlxcdGlmICghdm1hX2lzX2Fub255bW91cyh2bWEpIFxcdTAwMjZcXHUwMDI2ICghY2FuX2RvX2ZpbGVfcGFnZW91dCh2bWEpIFxcdTAwMjZcXHUwMDI2XFxubW0vbWFkdmlzZS5jLTY0MS1cXHRcXHRcXHRcXHQodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX01BWVNIQVJFKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjQyLjk5NTgyODI1NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU1Mzk2ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRm9jdXNpbmcgTXkgQW5hbHlzaXMgb2YgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyIGludG8gc29tZSBtZW1vcnkgbWFuYWdlbWVudCB0b29scyBhbmQgYmVoYXZpb3JzLiBJJ3ZlIGdvdCBhIGNvdXBsZSBvZiBrZXkgYXJlYXMgdG8gY29uY2VudHJhdGUgb24uIEl0IGxvb2tzIGxpa2UgYG1hZHZpc2VfcGFnZW91dGAgYW5kIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgIGFyZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgcGFnZW91dCBtZWNoYW5pc21zIGFuZCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGVtLiBUaG9zZSBmdW5jdGlvbnMgbGlrZWx5IGhvbGQgdGhlIGNvcmUgbG9naWMgSSdtIGxvb2tpbmcgZm9yLlxuXG5UaGVuIHRoZXJlJ3MgYG1pbmNvcmUuY2AsIGFuZCBzcGVjaWZpY2FsbHkgYGRvX21pbmNvcmVgLiBUaGF0IHNlZW1zIGxpa2UgYW4gb2J2aW91cyBmdW5jdGlvbiB0byBzdHVkeS4gVGhpcyB3b3VsZCBiZSBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBgbWluY29yZWAgc3lzdGVtIGNhbGwgd29ya3MgdG8gZGV0ZXJtaW5lIHJlc2lkZW50IG1lbW9yeSBwYWdlcy4gSSB0aGluayBJIHdpbGwgc3R1ZHkgaG93IHRoYXQgc3lzdGVtIGNhbGwgaXMgaW1wbGVtZW50ZWQsIHNvIHRoYXQgSSBoYXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSB1c2VyIGFjY2Vzc2VzIG1lbW9yeSByZXNpZGVuY2UgaW5mb3JtYXRpb24uXG5cbkFuZCBmaW5hbGx5LCBzb21ldGhpbmcgZWxzZSB0aGF0IGNhdWdodCBteSBleWUgaXMgYGNhbl9kb19jYWNoZXN0YXRgIGluIGBtbS9maWxlbWFwLmNgLiBUaGF0IGZ1bmN0aW9uICpjb3VsZCogYmUgYSByZWxhdGVkIGFyZWEgZm9yIGNvbnNpZGVyYXRpb24gYXMgd2VsbCwgc2luY2UgdGhhdCBmaWxlIGlzIHJlbGF0ZWQgdG8gYGZpbGVtYXBgLCB3aGljaCByZWxhdGVzIHRvIGNhY2hlZCBmaWxlIGRhdGEgdGhhdCB3b3VsZCBhbHNvIGJlIHBhZ2VkIG91dCBvciBtYW5hZ2VkIGRpZmZlcmVudGx5IGluIHRoZSBzeXN0ZW0uIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoYXQsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIGltcGxpY2F0aW9ucyBvbiBwYWdlb3V0L2NhY2hlc3RhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyMzIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1Nzo0OC4wNTEyMjc1MTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDUyOTk4NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FuX2RvX2NhY2hlc3RhdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9maWxlbWFwLmM9NDYwMj1zdGF0aWMgdm9pZCBmaWxlbWFwX2NhY2hlc3RhdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzAyLSAqL1xcbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbm1tL2ZpbGVtYXAuYy00NzA0LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYz00NzQ2PVNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXFxuLS1cXG5tbS9maWxlbWFwLmMtNDc2Ni1cXG5tbS9maWxlbWFwLmM6NDc2NzpcXHRpZiAoIWNhbl9kb19jYWNoZXN0YXQoZmRfZmlsZShmKSkpXFxubW0vZmlsZW1hcC5jLTQ3NjgtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6NDkuODk2NTMzNDcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NjAxNDU3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIElkZW50aWZ5aW5nIFJlbGV2YW50IEZ1bmN0aW9ucyBhbmQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIGNhY2hlIHN0YXRpc3RpY3MuIElzIGl0IGBzeXNfY2FjaGVzdGF0YCwgYF9feDY0X3N5c19jYWNoZXN0YXRgLCBvciBwZXJoYXBzIGBmaWxlbWFwX2NhY2hlc3RhdGA/IE5vLCB3YWl0IGEgbWludXRlLCBgY2FuX2RvX2NhY2hlc3RhdGAgaXMgKmNhbGxlZCogaW4gYFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIC4uLilgIHdoaWNoICppcyogYHN5c19jYWNoZXN0YXRgLiBUaGF0IHNldHRsZXMgaXQuXG5cblNvLCB0aGUgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRvX21pbmNvcmVgLCBgbWFkdmlzZV9wYWdlb3V0YCwgYW5kIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgLlxuXG5BaCwgYnV0IHRoZSBvcmlnaW5hbCB0aG91Z2h0IGhhZCBgc3lzX2NhY2hlc3RhdGAgYXMgYSBzeXNjYWxsLCBhbmQgc3l6a2FsbGVyIHVzdWFsbHkgYXR0YWNrcyBzeXNjYWxscyBkaXJlY3RseS4gU28gbWF5YmUgdGhlIGZvY3VzIHNob3VsZCBiZSBgZmlsZW1hcF9jYWNoZXN0YXRgPyBObywgbm8sIGBjYW5fZG9fY2FjaGVzdGF0YCAqaXMqIHdpdGhpbiBgc3lzX2NhY2hlc3RhdGAsIHNvIHRoYXQncyB0aGUgcGF0aC4gSSdsbCBqdXN0IGtlZXAgdGhlIHByaW9yIGxpc3Qgb2YgZnVuY3Rpb25zOiBgZG9fbWluY29yZWAsIGBtYWR2aXNlX3BhZ2VvdXRgLCBhbmQgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAuXG5cbk5vdywgY29uZmlndXJhdGlvbnMuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhdCBwbGF5LiBJZG1hcHBlZCBtb3VudHMgYXJlIGVuYWJsZWQgYnkgYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgLiBCdXQgdGhvc2UgYXJlIGdlbmVyYWwgYW5kIG5vdCBzcGVjaWZpYyB0byB0aGlzIHBhdGNoLlxuXG5JcyB0aGVyZSBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGBtYWR2aXNlYCBvciBgbWluY29yZWA/IFBlcmhhcHMgYENPTkZJR19BRFZJU0VfU1lTQ0FMTFNgPyBUaW1lIHRvIGRpZyBpbnRvIGBtbS9LY29uZmlnYCBvciBgaW5pdC9LY29uZmlnYCBhbmQgZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Nzk3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjU2LjM1NjY4MTIyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MTQ0NDA0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQURWSVNFX1NZU0NBTExTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz0xOTM3PWNvbmZpZyBJT19VUklOR19NT0NLX0ZJTEVcXG4tLVxcbmluaXQvS2NvbmZpZy0xOTQ3LVxcbmluaXQvS2NvbmZpZzoxOTQ4OmNvbmZpZyBBRFZJU0VfU1lTQ0FMTFNcXG5pbml0L0tjb25maWctMTk0OS1cXHRib29sIFxcXCJFbmFibGUgbWFkdmlzZS9mYWR2aXNlIHN5c2NhbGxzXFxcIiBpZiBFWFBFUlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6NTguMzA4MTMwOTkyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDQyMjI5MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkNvbnNpZGVyaW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBNZW1vcnkgTWFuYWdlbWVudCoqXG5cblJpZ2h0LCBzbyBJJ20gZXZhbHVhdGluZyBrZXJuZWwgY29uZmlndXJhdGlvbnMgYW5kIGltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIGluY2x1ZGluZyBgQURWSVNFX1NZU0NBTExTYCBpcyBhIHNvbGlkIG1vdmUuIEl0IHByb3ZpZGVzIGltcG9ydGFudCBoaW50cyB0byB0aGUga2VybmVsIGFib3V0IGhvdyB3ZSBleHBlY3QgdG8gYWNjZXNzIG1lbW9yeSBhbmQgdGhhdCdzIGdlbmVyYWxseSBhIHBlcmZvcm1hbmNlIHdpbi4gQnV0IHRoYXQgbGVhZHMgbWUgdG8gdGhpbmsgYWJvdXQgYG1pbmNvcmVgLCBhbmQgaG93IGl0IHJlbGF0ZXMuIElzIHRoZXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVkaWNhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgbWluY29yZWAgZnVuY3Rpb25hbGl0eT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGN1cnJlbnQgYnVpbGQgaW5jbHVkZXMgdGhhdCBhYmlsaXR5IGFuZCBpZiBub3QsIGhvdyBlYXNpbHkgaXQgY2FuIGJlIGludHJvZHVjZWQuIFRoYXQga2luZCBvZiBpbnNpZ2h0IGRpcmVjdGx5IGluZmx1ZW5jZXMgbXkgbmV4dCBzdGVwcyBpbiB0aGUgYnVpbGQgYW5kIG9wdGltaXphdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU1NSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjAxLjUxMjM1NzEwNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDQyMzI5NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1JTkNPUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjAzLjQ0Mjc5Mjk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTYyOTIwOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgQnVpbGQgUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbWluY29yZS5vYCBpcyBiZWluZyBidWlsdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQtcmVsYXRlZCBvYmplY3QgZmlsZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZmluZWQsIG9yIGF0IGxlYXN0IGxpbmtlZC4gSSdtIGFzc3VtaW5nIGl0J3MgdW5kZXIgdGhlIGBtbS9gIGRpcmVjdG9yeSwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBrZXJuZWwgY29kZS4gTWFrZXMgc2Vuc2UgdG8gc3RhcnQgdGhlcmUsIGFzIHRoZSBtYWtlZmlsZXMgb3JjaGVzdHJhdGUgdGhlIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nIHByb2Nlc3MsIHNvIGl0J3MgdGhlIG9idmlvdXMgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcmVjaXBlIGZvciBhIHNwZWNpZmljIG9iamVjdCBmaWxlLiBMZXQncyBzZWUgd2hhdCB0aGUgbWFrZWZpbGUgdGVsbHMgdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzczLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTg6MDcuMTk5MDg3MjYyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA3MTI1ODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1pbmNvcmVcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MzY9bW11LXlcXHRcXHRcXHQ6PSBub21tdS5vXFxubW0vTWFrZWZpbGU6Mzc6bW11LSQoQ09ORklHX01NVSlcXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXFxcXG5tbS9NYWtlZmlsZS0zOC1cXHRcXHRcXHQgICBtbG9jay5vIG1tYXAubyBtbXVfZ2F0aGVyLm8gbXByb3RlY3QubyBtcmVtYXAubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjA5LjcwNjIyMjcyMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcyMzQwNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGxhaW5pbmcgYWJvdXQgYG1pbmNvcmUub2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBpc3N1ZSBib2lscyBkb3duIHRvIGBDT05GSUdfTU1VYC4gQnV0IGhvbGQgb24sIGlzbid0IGBDT05GSUdfTU1VYCBhIGdpdmVuIGZvciBhbGwgb2Ygb3VyIHRhcmdldCBwbGF0Zm9ybXM/IEknbSBwcmV0dHkgc3VyZSBpdCBpcy4gV2UndmUgYWx3YXlzIG5lZWRlZCBhIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXQsIHNvIHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucywgdGhvdWdoLCBhbmQgSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gY29uZmlybSBpdCBpbiBvdXIgYmFzZSBjb25maWcgZmlsZXMuIEl0J3MgdXN1YWxseSB0aGUgc2ltcGxlIHRoaW5ncyB0aGF0IHRyaXAgdXMgdXAuXG5cbk5vdywgd2hhdCB3YXMgdGhhdCBvdGhlciBtb2R1bGUgdGhlIGJ1aWxkIHdhcyBncnVtYmxpbmcgYWJvdXQ/IE9oIHllYWgsIGBjYWNoZXN0YXRgLiBEb2VzIGBjYWNoZXN0YXRgIHJlbHkgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSSBzaG91bGQgcXVpY2tseSBzY2FuIHRoZSBLY29uZmlnIHRvIHNlZSBpZiB0aGVyZSdzIGEgcmVsZXZhbnQgb3B0aW9uIEkndmUgb3Zlcmxvb2tlZCwgYmVjYXVzZSBJIGFtIGZhaXJseSBjZXJ0YWluIEkgaGF2ZSBuZXZlciBkZWFsdCB3aXRoIGl0IGJlZm9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwNTgsIk91dHB1dFRva2VucyI6MTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODoxNC4yNzg1NjU1MjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTY0NDM0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FjaGVzdGF0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTU3MTM9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6NTcxNDpGOlxcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXFxuTUFJTlRBSU5FUlMtNTcxNS1cXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ5Mi01NjBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19uaV9zeXNjYWxsXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDkzOjU2MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTQtNTYyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDY3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6NDY4OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00NjktNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00NjQtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQ2NTo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00NjYtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTItNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1Mzo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTQtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1OTo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjAtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzkxLTQ1MFxcdG4zMlxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzkyOjQ1MVxcdG4zMlxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zOTMtNDUyXFx0bjMyXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzY3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzY4OjQ1MVxcdG42NFxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjktNDUyXFx0bjY0XFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDQwLTQ1MFxcdG8zMlxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6NDQxOjQ1MVxcdG8zMlxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NDItNDUyXFx0bzMyXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1MS00NTBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTI6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NDMtNDUwIFxcdG5vc3B1XFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU0NDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NDUtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzktNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODEtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU2LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU3OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk4LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDU4LTQ1MFxcdGkzODZcXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ1OTo0NTFcXHRpMzg2XFx0Y2FjaGVzdGF0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ2MC00NTJcXHRpMzg2XFx0ZmNobW9kYXQyXFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzc4OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zNzktNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyMy00NTBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MjUtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTc0PWVudW0gbGFuZGxvY2tfcnVsZV90eXBlO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo3NTpzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo3NjpzdHJ1Y3QgY2FjaGVzdGF0O1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC03Ny1zdHJ1Y3Qgc3RhdG1vdW50O1xcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTk5NT1hc21saW5rYWdlIGxvbmcgc3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTk5Ny1cXHRcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBmbGFncyk7XFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjk5ODphc21saW5rYWdlIGxvbmcgc3lzX2NhY2hlc3RhdCh1bnNpZ25lZCBpbnQgZmQsXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjk5OTpcXHRcXHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIF9fdXNlciAqY3N0YXRfcmFuZ2UsXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjEwMDA6XFx0XFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKmNzdGF0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0xMDAxLWFzbWxpbmthZ2UgbG9uZyBzeXNfbWFwX3NoYWRvd19zdGFjayh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD04MTQ9X19TWVNDQUxMKF9fTlJfc2V0X21lbXBvbGljeV9ob21lX25vZGUsIHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZSlcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE1OiNkZWZpbmUgX19OUl9jYWNoZXN0YXQgNDUxXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjgxNjpfX1NZU0NBTEwoX19OUl9jYWNoZXN0YXQsIHN5c19jYWNoZXN0YXQpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTgxNy0jZGVmaW5lIF9fTlJfZmNobW9kYXQyIDQ1Mlxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC00NS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjQ2OnN0cnVjdCBjYWNoZXN0YXRfcmFuZ2Uge1xcbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDctXFx0X191NjQgb2ZmO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC01MC1cXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjUxOnN0cnVjdCBjYWNoZXN0YXQge1xcbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNTItXFx0X191NjQgbnJfY2FjaGU7XFxuLS1cXG5pbml0L0tjb25maWc9MjA0MT1jb25maWcgQ0FDSEVTVEFUX1NZU0NBTExcXG5pbml0L0tjb25maWc6MjA0MjpcXHRib29sIFxcXCJFbmFibGUgY2FjaGVzdGF0KCkgc3lzdGVtIGNhbGxcXFwiIGlmIEVYUEVSVFxcbmluaXQvS2NvbmZpZy0yMDQzLVxcdGRlZmF1bHQgeVxcbmluaXQvS2NvbmZpZy0yMDQ0LVxcdGhlbHBcXG5pbml0L0tjb25maWc6MjA0NTpcXHQgIEVuYWJsZSB0aGUgY2FjaGVzdGF0IHN5c3RlbSBjYWxsLCB3aGljaCBxdWVyaWVzIHRoZSBwYWdlIGNhY2hlXFxuaW5pdC9LY29uZmlnLTIwNDYtXFx0ICBzdGF0aXN0aWNzIG9mIGEgZmlsZSAobnVtYmVyIG9mIGNhY2hlZCBwYWdlcywgZGlydHkgcGFnZXMsXFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MTk1PUNPTkRfU1lTQ0FMTChzZXRfbWVtcG9saWN5X2hvbWVfbm9kZSk7XFxua2VybmVsL3N5c19uaS5jOjE5NjpDT05EX1NZU0NBTEwoY2FjaGVzdGF0KTtcXG5rZXJuZWwvc3lzX25pLmMtMTk3LUNPTkRfU1lTQ0FMTChtc2VhbCk7XFxuLS1cXG5tbS9maWxlbWFwLmM9NDU4Nz1FWFBPUlRfU1lNQk9MX0dQTChmaWxlbWFwX2ludmFsaWRhdGVfaW5vZGUpO1xcbi0tXFxubW0vZmlsZW1hcC5jLTQ1OTAtLyoqXFxubW0vZmlsZW1hcC5jOjQ1OTE6ICogZmlsZW1hcF9jYWNoZXN0YXQoKSAtIGNvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIG1hcHBpbmdcXG5tbS9maWxlbWFwLmMtNDU5Mi0gKiBAbWFwcGluZzpcXHRUaGUgbWFwcGluZyB0byBjb21wdXRlIHRoZSBzdGF0aXN0aWNzIGZvci5cXG4tLVxcbm1tL2ZpbGVtYXAuYy00NTk0LSAqIEBsYXN0X2luZGV4OlxcdFRoZSBmaW5hbCBwYWdlIGluZGV4IChpbmNsdXNpdmUpLlxcbm1tL2ZpbGVtYXAuYzo0NTk1OiAqIEBjczpcXHR0aGUgY2FjaGVzdGF0IHN0cnVjdCB0byB3cml0ZSB0aGUgcmVzdWx0IHRvLlxcbm1tL2ZpbGVtYXAuYy00NTk2LSAqXFxuLS1cXG5tbS9maWxlbWFwLmMtNDYwMS0gKi9cXG5tbS9maWxlbWFwLmM6NDYwMjpzdGF0aWMgdm9pZCBmaWxlbWFwX2NhY2hlc3RhdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG5tbS9maWxlbWFwLmM6NDYwMzpcXHRcXHRwZ29mZl90IGZpcnN0X2luZGV4LCBwZ29mZl90IGxhc3RfaW5kZXgsIHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxcbm1tL2ZpbGVtYXAuYy00NjA0LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzAyLSAqL1xcbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbm1tL2ZpbGVtYXAuYy00NzA0LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzEyLS8qXFxubW0vZmlsZW1hcC5jOjQ3MTM6ICogVGhlIGNhY2hlc3RhdCgyKSBzeXN0ZW0gY2FsbC5cXG5tbS9maWxlbWFwLmMtNDcxNC0gKlxcbm1tL2ZpbGVtYXAuYzo0NzE1OiAqIGNhY2hlc3RhdCgpIHJldHVybnMgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIGZpbGUgaW4gdGhlXFxubW0vZmlsZW1hcC5jLTQ3MTYtICogYnl0ZXMgcmFuZ2Ugc3BlY2lmaWVkIGJ5IGBvZmZgIGFuZCBgbGVuYDogbnVtYmVyIG9mIGNhY2hlZCBwYWdlcyxcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzM0LSAqXFxubW0vZmlsZW1hcC5jOjQ3MzU6ICogQmVjYXVzZSB0aGUgc3RhdHVzIG9mIGEgcGFnZSBjYW4gY2hhbmdlIGFmdGVyIGNhY2hlc3RhdCgpIGNoZWNrcyBpdFxcbm1tL2ZpbGVtYXAuYy00NzM2LSAqIGJ1dCBiZWZvcmUgaXQgcmV0dXJucyB0byB0aGUgYXBwbGljYXRpb24sIHRoZSByZXR1cm5lZCB2YWx1ZXMgbWF5XFxuLS1cXG5tbS9maWxlbWFwLmMtNDc0NS0gKi9cXG5tbS9maWxlbWFwLmM6NDc0NjpTWVNDQUxMX0RFRklORTQoY2FjaGVzdGF0LCB1bnNpZ25lZCBpbnQsIGZkLFxcbm1tL2ZpbGVtYXAuYzo0NzQ3OlxcdFxcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgX191c2VyICosIGNzdGF0X3JhbmdlLFxcbm1tL2ZpbGVtYXAuYzo0NzQ4OlxcdFxcdHN0cnVjdCBjYWNoZXN0YXQgX191c2VyICosIGNzdGF0LCB1bnNpZ25lZCBpbnQsIGZsYWdzKVxcbm1tL2ZpbGVtYXAuYy00NzQ5LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzUxLVxcdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nO1xcbm1tL2ZpbGVtYXAuYzo0NzUyOlxcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NyO1xcbm1tL2ZpbGVtYXAuYzo0NzUzOlxcdHN0cnVjdCBjYWNoZXN0YXQgY3M7XFxubW0vZmlsZW1hcC5jLTQ3NTQtXFx0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzU5LVxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Y3NyLCBjc3RhdF9yYW5nZSxcXG5tbS9maWxlbWFwLmM6NDc2MDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGNhY2hlc3RhdF9yYW5nZSkpKVxcbm1tL2ZpbGVtYXAuYy00NzYxLVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxubW0vZmlsZW1hcC5jLTQ3NjYtXFxubW0vZmlsZW1hcC5jOjQ3Njc6XFx0aWYgKCFjYW5fZG9fY2FjaGVzdGF0KGZkX2ZpbGUoZikpKVxcbm1tL2ZpbGVtYXAuYy00NzY4LVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5tbS9maWxlbWFwLmMtNDc3NS1cXHRcXHRjc3IubGVuID09IDAgPyBVTE9OR19NQVggOiAoY3NyLm9mZiArIGNzci5sZW4gLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbm1tL2ZpbGVtYXAuYzo0Nzc2OlxcdG1lbXNldChcXHUwMDI2Y3MsIDAsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSk7XFxubW0vZmlsZW1hcC5jLTQ3NzctXFx0bWFwcGluZyA9IGZkX2ZpbGUoZiktXFx1MDAzZWZfbWFwcGluZztcXG5tbS9maWxlbWFwLmM6NDc3ODpcXHRmaWxlbWFwX2NhY2hlc3RhdChtYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgXFx1MDAyNmNzKTtcXG5tbS9maWxlbWFwLmMtNDc3OS1cXG5tbS9maWxlbWFwLmM6NDc4MDpcXHRpZiAoY29weV90b191c2VyKGNzdGF0LCBcXHUwMDI2Y3MsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSkpXFxubW0vZmlsZW1hcC5jLTQ3ODEtXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuLS1cXG5tbS93b3JraW5nc2V0LmM9NDMwPWJvb2wgd29ya2luZ3NldF90ZXN0X3JlY2VudCh2b2lkICpzaGFkb3csIGJvb2wgZmlsZSwgYm9vbCAqd29ya2luZ3NldCxcXG4tLVxcbm1tL3dvcmtpbmdzZXQuYy00ODItXFx0ICogTm90ZSB0aGF0IHdvcmtpbmdzZXRfdGVzdF9yZWNlbnQoKSBpdHNlbGYgbWlnaHQgYmUgY2FsbGVkIGluIFJDVSByZWFkXFxubW0vd29ya2luZ3NldC5jOjQ4MzpcXHQgKiBzZWN0aW9uIChmb3IgZS5nLCBpbiBjYWNoZXN0YXQpIC0gdGhlc2UgY2FsbGVycyBuZWVkIHRvIHNraXAgZmx1c2hpbmdcXG5tbS93b3JraW5nc2V0LmMtNDg0LVxcdCAqIHN0YXRzICh2aWEgdGhlIGZsdXNoIGFyZ3VtZW50KS5cXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzkzLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuc2NyaXB0cy9zeXNjYWxsLnRibDozOTQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzk1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD04MTQ9X19TWVNDQUxMKF9fTlJfc2V0X21lbXBvbGljeV9ob21lX25vZGUsIHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZSlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE1OiNkZWZpbmUgX19OUl9jYWNoZXN0YXQgNDUxXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjgxNjpfX1NZU0NBTEwoX19OUl9jYWNoZXN0YXQsIHN5c19jYWNoZXN0YXQpXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTgxNy0jZGVmaW5lIF9fTlJfZmNobW9kYXQyIDQ1Mlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC00NS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjQ2OnN0cnVjdCBjYWNoZXN0YXRfcmFuZ2Uge1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDctXFx0X191NjQgb2ZmO1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC01MC1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjUxOnN0cnVjdCBjYWNoZXN0YXQge1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNTItXFx0X191NjQgbnJfY2FjaGU7XFxuLS1cXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDkyLTU2MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX25pX3N5c2NhbGxcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDkzOjU2MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk0LTU2MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0Njg6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY5LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjQtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDY1OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDY2LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjctNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzY4OjQ1MVxcdG42NFxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzY5LTQ1MlxcdG42NFxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUxLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTI6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUzLTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTU0My00NTAgXFx0bm9zcHVcXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjU0NDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTQ1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OS00NTBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgxLTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTYtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU3OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU4LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTAwLTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDU4LTQ1MFxcdGkzODZcXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDU5OjQ1MVxcdGkzODZcXHRjYWNoZXN0YXRcXHRcXHRzeXNfY2FjaGVzdGF0XFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjAtNDUyXFx0aTM4NlxcdGZjaG1vZGF0MlxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozNzg6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc5LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIzLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzkzLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDozOTQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzk1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlPTc9VEFSR0VUUyArPSBicmVha3BvaW50c1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlOjg6VEFSR0VUUyArPSBjYWNoZXN0YXRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9NYWtlZmlsZS05LVRBUkdFVFMgKz0gY2FwYWJpbGl0aWVzXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC8uZ2l0aWdub3JlOjI6dGVzdF9jYWNoZXN0YXRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZS0zLXRtcHNobWNzdGF0XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L01ha2VmaWxlOjI6VEVTVF9HRU5fUFJPR1MgOj0gdGVzdF9jYWNoZXN0YXRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvTWFrZWZpbGUtMy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGV2X2ZpbGVzW10gPSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yNy1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyODp2b2lkIHByaW50X2NhY2hlc3RhdChzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yOS17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzAtXFx0a3NmdF9wcmludF9tc2coXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzE6XFx0XFxcIlVzaW5nIGNhY2hlc3RhdDogQ2FjaGVkOiAlbGx1LCBEaXJ0eTogJWxsdSwgV3JpdGViYWNrOiAlbGx1LCBFdmljdGVkOiAlbGx1LCBSZWNlbnRseSBFdmljdGVkOiAlbGx1XFxcXG5cXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyLVxcdGNzLVxcdTAwM2Vucl9jYWNoZSwgY3MtXFx1MDAzZW5yX2RpcnR5LCBjcy1cXHUwMDNlbnJfd3JpdGViYWNrLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM9MTA2PXN0YXRpYyBib29sIGlzX29uX3RtcGZzKGludCBmZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTExNy0gKiBPcGVuL2NyZWF0ZSB0aGUgZmlsZSBhdCBmaWxlbmFtZSwgKG9wdGlvbmFsbHkpIHdyaXRlIHJhbmRvbSBkYXRhIHRvIGl0XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTE4OiAqIChleGFjdGx5IG51bV9wYWdlcyksIHRoZW4gdGVzdCB0aGUgY2FjaGVzdGF0IHN5c2NhbGwgb24gdGhpcyBmaWxlLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTExOS0gKlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTIyLSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEyMzpzdGF0aWMgaW50IHRlc3RfY2FjaGVzdGF0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBib29sIHdyaXRlX3JhbmRvbSwgYm9vbCBjcmVhdGUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTI0LVxcdFxcdFxcdCAgYm9vbCB0ZXN0X2ZzeW5jLCB1bnNpZ25lZCBsb25nIG51bV9wYWdlcyxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTEzMC1cXHRsb25nIHN5c2NhbGxfcmV0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEzMTpcXHRzdHJ1Y3QgY2FjaGVzdGF0IGNzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEzMjpcXHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIGNzX3JhbmdlID0geyAwLCBmaWxlc2l6ZSB9O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTEzMy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE1MS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxNTI6XFx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXFx1MDAyNmNzX3JhbmdlLCBcXHUwMDI2Y3MsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE1My1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE2MS1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjE2MjpcXHRcXHRwcmludF9jYWNoZXN0YXQoXFx1MDAyNmNzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xNjMtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xNzktXFx0XFx0fSBlbHNlIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxODA6XFx0XFx0XFx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXFx1MDAyNmNzX3JhbmdlLCBcXHUwMDI2Y3MsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4MS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4NS1cXHRcXHRcXHRpZiAoIXN5c2NhbGxfcmV0KSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTg2OlxcdFxcdFxcdFxcdHByaW50X2NhY2hlc3RhdChcXHUwMDI2Y3MpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4Ny1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIwOT1jb25zdCBjaGFyICpmaWxlX3R5cGVfc3RyKGVudW0gZmlsZV90eXBlIHR5cGUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMjEtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjIyOmJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjIzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTIyNy1cXHRzaXplX3QgY29tcHV0ZV9sZW4gPSBQUyAqIDUxMjtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyMjg6XFx0c3RydWN0IGNhY2hlc3RhdF9yYW5nZSBjc19yYW5nZSA9IHsgUFMsIGNvbXB1dGVfbGVuIH07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjI5LVxcdGNoYXIgKmZpbGVuYW1lID0gXFxcInRtcHNobWNzdGF0XFxcIiwgKm1hcDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyMzA6XFx0c3RydWN0IGNhY2hlc3RhdCBjcztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMzEtXFx0Ym9vbCByZXQgPSB0cnVlO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjc1LVxcdH1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyNzY6XFx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXFx1MDAyNmNzX3JhbmdlLCBcXHUwMDI2Y3MsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI3Ny1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI4Mi1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjI4MzpcXHRcXHRwcmludF9jYWNoZXN0YXQoXFx1MDAyNmNzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yODQtXFx0XFx0aWYgKGNzLm5yX2NhY2hlICsgY3MubnJfZXZpY3RlZCAhPSBudW1fcGFnZXMpIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTI5Nz1pbnQgbWFpbih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzAyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwMzpcXHRyZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCAtMSwgTlVMTCwgTlVMTCwgMCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzA0LVxcdGlmIChyZXQgPT0gLTEgXFx1MDAyNlxcdTAwMjYgZXJybm8gPT0gRU5PU1lTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwNTpcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiY2FjaGVzdGF0IHN5c2NhbGwgbm90IGF2YWlsYWJsZVxcXFxuXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzA2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzE5LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMyMDpcXHRcXHRpZiAodGVzdF9jYWNoZXN0YXQoZGV2X2ZpbGVuYW1lLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyMS1cXHRcXHRcXHQ0LCBPX1JET05MWSwgMDQwMCkgPT0gS1NGVF9QQVNTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMyMjpcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcImNhY2hlc3RhdCB3b3JrcyB3aXRoICVzXFxcXG5cXFwiLCBkZXZfZmlsZW5hbWUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyMy1cXHRcXHRlbHNlIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjQ6XFx0XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFxcXCJjYWNoZXN0YXQgZmFpbHMgd2l0aCAlc1xcXFxuXFxcIiwgZGV2X2ZpbGVuYW1lKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMjUtXFx0XFx0XFx0cmV0ID0gMTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjk6XFx0aWYgKHRlc3RfY2FjaGVzdGF0KFxcXCJ0bXBmaWxlY2FjaGVzdGF0XFxcIiwgdHJ1ZSwgdHJ1ZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzAtXFx0XFx0ZmFsc2UsIDQsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2MDApID09IEtTRlRfUEFTUylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMzE6XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFxcXCJjYWNoZXN0YXQgd29ya3Mgd2l0aCBhIG5vcm1hbCBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzItXFx0ZWxzZSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzMzOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggbm9ybWFsIGZpbGVcXFxcblxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMzNC1cXHRcXHRyZXQgPSAxO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM2LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMzNzpcXHRzd2l0Y2ggKHRlc3RfY2FjaGVzdGF0KFxcXCJ0bXBmaWxlY2FjaGVzdGF0XFxcIiwgdHJ1ZSwgdHJ1ZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzgtXFx0XFx0dHJ1ZSwgNCwgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCkpIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzktXFx0Y2FzZSBLU0ZUX0ZBSUw6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzQwOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZzeW5jIGZhaWxzIHdpdGggbm9ybWFsIGZpbGVcXFxcblxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM0MS1cXHRcXHRyZXQgPSBLU0ZUX0ZBSUw7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDMtXFx0Y2FzZSBLU0ZUX1BBU1M6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzQ0OlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiY2FjaGVzdGF0IGZzeW5jIHdvcmtzIHdpdGggYSBub3JtYWwgZmlsZVxcXFxuXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzQ1LVxcdFxcdGJyZWFrO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM0Ni1cXHRjYXNlIEtTRlRfU0tJUDpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNDc6XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFxcXCJ0bXBmaWxlY2FjaGVzdGF0IGlzIG9uIHRtcGZzXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDgtXFx0XFx0YnJlYWs7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzUxOlxcdGlmIChydW5fY2FjaGVzdGF0X3Rlc3QoRklMRV9TSE1FTSkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzUyOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiY2FjaGVzdGF0IHdvcmtzIHdpdGggYSBzaG1lbSBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNTMtXFx0ZWxzZSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzU0OlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYSBzaG1lbSBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNTUtXFx0XFx0cmV0ID0gMTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM1Ny1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNTg6XFx0aWYgKHJ1bl9jYWNoZXN0YXRfdGVzdChGSUxFX01NQVApKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1OTpcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcImNhY2hlc3RhdCB3b3JrcyB3aXRoIGEgbW1hcCBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNjAtXFx0ZWxzZSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzYxOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYSBtbWFwIGZpbGVcXFxcblxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM2Mi1cXHRcXHRyZXQgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODoxNi4xOTUwMTQxMDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5MDAxMzkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhY2hlc3RhdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMYCBwb3BzIG91dC4gVGhhdCdzIHRoZSBjb25maWcgZm9yIGBjYWNoZXN0YXRgLCByaWdodD8gTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdC4gSSdsbCBjaGVjayBgaW5pdC9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgYENBQ0hFU1RBVF9TWVNDQUxMYCBpcyB0aGVyZS4gQWgsIHllcywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIGJlIGV4cGxpY2l0LiBHb29kIHRvIGluY2x1ZGUgaXQgaW4gdGhlIG1lbnRhbCBjaGVja2xpc3QuXG5cbldhaXQsIGEgYml0IGZ1cnRoZXIgZG93biwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBjYW5fZG9fY2FjaGVzdGF0YCB3aXRoaW4gYG1tL2ZpbGVtYXAuY2AuIFRoYXQgdGVsbHMgbWUgdGhlIGBzeXNfY2FjaGVzdGF0YCBzeXN0ZW0gY2FsbCBpcyBwcm9iYWJseSB0aGUga2V5IGZvY3VzIHBvaW50IGhlcmUuIEkgc2hvdWxkIGFkZCBgc3lzX2NhY2hlc3RhdGAgdG8gbXkgbGlzdCBvZiBGb2N1c1N5bWJvbHMuIEknbGwgbWFrZSBhIG5vdGUgZm9yIGZ1dHVyZSBhbmFseXNpcy5cblxuSG1tLCBhIGNoYW5nZSBoZXJlLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyByZXBsYWNpbmcgYGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZiksIGZpbGVfaW5vZGUoZikpYCB3aXRoIGBmaWxlX293bmVyX29yX2NhcGFibGUoZilgIGluIGBtbS9maWxlbWFwLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBJIGRvbid0IHNlZSBhbnkgb2J2aW91cyBmdW5jdGlvbmFsIGNoYW5nZSBhdCBmaXJzdCBnbGFuY2UuIEl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgcmVmYWN0b3JpbmcgYmVjYXVzZSBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpYCBzZWVtcyB0byBiZSAqZGVmaW5lZCogYXMgZXhhY3RseSBgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmKSwgZmlsZV9pbm9kZShmKSlgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gaW4gYGluY2x1ZGUvbGludXgvZnMuaGAgYmVmb3JlIEkgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NjgsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTg6MjIuMDg1MDMwMDZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDgxNTUzODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmlsZV9vd25lcl9vcl9jYXBhYmxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZnMuaD0yNDQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1udF9pZG1hcCAqZmlsZV9tbnRfaWRtYXAoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ0Ni1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg6MjQ0NzpzdGF0aWMgaW5saW5lIGJvb2wgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKVxcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQ4LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYz00NzAzPXN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbi0tXFxubW0vZmlsZW1hcC5jLTQ3MDYtXFx0XFx0cmV0dXJuIHRydWU7XFxubW0vZmlsZW1hcC5jOjQ3MDc6XFx0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcXG5tbS9maWxlbWFwLmMtNDcwOC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm1tL21hZHZpc2UuYz0zMjk9c3RhdGljIGlubGluZSBib29sIGNhbl9kb19maWxlX3BhZ2VvdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9tYWR2aXNlLmMtMzM4LVxcdCAqL1xcbm1tL21hZHZpc2UuYzozMzk6XFx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXFx1MDAzZXZtX2ZpbGUpIHx8XFxubW0vbWFkdmlzZS5jLTM0MC1cXHQgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS1cXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xcbi0tXFxubW0vbWluY29yZS5jPTIxOD1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9taW5jb3JlLmMtMjI5LVxcdCAqL1xcbm1tL21pbmNvcmUuYzoyMzA6XFx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXFx1MDAzZXZtX2ZpbGUpIHx8XFxubW0vbWluY29yZS5jLTIzMS1cXHQgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS1cXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODoyMy45MzMxOTIxMTZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyOTU2NDM3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB0aGUgY29kZSBkaWZmLCBpdCBsb29rcyBsaWtlIGEgcmVmYWN0b3JpbmcgaW4gYG1tL2ZpbGVtYXAuY2AsIGJ1dCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGBtbS9tYWR2aXNlLmNgIGFuZCBgbW0vbWluY29yZS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGNvcnJlY3RpbmcgdGhlIGhhbmRsaW5nIG9mIGlkbWFwcGVkIG1vdW50cy4gVGhleSdyZSByZXBsYWNpbmcgdGhlIHVzZSBvZiBgXHUwMDI2bm9wX21udF9pZG1hcGAgd2l0aCB0aGUgY29ycmVjdCBgZmlsZV9tbnRfaWRtYXAodm1hLVx1MDAzZXZtX2ZpbGUpYC4gVGhpcyBtZWFucyBgc3lzX2NhY2hlc3RhdGAgKmlzbid0KiBmdW5jdGlvbmFsbHkgYWx0ZXJlZCwgYnV0IGBkb19taW5jb3JlYCBhbmQgYG1hZHZpc2VfcGFnZW91dGAgKmFyZSouXG5cblNvLCBteSBmb2N1cyBzeW1ib2xzIG5lZWQgdG8gcmVmbGVjdCB0aGVzZSBmdW5jdGlvbmFsIGNoYW5nZXMuIEknbGwgbmVlZCB0byBpbmNsdWRlIGBkb19taW5jb3JlYCBhbmQgYG1hZHZpc2VfcGFnZW91dGAuIFdhaXQsIGlzbid0IGBtYWR2aXNlX3BhZ2VvdXRgIHN0YXRpYz8gWWVzLCBidXQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBgc3lzX21hZHZpc2VgLCBzbyB0aGF0J3MgZmluZS4gU2ltaWxhcmx5LCBgZG9fbWluY29yZWAgaXMgc3RhdGljIGJ1dCByZWFjaGFibGUgdGhyb3VnaCBgc3lzX21pbmNvcmVgLiBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgYXMgaXQncyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgZml4LlxuXG5UaGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGhlcmUgaXMgYEFEVklTRV9TWVNDQUxMU2AuIGBDT05GSUdfVVNFUl9OU2AgYW5kIGBDT05GSUdfTVVMVElVU0VSYCBhcmUgbGlrZWx5IHByZXJlcXVpc2l0ZXMsIGJ1dCB0aGV5J3JlIGZhaXJseSBzdGFuZGFyZCBhbmQgY2FuIGJlIGFzc3VtZWQuIEknbGwgc3RpY2sgd2l0aCBqdXN0IGVuYWJsaW5nIGBBRFZJU0VfU1lTQ0FMTFNgLlxuXG5Pa2F5LCBzdW1tYXJpemluZyBteSBmaW5kaW5nczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byBpZG1hcHBlZCBtb3VudHMsIHNvIGl0J3MgY3JpdGljYWwgdG8gZnV6ei5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggY29ycmVjdHMgdGhlIGhhbmRsaW5nIG9mIGlkbWFwcGVkIG1vdW50cyBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYSBwbGFjZWhvbGRlciBpZG1hcCB3aXRoIHRoZSBjb3JyZWN0IG1vdW50J3MgaWRtYXAsIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBkb19taW5jb3JlYCwgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgXG4qICAgKipFbmFibGVDb25maWdzOioqIGBBRFZJU0VfU1lTQ0FMTFNgXG5cbkkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTUFEVl9DT0xEYCBhY3R1YWxseSB1c2VzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YC4gQWgsIGluIGBtbS9tYWR2aXNlLmNgLCB0aGVyZSdzIGEgY2hlY2sgYHBhZ2VvdXRfYW5vbl9vbmx5X2ZpbHRlciA9IHBhZ2VvdXQgXHUwMDI2XHUwMDI2ICF2bWFfaXNfYW5vbnltb3VzKHZtYSkgXHUwMDI2XHUwMDI2ICFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7YCwgc28gaXQgZG9lcyEgVGhhdCBjb25maXJtcyBteSBjaG9pY2Ugb2YgZm9jdXMgc3ltYm9scy4gYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgaXMgZGVmaW5pdGVseSByZWxldmFudC4gVGhpcyBpcyBnb29kLiBJIHRoaW5rIEknbSBkb25lIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTAyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjM1LjIyODgzOTEyOVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI5OTM5NTY0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkb19taW5jb3JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21pbmNvcmUuYz0xNjM9c3RhdGljIGludCBtaW5jb3JlX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vbWluY29yZS5jLTIxNy1cXG5tbS9taW5jb3JlLmM6MjE4OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5tbS9taW5jb3JlLmMtMjE5LXtcXG4tLVxcbm1tL21pbmNvcmUuYz0yMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBtaW5jb3JlX3dhbGtfb3BzID0ge1xcbi0tXFxubW0vbWluY29yZS5jLTI0NS0gKi9cXG5tbS9taW5jb3JlLmM6MjQ2OnN0YXRpYyBsb25nIGRvX21pbmNvcmUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCB1bnNpZ25lZCBjaGFyICp2ZWMpXFxubW0vbWluY29yZS5jLTI0Ny17XFxuLS1cXG5tbS9taW5jb3JlLmMtMjU1LVxcdGVuZCA9IG1pbih2bWEtXFx1MDAzZXZtX2VuZCwgYWRkciArIChwYWdlcyBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUKSk7XFxubW0vbWluY29yZS5jOjI1NjpcXHRpZiAoIWNhbl9kb19taW5jb3JlKHZtYSkpIHtcXG5tbS9taW5jb3JlLmMtMjU3LVxcdFxcdHVuc2lnbmVkIGxvbmcgcGFnZXMgPSBESVZfUk9VTkRfVVAoZW5kIC0gYWRkciwgUEFHRV9TSVpFKTtcXG4tLVxcbm1tL21pbmNvcmUuYz0yOTE9U1lTQ0FMTF9ERUZJTkUzKG1pbmNvcmUsIHVuc2lnbmVkIGxvbmcsIHN0YXJ0LCBzaXplX3QsIGxlbixcXG4tLVxcbm1tL21pbmNvcmUuYy0zMjUtXFx0XFx0bW1hcF9yZWFkX2xvY2soY3VycmVudC1cXHUwMDNlbW0pO1xcbm1tL21pbmNvcmUuYzozMjY6XFx0XFx0cmV0dmFsID0gZG9fbWluY29yZShzdGFydCwgbWluKHBhZ2VzLCBQQUdFX1NJWkUpLCB0bXApO1xcbm1tL21pbmNvcmUuYy0zMjctXFx0XFx0bW1hcF9yZWFkX3VubG9jayhjdXJyZW50LVxcdTAwM2VtbSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjM4LjUyODI0NTQzMVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTM2MDU1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTXkgVGhpbmtpbmcgb24gYG1pbmNvcmVgIEltcGxlbWVudGF0aW9uIGFuZCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBkb19taW5jb3JlYC4uLiB0aGF0J3MgdGhlIG1haW4gZnVuY3Rpb24gdGhhdCBjYWxscyBgY2FuX2RvX21pbmNvcmVgLiBUaGF0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0LiBBbmQgdGhlIG90aGVyIEZvY3VzU3ltYm9scyBJJ20gY29uY2VybmVkIHdpdGggYXJlIGBtYWR2aXNlX3BhZ2VvdXRgIGFuZCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgd2hpY2ggYXJlIGxpa2VseSByZWxhdGVkIHRvIHBhZ2VvdXQgZnVuY3Rpb25hbGl0eS5cblxuTm93LCB0aGUgYEFEVklTRV9TWVNDQUxMU2AgRW5hYmxlQ29uZmlnIGlzIGNlcnRhaW5seSByZWxldmFudCBoZXJlLlxuXG5IbW0sIEkgcmVjYWxsIHRoZXJlIHdhc24ndCBhIGRlZGljYXRlZCBjb25maWcgc3BlY2lmaWNhbGx5IGZvciBgbWluY29yZWAgaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0IGdldHMgYnVpbHQgaW5kaXJlY3RseSwgYmFzZWQgb24gd2hldGhlciBgQ09ORklHX01NVWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGltcGxpY2F0aW9ucy5cblxuQWxyaWdodCwgSSB0aGluayBJJ3ZlIGdvdCBhIHNvbGlkIGdyYXNwIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbnMsIGNvbmZpZ3VyYXRpb24sIGFuZCBkZXBlbmRlbmNpZXMuIEknbSByZWFkeSB0byBtb3ZlIG9uIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjUzLCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODo0NC40NjQzMDUyM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MDUyNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBRFZJU0VfU1lTQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19taW5jb3JlXCIsXG4gICAgXCJtYWR2aXNlX3BhZ2VvdXRcIixcbiAgICBcIm1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGlkbWFwcGVkIG1vdW50cyB3ZXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGluIGBtYWR2aXNlYCBhbmQgYG1pbmNvcmVgIGJ5IHJlcGxhY2luZyBgXFx1MDAyNm5vcF9tbnRfaWRtYXBgIHdpdGggdGhlIGFjdHVhbCBtb3VudCBpZG1hcCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURWSVNFX1NZU0NBTExTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZG9fbWluY29yZVwiLFxuICAgIFwibWFkdmlzZV9wYWdlb3V0XCIsXG4gICAgXCJtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBpZG1hcHBlZCBtb3VudHMgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYFxcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 15:46:36 +0000 UTC FinishedAt: 2026-06-25 15:58:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADVISE_SYSCALLS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADVISE_SYSCALLS" ], "series_id": "1636bf6c-e98c-4dc4-abac-a73dab6c9a05" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "do_mincore", "madvise_pageout", "madvise_cold_or_pageout_pte_range" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FEVklTRV9TWVNDQUxMUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RvX21pbmNvcmUmIzM0OywKICAgICYjMzQ7bWFkdmlzZV9wYWdlb3V0JiMzNDssCiAgICAmIzM0O21hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBpZG1hcHBlZCBtb3VudHMgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYFx1MDAyNm5vcF9tbnRfaWRtYXBgIHdpdGggdGhlIGFjdHVhbCBtb3VudCBpZG1hcCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjZGYyOTEzMTlkN2M5NTg0YWM4NzhhYzI4NzAzMWU2YTM5Mzk5ZTU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMTU6NTc6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9saW51eC9mcy5oXG5pbmRleCBkMTA4OTdiM2ExZTM1MC4uNTBjZTczMWEyYjc4ZjEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZnMuaFxuQEAgLTI0NDQsNiAmIzQzOzI0NDQsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbW50X2lkbWFwICpmaWxlX21udF9pZG1hcChjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdHJldHVybiBtbnRfaWRtYXAoZmlsZS1cdTAwM2VmX3BhdGgubW50KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBmaWxlX293bmVyX29yX2NhcGFibGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSk7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaXNfaWRtYXBwZWRfbW50IC0gY2hlY2sgd2hldGhlciBhIG1vdW50IGlzIG1hcHBlZFxuICAqIEBtbnQ6IHRoZSBtb3VudCB0byBjaGVja1xuZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuY1xuaW5kZXggNWFmNjJlNmFiY2E1OGIuLjU4ZWI5ZDI0MDY0MzQ4IDEwMDY0NFxuLS0tIGEvbW0vZmlsZW1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9maWxlbWFwLmNcbkBAIC00NzA0LDcgJiM0Mzs0NzA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpXG4ge1xuIFx0aWYgKGYtXHUwMDNlZl9tb2RlIFx1MDAyNiBGTU9ERV9XUklURSlcbiBcdFx0cmV0dXJuIHRydWU7XG4tXHRpZiAoaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmKSwgZmlsZV9pbm9kZShmKSkpXG4mIzQzO1x0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHRyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vbWFkdmlzZS5jIGIvbW0vbWFkdmlzZS5jXG5pbmRleCBjZDliYjA3NzA3MmNjYi4uNzc1NTJiMDNkMzE4ZDkgMTAwNjQ0XG4tLS0gYS9tbS9tYWR2aXNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21hZHZpc2UuY1xuQEAgLTMzNiw4ICYjNDM7MzM2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19maWxlX3BhZ2VvdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4gXHQgKiBvdGhlcndpc2Ugd2UmIzM5O2QgYmUgaW5jbHVkaW5nIHNoYXJlZCBub24tZXhjbHVzaXZlIG1hcHBpbmdzLCB3aGljaFxuIFx0ICogb3BlbnMgYSBzaWRlIGNoYW5uZWwuXG4gXHQgKi9cbi1cdHJldHVybiBpbm9kZV9vd25lcl9vcl9jYXBhYmxlKFx1MDAyNm5vcF9tbnRfaWRtYXAsXG4tXHRcdFx0XHQgICAgICBmaWxlX2lub2RlKHZtYS1cdTAwM2V2bV9maWxlKSkgfHxcbiYjNDM7XHRyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS1cdTAwM2V2bV9maWxlKSB8fFxuIFx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9tbS9taW5jb3JlLmMgYi9tbS9taW5jb3JlLmNcbmluZGV4IDI5NmYyZTM5MjJiNWY0Li5jODc1N2M1MDg1YmY5MCAxMDA2NDRcbi0tLSBhL21tL21pbmNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWluY29yZS5jXG5AQCAtMjI3LDggJiM0MzsyMjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4gXHQgKiBmb3Igd3JpdGluZzsgb3RoZXJ3aXNlIHdlJiMzOTtkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZVxuIFx0ICogbWFwcGluZ3MsIHdoaWNoIG9wZW5zIGEgc2lkZSBjaGFubmVsLlxuIFx0ICovXG4tXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShcdTAwMjZub3BfbW50X2lkbWFwLFxuLVx0XHRcdFx0ICAgICAgZmlsZV9pbm9kZSh2bWEtXHUwMDNldm1fZmlsZSkpIHx8XG4mIzQzO1x0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXHUwMDNldm1fZmlsZSkgfHxcbiBcdCAgICAgICBmaWxlX3Blcm1pc3Npb24odm1hLVx1MDAzZXZtX2ZpbGUsIE1BWV9XUklURSkgPT0gMDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QURWSVNFX1NZU0NBTExTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fbWluY29yZSYjMzQ7LAogICAgJiMzNDttYWR2aXNlX3BhZ2VvdXQmIzM0OywKICAgICYjMzQ7bWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGlkbWFwcGVkIG1vdW50cyB3ZXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGluIGBtYWR2aXNlYCBhbmQgYG1pbmNvcmVgIGJ5IHJlcGxhY2luZyBgXHUwMDI2bm9wX21udF9pZG1hcGAgd2l0aCB0aGUgYWN0dWFsIG1vdW50IGlkbWFwIG9mIHRoZSBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2RmMjkxMzE5ZDdjOTU4NGFjODc4YWMyODcwMzFlNmEzOTM5OWU1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDE1OjU3OjA5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9saW51eC9mcy5oCmluZGV4IGQxMDg5N2IzYTFlMzUwLi41MGNlNzMxYTJiNzhmMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMjQ0NCw2ICYjNDM7MjQ0NCwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBtbnRfaWRtYXAgKmZpbGVfbW50X2lkbWFwKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKQogCXJldHVybiBtbnRfaWRtYXAoZmlsZS0mZ3Q7Zl9wYXRoLm1udCk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKQomIzQzO3sKJiM0MzsJcmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpOwomIzQzO30KJiM0MzsKIC8qKgogICogaXNfaWRtYXBwZWRfbW50IC0gY2hlY2sgd2hldGhlciBhIG1vdW50IGlzIG1hcHBlZAogICogQG1udDogdGhlIG1vdW50IHRvIGNoZWNrCmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmMKaW5kZXggNWFmNjJlNmFiY2E1OGIuLjU4ZWI5ZDI0MDY0MzQ4IDEwMDY0NAotLS0gYS9tbS9maWxlbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZmlsZW1hcC5jCkBAIC00NzA0LDcgJiM0Mzs0NzA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19jYWNoZXN0YXQoc3RydWN0IGZpbGUgKmYpCiB7CiAJaWYgKGYtJmd0O2ZfbW9kZSAmYW1wOyBGTU9ERV9XUklURSkKIAkJcmV0dXJuIHRydWU7Ci0JaWYgKGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZiksIGZpbGVfaW5vZGUoZikpKQomIzQzOwlpZiAoZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpKQogCQlyZXR1cm4gdHJ1ZTsKIAlyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDsKIH0KZGlmZiAtLWdpdCBhL21tL21hZHZpc2UuYyBiL21tL21hZHZpc2UuYwppbmRleCBjZDliYjA3NzA3MmNjYi4uNzc1NTJiMDNkMzE4ZDkgMTAwNjQ0Ci0tLSBhL21tL21hZHZpc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tYWR2aXNlLmMKQEAgLTMzNiw4ICYjNDM7MzM2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbl9kb19maWxlX3BhZ2VvdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJICogb3RoZXJ3aXNlIHdlJiMzOTtkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZSBtYXBwaW5ncywgd2hpY2gKIAkgKiBvcGVucyBhIHNpZGUgY2hhbm5lbC4KIAkgKi8KLQlyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZSgmYW1wO25vcF9tbnRfaWRtYXAsCi0JCQkJICAgICAgZmlsZV9pbm9kZSh2bWEtJmd0O3ZtX2ZpbGUpKSB8fAomIzQzOwlyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS0mZ3Q7dm1fZmlsZSkgfHwKIAkgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS0mZ3Q7dm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwOwogfQogCmRpZmYgLS1naXQgYS9tbS9taW5jb3JlLmMgYi9tbS9taW5jb3JlLmMKaW5kZXggMjk2ZjJlMzkyMmI1ZjQuLmM4NzU3YzUwODViZjkwIDEwMDY0NAotLS0gYS9tbS9taW5jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWluY29yZS5jCkBAIC0yMjcsOCAmIzQzOzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkgKiBmb3Igd3JpdGluZzsgb3RoZXJ3aXNlIHdlJiMzOTtkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZQogCSAqIG1hcHBpbmdzLCB3aGljaCBvcGVucyBhIHNpZGUgY2hhbm5lbC4KIAkgKi8KLQlyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZSgmYW1wO25vcF9tbnRfaWRtYXAsCi0JCQkJICAgICAgZmlsZV9pbm9kZSh2bWEtJmd0O3ZtX2ZpbGUpKSB8fAomIzQzOwlyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS0mZ3Q7dm1fZmlsZSkgfHwKIAkgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS0mZ3Q7dm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGaWxlIFBlcm1pc3Npb24gQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgbmV3IGlubGluZSBmdW5jdGlvbiwgYGZpbGVfb3duZXJfb3JfY2FwYWJsZWAsIGFuZCBJIHNlZSBpdCYjMzk7cyBpbnRlbmRlZCB0byBzaW1wbGlmeSBzb21lIGNoZWNrcyByZWxhdGVkIHRvIGZpbGUgb3duZXJzaGlwIGFuZCBjYXBhYmlsaXR5LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHJlcGxhY2luZyBkaXJlY3QgY2FsbHMgdG8gYGlub2RlX293bmVyX29yX2NhcGFibGVgIHdpdGggdGhpcyBuZXcgZnVuY3Rpb24gaW4gYSBmZXcga2V5IGFyZWFzOiBgbW0vZmlsZW1hcC5jYCwgYG1tL21hZHZpc2UuY2AsIGFuZCBgbW0vbWluY29yZS5jYC4KCkhvbGQgb24uLi4gSSYjMzk7bSBub3RpY2luZyBzb21ldGhpbmcgY3J1Y2lhbCBoZXJlLCBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJbiBgbW0vbWFkdmlzZS5jYCBhbmQgYG1tL21pbmNvcmUuY2AsIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwYXNzaW5nIGAmYW1wO25vcF9tbnRfaWRtYXBgIHRvIGBpbm9kZV9vd25lcl9vcl9jYXBhYmxlYCwgYnV0IG5vdyB0aGUgcGF0Y2ggZGlyZWN0bHkgdXNlcyBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS0mZ3Q7dm1fZmlsZSlgLiBUaGlzIG1lYW5zIGl0IHdpbGwgY2FsbCBgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSlgLiBTbywgdGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBtb3VudCBJRCBtYXBwaW5nIHVzZWQgaW4gdGhlIG93bmVyc2hpcCBjaGVjayBmcm9tIGEgbm8tb3AgdG8gdGhlIGFjdHVhbCBmaWxlJiMzOTtzIG1vdW50IElELiBUaGlzIGhhcyB0byBiZSBhIGZpeCEgVGhpcyBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSB3aGVyZSBJRC1tYXBwZWQgbW91bnRzIHdlcmVuJiMzOTt0IGJlaW5nIGNvcnJlY3RseSBoYW5kbGVkIHdpdGhpbiB0aGUgYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgZnVuY3Rpb25zLgoKTm93LCBJIHdhbnQgdG8gZHJpbGwgZG93biBmdXJ0aGVyLiBMZXQmIzM5O3MgbG9vayBjbG9zZWx5IGF0IHdoZXJlIHRoZXNlIGNoYW5nZXMgYXJlIGltcGFjdGluZyB1cy4gVGhlIGxvZ2ljIG5vdyB0b3VjaGVzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCB3aXRoaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBjYW5fZG9fbWluY29yZWAgd2l0aGluIGBtbS9taW5jb3JlLmNgLiBgY2FuX2RvX2ZpbGVfcGFnZW91dGAgaXMsIGFzIEkgcmVjYWxsLCBhIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYG1hZHZpc2VfcGFnZW91dGAuIGBjYW5fZG9fbWluY29yZWAgaXMgdXNlZCBieSBhIGZ1bmN0aW9uIHNpbWlsYXIgdG8gYG1pbmNvcmVfcGFnZV9yYW5nZWAgb3Igc2ltaWxhciBpbiBgbW0vbWluY29yZS5jYC4KClRpbWUgdG8gc2VlIHdoZXJlIHRoZXNlIGFyZSB1c2VkLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgY2FsbGVkLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgYW5kIHdoYXQgZG93bnN0cmVhbSBpbXBhY3QgdGhpcyBmaXggbWlnaHQgaGF2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fZG9fZmlsZV9wYWdlb3V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21hZHZpc2UuYz0yODE9c3RhdGljIGxvbmcgbWFkdmlzZV93aWxsbmVlZChzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtMzI4LVxubW0vbWFkdmlzZS5jOjMyOTpzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2ZpbGVfcGFnZW91dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbm1tL21hZHZpc2UuYy0zMzAte1xuLS1cbm1tL21hZHZpc2UuYz0zNTM9c3RhdGljIGludCBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UocG1kX3QgKnBtZCxcbi0tXG5tbS9tYWR2aXNlLmMtMzczLVx0cGFnZW91dF9hbm9uX29ubHlfZmlsdGVyID0gcGFnZW91dCBcdTAwMjZcdTAwMjYgIXZtYV9pc19hbm9ueW1vdXModm1hKSBcdTAwMjZcdTAwMjZcbm1tL21hZHZpc2UuYzozNzQ6XHRcdFx0XHRcdCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7XG5tbS9tYWR2aXNlLmMtMzc1LVxuLS1cbm1tL21hZHZpc2UuYz02MjY9c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxuLS1cbm1tL21hZHZpc2UuYy02MzktXHQgKi9cbm1tL21hZHZpc2UuYzo2NDA6XHRpZiAoIXZtYV9pc19hbm9ueW1vdXModm1hKSBcdTAwMjZcdTAwMjYgKCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSkgXHUwMDI2XHUwMDI2XG5tbS9tYWR2aXNlLmMtNjQxLVx0XHRcdFx0KHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fTUFZU0hBUkUpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fZG9fbWluY29yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taW5jb3JlLmM9MTYzPXN0YXRpYyBpbnQgbWluY29yZV9wdGVfcmFuZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9taW5jb3JlLmMtMjE3LVxubW0vbWluY29yZS5jOjIxODpzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5tbS9taW5jb3JlLmMtMjE5LXtcbi0tXG5tbS9taW5jb3JlLmM9MjQ2PXN0YXRpYyBsb25nIGRvX21pbmNvcmUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCB1bnNpZ25lZCBjaGFyICp2ZWMpXG4tLVxubW0vbWluY29yZS5jLTI1NS1cdGVuZCA9IG1pbih2bWEtXHUwMDNldm1fZW5kLCBhZGRyICYjNDM7IChwYWdlcyBcdTAwM2NcdTAwM2MgUEFHRV9TSElGVCkpO1xubW0vbWluY29yZS5jOjI1NjpcdGlmICghY2FuX2RvX21pbmNvcmUodm1hKSkge1xubW0vbWluY29yZS5jLTI1Ny1cdFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IERJVl9ST1VORF9VUChlbmQgLSBhZGRyLCBQQUdFX1NJWkUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpZG1hcHBlZCBtb3VudCBjaGFuZ2UqKgoKT2theSwgc28gdGhpcyBjaGFuZ2UgdGFja2xlcyBob3cgaWRtYXBwZWQgbW91bnRzIGFyZSBoYW5kbGVkIHdpdGhpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgcmVwbGFjaW5nIGAmYW1wO25vcF9tbnRfaWRtYXBgIHdpdGggYGZpbGVfbW50X2lkbWFwKHZtYS0mZ3Q7dm1fZmlsZSlgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIHNoaWZ0LCBtZWFuaW5nIHRoZXJlJiMzOTtzIGEgcmVhbCBwb3NzaWJpbGl0eSBvZiBmaW5kaW5nIHNvbWUgZWRnZSBjYXNlcy4gRGVmaW5pdGVseSB3b3J0aCB0aHJvd2luZyBzb21lIGZ1enppbmcgYXQgaXQuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIG9uIGBtYWR2aXNlX3BhZ2VvdXRgLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgYW5kIGBkb19taW5jb3JlYC4gV2FpdCwgcmUtcmVhZGluZyB0aGUgcGF0Y2guLi5pdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNoYW5nZSBpcyBhY3R1YWxseSB3aXRoaW4gYGNhbl9kb19maWxlX3BhZ2VvdXRgIGFuZCBgY2FuX2RvX21pbmNvcmVgLiBBaCwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBnZXQgY2FsbGVkIHdpdGhpbiB0aGUgZW50cnkgcG9pbnRzLCBuYW1lbHkgYG1hZHZpc2VfcGFnZW91dGAgYW5kIGBkb19taW5jb3JlYC4KCkxldCBtZSBzZWUgaWYgdGhpcyBpcyB0aWVkIHRvIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucy4gSWRtYXBwZWQgbW91bnRzIHJlbHkgb24gYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgLCBJIHRoaW5rPyBUaG91Z2gsIGlkbWFwcGVkIG1vdW50cyBhcmUgZ2VuZXJhbGx5IGF2YWlsYWJsZSBub3csIHJpZ2h0PyBPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBvdGhlciBzcGVjaWZpYyBjb25maWcgdGhhdCBtaWdodCBiZSBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmlsZV9tbnRfaWRtYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96bG9vcC5jPTcwMD1zdGF0aWMgaW50IHpsb29wX3JlY29yZF9zYWZlX3dwcyhzdHJ1Y3Qgemxvb3BfZGV2aWNlICp6bG8pXG4tLVxuZHJpdmVycy9ibG9jay96bG9vcC5jLTcxMC1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvYmxvY2svemxvb3AuYzo3MTE6XHRcdHJldCA9IHZmc19zZXR4YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXG5kcml2ZXJzL2Jsb2NrL3psb29wLmMtNzEyLVx0XHRcdFx0XCYjMzQ7dXNlci56bG9vcC53cFwmIzM0OywgXHUwMDI2em9uZS1cdTAwM2V3cCwgc2l6ZW9mKHpvbmUtXHUwMDNld3ApLCAwKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3psb29wLmM9MTM2NT1zdGF0aWMgdm9pZCB6bG9vcF9mb3JnZXRfY2FjaGUoc3RydWN0IHpsb29wX2RldmljZSAqemxvKVxuLS1cbmRyaXZlcnMvYmxvY2svemxvb3AuYy0xMzc5LVxuZHJpdmVycy9ibG9jay96bG9vcC5jOjEzODA6XHRcdHJldCA9IHZmc19nZXR4YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXG5kcml2ZXJzL2Jsb2NrL3psb29wLmMtMTM4MS1cdFx0XHRcdFwmIzM0O3VzZXIuemxvb3Aud3BcJiMzNDssIFx1MDAyNm9sZF93cCwgc2l6ZW9mKG9sZF93cCkpO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9MTIwMT1zdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX3NuYXBfY3JlYXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMTIxNi1cbmZzL2J0cmZzL2lvY3RsLmM6MTIxNzpcdHJldHVybiBfX2J0cmZzX2lvY3RsX3NuYXBfY3JlYXRlKGZpbGUsIGZpbGVfbW50X2lkbWFwKGZpbGUpLFxuZnMvYnRyZnMvaW9jdGwuYy0xMjE4LVx0XHRcdFx0XHQgdm9sX2FyZ3MtXHUwMDNlbmFtZSwgdm9sX2FyZ3MtXHUwMDNlZmQsIHN1YnZvbCxcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTEyMjI9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZV92MihzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTEyNjAtXG5mcy9idHJmcy9pb2N0bC5jOjEyNjE6XHRyZXR1cm4gX19idHJmc19pb2N0bF9zbmFwX2NyZWF0ZShmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSxcbmZzL2J0cmZzL2lvY3RsLmMtMTI2Mi1cdFx0XHRcdFx0IHZvbF9hcmdzLVx1MDAzZW5hbWUsIHZvbF9hcmdzLVx1MDAzZWZkLCBzdWJ2b2wsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0xMjg4PXN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc3Vidm9sX3NldGZsYWdzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMTI5OC1cbmZzL2J0cmZzL2lvY3RsLmM6MTI5OTpcdGlmICghaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUpKVxuZnMvYnRyZnMvaW9jdGwuYy0xMzAwLVx0XHRyZXR1cm4gLUVQRVJNO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9MTkyMT1zdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2lub19sb29rdXBfdXNlcihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy0xOTQxLVxuZnMvYnRyZnMvaW9jdGwuYzoxOTQyOlx0cmV0ID0gYnRyZnNfc2VhcmNoX3BhdGhfaW5fdHJlZV91c2VyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgYXJncyk7XG5mcy9idHJmcy9pb2N0bC5jLTE5NDMtXG4tLVxuZnMvYnRyZnMvaW9jdGwuYz0yMjExPXN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc25hcF9kZXN0cm95KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMjIyMy1cdHN0cnVjdCBidHJmc19pb2N0bF92b2xfYXJnc192MiBBVVRPX0tGUkVFKHZvbF9hcmdzMik7XG5mcy9idHJmcy9pb2N0bC5jOjIyMjQ6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xuZnMvYnRyZnMvaW9jdGwuYy0yMjI1LVx0Y2hhciAqc3Vidm9sX25hbWUsICpzdWJ2b2xfbmFtZV9wdHIgPSBOVUxMO1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9Mzk1Nj1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sXzMyKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2J0cmZzL2lvY3RsLmMtMzk3OS1cbmZzL2J0cmZzL2lvY3RsLmM6Mzk4MDpcdHJldCA9IF9idHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKGZpbGUsIGZpbGVfbW50X2lkbWFwKGZpbGUpLCBhcmdzNjQpO1xuZnMvYnRyZnMvaW9jdGwuYy0zOTgxLVx0aWYgKHJldClcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTQwMDE9c3RhdGljIGxvbmcgYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTQwMTAtXG5mcy9idHJmcy9pb2N0bC5jOjQwMTE6XHRyZXQgPSBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSwgc2EpO1xuZnMvYnRyZnMvaW9jdGwuYy00MDEyLVx0aWYgKHJldClcbi0tXG5mcy9jZXBoL2ZpbGUuYz03OTM9aW50IGNlcGhfYXRvbWljX29wZW4oc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9jZXBoL2ZpbGUuYy03OTUte1xuZnMvY2VwaC9maWxlLmM6Nzk2Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2NlcGgvZmlsZS5jLTc5Ny1cdHN0cnVjdCBjZXBoX2ZzX2NsaWVudCAqZnNjID0gY2VwaF9zYl90b19mc19jbGllbnQoZGlyLVx1MDAzZWlfc2IpO1xuLS1cbmZzL2NvcmVkdW1wLmM9ODc4PXN0YXRpYyBib29sIGNvcmVkdW1wX2ZpbGUoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy05NTUtXHQgKi9cbmZzL2NvcmVkdW1wLmM6OTU2Olx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2NvcmVkdW1wLmMtOTU3LVx0aWYgKCF2ZnN1aWRfZXFfa3VpZChpX3VpZF9pbnRvX3Zmc3VpZChpZG1hcCwgaW5vZGUpLCBjdXJyZW50X2ZzdWlkKCkpKSB7XG4tLVxuZnMvZXhlYy5jPTEzMTI9dm9pZCB3b3VsZF9kdW1wKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2V4ZWMuYy0xMzE0LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XG5mcy9leGVjLmM6MTMxNTpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XG5mcy9leGVjLmMtMTMxNi1cdGlmIChpbm9kZV9wZXJtaXNzaW9uKGlkbWFwLCBpbm9kZSwgTUFZX1JFQUQpIFx1MDAzYyAwKSB7XG4tLVxuZnMvZXhlYy5jPTE1NTg9c3RhdGljIHZvaWQgYnBybV9maWxsX3VpZChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9leGVjLmMtMTU3Ny1cbmZzL2V4ZWMuYzoxNTc4Olx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2V4ZWMuYy0xNTc5LVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYz00NDU9c3RhdGljIGludCBleGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxuLS1cbmZzL2V4ZmF0L2ZpbGUuYy00OTYtXHQgKi9cbmZzL2V4ZmF0L2ZpbGUuYzo0OTc6XHRlcnIgPSBzZWN1cml0eV9pbm9kZV9zZXRhdHRyKGZpbGVfbW50X2lkbWFwKGZpbGUpLFxuZnMvZXhmYXQvZmlsZS5jLTQ5OC1cdFx0XHRcdCAgICAgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZpYSk7XG4tLVxuZnMvZXhmYXQvZmlsZS5jLTUwMi1cdC8qIFRoaXMgTVVTVCBiZSBkb25lIGJlZm9yZSBkb2luZyBhbnl0aGluZyBpcnJldmVyc2libGUuLi4gKi9cbmZzL2V4ZmF0L2ZpbGUuYzo1MDM6XHRlcnIgPSBleGZhdF9zZXRhdHRyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBmaWxlLVx1MDAzZWZfcGF0aC5kZW50cnksIFx1MDAyNmlhKTtcbmZzL2V4ZmF0L2ZpbGUuYy01MDQtXHRpZiAoZXJyKVxuLS1cbmZzL2V4dDQvaW9jdGwuYz0xNTM4PXN0YXRpYyBsb25nIF9fZXh0NF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZnMvZXh0NC9pb2N0bC5jLTE1NDEtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbmZzL2V4dDQvaW9jdGwuYzoxNTQyOlx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcbmZzL2V4dDQvaW9jdGwuYy0xNTQzLVxuLS1cbmZzL2YyZnMvZmlsZS5jPTIyNzk9c3RhdGljIGludCBmMmZzX2lvY19zdGFydF9hdG9taWNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGJvb2wgdHJ1bmNhdGUpXG4tLVxuZnMvZjJmcy9maWxlLmMtMjI4MS1cdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApO1xuZnMvZjJmcy9maWxlLmM6MjI4MjpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlscCk7XG5mcy9mMmZzL2ZpbGUuYy0yMjgzLVx0c3RydWN0IGYyZnNfaW5vZGVfaW5mbyAqZmkgPSBGMkZTX0koaW5vZGUpO1xuLS1cbmZzL2YyZnMvZmlsZS5jPTIzOTE9c3RhdGljIGludCBmMmZzX2lvY19jb21taXRfYXRvbWljX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmZzL2YyZnMvZmlsZS5jLTIzOTMtXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTtcbmZzL2YyZnMvZmlsZS5jOjIzOTQ6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xuZnMvZjJmcy9maWxlLmMtMjM5NS1cdGludCByZXQ7XG4tLVxuZnMvZjJmcy9maWxlLmM9MjQyNj1zdGF0aWMgaW50IGYyZnNfaW9jX2Fib3J0X2F0b21pY193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscClcbi0tXG5mcy9mMmZzL2ZpbGUuYy0yNDI4LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XG5mcy9mMmZzL2ZpbGUuYzoyNDI5Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcbmZzL2YyZnMvZmlsZS5jLTI0MzAtXHRpbnQgcmV0O1xuLS1cbmZzL2ZhdC9maWxlLmM9Mzc9c3RhdGljIGludCBmYXRfaW9jdGxfc2V0X2F0dHJpYnV0ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHUzMiBfX3VzZXIgKnVzZXJfYXR0cilcbi0tXG5mcy9mYXQvZmlsZS5jLTk0LVx0ICovXG5mcy9mYXQvZmlsZS5jOjk1Olx0ZXJyID0gc2VjdXJpdHlfaW5vZGVfc2V0YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSxcbmZzL2ZhdC9maWxlLmMtOTYtXHRcdFx0XHQgICAgIGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeSwgXHUwMDI2aWEpO1xuLS1cbmZzL2ZhdC9maWxlLmMtMTAwLVx0LyogVGhpcyBNVVNUIGJlIGRvbmUgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGlycmV2ZXJzaWJsZS4uLiAqL1xuZnMvZmF0L2ZpbGUuYzoxMDE6XHRlcnIgPSBmYXRfc2V0YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZpYSk7XG5mcy9mYXQvZmlsZS5jLTEwMi1cdGlmIChlcnIpXG4tLVxuZnMvZmNudGwuYz0zOT1zdGF0aWMgaW50IHNldGZsKGludCBmZCwgc3RydWN0IGZpbGUgKiBmaWxwLCB1bnNpZ25lZCBpbnQgYXJnKVxuLS1cbmZzL2ZjbnRsLmMtNTItXHRpZiAoKGFyZyBcdTAwMjYgT19OT0FUSU1FKSBcdTAwMjZcdTAwMjYgIShmaWxwLVx1MDAzZWZfZmxhZ3MgXHUwMDI2IE9fTk9BVElNRSkpXG5mcy9mY250bC5jOjUzOlx0XHRpZiAoIWlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlscCksIGlub2RlKSlcbmZzL2ZjbnRsLmMtNTQtXHRcdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5mcy9mY250bC5jPTM2OT1zdGF0aWMgbG9uZyBmY250bF9zZXRfcndfaGludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZnMvZmNudGwuYy0zNzQtXG5mcy9mY250bC5jOjM3NTpcdGlmICghaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUpKVxuZnMvZmNudGwuYy0zNzYtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZnMvZmlsZV9hdHRyLmM9MzI0PWludCBpb2N0bF9zZXRmbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IF9fdXNlciAqYXJncClcbmZzL2ZpbGVfYXR0ci5jLTMyNS17XG5mcy9maWxlX2F0dHIuYzozMjY6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xuZnMvZmlsZV9hdHRyLmMtMzI3LVx0c3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5O1xuLS1cbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG5mcy9maWxlX2F0dHIuYy0zNTcte1xuZnMvZmlsZV9hdHRyLmM6MzU4Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2ZpbGVfYXR0ci5jLTM1OS1cdHN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGZpbGUtXHUwMDNlZl9wYXRoLmRlbnRyeTtcbi0tXG5mcy9mdXNlL2Rpci5jPTkzMD1zdGF0aWMgaW50IGZ1c2VfYXRvbWljX29wZW4oc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmVudHJ5LFxuLS1cbmZzL2Z1c2UvZGlyLmMtOTM0LVx0aW50IGVycjtcbmZzL2Z1c2UvZGlyLmM6OTM1Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbmZzL2Z1c2UvZGlyLmMtOTM2LVx0c3RydWN0IGZ1c2VfY29ubiAqZmMgPSBnZXRfZnVzZV9jb25uKGRpcik7XG4tLVxuZnMvZnVzZS9maWxlLmM9MTUwMz1zdGF0aWMgc3NpemVfdCBmdXNlX2NhY2hlX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxuZnMvZnVzZS9maWxlLmMtMTUwNS1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZnVzZS9maWxlLmM6MTUwNjpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XG5mcy9mdXNlL2ZpbGUuYy0xNTA3LVx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVx1MDAzZWZfbWFwcGluZztcbi0tXG5mcy9mdXNlL2ZpbGUuYz0yNzE2PXN0YXRpYyB2b2lkIGZ1c2VfZG9fdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9maWxlLmMtMjcyNi1cbmZzL2Z1c2UvZmlsZS5jOjI3Mjc6XHRmdXNlX2RvX3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfZGVudHJ5KGZpbGUpLCBcdTAwMjZhdHRyLCBmaWxlKTtcbmZzL2Z1c2UvZmlsZS5jLTI3MjgtfVxuLS1cbmZzL2lub2RlLmM9MjM3Nj1zdGF0aWMgaW50IGZpbGVfcmVtb3ZlX3ByaXZzX2ZsYWdzKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvaW5vZGUuYy0yMzg1LVxuZnMvaW5vZGUuYzoyMzg2Olx0a2lsbCA9IGRlbnRyeV9uZWVkc19yZW1vdmVfcHJpdnMoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSk7XG5mcy9pbm9kZS5jLTIzODctXHRpZiAoa2lsbCBcdTAwM2MgMClcbi0tXG5mcy9pbm9kZS5jLTIzOTMtXG5mcy9pbm9kZS5jOjIzOTQ6XHRcdGVycm9yID0gX19yZW1vdmVfcHJpdnMoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSwga2lsbCk7XG5mcy9pbm9kZS5jLTIzOTUtXHR9XG4tLVxuZnMvbG9ja3MuYz0yMTM2PXZmc19zZXRsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCwgaW50IGFyZywgc3RydWN0IGZpbGVfbGVhc2UgKipsZWFzZSwgdm9pZCAqKnByaXYpXG4tLVxuZnMvbG9ja3MuYy0yMTM4LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XG5mcy9sb2Nrcy5jOjIxMzk6XHR2ZnN1aWRfdCB2ZnN1aWQgPSBpX3VpZF9pbnRvX3Zmc3VpZChmaWxlX21udF9pZG1hcChmaWxwKSwgaW5vZGUpO1xuZnMvbG9ja3MuYy0yMTQwLVx0aW50IGVycm9yO1xuLS1cbmZzL29wZW4uYz0xNjQ9aW50IGRvX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IGxlbmd0aCwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmZzL29wZW4uYy0xOTMtXHRzY29wZWRfZ3VhcmQoc3VwZXJfd3JpdGUsIGlub2RlLVx1MDAzZWlfc2IpXG5mcy9vcGVuLmM6MTk0Olx0XHRyZXR1cm4gZG9fdHJ1bmNhdGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSwgbGVuZ3RoLFxuZnMvb3Blbi5jLTE5NS1cdFx0XHRcdCAgIEFUVFJfTVRJTUUgfCBBVFRSX0NUSU1FLCBmaWxlKTtcbi0tXG5mcy9yZW1hcF9yYW5nZS5jPTQxNj1zdGF0aWMgYm9vbCBtYXlfZGVkdXBlX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9yZW1hcF9yYW5nZS5jLTQxNy17XG5mcy9yZW1hcF9yYW5nZS5jOjQxODpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XG5mcy9yZW1hcF9yYW5nZS5jLTQxOS1cdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MTc0ND12b2lkIGNyZWF0ZV9wb3NpeF9yc3BfYnVmKGNoYXIgKmNjLCBzdHJ1Y3Qga3NtYmRfZmlsZSAqZnApXG4tLVxuZnMvc21iL3NlcnZlci9vcGxvY2suYy0xNzQ3LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL29wbG9jay5jOjE3NDg6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9vcGxvY2suYy0xNzQ5LVx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoaWRtYXAsIGlub2RlKTtcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz00MjczPXN0YXRpYyBpbnQgcHJvY2Vzc19xdWVyeV9kaXJfZW50cmllcyhzdHJ1Y3Qgc21iMl9xdWVyeV9kaXJfcHJpdmF0ZSAqcHJpdilcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTQyNzQte1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NDI3NTpcdHN0cnVjdCBtbnRfaWRtYXBcdCppZG1hcCA9IGZpbGVfbW50X2lkbWFwKHByaXYtXHUwMDNlZGlyX2ZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDI3Ni1cdHN0cnVjdCBrc3RhdFx0XHRrc3RhdDtcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz00NTA5PWludCBzbWIyX3F1ZXJ5X2RpcihzdHJ1Y3Qga3NtYmRfd29yayAqd29yaylcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy00NTQ1LVx0aWYgKCEoZGlyX2ZwLVx1MDAzZWRhY2Nlc3MgXHUwMDI2IEZJTEVfTElTVF9ESVJFQ1RPUllfTEUpIHx8XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYzo0NTQ2Olx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZGlyX2ZwLVx1MDAzZWZpbHApLFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDU0Ny1cdFx0XHQgICAgIGZpbGVfaW5vZGUoZGlyX2ZwLVx1MDAzZWZpbHApLFxuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTQ4MTg9c3RhdGljIGludCBzbWIyX2dldF9lYShzdHJ1Y3Qga3NtYmRfd29yayAqd29yaywgc3RydWN0IGtzbWJkX2ZpbGUgKmZwLFxuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTQ4MjctXHRjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aDtcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQ4Mjg6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDgyOS1cbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz01NDMxPXN0YXRpYyBpbnQgZmluZF9maWxlX3Bvc2l4X2luZm8oc3RydWN0IHNtYjJfcXVlcnlfaW5mb19yc3AgKnJzcCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01NDM1LVx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYzo1NDM2Olx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cdTAwM2VmaWxwKTtcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTU0MzctXHR2ZnN1aWRfdCB2ZnN1aWQgPSBpX3VpZF9pbnRvX3Zmc3VpZChpZG1hcCwgaW5vZGUpO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTU4ODM9c3RhdGljIGludCBzbWIyX2dldF9pbmZvX3NlYyhzdHJ1Y3Qga3NtYmRfd29yayAqd29yayxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01OTI1LVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NTkyNjpcdGlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01OTI3LVx0aW5vZGUgPSBmaWxlX2lub2RlKGZwLVx1MDAzZWZpbHApO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTYyMzQ9c3RhdGljIGludCBzbWIyX3JlbmFtZShzdHJ1Y3Qga3NtYmRfd29yayAqd29yayxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy02MjczLVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NjI3NDpcdFx0cmMgPSBrc21iZF92ZnNfc2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZnAtXHUwMDNlZmlscCksXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy02Mjc1LVx0XHRcdFx0XHRcdTAwMjZmcC1cdTAwM2VmaWxwLVx1MDAzZWZfcGF0aCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz02MzczPXN0YXRpYyBpbnQgc2V0X2ZpbGVfYmFzaWNfaW5mbyhzdHJ1Y3Qga3NtYmRfZmlsZSAqZnAsXG4tLVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjM4OC1cdGlub2RlID0gZmlsZV9pbm9kZShmaWxwKTtcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjYzODk6XHRpZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjM5MC1cbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz04MzU3PXN0YXRpYyBpbmxpbmUgaW50IGZzY3RsX3NldF9zcGFyc2Uoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHU2NCBpZCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy04Mzc4LVxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6ODM3OTpcdGlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZnAtXHUwMDNlZmlscCk7XG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy04MzgwLVxuLS1cbmZzL3NtYi9zZXJ2ZXIvc21iX2NvbW1vbi5jPTQ0NT1pbnQga3NtYmRfcG9wdWxhdGVfZG90X2RvdGRvdF9lbnRyaWVzKHN0cnVjdCBrc21iZF93b3JrICp3b3JrLCBpbnQgaW5mb19sZXZlbCxcbi0tXG5mcy9zbWIvc2VydmVyL3NtYl9jb21tb24uYy00NTQtXHRzdHJ1Y3Qga3NtYmRfY29ubiAqY29ubiA9IHdvcmstXHUwMDNlY29ubjtcbmZzL3NtYi9zZXJ2ZXIvc21iX2NvbW1vbi5jOjQ1NTpcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZGlyLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci9zbWJfY29tbW9uLmMtNDU2LVxuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzLmM9MjQ4PXN0YXRpYyBpbnQga3NtYmRfdmZzX3N0cmVhbV9yZWFkKHN0cnVjdCBrc21iZF9maWxlICpmcCwgY2hhciAqYnVmLCBsb2ZmX3QgKnBvcyxcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTI1OC1cdHNhdmVkX2NyZWQgPSBvdmVycmlkZV9jcmVkcyhmcC1cdTAwM2VmaWxwLVx1MDAzZWZfY3JlZCk7XG5mcy9zbWIvc2VydmVyL3Zmcy5jOjI1OTpcdHZfbGVuID0ga3NtYmRfdmZzX2dldGNhc2V4YXR0cihmaWxlX21udF9pZG1hcChmcC1cdTAwM2VmaWxwKSxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMjYwLVx0XHRcdFx0ICAgICAgIGZwLVx1MDAzZWZpbHAtXHUwMDNlZl9wYXRoLmRlbnRyeSxcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTM4NT1zdGF0aWMgaW50IGtzbWJkX3Zmc19zdHJlYW1fd3JpdGUoc3RydWN0IGtzbWJkX2ZpbGUgKmZwLCBjaGFyICpidWYsIGxvZmZfdCAqcG9zLFxuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMzg5LVx0Y2hhciAqc3RyZWFtX2J1ZiA9IE5VTEwsICp3YnVmO1xuZnMvc21iL3NlcnZlci92ZnMuYzozOTA6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci92ZnMuYy0zOTEtXHRzaXplX3Qgc2l6ZTtcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTEwMTU9aW50IGtzbWJkX3Zmc191bmxpbmsoc3RydWN0IGZpbGUgKmZpbHApXG4tLVxuZnMvc21iL3NlcnZlci92ZnMuYy0xMDE5LVx0c3RydWN0IGRlbnRyeSAqZGlyLCAqZGVudHJ5ID0gZmlscC1cdTAwM2VmX3BhdGguZGVudHJ5O1xuZnMvc21iL3NlcnZlci92ZnMuYzoxMDIwOlx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMTAyMS1cbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTE5NTc9aW50IGtzbWJkX3Zmc19zZXRfY29tcHJlc3Npb24oc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHN0cnVjdCBrc21iZF9maWxlICpmcCwgdTE2IGZtdClcbi0tXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTE5NjEtXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmcC1cdTAwM2VmaWxwLVx1MDAzZWZfcGF0aC5kZW50cnk7XG5mcy9zbWIvc2VydmVyL3Zmcy5jOjE5NjI6XHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVx1MDAzZWZpbHApO1xuZnMvc21iL3NlcnZlci92ZnMuYy0xOTYzLVx0dTMyIGZsYWdzO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzX2NhY2hlLmM9MzY5PXN0YXRpYyB2b2lkIF9fa3NtYmRfaW5vZGVfY2xvc2Uoc3RydWN0IGtzbWJkX2ZpbGUgKmZwKVxuLS1cbmZzL3NtYi9zZXJ2ZXIvdmZzX2NhY2hlLmMtMzkwLVx0XHRcdHNhdmVkX2NyZWQgPSBvdmVycmlkZV9jcmVkcyhmaWxwLVx1MDAzZWZfY3JlZCk7XG5mcy9zbWIvc2VydmVyL3Zmc19jYWNoZS5jOjM5MTpcdFx0XHRlcnIgPSBrc21iZF92ZnNfcmVtb3ZlX3hhdHRyKGZpbGVfbW50X2lkbWFwKGZpbHApLFxuZnMvc21iL3NlcnZlci92ZnNfY2FjaGUuYy0zOTItXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZmaWxwLVx1MDAzZWZfcGF0aCxcbi0tXG5mcy94YXR0ci5jPTY2Nj1pbnQgZmlsZV9zZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGtlcm5lbF94YXR0cl9jdHggKmN0eClcbi0tXG5mcy94YXR0ci5jLTY3MS1cdFx0YXVkaXRfZmlsZShmKTtcbmZzL3hhdHRyLmM6NjcyOlx0XHRlcnJvciA9IGRvX3NldHhhdHRyKGZpbGVfbW50X2lkbWFwKGYpLCBmLVx1MDAzZWZfcGF0aC5kZW50cnksIGN0eCk7XG5mcy94YXR0ci5jLTY3My1cdFx0bW50X2Ryb3Bfd3JpdGVfZmlsZShmKTtcbi0tXG5mcy94YXR0ci5jPTgyMj1zc2l6ZV90IGZpbGVfZ2V0eGF0dHIoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCBrZXJuZWxfeGF0dHJfY3R4ICpjdHgpXG4tLVxuZnMveGF0dHIuYy04MjQtXHRhdWRpdF9maWxlKGYpO1xuZnMveGF0dHIuYzo4MjU6XHRyZXR1cm4gZG9fZ2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZiksIGYtXHUwMDNlZl9wYXRoLmRlbnRyeSwgY3R4KTtcbmZzL3hhdHRyLmMtODI2LX1cbi0tXG5mcy94YXR0ci5jPTEwMzk9c3RhdGljIGludCBmaWxlX3JlbW92ZXhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgeGF0dHJfbmFtZSAqa25hbWUpXG4tLVxuZnMveGF0dHIuYy0xMDQ0LVx0XHRhdWRpdF9maWxlKGYpO1xuZnMveGF0dHIuYzoxMDQ1Olx0XHRlcnJvciA9IHJlbW92ZXhhdHRyKGZpbGVfbW50X2lkbWFwKGYpLFxuZnMveGF0dHIuYy0xMDQ2LVx0XHRcdFx0ICAgIGYtXHUwMDNlZl9wYXRoLmRlbnRyeSwga25hbWUtXHUwMDNlbmFtZSk7XG4tLVxuZnMveGZzL3hmc19maWxlLmM9MTI0Mz14ZnNfZmFsbG9jX3NldHNpemUoXG4tLVxuZnMveGZzL3hmc19maWxlLmMtMTI1My1cdFx0cmV0dXJuIDA7XG5mcy94ZnMveGZzX2ZpbGUuYzoxMjU0Olx0cmV0dXJuIHhmc192bl9zZXRhdHRyX3NpemUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfZGVudHJ5KGZpbGUpLFxuZnMveGZzL3hmc19maWxlLmMtMTI1NS1cdFx0XHRcdTAwMjZpYXR0cik7XG4tLVxuZnMveGZzL3hmc19pb2N0bC5jPTgxPXhmc19pb2NfZnNidWxrc3RhdChcbi0tXG5mcy94ZnMveGZzX2lvY3RsLmMtODktXHRcdC5tcFx0XHQ9IG1wLFxuZnMveGZzL3hmc19pb2N0bC5jOjkwOlx0XHQuaWRtYXBcdFx0PSBmaWxlX21udF9pZG1hcChmaWxlKSxcbmZzL3hmcy94ZnNfaW9jdGwuYy05MS1cdFx0Lm9jb3VudFx0XHQ9IDAsXG4tLVxuZnMveGZzL3hmc19pb2N0bC5jPTI2ND14ZnNfaW9jX2J1bGtzdGF0KFxuLS1cbmZzL3hmcy94ZnNfaW9jdGwuYy0yNzItXHRcdC5tcFx0XHRcdD0gbXAsXG5mcy94ZnMveGZzX2lvY3RsLmM6MjczOlx0XHQuaWRtYXBcdFx0XHQ9IGZpbGVfbW50X2lkbWFwKGZpbGUpLFxuZnMveGZzL3hmc19pb2N0bC5jLTI3NC1cdH07XG4tLVxuZnMveGZzL3hmc19pb2N0bDMyLmM9MTk4PXhmc19jb21wYXRfaW9jX2ZzYnVsa3N0YXQoXG4tLVxuZnMveGZzL3hmc19pb2N0bDMyLmMtMjA3LVx0XHQubXBcdFx0PSBtcCxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jOjIwODpcdFx0LmlkbWFwXHRcdD0gZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5mcy94ZnMveGZzX2lvY3RsMzIuYy0yMDktXHRcdC5vY291bnRcdFx0PSAwLFxuLS1cbmluY2x1ZGUvbGludXgvZnMuaD0yNDQwPXN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBmaWxlbmFtZSkgJSA2NCA9PSAwKTtcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQxLVxuaW5jbHVkZS9saW51eC9mcy5oOjI0NDI6c3RhdGljIGlubGluZSBzdHJ1Y3QgbW50X2lkbWFwICpmaWxlX21udF9pZG1hcChjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQzLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZzLmg9MjQ0Nz1zdGF0aWMgaW5saW5lIGJvb2wgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKVxuaW5jbHVkZS9saW51eC9mcy5oLTI0NDgte1xuaW5jbHVkZS9saW51eC9mcy5oOjI0NDk6XHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSk7XG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ1MC19XG4tLVxuaW5jbHVkZS9saW51eC9mcy5oPTI2OTQ9c3RhdGljIGlubGluZSBpbnQgZmlsZV9wZXJtaXNzaW9uKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbWFzaylcbmluY2x1ZGUvbGludXgvZnMuaC0yNjk1LXtcbmluY2x1ZGUvbGludXgvZnMuaDoyNjk2Olx0cmV0dXJuIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjY5Ny1cdFx0XHRcdGZpbGVfaW5vZGUoZmlsZSksIG1hc2spO1xuLS1cbnNlY3VyaXR5L2FwcGFybW9yL2RvbWFpbi5jPTkxOT1pbnQgYXBwYXJtb3JfYnBybV9jcmVkc19mb3JfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbnNlY3VyaXR5L2FwcGFybW9yL2RvbWFpbi5jLTkyOC1cdGJvb2wgdW5zYWZlID0gZmFsc2U7XG5zZWN1cml0eS9hcHBhcm1vci9kb21haW4uYzo5Mjk6XHR2ZnN1aWRfdCB2ZnN1aWQgPSBpX3VpZF9pbnRvX3Zmc3VpZChmaWxlX21udF9pZG1hcChicHJtLVx1MDAzZWZpbGUpLFxuc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMtOTMwLVx0XHRcdFx0XHQgICAgZmlsZV9pbm9kZShicHJtLVx1MDAzZWZpbGUpKTtcbi0tXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmM9NDgzPXN0YXRpYyBpbnQgX19maWxlX3BhdGhfcGVybShjb25zdCBjaGFyICpvcCwgY29uc3Qgc3RydWN0IGNyZWQgKnN1YmpfY3JlZCxcbi0tXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmMtNDg5LVx0c3RydWN0IGFhX3Blcm1zIHBlcm1zID0ge307XG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmM6NDkwOlx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmMtNDkxLVx0XHRcdFx0XHQgICAgZmlsZV9pbm9kZShmaWxlKSk7XG4tLVxuc2VjdXJpdHkvYXBwYXJtb3IvbHNtLmM9NDYxPXN0YXRpYyBpbnQgYXBwYXJtb3JfZmlsZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbnNlY3VyaXR5L2FwcGFybW9yL2xzbS5jLTQ4NC1cdGlmICghdW5jb25maW5lZChsYWJlbCkpIHtcbnNlY3VyaXR5L2FwcGFybW9yL2xzbS5jOjQ4NTpcdFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcbnNlY3VyaXR5L2FwcGFybW9yL2xzbS5jLTQ4Ni1cdFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XG4tLVxuc2VjdXJpdHkvY29tbW9uY2FwLmM9NzYzPXN0YXRpYyBpbnQgZ2V0X2ZpbGVfY2FwcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5zZWN1cml0eS9jb21tb25jYXAuYy03ODQtXG5zZWN1cml0eS9jb21tb25jYXAuYzo3ODU6XHRyYyA9IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soZmlsZV9tbnRfaWRtYXAoZmlsZSksXG5zZWN1cml0eS9jb21tb25jYXAuYy03ODYtXHRcdFx0XHQgICAgZmlsZS1cdTAwM2VmX3BhdGguZGVudHJ5LCBcdTAwMjZ2Y2Fwcyk7XG4tLVxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTI1ND1zdGF0aWMgaW50IHByb2Nlc3NfbWVhc3VyZW1lbnQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkLFxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy0yODItXHQgKi9cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYzoyODM6XHRhY3Rpb24gPSBpbWFfZ2V0X2FjdGlvbihmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUsIGNyZWQsIHByb3AsXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtMjg0LVx0XHRcdFx0bWFzaywgZnVuYywgXHUwMDI2cGNyLCBcdTAwMjZ0ZW1wbGF0ZV9kZXNjLCBOVUxMLFxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYz01NDM9c3RhdGljIGludCBpbWFfZmlsZV9tcHJvdGVjdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyByZXFwcm90LFxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy01NjMtXHRpbm9kZSA9IGZpbGVfaW5vZGUodm1hLVx1MDAzZXZtX2ZpbGUpO1xuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjU2NDpcdGFjdGlvbiA9IGltYV9nZXRfYWN0aW9uKGZpbGVfbW50X2lkbWFwKHZtYS1cdTAwM2V2bV9maWxlKSwgaW5vZGUsXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtNTY1LVx0XHRcdFx0Y3VycmVudF9jcmVkKCksIFx1MDAyNnByb3AsIE1BWV9FWEVDLCBNTUFQX0NIRUNLLFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTU2Ni1cdFx0XHRcdFx1MDAyNnBjciwgXHUwMDI2dGVtcGxhdGUsIE5VTEwsIE5VTEwpO1xuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjU2NzpcdGFjdGlvbiB8PSBpbWFfZ2V0X2FjdGlvbihmaWxlX21udF9pZG1hcCh2bWEtXHUwMDNldm1fZmlsZSksIGlub2RlLFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTU2OC1cdFx0XHRcdCBjdXJyZW50X2NyZWQoKSwgXHUwMDI2cHJvcCwgTUFZX0VYRUMsXG4tLVxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTExNzY9dm9pZCBpbWFfa2V4ZWNfY21kbGluZShpbnQga2VybmVsX2ZkLCBjb25zdCB2b2lkICpidWYsIGludCBzaXplKVxuLS1cbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy0xMTg0LVxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjExODU6XHRwcm9jZXNzX2J1ZmZlcl9tZWFzdXJlbWVudChmaWxlX21udF9pZG1hcChmZF9maWxlKGYpKSwgZmlsZV9pbm9kZShmZF9maWxlKGYpKSxcbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy0xMTg2LVx0XHRcdFx0ICAgYnVmLCBzaXplLCBcJiMzNDtrZXhlYy1jbWRsaW5lXCYjMzQ7LCBLRVhFQ19DTURMSU5FLCAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNzE3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWFkdmlzZSBhbmQgTWluY29yZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBtbS9taW5jb3JlLmNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgLCBhbmQgYGRvX21pbmNvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlci4gSG1tLCBgbWFkdmlzZV9wYWdlb3V0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpa2VseSBjYWxsZWQgd2l0aGluIHRoZSBzYW1lIGZpbGUuIExldCYjMzk7cyBzZWUuLi4gaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBpbnZva2VkIGJ5IGBtYWR2aXNlX3ZtYV9iZWhhdmlvcmAgb3IgcGVyaGFwcyBkaXJlY3RseSBieSBgZG9fbWFkdmlzZWAuIEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdC4KCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBib3RoIGBtYWR2aXNlX3BhZ2VvdXRgIGFuZCBgZG9fbWluY29yZWAgY2FyZWZ1bGx5LiBJIHJlY2FsbCBgZG9fbWluY29yZWAgaXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBiZWhpbmQgdGhlIGBzeXNfbWluY29yZWAgc3lzdGVtIGNhbGwsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgZm9yIGBtYWR2aXNlX3BhZ2VvdXRgLiBJIHN1c3BlY3QgSSYjMzk7bGwgZmluZCBpdCB3aXRoaW4gYG1hZHZpc2Vfdm1hX2JlaGF2aW9yYCBvciBzb21lIHNpbWlsYXIgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIGluIGBtbS9tYWR2aXNlLmNgLiBPa2F5LCBsZXQmIzM5O3Mgb3BlbiB0aGF0IGZpbGUgYW5kIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hZHZpc2VfcGFnZW91dCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tYWR2aXNlLmM9NTk1PXN0YXRpYyBsb25nIG1hZHZpc2VfY29sZChzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtNjEwLVxubW0vbWFkdmlzZS5jOjYxMTpzdGF0aWMgdm9pZCBtYWR2aXNlX3BhZ2VvdXRfcGFnZV9yYW5nZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLFxubW0vbWFkdmlzZS5jLTYxMi1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vbWFkdmlzZS5jLTYyNS1cbm1tL21hZHZpc2UuYzo2MjY6c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxubW0vbWFkdmlzZS5jLTYyNy17XG4tLVxubW0vbWFkdmlzZS5jLTY0NS1cdHRsYl9nYXRoZXJfbW11KFx1MDAyNnRsYiwgbWFkdl9iZWhhdmlvci1cdTAwM2VtbSk7XG5tbS9tYWR2aXNlLmM6NjQ2Olx0bWFkdmlzZV9wYWdlb3V0X3BhZ2VfcmFuZ2UoXHUwMDI2dGxiLCB2bWEsIFx1MDAyNm1hZHZfYmVoYXZpb3ItXHUwMDNlcmFuZ2UpO1xubW0vbWFkdmlzZS5jLTY0Ny1cdHRsYl9maW5pc2hfbW11KFx1MDAyNnRsYik7XG4tLVxubW0vbWFkdmlzZS5jPTEzMzg9c3RhdGljIGludCBtYWR2aXNlX3ZtYV9iZWhhdmlvcihzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcbi0tXG5tbS9tYWR2aXNlLmMtMTM1Ni1cdGNhc2UgTUFEVl9QQUdFT1VUOlxubW0vbWFkdmlzZS5jOjEzNTc6XHRcdHJldHVybiBtYWR2aXNlX3BhZ2VvdXQobWFkdl9iZWhhdmlvcik7XG5tbS9tYWR2aXNlLmMtMTM1OC1cdGNhc2UgTUFEVl9GUkVFOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU5NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUGFnZW91dCBhbmQgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhlIHBhZ2VvdXQgcHJvY2VzcyDigJMgYGRvX21pbmNvcmVgIGFuZCBgbWFkdmlzZV9wYWdlb3V0YC4gQnV0IGhvbGQgb24sIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUgc2xpZ2h0bHkuIExvb2tpbmcgZGVlcGVyLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBzZWVtcyBpbXBvcnRhbnQgYXMgd2VsbCwgYmVjYXVzZSBpdCBjYWxscyBgY2FuX2RvX2ZpbGVfcGFnZW91dGAuIE5vdywgSSByZWNhbGwgdGhhdCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBmdW5jdGlvbnMgYXMgYSBwYWdlIHdhbGsgY2FsbGJhY2suIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCBpdHNlbGYuIEnigJlsbCBuYXZpZ2F0ZSB0byBgbW0vbWFkdmlzZS5jYCB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgd2l0aGluIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nhbl9kb19maWxlX3BhZ2VvdXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWFkdmlzZS5jPTI4MT1zdGF0aWMgbG9uZyBtYWR2aXNlX3dpbGxuZWVkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxuLS1cbm1tL21hZHZpc2UuYy0zMjgtXG5tbS9tYWR2aXNlLmM6MzI5OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxubW0vbWFkdmlzZS5jLTMzMC17XG4tLVxubW0vbWFkdmlzZS5jPTM1Mz1zdGF0aWMgaW50IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZShwbWRfdCAqcG1kLFxuLS1cbm1tL21hZHZpc2UuYy0zNzMtXHRwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0IFx1MDAyNlx1MDAyNiAhdm1hX2lzX2Fub255bW91cyh2bWEpIFx1MDAyNlx1MDAyNlxubW0vbWFkdmlzZS5jOjM3NDpcdFx0XHRcdFx0IWNhbl9kb19maWxlX3BhZ2VvdXQodm1hKTtcbm1tL21hZHZpc2UuYy0zNzUtXG4tLVxubW0vbWFkdmlzZS5jPTYyNj1zdGF0aWMgbG9uZyBtYWR2aXNlX3BhZ2VvdXQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXG4tLVxubW0vbWFkdmlzZS5jLTYzOS1cdCAqL1xubW0vbWFkdmlzZS5jOjY0MDpcdGlmICghdm1hX2lzX2Fub255bW91cyh2bWEpIFx1MDAyNlx1MDAyNiAoIWNhbl9kb19maWxlX3BhZ2VvdXQodm1hKSBcdTAwMjZcdTAwMjZcbm1tL21hZHZpc2UuYy02NDEtXHRcdFx0XHQodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9NQVlTSEFSRSkpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIzMgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGb2N1c2luZyBNeSBBbmFseXNpcyBvZiBNZW1vcnkgTWFuYWdlbWVudCoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlciBpbnRvIHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgdG9vbHMgYW5kIGJlaGF2aW9ycy4gSSYjMzk7dmUgZ290IGEgY291cGxlIG9mIGtleSBhcmVhcyB0byBjb25jZW50cmF0ZSBvbi4gSXQgbG9va3MgbGlrZSBgbWFkdmlzZV9wYWdlb3V0YCBhbmQgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgYXJlIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiBwYWdlb3V0IG1lY2hhbmlzbXMgYW5kIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHRoZW0uIFRob3NlIGZ1bmN0aW9ucyBsaWtlbHkgaG9sZCB0aGUgY29yZSBsb2dpYyBJJiMzOTttIGxvb2tpbmcgZm9yLgoKVGhlbiB0aGVyZSYjMzk7cyBgbWluY29yZS5jYCwgYW5kIHNwZWNpZmljYWxseSBgZG9fbWluY29yZWAuIFRoYXQgc2VlbXMgbGlrZSBhbiBvYnZpb3VzIGZ1bmN0aW9uIHRvIHN0dWR5LiBUaGlzIHdvdWxkIGJlIGNlbnRyYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGBtaW5jb3JlYCBzeXN0ZW0gY2FsbCB3b3JrcyB0byBkZXRlcm1pbmUgcmVzaWRlbnQgbWVtb3J5IHBhZ2VzLiBJIHRoaW5rIEkgd2lsbCBzdHVkeSBob3cgdGhhdCBzeXN0ZW0gY2FsbCBpcyBpbXBsZW1lbnRlZCwgc28gdGhhdCBJIGhhdmUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIHVzZXIgYWNjZXNzZXMgbWVtb3J5IHJlc2lkZW5jZSBpbmZvcm1hdGlvbi4KCkFuZCBmaW5hbGx5LCBzb21ldGhpbmcgZWxzZSB0aGF0IGNhdWdodCBteSBleWUgaXMgYGNhbl9kb19jYWNoZXN0YXRgIGluIGBtbS9maWxlbWFwLmNgLiBUaGF0IGZ1bmN0aW9uICpjb3VsZCogYmUgYSByZWxhdGVkIGFyZWEgZm9yIGNvbnNpZGVyYXRpb24gYXMgd2VsbCwgc2luY2UgdGhhdCBmaWxlIGlzIHJlbGF0ZWQgdG8gYGZpbGVtYXBgLCB3aGljaCByZWxhdGVzIHRvIGNhY2hlZCBmaWxlIGRhdGEgdGhhdCB3b3VsZCBhbHNvIGJlIHBhZ2VkIG91dCBvciBtYW5hZ2VkIGRpZmZlcmVudGx5IGluIHRoZSBzeXN0ZW0uIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoYXQsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIGltcGxpY2F0aW9ucyBvbiBwYWdlb3V0L2NhY2hlc3RhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2FuX2RvX2NhY2hlc3RhdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9maWxlbWFwLmM9NDYwMj1zdGF0aWMgdm9pZCBmaWxlbWFwX2NhY2hlc3RhdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9maWxlbWFwLmMtNDcwMi0gKi9cbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxubW0vZmlsZW1hcC5jLTQ3MDQte1xuLS1cbm1tL2ZpbGVtYXAuYz00NzQ2PVNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXG4tLVxubW0vZmlsZW1hcC5jLTQ3NjYtXG5tbS9maWxlbWFwLmM6NDc2NzpcdGlmICghY2FuX2RvX2NhY2hlc3RhdChmZF9maWxlKGYpKSlcbm1tL2ZpbGVtYXAuYy00NzY4LVx0XHRyZXR1cm4gLUVQRVJNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc5NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyBmb3IgSWRlbnRpZnlpbmcgUmVsZXZhbnQgRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBmdW5jdGlvbnMgcmVsYXRlZCB0byBjYWNoZSBzdGF0aXN0aWNzLiBJcyBpdCBgc3lzX2NhY2hlc3RhdGAsIGBfX3g2NF9zeXNfY2FjaGVzdGF0YCwgb3IgcGVyaGFwcyBgZmlsZW1hcF9jYWNoZXN0YXRgPyBObywgd2FpdCBhIG1pbnV0ZSwgYGNhbl9kb19jYWNoZXN0YXRgIGlzICpjYWxsZWQqIGluIGBTWVNDQUxMX0RFRklORTQoY2FjaGVzdGF0LCAuLi4pYCB3aGljaCAqaXMqIGBzeXNfY2FjaGVzdGF0YC4gVGhhdCBzZXR0bGVzIGl0LgoKU28sIHRoZSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgZG9fbWluY29yZWAsIGBtYWR2aXNlX3BhZ2VvdXRgLCBhbmQgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAuCgpBaCwgYnV0IHRoZSBvcmlnaW5hbCB0aG91Z2h0IGhhZCBgc3lzX2NhY2hlc3RhdGAgYXMgYSBzeXNjYWxsLCBhbmQgc3l6a2FsbGVyIHVzdWFsbHkgYXR0YWNrcyBzeXNjYWxscyBkaXJlY3RseS4gU28gbWF5YmUgdGhlIGZvY3VzIHNob3VsZCBiZSBgZmlsZW1hcF9jYWNoZXN0YXRgPyBObywgbm8sIGBjYW5fZG9fY2FjaGVzdGF0YCAqaXMqIHdpdGhpbiBgc3lzX2NhY2hlc3RhdGAsIHNvIHRoYXQmIzM5O3MgdGhlIHBhdGguIEkmIzM5O2xsIGp1c3Qga2VlcCB0aGUgcHJpb3IgbGlzdCBvZiBmdW5jdGlvbnM6IGBkb19taW5jb3JlYCwgYG1hZHZpc2VfcGFnZW91dGAsIGFuZCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYC4KCk5vdywgY29uZmlndXJhdGlvbnMuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhdCBwbGF5LiBJZG1hcHBlZCBtb3VudHMgYXJlIGVuYWJsZWQgYnkgYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgLiBCdXQgdGhvc2UgYXJlIGdlbmVyYWwgYW5kIG5vdCBzcGVjaWZpYyB0byB0aGlzIHBhdGNoLgoKSXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBgbWFkdmlzZWAgb3IgYG1pbmNvcmVgPyBQZXJoYXBzIGBDT05GSUdfQURWSVNFX1NZU0NBTExTYD8gVGltZSB0byBkaWcgaW50byBgbW0vS2NvbmZpZ2Agb3IgYGluaXQvS2NvbmZpZ2AgYW5kIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQURWSVNFX1NZU0NBTExTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xOTM3PWNvbmZpZyBJT19VUklOR19NT0NLX0ZJTEVcbi0tXG5pbml0L0tjb25maWctMTk0Ny1cbmluaXQvS2NvbmZpZzoxOTQ4OmNvbmZpZyBBRFZJU0VfU1lTQ0FMTFNcbmluaXQvS2NvbmZpZy0xOTQ5LVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFkdmlzZS9mYWR2aXNlIHN5c2NhbGxzXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU1NQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkNvbnNpZGVyaW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBNZW1vcnkgTWFuYWdlbWVudCoqCgpSaWdodCwgc28gSSYjMzk7bSBldmFsdWF0aW5nIGtlcm5lbCBjb25maWd1cmF0aW9ucyBhbmQgaW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsIGluY2x1ZGluZyBgQURWSVNFX1NZU0NBTExTYCBpcyBhIHNvbGlkIG1vdmUuIEl0IHByb3ZpZGVzIGltcG9ydGFudCBoaW50cyB0byB0aGUga2VybmVsIGFib3V0IGhvdyB3ZSBleHBlY3QgdG8gYWNjZXNzIG1lbW9yeSBhbmQgdGhhdCYjMzk7cyBnZW5lcmFsbHkgYSBwZXJmb3JtYW5jZSB3aW4uIEJ1dCB0aGF0IGxlYWRzIG1lIHRvIHRoaW5rIGFib3V0IGBtaW5jb3JlYCwgYW5kIGhvdyBpdCByZWxhdGVzLiBJcyB0aGVyZSBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlZGljYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgYG1pbmNvcmVgIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIHRoZSBjdXJyZW50IGJ1aWxkIGluY2x1ZGVzIHRoYXQgYWJpbGl0eSBhbmQgaWYgbm90LCBob3cgZWFzaWx5IGl0IGNhbiBiZSBpbnRyb2R1Y2VkLiBUaGF0IGtpbmQgb2YgaW5zaWdodCBkaXJlY3RseSBpbmZsdWVuY2VzIG15IG5leHQgc3RlcHMgaW4gdGhlIGJ1aWxkIGFuZCBvcHRpbWl6YXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUlOQ09SRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzczCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgQnVpbGQgUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG1pbmNvcmUub2AgaXMgYmVpbmcgYnVpbHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBtZW1vcnkgbWFuYWdlbWVudC1yZWxhdGVkIG9iamVjdCBmaWxlcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVmaW5lZCwgb3IgYXQgbGVhc3QgbGlua2VkLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIHVuZGVyIHRoZSBgbW0vYCBkaXJlY3RvcnksIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3Iga2VybmVsIGNvZGUuIE1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZXJlLCBhcyB0aGUgbWFrZWZpbGVzIG9yY2hlc3RyYXRlIHRoZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyBwcm9jZXNzLCBzbyBpdCYjMzk7cyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCByZWNpcGUgZm9yIGEgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgbWFrZWZpbGUgdGVsbHMgdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pbmNvcmVcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTM2PW1tdS15XHRcdFx0Oj0gbm9tbXUub1xubW0vTWFrZWZpbGU6Mzc6bW11LSQoQ09ORklHX01NVSlcdDo9IGhpZ2htZW0ubyBtZW1vcnkubyBtaW5jb3JlLm8gXFxcbm1tL01ha2VmaWxlLTM4LVx0XHRcdCAgIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDU4CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGxhaW5pbmcgYWJvdXQgYG1pbmNvcmUub2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBpc3N1ZSBib2lscyBkb3duIHRvIGBDT05GSUdfTU1VYC4gQnV0IGhvbGQgb24sIGlzbiYjMzk7dCBgQ09ORklHX01NVWAgYSBnaXZlbiBmb3IgYWxsIG9mIG91ciB0YXJnZXQgcGxhdGZvcm1zPyBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGlzLiBXZSYjMzk7dmUgYWx3YXlzIG5lZWRlZCBhIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXQsIHNvIHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucywgdGhvdWdoLCBhbmQgSSYjMzk7bGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNvbmZpcm0gaXQgaW4gb3VyIGJhc2UgY29uZmlnIGZpbGVzLiBJdCYjMzk7cyB1c3VhbGx5IHRoZSBzaW1wbGUgdGhpbmdzIHRoYXQgdHJpcCB1cyB1cC4KCk5vdywgd2hhdCB3YXMgdGhhdCBvdGhlciBtb2R1bGUgdGhlIGJ1aWxkIHdhcyBncnVtYmxpbmcgYWJvdXQ/IE9oIHllYWgsIGBjYWNoZXN0YXRgLiBEb2VzIGBjYWNoZXN0YXRgIHJlbHkgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSSBzaG91bGQgcXVpY2tseSBzY2FuIHRoZSBLY29uZmlnIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHJlbGV2YW50IG9wdGlvbiBJJiMzOTt2ZSBvdmVybG9va2VkLCBiZWNhdXNlIEkgYW0gZmFpcmx5IGNlcnRhaW4gSSBoYXZlIG5ldmVyIGRlYWx0IHdpdGggaXQgYmVmb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYWNoZXN0YXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7TUFJTlRBSU5FUlM9NTcxMz1TOlx0TWFpbnRhaW5lZFxuTUFJTlRBSU5FUlM6NTcxNDpGOlx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmNcbk1BSU5UQUlORVJTLTU3MTUtXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDkyLTU2MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfbmlfc3lzY2FsbFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDkzOjU2MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTQtNTYyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00NjctNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6NDY4OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00NjktNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQ2NC00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQ2NTo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00NjYtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Mi00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1Mzo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTQtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1OC00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1OTo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjAtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zOTEtNDUwXHRuMzJcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzkyOjQ1MVx0bjMyXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zOTMtNDUyXHRuMzJcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjctNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzY4OjQ1MVx0bjY0XHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjktNDUyXHRuNjRcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NDAtNDUwXHRvMzJcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6NDQxOjQ1MVx0bzMyXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NDItNDUyXHRvMzJcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUxLTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTI6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTU0My00NTAgXHRub3NwdVx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU0NDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NDUtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OS00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODEtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTYtNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU3OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NTgtNDUwXHRpMzg2XHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ1OTo0NTFcdGkzODZcdGNhY2hlc3RhdFx0XHRzeXNfY2FjaGVzdGF0XG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjAtNDUyXHRpMzg2XHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM3Ny00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzc4OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc5LTQ1Mlx0Y29tbW9uXHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MjMtNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQyNDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNS00NTJcdGNvbW1vblx0ZmNobW9kYXQyXHRcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD03ND1lbnVtIGxhbmRsb2NrX3J1bGVfdHlwZTtcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo3NTpzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjc2OnN0cnVjdCBjYWNoZXN0YXQ7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNzctc3RydWN0IHN0YXRtb3VudDtcbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9OTk1PWFzbWxpbmthZ2UgbG9uZyBzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTk5Ny1cdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjk5ODphc21saW5rYWdlIGxvbmcgc3lzX2NhY2hlc3RhdCh1bnNpZ25lZCBpbnQgZmQsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6OTk5Olx0XHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIF9fdXNlciAqY3N0YXRfcmFuZ2UsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6MTAwMDpcdFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKmNzdGF0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTEwMDEtYXNtbGlua2FnZSBsb25nIHN5c19tYXBfc2hhZG93X3N0YWNrKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuLS1cbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD04MTQ9X19TWVNDQUxMKF9fTlJfc2V0X21lbXBvbGljeV9ob21lX25vZGUsIHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZSlcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4MTU6I2RlZmluZSBfX05SX2NhY2hlc3RhdCA0NTFcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4MTY6X19TWVNDQUxMKF9fTlJfY2FjaGVzdGF0LCBzeXNfY2FjaGVzdGF0KVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTgxNy0jZGVmaW5lIF9fTlJfZmNobW9kYXQyIDQ1MlxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDUtXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjQ2OnN0cnVjdCBjYWNoZXN0YXRfcmFuZ2Uge1xuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC00Ny1cdF9fdTY0IG9mZjtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oLTUwLVxuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaDo1MTpzdHJ1Y3QgY2FjaGVzdGF0IHtcbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNTItXHRfX3U2NCBucl9jYWNoZTtcbi0tXG5pbml0L0tjb25maWc9MjA0MT1jb25maWcgQ0FDSEVTVEFUX1NZU0NBTExcbmluaXQvS2NvbmZpZzoyMDQyOlx0Ym9vbCBcJiMzNDtFbmFibGUgY2FjaGVzdGF0KCkgc3lzdGVtIGNhbGxcJiMzNDsgaWYgRVhQRVJUXG5pbml0L0tjb25maWctMjA0My1cdGRlZmF1bHQgeVxuaW5pdC9LY29uZmlnLTIwNDQtXHRoZWxwXG5pbml0L0tjb25maWc6MjA0NTpcdCAgRW5hYmxlIHRoZSBjYWNoZXN0YXQgc3lzdGVtIGNhbGwsIHdoaWNoIHF1ZXJpZXMgdGhlIHBhZ2UgY2FjaGVcbmluaXQvS2NvbmZpZy0yMDQ2LVx0ICBzdGF0aXN0aWNzIG9mIGEgZmlsZSAobnVtYmVyIG9mIGNhY2hlZCBwYWdlcywgZGlydHkgcGFnZXMsXG4tLVxua2VybmVsL3N5c19uaS5jPTE5NT1DT05EX1NZU0NBTEwoc2V0X21lbXBvbGljeV9ob21lX25vZGUpO1xua2VybmVsL3N5c19uaS5jOjE5NjpDT05EX1NZU0NBTEwoY2FjaGVzdGF0KTtcbmtlcm5lbC9zeXNfbmkuYy0xOTctQ09ORF9TWVNDQUxMKG1zZWFsKTtcbi0tXG5tbS9maWxlbWFwLmM9NDU4Nz1FWFBPUlRfU1lNQk9MX0dQTChmaWxlbWFwX2ludmFsaWRhdGVfaW5vZGUpO1xuLS1cbm1tL2ZpbGVtYXAuYy00NTkwLS8qKlxubW0vZmlsZW1hcC5jOjQ1OTE6ICogZmlsZW1hcF9jYWNoZXN0YXQoKSAtIGNvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIG1hcHBpbmdcbm1tL2ZpbGVtYXAuYy00NTkyLSAqIEBtYXBwaW5nOlx0VGhlIG1hcHBpbmcgdG8gY29tcHV0ZSB0aGUgc3RhdGlzdGljcyBmb3IuXG4tLVxubW0vZmlsZW1hcC5jLTQ1OTQtICogQGxhc3RfaW5kZXg6XHRUaGUgZmluYWwgcGFnZSBpbmRleCAoaW5jbHVzaXZlKS5cbm1tL2ZpbGVtYXAuYzo0NTk1OiAqIEBjczpcdHRoZSBjYWNoZXN0YXQgc3RydWN0IHRvIHdyaXRlIHRoZSByZXN1bHQgdG8uXG5tbS9maWxlbWFwLmMtNDU5Ni0gKlxuLS1cbm1tL2ZpbGVtYXAuYy00NjAxLSAqL1xubW0vZmlsZW1hcC5jOjQ2MDI6c3RhdGljIHZvaWQgZmlsZW1hcF9jYWNoZXN0YXQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5tbS9maWxlbWFwLmM6NDYwMzpcdFx0cGdvZmZfdCBmaXJzdF9pbmRleCwgcGdvZmZfdCBsYXN0X2luZGV4LCBzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbm1tL2ZpbGVtYXAuYy00NjA0LXtcbi0tXG5tbS9maWxlbWFwLmMtNDcwMi0gKi9cbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxubW0vZmlsZW1hcC5jLTQ3MDQte1xuLS1cbm1tL2ZpbGVtYXAuYy00NzEyLS8qXG5tbS9maWxlbWFwLmM6NDcxMzogKiBUaGUgY2FjaGVzdGF0KDIpIHN5c3RlbSBjYWxsLlxubW0vZmlsZW1hcC5jLTQ3MTQtICpcbm1tL2ZpbGVtYXAuYzo0NzE1OiAqIGNhY2hlc3RhdCgpIHJldHVybnMgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIGZpbGUgaW4gdGhlXG5tbS9maWxlbWFwLmMtNDcxNi0gKiBieXRlcyByYW5nZSBzcGVjaWZpZWQgYnkgYG9mZmAgYW5kIGBsZW5gOiBudW1iZXIgb2YgY2FjaGVkIHBhZ2VzLFxuLS1cbm1tL2ZpbGVtYXAuYy00NzM0LSAqXG5tbS9maWxlbWFwLmM6NDczNTogKiBCZWNhdXNlIHRoZSBzdGF0dXMgb2YgYSBwYWdlIGNhbiBjaGFuZ2UgYWZ0ZXIgY2FjaGVzdGF0KCkgY2hlY2tzIGl0XG5tbS9maWxlbWFwLmMtNDczNi0gKiBidXQgYmVmb3JlIGl0IHJldHVybnMgdG8gdGhlIGFwcGxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgdmFsdWVzIG1heVxuLS1cbm1tL2ZpbGVtYXAuYy00NzQ1LSAqL1xubW0vZmlsZW1hcC5jOjQ3NDY6U1lTQ0FMTF9ERUZJTkU0KGNhY2hlc3RhdCwgdW5zaWduZWQgaW50LCBmZCxcbm1tL2ZpbGVtYXAuYzo0NzQ3Olx0XHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIF9fdXNlciAqLCBjc3RhdF9yYW5nZSxcbm1tL2ZpbGVtYXAuYzo0NzQ4Olx0XHRzdHJ1Y3QgY2FjaGVzdGF0IF9fdXNlciAqLCBjc3RhdCwgdW5zaWduZWQgaW50LCBmbGFncylcbm1tL2ZpbGVtYXAuYy00NzQ5LXtcbi0tXG5tbS9maWxlbWFwLmMtNDc1MS1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nO1xubW0vZmlsZW1hcC5jOjQ3NTI6XHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIGNzcjtcbm1tL2ZpbGVtYXAuYzo0NzUzOlx0c3RydWN0IGNhY2hlc3RhdCBjcztcbm1tL2ZpbGVtYXAuYy00NzU0LVx0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcbi0tXG5tbS9maWxlbWFwLmMtNDc1OS1cdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZjc3IsIGNzdGF0X3JhbmdlLFxubW0vZmlsZW1hcC5jOjQ3NjA6XHRcdFx0c2l6ZW9mKHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UpKSlcbm1tL2ZpbGVtYXAuYy00NzYxLVx0XHRyZXR1cm4gLUVGQVVMVDtcbi0tXG5tbS9maWxlbWFwLmMtNDc2Ni1cbm1tL2ZpbGVtYXAuYzo0NzY3Olx0aWYgKCFjYW5fZG9fY2FjaGVzdGF0KGZkX2ZpbGUoZikpKVxubW0vZmlsZW1hcC5jLTQ3NjgtXHRcdHJldHVybiAtRVBFUk07XG4tLVxubW0vZmlsZW1hcC5jLTQ3NzUtXHRcdGNzci5sZW4gPT0gMCA/IFVMT05HX01BWCA6IChjc3Iub2ZmICYjNDM7IGNzci5sZW4gLSAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbm1tL2ZpbGVtYXAuYzo0Nzc2Olx0bWVtc2V0KFx1MDAyNmNzLCAwLCBzaXplb2Yoc3RydWN0IGNhY2hlc3RhdCkpO1xubW0vZmlsZW1hcC5jLTQ3NzctXHRtYXBwaW5nID0gZmRfZmlsZShmKS1cdTAwM2VmX21hcHBpbmc7XG5tbS9maWxlbWFwLmM6NDc3ODpcdGZpbGVtYXBfY2FjaGVzdGF0KG1hcHBpbmcsIGZpcnN0X2luZGV4LCBsYXN0X2luZGV4LCBcdTAwMjZjcyk7XG5tbS9maWxlbWFwLmMtNDc3OS1cbm1tL2ZpbGVtYXAuYzo0NzgwOlx0aWYgKGNvcHlfdG9fdXNlcihjc3RhdCwgXHUwMDI2Y3MsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSkpXG5tbS9maWxlbWFwLmMtNDc4MS1cdFx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxubW0vd29ya2luZ3NldC5jPTQzMD1ib29sIHdvcmtpbmdzZXRfdGVzdF9yZWNlbnQodm9pZCAqc2hhZG93LCBib29sIGZpbGUsIGJvb2wgKndvcmtpbmdzZXQsXG4tLVxubW0vd29ya2luZ3NldC5jLTQ4Mi1cdCAqIE5vdGUgdGhhdCB3b3JraW5nc2V0X3Rlc3RfcmVjZW50KCkgaXRzZWxmIG1pZ2h0IGJlIGNhbGxlZCBpbiBSQ1UgcmVhZFxubW0vd29ya2luZ3NldC5jOjQ4MzpcdCAqIHNlY3Rpb24gKGZvciBlLmcsIGluIGNhY2hlc3RhdCkgLSB0aGVzZSBjYWxsZXJzIG5lZWQgdG8gc2tpcCBmbHVzaGluZ1xubW0vd29ya2luZ3NldC5jLTQ4NC1cdCAqIHN0YXRzICh2aWEgdGhlIGZsdXNoIGFyZ3VtZW50KS5cbi0tXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM5My00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG5zY3JpcHRzL3N5c2NhbGwudGJsOjM5NDo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxuc2NyaXB0cy9zeXNjYWxsLnRibC0zOTUtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODE0PV9fU1lTQ0FMTChfX05SX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlLCBzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGUpXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE1OiNkZWZpbmUgX19OUl9jYWNoZXN0YXQgNDUxXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE2Ol9fU1lTQ0FMTChfX05SX2NhY2hlc3RhdCwgc3lzX2NhY2hlc3RhdClcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04MTctI2RlZmluZSBfX05SX2ZjaG1vZGF0MiA0NTJcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oLTQ1LVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaDo0NjpzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIHtcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDctXHRfX3U2NCBvZmY7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC01MC1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmg6NTE6c3RydWN0IGNhY2hlc3RhdCB7XG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oLTUyLVx0X191NjQgbnJfY2FjaGU7XG4tLVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ5Mi01NjBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX25pX3N5c2NhbGxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTM6NTYxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00OTQtNTYyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ2Ny00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ2ODo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NjktNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDY0LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NjU6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjYtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzY3LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibDozNjg6NDUxXHRuNjRcdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjktNDUyXHRuNjRcdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1MS00NTBcdGNvbW1vblx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcdFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1Mjo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdFx0c3lzX2NhY2hlc3RhdFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NDMtNDUwIFx0bm9zcHVcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTQ0OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NDUtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzktNDUwXHRjb21tb25cdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzgwOjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODEtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU2LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTc6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk4LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDUxXHRjb21tb25cdGNhY2hlc3RhdFx0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDUyXHRjb21tb25cdGZjaG1vZGF0Mlx0XHRcdHN5c19mY2htb2RhdDJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ1OC00NTBcdGkzODZcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXHRcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NTk6NDUxXHRpMzg2XHRjYWNoZXN0YXRcdFx0c3lzX2NhY2hlc3RhdFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjAtNDUyXHRpMzg2XHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc3LTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjM3ODo0NTFcdGNvbW1vblx0Y2FjaGVzdGF0XHRcdHN5c19jYWNoZXN0YXRcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc5LTQ1Mlx0Y29tbW9uXHRmY2htb2RhdDJcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIzLTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDI0OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNS00NTJcdGNvbW1vblx0ZmNobW9kYXQyXHRcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzkzLTQ1MFx0Y29tbW9uXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVx0XHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6Mzk0OjQ1MVx0Y29tbW9uXHRjYWNoZXN0YXRcdFx0XHRzeXNfY2FjaGVzdGF0XG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTM5NS00NTJcdGNvbW1vblx0ZmNobW9kYXQyXHRcdFx0c3lzX2ZjaG1vZGF0MlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlPTc9VEFSR0VUUyAmIzQzOz0gYnJlYWtwb2ludHNcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlOjg6VEFSR0VUUyAmIzQzOz0gY2FjaGVzdGF0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9NYWtlZmlsZS05LVRBUkdFVFMgJiM0Mzs9IGNhcGFiaWxpdGllc1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC8uZ2l0aWdub3JlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZToyOnRlc3RfY2FjaGVzdGF0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZS0zLXRtcHNobWNzdGF0XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L01ha2VmaWxlOjI6VEVTVF9HRU5fUFJPR1MgOj0gdGVzdF9jYWNoZXN0YXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC9NYWtlZmlsZS0zLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGV2X2ZpbGVzW10gPSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjctXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyODp2b2lkIHByaW50X2NhY2hlc3RhdChzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMwLVx0a3NmdF9wcmludF9tc2coXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMTpcdFwmIzM0O1VzaW5nIGNhY2hlc3RhdDogQ2FjaGVkOiAlbGx1LCBEaXJ0eTogJWxsdSwgV3JpdGViYWNrOiAlbGx1LCBFdmljdGVkOiAlbGx1LCBSZWNlbnRseSBFdmljdGVkOiAlbGx1XFxuXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzItXHRjcy1cdTAwM2Vucl9jYWNoZSwgY3MtXHUwMDNlbnJfZGlydHksIGNzLVx1MDAzZW5yX3dyaXRlYmFjayxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYz0xMDY9c3RhdGljIGJvb2wgaXNfb25fdG1wZnMoaW50IGZkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTExNy0gKiBPcGVuL2NyZWF0ZSB0aGUgZmlsZSBhdCBmaWxlbmFtZSwgKG9wdGlvbmFsbHkpIHdyaXRlIHJhbmRvbSBkYXRhIHRvIGl0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxMTg6ICogKGV4YWN0bHkgbnVtX3BhZ2VzKSwgdGhlbiB0ZXN0IHRoZSBjYWNoZXN0YXQgc3lzY2FsbCBvbiB0aGlzIGZpbGUuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMTktICpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMjItICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxMjM6c3RhdGljIGludCB0ZXN0X2NhY2hlc3RhdChjb25zdCBjaGFyICpmaWxlbmFtZSwgYm9vbCB3cml0ZV9yYW5kb20sIGJvb2wgY3JlYXRlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTI0LVx0XHRcdCAgYm9vbCB0ZXN0X2ZzeW5jLCB1bnNpZ25lZCBsb25nIG51bV9wYWdlcyxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMzAtXHRsb25nIHN5c2NhbGxfcmV0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTMxOlx0c3RydWN0IGNhY2hlc3RhdCBjcztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEzMjpcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NfcmFuZ2UgPSB7IDAsIGZpbGVzaXplIH07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xMzMtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTUxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTUyOlx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXHUwMDI2Y3NfcmFuZ2UsIFx1MDAyNmNzLCAwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE1My1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xNjEtXHR9IGVsc2Uge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTYyOlx0XHRwcmludF9jYWNoZXN0YXQoXHUwMDI2Y3MpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTYzLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE3OS1cdFx0fSBlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjE4MDpcdFx0XHRzeXNjYWxsX3JldCA9IHN5c2NhbGwoX19OUl9jYWNoZXN0YXQsIGZkLCBcdTAwMjZjc19yYW5nZSwgXHUwMDI2Y3MsIDApO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTgxLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4NS1cdFx0XHRpZiAoIXN5c2NhbGxfcmV0KSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxODY6XHRcdFx0XHRwcmludF9jYWNoZXN0YXQoXHUwMDI2Y3MpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTg3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIwOT1jb25zdCBjaGFyICpmaWxlX3R5cGVfc3RyKGVudW0gZmlsZV90eXBlIHR5cGUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjIxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjIyOmJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMjMte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTIyNy1cdHNpemVfdCBjb21wdXRlX2xlbiA9IFBTICogNTEyO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjI4Olx0c3RydWN0IGNhY2hlc3RhdF9yYW5nZSBjc19yYW5nZSA9IHsgUFMsIGNvbXB1dGVfbGVuIH07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMjktXHRjaGFyICpmaWxlbmFtZSA9IFwmIzM0O3RtcHNobWNzdGF0XCYjMzQ7LCAqbWFwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjMwOlx0c3RydWN0IGNhY2hlc3RhdCBjcztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTIzMS1cdGJvb2wgcmV0ID0gdHJ1ZTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yNzUtXHR9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyNzY6XHRzeXNjYWxsX3JldCA9IHN5c2NhbGwoX19OUl9jYWNoZXN0YXQsIGZkLCBcdTAwMjZjc19yYW5nZSwgXHUwMDI2Y3MsIDApO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjc3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI4Mi1cdH0gZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyODM6XHRcdHByaW50X2NhY2hlc3RhdChcdTAwMjZjcyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yODQtXHRcdGlmIChjcy5ucl9jYWNoZSAmIzQzOyBjcy5ucl9ldmljdGVkICE9IG51bV9wYWdlcykge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTI5Nz1pbnQgbWFpbih2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMwMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwMzpcdHJldCA9IHN5c2NhbGwoX19OUl9jYWNoZXN0YXQsIC0xLCBOVUxMLCBOVUxMLCAwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMwNC1cdGlmIChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVOT1NZUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwNTpcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7Y2FjaGVzdGF0IHN5c2NhbGwgbm90IGF2YWlsYWJsZVxcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMDYtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzE5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzIwOlx0XHRpZiAodGVzdF9jYWNoZXN0YXQoZGV2X2ZpbGVuYW1lLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzIxLVx0XHRcdDQsIE9fUkRPTkxZLCAwNDAwKSA9PSBLU0ZUX1BBU1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjI6XHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoICVzXFxuXCYjMzQ7LCBkZXZfZmlsZW5hbWUpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzIzLVx0XHRlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMyNDpcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7Y2FjaGVzdGF0IGZhaWxzIHdpdGggJXNcXG5cJiMzNDssIGRldl9maWxlbmFtZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMjUtXHRcdFx0cmV0ID0gMTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMjgtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjk6XHRpZiAodGVzdF9jYWNoZXN0YXQoXCYjMzQ7dG1wZmlsZWNhY2hlc3RhdFwmIzM0OywgdHJ1ZSwgdHJ1ZSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMzMC1cdFx0ZmFsc2UsIDQsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2MDApID09IEtTRlRfUEFTUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMzMTpcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoIGEgbm9ybWFsIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzMyLVx0ZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMzM6XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBub3JtYWwgZmlsZVxcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzQtXHRcdHJldCA9IDE7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM2LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzM3Olx0c3dpdGNoICh0ZXN0X2NhY2hlc3RhdChcJiMzNDt0bXBmaWxlY2FjaGVzdGF0XCYjMzQ7LCB0cnVlLCB0cnVlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM4LVx0XHR0cnVlLCA0LCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKSkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM5LVx0Y2FzZSBLU0ZUX0ZBSUw6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNDA6XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtjYWNoZXN0YXQgZnN5bmMgZmFpbHMgd2l0aCBub3JtYWwgZmlsZVxcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDEtXHRcdHJldCA9IEtTRlRfRkFJTDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDMtXHRjYXNlIEtTRlRfUEFTUzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM0NDpcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCBmc3luYyB3b3JrcyB3aXRoIGEgbm9ybWFsIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzQ1LVx0XHRicmVhaztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM0Ni1cdGNhc2UgS1NGVF9TS0lQOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzQ3Olx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCYjMzQ7dG1wZmlsZWNhY2hlc3RhdCBpcyBvbiB0bXBmc1xcblwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDgtXHRcdGJyZWFrO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM1MC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1MTpcdGlmIChydW5fY2FjaGVzdGF0X3Rlc3QoRklMRV9TSE1FTSkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNTI6XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcJiMzNDtjYWNoZXN0YXQgd29ya3Mgd2l0aCBhIHNobWVtIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzUzLVx0ZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNTQ6XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtjYWNoZXN0YXQgZmFpbHMgd2l0aCBhIHNobWVtIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzU1LVx0XHRyZXQgPSAxO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM1Ny1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1ODpcdGlmIChydW5fY2FjaGVzdGF0X3Rlc3QoRklMRV9NTUFQKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1OTpcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0O2NhY2hlc3RhdCB3b3JrcyB3aXRoIGEgbW1hcCBmaWxlXFxuXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM2MC1cdGVsc2Uge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzYxOlx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7Y2FjaGVzdGF0IGZhaWxzIHdpdGggYSBtbWFwIGZpbGVcXG5cJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzYyLVx0XHRyZXQgPSAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ2OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENhY2hlc3RhdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBDT05GSUdfQ0FDSEVTVEFUX1NZU0NBTExgIHBvcHMgb3V0LiBUaGF0JiMzOTtzIHRoZSBjb25maWcgZm9yIGBjYWNoZXN0YXRgLCByaWdodD8gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoYXQuIEkmIzM5O2xsIGNoZWNrIGBpbml0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCBgQ0FDSEVTVEFUX1NZU0NBTExgIGlzIHRoZXJlLiBBaCwgeWVzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSBleHBsaWNpdC4gR29vZCB0byBpbmNsdWRlIGl0IGluIHRoZSBtZW50YWwgY2hlY2tsaXN0LgoKV2FpdCwgYSBiaXQgZnVydGhlciBkb3duLCBpdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGNhbl9kb19jYWNoZXN0YXRgIHdpdGhpbiBgbW0vZmlsZW1hcC5jYC4gVGhhdCB0ZWxscyBtZSB0aGUgYHN5c19jYWNoZXN0YXRgIHN5c3RlbSBjYWxsIGlzIHByb2JhYmx5IHRoZSBrZXkgZm9jdXMgcG9pbnQgaGVyZS4gSSBzaG91bGQgYWRkIGBzeXNfY2FjaGVzdGF0YCB0byBteSBsaXN0IG9mIEZvY3VzU3ltYm9scy4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgZm9yIGZ1dHVyZSBhbmFseXNpcy4KCkhtbSwgYSBjaGFuZ2UgaGVyZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgcmVwbGFjaW5nIGBpbm9kZV9vd25lcl9vcl9jYXBhYmxlKGZpbGVfbW50X2lkbWFwKGYpLCBmaWxlX2lub2RlKGYpKWAgd2l0aCBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpYCBpbiBgbW0vZmlsZW1hcC5jYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBmdW5jdGlvbmFsIGNoYW5nZSBhdCBmaXJzdCBnbGFuY2UuIEl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgcmVmYWN0b3JpbmcgYmVjYXVzZSBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpYCBzZWVtcyB0byBiZSAqZGVmaW5lZCogYXMgZXhhY3RseSBgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmKSwgZmlsZV9pbm9kZShmKSlgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBkZWZpbml0aW9uIGluIGBpbmNsdWRlL2xpbnV4L2ZzLmhgIGJlZm9yZSBJIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbGVfb3duZXJfb3JfY2FwYWJsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZzLmg9MjQ0Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbnRfaWRtYXAgKmZpbGVfbW50X2lkbWFwKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmluY2x1ZGUvbGludXgvZnMuaC0yNDQ2LVxuaW5jbHVkZS9saW51eC9mcy5oOjI0NDc6c3RhdGljIGlubGluZSBib29sIGZpbGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQ4LXtcbi0tXG5tbS9maWxlbWFwLmM9NDcwMz1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2NhY2hlc3RhdChzdHJ1Y3QgZmlsZSAqZilcbi0tXG5tbS9maWxlbWFwLmMtNDcwNi1cdFx0cmV0dXJuIHRydWU7XG5tbS9maWxlbWFwLmM6NDcwNzpcdGlmIChmaWxlX293bmVyX29yX2NhcGFibGUoZikpXG5tbS9maWxlbWFwLmMtNDcwOC1cdFx0cmV0dXJuIHRydWU7XG4tLVxubW0vbWFkdmlzZS5jPTMyOT1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2ZpbGVfcGFnZW91dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5tbS9tYWR2aXNlLmMtMzM4LVx0ICovXG5tbS9tYWR2aXNlLmM6MzM5Olx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXHUwMDNldm1fZmlsZSkgfHxcbm1tL21hZHZpc2UuYy0zNDAtXHQgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS1cdTAwM2V2bV9maWxlLCBNQVlfV1JJVEUpID09IDA7XG4tLVxubW0vbWluY29yZS5jPTIxOD1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxubW0vbWluY29yZS5jLTIyOS1cdCAqL1xubW0vbWluY29yZS5jOjIzMDpcdHJldHVybiBmaWxlX293bmVyX29yX2NhcGFibGUodm1hLVx1MDAzZXZtX2ZpbGUpIHx8XG5tbS9taW5jb3JlLmMtMjMxLVx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjUwMgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDczMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGNvZGUgZGlmZiwgaXQgbG9va3MgbGlrZSBhIHJlZmFjdG9yaW5nIGluIGBtbS9maWxlbWFwLmNgLCBidXQgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgbW0vbWFkdmlzZS5jYCBhbmQgYG1tL21pbmNvcmUuY2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgY29ycmVjdGluZyB0aGUgaGFuZGxpbmcgb2YgaWRtYXBwZWQgbW91bnRzLiBUaGV5JiMzOTtyZSByZXBsYWNpbmcgdGhlIHVzZSBvZiBgJmFtcDtub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBjb3JyZWN0IGBmaWxlX21udF9pZG1hcCh2bWEtJmd0O3ZtX2ZpbGUpYC4gVGhpcyBtZWFucyBgc3lzX2NhY2hlc3RhdGAgKmlzbiYjMzk7dCogZnVuY3Rpb25hbGx5IGFsdGVyZWQsIGJ1dCBgZG9fbWluY29yZWAgYW5kIGBtYWR2aXNlX3BhZ2VvdXRgICphcmUqLgoKU28sIG15IGZvY3VzIHN5bWJvbHMgbmVlZCB0byByZWZsZWN0IHRoZXNlIGZ1bmN0aW9uYWwgY2hhbmdlcy4gSSYjMzk7bGwgbmVlZCB0byBpbmNsdWRlIGBkb19taW5jb3JlYCBhbmQgYG1hZHZpc2VfcGFnZW91dGAuIFdhaXQsIGlzbiYjMzk7dCBgbWFkdmlzZV9wYWdlb3V0YCBzdGF0aWM/IFllcywgYnV0IGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIGBzeXNfbWFkdmlzZWAsIHNvIHRoYXQmIzM5O3MgZmluZS4gU2ltaWxhcmx5LCBgZG9fbWluY29yZWAgaXMgc3RhdGljIGJ1dCByZWFjaGFibGUgdGhyb3VnaCBgc3lzX21pbmNvcmVgLiBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgYXMgaXQmIzM5O3MgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGZpeC4KClRoZSBrZXkgY29uZmlndXJhdGlvbiB0byBlbmFibGUgaGVyZSBpcyBgQURWSVNFX1NZU0NBTExTYC4gYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgIGFyZSBsaWtlbHkgcHJlcmVxdWlzaXRlcywgYnV0IHRoZXkmIzM5O3JlIGZhaXJseSBzdGFuZGFyZCBhbmQgY2FuIGJlIGFzc3VtZWQuIEkmIzM5O2xsIHN0aWNrIHdpdGgganVzdCBlbmFibGluZyBgQURWSVNFX1NZU0NBTExTYC4KCk9rYXksIHN1bW1hcml6aW5nIG15IGZpbmRpbmdzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byBpZG1hcHBlZCBtb3VudHMsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIGZ1enouCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggY29ycmVjdHMgdGhlIGhhbmRsaW5nIG9mIGlkbWFwcGVkIG1vdW50cyBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYSBwbGFjZWhvbGRlciBpZG1hcCB3aXRoIHRoZSBjb3JyZWN0IG1vdW50JiMzOTtzIGlkbWFwLCBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBkb19taW5jb3JlYCwgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEFEVklTRV9TWVNDQUxMU2AKCkkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTUFEVl9DT0xEYCBhY3R1YWxseSB1c2VzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YC4gQWgsIGluIGBtbS9tYWR2aXNlLmNgLCB0aGVyZSYjMzk7cyBhIGNoZWNrIGBwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0ICZhbXA7JmFtcDsgIXZtYV9pc19hbm9ueW1vdXModm1hKSAmYW1wOyZhbXA7ICFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7YCwgc28gaXQgZG9lcyEgVGhhdCBjb25maXJtcyBteSBjaG9pY2Ugb2YgZm9jdXMgc3ltYm9scy4gYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgaXMgZGVmaW5pdGVseSByZWxldmFudC4gVGhpcyBpcyBnb29kLiBJIHRoaW5rIEkmIzM5O20gZG9uZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19taW5jb3JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pbmNvcmUuYz0xNjM9c3RhdGljIGludCBtaW5jb3JlX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL21pbmNvcmUuYy0yMTctXG5tbS9taW5jb3JlLmM6MjE4OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbm1tL21pbmNvcmUuYy0yMTkte1xuLS1cbm1tL21pbmNvcmUuYz0yMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBtaW5jb3JlX3dhbGtfb3BzID0ge1xuLS1cbm1tL21pbmNvcmUuYy0yNDUtICovXG5tbS9taW5jb3JlLmM6MjQ2OnN0YXRpYyBsb25nIGRvX21pbmNvcmUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCB1bnNpZ25lZCBjaGFyICp2ZWMpXG5tbS9taW5jb3JlLmMtMjQ3LXtcbi0tXG5tbS9taW5jb3JlLmMtMjU1LVx0ZW5kID0gbWluKHZtYS1cdTAwM2V2bV9lbmQsIGFkZHIgJiM0MzsgKHBhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKSk7XG5tbS9taW5jb3JlLmM6MjU2Olx0aWYgKCFjYW5fZG9fbWluY29yZSh2bWEpKSB7XG5tbS9taW5jb3JlLmMtMjU3LVx0XHR1bnNpZ25lZCBsb25nIHBhZ2VzID0gRElWX1JPVU5EX1VQKGVuZCAtIGFkZHIsIFBBR0VfU0laRSk7XG4tLVxubW0vbWluY29yZS5jPTI5MT1TWVNDQUxMX0RFRklORTMobWluY29yZSwgdW5zaWduZWQgbG9uZywgc3RhcnQsIHNpemVfdCwgbGVuLFxuLS1cbm1tL21pbmNvcmUuYy0zMjUtXHRcdG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtXHUwMDNlbW0pO1xubW0vbWluY29yZS5jOjMyNjpcdFx0cmV0dmFsID0gZG9fbWluY29yZShzdGFydCwgbWluKHBhZ2VzLCBQQUdFX1NJWkUpLCB0bXApO1xubW0vbWluY29yZS5jLTMyNy1cdFx0bW1hcF9yZWFkX3VubG9jayhjdXJyZW50LVx1MDAzZW1tKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMTU6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyNTMKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipNeSBUaGlua2luZyBvbiBgbWluY29yZWAgSW1wbGVtZW50YXRpb24gYW5kIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGBkb19taW5jb3JlYC4uLiB0aGF0JiMzOTtzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYGNhbl9kb19taW5jb3JlYC4gVGhhdCYjMzk7cyBhIGtleSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEFuZCB0aGUgb3RoZXIgRm9jdXNTeW1ib2xzIEkmIzM5O20gY29uY2VybmVkIHdpdGggYXJlIGBtYWR2aXNlX3BhZ2VvdXRgIGFuZCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgd2hpY2ggYXJlIGxpa2VseSByZWxhdGVkIHRvIHBhZ2VvdXQgZnVuY3Rpb25hbGl0eS4KCk5vdywgdGhlIGBBRFZJU0VfU1lTQ0FMTFNgIEVuYWJsZUNvbmZpZyBpcyBjZXJ0YWlubHkgcmVsZXZhbnQgaGVyZS4KCkhtbSwgSSByZWNhbGwgdGhlcmUgd2FzbiYjMzk7dCBhIGRlZGljYXRlZCBjb25maWcgc3BlY2lmaWNhbGx5IGZvciBgbWluY29yZWAgaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0IGdldHMgYnVpbHQgaW5kaXJlY3RseSwgYmFzZWQgb24gd2hldGhlciBgQ09ORklHX01NVWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGltcGxpY2F0aW9ucy4KCkFscmlnaHQsIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgc29saWQgZ3Jhc3Agb2YgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucywgY29uZmlndXJhdGlvbiwgYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7bSByZWFkeSB0byBtb3ZlIG9uIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDE1OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRFZJU0VfU1lTQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19taW5jb3JlJiMzNDssCiAgICAmIzM0O21hZHZpc2VfcGFnZW91dCYjMzQ7LAogICAgJiMzNDttYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgaWRtYXBwZWQgbW91bnRzIHdlcmUgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgYnkgcmVwbGFjaW5nIGBcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRFZJU0VfU1lTQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb19taW5jb3JlJiMzNDssCiAgICAmIzM0O21hZHZpc2VfcGFnZW91dCYjMzQ7LAogICAgJiMzNDttYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgaWRtYXBwZWQgbW91bnRzIHdlcmUgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgYnkgcmVwbGFjaW5nIGBcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6MTAuOTM1Nzk5ODgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM2MDU1NzA1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURWSVNFX1NZU0NBTExTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZG9fbWluY29yZVwiLFxuICAgIFwibWFkdmlzZV9wYWdlb3V0XCIsXG4gICAgXCJtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBpZG1hcHBlZCBtb3VudHMgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYFxcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoxMC45MzU4MDYxNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODkzNDM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNkZjI5MTMxOWQ3Yzk1ODRhYzg3OGFjMjg3MDMxZTZhMzkzOTllNTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMTU6NTc6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9saW51eC9mcy5oXFxuaW5kZXggZDEwODk3YjNhMWUzNTAuLjUwY2U3MzFhMmI3OGYxIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZnMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZnMuaFxcbkBAIC0yNDQ0LDYgKzI0NDQsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbW50X2lkbWFwICpmaWxlX21udF9pZG1hcChjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gXFx0cmV0dXJuIG1udF9pZG1hcChmaWxlLVxcdTAwM2VmX3BhdGgubW50KTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIGZpbGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4re1xcbitcXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9pbm9kZShmaWxlKSk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpc19pZG1hcHBlZF9tbnQgLSBjaGVjayB3aGV0aGVyIGEgbW91bnQgaXMgbWFwcGVkXFxuICAqIEBtbnQ6IHRoZSBtb3VudCB0byBjaGVja1xcbmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmNcXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uNThlYjlkMjQwNjQzNDggMTAwNjQ0XFxuLS0tIGEvbW0vZmlsZW1hcC5jXFxuKysrIGIvbW0vZmlsZW1hcC5jXFxuQEAgLTQ3MDQsNyArNDcwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbiB7XFxuIFxcdGlmIChmLVxcdTAwM2VmX21vZGUgXFx1MDAyNiBGTU9ERV9XUklURSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuLVxcdGlmIChpbm9kZV9vd25lcl9vcl9jYXBhYmxlKGZpbGVfbW50X2lkbWFwKGYpLCBmaWxlX2lub2RlKGYpKSlcXG4rXFx0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdHJldHVybiBmaWxlX3Blcm1pc3Npb24oZiwgTUFZX1dSSVRFKSA9PSAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL21tL21hZHZpc2UuYyBiL21tL21hZHZpc2UuY1xcbmluZGV4IGNkOWJiMDc3MDcyY2NiLi43NzU1MmIwM2QzMThkOSAxMDA2NDRcXG4tLS0gYS9tbS9tYWR2aXNlLmNcXG4rKysgYi9tbS9tYWR2aXNlLmNcXG5AQCAtMzM2LDggKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiBcXHQgKiBvdGhlcndpc2Ugd2UnZCBiZSBpbmNsdWRpbmcgc2hhcmVkIG5vbi1leGNsdXNpdmUgbWFwcGluZ3MsIHdoaWNoXFxuIFxcdCAqIG9wZW5zIGEgc2lkZSBjaGFubmVsLlxcbiBcXHQgKi9cXG4tXFx0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoXFx1MDAyNm5vcF9tbnRfaWRtYXAsXFxuLVxcdFxcdFxcdFxcdCAgICAgIGZpbGVfaW5vZGUodm1hLVxcdTAwM2V2bV9maWxlKSkgfHxcXG4rXFx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXFx1MDAzZXZtX2ZpbGUpIHx8XFxuIFxcdCAgICAgICBmaWxlX3Blcm1pc3Npb24odm1hLVxcdTAwM2V2bV9maWxlLCBNQVlfV1JJVEUpID09IDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL21tL21pbmNvcmUuYyBiL21tL21pbmNvcmUuY1xcbmluZGV4IDI5NmYyZTM5MjJiNWY0Li5jODc1N2M1MDg1YmY5MCAxMDA2NDRcXG4tLS0gYS9tbS9taW5jb3JlLmNcXG4rKysgYi9tbS9taW5jb3JlLmNcXG5AQCAtMjI3LDggKzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4gXFx0ICogZm9yIHdyaXRpbmc7IG90aGVyd2lzZSB3ZSdkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZVxcbiBcXHQgKiBtYXBwaW5ncywgd2hpY2ggb3BlbnMgYSBzaWRlIGNoYW5uZWwuXFxuIFxcdCAqL1xcbi1cXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShcXHUwMDI2bm9wX21udF9pZG1hcCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgZmlsZV9pbm9kZSh2bWEtXFx1MDAzZXZtX2ZpbGUpKSB8fFxcbitcXHRyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS1cXHUwMDNldm1fZmlsZSkgfHxcXG4gXFx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXFx1MDAzZXZtX2ZpbGUsIE1BWV9XUklURSkgPT0gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6MTEuNDI1NDIwMjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTE1OTQxMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFEVklTRV9TWVNDQUxMU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX21pbmNvcmVcIixcbiAgICBcIm1hZHZpc2VfcGFnZW91dFwiLFxuICAgIFwibWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgaWRtYXBwZWQgbW91bnRzIHdlcmUgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gYG1hZHZpc2VgIGFuZCBgbWluY29yZWAgYnkgcmVwbGFjaW5nIGBcXHUwMDI2bm9wX21udF9pZG1hcGAgd2l0aCB0aGUgYWN0dWFsIG1vdW50IGlkbWFwIG9mIHRoZSBmaWxlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZGYyOTEzMTlkN2M5NTg0YWM4NzhhYzI4NzAzMWU2YTM5Mzk5ZTU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMTU6NTc6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmhcbmluZGV4IGQxMDg5N2IzYTFlMzUwLi41MGNlNzMxYTJiNzhmMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZnMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9mcy5oXG5AQCAtMjQ0NCw2ICsyNDQ0LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IG1udF9pZG1hcCAqZmlsZV9tbnRfaWRtYXAoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRyZXR1cm4gbW50X2lkbWFwKGZpbGUtXHUwMDNlZl9wYXRoLm1udCk7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBmaWxlX293bmVyX29yX2NhcGFibGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXG4re1xuK1x0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpO1xuK31cbitcbiAvKipcbiAgKiBpc19pZG1hcHBlZF9tbnQgLSBjaGVjayB3aGV0aGVyIGEgbW91bnQgaXMgbWFwcGVkXG4gICogQG1udDogdGhlIG1vdW50IHRvIGNoZWNrXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uNThlYjlkMjQwNjQzNDggMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbisrKyBiL21tL2ZpbGVtYXAuY1xuQEAgLTQ3MDQsNyArNDcwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxuIHtcbiBcdGlmIChmLVx1MDAzZWZfbW9kZSBcdTAwMjYgRk1PREVfV1JJVEUpXG4gXHRcdHJldHVybiB0cnVlO1xuLVx0aWYgKGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZiksIGZpbGVfaW5vZGUoZikpKVxuK1x0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHRyZXR1cm4gZmlsZV9wZXJtaXNzaW9uKGYsIE1BWV9XUklURSkgPT0gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vbWFkdmlzZS5jIGIvbW0vbWFkdmlzZS5jXG5pbmRleCBjZDliYjA3NzA3MmNjYi4uNzc1NTJiMDNkMzE4ZDkgMTAwNjQ0XG4tLS0gYS9tbS9tYWR2aXNlLmNcbisrKyBiL21tL21hZHZpc2UuY1xuQEAgLTMzNiw4ICszMzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX2ZpbGVfcGFnZW91dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiBcdCAqIG90aGVyd2lzZSB3ZSdkIGJlIGluY2x1ZGluZyBzaGFyZWQgbm9uLWV4Y2x1c2l2ZSBtYXBwaW5ncywgd2hpY2hcbiBcdCAqIG9wZW5zIGEgc2lkZSBjaGFubmVsLlxuIFx0ICovXG4tXHRyZXR1cm4gaW5vZGVfb3duZXJfb3JfY2FwYWJsZShcdTAwMjZub3BfbW50X2lkbWFwLFxuLVx0XHRcdFx0ICAgICAgZmlsZV9pbm9kZSh2bWEtXHUwMDNldm1fZmlsZSkpIHx8XG4rXHRyZXR1cm4gZmlsZV9vd25lcl9vcl9jYXBhYmxlKHZtYS1cdTAwM2V2bV9maWxlKSB8fFxuIFx0ICAgICAgIGZpbGVfcGVybWlzc2lvbih2bWEtXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9tbS9taW5jb3JlLmMgYi9tbS9taW5jb3JlLmNcbmluZGV4IDI5NmYyZTM5MjJiNWY0Li5jODc1N2M1MDg1YmY5MCAxMDA2NDRcbi0tLSBhL21tL21pbmNvcmUuY1xuKysrIGIvbW0vbWluY29yZS5jXG5AQCAtMjI3LDggKzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiBcdCAqIGZvciB3cml0aW5nOyBvdGhlcndpc2Ugd2UnZCBiZSBpbmNsdWRpbmcgc2hhcmVkIG5vbi1leGNsdXNpdmVcbiBcdCAqIG1hcHBpbmdzLCB3aGljaCBvcGVucyBhIHNpZGUgY2hhbm5lbC5cbiBcdCAqL1xuLVx0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoXHUwMDI2bm9wX21udF9pZG1hcCxcbi1cdFx0XHRcdCAgICAgIGZpbGVfaW5vZGUodm1hLVx1MDAzZXZtX2ZpbGUpKSB8fFxuK1x0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXHUwMDNldm1fZmlsZSkgfHxcbiBcdCAgICAgICBmaWxlX3Blcm1pc3Npb24odm1hLVx1MDAzZXZtX2ZpbGUsIE1BWV9XUklURSkgPT0gMDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoxMS40MjU0MjE4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MzYxNzgyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGaWxlIFBlcm1pc3Npb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgaW5saW5lIGZ1bmN0aW9uLCBgZmlsZV9vd25lcl9vcl9jYXBhYmxlYCwgYW5kIEkgc2VlIGl0J3MgaW50ZW5kZWQgdG8gc2ltcGxpZnkgc29tZSBjaGVja3MgcmVsYXRlZCB0byBmaWxlIG93bmVyc2hpcCBhbmQgY2FwYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlcGxhY2luZyBkaXJlY3QgY2FsbHMgdG8gYGlub2RlX293bmVyX29yX2NhcGFibGVgIHdpdGggdGhpcyBuZXcgZnVuY3Rpb24gaW4gYSBmZXcga2V5IGFyZWFzOiBgbW0vZmlsZW1hcC5jYCwgYG1tL21hZHZpc2UuY2AsIGFuZCBgbW0vbWluY29yZS5jYC5cblxuSG9sZCBvbi4uLiBJJ20gbm90aWNpbmcgc29tZXRoaW5nIGNydWNpYWwgaGVyZSwgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSW4gYG1tL21hZHZpc2UuY2AgYW5kIGBtbS9taW5jb3JlLmNgLCB0aGUgb3JpZ2luYWwgY29kZSB3YXMgcGFzc2luZyBgXHUwMDI2bm9wX21udF9pZG1hcGAgdG8gYGlub2RlX293bmVyX29yX2NhcGFibGVgLCBidXQgbm93IHRoZSBwYXRjaCBkaXJlY3RseSB1c2VzIGBmaWxlX293bmVyX29yX2NhcGFibGUodm1hLVx1MDAzZXZtX2ZpbGUpYC4gVGhpcyBtZWFucyBpdCB3aWxsIGNhbGwgYGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpYC4gU28sIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbW91bnQgSUQgbWFwcGluZyB1c2VkIGluIHRoZSBvd25lcnNoaXAgY2hlY2sgZnJvbSBhIG5vLW9wIHRvIHRoZSBhY3R1YWwgZmlsZSdzIG1vdW50IElELiBUaGlzIGhhcyB0byBiZSBhIGZpeCEgVGhpcyBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSB3aGVyZSBJRC1tYXBwZWQgbW91bnRzIHdlcmVuJ3QgYmVpbmcgY29ycmVjdGx5IGhhbmRsZWQgd2l0aGluIHRoZSBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBmdW5jdGlvbnMuXG5cbk5vdywgSSB3YW50IHRvIGRyaWxsIGRvd24gZnVydGhlci4gTGV0J3MgbG9vayBjbG9zZWx5IGF0IHdoZXJlIHRoZXNlIGNoYW5nZXMgYXJlIGltcGFjdGluZyB1cy4gVGhlIGxvZ2ljIG5vdyB0b3VjaGVzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCB3aXRoaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBjYW5fZG9fbWluY29yZWAgd2l0aGluIGBtbS9taW5jb3JlLmNgLiBgY2FuX2RvX2ZpbGVfcGFnZW91dGAgaXMsIGFzIEkgcmVjYWxsLCBhIGZ1bmN0aW9uIHRoYXQncyBjYWxsZWQgZnJvbSBgbWFkdmlzZV9wYWdlb3V0YC4gYGNhbl9kb19taW5jb3JlYCBpcyB1c2VkIGJ5IGEgZnVuY3Rpb24gc2ltaWxhciB0byBgbWluY29yZV9wYWdlX3JhbmdlYCBvciBzaW1pbGFyIGluIGBtbS9taW5jb3JlLmNgLlxuXG5UaW1lIHRvIHNlZSB3aGVyZSB0aGVzZSBhcmUgdXNlZC4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgY2FsbGVkLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgYW5kIHdoYXQgZG93bnN0cmVhbSBpbXBhY3QgdGhpcyBmaXggbWlnaHQgaGF2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjE4Ljg2MTYwMzc1NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYxMDQ3NTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9kb19maWxlX3BhZ2VvdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWFkdmlzZS5jPTI4MT1zdGF0aWMgbG9uZyBtYWR2aXNlX3dpbGxuZWVkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTMyOC1cXG5tbS9tYWR2aXNlLmM6MzI5OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbm1tL21hZHZpc2UuYy0zMzAte1xcbi0tXFxubW0vbWFkdmlzZS5jPTM1Mz1zdGF0aWMgaW50IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZShwbWRfdCAqcG1kLFxcbi0tXFxubW0vbWFkdmlzZS5jLTM3My1cXHRwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0IFxcdTAwMjZcXHUwMDI2ICF2bWFfaXNfYW5vbnltb3VzKHZtYSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9tYWR2aXNlLmM6Mzc0OlxcdFxcdFxcdFxcdFxcdCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7XFxubW0vbWFkdmlzZS5jLTM3NS1cXG4tLVxcbm1tL21hZHZpc2UuYz02MjY9c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTYzOS1cXHQgKi9cXG5tbS9tYWR2aXNlLmM6NjQwOlxcdGlmICghdm1hX2lzX2Fub255bW91cyh2bWEpIFxcdTAwMjZcXHUwMDI2ICghY2FuX2RvX2ZpbGVfcGFnZW91dCh2bWEpIFxcdTAwMjZcXHUwMDI2XFxubW0vbWFkdmlzZS5jLTY0MS1cXHRcXHRcXHRcXHQodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX01BWVNIQVJFKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjIyLjIyMjY2MDc3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc2NDY5NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9kb19taW5jb3JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21pbmNvcmUuYz0xNjM9c3RhdGljIGludCBtaW5jb3JlX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vbWluY29yZS5jLTIxNy1cXG5tbS9taW5jb3JlLmM6MjE4OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5tbS9taW5jb3JlLmMtMjE5LXtcXG4tLVxcbm1tL21pbmNvcmUuYz0yNDY9c3RhdGljIGxvbmcgZG9fbWluY29yZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgcGFnZXMsIHVuc2lnbmVkIGNoYXIgKnZlYylcXG4tLVxcbm1tL21pbmNvcmUuYy0yNTUtXFx0ZW5kID0gbWluKHZtYS1cXHUwMDNldm1fZW5kLCBhZGRyICsgKHBhZ2VzIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpKTtcXG5tbS9taW5jb3JlLmM6MjU2OlxcdGlmICghY2FuX2RvX21pbmNvcmUodm1hKSkge1xcbm1tL21pbmNvcmUuYy0yNTctXFx0XFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IERJVl9ST1VORF9VUChlbmQgLSBhZGRyLCBQQUdFX1NJWkUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoyNC4yOTkxNDEzNDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE5MTM4OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaWRtYXBwZWQgbW91bnQgY2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgdGFja2xlcyBob3cgaWRtYXBwZWQgbW91bnRzIGFyZSBoYW5kbGVkIHdpdGhpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSByZXBsYWNpbmcgYFx1MDAyNm5vcF9tbnRfaWRtYXBgIHdpdGggYGZpbGVfbW50X2lkbWFwKHZtYS1cdTAwM2V2bV9maWxlKWAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgc2hpZnQsIG1lYW5pbmcgdGhlcmUncyBhIHJlYWwgcG9zc2liaWxpdHkgb2YgZmluZGluZyBzb21lIGVkZ2UgY2FzZXMuIERlZmluaXRlbHkgd29ydGggdGhyb3dpbmcgc29tZSBmdXp6aW5nIGF0IGl0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIG9uIGBtYWR2aXNlX3BhZ2VvdXRgLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgYW5kIGBkb19taW5jb3JlYC4gV2FpdCwgcmUtcmVhZGluZyB0aGUgcGF0Y2guLi5pdCBsb29rcyBsaWtlIHRoZSBjb3JlIGNoYW5nZSBpcyBhY3R1YWxseSB3aXRoaW4gYGNhbl9kb19maWxlX3BhZ2VvdXRgIGFuZCBgY2FuX2RvX21pbmNvcmVgLiBBaCwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBnZXQgY2FsbGVkIHdpdGhpbiB0aGUgZW50cnkgcG9pbnRzLCBuYW1lbHkgYG1hZHZpc2VfcGFnZW91dGAgYW5kIGBkb19taW5jb3JlYC5cblxuTGV0IG1lIHNlZSBpZiB0aGlzIGlzIHRpZWQgdG8gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJZG1hcHBlZCBtb3VudHMgcmVseSBvbiBgQ09ORklHX1VTRVJfTlNgIGFuZCBgQ09ORklHX01VTFRJVVNFUmAsIEkgdGhpbms/IFRob3VnaCwgaWRtYXBwZWQgbW91bnRzIGFyZSBnZW5lcmFsbHkgYXZhaWxhYmxlIG5vdywgcmlnaHQ/IE9rYXksIGxldCdzIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlnIHRoYXQgbWlnaHQgYmUgcGFydGljdWxhcmx5IHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTkxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1NzoyOC44MTgyODI2ODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MDg3NDA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWxlX21udF9pZG1hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3psb29wLmM9NzAwPXN0YXRpYyBpbnQgemxvb3BfcmVjb3JkX3NhZmVfd3BzKHN0cnVjdCB6bG9vcF9kZXZpY2UgKnpsbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svemxvb3AuYy03MTAtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9ibG9jay96bG9vcC5jOjcxMTpcXHRcXHRyZXQgPSB2ZnNfc2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfZGVudHJ5KGZpbGUpLFxcbmRyaXZlcnMvYmxvY2svemxvb3AuYy03MTItXFx0XFx0XFx0XFx0XFxcInVzZXIuemxvb3Aud3BcXFwiLCBcXHUwMDI2em9uZS1cXHUwMDNld3AsIHNpemVvZih6b25lLVxcdTAwM2V3cCksIDApO1xcbi0tXFxuZHJpdmVycy9ibG9jay96bG9vcC5jPTEzNjU9c3RhdGljIHZvaWQgemxvb3BfZm9yZ2V0X2NhY2hlKHN0cnVjdCB6bG9vcF9kZXZpY2UgKnpsbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svemxvb3AuYy0xMzc5LVxcbmRyaXZlcnMvYmxvY2svemxvb3AuYzoxMzgwOlxcdFxcdHJldCA9IHZmc19nZXR4YXR0cihmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXFxuZHJpdmVycy9ibG9jay96bG9vcC5jLTEzODEtXFx0XFx0XFx0XFx0XFxcInVzZXIuemxvb3Aud3BcXFwiLCBcXHUwMDI2b2xkX3dwLCBzaXplb2Yob2xkX3dwKSk7XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTEyMDE9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMTIxNi1cXG5mcy9idHJmcy9pb2N0bC5jOjEyMTc6XFx0cmV0dXJuIF9fYnRyZnNfaW9jdGxfc25hcF9jcmVhdGUoZmlsZSwgZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvYnRyZnMvaW9jdGwuYy0xMjE4LVxcdFxcdFxcdFxcdFxcdCB2b2xfYXJncy1cXHUwMDNlbmFtZSwgdm9sX2FyZ3MtXFx1MDAzZWZkLCBzdWJ2b2wsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTEyMjI9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZV92MihzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMTI2MC1cXG5mcy9idHJmcy9pb2N0bC5jOjEyNjE6XFx0cmV0dXJuIF9fYnRyZnNfaW9jdGxfc25hcF9jcmVhdGUoZmlsZSwgZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvYnRyZnMvaW9jdGwuYy0xMjYyLVxcdFxcdFxcdFxcdFxcdCB2b2xfYXJncy1cXHUwMDNlbmFtZSwgdm9sX2FyZ3MtXFx1MDAzZWZkLCBzdWJ2b2wsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTEyODg9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zdWJ2b2xfc2V0ZmxhZ3Moc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTEyOTgtXFxuZnMvYnRyZnMvaW9jdGwuYzoxMjk5OlxcdGlmICghaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUpKVxcbmZzL2J0cmZzL2lvY3RsLmMtMTMwMC1cXHRcXHRyZXR1cm4gLUVQRVJNO1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz0xOTIxPXN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfaW5vX2xvb2t1cF91c2VyKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtMTk0MS1cXG5mcy9idHJmcy9pb2N0bC5jOjE5NDI6XFx0cmV0ID0gYnRyZnNfc2VhcmNoX3BhdGhfaW5fdHJlZV91c2VyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgYXJncyk7XFxuZnMvYnRyZnMvaW9jdGwuYy0xOTQzLVxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYz0yMjExPXN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfc25hcF9kZXN0cm95KHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0yMjIzLVxcdHN0cnVjdCBidHJmc19pb2N0bF92b2xfYXJnc192MiBBVVRPX0tGUkVFKHZvbF9hcmdzMik7XFxuZnMvYnRyZnMvaW9jdGwuYzoyMjI0OlxcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XFxuZnMvYnRyZnMvaW9jdGwuYy0yMjI1LVxcdGNoYXIgKnN1YnZvbF9uYW1lLCAqc3Vidm9sX25hbWVfcHRyID0gTlVMTDtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9Mzk1Nj1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sXzMyKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0zOTc5LVxcbmZzL2J0cmZzL2lvY3RsLmM6Mzk4MDpcXHRyZXQgPSBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSwgYXJnczY0KTtcXG5mcy9idHJmcy9pb2N0bC5jLTM5ODEtXFx0aWYgKHJldClcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NDAwMT1zdGF0aWMgbG9uZyBidHJmc19pb2N0bF9zZXRfcmVjZWl2ZWRfc3Vidm9sKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy00MDEwLVxcbmZzL2J0cmZzL2lvY3RsLmM6NDAxMTpcXHRyZXQgPSBfYnRyZnNfaW9jdGxfc2V0X3JlY2VpdmVkX3N1YnZvbChmaWxlLCBmaWxlX21udF9pZG1hcChmaWxlKSwgc2EpO1xcbmZzL2J0cmZzL2lvY3RsLmMtNDAxMi1cXHRpZiAocmV0KVxcbi0tXFxuZnMvY2VwaC9maWxlLmM9NzkzPWludCBjZXBoX2F0b21pY19vcGVuKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9jZXBoL2ZpbGUuYy03OTUte1xcbmZzL2NlcGgvZmlsZS5jOjc5NjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2NlcGgvZmlsZS5jLTc5Ny1cXHRzdHJ1Y3QgY2VwaF9mc19jbGllbnQgKmZzYyA9IGNlcGhfc2JfdG9fZnNfY2xpZW50KGRpci1cXHUwMDNlaV9zYik7XFxuLS1cXG5mcy9jb3JlZHVtcC5jPTg3OD1zdGF0aWMgYm9vbCBjb3JlZHVtcF9maWxlKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbi0tXFxuZnMvY29yZWR1bXAuYy05NTUtXFx0ICovXFxuZnMvY29yZWR1bXAuYzo5NTY6XFx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9jb3JlZHVtcC5jLTk1Ny1cXHRpZiAoIXZmc3VpZF9lcV9rdWlkKGlfdWlkX2ludG9fdmZzdWlkKGlkbWFwLCBpbm9kZSksIGN1cnJlbnRfZnN1aWQoKSkpIHtcXG4tLVxcbmZzL2V4ZWMuYz0xMzEyPXZvaWQgd291bGRfZHVtcChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2V4ZWMuYy0xMzE0LVxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpO1xcbmZzL2V4ZWMuYzoxMzE1OlxcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlsZSk7XFxuZnMvZXhlYy5jLTEzMTYtXFx0aWYgKGlub2RlX3Blcm1pc3Npb24oaWRtYXAsIGlub2RlLCBNQVlfUkVBRCkgXFx1MDAzYyAwKSB7XFxuLS1cXG5mcy9leGVjLmM9MTU1OD1zdGF0aWMgdm9pZCBicHJtX2ZpbGxfdWlkKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZXhlYy5jLTE1NzctXFxuZnMvZXhlYy5jOjE1Nzg6XFx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9leGVjLmMtMTU3OS1cXG4tLVxcbmZzL2V4ZmF0L2ZpbGUuYz00NDU9c3RhdGljIGludCBleGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxcbi0tXFxuZnMvZXhmYXQvZmlsZS5jLTQ5Ni1cXHQgKi9cXG5mcy9leGZhdC9maWxlLmM6NDk3OlxcdGVyciA9IHNlY3VyaXR5X2lub2RlX3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvZXhmYXQvZmlsZS5jLTQ5OC1cXHRcXHRcXHRcXHQgICAgIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuLS1cXG5mcy9leGZhdC9maWxlLmMtNTAyLVxcdC8qIFRoaXMgTVVTVCBiZSBkb25lIGJlZm9yZSBkb2luZyBhbnl0aGluZyBpcnJldmVyc2libGUuLi4gKi9cXG5mcy9leGZhdC9maWxlLmM6NTAzOlxcdGVyciA9IGV4ZmF0X3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuZnMvZXhmYXQvZmlsZS5jLTUwNC1cXHRpZiAoZXJyKVxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jPTE1Mzg9c3RhdGljIGxvbmcgX19leHQ0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmZzL2V4dDQvaW9jdGwuYy0xNTQxLVxcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG5mcy9leHQ0L2lvY3RsLmM6MTU0MjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xcbmZzL2V4dDQvaW9jdGwuYy0xNTQzLVxcbi0tXFxuZnMvZjJmcy9maWxlLmM9MjI3OT1zdGF0aWMgaW50IGYyZnNfaW9jX3N0YXJ0X2F0b21pY193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgYm9vbCB0cnVuY2F0ZSlcXG4tLVxcbmZzL2YyZnMvZmlsZS5jLTIyODEtXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XFxuZnMvZjJmcy9maWxlLmM6MjI4MjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xcbmZzL2YyZnMvZmlsZS5jLTIyODMtXFx0c3RydWN0IGYyZnNfaW5vZGVfaW5mbyAqZmkgPSBGMkZTX0koaW5vZGUpO1xcbi0tXFxuZnMvZjJmcy9maWxlLmM9MjM5MT1zdGF0aWMgaW50IGYyZnNfaW9jX2NvbW1pdF9hdG9taWNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5mcy9mMmZzL2ZpbGUuYy0yMzkzLVxcdHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApO1xcbmZzL2YyZnMvZmlsZS5jOjIzOTQ6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcXG5mcy9mMmZzL2ZpbGUuYy0yMzk1LVxcdGludCByZXQ7XFxuLS1cXG5mcy9mMmZzL2ZpbGUuYz0yNDI2PXN0YXRpYyBpbnQgZjJmc19pb2NfYWJvcnRfYXRvbWljX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZnMvZjJmcy9maWxlLmMtMjQyOC1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTtcXG5mcy9mMmZzL2ZpbGUuYzoyNDI5OlxcdHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwID0gZmlsZV9tbnRfaWRtYXAoZmlscCk7XFxuZnMvZjJmcy9maWxlLmMtMjQzMC1cXHRpbnQgcmV0O1xcbi0tXFxuZnMvZmF0L2ZpbGUuYz0zNz1zdGF0aWMgaW50IGZhdF9pb2N0bF9zZXRfYXR0cmlidXRlcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdTMyIF9fdXNlciAqdXNlcl9hdHRyKVxcbi0tXFxuZnMvZmF0L2ZpbGUuYy05NC1cXHQgKi9cXG5mcy9mYXQvZmlsZS5jOjk1OlxcdGVyciA9IHNlY3VyaXR5X2lub2RlX3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuZnMvZmF0L2ZpbGUuYy05Ni1cXHRcXHRcXHRcXHQgICAgIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuLS1cXG5mcy9mYXQvZmlsZS5jLTEwMC1cXHQvKiBUaGlzIE1VU1QgYmUgZG9uZSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgaXJyZXZlcnNpYmxlLi4uICovXFxuZnMvZmF0L2ZpbGUuYzoxMDE6XFx0ZXJyID0gZmF0X3NldGF0dHIoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGUtXFx1MDAzZWZfcGF0aC5kZW50cnksIFxcdTAwMjZpYSk7XFxuZnMvZmF0L2ZpbGUuYy0xMDItXFx0aWYgKGVycilcXG4tLVxcbmZzL2ZjbnRsLmM9Mzk9c3RhdGljIGludCBzZXRmbChpbnQgZmQsIHN0cnVjdCBmaWxlICogZmlscCwgdW5zaWduZWQgaW50IGFyZylcXG4tLVxcbmZzL2ZjbnRsLmMtNTItXFx0aWYgKChhcmcgXFx1MDAyNiBPX05PQVRJTUUpIFxcdTAwMjZcXHUwMDI2ICEoZmlscC1cXHUwMDNlZl9mbGFncyBcXHUwMDI2IE9fTk9BVElNRSkpXFxuZnMvZmNudGwuYzo1MzpcXHRcXHRpZiAoIWlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlscCksIGlub2RlKSlcXG5mcy9mY250bC5jLTU0LVxcdFxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5mcy9mY250bC5jPTM2OT1zdGF0aWMgbG9uZyBmY250bF9zZXRfcndfaGludChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5mcy9mY250bC5jLTM3NC1cXG5mcy9mY250bC5jOjM3NTpcXHRpZiAoIWlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGlub2RlKSlcXG5mcy9mY250bC5jLTM3Ni1cXHRcXHRyZXR1cm4gLUVQRVJNO1xcbi0tXFxuZnMvZmlsZV9hdHRyLmM9MzI0PWludCBpb2N0bF9zZXRmbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IF9fdXNlciAqYXJncClcXG5mcy9maWxlX2F0dHIuYy0zMjUte1xcbmZzL2ZpbGVfYXR0ci5jOjMyNjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2ZpbGVfYXR0ci5jLTMyNy1cXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5O1xcbi0tXFxuZnMvZmlsZV9hdHRyLmM9MzU2PWludCBpb2N0bF9mc3NldHhhdHRyKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG5mcy9maWxlX2F0dHIuYy0zNTcte1xcbmZzL2ZpbGVfYXR0ci5jOjM1ODpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2ZpbGVfYXR0ci5jLTM1OS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5O1xcbi0tXFxuZnMvZnVzZS9kaXIuYz05MzA9c3RhdGljIGludCBmdXNlX2F0b21pY19vcGVuKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICplbnRyeSxcXG4tLVxcbmZzL2Z1c2UvZGlyLmMtOTM0LVxcdGludCBlcnI7XFxuZnMvZnVzZS9kaXIuYzo5MzU6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9mdXNlL2Rpci5jLTkzNi1cXHRzdHJ1Y3QgZnVzZV9jb25uICpmYyA9IGdldF9mdXNlX2Nvbm4oZGlyKTtcXG4tLVxcbmZzL2Z1c2UvZmlsZS5jPTE1MDM9c3RhdGljIHNzaXplX3QgZnVzZV9jYWNoZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvZnVzZS9maWxlLmMtMTUwNS1cXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuZnMvZnVzZS9maWxlLmM6MTUwNjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbGUpO1xcbmZzL2Z1c2UvZmlsZS5jLTE1MDctXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLVxcdTAwM2VmX21hcHBpbmc7XFxuLS1cXG5mcy9mdXNlL2ZpbGUuYz0yNzE2PXN0YXRpYyB2b2lkIGZ1c2VfZG9fdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2ZpbGUuYy0yNzI2LVxcbmZzL2Z1c2UvZmlsZS5jOjI3Mjc6XFx0ZnVzZV9kb19zZXRhdHRyKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBmaWxlX2RlbnRyeShmaWxlKSwgXFx1MDAyNmF0dHIsIGZpbGUpO1xcbmZzL2Z1c2UvZmlsZS5jLTI3MjgtfVxcbi0tXFxuZnMvaW5vZGUuYz0yMzc2PXN0YXRpYyBpbnQgZmlsZV9yZW1vdmVfcHJpdnNfZmxhZ3Moc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbmZzL2lub2RlLmMtMjM4NS1cXG5mcy9pbm9kZS5jOjIzODY6XFx0a2lsbCA9IGRlbnRyeV9uZWVkc19yZW1vdmVfcHJpdnMoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGRlbnRyeSk7XFxuZnMvaW5vZGUuYy0yMzg3LVxcdGlmIChraWxsIFxcdTAwM2MgMClcXG4tLVxcbmZzL2lub2RlLmMtMjM5My1cXG5mcy9pbm9kZS5jOjIzOTQ6XFx0XFx0ZXJyb3IgPSBfX3JlbW92ZV9wcml2cyhmaWxlX21udF9pZG1hcChmaWxlKSwgZGVudHJ5LCBraWxsKTtcXG5mcy9pbm9kZS5jLTIzOTUtXFx0fVxcbi0tXFxuZnMvbG9ja3MuYz0yMTM2PXZmc19zZXRsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCwgaW50IGFyZywgc3RydWN0IGZpbGVfbGVhc2UgKipsZWFzZSwgdm9pZCAqKnByaXYpXFxuLS1cXG5mcy9sb2Nrcy5jLTIxMzgtXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XFxuZnMvbG9ja3MuYzoyMTM5OlxcdHZmc3VpZF90IHZmc3VpZCA9IGlfdWlkX2ludG9fdmZzdWlkKGZpbGVfbW50X2lkbWFwKGZpbHApLCBpbm9kZSk7XFxuZnMvbG9ja3MuYy0yMTQwLVxcdGludCBlcnJvcjtcXG4tLVxcbmZzL29wZW4uYz0xNjQ9aW50IGRvX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IGxlbmd0aCwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuZnMvb3Blbi5jLTE5My1cXHRzY29wZWRfZ3VhcmQoc3VwZXJfd3JpdGUsIGlub2RlLVxcdTAwM2VpX3NiKVxcbmZzL29wZW4uYzoxOTQ6XFx0XFx0cmV0dXJuIGRvX3RydW5jYXRlKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBkZW50cnksIGxlbmd0aCxcXG5mcy9vcGVuLmMtMTk1LVxcdFxcdFxcdFxcdCAgIEFUVFJfTVRJTUUgfCBBVFRSX0NUSU1FLCBmaWxlKTtcXG4tLVxcbmZzL3JlbWFwX3JhbmdlLmM9NDE2PXN0YXRpYyBib29sIG1heV9kZWR1cGVfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9yZW1hcF9yYW5nZS5jLTQxNy17XFxuZnMvcmVtYXBfcmFuZ2UuYzo0MTg6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5mcy9yZW1hcF9yYW5nZS5jLTQxOS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxlKTtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MTc0ND12b2lkIGNyZWF0ZV9wb3NpeF9yc3BfYnVmKGNoYXIgKmNjLCBzdHJ1Y3Qga3NtYmRfZmlsZSAqZnApXFxuLS1cXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTE3NDctXFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZnAtXFx1MDAzZWZpbHApO1xcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM6MTc0ODpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKTtcXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTE3NDktXFx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoaWRtYXAsIGlub2RlKTtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTQyNzM9c3RhdGljIGludCBwcm9jZXNzX3F1ZXJ5X2Rpcl9lbnRyaWVzKHN0cnVjdCBzbWIyX3F1ZXJ5X2Rpcl9wcml2YXRlICpwcml2KVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTQyNzQte1xcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQyNzU6XFx0c3RydWN0IG1udF9pZG1hcFxcdCppZG1hcCA9IGZpbGVfbW50X2lkbWFwKHByaXYtXFx1MDAzZWRpcl9mcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDI3Ni1cXHRzdHJ1Y3Qga3N0YXRcXHRcXHRrc3RhdDtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTQ1MDk9aW50IHNtYjJfcXVlcnlfZGlyKHN0cnVjdCBrc21iZF93b3JrICp3b3JrKVxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDU0NS1cXHRpZiAoIShkaXJfZnAtXFx1MDAzZWRhY2Nlc3MgXFx1MDAyNiBGSUxFX0xJU1RfRElSRUNUT1JZX0xFKSB8fFxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQ1NDY6XFx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZGlyX2ZwLVxcdTAwM2VmaWxwKSxcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy00NTQ3LVxcdFxcdFxcdCAgICAgZmlsZV9pbm9kZShkaXJfZnAtXFx1MDAzZWZpbHApLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM9NDgxOD1zdGF0aWMgaW50IHNtYjJfZ2V0X2VhKHN0cnVjdCBrc21iZF93b3JrICp3b3JrLCBzdHJ1Y3Qga3NtYmRfZmlsZSAqZnAsXFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy00ODI3LVxcdGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoO1xcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjQ4Mjg6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNDgyOS1cXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jPTU0MzE9c3RhdGljIGludCBmaW5kX2ZpbGVfcG9zaXhfaW5mbyhzdHJ1Y3Qgc21iMl9xdWVyeV9pbmZvX3JzcCAqcnNwLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNTQzNS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NTQzNjpcXHRzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKTtcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01NDM3LVxcdHZmc3VpZF90IHZmc3VpZCA9IGlfdWlkX2ludG9fdmZzdWlkKGlkbWFwLCBpbm9kZSk7XFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz01ODgzPXN0YXRpYyBpbnQgc21iMl9nZXRfaW5mb19zZWMoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssXFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy01OTI1LVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jOjU5MjY6XFx0aWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNTkyNy1cXHRpbm9kZSA9IGZpbGVfaW5vZGUoZnAtXFx1MDAzZWZpbHApO1xcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM9NjIzND1zdGF0aWMgaW50IHNtYjJfcmVuYW1lKHN0cnVjdCBrc21iZF93b3JrICp3b3JrLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjI3My1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYzo2Mjc0OlxcdFxcdHJjID0ga3NtYmRfdmZzX3NldHhhdHRyKGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKSxcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy02Mjc1LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9wYXRoLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM9NjM3Mz1zdGF0aWMgaW50IHNldF9maWxlX2Jhc2ljX2luZm8oc3RydWN0IGtzbWJkX2ZpbGUgKmZwLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmMtNjM4OC1cXHRpbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7XFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6NjM4OTpcXHRpZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZpbHApO1xcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTYzOTAtXFxuLS1cXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYz04MzU3PXN0YXRpYyBpbmxpbmUgaW50IGZzY3RsX3NldF9zcGFyc2Uoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHU2NCBpZCxcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvc21iMnBkdS5jLTgzNzgtXFxuZnMvc21iL3NlcnZlci9zbWIycGR1LmM6ODM3OTpcXHRpZG1hcCA9IGZpbGVfbW50X2lkbWFwKGZwLVxcdTAwM2VmaWxwKTtcXG5mcy9zbWIvc2VydmVyL3NtYjJwZHUuYy04MzgwLVxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWJfY29tbW9uLmM9NDQ1PWludCBrc21iZF9wb3B1bGF0ZV9kb3RfZG90ZG90X2VudHJpZXMoc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIGludCBpbmZvX2xldmVsLFxcbi0tXFxuZnMvc21iL3NlcnZlci9zbWJfY29tbW9uLmMtNDU0LVxcdHN0cnVjdCBrc21iZF9jb25uICpjb25uID0gd29yay1cXHUwMDNlY29ubjtcXG5mcy9zbWIvc2VydmVyL3NtYl9jb21tb24uYzo0NTU6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChkaXItXFx1MDAzZWZpbHApO1xcbmZzL3NtYi9zZXJ2ZXIvc21iX2NvbW1vbi5jLTQ1Ni1cXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmM9MjQ4PXN0YXRpYyBpbnQga3NtYmRfdmZzX3N0cmVhbV9yZWFkKHN0cnVjdCBrc21iZF9maWxlICpmcCwgY2hhciAqYnVmLCBsb2ZmX3QgKnBvcyxcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMjU4LVxcdHNhdmVkX2NyZWQgPSBvdmVycmlkZV9jcmVkcyhmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9jcmVkKTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jOjI1OTpcXHR2X2xlbiA9IGtzbWJkX3Zmc19nZXRjYXNleGF0dHIoZmlsZV9tbnRfaWRtYXAoZnAtXFx1MDAzZWZpbHApLFxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMjYwLVxcdFxcdFxcdFxcdCAgICAgICBmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9wYXRoLmRlbnRyeSxcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmM9Mzg1PXN0YXRpYyBpbnQga3NtYmRfdmZzX3N0cmVhbV93cml0ZShzdHJ1Y3Qga3NtYmRfZmlsZSAqZnAsIGNoYXIgKmJ1ZiwgbG9mZl90ICpwb3MsXFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTM4OS1cXHRjaGFyICpzdHJlYW1fYnVmID0gTlVMTCwgKndidWY7XFxuZnMvc21iL3NlcnZlci92ZnMuYzozOTA6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci92ZnMuYy0zOTEtXFx0c2l6ZV90IHNpemU7XFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTEwMTU9aW50IGtzbWJkX3Zmc191bmxpbmsoc3RydWN0IGZpbGUgKmZpbHApXFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTEwMTktXFx0c3RydWN0IGRlbnRyeSAqZGlyLCAqZGVudHJ5ID0gZmlscC1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jOjEwMjA6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxwKTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jLTEwMjEtXFxuLS1cXG5mcy9zbWIvc2VydmVyL3Zmcy5jPTE5NTc9aW50IGtzbWJkX3Zmc19zZXRfY29tcHJlc3Npb24oc3RydWN0IGtzbWJkX3dvcmsgKndvcmssIHN0cnVjdCBrc21iZF9maWxlICpmcCwgdTE2IGZtdClcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzLmMtMTk2MS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmcC1cXHUwMDNlZmlscC1cXHUwMDNlZl9wYXRoLmRlbnRyeTtcXG5mcy9zbWIvc2VydmVyL3Zmcy5jOjE5NjI6XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmcC1cXHUwMDNlZmlscCk7XFxuZnMvc21iL3NlcnZlci92ZnMuYy0xOTYzLVxcdHUzMiBmbGFncztcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvdmZzX2NhY2hlLmM9MzY5PXN0YXRpYyB2b2lkIF9fa3NtYmRfaW5vZGVfY2xvc2Uoc3RydWN0IGtzbWJkX2ZpbGUgKmZwKVxcbi0tXFxuZnMvc21iL3NlcnZlci92ZnNfY2FjaGUuYy0zOTAtXFx0XFx0XFx0c2F2ZWRfY3JlZCA9IG92ZXJyaWRlX2NyZWRzKGZpbHAtXFx1MDAzZWZfY3JlZCk7XFxuZnMvc21iL3NlcnZlci92ZnNfY2FjaGUuYzozOTE6XFx0XFx0XFx0ZXJyID0ga3NtYmRfdmZzX3JlbW92ZV94YXR0cihmaWxlX21udF9pZG1hcChmaWxwKSxcXG5mcy9zbWIvc2VydmVyL3Zmc19jYWNoZS5jLTM5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZmaWxwLVxcdTAwM2VmX3BhdGgsXFxuLS1cXG5mcy94YXR0ci5jPTY2Nj1pbnQgZmlsZV9zZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGtlcm5lbF94YXR0cl9jdHggKmN0eClcXG4tLVxcbmZzL3hhdHRyLmMtNjcxLVxcdFxcdGF1ZGl0X2ZpbGUoZik7XFxuZnMveGF0dHIuYzo2NzI6XFx0XFx0ZXJyb3IgPSBkb19zZXR4YXR0cihmaWxlX21udF9pZG1hcChmKSwgZi1cXHUwMDNlZl9wYXRoLmRlbnRyeSwgY3R4KTtcXG5mcy94YXR0ci5jLTY3My1cXHRcXHRtbnRfZHJvcF93cml0ZV9maWxlKGYpO1xcbi0tXFxuZnMveGF0dHIuYz04MjI9c3NpemVfdCBmaWxlX2dldHhhdHRyKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3Qga2VybmVsX3hhdHRyX2N0eCAqY3R4KVxcbi0tXFxuZnMveGF0dHIuYy04MjQtXFx0YXVkaXRfZmlsZShmKTtcXG5mcy94YXR0ci5jOjgyNTpcXHRyZXR1cm4gZG9fZ2V0eGF0dHIoZmlsZV9tbnRfaWRtYXAoZiksIGYtXFx1MDAzZWZfcGF0aC5kZW50cnksIGN0eCk7XFxuZnMveGF0dHIuYy04MjYtfVxcbi0tXFxuZnMveGF0dHIuYz0xMDM5PXN0YXRpYyBpbnQgZmlsZV9yZW1vdmV4YXR0cihzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IHhhdHRyX25hbWUgKmtuYW1lKVxcbi0tXFxuZnMveGF0dHIuYy0xMDQ0LVxcdFxcdGF1ZGl0X2ZpbGUoZik7XFxuZnMveGF0dHIuYzoxMDQ1OlxcdFxcdGVycm9yID0gcmVtb3ZleGF0dHIoZmlsZV9tbnRfaWRtYXAoZiksXFxuZnMveGF0dHIuYy0xMDQ2LVxcdFxcdFxcdFxcdCAgICBmLVxcdTAwM2VmX3BhdGguZGVudHJ5LCBrbmFtZS1cXHUwMDNlbmFtZSk7XFxuLS1cXG5mcy94ZnMveGZzX2ZpbGUuYz0xMjQzPXhmc19mYWxsb2Nfc2V0c2l6ZShcXG4tLVxcbmZzL3hmcy94ZnNfZmlsZS5jLTEyNTMtXFx0XFx0cmV0dXJuIDA7XFxuZnMveGZzL3hmc19maWxlLmM6MTI1NDpcXHRyZXR1cm4geGZzX3ZuX3NldGF0dHJfc2l6ZShmaWxlX21udF9pZG1hcChmaWxlKSwgZmlsZV9kZW50cnkoZmlsZSksXFxuZnMveGZzL3hmc19maWxlLmMtMTI1NS1cXHRcXHRcXHRcXHUwMDI2aWF0dHIpO1xcbi0tXFxuZnMveGZzL3hmc19pb2N0bC5jPTgxPXhmc19pb2NfZnNidWxrc3RhdChcXG4tLVxcbmZzL3hmcy94ZnNfaW9jdGwuYy04OS1cXHRcXHQubXBcXHRcXHQ9IG1wLFxcbmZzL3hmcy94ZnNfaW9jdGwuYzo5MDpcXHRcXHQuaWRtYXBcXHRcXHQ9IGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbmZzL3hmcy94ZnNfaW9jdGwuYy05MS1cXHRcXHQub2NvdW50XFx0XFx0PSAwLFxcbi0tXFxuZnMveGZzL3hmc19pb2N0bC5jPTI2ND14ZnNfaW9jX2J1bGtzdGF0KFxcbi0tXFxuZnMveGZzL3hmc19pb2N0bC5jLTI3Mi1cXHRcXHQubXBcXHRcXHRcXHQ9IG1wLFxcbmZzL3hmcy94ZnNfaW9jdGwuYzoyNzM6XFx0XFx0LmlkbWFwXFx0XFx0XFx0PSBmaWxlX21udF9pZG1hcChmaWxlKSxcXG5mcy94ZnMveGZzX2lvY3RsLmMtMjc0LVxcdH07XFxuLS1cXG5mcy94ZnMveGZzX2lvY3RsMzIuYz0xOTg9eGZzX2NvbXBhdF9pb2NfZnNidWxrc3RhdChcXG4tLVxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jLTIwNy1cXHRcXHQubXBcXHRcXHQ9IG1wLFxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jOjIwODpcXHRcXHQuaWRtYXBcXHRcXHQ9IGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbmZzL3hmcy94ZnNfaW9jdGwzMi5jLTIwOS1cXHRcXHQub2NvdW50XFx0XFx0PSAwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTI0NDA9c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IGZpbGVuYW1lKSAlIDY0ID09IDApO1xcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQxLVxcbmluY2x1ZGUvbGludXgvZnMuaDoyNDQyOnN0YXRpYyBpbmxpbmUgc3RydWN0IG1udF9pZG1hcCAqZmlsZV9tbnRfaWRtYXAoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXFxuaW5jbHVkZS9saW51eC9mcy5oLTI0NDMte1xcbi0tXFxuaW5jbHVkZS9saW51eC9mcy5oPTI0NDc9c3RhdGljIGlubGluZSBib29sIGZpbGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ0OC17XFxuaW5jbHVkZS9saW51eC9mcy5oOjI0NDk6XFx0cmV0dXJuIGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZmlsZSksIGZpbGVfaW5vZGUoZmlsZSkpO1xcbmluY2x1ZGUvbGludXgvZnMuaC0yNDUwLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvZnMuaD0yNjk0PXN0YXRpYyBpbmxpbmUgaW50IGZpbGVfcGVybWlzc2lvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1hc2spXFxuaW5jbHVkZS9saW51eC9mcy5oLTI2OTUte1xcbmluY2x1ZGUvbGludXgvZnMuaDoyNjk2OlxcdHJldHVybiBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbmluY2x1ZGUvbGludXgvZnMuaC0yNjk3LVxcdFxcdFxcdFxcdGZpbGVfaW5vZGUoZmlsZSksIG1hc2spO1xcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmM9OTE5PWludCBhcHBhcm1vcl9icHJtX2NyZWRzX2Zvcl9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5zZWN1cml0eS9hcHBhcm1vci9kb21haW4uYy05MjgtXFx0Ym9vbCB1bnNhZmUgPSBmYWxzZTtcXG5zZWN1cml0eS9hcHBhcm1vci9kb21haW4uYzo5Mjk6XFx0dmZzdWlkX3QgdmZzdWlkID0gaV91aWRfaW50b192ZnN1aWQoZmlsZV9tbnRfaWRtYXAoYnBybS1cXHUwMDNlZmlsZSksXFxuc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMtOTMwLVxcdFxcdFxcdFxcdFxcdCAgICBmaWxlX2lub2RlKGJwcm0tXFx1MDAzZWZpbGUpKTtcXG4tLVxcbnNlY3VyaXR5L2FwcGFybW9yL2ZpbGUuYz00ODM9c3RhdGljIGludCBfX2ZpbGVfcGF0aF9wZXJtKGNvbnN0IGNoYXIgKm9wLCBjb25zdCBzdHJ1Y3QgY3JlZCAqc3Vial9jcmVkLFxcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvZmlsZS5jLTQ4OS1cXHRzdHJ1Y3QgYWFfcGVybXMgcGVybXMgPSB7fTtcXG5zZWN1cml0eS9hcHBhcm1vci9maWxlLmM6NDkwOlxcdHZmc3VpZF90IHZmc3VpZCA9IGlfdWlkX2ludG9fdmZzdWlkKGZpbGVfbW50X2lkbWFwKGZpbGUpLFxcbnNlY3VyaXR5L2FwcGFybW9yL2ZpbGUuYy00OTEtXFx0XFx0XFx0XFx0XFx0ICAgIGZpbGVfaW5vZGUoZmlsZSkpO1xcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvbHNtLmM9NDYxPXN0YXRpYyBpbnQgYXBwYXJtb3JfZmlsZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuc2VjdXJpdHkvYXBwYXJtb3IvbHNtLmMtNDg0LVxcdGlmICghdW5jb25maW5lZChsYWJlbCkpIHtcXG5zZWN1cml0eS9hcHBhcm1vci9sc20uYzo0ODU6XFx0XFx0c3RydWN0IG1udF9pZG1hcCAqaWRtYXAgPSBmaWxlX21udF9pZG1hcChmaWxlKTtcXG5zZWN1cml0eS9hcHBhcm1vci9sc20uYy00ODYtXFx0XFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XFxuLS1cXG5zZWN1cml0eS9jb21tb25jYXAuYz03NjM9c3RhdGljIGludCBnZXRfZmlsZV9jYXBzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuc2VjdXJpdHkvY29tbW9uY2FwLmMtNzg0LVxcbnNlY3VyaXR5L2NvbW1vbmNhcC5jOjc4NTpcXHRyYyA9IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soZmlsZV9tbnRfaWRtYXAoZmlsZSksXFxuc2VjdXJpdHkvY29tbW9uY2FwLmMtNzg2LVxcdFxcdFxcdFxcdCAgICBmaWxlLVxcdTAwM2VmX3BhdGguZGVudHJ5LCBcXHUwMDI2dmNhcHMpO1xcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTI1ND1zdGF0aWMgaW50IHByb2Nlc3NfbWVhc3VyZW1lbnQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkLFxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTI4Mi1cXHQgKi9cXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmM6MjgzOlxcdGFjdGlvbiA9IGltYV9nZXRfYWN0aW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgY3JlZCwgcHJvcCxcXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtMjg0LVxcdFxcdFxcdFxcdG1hc2ssIGZ1bmMsIFxcdTAwMjZwY3IsIFxcdTAwMjZ0ZW1wbGF0ZV9kZXNjLCBOVUxMLFxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTU0Mz1zdGF0aWMgaW50IGltYV9maWxlX21wcm90ZWN0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHJlcXByb3QsXFxuLS1cXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtNTYzLVxcdGlub2RlID0gZmlsZV9pbm9kZSh2bWEtXFx1MDAzZXZtX2ZpbGUpO1xcbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYzo1NjQ6XFx0YWN0aW9uID0gaW1hX2dldF9hY3Rpb24oZmlsZV9tbnRfaWRtYXAodm1hLVxcdTAwM2V2bV9maWxlKSwgaW5vZGUsXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTU2NS1cXHRcXHRcXHRcXHRjdXJyZW50X2NyZWQoKSwgXFx1MDAyNnByb3AsIE1BWV9FWEVDLCBNTUFQX0NIRUNLLFxcbnNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX21haW4uYy01NjYtXFx0XFx0XFx0XFx0XFx1MDAyNnBjciwgXFx1MDAyNnRlbXBsYXRlLCBOVUxMLCBOVUxMKTtcXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmM6NTY3OlxcdGFjdGlvbiB8PSBpbWFfZ2V0X2FjdGlvbihmaWxlX21udF9pZG1hcCh2bWEtXFx1MDAzZXZtX2ZpbGUpLCBpbm9kZSxcXG5zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9tYWluLmMtNTY4LVxcdFxcdFxcdFxcdCBjdXJyZW50X2NyZWQoKSwgXFx1MDAyNnByb3AsIE1BWV9FWEVDLFxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jPTExNzY9dm9pZCBpbWFfa2V4ZWNfY21kbGluZShpbnQga2VybmVsX2ZkLCBjb25zdCB2b2lkICpidWYsIGludCBzaXplKVxcbi0tXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTExODQtXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jOjExODU6XFx0cHJvY2Vzc19idWZmZXJfbWVhc3VyZW1lbnQoZmlsZV9tbnRfaWRtYXAoZmRfZmlsZShmKSksIGZpbGVfaW5vZGUoZmRfZmlsZShmKSksXFxuc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfbWFpbi5jLTExODYtXFx0XFx0XFx0XFx0ICAgYnVmLCBzaXplLCBcXFwia2V4ZWMtY21kbGluZVxcXCIsIEtFWEVDX0NNRExJTkUsIDAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjMwLjY5OTE2MzM4NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2OTgzMjM5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYWR2aXNlIGFuZCBNaW5jb3JlIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgaW4gYG1tL21hZHZpc2UuY2AgYW5kIGBtbS9taW5jb3JlLmNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgLCBhbmQgYGRvX21pbmNvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlci4gSG1tLCBgbWFkdmlzZV9wYWdlb3V0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl0J3MgbGlrZWx5IGNhbGxlZCB3aXRoaW4gdGhlIHNhbWUgZmlsZS4gTGV0J3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgaXQncyBpbnZva2VkIGJ5IGBtYWR2aXNlX3ZtYV9iZWhhdmlvcmAgb3IgcGVyaGFwcyBkaXJlY3RseSBieSBgZG9fbWFkdmlzZWAuIEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdC5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYm90aCBgbWFkdmlzZV9wYWdlb3V0YCBhbmQgYGRvX21pbmNvcmVgIGNhcmVmdWxseS4gSSByZWNhbGwgYGRvX21pbmNvcmVgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVoaW5kIHRoZSBgc3lzX21pbmNvcmVgIHN5c3RlbSBjYWxsLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgZm9yIGBtYWR2aXNlX3BhZ2VvdXRgLiBJIHN1c3BlY3QgSSdsbCBmaW5kIGl0IHdpdGhpbiBgbWFkdmlzZV92bWFfYmVoYXZpb3JgIG9yIHNvbWUgc2ltaWxhciBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gaW4gYG1tL21hZHZpc2UuY2AuIE9rYXksIGxldCdzIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI3MTcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6MzUuMzk3NDg5MjAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDYxNTYyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFkdmlzZV9wYWdlb3V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21hZHZpc2UuYz01OTU9c3RhdGljIGxvbmcgbWFkdmlzZV9jb2xkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTYxMC1cXG5tbS9tYWR2aXNlLmM6NjExOnN0YXRpYyB2b2lkIG1hZHZpc2VfcGFnZW91dF9wYWdlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsXFxubW0vbWFkdmlzZS5jLTYxMi1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL21hZHZpc2UuYy02MjUtXFxubW0vbWFkdmlzZS5jOjYyNjpzdGF0aWMgbG9uZyBtYWR2aXNlX3BhZ2VvdXQoc3RydWN0IG1hZHZpc2VfYmVoYXZpb3IgKm1hZHZfYmVoYXZpb3IpXFxubW0vbWFkdmlzZS5jLTYyNy17XFxuLS1cXG5tbS9tYWR2aXNlLmMtNjQ1LVxcdHRsYl9nYXRoZXJfbW11KFxcdTAwMjZ0bGIsIG1hZHZfYmVoYXZpb3ItXFx1MDAzZW1tKTtcXG5tbS9tYWR2aXNlLmM6NjQ2OlxcdG1hZHZpc2VfcGFnZW91dF9wYWdlX3JhbmdlKFxcdTAwMjZ0bGIsIHZtYSwgXFx1MDAyNm1hZHZfYmVoYXZpb3ItXFx1MDAzZXJhbmdlKTtcXG5tbS9tYWR2aXNlLmMtNjQ3LVxcdHRsYl9maW5pc2hfbW11KFxcdTAwMjZ0bGIpO1xcbi0tXFxubW0vbWFkdmlzZS5jPTEzMzg9c3RhdGljIGludCBtYWR2aXNlX3ZtYV9iZWhhdmlvcihzdHJ1Y3QgbWFkdmlzZV9iZWhhdmlvciAqbWFkdl9iZWhhdmlvcilcXG4tLVxcbm1tL21hZHZpc2UuYy0xMzU2LVxcdGNhc2UgTUFEVl9QQUdFT1VUOlxcbm1tL21hZHZpc2UuYzoxMzU3OlxcdFxcdHJldHVybiBtYWR2aXNlX3BhZ2VvdXQobWFkdl9iZWhhdmlvcik7XFxubW0vbWFkdmlzZS5jLTEzNTgtXFx0Y2FzZSBNQURWX0ZSRUU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjM3LjIwMzY1MTc2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk0OTE5NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQYWdlb3V0IGFuZCBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhlIHBhZ2VvdXQgcHJvY2VzcyDigJMgYGRvX21pbmNvcmVgIGFuZCBgbWFkdmlzZV9wYWdlb3V0YC4gQnV0IGhvbGQgb24sIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUgc2xpZ2h0bHkuIExvb2tpbmcgZGVlcGVyLCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBzZWVtcyBpbXBvcnRhbnQgYXMgd2VsbCwgYmVjYXVzZSBpdCBjYWxscyBgY2FuX2RvX2ZpbGVfcGFnZW91dGAuIE5vdywgSSByZWNhbGwgdGhhdCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCBmdW5jdGlvbnMgYXMgYSBwYWdlIHdhbGsgY2FsbGJhY2suIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGBjYW5fZG9fZmlsZV9wYWdlb3V0YCBpdHNlbGYuIEnigJlsbCBuYXZpZ2F0ZSB0byBgbW0vbWFkdmlzZS5jYCB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyB3aXRoaW4gdGhhdCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1OTYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6NDEuMDk4NTc0NDE5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk3MjQ3OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9kb19maWxlX3BhZ2VvdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWFkdmlzZS5jPTI4MT1zdGF0aWMgbG9uZyBtYWR2aXNlX3dpbGxuZWVkKHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTMyOC1cXG5tbS9tYWR2aXNlLmM6MzI5OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fZmlsZV9wYWdlb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbm1tL21hZHZpc2UuYy0zMzAte1xcbi0tXFxubW0vbWFkdmlzZS5jPTM1Mz1zdGF0aWMgaW50IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZShwbWRfdCAqcG1kLFxcbi0tXFxubW0vbWFkdmlzZS5jLTM3My1cXHRwYWdlb3V0X2Fub25fb25seV9maWx0ZXIgPSBwYWdlb3V0IFxcdTAwMjZcXHUwMDI2ICF2bWFfaXNfYW5vbnltb3VzKHZtYSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9tYWR2aXNlLmM6Mzc0OlxcdFxcdFxcdFxcdFxcdCFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7XFxubW0vbWFkdmlzZS5jLTM3NS1cXG4tLVxcbm1tL21hZHZpc2UuYz02MjY9c3RhdGljIGxvbmcgbWFkdmlzZV9wYWdlb3V0KHN0cnVjdCBtYWR2aXNlX2JlaGF2aW9yICptYWR2X2JlaGF2aW9yKVxcbi0tXFxubW0vbWFkdmlzZS5jLTYzOS1cXHQgKi9cXG5tbS9tYWR2aXNlLmM6NjQwOlxcdGlmICghdm1hX2lzX2Fub255bW91cyh2bWEpIFxcdTAwMjZcXHUwMDI2ICghY2FuX2RvX2ZpbGVfcGFnZW91dCh2bWEpIFxcdTAwMjZcXHUwMDI2XFxubW0vbWFkdmlzZS5jLTY0MS1cXHRcXHRcXHRcXHQodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX01BWVNIQVJFKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjQyLjk5NTgyODI1NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU1Mzk2ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRm9jdXNpbmcgTXkgQW5hbHlzaXMgb2YgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyIGludG8gc29tZSBtZW1vcnkgbWFuYWdlbWVudCB0b29scyBhbmQgYmVoYXZpb3JzLiBJJ3ZlIGdvdCBhIGNvdXBsZSBvZiBrZXkgYXJlYXMgdG8gY29uY2VudHJhdGUgb24uIEl0IGxvb2tzIGxpa2UgYG1hZHZpc2VfcGFnZW91dGAgYW5kIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgIGFyZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgcGFnZW91dCBtZWNoYW5pc21zIGFuZCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGVtLiBUaG9zZSBmdW5jdGlvbnMgbGlrZWx5IGhvbGQgdGhlIGNvcmUgbG9naWMgSSdtIGxvb2tpbmcgZm9yLlxuXG5UaGVuIHRoZXJlJ3MgYG1pbmNvcmUuY2AsIGFuZCBzcGVjaWZpY2FsbHkgYGRvX21pbmNvcmVgLiBUaGF0IHNlZW1zIGxpa2UgYW4gb2J2aW91cyBmdW5jdGlvbiB0byBzdHVkeS4gVGhpcyB3b3VsZCBiZSBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBgbWluY29yZWAgc3lzdGVtIGNhbGwgd29ya3MgdG8gZGV0ZXJtaW5lIHJlc2lkZW50IG1lbW9yeSBwYWdlcy4gSSB0aGluayBJIHdpbGwgc3R1ZHkgaG93IHRoYXQgc3lzdGVtIGNhbGwgaXMgaW1wbGVtZW50ZWQsIHNvIHRoYXQgSSBoYXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSB1c2VyIGFjY2Vzc2VzIG1lbW9yeSByZXNpZGVuY2UgaW5mb3JtYXRpb24uXG5cbkFuZCBmaW5hbGx5LCBzb21ldGhpbmcgZWxzZSB0aGF0IGNhdWdodCBteSBleWUgaXMgYGNhbl9kb19jYWNoZXN0YXRgIGluIGBtbS9maWxlbWFwLmNgLiBUaGF0IGZ1bmN0aW9uICpjb3VsZCogYmUgYSByZWxhdGVkIGFyZWEgZm9yIGNvbnNpZGVyYXRpb24gYXMgd2VsbCwgc2luY2UgdGhhdCBmaWxlIGlzIHJlbGF0ZWQgdG8gYGZpbGVtYXBgLCB3aGljaCByZWxhdGVzIHRvIGNhY2hlZCBmaWxlIGRhdGEgdGhhdCB3b3VsZCBhbHNvIGJlIHBhZ2VkIG91dCBvciBtYW5hZ2VkIGRpZmZlcmVudGx5IGluIHRoZSBzeXN0ZW0uIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoYXQsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIGltcGxpY2F0aW9ucyBvbiBwYWdlb3V0L2NhY2hlc3RhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyMzIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1Nzo0OC4wNTEyMjc1MTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDUyOTk4NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FuX2RvX2NhY2hlc3RhdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9maWxlbWFwLmM9NDYwMj1zdGF0aWMgdm9pZCBmaWxlbWFwX2NhY2hlc3RhdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzAyLSAqL1xcbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbm1tL2ZpbGVtYXAuYy00NzA0LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYz00NzQ2PVNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIHVuc2lnbmVkIGludCwgZmQsXFxuLS1cXG5tbS9maWxlbWFwLmMtNDc2Ni1cXG5tbS9maWxlbWFwLmM6NDc2NzpcXHRpZiAoIWNhbl9kb19jYWNoZXN0YXQoZmRfZmlsZShmKSkpXFxubW0vZmlsZW1hcC5jLTQ3NjgtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6NDkuODk2NTMzNDcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NjAxNDU3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcgZm9yIElkZW50aWZ5aW5nIFJlbGV2YW50IEZ1bmN0aW9ucyBhbmQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIGNhY2hlIHN0YXRpc3RpY3MuIElzIGl0IGBzeXNfY2FjaGVzdGF0YCwgYF9feDY0X3N5c19jYWNoZXN0YXRgLCBvciBwZXJoYXBzIGBmaWxlbWFwX2NhY2hlc3RhdGA/IE5vLCB3YWl0IGEgbWludXRlLCBgY2FuX2RvX2NhY2hlc3RhdGAgaXMgKmNhbGxlZCogaW4gYFNZU0NBTExfREVGSU5FNChjYWNoZXN0YXQsIC4uLilgIHdoaWNoICppcyogYHN5c19jYWNoZXN0YXRgLiBUaGF0IHNldHRsZXMgaXQuXG5cblNvLCB0aGUgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRvX21pbmNvcmVgLCBgbWFkdmlzZV9wYWdlb3V0YCwgYW5kIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgLlxuXG5BaCwgYnV0IHRoZSBvcmlnaW5hbCB0aG91Z2h0IGhhZCBgc3lzX2NhY2hlc3RhdGAgYXMgYSBzeXNjYWxsLCBhbmQgc3l6a2FsbGVyIHVzdWFsbHkgYXR0YWNrcyBzeXNjYWxscyBkaXJlY3RseS4gU28gbWF5YmUgdGhlIGZvY3VzIHNob3VsZCBiZSBgZmlsZW1hcF9jYWNoZXN0YXRgPyBObywgbm8sIGBjYW5fZG9fY2FjaGVzdGF0YCAqaXMqIHdpdGhpbiBgc3lzX2NhY2hlc3RhdGAsIHNvIHRoYXQncyB0aGUgcGF0aC4gSSdsbCBqdXN0IGtlZXAgdGhlIHByaW9yIGxpc3Qgb2YgZnVuY3Rpb25zOiBgZG9fbWluY29yZWAsIGBtYWR2aXNlX3BhZ2VvdXRgLCBhbmQgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAuXG5cbk5vdywgY29uZmlndXJhdGlvbnMuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhdCBwbGF5LiBJZG1hcHBlZCBtb3VudHMgYXJlIGVuYWJsZWQgYnkgYENPTkZJR19VU0VSX05TYCBhbmQgYENPTkZJR19NVUxUSVVTRVJgLiBCdXQgdGhvc2UgYXJlIGdlbmVyYWwgYW5kIG5vdCBzcGVjaWZpYyB0byB0aGlzIHBhdGNoLlxuXG5JcyB0aGVyZSBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGBtYWR2aXNlYCBvciBgbWluY29yZWA/IFBlcmhhcHMgYENPTkZJR19BRFZJU0VfU1lTQ0FMTFNgPyBUaW1lIHRvIGRpZyBpbnRvIGBtbS9LY29uZmlnYCBvciBgaW5pdC9LY29uZmlnYCBhbmQgZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Nzk3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU3OjU2LjM1NjY4MTIyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MTQ0NDA0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQURWSVNFX1NZU0NBTExTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz0xOTM3PWNvbmZpZyBJT19VUklOR19NT0NLX0ZJTEVcXG4tLVxcbmluaXQvS2NvbmZpZy0xOTQ3LVxcbmluaXQvS2NvbmZpZzoxOTQ4OmNvbmZpZyBBRFZJU0VfU1lTQ0FMTFNcXG5pbml0L0tjb25maWctMTk0OS1cXHRib29sIFxcXCJFbmFibGUgbWFkdmlzZS9mYWR2aXNlIHN5c2NhbGxzXFxcIiBpZiBFWFBFUlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTc6NTguMzA4MTMwOTkyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDQyMjI5MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkNvbnNpZGVyaW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBNZW1vcnkgTWFuYWdlbWVudCoqXG5cblJpZ2h0LCBzbyBJJ20gZXZhbHVhdGluZyBrZXJuZWwgY29uZmlndXJhdGlvbnMgYW5kIGltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIGluY2x1ZGluZyBgQURWSVNFX1NZU0NBTExTYCBpcyBhIHNvbGlkIG1vdmUuIEl0IHByb3ZpZGVzIGltcG9ydGFudCBoaW50cyB0byB0aGUga2VybmVsIGFib3V0IGhvdyB3ZSBleHBlY3QgdG8gYWNjZXNzIG1lbW9yeSBhbmQgdGhhdCdzIGdlbmVyYWxseSBhIHBlcmZvcm1hbmNlIHdpbi4gQnV0IHRoYXQgbGVhZHMgbWUgdG8gdGhpbmsgYWJvdXQgYG1pbmNvcmVgLCBhbmQgaG93IGl0IHJlbGF0ZXMuIElzIHRoZXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVkaWNhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgbWluY29yZWAgZnVuY3Rpb25hbGl0eT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGN1cnJlbnQgYnVpbGQgaW5jbHVkZXMgdGhhdCBhYmlsaXR5IGFuZCBpZiBub3QsIGhvdyBlYXNpbHkgaXQgY2FuIGJlIGludHJvZHVjZWQuIFRoYXQga2luZCBvZiBpbnNpZ2h0IGRpcmVjdGx5IGluZmx1ZW5jZXMgbXkgbmV4dCBzdGVwcyBpbiB0aGUgYnVpbGQgYW5kIG9wdGltaXphdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU1NSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjAxLjUxMjM1NzEwNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDQyMzI5NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1JTkNPUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjAzLjQ0Mjc5Mjk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTYyOTIwOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgQnVpbGQgUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbWluY29yZS5vYCBpcyBiZWluZyBidWlsdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQtcmVsYXRlZCBvYmplY3QgZmlsZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZmluZWQsIG9yIGF0IGxlYXN0IGxpbmtlZC4gSSdtIGFzc3VtaW5nIGl0J3MgdW5kZXIgdGhlIGBtbS9gIGRpcmVjdG9yeSwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBrZXJuZWwgY29kZS4gTWFrZXMgc2Vuc2UgdG8gc3RhcnQgdGhlcmUsIGFzIHRoZSBtYWtlZmlsZXMgb3JjaGVzdHJhdGUgdGhlIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nIHByb2Nlc3MsIHNvIGl0J3MgdGhlIG9idmlvdXMgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcmVjaXBlIGZvciBhIHNwZWNpZmljIG9iamVjdCBmaWxlLiBMZXQncyBzZWUgd2hhdCB0aGUgbWFrZWZpbGUgdGVsbHMgdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzczLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTg6MDcuMTk5MDg3MjYyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA3MTI1ODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1pbmNvcmVcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MzY9bW11LXlcXHRcXHRcXHQ6PSBub21tdS5vXFxubW0vTWFrZWZpbGU6Mzc6bW11LSQoQ09ORklHX01NVSlcXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXFxcXG5tbS9NYWtlZmlsZS0zOC1cXHRcXHRcXHQgICBtbG9jay5vIG1tYXAubyBtbXVfZ2F0aGVyLm8gbXByb3RlY3QubyBtcmVtYXAubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjA5LjcwNjIyMjcyMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcyMzQwNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHRoZSBidWlsZCBzeXN0ZW0gaXMgY29tcGxhaW5pbmcgYWJvdXQgYG1pbmNvcmUub2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBpc3N1ZSBib2lscyBkb3duIHRvIGBDT05GSUdfTU1VYC4gQnV0IGhvbGQgb24sIGlzbid0IGBDT05GSUdfTU1VYCBhIGdpdmVuIGZvciBhbGwgb2Ygb3VyIHRhcmdldCBwbGF0Zm9ybXM/IEknbSBwcmV0dHkgc3VyZSBpdCBpcy4gV2UndmUgYWx3YXlzIG5lZWRlZCBhIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXQsIHNvIHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucywgdGhvdWdoLCBhbmQgSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gY29uZmlybSBpdCBpbiBvdXIgYmFzZSBjb25maWcgZmlsZXMuIEl0J3MgdXN1YWxseSB0aGUgc2ltcGxlIHRoaW5ncyB0aGF0IHRyaXAgdXMgdXAuXG5cbk5vdywgd2hhdCB3YXMgdGhhdCBvdGhlciBtb2R1bGUgdGhlIGJ1aWxkIHdhcyBncnVtYmxpbmcgYWJvdXQ/IE9oIHllYWgsIGBjYWNoZXN0YXRgLiBEb2VzIGBjYWNoZXN0YXRgIHJlbHkgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSSBzaG91bGQgcXVpY2tseSBzY2FuIHRoZSBLY29uZmlnIHRvIHNlZSBpZiB0aGVyZSdzIGEgcmVsZXZhbnQgb3B0aW9uIEkndmUgb3Zlcmxvb2tlZCwgYmVjYXVzZSBJIGFtIGZhaXJseSBjZXJ0YWluIEkgaGF2ZSBuZXZlciBkZWFsdCB3aXRoIGl0IGJlZm9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwNTgsIk91dHB1dFRva2VucyI6MTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODoxNC4yNzg1NjU1MjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTY0NDM0MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FjaGVzdGF0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTU3MTM9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6NTcxNDpGOlxcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jXFxuTUFJTlRBSU5FUlMtNTcxNS1cXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ5Mi01NjBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19uaV9zeXNjYWxsXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDkzOjU2MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTQtNTYyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDY3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6NDY4OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00NjktNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00NjQtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQ2NTo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00NjYtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTItNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1Mzo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTQtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1OTo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjAtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzkxLTQ1MFxcdG4zMlxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzkyOjQ1MVxcdG4zMlxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zOTMtNDUyXFx0bjMyXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzY3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzY4OjQ1MVxcdG42NFxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjktNDUyXFx0bjY0XFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDQwLTQ1MFxcdG8zMlxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6NDQxOjQ1MVxcdG8zMlxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NDItNDUyXFx0bzMyXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1MS00NTBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTI6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NDMtNDUwIFxcdG5vc3B1XFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU0NDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NDUtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzktNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODEtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU2LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU3OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTgtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk4LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDU4LTQ1MFxcdGkzODZcXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ1OTo0NTFcXHRpMzg2XFx0Y2FjaGVzdGF0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ2MC00NTJcXHRpMzg2XFx0ZmNobW9kYXQyXFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzc4OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdHN5c19jYWNoZXN0YXRcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zNzktNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyMy00NTBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MjUtNDUyXFx0Y29tbW9uXFx0ZmNobW9kYXQyXFx0XFx0XFx0c3lzX2ZjaG1vZGF0Mlxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTc0PWVudW0gbGFuZGxvY2tfcnVsZV90eXBlO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo3NTpzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo3NjpzdHJ1Y3QgY2FjaGVzdGF0O1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC03Ny1zdHJ1Y3Qgc3RhdG1vdW50O1xcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTk5NT1hc21saW5rYWdlIGxvbmcgc3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTk5Ny1cXHRcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBmbGFncyk7XFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjk5ODphc21saW5rYWdlIGxvbmcgc3lzX2NhY2hlc3RhdCh1bnNpZ25lZCBpbnQgZmQsXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjk5OTpcXHRcXHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIF9fdXNlciAqY3N0YXRfcmFuZ2UsXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjEwMDA6XFx0XFx0c3RydWN0IGNhY2hlc3RhdCBfX3VzZXIgKmNzdGF0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0xMDAxLWFzbWxpbmthZ2UgbG9uZyBzeXNfbWFwX3NoYWRvd19zdGFjayh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD04MTQ9X19TWVNDQUxMKF9fTlJfc2V0X21lbXBvbGljeV9ob21lX25vZGUsIHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZSlcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE1OiNkZWZpbmUgX19OUl9jYWNoZXN0YXQgNDUxXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjgxNjpfX1NZU0NBTEwoX19OUl9jYWNoZXN0YXQsIHN5c19jYWNoZXN0YXQpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTgxNy0jZGVmaW5lIF9fTlJfZmNobW9kYXQyIDQ1Mlxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC00NS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjQ2OnN0cnVjdCBjYWNoZXN0YXRfcmFuZ2Uge1xcbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDctXFx0X191NjQgb2ZmO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC01MC1cXG5pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjUxOnN0cnVjdCBjYWNoZXN0YXQge1xcbmluY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNTItXFx0X191NjQgbnJfY2FjaGU7XFxuLS1cXG5pbml0L0tjb25maWc9MjA0MT1jb25maWcgQ0FDSEVTVEFUX1NZU0NBTExcXG5pbml0L0tjb25maWc6MjA0MjpcXHRib29sIFxcXCJFbmFibGUgY2FjaGVzdGF0KCkgc3lzdGVtIGNhbGxcXFwiIGlmIEVYUEVSVFxcbmluaXQvS2NvbmZpZy0yMDQzLVxcdGRlZmF1bHQgeVxcbmluaXQvS2NvbmZpZy0yMDQ0LVxcdGhlbHBcXG5pbml0L0tjb25maWc6MjA0NTpcXHQgIEVuYWJsZSB0aGUgY2FjaGVzdGF0IHN5c3RlbSBjYWxsLCB3aGljaCBxdWVyaWVzIHRoZSBwYWdlIGNhY2hlXFxuaW5pdC9LY29uZmlnLTIwNDYtXFx0ICBzdGF0aXN0aWNzIG9mIGEgZmlsZSAobnVtYmVyIG9mIGNhY2hlZCBwYWdlcywgZGlydHkgcGFnZXMsXFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MTk1PUNPTkRfU1lTQ0FMTChzZXRfbWVtcG9saWN5X2hvbWVfbm9kZSk7XFxua2VybmVsL3N5c19uaS5jOjE5NjpDT05EX1NZU0NBTEwoY2FjaGVzdGF0KTtcXG5rZXJuZWwvc3lzX25pLmMtMTk3LUNPTkRfU1lTQ0FMTChtc2VhbCk7XFxuLS1cXG5tbS9maWxlbWFwLmM9NDU4Nz1FWFBPUlRfU1lNQk9MX0dQTChmaWxlbWFwX2ludmFsaWRhdGVfaW5vZGUpO1xcbi0tXFxubW0vZmlsZW1hcC5jLTQ1OTAtLyoqXFxubW0vZmlsZW1hcC5jOjQ1OTE6ICogZmlsZW1hcF9jYWNoZXN0YXQoKSAtIGNvbXB1dGUgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIG1hcHBpbmdcXG5tbS9maWxlbWFwLmMtNDU5Mi0gKiBAbWFwcGluZzpcXHRUaGUgbWFwcGluZyB0byBjb21wdXRlIHRoZSBzdGF0aXN0aWNzIGZvci5cXG4tLVxcbm1tL2ZpbGVtYXAuYy00NTk0LSAqIEBsYXN0X2luZGV4OlxcdFRoZSBmaW5hbCBwYWdlIGluZGV4IChpbmNsdXNpdmUpLlxcbm1tL2ZpbGVtYXAuYzo0NTk1OiAqIEBjczpcXHR0aGUgY2FjaGVzdGF0IHN0cnVjdCB0byB3cml0ZSB0aGUgcmVzdWx0IHRvLlxcbm1tL2ZpbGVtYXAuYy00NTk2LSAqXFxuLS1cXG5tbS9maWxlbWFwLmMtNDYwMS0gKi9cXG5tbS9maWxlbWFwLmM6NDYwMjpzdGF0aWMgdm9pZCBmaWxlbWFwX2NhY2hlc3RhdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG5tbS9maWxlbWFwLmM6NDYwMzpcXHRcXHRwZ29mZl90IGZpcnN0X2luZGV4LCBwZ29mZl90IGxhc3RfaW5kZXgsIHN0cnVjdCBjYWNoZXN0YXQgKmNzKVxcbm1tL2ZpbGVtYXAuYy00NjA0LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzAyLSAqL1xcbm1tL2ZpbGVtYXAuYzo0NzAzOnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbm1tL2ZpbGVtYXAuYy00NzA0LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzEyLS8qXFxubW0vZmlsZW1hcC5jOjQ3MTM6ICogVGhlIGNhY2hlc3RhdCgyKSBzeXN0ZW0gY2FsbC5cXG5tbS9maWxlbWFwLmMtNDcxNC0gKlxcbm1tL2ZpbGVtYXAuYzo0NzE1OiAqIGNhY2hlc3RhdCgpIHJldHVybnMgdGhlIHBhZ2UgY2FjaGUgc3RhdGlzdGljcyBvZiBhIGZpbGUgaW4gdGhlXFxubW0vZmlsZW1hcC5jLTQ3MTYtICogYnl0ZXMgcmFuZ2Ugc3BlY2lmaWVkIGJ5IGBvZmZgIGFuZCBgbGVuYDogbnVtYmVyIG9mIGNhY2hlZCBwYWdlcyxcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzM0LSAqXFxubW0vZmlsZW1hcC5jOjQ3MzU6ICogQmVjYXVzZSB0aGUgc3RhdHVzIG9mIGEgcGFnZSBjYW4gY2hhbmdlIGFmdGVyIGNhY2hlc3RhdCgpIGNoZWNrcyBpdFxcbm1tL2ZpbGVtYXAuYy00NzM2LSAqIGJ1dCBiZWZvcmUgaXQgcmV0dXJucyB0byB0aGUgYXBwbGljYXRpb24sIHRoZSByZXR1cm5lZCB2YWx1ZXMgbWF5XFxuLS1cXG5tbS9maWxlbWFwLmMtNDc0NS0gKi9cXG5tbS9maWxlbWFwLmM6NDc0NjpTWVNDQUxMX0RFRklORTQoY2FjaGVzdGF0LCB1bnNpZ25lZCBpbnQsIGZkLFxcbm1tL2ZpbGVtYXAuYzo0NzQ3OlxcdFxcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgX191c2VyICosIGNzdGF0X3JhbmdlLFxcbm1tL2ZpbGVtYXAuYzo0NzQ4OlxcdFxcdHN0cnVjdCBjYWNoZXN0YXQgX191c2VyICosIGNzdGF0LCB1bnNpZ25lZCBpbnQsIGZsYWdzKVxcbm1tL2ZpbGVtYXAuYy00NzQ5LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzUxLVxcdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nO1xcbm1tL2ZpbGVtYXAuYzo0NzUyOlxcdHN0cnVjdCBjYWNoZXN0YXRfcmFuZ2UgY3NyO1xcbm1tL2ZpbGVtYXAuYzo0NzUzOlxcdHN0cnVjdCBjYWNoZXN0YXQgY3M7XFxubW0vZmlsZW1hcC5jLTQ3NTQtXFx0cGdvZmZfdCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleDtcXG4tLVxcbm1tL2ZpbGVtYXAuYy00NzU5LVxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Y3NyLCBjc3RhdF9yYW5nZSxcXG5tbS9maWxlbWFwLmM6NDc2MDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGNhY2hlc3RhdF9yYW5nZSkpKVxcbm1tL2ZpbGVtYXAuYy00NzYxLVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxubW0vZmlsZW1hcC5jLTQ3NjYtXFxubW0vZmlsZW1hcC5jOjQ3Njc6XFx0aWYgKCFjYW5fZG9fY2FjaGVzdGF0KGZkX2ZpbGUoZikpKVxcbm1tL2ZpbGVtYXAuYy00NzY4LVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5tbS9maWxlbWFwLmMtNDc3NS1cXHRcXHRjc3IubGVuID09IDAgPyBVTE9OR19NQVggOiAoY3NyLm9mZiArIGNzci5sZW4gLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbm1tL2ZpbGVtYXAuYzo0Nzc2OlxcdG1lbXNldChcXHUwMDI2Y3MsIDAsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSk7XFxubW0vZmlsZW1hcC5jLTQ3NzctXFx0bWFwcGluZyA9IGZkX2ZpbGUoZiktXFx1MDAzZWZfbWFwcGluZztcXG5tbS9maWxlbWFwLmM6NDc3ODpcXHRmaWxlbWFwX2NhY2hlc3RhdChtYXBwaW5nLCBmaXJzdF9pbmRleCwgbGFzdF9pbmRleCwgXFx1MDAyNmNzKTtcXG5tbS9maWxlbWFwLmMtNDc3OS1cXG5tbS9maWxlbWFwLmM6NDc4MDpcXHRpZiAoY29weV90b191c2VyKGNzdGF0LCBcXHUwMDI2Y3MsIHNpemVvZihzdHJ1Y3QgY2FjaGVzdGF0KSkpXFxubW0vZmlsZW1hcC5jLTQ3ODEtXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuLS1cXG5tbS93b3JraW5nc2V0LmM9NDMwPWJvb2wgd29ya2luZ3NldF90ZXN0X3JlY2VudCh2b2lkICpzaGFkb3csIGJvb2wgZmlsZSwgYm9vbCAqd29ya2luZ3NldCxcXG4tLVxcbm1tL3dvcmtpbmdzZXQuYy00ODItXFx0ICogTm90ZSB0aGF0IHdvcmtpbmdzZXRfdGVzdF9yZWNlbnQoKSBpdHNlbGYgbWlnaHQgYmUgY2FsbGVkIGluIFJDVSByZWFkXFxubW0vd29ya2luZ3NldC5jOjQ4MzpcXHQgKiBzZWN0aW9uIChmb3IgZS5nLCBpbiBjYWNoZXN0YXQpIC0gdGhlc2UgY2FsbGVycyBuZWVkIHRvIHNraXAgZmx1c2hpbmdcXG5tbS93b3JraW5nc2V0LmMtNDg0LVxcdCAqIHN0YXRzICh2aWEgdGhlIGZsdXNoIGFyZ3VtZW50KS5cXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzkzLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxuc2NyaXB0cy9zeXNjYWxsLnRibDozOTQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzk1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD04MTQ9X19TWVNDQUxMKF9fTlJfc2V0X21lbXBvbGljeV9ob21lX25vZGUsIHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZSlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODE1OiNkZWZpbmUgX19OUl9jYWNoZXN0YXQgNDUxXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjgxNjpfX1NZU0NBTEwoX19OUl9jYWNoZXN0YXQsIHN5c19jYWNoZXN0YXQpXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTgxNy0jZGVmaW5lIF9fTlJfZmNobW9kYXQyIDQ1Mlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC00NS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjQ2OnN0cnVjdCBjYWNoZXN0YXRfcmFuZ2Uge1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNDctXFx0X191NjQgb2ZmO1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L21tYW4uaC01MC1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvbW1hbi5oOjUxOnN0cnVjdCBjYWNoZXN0YXQge1xcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9tbWFuLmgtNTItXFx0X191NjQgbnJfY2FjaGU7XFxuLS1cXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDkyLTU2MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX25pX3N5c2NhbGxcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDkzOjU2MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk0LTU2MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0Njg6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY5LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjQtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDY1OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDY2LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zNjctNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzY4OjQ1MVxcdG42NFxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzY5LTQ1MlxcdG42NFxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUxLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTI6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUzLTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTU0My00NTAgXFx0bm9zcHVcXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjU0NDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTQ1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OS00NTBcXHRjb21tb25cXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MDo0NTFcXHRjb21tb25cXHRjYWNoZXN0YXRcXHRcXHRcXHRzeXNfY2FjaGVzdGF0XFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgxLTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTYtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU3OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU4LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDUwXFx0Y29tbW9uXFx0c2V0X21lbXBvbGljeV9ob21lX25vZGVcXHRcXHRzeXNfc2V0X21lbXBvbGljeV9ob21lX25vZGVcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQ1MVxcdGNvbW1vblxcdGNhY2hlc3RhdFxcdFxcdFxcdHN5c19jYWNoZXN0YXRcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTAwLTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDU4LTQ1MFxcdGkzODZcXHRzZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcdFxcdHN5c19zZXRfbWVtcG9saWN5X2hvbWVfbm9kZVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDU5OjQ1MVxcdGkzODZcXHRjYWNoZXN0YXRcXHRcXHRzeXNfY2FjaGVzdGF0XFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NjAtNDUyXFx0aTM4NlxcdGZjaG1vZGF0MlxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc3LTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozNzg6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzc5LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIzLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzkzLTQ1MFxcdGNvbW1vblxcdHNldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFx0XFx0c3lzX3NldF9tZW1wb2xpY3lfaG9tZV9ub2RlXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDozOTQ6NDUxXFx0Y29tbW9uXFx0Y2FjaGVzdGF0XFx0XFx0XFx0c3lzX2NhY2hlc3RhdFxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzk1LTQ1MlxcdGNvbW1vblxcdGZjaG1vZGF0MlxcdFxcdFxcdHN5c19mY2htb2RhdDJcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlPTc9VEFSR0VUUyArPSBicmVha3BvaW50c1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlOjg6VEFSR0VUUyArPSBjYWNoZXN0YXRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9NYWtlZmlsZS05LVRBUkdFVFMgKz0gY2FwYWJpbGl0aWVzXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC8uZ2l0aWdub3JlOjI6dGVzdF9jYWNoZXN0YXRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvLmdpdGlnbm9yZS0zLXRtcHNobWNzdGF0XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L01ha2VmaWxlOjI6VEVTVF9HRU5fUFJPR1MgOj0gdGVzdF9jYWNoZXN0YXRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvTWFrZWZpbGUtMy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGV2X2ZpbGVzW10gPSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yNy1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyODp2b2lkIHByaW50X2NhY2hlc3RhdChzdHJ1Y3QgY2FjaGVzdGF0ICpjcylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yOS17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzAtXFx0a3NmdF9wcmludF9tc2coXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzE6XFx0XFxcIlVzaW5nIGNhY2hlc3RhdDogQ2FjaGVkOiAlbGx1LCBEaXJ0eTogJWxsdSwgV3JpdGViYWNrOiAlbGx1LCBFdmljdGVkOiAlbGx1LCBSZWNlbnRseSBFdmljdGVkOiAlbGx1XFxcXG5cXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyLVxcdGNzLVxcdTAwM2Vucl9jYWNoZSwgY3MtXFx1MDAzZW5yX2RpcnR5LCBjcy1cXHUwMDNlbnJfd3JpdGViYWNrLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM9MTA2PXN0YXRpYyBib29sIGlzX29uX3RtcGZzKGludCBmZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTExNy0gKiBPcGVuL2NyZWF0ZSB0aGUgZmlsZSBhdCBmaWxlbmFtZSwgKG9wdGlvbmFsbHkpIHdyaXRlIHJhbmRvbSBkYXRhIHRvIGl0XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTE4OiAqIChleGFjdGx5IG51bV9wYWdlcyksIHRoZW4gdGVzdCB0aGUgY2FjaGVzdGF0IHN5c2NhbGwgb24gdGhpcyBmaWxlLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTExOS0gKlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTIyLSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEyMzpzdGF0aWMgaW50IHRlc3RfY2FjaGVzdGF0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBib29sIHdyaXRlX3JhbmRvbSwgYm9vbCBjcmVhdGUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMTI0LVxcdFxcdFxcdCAgYm9vbCB0ZXN0X2ZzeW5jLCB1bnNpZ25lZCBsb25nIG51bV9wYWdlcyxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTEzMC1cXHRsb25nIHN5c2NhbGxfcmV0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEzMTpcXHRzdHJ1Y3QgY2FjaGVzdGF0IGNzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjEzMjpcXHRzdHJ1Y3QgY2FjaGVzdGF0X3JhbmdlIGNzX3JhbmdlID0geyAwLCBmaWxlc2l6ZSB9O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTEzMy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE1MS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxNTI6XFx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXFx1MDAyNmNzX3JhbmdlLCBcXHUwMDI2Y3MsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE1My1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE2MS1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjE2MjpcXHRcXHRwcmludF9jYWNoZXN0YXQoXFx1MDAyNmNzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xNjMtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0xNzktXFx0XFx0fSBlbHNlIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoxODA6XFx0XFx0XFx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXFx1MDAyNmNzX3JhbmdlLCBcXHUwMDI2Y3MsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4MS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4NS1cXHRcXHRcXHRpZiAoIXN5c2NhbGxfcmV0KSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MTg2OlxcdFxcdFxcdFxcdHByaW50X2NhY2hlc3RhdChcXHUwMDI2Y3MpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTE4Ny1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTIwOT1jb25zdCBjaGFyICpmaWxlX3R5cGVfc3RyKGVudW0gZmlsZV90eXBlIHR5cGUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMjEtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MjIyOmJvb2wgcnVuX2NhY2hlc3RhdF90ZXN0KGVudW0gZmlsZV90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjIzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTIyNy1cXHRzaXplX3QgY29tcHV0ZV9sZW4gPSBQUyAqIDUxMjtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyMjg6XFx0c3RydWN0IGNhY2hlc3RhdF9yYW5nZSBjc19yYW5nZSA9IHsgUFMsIGNvbXB1dGVfbGVuIH07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjI5LVxcdGNoYXIgKmZpbGVuYW1lID0gXFxcInRtcHNobWNzdGF0XFxcIiwgKm1hcDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyMzA6XFx0c3RydWN0IGNhY2hlc3RhdCBjcztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yMzEtXFx0Ym9vbCByZXQgPSB0cnVlO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMjc1LVxcdH1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzoyNzY6XFx0c3lzY2FsbF9yZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCBmZCwgXFx1MDAyNmNzX3JhbmdlLCBcXHUwMDI2Y3MsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI3Ny1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTI4Mi1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjI4MzpcXHRcXHRwcmludF9jYWNoZXN0YXQoXFx1MDAyNmNzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0yODQtXFx0XFx0aWYgKGNzLm5yX2NhY2hlICsgY3MubnJfZXZpY3RlZCAhPSBudW1fcGFnZXMpIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jPTI5Nz1pbnQgbWFpbih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzAyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwMzpcXHRyZXQgPSBzeXNjYWxsKF9fTlJfY2FjaGVzdGF0LCAtMSwgTlVMTCwgTlVMTCwgMCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzA0LVxcdGlmIChyZXQgPT0gLTEgXFx1MDAyNlxcdTAwMjYgZXJybm8gPT0gRU5PU1lTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMwNTpcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiY2FjaGVzdGF0IHN5c2NhbGwgbm90IGF2YWlsYWJsZVxcXFxuXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzA2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzE5LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMyMDpcXHRcXHRpZiAodGVzdF9jYWNoZXN0YXQoZGV2X2ZpbGVuYW1lLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyMS1cXHRcXHRcXHQ0LCBPX1JET05MWSwgMDQwMCkgPT0gS1NGVF9QQVNTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMyMjpcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcImNhY2hlc3RhdCB3b3JrcyB3aXRoICVzXFxcXG5cXFwiLCBkZXZfZmlsZW5hbWUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyMy1cXHRcXHRlbHNlIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjQ6XFx0XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFxcXCJjYWNoZXN0YXQgZmFpbHMgd2l0aCAlc1xcXFxuXFxcIiwgZGV2X2ZpbGVuYW1lKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMjUtXFx0XFx0XFx0cmV0ID0gMTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMyOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMjk6XFx0aWYgKHRlc3RfY2FjaGVzdGF0KFxcXCJ0bXBmaWxlY2FjaGVzdGF0XFxcIiwgdHJ1ZSwgdHJ1ZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzAtXFx0XFx0ZmFsc2UsIDQsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2MDApID09IEtTRlRfUEFTUylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozMzE6XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFxcXCJjYWNoZXN0YXQgd29ya3Mgd2l0aCBhIG5vcm1hbCBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzItXFx0ZWxzZSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzMzOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggbm9ybWFsIGZpbGVcXFxcblxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTMzNC1cXHRcXHRyZXQgPSAxO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzM2LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjMzNzpcXHRzd2l0Y2ggKHRlc3RfY2FjaGVzdGF0KFxcXCJ0bXBmaWxlY2FjaGVzdGF0XFxcIiwgdHJ1ZSwgdHJ1ZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzgtXFx0XFx0dHJ1ZSwgNCwgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCkpIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zMzktXFx0Y2FzZSBLU0ZUX0ZBSUw6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzQwOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZzeW5jIGZhaWxzIHdpdGggbm9ybWFsIGZpbGVcXFxcblxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM0MS1cXHRcXHRyZXQgPSBLU0ZUX0ZBSUw7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDMtXFx0Y2FzZSBLU0ZUX1BBU1M6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzQ0OlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiY2FjaGVzdGF0IGZzeW5jIHdvcmtzIHdpdGggYSBub3JtYWwgZmlsZVxcXFxuXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmMtMzQ1LVxcdFxcdGJyZWFrO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM0Ni1cXHRjYXNlIEtTRlRfU0tJUDpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNDc6XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFxcXCJ0bXBmaWxlY2FjaGVzdGF0IGlzIG9uIHRtcGZzXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNDgtXFx0XFx0YnJlYWs7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzUxOlxcdGlmIChydW5fY2FjaGVzdGF0X3Rlc3QoRklMRV9TSE1FTSkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzUyOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiY2FjaGVzdGF0IHdvcmtzIHdpdGggYSBzaG1lbSBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNTMtXFx0ZWxzZSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzU0OlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYSBzaG1lbSBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNTUtXFx0XFx0cmV0ID0gMTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM1Ny1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYzozNTg6XFx0aWYgKHJ1bl9jYWNoZXN0YXRfdGVzdChGSUxFX01NQVApKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jOjM1OTpcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcImNhY2hlc3RhdCB3b3JrcyB3aXRoIGEgbW1hcCBmaWxlXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVzdF9jYWNoZXN0YXQuYy0zNjAtXFx0ZWxzZSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2FjaGVzdGF0L3Rlc3RfY2FjaGVzdGF0LmM6MzYxOlxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXFwiY2FjaGVzdGF0IGZhaWxzIHdpdGggYSBtbWFwIGZpbGVcXFxcblxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NhY2hlc3RhdC90ZXN0X2NhY2hlc3RhdC5jLTM2Mi1cXHRcXHRyZXQgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODoxNi4xOTUwMTQxMDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5MDAxMzkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhY2hlc3RhdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMYCBwb3BzIG91dC4gVGhhdCdzIHRoZSBjb25maWcgZm9yIGBjYWNoZXN0YXRgLCByaWdodD8gTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdC4gSSdsbCBjaGVjayBgaW5pdC9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgYENBQ0hFU1RBVF9TWVNDQUxMYCBpcyB0aGVyZS4gQWgsIHllcywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIGJlIGV4cGxpY2l0LiBHb29kIHRvIGluY2x1ZGUgaXQgaW4gdGhlIG1lbnRhbCBjaGVja2xpc3QuXG5cbldhaXQsIGEgYml0IGZ1cnRoZXIgZG93biwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBjYW5fZG9fY2FjaGVzdGF0YCB3aXRoaW4gYG1tL2ZpbGVtYXAuY2AuIFRoYXQgdGVsbHMgbWUgdGhlIGBzeXNfY2FjaGVzdGF0YCBzeXN0ZW0gY2FsbCBpcyBwcm9iYWJseSB0aGUga2V5IGZvY3VzIHBvaW50IGhlcmUuIEkgc2hvdWxkIGFkZCBgc3lzX2NhY2hlc3RhdGAgdG8gbXkgbGlzdCBvZiBGb2N1c1N5bWJvbHMuIEknbGwgbWFrZSBhIG5vdGUgZm9yIGZ1dHVyZSBhbmFseXNpcy5cblxuSG1tLCBhIGNoYW5nZSBoZXJlLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyByZXBsYWNpbmcgYGlub2RlX293bmVyX29yX2NhcGFibGUoZmlsZV9tbnRfaWRtYXAoZiksIGZpbGVfaW5vZGUoZikpYCB3aXRoIGBmaWxlX293bmVyX29yX2NhcGFibGUoZilgIGluIGBtbS9maWxlbWFwLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBJIGRvbid0IHNlZSBhbnkgb2J2aW91cyBmdW5jdGlvbmFsIGNoYW5nZSBhdCBmaXJzdCBnbGFuY2UuIEl0IGxvb2tzIGxpa2UgYSBzaW1wbGUgcmVmYWN0b3JpbmcgYmVjYXVzZSBgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGYpYCBzZWVtcyB0byBiZSAqZGVmaW5lZCogYXMgZXhhY3RseSBgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShmaWxlX21udF9pZG1hcChmKSwgZmlsZV9pbm9kZShmKSlgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gaW4gYGluY2x1ZGUvbGludXgvZnMuaGAgYmVmb3JlIEkgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NjgsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMTU6NTg6MjIuMDg1MDMwMDZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDgxNTUzODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmlsZV9vd25lcl9vcl9jYXBhYmxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZnMuaD0yNDQyPXN0YXRpYyBpbmxpbmUgc3RydWN0IG1udF9pZG1hcCAqZmlsZV9tbnRfaWRtYXAoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZzLmgtMjQ0Ni1cXG5pbmNsdWRlL2xpbnV4L2ZzLmg6MjQ0NzpzdGF0aWMgaW5saW5lIGJvb2wgZmlsZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKVxcbmluY2x1ZGUvbGludXgvZnMuaC0yNDQ4LXtcXG4tLVxcbm1tL2ZpbGVtYXAuYz00NzAzPXN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fY2FjaGVzdGF0KHN0cnVjdCBmaWxlICpmKVxcbi0tXFxubW0vZmlsZW1hcC5jLTQ3MDYtXFx0XFx0cmV0dXJuIHRydWU7XFxubW0vZmlsZW1hcC5jOjQ3MDc6XFx0aWYgKGZpbGVfb3duZXJfb3JfY2FwYWJsZShmKSlcXG5tbS9maWxlbWFwLmMtNDcwOC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm1tL21hZHZpc2UuYz0zMjk9c3RhdGljIGlubGluZSBib29sIGNhbl9kb19maWxlX3BhZ2VvdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9tYWR2aXNlLmMtMzM4LVxcdCAqL1xcbm1tL21hZHZpc2UuYzozMzk6XFx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXFx1MDAzZXZtX2ZpbGUpIHx8XFxubW0vbWFkdmlzZS5jLTM0MC1cXHQgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS1cXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xcbi0tXFxubW0vbWluY29yZS5jPTIxOD1zdGF0aWMgaW5saW5lIGJvb2wgY2FuX2RvX21pbmNvcmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9taW5jb3JlLmMtMjI5LVxcdCAqL1xcbm1tL21pbmNvcmUuYzoyMzA6XFx0cmV0dXJuIGZpbGVfb3duZXJfb3JfY2FwYWJsZSh2bWEtXFx1MDAzZXZtX2ZpbGUpIHx8XFxubW0vbWluY29yZS5jLTIzMS1cXHQgICAgICAgZmlsZV9wZXJtaXNzaW9uKHZtYS1cXHUwMDNldm1fZmlsZSwgTUFZX1dSSVRFKSA9PSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODoyMy45MzMxOTIxMTZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyOTU2NDM3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB0aGUgY29kZSBkaWZmLCBpdCBsb29rcyBsaWtlIGEgcmVmYWN0b3JpbmcgaW4gYG1tL2ZpbGVtYXAuY2AsIGJ1dCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGBtbS9tYWR2aXNlLmNgIGFuZCBgbW0vbWluY29yZS5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGNvcnJlY3RpbmcgdGhlIGhhbmRsaW5nIG9mIGlkbWFwcGVkIG1vdW50cy4gVGhleSdyZSByZXBsYWNpbmcgdGhlIHVzZSBvZiBgXHUwMDI2bm9wX21udF9pZG1hcGAgd2l0aCB0aGUgY29ycmVjdCBgZmlsZV9tbnRfaWRtYXAodm1hLVx1MDAzZXZtX2ZpbGUpYC4gVGhpcyBtZWFucyBgc3lzX2NhY2hlc3RhdGAgKmlzbid0KiBmdW5jdGlvbmFsbHkgYWx0ZXJlZCwgYnV0IGBkb19taW5jb3JlYCBhbmQgYG1hZHZpc2VfcGFnZW91dGAgKmFyZSouXG5cblNvLCBteSBmb2N1cyBzeW1ib2xzIG5lZWQgdG8gcmVmbGVjdCB0aGVzZSBmdW5jdGlvbmFsIGNoYW5nZXMuIEknbGwgbmVlZCB0byBpbmNsdWRlIGBkb19taW5jb3JlYCBhbmQgYG1hZHZpc2VfcGFnZW91dGAuIFdhaXQsIGlzbid0IGBtYWR2aXNlX3BhZ2VvdXRgIHN0YXRpYz8gWWVzLCBidXQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBgc3lzX21hZHZpc2VgLCBzbyB0aGF0J3MgZmluZS4gU2ltaWxhcmx5LCBgZG9fbWluY29yZWAgaXMgc3RhdGljIGJ1dCByZWFjaGFibGUgdGhyb3VnaCBgc3lzX21pbmNvcmVgLiBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgYXMgaXQncyBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgZml4LlxuXG5UaGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGhlcmUgaXMgYEFEVklTRV9TWVNDQUxMU2AuIGBDT05GSUdfVVNFUl9OU2AgYW5kIGBDT05GSUdfTVVMVElVU0VSYCBhcmUgbGlrZWx5IHByZXJlcXVpc2l0ZXMsIGJ1dCB0aGV5J3JlIGZhaXJseSBzdGFuZGFyZCBhbmQgY2FuIGJlIGFzc3VtZWQuIEknbGwgc3RpY2sgd2l0aCBqdXN0IGVuYWJsaW5nIGBBRFZJU0VfU1lTQ0FMTFNgLlxuXG5Pa2F5LCBzdW1tYXJpemluZyBteSBmaW5kaW5nczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byBpZG1hcHBlZCBtb3VudHMsIHNvIGl0J3MgY3JpdGljYWwgdG8gZnV6ei5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggY29ycmVjdHMgdGhlIGhhbmRsaW5nIG9mIGlkbWFwcGVkIG1vdW50cyBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYSBwbGFjZWhvbGRlciBpZG1hcCB3aXRoIHRoZSBjb3JyZWN0IG1vdW50J3MgaWRtYXAsIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBkb19taW5jb3JlYCwgYG1hZHZpc2VfcGFnZW91dGAsIGBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VgXG4qICAgKipFbmFibGVDb25maWdzOioqIGBBRFZJU0VfU1lTQ0FMTFNgXG5cbkkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTUFEVl9DT0xEYCBhY3R1YWxseSB1c2VzIGBjYW5fZG9fZmlsZV9wYWdlb3V0YC4gQWgsIGluIGBtbS9tYWR2aXNlLmNgLCB0aGVyZSdzIGEgY2hlY2sgYHBhZ2VvdXRfYW5vbl9vbmx5X2ZpbHRlciA9IHBhZ2VvdXQgXHUwMDI2XHUwMDI2ICF2bWFfaXNfYW5vbnltb3VzKHZtYSkgXHUwMDI2XHUwMDI2ICFjYW5fZG9fZmlsZV9wYWdlb3V0KHZtYSk7YCwgc28gaXQgZG9lcyEgVGhhdCBjb25maXJtcyBteSBjaG9pY2Ugb2YgZm9jdXMgc3ltYm9scy4gYG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZWAgaXMgZGVmaW5pdGVseSByZWxldmFudC4gVGhpcyBpcyBnb29kLiBJIHRoaW5rIEknbSBkb25lIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTAyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjM1LjIyODgzOTEyOVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI5OTM5NTY0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkb19taW5jb3JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21pbmNvcmUuYz0xNjM9c3RhdGljIGludCBtaW5jb3JlX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vbWluY29yZS5jLTIxNy1cXG5tbS9taW5jb3JlLmM6MjE4OnN0YXRpYyBpbmxpbmUgYm9vbCBjYW5fZG9fbWluY29yZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5tbS9taW5jb3JlLmMtMjE5LXtcXG4tLVxcbm1tL21pbmNvcmUuYz0yMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBtaW5jb3JlX3dhbGtfb3BzID0ge1xcbi0tXFxubW0vbWluY29yZS5jLTI0NS0gKi9cXG5tbS9taW5jb3JlLmM6MjQ2OnN0YXRpYyBsb25nIGRvX21pbmNvcmUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCB1bnNpZ25lZCBjaGFyICp2ZWMpXFxubW0vbWluY29yZS5jLTI0Ny17XFxuLS1cXG5tbS9taW5jb3JlLmMtMjU1LVxcdGVuZCA9IG1pbih2bWEtXFx1MDAzZXZtX2VuZCwgYWRkciArIChwYWdlcyBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUKSk7XFxubW0vbWluY29yZS5jOjI1NjpcXHRpZiAoIWNhbl9kb19taW5jb3JlKHZtYSkpIHtcXG5tbS9taW5jb3JlLmMtMjU3LVxcdFxcdHVuc2lnbmVkIGxvbmcgcGFnZXMgPSBESVZfUk9VTkRfVVAoZW5kIC0gYWRkciwgUEFHRV9TSVpFKTtcXG4tLVxcbm1tL21pbmNvcmUuYz0yOTE9U1lTQ0FMTF9ERUZJTkUzKG1pbmNvcmUsIHVuc2lnbmVkIGxvbmcsIHN0YXJ0LCBzaXplX3QsIGxlbixcXG4tLVxcbm1tL21pbmNvcmUuYy0zMjUtXFx0XFx0bW1hcF9yZWFkX2xvY2soY3VycmVudC1cXHUwMDNlbW0pO1xcbm1tL21pbmNvcmUuYzozMjY6XFx0XFx0cmV0dmFsID0gZG9fbWluY29yZShzdGFydCwgbWluKHBhZ2VzLCBQQUdFX1NJWkUpLCB0bXApO1xcbm1tL21pbmNvcmUuYy0zMjctXFx0XFx0bW1hcF9yZWFkX3VubG9jayhjdXJyZW50LVxcdTAwM2VtbSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDE1OjU4OjM4LjUyODI0NTQzMVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTM2MDU1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTXkgVGhpbmtpbmcgb24gYG1pbmNvcmVgIEltcGxlbWVudGF0aW9uIGFuZCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBkb19taW5jb3JlYC4uLiB0aGF0J3MgdGhlIG1haW4gZnVuY3Rpb24gdGhhdCBjYWxscyBgY2FuX2RvX21pbmNvcmVgLiBUaGF0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0LiBBbmQgdGhlIG90aGVyIEZvY3VzU3ltYm9scyBJJ20gY29uY2VybmVkIHdpdGggYXJlIGBtYWR2aXNlX3BhZ2VvdXRgIGFuZCBgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlYCwgd2hpY2ggYXJlIGxpa2VseSByZWxhdGVkIHRvIHBhZ2VvdXQgZnVuY3Rpb25hbGl0eS5cblxuTm93LCB0aGUgYEFEVklTRV9TWVNDQUxMU2AgRW5hYmxlQ29uZmlnIGlzIGNlcnRhaW5seSByZWxldmFudCBoZXJlLlxuXG5IbW0sIEkgcmVjYWxsIHRoZXJlIHdhc24ndCBhIGRlZGljYXRlZCBjb25maWcgc3BlY2lmaWNhbGx5IGZvciBgbWluY29yZWAgaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0IGdldHMgYnVpbHQgaW5kaXJlY3RseSwgYmFzZWQgb24gd2hldGhlciBgQ09ORklHX01NVWAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGltcGxpY2F0aW9ucy5cblxuQWxyaWdodCwgSSB0aGluayBJJ3ZlIGdvdCBhIHNvbGlkIGdyYXNwIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbnMsIGNvbmZpZ3VyYXRpb24sIGFuZCBkZXBlbmRlbmNpZXMuIEknbSByZWFkeSB0byBtb3ZlIG9uIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjUzLCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQxNTo1ODo0NC40NjQzMDUyM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MDUyNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBRFZJU0VfU1lTQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb19taW5jb3JlXCIsXG4gICAgXCJtYWR2aXNlX3BhZ2VvdXRcIixcbiAgICBcIm1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGlkbWFwcGVkIG1vdW50cyB3ZXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGluIGBtYWR2aXNlYCBhbmQgYG1pbmNvcmVgIGJ5IHJlcGxhY2luZyBgXFx1MDAyNm5vcF9tbnRfaWRtYXBgIHdpdGggdGhlIGFjdHVhbCBtb3VudCBpZG1hcCBvZiB0aGUgZmlsZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURWSVNFX1NZU0NBTExTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZG9fbWluY29yZVwiLFxuICAgIFwibWFkdmlzZV9wYWdlb3V0XCIsXG4gICAgXCJtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBpZG1hcHBlZCBtb3VudHMgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiBgbWFkdmlzZWAgYW5kIGBtaW5jb3JlYCBieSByZXBsYWNpbmcgYFxcdTAwMjZub3BfbW50X2lkbWFwYCB3aXRoIHRoZSBhY3R1YWwgbW91bnQgaWRtYXAgb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[1] Phase: Succeeded StartedAt: 2026-06-25 15:59:43 +0000 UTC FinishedAt: 2026-06-25 15:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 15:59:43 +0000 UTC FinishedAt: 2026-06-25 15:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2] Phase: Succeeded StartedAt: 2026-06-25 15:59:43 +0000 UTC FinishedAt: 2026-06-25 20:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 15:59:43 +0000 UTC FinishedAt: 2026-06-25 20:15:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 15:59:43 +0000 UTC FinishedAt: 2026-06-25 15:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 15:59:43 +0000 UTC FinishedAt: 2026-06-25 15:59:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzk828/series-workflowzk828-convert-artifact-3120678750/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 15:59:53 +0000 UTC FinishedAt: 2026-06-25 16:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 15:59:53 +0000 UTC FinishedAt: 2026-06-25 16:34:46 +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:*18842758-8b6c-433a-9812-e6c43d1b1e31,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-workflowzk828/series-workflowzk828-convert-artifact-3120678750/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": "3f5c3ece-b23a-481b-9593-420b3c71e8ee", "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-workflowzk828/series-workflowzk828-build-action-2407393348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-25 15:59:53 +0000 UTC FinishedAt: 2026-06-25 16:33:52 +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:*18842758-8b6c-433a-9812-e6c43d1b1e31,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-workflowzk828/series-workflowzk828-convert-artifact-3120678750/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": "3f5c3ece-b23a-481b-9593-420b3c71e8ee", "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-workflowzk828/series-workflowzk828-build-action-2407393348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 16:34:46 +0000 UTC FinishedAt: 2026-06-25 16:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 16:34:46 +0000 UTC FinishedAt: 2026-06-25 16:34:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 16:34:46 +0000 UTC FinishedAt: 2026-06-25 16:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 16:34:46 +0000 UTC FinishedAt: 2026-06-25 16:35:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzk828/series-workflowzk828-convert-artifact-3605623313/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 16:36:17 +0000 UTC FinishedAt: 2026-06-25 16:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 16:36:17 +0000 UTC FinishedAt: 2026-06-25 16:38:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3f5c3ece-b23a-481b-9593-420b3c71e8ee,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-workflowzk828/series-workflowzk828-build-action-2407393348/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-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 16:38:27 +0000 UTC FinishedAt: 2026-06-25 16:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 16:38:27 +0000 UTC FinishedAt: 2026-06-25 16:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 16:38:27 +0000 UTC FinishedAt: 2026-06-25 17:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 16:38:27 +0000 UTC FinishedAt: 2026-06-25 17:10:12 +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:*18842758-8b6c-433a-9812-e6c43d1b1e31,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-workflowzk828/series-workflowzk828-convert-artifact-3605623313/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": "614d2d40-b761-4ff6-84da-c204432a359d", "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-workflowzk828/series-workflowzk828-build-action-2365612509/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-25 16:38:27 +0000 UTC FinishedAt: 2026-06-25 17:10:02 +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:*18842758-8b6c-433a-9812-e6c43d1b1e31,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-workflowzk828/series-workflowzk828-convert-artifact-3605623313/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": "614d2d40-b761-4ff6-84da-c204432a359d", "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-workflowzk828/series-workflowzk828-build-action-2365612509/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 17:10:12 +0000 UTC FinishedAt: 2026-06-25 17:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 17:10:12 +0000 UTC FinishedAt: 2026-06-25 17:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 17:10:12 +0000 UTC FinishedAt: 2026-06-25 17:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 17:10:12 +0000 UTC FinishedAt: 2026-06-25 17:12:01 +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:*614d2d40-b761-4ff6-84da-c204432a359d,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-workflowzk828/series-workflowzk828-build-action-2365612509/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-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 20:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 20:15:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},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:*3f5c3ece-b23a-481b-9593-420b3c71e8ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*614d2d40-b761-4ff6-84da-c204432a359d,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-workflowzk828/series-workflowzk828-build-action-2407393348/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-workflowzk828/series-workflowzk828-build-action-2365612509/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 17:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 17:12:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},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-workflowzk828/series-workflowzk828-convert-artifact-2195851846/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 17:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 17:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 17:12:11 +0000 UTC FinishedAt: 2026-06-25 17:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-25 17:12:21 +0000 UTC FinishedAt: 2026-06-25 20:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzk828[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["do_mincore","madvise_pageout","madvise_cold_or_pageout_pte_range"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADVISE_SYSCALLS"],"series_id":"1636bf6c-e98c-4dc4-abac-a73dab6c9a05","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-25 17:12:21 +0000 UTC FinishedAt: 2026-06-25 20:15:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3f5c3ece-b23a-481b-9593-420b3c71e8ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*614d2d40-b761-4ff6-84da-c204432a359d,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-workflowzk828/series-workflowzk828-build-action-2407393348/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-workflowzk828/series-workflowzk828-build-action-2365612509/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-workflowzk828/series-workflowzk828-convert-artifact-2195851846/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,}