Name: series-workflowp7qjh Phase: Succeeded StartedAt: 2026-07-31 01:32:02 +0000 UTC FinishedAt: 2026-07-31 02:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[0] Phase: Succeeded StartedAt: 2026-07-31 01:32:02 +0000 UTC FinishedAt: 2026-07-31 01:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 01:32:02 +0000 UTC FinishedAt: 2026-07-31 01:34:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "66e2e68f-0639-4a32-a7f0-1cd42d5be106" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "build_insn", "jit_smod64", "emit_alu_r" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2J1aWxkX2luc24mIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyBpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIgdG8gc3VwcG9ydCBzaWduZWQgZGl2L21vZCBpbnN0cnVjdGlvbnMgYW5kIHVwZGF0ZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgdG8gdXNlIHRoZW0gd2hlbiB0cmFuc2xhdGluZyBCUEZfRElWIGFuZCBCUEZfTU9EIGluc3RydWN0aW9ucyB3aXRoIHRoZSBzaWduZWQgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIEpJVCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMzllZDRlZjMwZTQ5ZGQ0NzhkMDM0OTc5MTMxY2Y4MmU2MmNkMjY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6MzM6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbmluZGV4IGI0M2JmZDQ0NTI1MjEuLjlkM2VkYjU5ZWZjMDkgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG5AQCAtODUsMTUgJiM0Mzs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcbiBJcF91MnUxKF9jdGNtc2EpO1xuIElwX3UydTFzMyhfZGFkZGl1KTtcbiBJcF91M3UxdTIoX2RhZGR1KTtcbiYjNDM7SXBfdTF1MihfZGRpdik7XG4mIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7XG4gSXBfdTF1MihfZGRpdnUpO1xuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xuIElwX3UxKF9kaSk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zKTtcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcbiBJcF91MnUxbXNidTMoX2RpbnN1KTtcbiYjNDM7SXBfdTF1MihfZGl2KTtcbiYjNDM7SXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4mIzQzO0lwX3UzdTF1MihfZG1vZCk7XG4gSXBfdTN1MXUyKF9kbW9kdSk7XG4gSXBfdTF1MnUzKF9kbXRjMCk7XG4gSXBfdTF1MihfZG11bHR1KTtcbkBAIC0xMzUsNiAmIzQzOzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XG4gSXBfdTF1MnUzKF9tZmhjMCk7XG4gSXBfdTEoX21maGkpO1xuIElwX3UxKF9tZmxvKTtcbiYjNDM7SXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuaW5kZXggZTE1YzY3MDBjZDA4OC4uZWYxYTJiMDQwMDcwMCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5AQCAtNzUsNiAmIzQzOzc1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2N0Y21zYV1cdD0ge00obXNhX29wLCAwLCBtc2FfY3RjX29wLCAwLCAwLCBtc2FfZWxtX29wKSwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kYWRkaXVdXHQ9IHtNKGRhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NfSxcbiBcdFtpbnNuX2RhZGR1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkYWRkdV9vcCksIFJTIHwgUlQgfCBSRH0sXG4mIzQzO1x0W2luc25fZGRpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdl9vcCksIFJTIHwgUlR9LFxuJiM0MztcdFtpbnNuX2RkaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZGRpdjZfb3AsIGRkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RkaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG5AQCAtODIsMTAgJiM0Mzs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fZGluc11cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zbV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc3VdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiYjNDM7XHRbaW5zbl9kaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LFxuJiM0MztcdFtpbnNuX2Rpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtZmMwXVx0PSB7TShjb3AwX29wLCBkbWZjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG4mIzQzO1x0W2luc25fZG1vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kbW9kX29wLCBkZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG10YzBdXHQ9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbkBAIC0xNDAsNiAmIzQzOzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9tZmhjMF1cdD0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sXG4gXHRbaW5zbl9tZmhpXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LFxuIFx0W2luc25fbWZsb11cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSxcbiYjNDM7XHRbaW5zbl9tb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW92bl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbW92bl9vcCksIFJTIHwgUlQgfCBSRH0sXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uYyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbmluZGV4IDEyNTE0MDk3OWQ2MmMuLjA2ZDcyMjY2NTQ1MWYgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS5jXG5AQCAtNDksMTggJiM0Mzs0OSwyMCBAQCBlbnVtIG9wY29kZSB7XG4gXHRpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsXG4gXHRpbnNuX2JlcSwgaW5zbl9iZXFsLCBpbnNuX2JnZXosIGluc25fYmdlemwsIGluc25fYmd0eiwgaW5zbl9ibGV6LFxuIFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxuLVx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LFxuLVx0aW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLCBpbnNuX2RpbnN1LCBpbnNuX2RpdnUsXG4tXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxuJiM0MztcdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LFxuJiM0MztcdGluc25fZGRpdl9yNiwgaW5zbl9kZGl2dSwgaW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLFxuJiM0MztcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXG4mIzQzO1x0aW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiBcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcbiBcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXG4gXHRpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsXG4gXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxuIFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcbiBcdGluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLFxuLVx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4tXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcbi1cdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXG4mIzQzO1x0aW5zbl9tZmxvLCBpbnNuX21vZCwgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLFxuJiM0MztcdGluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LFxuJiM0MztcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXG4mIzQzO1x0aW5zbl9zYiwgaW5zbl9zYyxcbiBcdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuIFx0aW5zbl9zbGx2LCBpbnNuX3NsdCwgaW5zbl9zbHRpLCBpbnNuX3NsdGl1LCBpbnNuX3NsdHUsIGluc25fc3JhLFxuIFx0aW5zbl9zcmF2LCBpbnNuX3NybCwgaW5zbl9zcmx2LCBpbnNuX3N1YnUsIGluc25fc3csIGluc25fc3luYyxcbkBAIC0yODcsOSAmIzQzOzI4OSwxMiBAQCBJX3UxdTIoX2NmYzEpXG4gSV91MnUxKF9jZmNtc2EpXG4gSV91MXUyKF9jdGMxKVxuIElfdTJ1MShfY3RjbXNhKVxuJiM0MztJX3UxdTIoX2RkaXYpXG4mIzQzO0lfdTN1MXUyKF9kZGl2X3I2KVxuIElfdTF1MihfZGRpdnUpXG4gSV91M3UxdTIoX2RkaXZ1X3I2KVxuIElfdTF1MnUzKF9kbWZjMClcbiYjNDM7SV91M3UxdTIoX2Rtb2QpXG4gSV91M3UxdTIoX2Rtb2R1KVxuIElfdTF1MnUzKF9kbXRjMClcbiBJX3UxdTIoX2RtdWx0dSlcbkBAIC0yOTcsNiAmIzQzOzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4mIzQzO0lfdTF1MihfZGl2KVxuJiM0MztJX3UzdTF1MihfZGl2X3I2KVxuIElfdTF1MihfZGl2dSlcbiBJX3UzdTF1MihfZGl2dV9yNilcbiBJX3UydTEoX2RzYmgpO1xuQEAgLTMzMiw2ICYjNDM7MzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuJiM0MztJX3UzdTF1MihfbW9kKVxuIElfdTN1MXUyKF9tb2R1KVxuIElfdTN1MXUyKF9tb3ZuKVxuIElfdTN1MXUyKF9tb3Z6KVxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCA2ZWU0YWJlNmExZjcwLi5hNjc4ODVkMjg5NDJmIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYylcbiB9XG4gXG4gLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqL1xuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXG4mIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0Y2FzZSBCUEZfTkVHOlxuQEAgLTIzNyw2ICYjNDM7MjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiBcdFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XG4gXHRjYXNlIEJQRl9ESVY6XG4gXHRjYXNlIEJQRl9NT0Q6XG4mIzQzO1x0XHQvKiBEbyBub3QgdXNlIHVuc2lnbmVkIHNoaWZ0L21hc2sgcmV3cml0ZXMgZm9yIHNpZ25lZCBkaXYvbW9kLiAqL1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHQvKiBpbW0gbXVzdCBiZSBhbiAxNy1iaXQgcG93ZXIgb2YgdHdvICovXG4gXHRcdHJldHVybiAodTMyKWltbSBcdTAwM2M9IDB4MTAwMDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoKHUzMilpbW0pO1xuIFx0fVxuQEAgLTMzOCw4ICYjNDM7MzQxLDQwIEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICovXG5AQCAtMzg1LDIxICYjNDM7NDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuLVx0XHR9XG4mIzQzO1x0XHRlbWl0X2RpdihjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuLVx0XHR9XG4mIzQzO1x0XHRlbWl0X21vZChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxuaW5kZXggYTM3ZmUyMDgxOGViOS4uMzkyNjZkYWE2ZGE2ZCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbkBAIC0xNjMsNyAmIzQzOzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4mIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgJiM0MzsxNzIsOCBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7XG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuJiM0MztcdFx0Ym9vbCBpc19zaWduZWQpO1xuIFxuIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqL1xuIHZvaWQgZW1pdF9hdG9taWNfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYsIHU4IGNvZGUpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuaW5kZXggNDBhODc4YjY3MmY1ZC4uYzhkNDVhNWQ1NGQ4MyAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5AQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcbiB9XG4gXG4tLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovXG4mIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiB7XG4gXHR1NjQgcmVtO1xuQEAgLTUyMSw5ICYjNDM7NTIxLDE3IEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiBcdHJldHVybiByZW07XG4gfVxuIFxuJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovXG4mIzQzO3N0YXRpYyBzNjQgaml0X3Ntb2Q2NChzNjQgYSwgczY0IGIpXG4mIzQzO3tcbiYjNDM7XHR1NjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGEgLSBxdW90ICogYjtcbiYjNDM7fVxuJiM0MztcbiAvKiBBTFUgZGl2L21vZCByZWdpc3RlciAoNjQtYml0KSAqL1xuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbi1cdFx0XHQgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSxcbiYjNDM7XHRcdFx0ICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cbiBcdGNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovXG5AQCAtNTQ2LDExICYjNDM7NTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiYjNDM7XHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4mIzQzO1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XG5AQCAtMTQ2OSw2ICYjNDM7MTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHR1OCBjb2RlID0gaW5zbi1cdTAwM2Vjb2RlO1xuIFx0czE2IG9mZiA9IGluc24tXHUwMDNlb2ZmO1xuIFx0czMyIGltbSA9IGluc24tXHUwMDNlaW1tO1xuJiM0MztcdGJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7XG4gXHRzMzIgdmFsLCByZWw7XG4gXHR1OCBhbHUsIGptcDtcbiBcbkBAIC0xNTE2LDkgJiM0MzsxNTI1LDEwIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksXG4mIzQzO1x0XHRcdFx0ICAgaXNfc2lnbmVkKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtMTU0Niw3ICYjNDM7MTU1Niw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcbiBcdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXG5AQCAtMTU5OSw3ICYjNDM7MTYwOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cbiBcdFx0ICovXG4gXHRcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcbi1cdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICg2NC1iaXQpICovXG4gXHQvKiBkc3QgPSBkc3QgfCBzcmMgKDY0LWJpdCkgKi9cbkBAIC0xNjI5LDcgJiM0MzsxNjM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqL1xuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmNhMjc0MWYxNDQ4M2QgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE5Nyw4ICYjNDM7MTk3LDQzIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxuJiM0MztcdFx0ICAgICAgIGJvb2wgaXNfc2lnbmVkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxuJiM0MztcdFx0ICAgICAgIGJvb2wgaXNfc2lnbmVkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuJiM0MztzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcbiYjNDM7XHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzY1x1MDAzYyBzcmMgKi9cbkBAIC0yMzUsMjUgJiM0MzsyNzAsMTUgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbi1cdFx0fVxuJiM0MztcdFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4tXHRcdH1cbiYjNDM7XHRcdGVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBmYWxzZSk7XG4gXHR9XG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuQEAgLTY0MCw2ICYjNDM7NjY1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdHU4IGNvZGUgPSBpbnNuLVx1MDAzZWNvZGU7XG4gXHRzMTYgb2ZmID0gaW5zbi1cdTAwM2VvZmY7XG4gXHRzMzIgaW1tID0gaW5zbi1cdTAwM2VpbW07XG4mIzQzO1x0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcbiBcdHMzMiB2YWwsIHJlbDtcbiBcdHU4IGFsdSwgam1wO1xuIFxuQEAgLTY3NCw5ICYjNDM7NzAwLDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9BTkQgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGZhbHNlKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTY5NiwxMCAmIzQzOzcyMiwxMSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG4mIzQzO1x0XHRcdFx0ICAgaXNfc2lnbmVkKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpO1xuQEAgLTcxNCw3ICYjNDM7NzQxLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICYjNDM7NzYwLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC03NzAsOSAmIzQzOzc5NywxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG4mIzQzO1x0XHRcdFx0ICAgICBpc19zaWduZWQpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNzk5LDcgJiM0Mzs4MjcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xuIFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtidWlsZF9pbnNuJiMzNDssCiAgICAmIzM0O2ppdF9zbW9kNjQmIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIHRvIHN1cHBvcnQgc2lnbmVkIGRpdi9tb2QgaW5zdHJ1Y3Rpb25zIGFuZCB1cGRhdGVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSB0aGVtIHdoZW4gdHJhbnNsYXRpbmcgQlBGX0RJViBhbmQgQlBGX01PRCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgc2lnbmVkIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzM5ZWQ0ZWYzMGU0OWRkNDc4ZDAzNDk3OTEzMWNmODJlNjJjZDI2NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAxOjMzOjA5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmgKaW5kZXggYjQzYmZkNDQ1MjUyMS4uOWQzZWRiNTllZmMwOSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oCkBAIC04NSwxNSAmIzQzOzg1LDIwIEBAIElwX3UxdTIoX2N0YzEpOwogSXBfdTJ1MShfY3RjbXNhKTsKIElwX3UydTFzMyhfZGFkZGl1KTsKIElwX3UzdTF1MihfZGFkZHUpOwomIzQzO0lwX3UxdTIoX2RkaXYpOwomIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7CiBJcF91MXUyKF9kZGl2dSk7CiBJcF91M3UxdTIoX2RkaXZ1X3I2KTsKIElwX3UxKF9kaSk7CiBJcF91MnUxbXNidTMoX2RpbnMpOwogSXBfdTJ1MW1zYnUzKF9kaW5zbSk7CiBJcF91MnUxbXNidTMoX2RpbnN1KTsKJiM0MztJcF91MXUyKF9kaXYpOwomIzQzO0lwX3UzdTF1MihfZGl2X3I2KTsKIElwX3UxdTIoX2RpdnUpOwogSXBfdTN1MXUyKF9kaXZ1X3I2KTsKIElwX3UxdTJ1MyhfZG1mYzApOwomIzQzO0lwX3UzdTF1MihfZG1vZCk7CiBJcF91M3UxdTIoX2Rtb2R1KTsKIElwX3UxdTJ1MyhfZG10YzApOwogSXBfdTF1MihfZG11bHR1KTsKQEAgLTEzNSw2ICYjNDM7MTQwLDcgQEAgSXBfdTF1MnUzKF9tZmMwKTsKIElwX3UxdTJ1MyhfbWZoYzApOwogSXBfdTEoX21maGkpOwogSXBfdTEoX21mbG8pOwomIzQzO0lwX3UzdTF1MihfbW9kKTsKIElwX3UzdTF1MihfbW9kdSk7CiBJcF91M3UxdTIoX21vdm4pOwogSXBfdTN1MXUyKF9tb3Z6KTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYwppbmRleCBlMTVjNjcwMGNkMDg4Li5lZjFhMmIwNDAwNzAwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jCkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2N0Y21zYV0JPSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSwKIAlbaW5zbl9kYWRkaXVdCT0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LAogCVtpbnNuX2RhZGR1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSwKJiM0MzsJW2luc25fZGRpdl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sCiYjNDM7CVtpbnNuX2RkaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGRpdnVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSwKIAlbaW5zbl9kZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LApAQCAtODIsMTAgJiM0Mzs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2RpbnNdCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sCiAJW2luc25fZGluc21dCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LAogCVtpbnNuX2RpbnN1XQk9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSwKJiM0MzsJW2luc25fZGl2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LAomIzQzOwlbaW5zbl9kaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGl2dV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sCiAJW2luc25fZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2RtZmMwXQk9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSwKJiM0MzsJW2luc25fZG1vZF0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLAomIzQzOwkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2Rtb2R1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksCiAJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kbXRjMF0JPSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sCkBAIC0xNDAsNiAmIzQzOzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fbWZoYzBdCT0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sCiAJW2luc25fbWZoaV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LAogCVtpbnNuX21mbG9dCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSwKJiM0MzsJW2luc25fbW9kXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW9kdV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW92bl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IDEyNTE0MDk3OWQ2MmMuLjA2ZDcyMjY2NTQ1MWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uYwpAQCAtNDksMTggJiM0Mzs0OSwyMCBAQCBlbnVtIG9wY29kZSB7CiAJaW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLAogCWluc25fYmVxLCBpbnNuX2JlcWwsIGluc25fYmdleiwgaW5zbl9iZ2V6bCwgaW5zbl9iZ3R6LCBpbnNuX2JsZXosCiAJaW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLAotCWluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSwKLQlpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sIGluc25fZGluc3UsIGluc25fZGl2dSwKLQlpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LAomIzQzOwlpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdiwKJiM0MzsJaW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sCiYjNDM7CWluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsCiYjNDM7CWluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsCiAJaW5zbl9kbXVsdSwgaW5zbl9kcm90ciwgaW5zbl9kcm90cjMyLCBpbnNuX2RzYmgsIGluc25fZHNoZCwgaW5zbl9kc2xsLAogCWluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsCiAJaW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLAogCWluc25faiwgaW5zbl9qYWwsIGluc25famFsciwgaW5zbl9qciwgaW5zbl9sYiwgaW5zbl9sYnUsIGluc25fbGQsCiAJaW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCwKIAlpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSwKLQlpbnNuX21mbG8sIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCwKLQlpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vciwKLQlpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLAomIzQzOwlpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsCiYjNDM7CWluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LAomIzQzOwlpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLAomIzQzOwlpbnNuX3NiLCBpbnNuX3NjLAogCWluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLAogCWluc25fc2xsdiwgaW5zbl9zbHQsIGluc25fc2x0aSwgaW5zbl9zbHRpdSwgaW5zbl9zbHR1LCBpbnNuX3NyYSwKIAlpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLApAQCAtMjg3LDkgJiM0MzsyODksMTIgQEAgSV91MXUyKF9jZmMxKQogSV91MnUxKF9jZmNtc2EpCiBJX3UxdTIoX2N0YzEpCiBJX3UydTEoX2N0Y21zYSkKJiM0MztJX3UxdTIoX2RkaXYpCiYjNDM7SV91M3UxdTIoX2RkaXZfcjYpCiBJX3UxdTIoX2RkaXZ1KQogSV91M3UxdTIoX2RkaXZ1X3I2KQogSV91MXUydTMoX2RtZmMwKQomIzQzO0lfdTN1MXUyKF9kbW9kKQogSV91M3UxdTIoX2Rtb2R1KQogSV91MXUydTMoX2RtdGMwKQogSV91MXUyKF9kbXVsdHUpCkBAIC0yOTcsNiAmIzQzOzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSkKIElfdTJ1MXMzKF9kYWRkaXUpCiBJX3UzdTF1MihfZGFkZHUpCiBJX3UxKF9kaSk7CiYjNDM7SV91MXUyKF9kaXYpCiYjNDM7SV91M3UxdTIoX2Rpdl9yNikKIElfdTF1MihfZGl2dSkKIElfdTN1MXUyKF9kaXZ1X3I2KQogSV91MnUxKF9kc2JoKTsKQEAgLTMzMiw2ICYjNDM7MzM5LDcgQEAgSV91MnMzdTEoX2x3KQogSV91MnMzdTEoX2x3dSkKIElfdTF1MnUzKF9tZmMwKQogSV91MXUydTMoX21maGMwKQomIzQzO0lfdTN1MXUyKF9tb2QpCiBJX3UzdTF1MihfbW9kdSkKIElfdTN1MXUyKF9tb3ZuKQogSV91M3UxdTIoX21vdnopCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYwppbmRleCA2ZWU0YWJlNmExZjcwLi5hNjc4ODVkMjg5NDJmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYykKIH0KIAogLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAljYXNlIEJQRl9ORUc6CkBAIC0yMzcsNiAmIzQzOzIzNyw5IEBAIGJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pCiAJCXJldHVybiBpbW0gPT0gMCB8fCAoaW1tICZndDsgMCAmYW1wOyZhbXA7IGlzX3Bvd2VyX29mXzIoaW1tKSk7CiAJY2FzZSBCUEZfRElWOgogCWNhc2UgQlBGX01PRDoKJiM0MzsJCS8qIERvIG5vdCB1c2UgdW5zaWduZWQgc2hpZnQvbWFzayByZXdyaXRlcyBmb3Igc2lnbmVkIGRpdi9tb2QuICovCiYjNDM7CQlpZiAoaXNfc2lnbmVkKQomIzQzOwkJCXJldHVybiBmYWxzZTsKIAkJLyogaW1tIG11c3QgYmUgYW4gMTctYml0IHBvd2VyIG9mIHR3byAqLwogCQlyZXR1cm4gKHUzMilpbW0gJmx0Oz0gMHgxMDAwMCAmYW1wOyZhbXA7IGlzX3Bvd2VyX29mXzIoKHUzMilpbW0pOwogCX0KQEAgLTMzOCw4ICYjNDM7MzQxLDQwIEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCkKIAljbG9iYmVyX3JlZyhjdHgsIGRzdCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBlbWl0X2RpdihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKQomIzQzO3sKJiM0MzsJaWYgKGNwdV9oYXNfbWlwczMycjYpIHsKJiM0MzsJCWlmIChpc19zaWduZWQpCiYjNDM7CQkJZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQllbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzMzJyNikgewomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQllbWl0KGN0eCwgbW9kLCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKQomIzQzOwkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovCi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCkKJiM0Mzt2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpCiB7CiAJc3dpdGNoIChCUEZfT1Aob3ApKSB7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAqLwpAQCAtMzg1LDIxICYjNDM7NDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgLyBzcmMgKi8KIAljYXNlIEJQRl9ESVY6Ci0JCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7Ci0JCQllbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfZGl2KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczMycjYpIHsKLQkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7Ci0JCQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKLQkJfQomIzQzOwkJZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTsKIAkJYnJlYWs7CiAJfQogCWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oCmluZGV4IGEzN2ZlMjA4MThlYjkuLjM5MjY2ZGFhNmRhNmQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaApAQCAtMTYzLDcgJiM0MzsxNjMsNyBAQCB2b2lkIGVtaXRfbW92X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSk7CiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTsKIAogLyogVmFsaWRhdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7CiYjNDM7Ym9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgYm9vbCBpc19zaWduZWQpOwogCiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovCiBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTsKQEAgLTE3Miw3ICYjNDM7MTcyLDggQEAgYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7CiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApOwogCiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovCi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7CiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsCiYjNDM7CQlib29sIGlzX3NpZ25lZCk7CiAKIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqLwogdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKaW5kZXggNDBhODc4YjY3MmY1ZC4uYzhkNDVhNWQ1NGQ4MyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYwpAQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsCiAJY2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7CiB9CiAKLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqLwomIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqLwogc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKQogewogCXU2NCByZW07CkBAIC01MjEsOSAmIzQzOzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpCiAJcmV0dXJuIHJlbTsKIH0KIAomIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi8KJiM0MztzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKQomIzQzO3sKJiM0MzsJdTY0IHF1b3QgPSBkaXY2NF9zNjQoYSwgYik7CiYjNDM7CiYjNDM7CXJldHVybiBhIC0gcXVvdCAqIGI7CiYjNDM7fQomIzQzOwogLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwKLQkJCSAgICBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sCiYjNDM7CQkJICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpCiB7CiAJY29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi8KIAljb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqLwpAQCAtNTQ2LDExICYjNDM7NTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAkvKiBkc3QgPSBkc3QgLyBzcmMgKi8KIAljYXNlIEJQRl9ESVY6Ci0JCWFkZHIgPSAodTMyKSZhbXA7ZGl2NjRfdTY0OwomIzQzOwkJYWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpJmFtcDtkaXY2NF9zNjQgOiAodTMyKSZhbXA7ZGl2NjRfdTY0OwogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgJSBzcmMgKi8KIAljYXNlIEJQRl9NT0Q6Ci0JCWFkZHIgPSAodTMyKSZhbXA7aml0X21vZDY0OwomIzQzOwkJYWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpJmFtcDtqaXRfc21vZDY0IDogKHUzMikmYW1wO2ppdF9tb2Q2NDsKIAkJYnJlYWs7CiAJfQogCWVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDksIGFkZHIpOwpAQCAtMTQ2OSw2ICYjNDM7MTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJdTggY29kZSA9IGluc24tJmd0O2NvZGU7CiAJczE2IG9mZiA9IGluc24tJmd0O29mZjsKIAlzMzIgaW1tID0gaW5zbi0mZ3Q7aW1tOwomIzQzOwlib29sIGlzX3NpZ25lZCA9IG9mZiA9PSAxOwogCXMzMiB2YWwsIHJlbDsKIAl1OCBhbHUsIGptcDsKIApAQCAtMTUxNiw5ICYjNDM7MTUyNSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLAomIzQzOwkJCQkgICBpc19zaWduZWQpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7CiAJCX0KQEAgLTE1NDYsNyAmIzQzOzE1NTYsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KQEAgLTE1OTksNyAmIzQzOzE2MDksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCQkgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuCiAJCSAqLwogCQllbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7Ci0JCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAoNjQtYml0KSAqLwogCS8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqLwpAQCAtMTYyOSw3ICYjNDM7MTYzOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJLyogZHN0ID0gZHN0ICUgc3JjICg2NC1iaXQpICovCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaHRvbGUoZHN0KSAqLwogCS8qIGRzdCA9IGh0b2JlKGRzdCkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCBmYTdlOWFhMzdmNDk4Li5jYTI3NDFmMTQ0ODNkIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xOTcsOCAmIzQzOzE5Nyw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApCiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsCiYjNDM7CQkgICAgICAgYm9vbCBpc19zaWduZWQpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzNjRyNikgewomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQllbWl0KGN0eCwgZGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChpc19zaWduZWQpCiYjNDM7CQkJZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLAomIzQzOwkJICAgICAgIGJvb2wgaXNfc2lnbmVkKQomIzQzO3sKJiM0MzsJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCWlmIChpc19zaWduZWQpCiYjNDM7CQkJZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJZWxzZQomIzQzOwkJCWVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKQomIzQzOwkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7CiYjNDM7CQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLAomIzQzOwkJCSBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAkvKiBkc3QgPSBkc3QgJmx0OyZsdDsgc3JjICovCkBAIC0yMzUsMjUgJiM0MzsyNzAsMTUgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwotCQl9CiYjNDM7CQllbWl0X2RpdjY0KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwotCQl9CiYjNDM7CQllbWl0X21vZDY0KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqLwotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTsKIAl9CiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQpAQCAtNjQwLDYgJiM0Mzs2NjUsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCXU4IGNvZGUgPSBpbnNuLSZndDtjb2RlOwogCXMxNiBvZmYgPSBpbnNuLSZndDtvZmY7CiAJczMyIGltbSA9IGluc24tJmd0O2ltbTsKJiM0MzsJYm9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTsKIAlzMzIgdmFsLCByZWw7CiAJdTggYWx1LCBqbXA7CiAKQEAgLTY3NCw5ICYjNDM7NzAwLDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGZhbHNlKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTsKIAkJfQpAQCAtNjk2LDEwICYjNDM7NzIyLDExIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6Ci0JCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7CiYjNDM7CQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7CiAJCQllbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7CiAJCQllbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pOwotCQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLAomIzQzOwkJCQkgICBpc19zaWduZWQpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTsKIAkJCWVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTsKQEAgLTcxNCw3ICYjNDM7NzQxLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOgotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZndDsmZ3Q7IHNyYyAqLwpAQCAtNzMzLDcgJiM0Mzs3NjAsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDoKIAkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQllbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7Ci0JCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaW1tICg2NC1iaXQpICovCkBAIC03NzAsOSAmIzQzOzc5NywxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksCiYjNDM7CQkJCSAgICAgaXNfc2lnbmVkKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTsKIAkJfQpAQCAtNzk5LDcgJiM0Mzs4MjcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGh0b2xlKGRzdCkgKi8KIAkvKiBkc3QgPSBodG9iZShkc3QpICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDQ2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1JUFMgQlBGIEpJVCBDb21waWxlcjogU2lnbmVkIERpdmlzaW9uIGFuZCBNb2R1bG8gU3VwcG9ydCAtIFdvcnRoeSBvZiBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IGZvciB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIHNpZ25pZmljYW50LCBpdCBleHRlbmRzIHRoZSBCUEYgY2FwYWJpbGl0aWVzIG9uIE1JUFMsIHNwZWNpZmljYWxseSBieSBhZGRpbmcgdGhlIG5lY2Vzc2FyeSBNSVBTIGluc3RydWN0aW9ucyAoYGRkaXZgLCBgZGRpdl9yNmAsIGBkaXZgLCBgZGl2X3I2YCwgYGRtb2RgLCBgbW9kYCwgZXRjLikgd2l0aGluIGBhcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oYCwgYGFyY2gvbWlwcy9tbS91YXNtLW1pcHMuY2AsIGFuZCBgYXJjaC9taXBzL21tL3Vhc20uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBsZXZlcmFnaW5nIHRoZXNlIGluc3RydWN0aW9ucyB3aGVuIGBpc19zaWduZWRgIGlzIHRydWUgZm9yIGBCUEZfRElWYCBhbmQgYEJQRl9NT0RgIGluc3RydWN0aW9ucyBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBhbmQgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AuCgpGdW5jdGlvbmFsbHksIHRoaXMgbWVhbnMgdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlciBjYW4gbm93IGhhbmRsZSBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHksIGFuZCB5ZXMsIHRoaXMgaXMgYWJzb2x1dGVseSByZWFjaGFibGUuIFdlIGNhbiB0cmlnZ2VyIHRoaXMgZnVuY3Rpb25hbGl0eSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBieSBsb2FkaW5nIGEgQlBGIHByb2dyYW0gY29udGFpbmluZyBzaWduZWQgZGl2aXNpb24vbW9kdWxvIGluc3RydWN0aW9ucy4KClRoaW5raW5nIGFib3V0IGZ1enppbmcsIHRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcyBNSVBTIHN1cHBvcnQgaW4gZ2VuZXJhbC4gQW5kIHllcywgc3l6a2FsbGVyIGhhcyBNSVBTIHN1cHBvcnQuIFdlIGhhdmUgYG1pcHM2NGxlYCwgYG1pcHMzMmAsIGV0Yy4sIGNvdmVyZWQhCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydDogdGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0aGF0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjb2RlIGNhbiBiZSBleGVjdXRlZC4gQmFzZWQgb24gdGhlIHByb21wdCwgdGhpcyBtZWFucyBJIG5lZWQgdG8gdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGNvbmZpcm0gZXhlY3V0aW9uLiBTbywgdGhpcyBkZWZpbml0ZWx5IG1lYW5zIGl0JiMzOTtzIFdvcnRoRnV6emluZz10cnVlLgoKQmVmb3JlIEkgc2F5IHRoYXQgd2l0aCBjb25maWRlbmNlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLiBDT05GSUdfQlBGX0pJVCBpcyBuZWNlc3NhcnkgYXMgaXQgcHJvdmlkZXMgdGhlIEJQRiBKSVQgaW5mcmFzdHJ1Y3R1cmUuIEFsc28sIENPTkZJR19NSVBTIGlzIG9idmlvdXNseSBuZWVkZWQgYmVjYXVzZSB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlOiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgZmlsZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSSBuZWVkIHRvIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIHRoZSBmdW5jdGlvbnM6IGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2FsdV9yYCwgYGVtaXRfZGl2bW9kX3I2NGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIGBidWlsZF9pbnNuYC4gSSYjMzk7bGwgYWxzbyBkb3VibGUtY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIGJlIGNlcnRhaW4uCgpHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgY2hhbmdlIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM9OTMyPWJvb2wgYnBmX2ppdF9uZWVkc196ZXh0KHZvaWQpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy05MzYtXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjkzNzpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy05Mzgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzg5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZvY3VzOiBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gYSBzcGVjaWZpYyBhcmVhIHdpdGhpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBNeSBwcmltYXJ5IHRhcmdldHMgYXJlIHRoZSBgYnVpbGRfaW5zbmAgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBpbnN0cnVjdGlvbiBidWlsZGluZyBsb2dpYyByZXNpZGVzLCBuYXR1cmFsbHkuCgpCZXlvbmQgYGJ1aWxkX2luc25gLCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRpdmlzaW9uIGFuZCBtb2R1bG8gaW1wbGVtZW50YXRpb25zLiBUaGUgZnVuY3Rpb25zIHRvIGV4YW1pbmUgd2lsbCBiZSBgZW1pdF9kaXZgLCBgZW1pdF9tb2RgLCBgZW1pdF9kaXY2NGAsIGBlbWl0X21vZDY0YCwgYGVtaXRfZGl2bW9kX3I2NGAgYW5kIGBqaXRfc21vZDY0YC4gR2V0dGluZyB0aGVzZSBmdW5jdGlvbnMgd29ya2luZyBjb3JyZWN0bHkgaXMgcGFyYW1vdW50IGZvciBwZXJmb3JtYW5jZSBhbmQgY29ycmVjdG5lc3MuCgpOb3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJlZm9yZSBJIGRpdmUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCB0byBzZWUgaWYgYGJ1aWxkX2luc25gIGlzIGRlY2xhcmVkIHN0YXRpYy4gS25vd2luZyB0aGF0IHdpbGwgaW1wYWN0IHRoZSB3YXkgSSB0aGluayBhYm91dCBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBmb3IgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J1aWxkX2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTg3NT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy04OTUtXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjg5NjpcdFx0cmV0ID0gYnVpbGRfaW5zbihpbnNuLCBjdHgpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy04OTctXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaD0yMjM9dm9pZCBidWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgaW50IGRlc3RfcmVnKTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTIzMy0gKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MjM0OmludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0yMzUtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jPTE0NTI9dm9pZCBidWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgaW50IGRlc3RfcmVnKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNDcwLS8qIEJ1aWxkIG9uZSBlQlBGIGluc3RydWN0aW9uICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTQ3MTppbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE0NzIte1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz02NDQ9dm9pZCBidWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgaW50IGRlc3RfcmVnKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy02NTktLyogQnVpbGQgb25lIGVCUEYgaW5zdHJ1Y3Rpb24gKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo2NjA6aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy02NjEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDA5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBCUEYgSklUIGNvbXBpbGF0aW9uIGZ1bmN0aW9ucyBmb3IgTUlQUywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBidWlsZF9pbnNuYCBpc24mIzM5O3Qgc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyBzdGF0aWMgZnVuY3Rpb25zIHR5cGljYWxseSBoYXZlIGludGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzdWdnZXN0cyBgYnVpbGRfaW5zbmAgbWlnaHQgYmUgdXNlZCBtb3JlIGJyb2FkbHkuCgpUaGVuIEkgc2VlIGEgY291cGxlIG9mIGZ1bmN0aW9ucywgYGVtaXRfZGl2YCBhbmQgYGVtaXRfbW9kYCwgdGhhdCAqYXJlKiBzdGF0aWMsIGFuZCB0aGV5IHJlc2lkZSBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AuIFRoYXQmIzM5O3MgZXhwZWN0ZWQsIGdpdmVuIHRoZWlyIHJvbGUgaW4gZ2VuZXJhdGluZyBvcHRpbWl6ZWQgY29kZSBmb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLiBTaW1pbGFybHksIGBlbWl0X2RpdjY0YCBhbmQgYGVtaXRfbW9kNjRgIGFyZSBzdGF0aWMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGFuZCBgZW1pdF9kaXZtb2RfcjY0YCBhbmQgYGppdF9zbW9kNjRgIGFyZSBzdGF0aWMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYGVtaXRfYWx1X3JgLCBzaW5jZSBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZ1bmN0aW9uJiMzOTtzIHNjb3BlIGFuZCBwb3NzaWJsZSBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIGJ1aWxkIGEgY2xlYXJlciBtZW50YWwgbW9kZWwgb2YgdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlciYjMzk7cyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW1pdF9hbHVfciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM9MzYwPXN0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNzYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzozNzc6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNzgte1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg9MTcyPXZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaDoxNzU6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTE3Ni1cdFx0Ym9vbCBpc19zaWduZWQpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0yMDE9c3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjI2NzpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjY4LVx0XHRcdCBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDcxPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MjktXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTMwOlx0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNTMxLVx0XHRcdFx0ICAgaXNfc2lnbmVkKTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTU1OC1cdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTU5Olx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NjAtXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjIzLVx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTYyNDpcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyNS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTIxNz1zdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyxcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjM0LS8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMzU6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjM2LVx0XHRcdCBib29sIGlzX3NpZ25lZClcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjgwLVx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyODE6XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yODItXHR9XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTY2MD1pbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MDQtXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3MDU6XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MDYtXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTcyNy1cdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjcyODpcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjktXHRcdFx0XHQgICBpc19zaWduZWQpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03NDMtXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzQ0Olx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc0NS1cdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc2Mi1cdFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjc2MzpcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzY0LVx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODAxLVx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6ODAyOlx0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODAzLVx0XHRcdFx0ICAgICBpc19zaWduZWQpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MjktXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo4MzA6XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODMxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTkwOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIHN1cHBvcnQgdG8gdGhlIEJQRiBKSVQgY29tcGlsZXIgc3BlY2lmaWNhbGx5IG9uIE1JUFMgYXJjaGl0ZWN0dXJlLiBUaGF0JiMzOTtzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBwcmltZSBlbnRyeSBwb2ludCBpcyBkZWZpbml0ZWx5IGBicGZfaW50X2ppdF9jb21waWxlYC4gSSYjMzk7bGwgd2FudCB0byB0YXJnZXQgdGhhdCBmb3Igc3VyZS4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjYWxscyB0byBgYnVpbGRfaW5zbmAuIEkgc2VlIGl0IGRlZmluZWQgaW4gYm90aCBgYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBicGZfaml0X2NvbXA2NC5jYC4gQnV0IGhvbGQgb24sIGBidWlsZF9pbnNuYCBpc24mIzM5O3Qgc3RhdGljLCBzbyBpdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBzeW1ib2wgYWRkcmVzcywgd2hpY2ggaXMgZ29vZCBmb3IgZnV6emluZy4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIHRoZSBtYWluIHRoaW5nIGhlcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGluc3RydWN0aW9ucyBhcmUgYnVpbHQuCgpMZXQmIzM5O3MgY29uZmlybSBob3cgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGludGVyYWN0cyB3aXRoIGBidWlsZF9pbnNuYC4gSSYjMzk7bGwgcGVlayBhdCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBidWlsZF9ib2R5YCBjYWxscyBgYnVpbGRfaW5zbmAsIHNvIHRoYXQmIzM5O3MgdGhlIGNoYWluLiBJIGNhbiBwcm9iYWJseSBmdXp6IHRoZSBgYnBmX2ludF9qaXRfY29tcGlsZWAgZnVuY3Rpb24sIGFuZCBzZWUgaG93IGl0IGJ1aWxkcyBpbnN0cnVjdGlvbnMuCgpOb3csIGNvbmZpZyByZXF1aXJlbWVudHMgYXJlIGltcG9ydGFudC4gTmF0dXJhbGx5LCBgQ09ORklHX0JQRl9KSVRgIGlzIGEgbXVzdC4gQW5kLCBzaW5jZSB0aGlzIGlzIE1JUFMgc3BlY2lmaWMsIEkgZG9uJiMzOTt0IG5lZWQgYENPTkZJR19NSVBTYCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBhcmNoaXRlY3R1cmUgaXRzZWxmLiBJIHdpbGwgbG9vayBpbnRvIGBhcmNoL21pcHMvS2NvbmZpZ2Agb3IgYGFyY2gvbWlwcy9uZXQvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRldGFpbHMgb3IgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2NvbXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0L01ha2VmaWxlLTMtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAub1xuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTgtZWxzZVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xOC0gKlxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzoxOTogKiAtIGJwZl9qaXRfY29tcC5oXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTIwLSAqICAgQ29tbW9uIGRlZmluaXRpb25zIGFuZCB1dGlsaXRpZXMuXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTIxLSAqXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjIyOiAqIC0gYnBmX2ppdF9jb21wLmNcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMjMtICogICBJbXBsZW1lbnRhdGlvbiBvZiBKSVQgdG9wLWxldmVsIGxvZ2ljIGFuZCBleHBvcnRlZCBKSVQgQVBJIGZ1bmN0aW9ucy5cbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTI3LSAqXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjI4OiAqIC0gYnBmX2ppdF9jb21wMzIuY1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0yOS0gKiAgIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyB0byBKSVQgcHJvbG9ndWUsIGVwaWxvZ3VlIGFuZCBhIHNpbmdsZSBlQlBGXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zMy0gKlxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzozNDogKiAtIGJwZl9qaXRfY29tcDY0LmNcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMzUtICogICBEaXR0bywgZm9yIDY0LWJpdCBNSVBTIENQVXMuXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xMTYtXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjExNzojaW5jbHVkZSBcJiMzNDticGZfaml0X2NvbXAuaFwmIzM0O1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xMTgtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTIyLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjIzOiNpbmNsdWRlIFwmIzM0O2JwZl9qaXRfY29tcC5oXCYjMzQ7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjQtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIxLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjIyOiNpbmNsdWRlIFwmIzM0O2JwZl9qaXRfY29tcC5oXCYjMzQ7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDM0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbiBhbmQgTWljcm8tQXNzZW1ibGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJQRiBKSVQgc2V0dXAsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlIGlzIGNsZWFybHkgYENPTkZJR19CUEZfSklUYC4gVGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgaW5pdGlhbCB0YXJnZXRzIGFyZSB0aGUgY29yZSBzeW1ib2xzOiBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGFuZCB0aGUgYGJ1aWxkX2luc25gIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGluIGBicGZfaml0X2NvbXAzMi5jYCBhbmQgYGJwZl9qaXRfY29tcDY0LmNgLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGV4dGVybmFsbHkuIEludGVyZXN0aW5nbHksIGBidWlsZF9pbnNuYCBpcyAqbm90KiBzdGF0aWMsIHNvIHRoYXQmIzM5O3MgaGVscGZ1bC4gTm93LCBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHNvIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBUaGUgYGJ1aWxkX2JvZHlgIGlzIGEgc3RhdGljIGhlbHBlciBmdW5jdGlvbi4gSSBzZWUgYGVtaXRfYWx1X3JgIGlzIG5vbi1zdGF0aWMgaW4gYGJwZl9qaXRfY29tcC5jYCwgd2hpY2ggbWFrZXMgaXQgYSBnbG9iYWwgc3ltYm9sLiBTbyBJIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IHVuZGVyc3RhbmRpbmcuIEl0IG1ha2VzIHNlbnNlLCBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBidWlsZF9pbnNuYCwgYW5kIGBlbWl0X2FsdV9yYCBhcmUgaW1wb3J0YW50LgoKSSYjMzk7bSB2ZXJpZnlpbmcgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaXMgaW5kZWVkIHRoZSAqb25seSogZW50cnkgcG9pbnQgZm9yIHRoZSBCUEYgSklULCB0byBhdm9pZCBnZXR0aW5nIGRpc3RyYWN0ZWQuIFRoYXQmIzM5O3MgY29uZmlybWVkLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucywganVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bSBhd2FyZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGdlbmVyYWxseSBhIHByZXJlcXVpc2l0ZSBmb3IgQlBGLCBidXQgYENPTkZJR19CUEZfSklUYCBpcyB0aGUgc3BlY2lmaWMgb25lIEkmIzM5O20gY29uY2VybmVkIHdpdGggaGVyZS4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIHJldmlldyB0aGlzIHBhdGNoIGEgbGl0dGxlIG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBpdCYjMzk7cyBhZGRpbmcgaW5zdHJ1Y3Rpb25zIHRvIGB1YXNtLW1pcHMuY2AgYW5kIGB1YXNtLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBmaWxlcyBhcmUgcGFydCBvZiB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIuIEkgbmVlZCB0byBjaGVjayB0aGUgTUlQUyBhcmNoaXRlY3R1cmUmIzM5O3MgTWFrZWZpbGUgdG8gc2VlIHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsaW5nIGB1YXNtLmNgLiBUaGF0IHdpbGwgcHJvdmlkZSBmdXJ0aGVyIGNsYXJpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Vhc20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL21pcHMvbW0vTWFrZWZpbGU9MTk9aWZkZWYgQ09ORklHX0NQVV9NSUNST01JUFNcbmFyY2gvbWlwcy9tbS9NYWtlZmlsZToyMDpvYmoteVx0XHRcdFx0JiM0Mzs9IHVhc20tbWljcm9taXBzLm9cbmFyY2gvbWlwcy9tbS9NYWtlZmlsZS0yMS1lbHNlXG5hcmNoL21pcHMvbW0vTWFrZWZpbGU6MjI6b2JqLXlcdFx0XHRcdCYjNDM7PSB1YXNtLW1pcHMub1xuYXJjaC9taXBzL21tL01ha2VmaWxlLTIzLWVuZGlmXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNS1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzY6I2luY2x1ZGUgXHUwMDNjYXNtL3Vhc20uaFx1MDAzZVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNy1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTUxPVVBU01fTF9MQShfY29weV9wcmVmX3N0b3JlKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTMtLyogV2UgbmVlZCBvbmUgYnJhbmNoIGFuZCB0aGVyZWZvcmUgb25lIHJlbG9jYXRpb24gcGVyIHRhcmdldCBsYWJlbC4gKi9cbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTQ6c3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1s1XTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTU6c3RhdGljIHN0cnVjdCB1YXNtX3JlbG9jIHJlbG9jc1s1XTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTYtXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy02My0gKi9cbmFyY2gvbWlwcy9tbS9wYWdlLmM6NjQ6I2RlZmluZSBfdWFzbV9pX3ByZWYoYSwgYiwgYywgZClcdFx0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNjUtZG8ge1x0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy02Ny1cdFx0aWYgKGMgXHUwMDNjPSAweGZmIFx1MDAyNlx1MDAyNiBjIFx1MDAzZT0gLTB4MTAwKVx0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Njg6XHRcdFx0dWFzbV9pX3ByZWYoYSwgYiwgYywgZCk7XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNjktXHR9IGVsc2Uge1x0XHRcdFx0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NzA6XHRcdHVhc21faV9wcmVmKGEsIGIsIGMsIGQpO1x0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNzEtXHR9XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz05MT1wZ19hZGRpdSh1MzIgKipidWYsIHVuc2lnbmVkIGludCByZWcxLCB1bnNpZ25lZCBpbnQgcmVnMiwgdW5zaWduZWQgaW50IG9mZilcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTk2LVx0XHRpZiAob2ZmIFx1MDAzZSAweDdmZmYpIHtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6OTc6XHRcdFx0dWFzbV9pX2x1aShidWYsIEdQUl9UOSwgdWFzbV9yZWxfaGkob2ZmKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjk4Olx0XHRcdHVhc21faV9hZGRpdShidWYsIEdQUl9UOSwgR1BSX1Q5LCB1YXNtX3JlbF9sbyhvZmYpKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtOTktXHRcdH0gZWxzZVxuYXJjaC9taXBzL21tL3BhZ2UuYzoxMDA6XHRcdFx0dWFzbV9pX2FkZGl1KGJ1ZiwgR1BSX1Q5LCBHUFJfWkVSTywgb2ZmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MTAxOlx0XHR1YXNtX2lfZGFkZHUoYnVmLCByZWcxLCByZWcyLCBHUFJfVDkpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0xMDItXHR9IGVsc2Uge1xuYXJjaC9taXBzL21tL3BhZ2UuYy0xMDMtXHRcdGlmIChvZmYgXHUwMDNlIDB4N2ZmZikge1xuYXJjaC9taXBzL21tL3BhZ2UuYzoxMDQ6XHRcdFx0dWFzbV9pX2x1aShidWYsIEdQUl9UOSwgdWFzbV9yZWxfaGkob2ZmKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjEwNTpcdFx0XHR1YXNtX2lfYWRkaXUoYnVmLCBHUFJfVDksIEdQUl9UOSwgdWFzbV9yZWxfbG8ob2ZmKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTEwNi1cdFx0XHRVQVNNX2lfQUREVShidWYsIHJlZzEsIHJlZzIsIEdQUl9UOSk7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0yMjE9c3RhdGljIHZvaWQgYnVpbGRfY2xlYXJfc3RvcmUodTMyICoqYnVmLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjIzLVx0aWYgKGNwdV9oYXNfNjRiaXRfZ3BfcmVncyB8fCBjcHVfaGFzXzY0Yml0X3plcm9fcmVnKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjIyNDpcdFx0dWFzbV9pX3NkKGJ1ZiwgR1BSX1pFUk8sIG9mZiwgR1BSX0EwKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjI1LVx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjI2Olx0XHR1YXNtX2lfc3coYnVmLCBHUFJfWkVSTywgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0yMjctXHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0yMzA9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NsZWFyX3ByZWYodTMyICoqYnVmLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjM1LVx0aWYgKHByZWZfYmlhc19jbGVhcl9zdG9yZSkge1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyMzY6XHRcdF91YXNtX2lfcHJlZihidWYsIHByZWZfZHN0X21vZGUsIHByZWZfYmlhc19jbGVhcl9zdG9yZSAmIzQzOyBvZmYsXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIzNy1cdFx0XHQgICAgR1BSX0EwKTtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIzOS1cdFx0aWYgKGNwdV9oYXNfY2FjaGVfY2RleF9zKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjI0MDpcdFx0XHR1YXNtX2lfY2FjaGUoYnVmLCBDcmVhdGVfRGlydHlfRXhjbF9TRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0yNDEtXHRcdH0gZWxzZSBpZiAoY3B1X2hhc19jYWNoZV9jZGV4X3ApIHtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0My1cdFx0XHQgICAgY3B1X2lzX3I0NjAwX3YxX3goKSkge1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDQ6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjI0NTpcdFx0XHRcdHVhc21faV9ub3AoYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjQ2Olx0XHRcdFx0dWFzbV9pX25vcChidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDc6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0OC1cdFx0XHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0yNTEtXHRcdFx0ICAgIGNwdV9pc19yNDYwMF92Ml94KCkpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI1MjpcdFx0XHRcdHVhc21faV9sdyhidWYsIEdQUl9aRVJPLCBHUFJfWkVSTywgR1BSX0FUKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjUzLVxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNTQ6XHRcdFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0yNTUtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTI2ND12b2lkIGJ1aWxkX2NsZWFyX3BhZ2Uodm9pZClcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI2Ny1cdHUzMiAqYnVmID0gXHUwMDI2X19jbGVhcl9wYWdlX3N0YXJ0O1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyNjg6XHRzdHJ1Y3QgdWFzbV9sYWJlbCAqbCA9IGxhYmVscztcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjY5Olx0c3RydWN0IHVhc21fcmVsb2MgKnIgPSByZWxvY3M7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTI3MC1cdGludCBpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjkzLVx0ZWxzZVxuYXJjaC9taXBzL21tL3BhZ2UuYzoyOTQ6XHRcdHVhc21faV9vcmkoXHUwMDI2YnVmLCBHUFJfQTIsIEdQUl9BMCwgb2ZmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjk1LVxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTYtXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfV0FSX1I0NjAwX1YyX0hJVF9DQUNIRU9QKSBcdTAwMjZcdTAwMjYgY3B1X2lzX3I0NjAwX3YyX3goKSlcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Mjk3Olx0XHR1YXNtX2lfbHVpKFx1MDAyNmJ1ZiwgR1BSX0FULCB1YXNtX3JlbF9oaSgweGEwMDAwMDAwKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTI5OC1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTMwNC1cdH1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzA1Olx0dWFzbV9sX2NsZWFyX3ByZWYoXHUwMDI2bCwgYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzA2LVx0ZG8ge1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE1LVx0XHRpZiAob2ZmID09IC1jbGVhcl93b3JkX3NpemUpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjMxNjpcdFx0XHR1YXNtX2lsX2JuZShcdTAwMjZidWYsIFx1MDAyNnIsIEdQUl9BMCwgR1BSX0EyLCBsYWJlbF9jbGVhcl9wcmVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE3LVx0XHRidWlsZF9jbGVhcl9zdG9yZShcdTAwMjZidWYsIG9mZik7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMjItXHRcdHBnX2FkZGl1KFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIHByZWZfYmlhc19jbGVhcl9zdG9yZSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjMyMzpcdFx0dWFzbV9sX2NsZWFyX25vcHJlZihcdTAwMjZsLCBidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zMjQtXHRcdG9mZiA9IDA7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMzItXHRcdFx0aWYgKG9mZiA9PSAtY2xlYXJfd29yZF9zaXplKVxuYXJjaC9taXBzL21tL3BhZ2UuYzozMzM6XHRcdFx0XHR1YXNtX2lsX2JuZShcdTAwMjZidWYsIFx1MDAyNnIsIEdQUl9BMCwgR1BSX0EyLFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMzQtXHRcdFx0XHRcdCAgICBsYWJlbF9jbGVhcl9ub3ByZWYpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzM5LVxuYXJjaC9taXBzL21tL3BhZ2UuYzozNDA6XHR1YXNtX2lfanIoXHUwMDI2YnVmLCBHUFJfUkEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzozNDE6XHR1YXNtX2lfbm9wKFx1MDAyNmJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0Mi1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0NC1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzQ1Olx0dWFzbV9yZXNvbHZlX3JlbG9jcyhyZWxvY3MsIGxhYmVscyk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0Ni1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTM1Nz1zdGF0aWMgdm9pZCBidWlsZF9jb3B5X2xvYWQodTMyICoqYnVmLCBpbnQgcmVnLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzU5LVx0aWYgKGNwdV9oYXNfNjRiaXRfZ3BfcmVncykge1xuYXJjaC9taXBzL21tL3BhZ2UuYzozNjA6XHRcdHVhc21faV9sZChidWYsIHJlZywgb2ZmLCBHUFJfQTEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjEtXHR9IGVsc2Uge1xuYXJjaC9taXBzL21tL3BhZ2UuYzozNjI6XHRcdHVhc21faV9sdyhidWYsIHJlZywgb2ZmLCBHUFJfQTEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjMtXHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0zNjY9c3RhdGljIHZvaWQgYnVpbGRfY29weV9zdG9yZSh1MzIgKipidWYsIGludCByZWcsIGludCBvZmYpXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjgtXHRpZiAoY3B1X2hhc182NGJpdF9ncF9yZWdzKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM2OTpcdFx0dWFzbV9pX3NkKGJ1ZiwgcmVnLCBvZmYsIEdQUl9BMCk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM3MC1cdH0gZWxzZSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM3MTpcdFx0dWFzbV9pX3N3KGJ1ZiwgcmVnLCBvZmYsIEdQUl9BMCk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM3Mi1cdH1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTM3NT1zdGF0aWMgaW5saW5lIHZvaWQgYnVpbGRfY29weV9sb2FkX3ByZWYodTMyICoqYnVmLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzgwLVx0aWYgKHByZWZfYmlhc19jb3B5X2xvYWQpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM4MTpcdFx0X3Vhc21faV9wcmVmKGJ1ZiwgcHJlZl9zcmNfbW9kZSwgcHJlZl9iaWFzX2NvcHlfbG9hZCAmIzQzOyBvZmYsIEdQUl9BMSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM4Mi19XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0zODQ9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NvcHlfc3RvcmVfcHJlZih1MzIgKipidWYsIGludCBvZmYpXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zODktXHRpZiAocHJlZl9iaWFzX2NvcHlfc3RvcmUpIHtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzkwOlx0XHRfdWFzbV9pX3ByZWYoYnVmLCBwcmVmX2RzdF9tb2RlLCBwcmVmX2JpYXNfY29weV9zdG9yZSAmIzQzOyBvZmYsXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5MS1cdFx0XHQgICAgR1BSX0EwKTtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5My1cdFx0aWYgKGNwdV9oYXNfY2FjaGVfY2RleF9zKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5NDpcdFx0XHR1YXNtX2lfY2FjaGUoYnVmLCBDcmVhdGVfRGlydHlfRXhjbF9TRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zOTUtXHRcdH0gZWxzZSBpZiAoY3B1X2hhc19jYWNoZV9jZGV4X3ApIHtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5Ny1cdFx0XHQgICAgY3B1X2lzX3I0NjAwX3YxX3goKSkge1xuYXJjaC9taXBzL21tL3BhZ2UuYzozOTg6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5OTpcdFx0XHRcdHVhc21faV9ub3AoYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDAwOlx0XHRcdFx0dWFzbV9pX25vcChidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzo0MDE6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTQwMi1cdFx0XHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy00MDUtXHRcdFx0ICAgIGNwdV9pc19yNDYwMF92Ml94KCkpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjQwNjpcdFx0XHRcdHVhc21faV9sdyhidWYsIEdQUl9aRVJPLCBHUFJfWkVSTywgR1BSX0FUKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDA3LVxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MDg6XHRcdFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00MDktXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTQxMz12b2lkIGJ1aWxkX2NvcHlfcGFnZSh2b2lkKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDE2LVx0dTMyICpidWYgPSBcdTAwMjZfX2NvcHlfcGFnZV9zdGFydDtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDE3Olx0c3RydWN0IHVhc21fbGFiZWwgKmwgPSBsYWJlbHM7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjQxODpcdHN0cnVjdCB1YXNtX3JlbG9jICpyID0gcmVsb2NzO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00MTktXHRpbnQgaTtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0Ni1cdGVsc2VcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDQ3Olx0XHR1YXNtX2lfb3JpKFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIG9mZik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0OC1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDQ5LVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1dBUl9SNDYwMF9WMl9ISVRfQ0FDSEVPUCkgXHUwMDI2XHUwMDI2IGNwdV9pc19yNDYwMF92Ml94KCkpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjQ1MDpcdFx0dWFzbV9pX2x1aShcdTAwMjZidWYsIEdQUl9BVCwgdWFzbV9yZWxfaGkoMHhhMDAwMDAwMCkpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00NTEtXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy00NjMtXHR9XG5hcmNoL21pcHMvbW0vcGFnZS5jOjQ2NDpcdHVhc21fbF9jb3B5X3ByZWZfYm90aChcdTAwMjZsLCBidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00NjUtXHRkbyB7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy01MDMtXHRcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxuYXJjaC9taXBzL21tL3BhZ2UuYzo1MDQ6XHRcdFx0dWFzbV9pbF9ibmUoXHUwMDI2YnVmLCBcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCwgbGFiZWxfY29weV9wcmVmX2JvdGgpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy01MDUtXHRcdGJ1aWxkX2NvcHlfc3RvcmUoXHUwMDI2YnVmLCBHUFJfVDMsIG9mZiAmIzQzOyAzICogY29weV93b3JkX3NpemUpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTExLVx0XHRcdCBwcmVmX2JpYXNfY29weV9sb2FkIC0gcHJlZl9iaWFzX2NvcHlfc3RvcmUpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzo1MTI6XHRcdHVhc21fbF9jb3B5X3ByZWZfc3RvcmUoXHUwMDI2bCwgYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTEzLVx0XHRvZmYgPSAwO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTQ0LVx0XHRcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxuYXJjaC9taXBzL21tL3BhZ2UuYzo1NDU6XHRcdFx0XHR1YXNtX2lsX2JuZShcdTAwMjZidWYsIFx1MDAyNnIsIEdQUl9BMiwgR1BSX0EwLFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NDYtXHRcdFx0XHRcdCAgICBsYWJlbF9jb3B5X3ByZWZfc3RvcmUpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTUzLVx0XHRwZ19hZGRpdShcdTAwMjZidWYsIEdQUl9BMiwgR1BSX0EwLCBwcmVmX2JpYXNfY29weV9zdG9yZSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjU1NDpcdFx0dWFzbV9sX2NvcHlfbm9wcmVmKFx1MDAyNmwsIGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTU1NS1cdFx0b2ZmID0gMDtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU3OC1cdFx0XHRpZiAob2ZmID09IC0oNCAqIGNvcHlfd29yZF9zaXplKSlcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTc5Olx0XHRcdFx0dWFzbV9pbF9ibmUoXHUwMDI2YnVmLCBcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTgwLVx0XHRcdFx0XHQgICAgbGFiZWxfY29weV9ub3ByZWYpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTg1LVxuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODY6XHR1YXNtX2lfanIoXHUwMDI2YnVmLCBHUFJfUkEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODc6XHR1YXNtX2lfbm9wKFx1MDAyNmJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTU4OC1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU5MC1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTkxOlx0dWFzbV9yZXNvbHZlX3JlbG9jcyhyZWxvY3MsIGxhYmVscyk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTU5Mi1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zNy0jaW5jbHVkZSBcdTAwM2Nhc20vcmVnZGVmLmhcdTAwM2VcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM4OiNpbmNsdWRlIFx1MDAzY2FzbS91YXNtLmhcdTAwM2VcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM5LSNpbmNsdWRlIFx1MDAzY2FzbS9zZXR1cC5oXHUwMDNlXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmM9MjA0PXN0YXRpYyBpbnQgaGF6YXJkX2luc3RhbmNlO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA1LVxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjA2OnN0YXRpYyB2b2lkIHVhc21fYmdlemxfaGF6YXJkKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgaW50IGluc3RhbmNlKVxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA3LXtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMDktXHRjYXNlIDAgLi4uIDc6XG5hcmNoL21pcHMvbW0vdGxiZXguYzoyMTA6XHRcdHVhc21faWxfYmdlemwocCwgciwgMCwgbGFiZWxfdGxid19oYXphcmRfMCAmIzQzOyBpbnN0YW5jZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMTEtXHRcdHJldHVybjtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMTYtXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyMTc6c3RhdGljIHZvaWQgdWFzbV9iZ2V6bF9sYWJlbChzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHUzMiAqKnAsIGludCBpbnN0YW5jZSlcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIxOC17XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjIwLVx0Y2FzZSAwIC4uLiA3OlxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjIxOlx0XHR1YXNtX2J1aWxkX2xhYmVsKGwsICpwLCBsYWJlbF90bGJ3X2hhemFyZF8wICYjNDM7IGluc3RhbmNlKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIyMi1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmM9Mjk1PXN0YXRpYyB1MzIgdGxiX2hhbmRsZXJbMTI4XTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yOTctLyogc2ltcGx5IGFzc3VtZSB3b3JzdCBjYXNlIHNpemUgZm9yIGxhYmVscyBhbmQgcmVsb2NzICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyOTg6c3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1sxMjhdO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6Mjk5OnN0YXRpYyBzdHJ1Y3QgdWFzbV9yZWxvYyByZWxvY3NbMTI4XTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTMwMC1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYz0zNjk9c3RhdGljIHZvaWQgYnVpbGRfcmVzdG9yZV93b3JrX3JlZ2lzdGVycyh1MzIgKipwKVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3MS1cdGlmIChzY3JhdGNoX3JlZyBcdTAwM2U9IDApIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM3MjpcdFx0dWFzbV9pX2VoYihwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3My1cdFx0VUFTTV9pX01GQzAocCwgMSwgYzBfa3NjcmF0Y2goKSwgc2NyYXRjaF9yZWcpO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jPTM4OT1zdGF0aWMgdm9pZCBidWlsZF9yMzAwMF90bGJfcmVmaWxsX2hhbmRsZXIodm9pZClcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zOTYtXG5hcmNoL21pcHMvbW0vdGxiZXguYzozOTc6XHR1YXNtX2lfbWZjMChcdTAwMjZwLCBHUFJfSzAsIEMwX0JBRFZBRERSKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM5ODpcdHVhc21faV9sdWkoXHUwMDI2cCwgR1BSX0sxLCB1YXNtX3JlbF9oaShwZ2RjKSk7IC8qIGNwMCBkZWxheSAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6Mzk5Olx0dWFzbV9pX2x3KFx1MDAyNnAsIEdQUl9LMSwgdWFzbV9yZWxfbG8ocGdkYyksIEdQUl9LMSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDA6XHR1YXNtX2lfc3JsKFx1MDAyNnAsIEdQUl9LMCwgR1BSX0swLCAyMik7IC8qIGxvYWQgZGVsYXkgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwMTpcdHVhc21faV9zbGwoXHUwMDI2cCwgR1BSX0swLCBHUFJfSzAsIDIpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDAyOlx0dWFzbV9pX2FkZHUoXHUwMDI2cCwgR1BSX0sxLCBHUFJfSzEsIEdQUl9LMCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDM6XHR1YXNtX2lfbWZjMChcdTAwMjZwLCBHUFJfSzAsIEMwX0NPTlRFWFQpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA0Olx0dWFzbV9pX2x3KFx1MDAyNnAsIEdQUl9LMSwgMCwgR1BSX0sxKTsgLyogY3AwIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDU6XHR1YXNtX2lfYW5kaShcdTAwMjZwLCBHUFJfSzAsIEdQUl9LMCwgMHhmZmMpOyAvKiBsb2FkIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDY6XHR1YXNtX2lfYWRkdShcdTAwMjZwLCBHUFJfSzEsIEdQUl9LMSwgR1BSX0swKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwNzpcdHVhc21faV9sdyhcdTAwMjZwLCBHUFJfSzAsIDAsIEdQUl9LMSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDg6XHR1YXNtX2lfbm9wKFx1MDAyNnApOyAvKiBsb2FkIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDk6XHR1YXNtX2lfbXRjMChcdTAwMjZwLCBHUFJfSzAsIEMwX0VOVFJZTE8wKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQxMDpcdHVhc21faV9tZmMwKFx1MDAyNnAsIEdQUl9LMSwgQzBfRVBDKTsgLyogY3AwIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MTE6XHR1YXNtX2lfdGxid3IoXHUwMDI2cCk7IC8qIGNwMCBkZWxheSAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDEyOlx0dWFzbV9pX2pyKFx1MDAyNnAsIEdQUl9LMSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MTM6XHR1YXNtX2lfcmZlKFx1MDAyNnApOyAvKiBicmFuY2ggZGVsYXkgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jLTQxNC1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYz00NTg9c3RhdGljIHZvaWQgX19tYXliZV91bnVzZWQgYnVpbGRfdGxiX3Byb2JlX2VudHJ5KHUzMiAqKnApXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDY1LVx0Y2FzZSBDUFVfTkVWQURBOlxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDY2Olx0XHR1YXNtX2lfbm9wKHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDY3Olx0XHR1YXNtX2lfdGxicChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ2OC1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDcwLVx0ZGVmYXVsdDpcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ3MTpcdFx0dWFzbV9pX3RsYnAocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy00NzItXHRcdGJyZWFrO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ3NS1cbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ3Njp2b2lkIGJ1aWxkX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0Nzc6XHRcdFx0ICAgc3RydWN0IHVhc21fcmVsb2MgKipyLFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDc4LVx0XHRcdCAgIGVudW0gdGxiX3dyaXRlX2VudHJ5IHdtb2RlKVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ4Mi1cdHN3aXRjaCAod21vZGUpIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ4MzpcdGNhc2UgdGxiX3JhbmRvbTogdGxidyA9IHVhc21faV90bGJ3cjsgYnJlYWs7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0ODQ6XHRjYXNlIHRsYl9pbmRleGVkOiB0bGJ3ID0gdWFzbV9pX3RsYndpOyBicmVhaztcbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ4NS1cdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy00ODgtXHRcdGlmIChjcHVfaGFzX21pcHNfcjJfZXhlY19oYXphcmQpXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0ODk6XHRcdFx0dWFzbV9pX2VoYihwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ5MC1cdFx0dGxidyhwKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDQtXHRcdCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA1Olx0XHR1YXNtX2JnZXpsX2hhemFyZChwLCByLCBoYXphcmRfaW5zdGFuY2UpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNTA2LVx0XHR0bGJ3KHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA3Olx0XHR1YXNtX2JnZXpsX2xhYmVsKGwsIHAsIGhhemFyZF9pbnN0YW5jZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDgtXHRcdGhhemFyZF9pbnN0YW5jZSYjNDM7JiM0Mzs7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1MDk6XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01MTAtXHRcdGJyZWFrO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTUxMy1cdGNhc2UgQ1BVX1I0NzAwOlxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTE0Olx0XHR1YXNtX2lfbm9wKHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNTE1LVx0XHR0bGJ3KHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTE2Olx0XHR1YXNtX2lfbm9wKHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNTE3LVx0XHRicmVhaztcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MjAtXHRjYXNlIENQVV9ORVZBREE6XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1MjE6XHRcdHVhc21faV9ub3AocCk7IC8qIFFFRCBzcGVjaWZpZXMgMiBub3BzIGhhemFyZCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTIyOlx0XHR1YXNtX2lfbm9wKHApOyAvKiBRRUQgc3BlY2lmaWVzIDIgbm9wcyBoYXphcmQgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jLTUyMy1cdFx0dGxidyhwKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MjktXHRjYXNlIENQVV9QUjQ0NTA6XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1MzA6XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01MzEtXHRcdHRsYncocCk7XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTU1LVx0XHRpZiAobTRrY190bGJwX3dhcigpKVxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTU2Olx0XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01NTctXHRcdGZhbGx0aHJvdWdoO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTU2Mi1cdGNhc2UgQ1BVX1JNNzAwMDpcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2MzpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NDpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NTpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NjpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTU2Ny1cdFx0dGxidyhwKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NzEtXHRcdHRsYncocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1NzI6XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01NzMtXHRcdGJyZWFrO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jPTU4Mz1zdGF0aWMgX19tYXliZV91bnVzZWQgdm9pZCBidWlsZF9jb252ZXJ0X3B0ZV90b19lbnRyeWxvKHUzMiAqKnAsXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjAwLSNpZmRlZiBDT05GSUdfUEhZU19BRERSX1RfNjRCSVRcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYwMTpcdFx0dWFzbV9pX2Rzcmxfc2FmZShwLCByZWcsIHJlZywgaWxvZzIoX1BBR0VfR0xPQkFMKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy02MDItI2Vsc2Vcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MDktXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MTA6c3RhdGljIHZvaWQgYnVpbGRfcmVzdG9yZV9wYWdlbWFzayh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTEtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgdG1wLCBlbnVtIGxhYmVsX2lkIGxpZCxcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTktXHRcdGlmIChzY3JhdGNoX3JlZyBcdTAwM2U9IDApXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MjA6XHRcdFx0dWFzbV9pX2VoYihwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYyMS1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MjMtXHRcdGlmIChQTV9ERUZBVUxUX01BU0sgXHUwMDNlXHUwMDNlIDE2KSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MjQ6XHRcdFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwM2VcdTAwM2UgMTYpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NjI1Olx0XHRcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwMjYgMHhmZmZmKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyNjpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyNzpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYyOC1cdFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyOTpcdFx0XHR1YXNtX2lfb3JpKHAsIHRtcCwgMCwgUE1fREVGQVVMVF9NQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMDpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMTpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYzMi1cdFx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMzpcdFx0XHR1YXNtX2lfbXRjMChwLCAwLCBDMF9QQUdFTUFTSyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MzQ6XHRcdFx0dWFzbV9pbF9iKHAsIHIsIGxpZCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy02MzUtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NDItXHRcdGlmIChQTV9ERUZBVUxUX01BU0sgXHUwMDNlXHUwMDNlIDE2KSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NDM6XHRcdFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwM2VcdTAwM2UgMTYpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ0Olx0XHRcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwMjYgMHhmZmZmKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0NTpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0NjpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY0Ny1cdFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0ODpcdFx0XHR1YXNtX2lfb3JpKHAsIHRtcCwgMCwgUE1fREVGQVVMVF9NQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0OTpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MDpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY1MS1cdFx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MjpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MzpcdFx0XHR1YXNtX2lfbXRjMChwLCAwLCBDMF9QQUdFTUFTSyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTQtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTctXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NTg6c3RhdGljIHZvaWQgYnVpbGRfaHVnZV90bGJfd3JpdGVfZW50cnkodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjU5Olx0XHRcdFx0ICAgICAgIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY2MC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgdG1wLFxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTY2NC1cdC8qIFNldCBodWdlIHBhZ2UgdGxiIGVudHJ5IHNpemUgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjY2NTpcdHVhc21faV9sdWkocCwgdG1wLCBQTV9IVUdFX01BU0sgXHUwMDNlXHUwMDNlIDE2KTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY2NjpcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0hVR0VfTUFTSyBcdTAwMjYgMHhmZmZmKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY2NzpcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNjY4LVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jPTY3Nz1zdGF0aWMgdm9pZFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Njc4OmJ1aWxkX2lzX2h1Z2VfcHRlKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHRtcCxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY3OS1cdFx0ICB1bnNpZ25lZCBpbnQgcG1kLCBpbnQgbGlkKVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4Mi1cdGlmICh1c2VfYmJpdF9pbnNucygpKSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2ODM6XHRcdHVhc21faWxfYmJpdDEocCwgciwgdG1wLCBpbG9nMihfUEFHRV9IVUdFKSwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4NC1cdH0gZWxzZSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2ODU6XHRcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCBfUEFHRV9IVUdFKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY4NjpcdFx0dWFzbV9pbF9ibmV6KHAsIHIsIHRtcCwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4Ny1cdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYz02OTA9c3RhdGljIHZvaWQgYnVpbGRfaHVnZV91cGRhdGVfZW50cmllcyh1MzIgKipwLCB1bnNpZ25lZCBpbnQgcHRlLFxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTcwNy1cdGlmICghc21hbGxfc2VxdWVuY2UpXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3MDg6XHRcdHVhc21faV9sdWkocCwgdG1wLCBIUEFHRV9TSVpFIFx1MDAzZVx1MDAzZSAoNyAmIzQzOyAxNikpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNzA5LVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTcyMC1cbmFyY2gvbWlwcy9tbS90bGJleC5jOjcyMTpzdGF0aWMgdm9pZCBidWlsZF9odWdlX2hhbmRsZXJfdGFpbCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3MjI6XHRcdFx0XHQgICAgc3RydWN0IHVhc21fbGFiZWwgKipsLFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzIzLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBwdGUsXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzI4LVx0VUFTTV9pX1NDKHAsIHB0ZSwgMCwgcHRyKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjcyOTpcdHVhc21faWxfYmVxeihwLCByLCBwdGUsIGxhYmVsX3RsYl9odWdlX3VwZGF0ZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy03MzAtXHRVQVNNX2lfTFcocCwgcHRlLCAwLCBwdHIpOyAvKiBOZWVkZWQgYmVjYXVzZSBTQyBraWxsZWQgb3VyIFBURSAqL1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTczNy1cdFx0VUFTTV9pX01GQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjczODpcdFx0dWFzbV9pX29yaShwLCBwdHIsIHB0ciwgTUlQU19FTlRSWUhJX0VISU5WKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTczOS1cdFx0VUFTTV9pX01UQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NDEtXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3NDI6XHRcdHVhc21faV94b3JpKHAsIHB0ciwgcHRyLCBNSVBTX0VOVFJZSElfRUhJTlYpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNzQzLVx0XHRVQVNNX2lfTVRDMChwLCBwdHIsIEMwX0VOVFJZSEkpO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTc1OS0gKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjc2MDp2b2lkIGJ1aWxkX2dldF9wbWRlNjQodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NjEtXHRcdCAgICAgIHVuc2lnbmVkIGludCB0bXAsIHVuc2lnbmVkIGludCBwdHIpXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzY4LVx0ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3Njk6XHR1YXNtX2lfZG1mYzAocCwgdG1wLCBDMF9CQURWQUREUik7XG5hcmNoL21pcHMvbW0vdGxiZXguYy03NzAtXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzgyLVx0XHQgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4MzpcdFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHRtcCwgUEdESVJfU0hJRlQgJiM0MzsgUEdEX1RBQkxFX09SREVSICYjNDM7IFBBR0VfU0hJRlQgLSAzKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4NDpcdFx0dWFzbV9pbF9ibmV6KHAsIHIsIHB0ciwgbGFiZWxfdm1hbGxvYyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy03ODUtXHR9IGVsc2Uge1xuYXJjaC9taXBzL21tL3RsYmV4LmM6Nzg2Olx0XHR1YXNtX2lsX2JsdHoocCwgciwgdG1wLCBsYWJlbF92bWFsbG9jKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4Ny1cdH1cbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4ODpcdC8qIE5vIHVhc21faV9ub3AgbmVlZGVkIGhlcmUsIHNpbmNlIHRoZSBuZXh0IGluc24gZG9lc24mIzM5O3QgdG91Y2ggVE1QLiAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNzg5LVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwMy1cdFx0LyogQ2xlYXIgbG93ZXIgMjMgYml0cyBvZiBjb250ZXh0LiAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODA0Olx0XHR1YXNtX2lfZGlucyhwLCBwdHIsIDAsIDAsIDIzKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwNS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwNi1cdFx0LyogaW5zZXJ0IGJpdFs2Mzo1OV0gb2YgQ0FDX0JBU0UgaW50byBiaXRbMTE6Nl0gb2YgcHRyICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MDc6XHRcdHVhc21faV9vcmkocCwgcHRyLCBwdHIsICgodTY0KShDQUNfQkFTRSkgXHUwMDNlXHUwMDNlIDUzKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MDg6XHRcdHVhc21faV9kcm90cihwLCBwdHIsIHB0ciwgMTEpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODA5LSNlbGlmIGRlZmluZWQoQ09ORklHX1NNUClcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxMC1cdFx0VUFTTV9pX0NQVUlEX01GQzAocCwgcHRyLCBTTVBfQ1BVSURfUkVHKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgxMTpcdFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHB0ciwgU01QX0NQVUlEX1BUUlNISUZUKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxMi1cdFx0VUFTTV9pX0xBX21vc3RseShwLCB0bXAsIHBnZGMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODEzOlx0XHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTQ6XHRcdHVhc21faV9kbWZjMChwLCB0bXAsIEMwX0JBRFZBRERSKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgxNTpcdFx0dWFzbV9pX2xkKHAsIHB0ciwgdWFzbV9yZWxfbG8ocGdkYyksIHB0cik7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04MTYtI2Vsc2VcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxNy1cdFx0VUFTTV9pX0xBX21vc3RseShwLCBwdHIsIHBnZGMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODE4Olx0XHR1YXNtX2lfbGQocCwgcHRyLCB1YXNtX3JlbF9sbyhwZ2RjKSwgcHRyKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxOS0jZW5kaWZcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MjEtXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MjI6XHR1YXNtX2xfdm1hbGxvY19kb25lKGwsICpwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgyMy1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTgyNC1cdC8qIGdldCBwZ2Qgb2Zmc2V0IGluIGJ5dGVzICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MjU6XHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQR0RJUl9TSElGVCAtIDMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODI2LVxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODI3Olx0dWFzbV9pX2FuZGkocCwgdG1wLCB0bXAsIChQVFJTX1BFUl9QR0QgLSAxKVx1MDAzY1x1MDAzYzMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODI4Olx0dWFzbV9pX2RhZGR1KHAsIHB0ciwgcHRyLCB0bXApOyAvKiBhZGQgaW4gcGdkIG9mZnNldCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODI5LSNpZm5kZWYgX19QQUdFVEFCTEVfUFVEX0ZPTERFRFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODMwOlx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpOyAvKiBnZXQgZmF1bHRpbmcgYWRkcmVzcyAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODMxOlx0dWFzbV9pX2xkKHAsIHB0ciwgMCwgcHRyKTsgLyogZ2V0IHB1ZCBwb2ludGVyICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MzI6XHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQVURfU0hJRlQgLSAzKTsgLyogZ2V0IHB1ZCBvZmZzZXQgaW4gYnl0ZXMgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzMzpcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCAoUFRSU19QRVJfUFVEIC0gMSkgXHUwMDNjXHUwMDNjIDMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM0Olx0dWFzbV9pX2RhZGR1KHAsIHB0ciwgcHRyLCB0bXApOyAvKiBhZGQgaW4gcHVkIG9mZnNldCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODM1LSNlbmRpZlxuYXJjaC9taXBzL21tL3RsYmV4LmMtODM2LSNpZm5kZWYgX19QQUdFVEFCTEVfUE1EX0ZPTERFRFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM3Olx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpOyAvKiBnZXQgZmF1bHRpbmcgYWRkcmVzcyAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM4Olx0dWFzbV9pX2xkKHAsIHB0ciwgMCwgcHRyKTsgLyogZ2V0IHBtZCBwb2ludGVyICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4Mzk6XHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQTURfU0hJRlQtMyk7IC8qIGdldCBwbWQgb2Zmc2V0IGluIGJ5dGVzICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NDA6XHR1YXNtX2lfYW5kaShwLCB0bXAsIHRtcCwgKFBUUlNfUEVSX1BNRCAtIDEpXHUwMDNjXHUwMDNjMyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NDE6XHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7IC8qIGFkZCBpbiBwbWQgb2Zmc2V0ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NDItI2VuZGlmXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmM9ODUwPXN0YXRpYyB2b2lkXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NTE6YnVpbGRfZ2V0X3BnZF92bWFsbG9jNjQodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NTItXHRcdFx0dW5zaWduZWQgaW50IGJ2YWRkciwgdW5zaWduZWQgaW50IHB0cixcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NTgtXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NTk6XHRzaW5nbGVfaW5zbl9zd3BkID0gdWFzbV9pbl9jb21wYXRfc3BhY2VfcChzd3BkKSBcdTAwMjZcdTAwMjYgIXVhc21fcmVsX2xvKHN3cGQpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODYwLVxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODYxOlx0dWFzbV9sX3ZtYWxsb2MobCwgKnApO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODYyLVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTg2NC1cdFx0aWYgKHNpbmdsZV9pbnNuX3N3cGQpIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg2NTpcdFx0XHR1YXNtX2lsX2JsdHoocCwgciwgYnZhZGRyLCBsYWJlbF92bWFsbG9jX2RvbmUpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODY2Olx0XHRcdHVhc21faV9sdWkocCwgcHRyLCB1YXNtX3JlbF9oaShzd3BkKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04NjctXHRcdFx0ZGlkX3ZtYWxsb2NfYnJhbmNoID0gMTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NjktXHRcdH0gZWxzZSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzA6XHRcdFx0dWFzbV9pbF9iZ2V6KHAsIHIsIGJ2YWRkciwgbGFiZWxfbGFyZ2Vfc2VnYml0c19mYXVsdCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzEtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzQtXHRcdGlmIChzaW5nbGVfaW5zbl9zd3BkKSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzU6XHRcdFx0dWFzbV9pbF9iKHAsIHIsIGxhYmVsX3ZtYWxsb2NfZG9uZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzY6XHRcdFx0dWFzbV9pX2x1aShwLCBwdHIsIHVhc21fcmVsX2hpKHN3cGQpKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg3Ny1cdFx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg3OC1cdFx0XHRVQVNNX2lfTEFfbW9zdGx5KHAsIHB0ciwgc3dwZCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4Nzk6XHRcdFx0dWFzbV9pbF9iKHAsIHIsIGxhYmVsX3ZtYWxsb2NfZG9uZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODA6XHRcdFx0aWYgKHVhc21faW5fY29tcGF0X3NwYWNlX3Aoc3dwZCkpXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODE6XHRcdFx0XHR1YXNtX2lfYWRkaXUocCwgcHRyLCBwdHIsIHVhc21fcmVsX2xvKHN3cGQpKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg4Mi1cdFx0XHRlbHNlXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODM6XHRcdFx0XHR1YXNtX2lfZGFkZGl1KHAsIHB0ciwgcHRyLCB1YXNtX3JlbF9sbyhzd3BkKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04ODQtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04ODYtXHRpZiAobW9kZSAhPSBub3RfcmVmaWxsIFx1MDAyNlx1MDAyNiBjaGVja19mb3JfaGlnaF9zZWdiaXRzKSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODc6XHRcdHVhc21fbF9sYXJnZV9zZWdiaXRzX2ZhdWx0KGwsICpwKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAxOQoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiAxNDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNSVBTIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgc2lnbmVkIG9uZXMsIHdpdGhpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBUaGUgYHVhc21gIG1pY3JvLWFzc2VtYmxlciBpcyB0aGUga2V5LCBhbmQgaXQmIzM5O3MgYmVpbmcgdXBkYXRlZCB0byBoYW5kbGUgdGhlIG5ldyBgZGRpdmAsIGBkZGl2X3I2YCwgYGRpdmAsIGBkaXZfcjZgLCBgZG1vZGAsIGFuZCBgbW9kYCBpbnN0cnVjdGlvbnMuIFRoZXNlIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBCUEYgSklULCB3aGljaCBpcywgb2YgY291cnNlLCBjb250cm9sbGVkIGJ5IHRoZSBgQ09ORklHX0JQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBHb29kLCBzbyBgQ09ORklHX0JQRl9KSVRgIGlzIGRlZmluaXRlbHkgdGhlIGVuYWJsaW5nIGNvbmZpZy4gTm8gbmVlZCB0byB3b3JyeSBhYm91dCBgQ09ORklHX01JUFMzMl9PMzJgIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4KClNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIGJvdGggYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AsIHRoaXMgYXBwbGllcyB0byBib3RoIDMyLWJpdCBhbmQgNjQtYml0IE1JUFMgYXJjaGl0ZWN0dXJlcy4gU28sIEkgd2lsbCBqdXN0IHNldCB0aGUgY29uZmlnIHRvIGBCUEZfSklUYCB3aGljaCBpcyB0aGUgY29ycmVjdCBvbmUuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUga2V5IHN5bWJvbHMuIGBicGZfaW50X2ppdF9jb21waWxlYCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIEJQRiBKSVQsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGVuIHdlIGhhdmUgYGJ1aWxkX2luc25gLCB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIHRyYW5zbGF0aW5nIEJQRiBpbnN0cnVjdGlvbnMgdG8gTUlQUyBjb2RlLiBBbHNvLCBmdW5jdGlvbnMgbGlrZSBgZW1pdF9hbHVfcmAsIGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQuCgpJbnRlcmVzdGluZ2x5LCBgaml0X3Ntb2Q2NGAgaXMgc3RhdGljLCB3aGljaCBpcyB1c3VhbGx5IGEgcmVkIGZsYWcgd2hlbiBmdXp6aW5nLCBiZWNhdXNlIGl0IG1lYW5zIGl0IGNhbiYjMzk7dCBiZSBjYWxsZWQgZGlyZWN0bHkuIEJ1dCwgaW4gdGhpcyBjYXNlLCBpdHMgYWRkcmVzcyBpcyAqdGFrZW4qIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXI6CgpgYGBjCgljYXNlIEJQRl9NT0Q6CgkJYWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpJmFtcDtqaXRfc21vZDY0IDogKHUzMikmYW1wO2ppdF9tb2Q2NDsKCQlicmVhazsKYGBgCgpUaGF0ICpmb3JjZXMqIGl0IHRvIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgbWFraW5nIGl0IGEgdmlhYmxlIHRhcmdldC4gR29pbmcgdG8gbG9vayBhdCBgaml0X3Ntb2Q2NGAgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AsIGNvbmZpcm1lZCwgaXQmIzM5O3MgdGhlcmUuIFNvIGBqaXRfc21vZDY0YCBpcyBhIGdvIQoKYGJ1aWxkX2luc25gIGlzIGFub3RoZXIgb2J2aW91cyBjYW5kaWRhdGUgYmVjYXVzZSBpdCBpcyBpbiBib3RoIGAuY2AgZmlsZXMsIHNvIGlmIEkgcGljayBpdCwgaXQgd2lsbCB0cmlnZ2VyIGJvdGguIEkgc2hvdWxkIGFsc28gaW5jbHVkZSBgZW1pdF9hbHVfcmAuCgpPa2F5LCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBzb2xlIGNvbmZpZyBuZWVkZWQuCgpUaGVyZWZvcmUsIHRoZSBmb2N1cyBzeW1ib2xzIGFyZToKLSBgYnBmX2ludF9qaXRfY29tcGlsZWAKLSBgYnVpbGRfaW5zbmAKLSBgaml0X3Ntb2Q2NGAKLSBgZW1pdF9hbHVfcmAKCkVuYWJsZSBjb25maWc6IGBCUEZfSklUYAoKKipSZWFzb25pbmc6KioKClRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSBieSBwcm92aWRpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIGNhcGFiaWxpdGllcyB0byB0aGUgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgaG93IGluc3RydWN0aW9ucyBhcmUgdHJhbnNsYXRlZCBhbmQgZXhlY3V0ZWQsIG1ha2luZyBpdCBhIGNyaXRpY2FsIGFyZWEgZm9yIGZ1enppbmcuCgpHb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgaml0X3Ntb2Q2NGAgaXMgc3BlY2lmaWNhbGx5IDMyLWJpdC4gSXQgKmlzKiBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jYC4gT24gNjQtYml0LCBhcyBzZWVuIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBoYXJkd2FyZSBkaXZpc2lvbi9tb2R1bG8gaW5zdHJ1Y3Rpb25zIGFyZSB1c2VkLiBTbyB5ZXMsIGBqaXRfc21vZDY0YCBpcyBuZWVkZWQgZm9yIDMyLWJpdCBlbXVsYXRpb24gb2YgNjQtYml0IHNpZ25lZCBtb2R1bG8uCgpBbGwgcmlnaHQsIHRoYXQgY292ZXJzIGl0LiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnVpbGRfaW5zbiYjMzQ7LAogICAgJiMzNDtqaXRfc21vZDY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBNSVBTIG1pY3JvLWFzc2VtYmxlciB0byBzdXBwb3J0IHNpZ25lZCBkaXYvbW9kIGluc3RydWN0aW9ucyBhbmQgdXBkYXRlcyB0aGUgQlBGIEpJVCBjb21waWxlciB0byB1c2UgdGhlbSB3aGVuIHRyYW5zbGF0aW5nIEJQRl9ESVYgYW5kIEJQRl9NT0QgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIHNpZ25lZCBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklUKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnVpbGRfaW5zbiYjMzQ7LAogICAgJiMzNDtqaXRfc21vZDY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBNSVBTIG1pY3JvLWFzc2VtYmxlciB0byBzdXBwb3J0IHNpZ25lZCBkaXYvbW9kIGluc3RydWN0aW9ucyBhbmQgdXBkYXRlcyB0aGUgQlBGIEpJVCBjb21waWxlciB0byB1c2UgdGhlbSB3aGVuIHRyYW5zbGF0aW5nIEJQRl9ESVYgYW5kIEJQRl9NT0QgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIHNpZ25lZCBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklUKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjEwLjU3NjA3MzQ1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Njg0NzcxMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJidWlsZF9pbnNuXCIsXG4gICAgXCJqaXRfc21vZDY0XCIsXG4gICAgXCJlbWl0X2FsdV9yXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBNSVBTIG1pY3JvLWFzc2VtYmxlciB0byBzdXBwb3J0IHNpZ25lZCBkaXYvbW9kIGluc3RydWN0aW9ucyBhbmQgdXBkYXRlcyB0aGUgQlBGIEpJVCBjb21waWxlciB0byB1c2UgdGhlbSB3aGVuIHRyYW5zbGF0aW5nIEJQRl9ESVYgYW5kIEJQRl9NT0QgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIHNpZ25lZCBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklUKSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MTAuNTc2MDgwOTIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU0MjE3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMzllZDRlZjMwZTQ5ZGQ0NzhkMDM0OTc5MTMxY2Y4MmU2MmNkMjY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjMzOjA5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uOWQzZWRiNTllZmMwOSAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XFxuIElwX3UydTEoX2N0Y21zYSk7XFxuIElwX3UydTFzMyhfZGFkZGl1KTtcXG4gSXBfdTN1MXUyKF9kYWRkdSk7XFxuK0lwX3UxdTIoX2RkaXYpO1xcbitJcF91M3UxdTIoX2RkaXZfcjYpO1xcbiBJcF91MXUyKF9kZGl2dSk7XFxuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xcbiBJcF91MShfZGkpO1xcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcXG4gSXBfdTJ1MW1zYnUzKF9kaW5zdSk7XFxuK0lwX3UxdTIoX2Rpdik7XFxuK0lwX3UzdTF1MihfZGl2X3I2KTtcXG4gSXBfdTF1MihfZGl2dSk7XFxuIElwX3UzdTF1MihfZGl2dV9yNik7XFxuIElwX3UxdTJ1MyhfZG1mYzApO1xcbitJcF91M3UxdTIoX2Rtb2QpO1xcbiBJcF91M3UxdTIoX2Rtb2R1KTtcXG4gSXBfdTF1MnUzKF9kbXRjMCk7XFxuIElwX3UxdTIoX2RtdWx0dSk7XFxuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xcbiBJcF91MXUydTMoX21maGMwKTtcXG4gSXBfdTEoX21maGkpO1xcbiBJcF91MShfbWZsbyk7XFxuK0lwX3UzdTF1MihfbW9kKTtcXG4gSXBfdTN1MXUyKF9tb2R1KTtcXG4gSXBfdTN1MXUyKF9tb3ZuKTtcXG4gSXBfdTN1MXUyKF9tb3Z6KTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXFxuaW5kZXggZTE1YzY3MDBjZDA4OC4uZWYxYTJiMDQwMDcwMCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG5AQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xcbiBcXHRbaW5zbl9jdGNtc2FdXFx0PSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSxcXG4gXFx0W2luc25fZGFkZGl1XVxcdD0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LFxcbiBcXHRbaW5zbl9kYWRkdV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSxcXG4rXFx0W2luc25fZGRpdl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSxcXG4rXFx0W2luc25fZGRpdl9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZGRpdjZfb3AsIGRkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kZGl2dV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZ1X29wKSwgUlMgfCBSVH0sXFxuIFxcdFtpbnNuX2RkaXZ1X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZGRpdnU2X29wLCBkZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuQEAgLTgyLDEwICs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xcbiBcXHRbaW5zbl9kaW5zXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXFxuIFxcdFtpbnNuX2RpbnNtXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxcbiBcXHRbaW5zbl9kaW5zdV1cXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcXG4rXFx0W2luc25fZGl2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sXFxuK1xcdFtpbnNuX2Rpdl9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9kaXY2X29wLCBkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kaXZ1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2dV9vcCksIFJTIHwgUlR9LFxcbiBcXHRbaW5zbl9kaXZ1X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9kaXZ1Nl9vcCwgZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RtZmMwXVxcdD0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxcbitcXHRbaW5zbl9kbW9kXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kbW9kX29wLCBkZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZG1vZHVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kbW9kdV9vcCwgZGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kbXRjMF1cXHQ9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcXG5AQCAtMTQwLDYgKzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XFxuIFxcdFtpbnNuX21maGMwXVxcdD0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sXFxuIFxcdFtpbnNuX21maGldXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LFxcbiBcXHRbaW5zbl9tZmxvXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSxcXG4rXFx0W2luc25fbW9kXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fbW9kdV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX21vdm5dXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSxcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uYyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcXG5pbmRleCAxMjUxNDA5NzlkNjJjLi4wNmQ3MjI2NjU0NTFmIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuQEAgLTQ5LDE4ICs0OSwyMCBAQCBlbnVtIG9wY29kZSB7XFxuIFxcdGluc25fYWRkaXUsIGluc25fYWRkdSwgaW5zbl9hbmQsIGluc25fYW5kaSwgaW5zbl9iYml0MCwgaW5zbl9iYml0MSxcXG4gXFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcXG4gXFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxcbi1cXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdnUsXFxuLVxcdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxcbi1cXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxcbitcXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcXG4rXFx0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXFxuK1xcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXFxuK1xcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXFxuIFxcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcXG4gXFx0aW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCxcXG4gXFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxcbiBcXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxcbiBcXHRpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLFxcbiBcXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcXG4tXFx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXFxuLVxcdGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LCBpbnNuX211aHUsIGluc25fbm9yLFxcbi1cXHRpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLFxcbitcXHRpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsXFxuK1xcdGluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LFxcbitcXHRpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLFxcbitcXHRpbnNuX3NiLCBpbnNuX3NjLFxcbiBcXHRpbnNuX3NjZCwgaW5zbl9zZWxlcXosIGluc25fc2VsbmV6LCBpbnNuX3NkLCBpbnNuX3NoLCBpbnNuX3NsbCxcXG4gXFx0aW5zbl9zbGx2LCBpbnNuX3NsdCwgaW5zbl9zbHRpLCBpbnNuX3NsdGl1LCBpbnNuX3NsdHUsIGluc25fc3JhLFxcbiBcXHRpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLFxcbkBAIC0yODcsOSArMjg5LDEyIEBAIElfdTF1MihfY2ZjMSlcXG4gSV91MnUxKF9jZmNtc2EpXFxuIElfdTF1MihfY3RjMSlcXG4gSV91MnUxKF9jdGNtc2EpXFxuK0lfdTF1MihfZGRpdilcXG4rSV91M3UxdTIoX2RkaXZfcjYpXFxuIElfdTF1MihfZGRpdnUpXFxuIElfdTN1MXUyKF9kZGl2dV9yNilcXG4gSV91MXUydTMoX2RtZmMwKVxcbitJX3UzdTF1MihfZG1vZClcXG4gSV91M3UxdTIoX2Rtb2R1KVxcbiBJX3UxdTJ1MyhfZG10YzApXFxuIElfdTF1MihfZG11bHR1KVxcbkBAIC0yOTcsNiArMzAyLDggQEAgSV91M3UxdTIoX2RtdWx1KVxcbiBJX3UydTFzMyhfZGFkZGl1KVxcbiBJX3UzdTF1MihfZGFkZHUpXFxuIElfdTEoX2RpKTtcXG4rSV91MXUyKF9kaXYpXFxuK0lfdTN1MXUyKF9kaXZfcjYpXFxuIElfdTF1MihfZGl2dSlcXG4gSV91M3UxdTIoX2RpdnVfcjYpXFxuIElfdTJ1MShfZHNiaCk7XFxuQEAgLTMzMiw2ICszMzksNyBAQCBJX3UyczN1MShfbHcpXFxuIElfdTJzM3UxKF9sd3UpXFxuIElfdTF1MnUzKF9tZmMwKVxcbiBJX3UxdTJ1MyhfbWZoYzApXFxuK0lfdTN1MXUyKF9tb2QpXFxuIElfdTN1MXUyKF9tb2R1KVxcbiBJX3UzdTF1MihfbW92bilcXG4gSV91M3UxdTIoX21vdnopXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggNmVlNGFiZTZhMWY3MC4uYTY3ODg1ZDI4OTQyZiAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYylcXG4gfVxcbiBcXG4gLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqL1xcbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxcbitib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0Y2FzZSBCUEZfTkVHOlxcbkBAIC0yMzcsNiArMjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcXG4gXFx0XFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbitcXHRcXHQvKiBEbyBub3QgdXNlIHVuc2lnbmVkIHNoaWZ0L21hc2sgcmV3cml0ZXMgZm9yIHNpZ25lZCBkaXYvbW9kLiAqL1xcbitcXHRcXHRpZiAoaXNfc2lnbmVkKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdFxcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cXG4gXFx0XFx0cmV0dXJuICh1MzIpaW1tIFxcdTAwM2M9IDB4MTAwMDAgXFx1MDAyNlxcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XFxuIFxcdH1cXG5AQCAtMzM4LDggKzM0MSw0MCBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZW1pdF9kaXYoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBib29sIGlzX3NpZ25lZClcXG4re1xcbitcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbitcXHRcXHRpZiAoaXNfc2lnbmVkKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKVxcbit7XFxuK1xcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZClcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwMjYgc3JjICovXFxuQEAgLTM4NSwyMSArNDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0IC8gc3JjICovXFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4tXFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4tXFx0XFx0fVxcbitcXHRcXHRlbWl0X2RpdihjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0ICUgc3JjICovXFxuIFxcdGNhc2UgQlBGX01PRDpcXG4tXFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcXG4tXFx0XFx0fVxcbitcXHRcXHRlbWl0X21vZChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXFxuaW5kZXggYTM3ZmUyMDgxOGViOS4uMzkyNjZkYWE2ZGE2ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pO1xcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcXG4gXFxuIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi9cXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcXG4gXFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XFxuQEAgLTE3Miw3ICsxNzIsOCBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcXG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcXG4gXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcXG4rXFx0XFx0Ym9vbCBpc19zaWduZWQpO1xcbiBcXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXFxuIHZvaWQgZW1pdF9hdG9taWNfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYsIHU4IGNvZGUpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcXG5pbmRleCA0MGE4NzhiNjcyZjVkLi5jOGQ0NWE1ZDU0ZDgzIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbiBcXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcXG4gfVxcbiBcXG4tLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovXFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xcbiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXFxuIHtcXG4gXFx0dTY0IHJlbTtcXG5AQCAtNTIxLDkgKzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXFxuIFxcdHJldHVybiByZW07XFxuIH1cXG4gXFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cXG4rc3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcXG4re1xcbitcXHR1NjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcXG4rXFxuK1xcdHJldHVybiBhIC0gcXVvdCAqIGI7XFxuK31cXG4rXFxuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXFxuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4tXFx0XFx0XFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXFxuK1xcdFxcdFxcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxcbiB7XFxuIFxcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXFxuIFxcdGNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovXFxuQEAgLTU0NiwxMSArNTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGFkZHIgPSAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuK1xcdFxcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVxcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRhZGRyID0gKHUzMilcXHUwMDI2aml0X21vZDY0O1xcbitcXHRcXHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXFx1MDAyNmppdF9tb2Q2NDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XFxuQEAgLTE0NjksNiArMTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdHU4IGNvZGUgPSBpbnNuLVxcdTAwM2Vjb2RlO1xcbiBcXHRzMTYgb2ZmID0gaW5zbi1cXHUwMDNlb2ZmO1xcbiBcXHRzMzIgaW1tID0gaW5zbi1cXHUwMDNlaW1tO1xcbitcXHRib29sIGlzX3NpZ25lZCA9IG9mZiA9PSAxO1xcbiBcXHRzMzIgdmFsLCByZWw7XFxuIFxcdHU4IGFsdSwgam1wO1xcbiBcXG5AQCAtMTUxNiw5ICsxNTI1LDEwIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XFxuLVxcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XFxuK1xcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGlzX3NpZ25lZCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLFxcbitcXHRcXHRcXHRcXHQgICBpc19zaWduZWQpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtMTU0Niw3ICsxNTU2LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuIFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuQEAgLTE1OTksNyArMTYwOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcXG4tXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cXG4gXFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXFxuQEAgLTE2MjksNyArMTYzOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqL1xcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xcbiBcXHQvKiBkc3QgPSBodG9iZShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmNhMjc0MWYxNDQ4M2QgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTE5Nyw4ICsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbiBcXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxcbitcXHRcXHQgICAgICAgYm9vbCBpc19zaWduZWQpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZClcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxcbitcXHRcXHQgICAgICAgYm9vbCBpc19zaWduZWQpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZClcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbitcXHRcXHRcXHQgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCBcXHUwMDNjXFx1MDAzYyBzcmMgKi9cXG5AQCAtMjM1LDI1ICsyNzAsMTUgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfRElWOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0ICUgc3JjICovXFxuIFxcdGNhc2UgQlBGX01PRDpcXG4tXFx0XFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdC8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqL1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgZmFsc2UpO1xcbiBcXHR9XFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbkBAIC02NDAsNiArNjY1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0dTggY29kZSA9IGluc24tXFx1MDAzZWNvZGU7XFxuIFxcdHMxNiBvZmYgPSBpbnNuLVxcdTAwM2VvZmY7XFxuIFxcdHMzMiBpbW0gPSBpbnNuLVxcdTAwM2VpbW07XFxuK1xcdGJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7XFxuIFxcdHMzMiB2YWwsIHJlbDtcXG4gXFx0dTggYWx1LCBqbXA7XFxuIFxcbkBAIC02NzQsOSArNzAwLDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgZmFsc2UpKSB7XFxuIFxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XFxuLVxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtNjk2LDEwICs3MjIsMTEgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkge1xcbiBcXHRcXHRcXHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XFxuIFxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XFxuLVxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXFxuK1xcdFxcdFxcdFxcdCAgIGlzX3NpZ25lZCk7XFxuIFxcdFxcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXFx1MDAyNmFsdSwgXFx1MDAyNnZhbCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XFxuQEAgLTcxNCw3ICs3NDEsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAzZVxcdTAwM2Ugc3JjICovXFxuQEAgLTczMyw3ICs3NjAsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xcbiBcXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xcbkBAIC03NzAsOSArNzk3LDEwIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6XFxuLVxcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XFxuK1xcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGlzX3NpZ25lZCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXFxuK1xcdFxcdFxcdFxcdCAgICAgaXNfc2lnbmVkKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC03OTksNyArODI3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBodG9sZShkc3QpICovXFxuIFxcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MTEuMDAyMjAxNTE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDQyNTg2MzQxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJ1aWxkX2luc25cIixcbiAgICBcImppdF9zbW9kNjRcIixcbiAgICBcImVtaXRfYWx1X3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIHRvIHN1cHBvcnQgc2lnbmVkIGRpdi9tb2QgaW5zdHJ1Y3Rpb25zIGFuZCB1cGRhdGVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSB0aGVtIHdoZW4gdHJhbnNsYXRpbmcgQlBGX0RJViBhbmQgQlBGX01PRCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgc2lnbmVkIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMzllZDRlZjMwZTQ5ZGQ0NzhkMDM0OTc5MTMxY2Y4MmU2MmNkMjY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6MzM6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uOWQzZWRiNTllZmMwOSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XG4gSXBfdTJ1MShfY3RjbXNhKTtcbiBJcF91MnUxczMoX2RhZGRpdSk7XG4gSXBfdTN1MXUyKF9kYWRkdSk7XG4rSXBfdTF1MihfZGRpdik7XG4rSXBfdTN1MXUyKF9kZGl2X3I2KTtcbiBJcF91MXUyKF9kZGl2dSk7XG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XG4gSXBfdTEoX2RpKTtcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xuIElwX3UydTFtc2J1MyhfZGluc20pO1xuIElwX3UydTFtc2J1MyhfZGluc3UpO1xuK0lwX3UxdTIoX2Rpdik7XG4rSXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4rSXBfdTN1MXUyKF9kbW9kKTtcbiBJcF91M3UxdTIoX2Rtb2R1KTtcbiBJcF91MXUydTMoX2RtdGMwKTtcbiBJcF91MXUyKF9kbXVsdHUpO1xuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xuIElwX3UxdTJ1MyhfbWZoYzApO1xuIElwX3UxKF9tZmhpKTtcbiBJcF91MShfbWZsbyk7XG4rSXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuaW5kZXggZTE1YzY3MDBjZDA4OC4uZWYxYTJiMDQwMDcwMCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuKysrIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5AQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fY3RjbXNhXVx0PSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RhZGRpdV1cdD0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LFxuIFx0W2luc25fZGFkZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSxcbitcdFtpbnNuX2RkaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSxcbitcdFtpbnNuX2RkaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZGRpdjZfb3AsIGRkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RkaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGRpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbkBAIC04MiwxMCArODUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2RpbnNdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc21dXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zbV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnN1XVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc3Vfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4rXHRbaW5zbl9kaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LFxuK1x0W2luc25fZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbWZjMF1cdD0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuK1x0W2luc25fZG1vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kbW9kX29wLCBkZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbXRjMF1cdD0ge00oY29wMF9vcCwgZG10Y19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuQEAgLTE0MCw2ICsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fbWZoYzBdXHQ9IHtNKGNvcDBfb3AsIG1maGMwX29wLCAwLCAwLCAwLCAwKSwgIFJUIHwgUkQgfCBTRVR9LFxuIFx0W2luc25fbWZoaV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZoaV9vcCksIFJEfSxcbiBcdFtpbnNuX21mbG9dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1mbG9fb3ApLCBSRH0sXG4rXHRbaW5zbl9tb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9tb2R1X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb3ZuXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSxcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS5jIGIvYXJjaC9taXBzL21tL3Vhc20uY1xuaW5kZXggMTI1MTQwOTc5ZDYyYy4uMDZkNzIyNjY1NDUxZiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbkBAIC00OSwxOCArNDksMjAgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbitcdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LFxuK1x0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXG4rXHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuK1x0aW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiBcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcbiBcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXG4gXHRpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsXG4gXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxuIFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcbiBcdGluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLFxuLVx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4tXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcbi1cdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXG4rXHRpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsXG4rXHRpbnNuX210aGMwLCBpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSxcbitcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXG4rXHRpbnNuX3NiLCBpbnNuX3NjLFxuIFx0aW5zbl9zY2QsIGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXG4gXHRpbnNuX3NsbHYsIGluc25fc2x0LCBpbnNuX3NsdGksIGluc25fc2x0aXUsIGluc25fc2x0dSwgaW5zbl9zcmEsXG4gXHRpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLFxuQEAgLTI4Nyw5ICsyODksMTIgQEAgSV91MXUyKF9jZmMxKVxuIElfdTJ1MShfY2ZjbXNhKVxuIElfdTF1MihfY3RjMSlcbiBJX3UydTEoX2N0Y21zYSlcbitJX3UxdTIoX2RkaXYpXG4rSV91M3UxdTIoX2RkaXZfcjYpXG4gSV91MXUyKF9kZGl2dSlcbiBJX3UzdTF1MihfZGRpdnVfcjYpXG4gSV91MXUydTMoX2RtZmMwKVxuK0lfdTN1MXUyKF9kbW9kKVxuIElfdTN1MXUyKF9kbW9kdSlcbiBJX3UxdTJ1MyhfZG10YzApXG4gSV91MXUyKF9kbXVsdHUpXG5AQCAtMjk3LDYgKzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4rSV91MXUyKF9kaXYpXG4rSV91M3UxdTIoX2Rpdl9yNilcbiBJX3UxdTIoX2RpdnUpXG4gSV91M3UxdTIoX2RpdnVfcjYpXG4gSV91MnUxKF9kc2JoKTtcbkBAIC0zMzIsNiArMzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuK0lfdTN1MXUyKF9tb2QpXG4gSV91M3UxdTIoX21vZHUpXG4gSV91M3UxdTIoX21vdm4pXG4gSV91M3UxdTIoX21vdnopXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDZlZTRhYmU2YTFmNzAuLmE2Nzg4NWQyODk0MmYgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpXG4gfVxuIFxuIC8qIFZhbGlkYXRlIEFMVSBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0Y2FzZSBCUEZfTkVHOlxuQEAgLTIzNyw2ICsyMzcsOSBAQCBib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuIFx0XHRyZXR1cm4gaW1tID09IDAgfHwgKGltbSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihpbW0pKTtcbiBcdGNhc2UgQlBGX0RJVjpcbiBcdGNhc2UgQlBGX01PRDpcbitcdFx0LyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi9cbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM4LDggKzM0MSw0MCBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmIChpc19zaWduZWQpXG4rXHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgbW9kLCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmIChpc19zaWduZWQpXG4rXHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4rXHR9XG4rfVxuK1xuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAqL1xuQEAgLTM4NSwyMSArNDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuLVx0XHR9XG4rXHRcdGVtaXRfZGl2KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0ICUgc3JjICovXG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbmluZGV4IGEzN2ZlMjA4MThlYjkuLjM5MjY2ZGFhNmRhNmQgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4rYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgYm9vbCBpc19zaWduZWQpO1xuIFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cbiBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbkBAIC0xNzIsNyArMTcyLDggQEAgYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcbiBcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuK1x0XHRib29sIGlzX3NpZ25lZCk7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkLi5jOGQ0NWE1ZDU0ZDgzIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiB7XG4gXHR1NjQgcmVtO1xuQEAgLTUyMSw5ICs1MjEsMTcgQEAgc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuIFx0cmV0dXJuIHJlbTtcbiB9XG4gXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuK3N0YXRpYyBzNjQgaml0X3Ntb2Q2NChzNjQgYSwgczY0IGIpXG4re1xuK1x0dTY0IHF1b3QgPSBkaXY2NF9zNjQoYSwgYik7XG4rXG4rXHRyZXR1cm4gYSAtIHF1b3QgKiBiO1xuK31cbitcbiAvKiBBTFUgZGl2L21vZCByZWdpc3RlciAoNjQtYml0KSAqL1xuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbi1cdFx0XHQgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcbitzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuK1x0XHRcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuQEAgLTU0NiwxMSArNTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbitcdFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXHUwMDI2ZGl2NjRfczY0IDogKHUzMilcdTAwMjZkaXY2NF91NjQ7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0ICUgc3JjICovXG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmppdF9tb2Q2NDtcbitcdFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDksIGFkZHIpO1xuQEAgLTE0NjksNiArMTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHR1OCBjb2RlID0gaW5zbi1cdTAwM2Vjb2RlO1xuIFx0czE2IG9mZiA9IGluc24tXHUwMDNlb2ZmO1xuIFx0czMyIGltbSA9IGluc24tXHUwMDNlaW1tO1xuK1x0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcbiBcdHMzMiB2YWwsIHJlbDtcbiBcdHU4IGFsdSwgam1wO1xuIFxuQEAgLTE1MTYsOSArMTUyNSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSxcbitcdFx0XHRcdCAgIGlzX3NpZ25lZCk7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGxvKGRzdCksIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTE1NDYsNyArMTU1Niw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC0xNTk5LDcgKzE2MDksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHQgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuXG4gXHRcdCAqL1xuIFx0XHRlbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICg2NC1iaXQpICovXG4gXHQvKiBkc3QgPSBkc3QgfCBzcmMgKDY0LWJpdCkgKi9cbkBAIC0xNjI5LDcgKzE2MzksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0LyogZHN0ID0gZHN0ICUgc3JjICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBodG9sZShkc3QpICovXG4gXHQvKiBkc3QgPSBodG9iZShkc3QpICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5jYTI3NDFmMTQ0ODNkIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOTcsOCArMTk3LDQzIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsXG4rXHRcdCAgICAgICBib29sIGlzX3NpZ25lZClcbit7XG4rXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRpZiAoaXNfc2lnbmVkKVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAoaXNfc2lnbmVkKVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxuK1x0XHQgICAgICAgYm9vbCBpc19zaWduZWQpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgZG1vZCwgZHN0LCBkc3QsIHNyYyk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuK1x0fVxuK31cbitcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4rXHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzY1x1MDAzYyBzcmMgKi9cbkBAIC0yMzUsMjUgKzI3MCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuLVx0XHR9XG4rXHRcdGVtaXRfZGl2NjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuLVx0XHR9XG4rXHRcdGVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjQwLDYgKzY2NSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHR1OCBjb2RlID0gaW5zbi1cdTAwM2Vjb2RlO1xuIFx0czE2IG9mZiA9IGluc24tXHUwMDNlb2ZmO1xuIFx0czMyIGltbSA9IGluc24tXHUwMDNlaW1tO1xuK1x0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcbiBcdHMzMiB2YWwsIHJlbDtcbiBcdHU4IGFsdSwgam1wO1xuIFxuQEAgLTY3NCw5ICs3MDAsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBmYWxzZSkpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTY5NiwxMCArNzIyLDExIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4rXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGlzX3NpZ25lZCkpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4rXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG4rXHRcdFx0XHQgICBpc19zaWduZWQpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG5AQCAtNzE0LDcgKzc0MSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICs3NjAsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxuIFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdGVtaXRfc2V4dChjdHgsIE1JUFNfUl9UNCwgc3JjKTtcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcbiBcdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXG5AQCAtNzcwLDkgKzc5NywxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLFxuK1x0XHRcdFx0ICAgICBpc19zaWduZWQpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNzk5LDcgKzgyNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjExLjAwMjIwMzU2NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MTQ4MTAzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUlQUyBCUEYgSklUIENvbXBpbGVyOiBTaWduZWQgRGl2aXNpb24gYW5kIE1vZHVsbyBTdXBwb3J0IC0gV29ydGh5IG9mIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IGZvciB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIHNpZ25pZmljYW50LCBpdCBleHRlbmRzIHRoZSBCUEYgY2FwYWJpbGl0aWVzIG9uIE1JUFMsIHNwZWNpZmljYWxseSBieSBhZGRpbmcgdGhlIG5lY2Vzc2FyeSBNSVBTIGluc3RydWN0aW9ucyAoYGRkaXZgLCBgZGRpdl9yNmAsIGBkaXZgLCBgZGl2X3I2YCwgYGRtb2RgLCBgbW9kYCwgZXRjLikgd2l0aGluIGBhcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oYCwgYGFyY2gvbWlwcy9tbS91YXNtLW1pcHMuY2AsIGFuZCBgYXJjaC9taXBzL21tL3Vhc20uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBsZXZlcmFnaW5nIHRoZXNlIGluc3RydWN0aW9ucyB3aGVuIGBpc19zaWduZWRgIGlzIHRydWUgZm9yIGBCUEZfRElWYCBhbmQgYEJQRl9NT0RgIGluc3RydWN0aW9ucyBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBhbmQgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBtZWFucyB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyIGNhbiBub3cgaGFuZGxlIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eSwgYW5kIHllcywgdGhpcyBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZS4gV2UgY2FuIHRyaWdnZXIgdGhpcyBmdW5jdGlvbmFsaXR5IHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIGJ5IGxvYWRpbmcgYSBCUEYgcHJvZ3JhbSBjb250YWluaW5nIHNpZ25lZCBkaXZpc2lvbi9tb2R1bG8gaW5zdHJ1Y3Rpb25zLlxuXG5UaGlua2luZyBhYm91dCBmdXp6aW5nLCB0aGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgTUlQUyBzdXBwb3J0IGluIGdlbmVyYWwuIEFuZCB5ZXMsIHN5emthbGxlciBoYXMgTUlQUyBzdXBwb3J0LiBXZSBoYXZlIGBtaXBzNjRsZWAsIGBtaXBzMzJgLCBldGMuLCBjb3ZlcmVkIVxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydDogdGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0aGF0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjb2RlIGNhbiBiZSBleGVjdXRlZC4gQmFzZWQgb24gdGhlIHByb21wdCwgdGhpcyBtZWFucyBJIG5lZWQgdG8gdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGNvbmZpcm0gZXhlY3V0aW9uLiBTbywgdGhpcyBkZWZpbml0ZWx5IG1lYW5zIGl0J3MgV29ydGhGdXp6aW5nPXRydWUuXG5cbkJlZm9yZSBJIHNheSB0aGF0IHdpdGggY29uZmlkZW5jZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gQ09ORklHX0JQRl9KSVQgaXMgbmVjZXNzYXJ5IGFzIGl0IHByb3ZpZGVzIHRoZSBCUEYgSklUIGluZnJhc3RydWN0dXJlLiBBbHNvLCBDT05GSUdfTUlQUyBpcyBvYnZpb3VzbHkgbmVlZGVkIGJlY2F1c2UgdGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIGFyY2hpdGVjdHVyZS5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGU6IEknbGwgZm9jdXMgb24gdGhlIHNwZWNpZmljIGZpbGVzIGFuZCBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIEkgbmVlZCB0byBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb25zOiBgZW1pdF9kaXZgLCBgZW1pdF9tb2RgLCBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9kaXY2NGAsIGBlbWl0X21vZDY0YCwgYGVtaXRfYWx1X3I2NGAsIGFuZCBgYnVpbGRfaW5zbmAuIEknbGwgYWxzbyBkb3VibGUtY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIGJlIGNlcnRhaW4uXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIGNoYW5nZSB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA0NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjE4LjYxNzAxNjUxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkxNzQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbWlwcy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM9OTMyPWJvb2wgYnBmX2ppdF9uZWVkc196ZXh0KHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTkzNi1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjkzNzpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtOTM4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MTguNjU5OTM4NjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYwMDY0MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZvY3VzOiBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBhIHNwZWNpZmljIGFyZWEgd2l0aGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIE15IHByaW1hcnkgdGFyZ2V0cyBhcmUgdGhlIGBidWlsZF9pbnNuYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgaW5zdHJ1Y3Rpb24gYnVpbGRpbmcgbG9naWMgcmVzaWRlcywgbmF0dXJhbGx5LlxuXG5CZXlvbmQgYGJ1aWxkX2luc25gLCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGl2aXNpb24gYW5kIG1vZHVsbyBpbXBsZW1lbnRhdGlvbnMuIFRoZSBmdW5jdGlvbnMgdG8gZXhhbWluZSB3aWxsIGJlIGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgLCBgZW1pdF9kaXZtb2RfcjY0YCBhbmQgYGppdF9zbW9kNjRgLiBHZXR0aW5nIHRoZXNlIGZ1bmN0aW9ucyB3b3JraW5nIGNvcnJlY3RseSBpcyBwYXJhbW91bnQgZm9yIHBlcmZvcm1hbmNlIGFuZCBjb3JyZWN0bmVzcy5cblxuTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjayBiZWZvcmUgSSBkaXZlIGRlZXBlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCB0byBzZWUgaWYgYGJ1aWxkX2luc25gIGlzIGRlY2xhcmVkIHN0YXRpYy4gS25vd2luZyB0aGF0IHdpbGwgaW1wYWN0IHRoZSB3YXkgSSB0aGluayBhYm91dCBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBmb3IgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM4OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTozMzoyMi44MjAwMDUxNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MDcyMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnVpbGRfaW5zblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTg3NT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTg5NS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjg5NjpcXHRcXHRyZXQgPSBidWlsZF9pbnNuKGluc24sIGN0eCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy04OTctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oPTIyMz12b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBpbnQgZGVzdF9yZWcpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0yMzMtICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaDoyMzQ6aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0yMzUtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTQ1Mj12b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBpbnQgZGVzdF9yZWcpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ3MC0vKiBCdWlsZCBvbmUgZUJQRiBpbnN0cnVjdGlvbiAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNDcxOmludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE0NzIte1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTY0ND12b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBpbnQgZGVzdF9yZWcpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjU5LS8qIEJ1aWxkIG9uZSBlQlBGIGluc3RydWN0aW9uICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjY2MDppbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy02NjEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTozMzoyMi44NjU1MzAwNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA4NDM4MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQlBGIEpJVCBjb21waWxhdGlvbiBmdW5jdGlvbnMgZm9yIE1JUFMsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgYnVpbGRfaW5zbmAgaXNuJ3Qgc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyBzdGF0aWMgZnVuY3Rpb25zIHR5cGljYWxseSBoYXZlIGludGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzdWdnZXN0cyBgYnVpbGRfaW5zbmAgbWlnaHQgYmUgdXNlZCBtb3JlIGJyb2FkbHkuXG5cblRoZW4gSSBzZWUgYSBjb3VwbGUgb2YgZnVuY3Rpb25zLCBgZW1pdF9kaXZgIGFuZCBgZW1pdF9tb2RgLCB0aGF0ICphcmUqIHN0YXRpYywgYW5kIHRoZXkgcmVzaWRlIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCdzIGV4cGVjdGVkLCBnaXZlbiB0aGVpciByb2xlIGluIGdlbmVyYXRpbmcgb3B0aW1pemVkIGNvZGUgZm9yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucy4gU2ltaWxhcmx5LCBgZW1pdF9kaXY2NGAgYW5kIGBlbWl0X21vZDY0YCBhcmUgc3RhdGljIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBhbmQgYGVtaXRfZGl2bW9kX3I2NGAgYW5kIGBqaXRfc21vZDY0YCBhcmUgc3RhdGljIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLlxuXG5Ob3csIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jYCB0byBzZWUgaWYgSSBjYW4gZmluZCBgZW1pdF9hbHVfcmAsIHNpbmNlIEknbSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmdW5jdGlvbidzIHNjb3BlIGFuZCBwb3NzaWJsZSBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIGJ1aWxkIGEgY2xlYXJlciBtZW50YWwgbW9kZWwgb2YgdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlcidzIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0MDksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MjcuMzczOTcwNDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDMzMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pdF9hbHVfclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTM2MD1zdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNzYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM6Mzc3OnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTM3OC17XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oPTE3Mj12b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTc1OnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMTc2LVxcdFxcdGJvb2wgaXNfc2lnbmVkKTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0yMDE9c3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTI2Ni0vKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjI2NzpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTI2OC1cXHRcXHRcXHQgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDcxPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTUyOS1cXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q2LCBpbW0pO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTMwOlxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSxcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTUzMS1cXHRcXHRcXHRcXHQgICBpc19zaWduZWQpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NTgtXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTU5OlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NjAtXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyMy1cXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9TVUIgfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTYyNDpcXHRcXHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyNS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz0yMTc9c3RhdGljIHZvaWQgZW1pdF9tb2Q2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjM0LS8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjM1OnN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMzYtXFx0XFx0XFx0IGJvb2wgaXNfc2lnbmVkKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTI4MC1cXHRcXHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjgxOlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjgyLVxcdH1cXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz02NjA9aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MDQtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzA1OlxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTcwNi1cXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzI3LVxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjcyODpcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSxcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzI5LVxcdFxcdFxcdFxcdCAgIGlzX3NpZ25lZCk7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzQzLVxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzQ0OlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc0NS1cXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03NjItXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3NjM6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc2NC1cXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MDEtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6ODAyOlxcdFxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTgwMy1cXHRcXHRcXHRcXHQgICAgIGlzX3NpZ25lZCk7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODI5LVxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo4MzA6XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODMxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTozMzoyNy40MTg4MjQ5MzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc4MTE1NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1JUFMgQlBGIEpJVCBDb21waWxlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IHRvIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBvbiBNSVBTIGFyY2hpdGVjdHVyZS4gVGhhdCdzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBwcmltZSBlbnRyeSBwb2ludCBpcyBkZWZpbml0ZWx5IGBicGZfaW50X2ppdF9jb21waWxlYC4gSSdsbCB3YW50IHRvIHRhcmdldCB0aGF0IGZvciBzdXJlLiBHaXZlbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUsIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY2FsbHMgdG8gYGJ1aWxkX2luc25gLiBJIHNlZSBpdCBkZWZpbmVkIGluIGJvdGggYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AuIEJ1dCBob2xkIG9uLCBgYnVpbGRfaW5zbmAgaXNuJ3Qgc3RhdGljLCBzbyBpdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBzeW1ib2wgYWRkcmVzcywgd2hpY2ggaXMgZ29vZCBmb3IgZnV6emluZy4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIHRoZSBtYWluIHRoaW5nIGhlcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGluc3RydWN0aW9ucyBhcmUgYnVpbHQuXG5cbkxldCdzIGNvbmZpcm0gaG93IGBicGZfaW50X2ppdF9jb21waWxlYCBpbnRlcmFjdHMgd2l0aCBgYnVpbGRfaW5zbmAuIEknbGwgcGVlayBhdCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBidWlsZF9ib2R5YCBjYWxscyBgYnVpbGRfaW5zbmAsIHNvIHRoYXQncyB0aGUgY2hhaW4uIEkgY2FuIHByb2JhYmx5IGZ1enogdGhlIGBicGZfaW50X2ppdF9jb21waWxlYCBmdW5jdGlvbiwgYW5kIHNlZSBob3cgaXQgYnVpbGRzIGluc3RydWN0aW9ucy5cblxuTm93LCBjb25maWcgcmVxdWlyZW1lbnRzIGFyZSBpbXBvcnRhbnQuIE5hdHVyYWxseSwgYENPTkZJR19CUEZfSklUYCBpcyBhIG11c3QuIEFuZCwgc2luY2UgdGhpcyBpcyBNSVBTIHNwZWNpZmljLCBJIGRvbid0IG5lZWQgYENPTkZJR19NSVBTYCBiZWNhdXNlIGl0J3MgdGhlIGFyY2hpdGVjdHVyZSBpdHNlbGYuIEkgd2lsbCBsb29rIGludG8gYGFyY2gvbWlwcy9LY29uZmlnYCBvciBgYXJjaC9taXBzL25ldC9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBvciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjMyLjc5Njk0MzgyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNDIxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9jb21wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbWlwcy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU9Nj1pZmVxICgkKENPTkZJR18zMkJJVCkseSlcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTE4LSAqXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzoxOTogKiAtIGJwZl9qaXRfY29tcC5oXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0yMC0gKiAgIENvbW1vbiBkZWZpbml0aW9ucyBhbmQgdXRpbGl0aWVzLlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMjEtICpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjIyOiAqIC0gYnBmX2ppdF9jb21wLmNcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTIzLSAqICAgSW1wbGVtZW50YXRpb24gb2YgSklUIHRvcC1sZXZlbCBsb2dpYyBhbmQgZXhwb3J0ZWQgSklUIEFQSSBmdW5jdGlvbnMuXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTI3LSAqXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzoyODogKiAtIGJwZl9qaXRfY29tcDMyLmNcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTI5LSAqICAgSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIHRvIEpJVCBwcm9sb2d1ZSwgZXBpbG9ndWUgYW5kIGEgc2luZ2xlIGVCUEZcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMzMtICpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjM0OiAqIC0gYnBmX2ppdF9jb21wNjQuY1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMzUtICogICBEaXR0bywgZm9yIDY0LWJpdCBNSVBTIENQVXMuXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTExNi1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjExNzojaW5jbHVkZSBcXFwiYnBmX2ppdF9jb21wLmhcXFwiXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xMTgtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjItXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjIzOiNpbmNsdWRlIFxcXCJicGZfaml0X2NvbXAuaFxcXCJcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjQtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjEtXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjIyOiNpbmNsdWRlIFxcXCJicGZfaml0X2NvbXAuaFxcXCJcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjMyLjg0NDE5NDg1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODEzMjk5ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbiBhbmQgTWljcm8tQXNzZW1ibGVyIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBCUEYgSklUIHNldHVwLCBhbmQgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaGVyZSBpcyBjbGVhcmx5IGBDT05GSUdfQlBGX0pJVGAuIFRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgaW5pdGlhbCB0YXJnZXRzIGFyZSB0aGUgY29yZSBzeW1ib2xzOiBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGFuZCB0aGUgYGJ1aWxkX2luc25gIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGluIGBicGZfaml0X2NvbXAzMi5jYCBhbmQgYGJwZl9qaXRfY29tcDY0LmNgLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUgZXh0ZXJuYWxseS4gSW50ZXJlc3RpbmdseSwgYGJ1aWxkX2luc25gIGlzICpub3QqIHN0YXRpYywgc28gdGhhdCdzIGhlbHBmdWwuIE5vdywgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHNlZW1zIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LCBzbyB0aGF0J3MgZ29vZCB0byBrbm93LiBUaGUgYGJ1aWxkX2JvZHlgIGlzIGEgc3RhdGljIGhlbHBlciBmdW5jdGlvbi4gSSBzZWUgYGVtaXRfYWx1X3JgIGlzIG5vbi1zdGF0aWMgaW4gYGJwZl9qaXRfY29tcC5jYCwgd2hpY2ggbWFrZXMgaXQgYSBnbG9iYWwgc3ltYm9sLiBTbyBJIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IHVuZGVyc3RhbmRpbmcuIEl0IG1ha2VzIHNlbnNlLCBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBidWlsZF9pbnNuYCwgYW5kIGBlbWl0X2FsdV9yYCBhcmUgaW1wb3J0YW50LlxuXG5JJ20gdmVyaWZ5aW5nIHRoYXQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIGluZGVlZCB0aGUgKm9ubHkqIGVudHJ5IHBvaW50IGZvciB0aGUgQlBGIEpJVCwgdG8gYXZvaWQgZ2V0dGluZyBkaXN0cmFjdGVkLiBUaGF0J3MgY29uZmlybWVkLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEknbSBhd2FyZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGdlbmVyYWxseSBhIHByZXJlcXVpc2l0ZSBmb3IgQlBGLCBidXQgYENPTkZJR19CUEZfSklUYCBpcyB0aGUgc3BlY2lmaWMgb25lIEknbSBjb25jZXJuZWQgd2l0aCBoZXJlLlxuXG5Ob3csIGxldCdzIGdvIGJhY2sgYW5kIHJldmlldyB0aGlzIHBhdGNoIGEgbGl0dGxlIG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBpdCdzIGFkZGluZyBpbnN0cnVjdGlvbnMgdG8gYHVhc20tbWlwcy5jYCBhbmQgYHVhc20uY2AuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgZmlsZXMgYXJlIHBhcnQgb2YgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyLiBJIG5lZWQgdG8gY2hlY2sgdGhlIE1JUFMgYXJjaGl0ZWN0dXJlJ3MgTWFrZWZpbGUgdG8gc2VlIHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsaW5nIGB1YXNtLmNgLiBUaGF0IHdpbGwgcHJvdmlkZSBmdXJ0aGVyIGNsYXJpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDM0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjM4LjY1NzQ5NzEyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwNTkzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWFzbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvbW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTYyNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC9taXBzL21tL01ha2VmaWxlPTE5PWlmZGVmIENPTkZJR19DUFVfTUlDUk9NSVBTXFxuYXJjaC9taXBzL21tL01ha2VmaWxlOjIwOm9iai15XFx0XFx0XFx0XFx0Kz0gdWFzbS1taWNyb21pcHMub1xcbmFyY2gvbWlwcy9tbS9NYWtlZmlsZS0yMS1lbHNlXFxuYXJjaC9taXBzL21tL01ha2VmaWxlOjIyOm9iai15XFx0XFx0XFx0XFx0Kz0gdWFzbS1taXBzLm9cXG5hcmNoL21pcHMvbW0vTWFrZWZpbGUtMjMtZW5kaWZcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzUtXFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNjojaW5jbHVkZSBcXHUwMDNjYXNtL3Vhc20uaFxcdTAwM2VcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM3LVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz01MT1VQVNNX0xfTEEoX2NvcHlfcHJlZl9zdG9yZSlcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTMtLyogV2UgbmVlZCBvbmUgYnJhbmNoIGFuZCB0aGVyZWZvcmUgb25lIHJlbG9jYXRpb24gcGVyIHRhcmdldCBsYWJlbC4gKi9cXG5hcmNoL21pcHMvbW0vcGFnZS5jOjU0OnN0YXRpYyBzdHJ1Y3QgdWFzbV9sYWJlbCBsYWJlbHNbNV07XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1NTpzdGF0aWMgc3RydWN0IHVhc21fcmVsb2MgcmVsb2NzWzVdO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTYtXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTYzLSAqL1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NjQ6I2RlZmluZSBfdWFzbV9pX3ByZWYoYSwgYiwgYywgZClcXHRcXHRcXFxcXFxuYXJjaC9taXBzL21tL3BhZ2UuYy02NS1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy02Ny1cXHRcXHRpZiAoYyBcXHUwMDNjPSAweGZmIFxcdTAwMjZcXHUwMDI2IGMgXFx1MDAzZT0gLTB4MTAwKVxcdFxcXFxcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjY4OlxcdFxcdFxcdHVhc21faV9wcmVmKGEsIGIsIGMsIGQpO1xcXFxcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTY5LVxcdH0gZWxzZSB7XFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NzA6XFx0XFx0dWFzbV9pX3ByZWYoYSwgYiwgYywgZCk7XFx0XFxcXFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNzEtXFx0fVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM9OTE9cGdfYWRkaXUodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcmVnMSwgdW5zaWduZWQgaW50IHJlZzIsIHVuc2lnbmVkIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTk2LVxcdFxcdGlmIChvZmYgXFx1MDAzZSAweDdmZmYpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjk3OlxcdFxcdFxcdHVhc21faV9sdWkoYnVmLCBHUFJfVDksIHVhc21fcmVsX2hpKG9mZikpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6OTg6XFx0XFx0XFx0dWFzbV9pX2FkZGl1KGJ1ZiwgR1BSX1Q5LCBHUFJfVDksIHVhc21fcmVsX2xvKG9mZikpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtOTktXFx0XFx0fSBlbHNlXFxuYXJjaC9taXBzL21tL3BhZ2UuYzoxMDA6XFx0XFx0XFx0dWFzbV9pX2FkZGl1KGJ1ZiwgR1BSX1Q5LCBHUFJfWkVSTywgb2ZmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjEwMTpcXHRcXHR1YXNtX2lfZGFkZHUoYnVmLCByZWcxLCByZWcyLCBHUFJfVDkpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMTAyLVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0xMDMtXFx0XFx0aWYgKG9mZiBcXHUwMDNlIDB4N2ZmZikge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MTA0OlxcdFxcdFxcdHVhc21faV9sdWkoYnVmLCBHUFJfVDksIHVhc21fcmVsX2hpKG9mZikpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MTA1OlxcdFxcdFxcdHVhc21faV9hZGRpdShidWYsIEdQUl9UOSwgR1BSX1Q5LCB1YXNtX3JlbF9sbyhvZmYpKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTEwNi1cXHRcXHRcXHRVQVNNX2lfQUREVShidWYsIHJlZzEsIHJlZzIsIEdQUl9UOSk7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jPTIyMT1zdGF0aWMgdm9pZCBidWlsZF9jbGVhcl9zdG9yZSh1MzIgKipidWYsIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIyMy1cXHRpZiAoY3B1X2hhc182NGJpdF9ncF9yZWdzIHx8IGNwdV9oYXNfNjRiaXRfemVyb19yZWcpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjIyNDpcXHRcXHR1YXNtX2lfc2QoYnVmLCBHUFJfWkVSTywgb2ZmLCBHUFJfQTApO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjI1LVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyMjY6XFx0XFx0dWFzbV9pX3N3KGJ1ZiwgR1BSX1pFUk8sIG9mZiwgR1BSX0EwKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIyNy1cXHR9XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jPTIzMD1zdGF0aWMgaW5saW5lIHZvaWQgYnVpbGRfY2xlYXJfcHJlZih1MzIgKipidWYsIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIzNS1cXHRpZiAocHJlZl9iaWFzX2NsZWFyX3N0b3JlKSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyMzY6XFx0XFx0X3Vhc21faV9wcmVmKGJ1ZiwgcHJlZl9kc3RfbW9kZSwgcHJlZl9iaWFzX2NsZWFyX3N0b3JlICsgb2ZmLFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjM3LVxcdFxcdFxcdCAgICBHUFJfQTApO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yMzktXFx0XFx0aWYgKGNwdV9oYXNfY2FjaGVfY2RleF9zKSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDA6XFx0XFx0XFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfU0QsIG9mZiwgR1BSX0EwKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0MS1cXHRcXHR9IGVsc2UgaWYgKGNwdV9oYXNfY2FjaGVfY2RleF9wKSB7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0My1cXHRcXHRcXHQgICAgY3B1X2lzX3I0NjAwX3YxX3goKSkge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjQ0OlxcdFxcdFxcdFxcdHVhc21faV9ub3AoYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI0NTpcXHRcXHRcXHRcXHR1YXNtX2lfbm9wKGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDY6XFx0XFx0XFx0XFx0dWFzbV9pX25vcChidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjQ3OlxcdFxcdFxcdFxcdHVhc21faV9ub3AoYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0OC1cXHRcXHRcXHR9XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI1MS1cXHRcXHRcXHQgICAgY3B1X2lzX3I0NjAwX3YyX3goKSlcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI1MjpcXHRcXHRcXHRcXHR1YXNtX2lfbHcoYnVmLCBHUFJfWkVSTywgR1BSX1pFUk8sIEdQUl9BVCk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yNTMtXFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNTQ6XFx0XFx0XFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfRCwgb2ZmLCBHUFJfQTApO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjU1LVxcdFxcdH1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM9MjY0PXZvaWQgYnVpbGRfY2xlYXJfcGFnZSh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yNjctXFx0dTMyICpidWYgPSBcXHUwMDI2X19jbGVhcl9wYWdlX3N0YXJ0O1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjY4OlxcdHN0cnVjdCB1YXNtX2xhYmVsICpsID0gbGFiZWxzO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjY5OlxcdHN0cnVjdCB1YXNtX3JlbG9jICpyID0gcmVsb2NzO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjcwLVxcdGludCBpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTMtXFx0ZWxzZVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Mjk0OlxcdFxcdHVhc21faV9vcmkoXFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIG9mZik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTUtXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTYtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1dBUl9SNDYwMF9WMl9ISVRfQ0FDSEVPUCkgXFx1MDAyNlxcdTAwMjYgY3B1X2lzX3I0NjAwX3YyX3goKSlcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI5NzpcXHRcXHR1YXNtX2lfbHVpKFxcdTAwMjZidWYsIEdQUl9BVCwgdWFzbV9yZWxfaGkoMHhhMDAwMDAwMCkpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjk4LVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMDQtXFx0fVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzA1OlxcdHVhc21fbF9jbGVhcl9wcmVmKFxcdTAwMjZsLCBidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzA2LVxcdGRvIHtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE1LVxcdFxcdGlmIChvZmYgPT0gLWNsZWFyX3dvcmRfc2l6ZSlcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjMxNjpcXHRcXHRcXHR1YXNtX2lsX2JuZShcXHUwMDI2YnVmLCBcXHUwMDI2ciwgR1BSX0EwLCBHUFJfQTIsIGxhYmVsX2NsZWFyX3ByZWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE3LVxcdFxcdGJ1aWxkX2NsZWFyX3N0b3JlKFxcdTAwMjZidWYsIG9mZik7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTMyMi1cXHRcXHRwZ19hZGRpdShcXHUwMDI2YnVmLCBHUFJfQTIsIEdQUl9BMCwgcHJlZl9iaWFzX2NsZWFyX3N0b3JlKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjMyMzpcXHRcXHR1YXNtX2xfY2xlYXJfbm9wcmVmKFxcdTAwMjZsLCBidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzI0LVxcdFxcdG9mZiA9IDA7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTMzMi1cXHRcXHRcXHRpZiAob2ZmID09IC1jbGVhcl93b3JkX3NpemUpXFxuYXJjaC9taXBzL21tL3BhZ2UuYzozMzM6XFx0XFx0XFx0XFx0dWFzbV9pbF9ibmUoXFx1MDAyNmJ1ZiwgXFx1MDAyNnIsIEdQUl9BMCwgR1BSX0EyLFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzM0LVxcdFxcdFxcdFxcdFxcdCAgICBsYWJlbF9jbGVhcl9ub3ByZWYpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMzktXFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNDA6XFx0dWFzbV9pX2pyKFxcdTAwMjZidWYsIEdQUl9SQSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNDE6XFx0dWFzbV9pX25vcChcXHUwMDI2YnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0Mi1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzQ0LVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzQ1OlxcdHVhc21fcmVzb2x2ZV9yZWxvY3MocmVsb2NzLCBsYWJlbHMpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzQ2LVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz0zNTc9c3RhdGljIHZvaWQgYnVpbGRfY29weV9sb2FkKHUzMiAqKmJ1ZiwgaW50IHJlZywgaW50IG9mZilcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzU5LVxcdGlmIChjcHVfaGFzXzY0Yml0X2dwX3JlZ3MpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM2MDpcXHRcXHR1YXNtX2lfbGQoYnVmLCByZWcsIG9mZiwgR1BSX0ExKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM2MS1cXHR9IGVsc2Uge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzYyOlxcdFxcdHVhc21faV9sdyhidWYsIHJlZywgb2ZmLCBHUFJfQTEpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzYzLVxcdH1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM9MzY2PXN0YXRpYyB2b2lkIGJ1aWxkX2NvcHlfc3RvcmUodTMyICoqYnVmLCBpbnQgcmVnLCBpbnQgb2ZmKVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjgtXFx0aWYgKGNwdV9oYXNfNjRiaXRfZ3BfcmVncykge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzY5OlxcdFxcdHVhc21faV9zZChidWYsIHJlZywgb2ZmLCBHUFJfQTApO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzcwLVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNzE6XFx0XFx0dWFzbV9pX3N3KGJ1ZiwgcmVnLCBvZmYsIEdQUl9BMCk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNzItXFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz0zNzU9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NvcHlfbG9hZF9wcmVmKHUzMiAqKmJ1ZiwgaW50IG9mZilcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzgwLVxcdGlmIChwcmVmX2JpYXNfY29weV9sb2FkKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzgxOlxcdFxcdF91YXNtX2lfcHJlZihidWYsIHByZWZfc3JjX21vZGUsIHByZWZfYmlhc19jb3B5X2xvYWQgKyBvZmYsIEdQUl9BMSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zODItfVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz0zODQ9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NvcHlfc3RvcmVfcHJlZih1MzIgKipidWYsIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM4OS1cXHRpZiAocHJlZl9iaWFzX2NvcHlfc3RvcmUpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5MDpcXHRcXHRfdWFzbV9pX3ByZWYoYnVmLCBwcmVmX2RzdF9tb2RlLCBwcmVmX2JpYXNfY29weV9zdG9yZSArIG9mZixcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5MS1cXHRcXHRcXHQgICAgR1BSX0EwKTtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzkzLVxcdFxcdGlmIChjcHVfaGFzX2NhY2hlX2NkZXhfcykge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Mzk0OlxcdFxcdFxcdHVhc21faV9jYWNoZShidWYsIENyZWF0ZV9EaXJ0eV9FeGNsX1NELCBvZmYsIEdQUl9BMCk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zOTUtXFx0XFx0fSBlbHNlIGlmIChjcHVfaGFzX2NhY2hlX2NkZXhfcCkge1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zOTctXFx0XFx0XFx0ICAgIGNwdV9pc19yNDYwMF92MV94KCkpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5ODpcXHRcXHRcXHRcXHR1YXNtX2lfbm9wKGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzozOTk6XFx0XFx0XFx0XFx0dWFzbV9pX25vcChidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDAwOlxcdFxcdFxcdFxcdHVhc21faV9ub3AoYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjQwMTpcXHRcXHRcXHRcXHR1YXNtX2lfbm9wKGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MDItXFx0XFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MDUtXFx0XFx0XFx0ICAgIGNwdV9pc19yNDYwMF92Ml94KCkpXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MDY6XFx0XFx0XFx0XFx0dWFzbV9pX2x3KGJ1ZiwgR1BSX1pFUk8sIEdQUl9aRVJPLCBHUFJfQVQpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDA3LVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDA4OlxcdFxcdFxcdHVhc21faV9jYWNoZShidWYsIENyZWF0ZV9EaXJ0eV9FeGNsX0QsIG9mZiwgR1BSX0EwKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQwOS1cXHRcXHR9XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jPTQxMz12b2lkIGJ1aWxkX2NvcHlfcGFnZSh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MTYtXFx0dTMyICpidWYgPSBcXHUwMDI2X19jb3B5X3BhZ2Vfc3RhcnQ7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MTc6XFx0c3RydWN0IHVhc21fbGFiZWwgKmwgPSBsYWJlbHM7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MTg6XFx0c3RydWN0IHVhc21fcmVsb2MgKnIgPSByZWxvY3M7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MTktXFx0aW50IGk7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0Ni1cXHRlbHNlXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0NDc6XFx0XFx0dWFzbV9pX29yaShcXHUwMDI2YnVmLCBHUFJfQTIsIEdQUl9BMCwgb2ZmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0OC1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0OS1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfV0FSX1I0NjAwX1YyX0hJVF9DQUNIRU9QKSBcXHUwMDI2XFx1MDAyNiBjcHVfaXNfcjQ2MDBfdjJfeCgpKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDUwOlxcdFxcdHVhc21faV9sdWkoXFx1MDAyNmJ1ZiwgR1BSX0FULCB1YXNtX3JlbF9oaSgweGEwMDAwMDAwKSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy00NTEtXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ2My1cXHR9XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0NjQ6XFx0dWFzbV9sX2NvcHlfcHJlZl9ib3RoKFxcdTAwMjZsLCBidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDY1LVxcdGRvIHtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTAzLVxcdFxcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTA0OlxcdFxcdFxcdHVhc21faWxfYm5lKFxcdTAwMjZidWYsIFxcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCwgbGFiZWxfY29weV9wcmVmX2JvdGgpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTA1LVxcdFxcdGJ1aWxkX2NvcHlfc3RvcmUoXFx1MDAyNmJ1ZiwgR1BSX1QzLCBvZmYgKyAzICogY29weV93b3JkX3NpemUpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01MTEtXFx0XFx0XFx0IHByZWZfYmlhc19jb3B5X2xvYWQgLSBwcmVmX2JpYXNfY29weV9zdG9yZSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1MTI6XFx0XFx0dWFzbV9sX2NvcHlfcHJlZl9zdG9yZShcXHUwMDI2bCwgYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTUxMy1cXHRcXHRvZmYgPSAwO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NDQtXFx0XFx0XFx0aWYgKG9mZiA9PSAtKDQgKiBjb3B5X3dvcmRfc2l6ZSkpXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1NDU6XFx0XFx0XFx0XFx0dWFzbV9pbF9ibmUoXFx1MDAyNmJ1ZiwgXFx1MDAyNnIsIEdQUl9BMiwgR1BSX0EwLFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTQ2LVxcdFxcdFxcdFxcdFxcdCAgICBsYWJlbF9jb3B5X3ByZWZfc3RvcmUpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NTMtXFx0XFx0cGdfYWRkaXUoXFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIHByZWZfYmlhc19jb3B5X3N0b3JlKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjU1NDpcXHRcXHR1YXNtX2xfY29weV9ub3ByZWYoXFx1MDAyNmwsIGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NTUtXFx0XFx0b2ZmID0gMDtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTc4LVxcdFxcdFxcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTc5OlxcdFxcdFxcdFxcdHVhc21faWxfYm5lKFxcdTAwMjZidWYsIFxcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCxcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU4MC1cXHRcXHRcXHRcXHRcXHQgICAgbGFiZWxfY29weV9ub3ByZWYpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01ODUtXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODY6XFx0dWFzbV9pX2pyKFxcdTAwMjZidWYsIEdQUl9SQSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODc6XFx0dWFzbV9pX25vcChcXHUwMDI2YnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU4OC1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTkwLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTkxOlxcdHVhc21fcmVzb2x2ZV9yZWxvY3MocmVsb2NzLCBsYWJlbHMpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTkyLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMzctI2luY2x1ZGUgXFx1MDAzY2FzbS9yZWdkZWYuaFxcdTAwM2VcXG5hcmNoL21pcHMvbW0vdGxiZXguYzozODojaW5jbHVkZSBcXHUwMDNjYXNtL3Vhc20uaFxcdTAwM2VcXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zOS0jaW5jbHVkZSBcXHUwMDNjYXNtL3NldHVwLmhcXHUwMDNlXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYz0yMDQ9c3RhdGljIGludCBoYXphcmRfaW5zdGFuY2U7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA1LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjIwNjpzdGF0aWMgdm9pZCB1YXNtX2JnZXpsX2hhemFyZCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIGludCBpbnN0YW5jZSlcXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMDcte1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA5LVxcdGNhc2UgMCAuLi4gNzpcXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyMTA6XFx0XFx0dWFzbV9pbF9iZ2V6bChwLCByLCAwLCBsYWJlbF90bGJ3X2hhemFyZF8wICsgaW5zdGFuY2UpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIxMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMTYtXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjE3OnN0YXRpYyB2b2lkIHVhc21fYmdlemxfbGFiZWwoc3RydWN0IHVhc21fbGFiZWwgKipsLCB1MzIgKipwLCBpbnQgaW5zdGFuY2UpXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjE4LXtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIyMC1cXHRjYXNlIDAgLi4uIDc6XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjIxOlxcdFxcdHVhc21fYnVpbGRfbGFiZWwobCwgKnAsIGxhYmVsX3RsYndfaGF6YXJkXzAgKyBpbnN0YW5jZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjIyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9Mjk1PXN0YXRpYyB1MzIgdGxiX2hhbmRsZXJbMTI4XTtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTI5Ny0vKiBzaW1wbHkgYXNzdW1lIHdvcnN0IGNhc2Ugc2l6ZSBmb3IgbGFiZWxzIGFuZCByZWxvY3MgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyOTg6c3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1sxMjhdO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjI5OTpzdGF0aWMgc3RydWN0IHVhc21fcmVsb2MgcmVsb2NzWzEyOF07XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMzAwLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9MzY5PXN0YXRpYyB2b2lkIGJ1aWxkX3Jlc3RvcmVfd29ya19yZWdpc3RlcnModTMyICoqcClcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3MS1cXHRpZiAoc2NyYXRjaF9yZWcgXFx1MDAzZT0gMCkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM3MjpcXHRcXHR1YXNtX2lfZWhiKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3My1cXHRcXHRVQVNNX2lfTUZDMChwLCAxLCBjMF9rc2NyYXRjaCgpLCBzY3JhdGNoX3JlZyk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYz0zODk9c3RhdGljIHZvaWQgYnVpbGRfcjMwMDBfdGxiX3JlZmlsbF9oYW5kbGVyKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zOTYtXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Mzk3OlxcdHVhc21faV9tZmMwKFxcdTAwMjZwLCBHUFJfSzAsIEMwX0JBRFZBRERSKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzozOTg6XFx0dWFzbV9pX2x1aShcXHUwMDI2cCwgR1BSX0sxLCB1YXNtX3JlbF9oaShwZ2RjKSk7IC8qIGNwMCBkZWxheSAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM5OTpcXHR1YXNtX2lfbHcoXFx1MDAyNnAsIEdQUl9LMSwgdWFzbV9yZWxfbG8ocGdkYyksIEdQUl9LMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDAwOlxcdHVhc21faV9zcmwoXFx1MDAyNnAsIEdQUl9LMCwgR1BSX0swLCAyMik7IC8qIGxvYWQgZGVsYXkgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDE6XFx0dWFzbV9pX3NsbChcXHUwMDI2cCwgR1BSX0swLCBHUFJfSzAsIDIpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwMjpcXHR1YXNtX2lfYWRkdShcXHUwMDI2cCwgR1BSX0sxLCBHUFJfSzEsIEdQUl9LMCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDAzOlxcdHVhc21faV9tZmMwKFxcdTAwMjZwLCBHUFJfSzAsIEMwX0NPTlRFWFQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwNDpcXHR1YXNtX2lfbHcoXFx1MDAyNnAsIEdQUl9LMSwgMCwgR1BSX0sxKTsgLyogY3AwIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA1OlxcdHVhc21faV9hbmRpKFxcdTAwMjZwLCBHUFJfSzAsIEdQUl9LMCwgMHhmZmMpOyAvKiBsb2FkIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA2OlxcdHVhc21faV9hZGR1KFxcdTAwMjZwLCBHUFJfSzEsIEdQUl9LMSwgR1BSX0swKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDc6XFx0dWFzbV9pX2x3KFxcdTAwMjZwLCBHUFJfSzAsIDAsIEdQUl9LMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA4OlxcdHVhc21faV9ub3AoXFx1MDAyNnApOyAvKiBsb2FkIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA5OlxcdHVhc21faV9tdGMwKFxcdTAwMjZwLCBHUFJfSzAsIEMwX0VOVFJZTE8wKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MTA6XFx0dWFzbV9pX21mYzAoXFx1MDAyNnAsIEdQUl9LMSwgQzBfRVBDKTsgLyogY3AwIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDExOlxcdHVhc21faV90bGJ3cihcXHUwMDI2cCk7IC8qIGNwMCBkZWxheSAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQxMjpcXHR1YXNtX2lfanIoXFx1MDAyNnAsIEdQUl9LMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDEzOlxcdHVhc21faV9yZmUoXFx1MDAyNnApOyAvKiBicmFuY2ggZGVsYXkgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00MTQtXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYz00NTg9c3RhdGljIHZvaWQgX19tYXliZV91bnVzZWQgYnVpbGRfdGxiX3Byb2JlX2VudHJ5KHUzMiAqKnApXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NjUtXFx0Y2FzZSBDUFVfTkVWQURBOlxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ2NjpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ2NzpcXHRcXHR1YXNtX2lfdGxicChwKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NzAtXFx0ZGVmYXVsdDpcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0NzE6XFx0XFx0dWFzbV9pX3RsYnAocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDcyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDc1LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ3Njp2b2lkIGJ1aWxkX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDc3OlxcdFxcdFxcdCAgIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NzgtXFx0XFx0XFx0ICAgZW51bSB0bGJfd3JpdGVfZW50cnkgd21vZGUpXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00ODItXFx0c3dpdGNoICh3bW9kZSkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ4MzpcXHRjYXNlIHRsYl9yYW5kb206IHRsYncgPSB1YXNtX2lfdGxid3I7IGJyZWFrO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ4NDpcXHRjYXNlIHRsYl9pbmRleGVkOiB0bGJ3ID0gdWFzbV9pX3RsYndpOyBicmVhaztcXG5hcmNoL21pcHMvbW0vdGxiZXguYy00ODUtXFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDg4LVxcdFxcdGlmIChjcHVfaGFzX21pcHNfcjJfZXhlY19oYXphcmQpXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDg5OlxcdFxcdFxcdHVhc21faV9laGIocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDkwLVxcdFxcdHRsYncocCk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDQtXFx0XFx0ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA1OlxcdFxcdHVhc21fYmdlemxfaGF6YXJkKHAsIHIsIGhhemFyZF9pbnN0YW5jZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTA2LVxcdFxcdHRsYncocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA3OlxcdFxcdHVhc21fYmdlemxfbGFiZWwobCwgcCwgaGF6YXJkX2luc3RhbmNlKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDgtXFx0XFx0aGF6YXJkX2luc3RhbmNlKys7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA5OlxcdFxcdHVhc21faV9ub3AocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTEzLVxcdGNhc2UgQ1BVX1I0NzAwOlxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjUxNDpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUxNS1cXHRcXHR0bGJ3KHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjUxNjpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUxNy1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUyMC1cXHRjYXNlIENQVV9ORVZBREE6XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTIxOlxcdFxcdHVhc21faV9ub3AocCk7IC8qIFFFRCBzcGVjaWZpZXMgMiBub3BzIGhhemFyZCAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjUyMjpcXHRcXHR1YXNtX2lfbm9wKHApOyAvKiBRRUQgc3BlY2lmaWVzIDIgbm9wcyBoYXphcmQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MjMtXFx0XFx0dGxidyhwKTtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUyOS1cXHRjYXNlIENQVV9QUjQ0NTA6XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTMwOlxcdFxcdHVhc21faV9ub3AocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTMxLVxcdFxcdHRsYncocCk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NTUtXFx0XFx0aWYgKG00a2NfdGxicF93YXIoKSlcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo1NTY6XFx0XFx0XFx0dWFzbV9pX25vcChwKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NTctXFx0XFx0ZmFsbHRocm91Z2g7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NjItXFx0Y2FzZSBDUFVfUk03MDAwOlxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2MzpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NDpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NTpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NjpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTU2Ny1cXHRcXHR0bGJ3KHApO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTcxLVxcdFxcdHRsYncocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTcyOlxcdFxcdHVhc21faV9ub3AocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTczLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9NTgzPXN0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkIGJ1aWxkX2NvbnZlcnRfcHRlX3RvX2VudHJ5bG8odTMyICoqcCxcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYwMC0jaWZkZWYgQ09ORklHX1BIWVNfQUREUl9UXzY0QklUXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjAxOlxcdFxcdHVhc21faV9kc3JsX3NhZmUocCwgcmVnLCByZWcsIGlsb2cyKF9QQUdFX0dMT0JBTCkpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYwMi0jZWxzZVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjA5LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYxMDpzdGF0aWMgdm9pZCBidWlsZF9yZXN0b3JlX3BhZ2VtYXNrKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTEtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHRtcCwgZW51bSBsYWJlbF9pZCBsaWQsXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTktXFx0XFx0aWYgKHNjcmF0Y2hfcmVnIFxcdTAwM2U9IDApXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjIwOlxcdFxcdFxcdHVhc21faV9laGIocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjIxLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjIzLVxcdFxcdGlmIChQTV9ERUZBVUxUX01BU0sgXFx1MDAzZVxcdTAwM2UgMTYpIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MjQ6XFx0XFx0XFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDNlXFx1MDAzZSAxNik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjI1OlxcdFxcdFxcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDI2IDB4ZmZmZik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjI2OlxcdFxcdFxcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyNzpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MjgtXFx0XFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2Mjk6XFx0XFx0XFx0dWFzbV9pX29yaShwLCB0bXAsIDAsIFBNX0RFRkFVTFRfTUFTSyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjMwOlxcdFxcdFxcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMTpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MzItXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MzM6XFx0XFx0XFx0dWFzbV9pX210YzAocCwgMCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzNDpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MzUtXFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjQyLVxcdFxcdGlmIChQTV9ERUZBVUxUX01BU0sgXFx1MDAzZVxcdTAwM2UgMTYpIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NDM6XFx0XFx0XFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDNlXFx1MDAzZSAxNik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ0OlxcdFxcdFxcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDI2IDB4ZmZmZik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ1OlxcdFxcdFxcdHVhc21faWxfYihwLCByLCBsaWQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0NjpcXHRcXHRcXHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NDctXFx0XFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NDg6XFx0XFx0XFx0dWFzbV9pX29yaShwLCB0bXAsIDAsIFBNX0RFRkFVTFRfTUFTSyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ5OlxcdFxcdFxcdHVhc21faWxfYihwLCByLCBsaWQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MDpcXHRcXHRcXHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTEtXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NTI6XFx0XFx0XFx0dWFzbV9pbF9iKHAsIHIsIGxpZCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjUzOlxcdFxcdFxcdHVhc21faV9tdGMwKHAsIDAsIEMwX1BBR0VNQVNLKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTQtXFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjU3LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1ODpzdGF0aWMgdm9pZCBidWlsZF9odWdlX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjU5OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjYwLVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgdG1wLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjY0LVxcdC8qIFNldCBodWdlIHBhZ2UgdGxiIGVudHJ5IHNpemUgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NjU6XFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0hVR0VfTUFTSyBcXHUwMDNlXFx1MDAzZSAxNik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjY2OlxcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0hVR0VfTUFTSyBcXHUwMDI2IDB4ZmZmZik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjY3OlxcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY2OC1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jPTY3Nz1zdGF0aWMgdm9pZFxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY3ODpidWlsZF9pc19odWdlX3B0ZSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCB0bXAsXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjc5LVxcdFxcdCAgdW5zaWduZWQgaW50IHBtZCwgaW50IGxpZClcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4Mi1cXHRpZiAodXNlX2JiaXRfaW5zbnMoKSkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY4MzpcXHRcXHR1YXNtX2lsX2JiaXQxKHAsIHIsIHRtcCwgaWxvZzIoX1BBR0VfSFVHRSksIGxpZCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjg0LVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Njg1OlxcdFxcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCBfUEFHRV9IVUdFKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2ODY6XFx0XFx0dWFzbV9pbF9ibmV6KHAsIHIsIHRtcCwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02ODctXFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9NjkwPXN0YXRpYyB2b2lkIGJ1aWxkX2h1Z2VfdXBkYXRlX2VudHJpZXModTMyICoqcCwgdW5zaWduZWQgaW50IHB0ZSxcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTcwNy1cXHRpZiAoIXNtYWxsX3NlcXVlbmNlKVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjcwODpcXHRcXHR1YXNtX2lfbHVpKHAsIHRtcCwgSFBBR0VfU0laRSBcXHUwMDNlXFx1MDAzZSAoNyArIDE2KSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzA5LVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzIwLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjcyMTpzdGF0aWMgdm9pZCBidWlsZF9odWdlX2hhbmRsZXJfdGFpbCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NzIyOlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzIzLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcHRlLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzI4LVxcdFVBU01faV9TQyhwLCBwdGUsIDAsIHB0cik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NzI5OlxcdHVhc21faWxfYmVxeihwLCByLCBwdGUsIGxhYmVsX3RsYl9odWdlX3VwZGF0ZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzMwLVxcdFVBU01faV9MVyhwLCBwdGUsIDAsIHB0cik7IC8qIE5lZWRlZCBiZWNhdXNlIFNDIGtpbGxlZCBvdXIgUFRFICovXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy03MzctXFx0XFx0VUFTTV9pX01GQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3Mzg6XFx0XFx0dWFzbV9pX29yaShwLCBwdHIsIHB0ciwgTUlQU19FTlRSWUhJX0VISU5WKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy03MzktXFx0XFx0VUFTTV9pX01UQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc0MS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3NDI6XFx0XFx0dWFzbV9pX3hvcmkocCwgcHRyLCBwdHIsIE1JUFNfRU5UUllISV9FSElOVik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzQzLVxcdFxcdFVBU01faV9NVEMwKHAsIHB0ciwgQzBfRU5UUllISSk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NTktICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NzYwOnZvaWQgYnVpbGRfZ2V0X3BtZGU2NCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NjEtXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHRtcCwgdW5zaWduZWQgaW50IHB0cilcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc2OC1cXHQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3Njk6XFx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc3MC1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4Mi1cXHRcXHQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3ODM6XFx0XFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHRtcCwgUEdESVJfU0hJRlQgKyBQR0RfVEFCTEVfT1JERVIgKyBQQUdFX1NISUZUIC0gMyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Nzg0OlxcdFxcdHVhc21faWxfYm5leihwLCByLCBwdHIsIGxhYmVsX3ZtYWxsb2MpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4NS1cXHR9IGVsc2Uge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4NjpcXHRcXHR1YXNtX2lsX2JsdHoocCwgciwgdG1wLCBsYWJlbF92bWFsbG9jKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy03ODctXFx0fVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4ODpcXHQvKiBObyB1YXNtX2lfbm9wIG5lZWRlZCBoZXJlLCBzaW5jZSB0aGUgbmV4dCBpbnNuIGRvZXNuJ3QgdG91Y2ggVE1QLiAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4OS1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwMy1cXHRcXHQvKiBDbGVhciBsb3dlciAyMyBiaXRzIG9mIGNvbnRleHQuICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODA0OlxcdFxcdHVhc21faV9kaW5zKHAsIHB0ciwgMCwgMCwgMjMpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwNS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MDYtXFx0XFx0LyogaW5zZXJ0IGJpdFs2Mzo1OV0gb2YgQ0FDX0JBU0UgaW50byBiaXRbMTE6Nl0gb2YgcHRyICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODA3OlxcdFxcdHVhc21faV9vcmkocCwgcHRyLCBwdHIsICgodTY0KShDQUNfQkFTRSkgXFx1MDAzZVxcdTAwM2UgNTMpKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MDg6XFx0XFx0dWFzbV9pX2Ryb3RyKHAsIHB0ciwgcHRyLCAxMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODA5LSNlbGlmIGRlZmluZWQoQ09ORklHX1NNUClcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MTAtXFx0XFx0VUFTTV9pX0NQVUlEX01GQzAocCwgcHRyLCBTTVBfQ1BVSURfUkVHKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTE6XFx0XFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHB0ciwgU01QX0NQVUlEX1BUUlNISUZUKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MTItXFx0XFx0VUFTTV9pX0xBX21vc3RseShwLCB0bXAsIHBnZGMpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgxMzpcXHRcXHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODE0OlxcdFxcdHVhc21faV9kbWZjMChwLCB0bXAsIEMwX0JBRFZBRERSKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTU6XFx0XFx0dWFzbV9pX2xkKHAsIHB0ciwgdWFzbV9yZWxfbG8ocGdkYyksIHB0cik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODE2LSNlbHNlXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODE3LVxcdFxcdFVBU01faV9MQV9tb3N0bHkocCwgcHRyLCBwZ2RjKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTg6XFx0XFx0dWFzbV9pX2xkKHAsIHB0ciwgdWFzbV9yZWxfbG8ocGdkYyksIHB0cik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODE5LSNlbmRpZlxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODIxLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgyMjpcXHR1YXNtX2xfdm1hbGxvY19kb25lKGwsICpwKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MjMtXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODI0LVxcdC8qIGdldCBwZ2Qgb2Zmc2V0IGluIGJ5dGVzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODI1OlxcdHVhc21faV9kc3JsX3NhZmUocCwgdG1wLCB0bXAsIFBHRElSX1NISUZUIC0gMyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODI2LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgyNzpcXHR1YXNtX2lfYW5kaShwLCB0bXAsIHRtcCwgKFBUUlNfUEVSX1BHRCAtIDEpXFx1MDAzY1xcdTAwM2MzKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4Mjg6XFx0dWFzbV9pX2RhZGR1KHAsIHB0ciwgcHRyLCB0bXApOyAvKiBhZGQgaW4gcGdkIG9mZnNldCAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgyOS0jaWZuZGVmIF9fUEFHRVRBQkxFX1BVRF9GT0xERURcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MzA6XFx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpOyAvKiBnZXQgZmF1bHRpbmcgYWRkcmVzcyAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzMTpcXHR1YXNtX2lfbGQocCwgcHRyLCAwLCBwdHIpOyAvKiBnZXQgcHVkIHBvaW50ZXIgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MzI6XFx0dWFzbV9pX2Rzcmxfc2FmZShwLCB0bXAsIHRtcCwgUFVEX1NISUZUIC0gMyk7IC8qIGdldCBwdWQgb2Zmc2V0IGluIGJ5dGVzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODMzOlxcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCAoUFRSU19QRVJfUFVEIC0gMSkgXFx1MDAzY1xcdTAwM2MgMyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM0OlxcdHVhc21faV9kYWRkdShwLCBwdHIsIHB0ciwgdG1wKTsgLyogYWRkIGluIHB1ZCBvZmZzZXQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MzUtI2VuZGlmXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODM2LSNpZm5kZWYgX19QQUdFVEFCTEVfUE1EX0ZPTERFRFxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzNzpcXHR1YXNtX2lfZG1mYzAocCwgdG1wLCBDMF9CQURWQUREUik7IC8qIGdldCBmYXVsdGluZyBhZGRyZXNzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM4OlxcdHVhc21faV9sZChwLCBwdHIsIDAsIHB0cik7IC8qIGdldCBwbWQgcG9pbnRlciAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzOTpcXHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQTURfU0hJRlQtMyk7IC8qIGdldCBwbWQgb2Zmc2V0IGluIGJ5dGVzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODQwOlxcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCAoUFRSU19QRVJfUE1EIC0gMSlcXHUwMDNjXFx1MDAzYzMpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg0MTpcXHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7IC8qIGFkZCBpbiBwbWQgb2Zmc2V0ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODQyLSNlbmRpZlxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9ODUwPXN0YXRpYyB2b2lkXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODUxOmJ1aWxkX2dldF9wZ2Rfdm1hbGxvYzY0KHUzMiAqKnAsIHN0cnVjdCB1YXNtX2xhYmVsICoqbCwgc3RydWN0IHVhc21fcmVsb2MgKipyLFxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg1Mi1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgYnZhZGRyLCB1bnNpZ25lZCBpbnQgcHRyLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODU4LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg1OTpcXHRzaW5nbGVfaW5zbl9zd3BkID0gdWFzbV9pbl9jb21wYXRfc3BhY2VfcChzd3BkKSBcXHUwMDI2XFx1MDAyNiAhdWFzbV9yZWxfbG8oc3dwZCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODYwLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg2MTpcXHR1YXNtX2xfdm1hbGxvYyhsLCAqcCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODYyLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODY0LVxcdFxcdGlmIChzaW5nbGVfaW5zbl9zd3BkKSB7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODY1OlxcdFxcdFxcdHVhc21faWxfYmx0eihwLCByLCBidmFkZHIsIGxhYmVsX3ZtYWxsb2NfZG9uZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODY2OlxcdFxcdFxcdHVhc21faV9sdWkocCwgcHRyLCB1YXNtX3JlbF9oaShzd3BkKSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODY3LVxcdFxcdFxcdGRpZF92bWFsbG9jX2JyYW5jaCA9IDE7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NjktXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzA6XFx0XFx0XFx0dWFzbV9pbF9iZ2V6KHAsIHIsIGJ2YWRkciwgbGFiZWxfbGFyZ2Vfc2VnYml0c19mYXVsdCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODcxLVxcdFxcdH1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg3NC1cXHRcXHRpZiAoc2luZ2xlX2luc25fc3dwZCkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg3NTpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGFiZWxfdm1hbGxvY19kb25lKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzY6XFx0XFx0XFx0dWFzbV9pX2x1aShwLCBwdHIsIHVhc21fcmVsX2hpKHN3cGQpKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzctXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzgtXFx0XFx0XFx0VUFTTV9pX0xBX21vc3RseShwLCBwdHIsIHN3cGQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg3OTpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGFiZWxfdm1hbGxvY19kb25lKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODA6XFx0XFx0XFx0aWYgKHVhc21faW5fY29tcGF0X3NwYWNlX3Aoc3dwZCkpXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODgxOlxcdFxcdFxcdFxcdHVhc21faV9hZGRpdShwLCBwdHIsIHB0ciwgdWFzbV9yZWxfbG8oc3dwZCkpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg4Mi1cXHRcXHRcXHRlbHNlXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODgzOlxcdFxcdFxcdFxcdHVhc21faV9kYWRkaXUocCwgcHRyLCBwdHIsIHVhc21fcmVsX2xvKHN3cGQpKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04ODQtXFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODg2LVxcdGlmIChtb2RlICE9IG5vdF9yZWZpbGwgXFx1MDAyNlxcdTAwMjYgY2hlY2tfZm9yX2hpZ2hfc2VnYml0cykge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg4NzpcXHRcXHR1YXNtX2xfbGFyZ2Vfc2VnYml0c19mYXVsdChsLCAqcCk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjM4LjcwMTU2MTQ3NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjQ3NDg2NDYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTUlQUyBCUEYgSklUIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBzdXBwb3J0IGZvciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBzaWduZWQgb25lcywgd2l0aGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoZSBgdWFzbWAgbWljcm8tYXNzZW1ibGVyIGlzIHRoZSBrZXksIGFuZCBpdCdzIGJlaW5nIHVwZGF0ZWQgdG8gaGFuZGxlIHRoZSBuZXcgYGRkaXZgLCBgZGRpdl9yNmAsIGBkaXZgLCBgZGl2X3I2YCwgYGRtb2RgLCBhbmQgYG1vZGAgaW5zdHJ1Y3Rpb25zLiBUaGVzZSBhcmUgZXNzZW50aWFsIGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMsIG9mIGNvdXJzZSwgY29udHJvbGxlZCBieSB0aGUgYENPTkZJR19CUEZfSklUYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZCwgc28gYENPTkZJR19CUEZfSklUYCBpcyBkZWZpbml0ZWx5IHRoZSBlbmFibGluZyBjb25maWcuIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgYENPTkZJR19NSVBTMzJfTzMyYCBvciBhbnl0aGluZyBsaWtlIHRoYXQuXG5cblNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIGJvdGggYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AsIHRoaXMgYXBwbGllcyB0byBib3RoIDMyLWJpdCBhbmQgNjQtYml0IE1JUFMgYXJjaGl0ZWN0dXJlcy4gU28sIEkgd2lsbCBqdXN0IHNldCB0aGUgY29uZmlnIHRvIGBCUEZfSklUYCB3aGljaCBpcyB0aGUgY29ycmVjdCBvbmUuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGtleSBzeW1ib2xzLiBgYnBmX2ludF9qaXRfY29tcGlsZWAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBCUEYgSklULCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGVuIHdlIGhhdmUgYGJ1aWxkX2luc25gLCB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIHRyYW5zbGF0aW5nIEJQRiBpbnN0cnVjdGlvbnMgdG8gTUlQUyBjb2RlLiBBbHNvLCBmdW5jdGlvbnMgbGlrZSBgZW1pdF9hbHVfcmAsIGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQuXG5cbkludGVyZXN0aW5nbHksIGBqaXRfc21vZDY0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIHVzdWFsbHkgYSByZWQgZmxhZyB3aGVuIGZ1enppbmcsIGJlY2F1c2UgaXQgbWVhbnMgaXQgY2FuJ3QgYmUgY2FsbGVkIGRpcmVjdGx5LiBCdXQsIGluIHRoaXMgY2FzZSwgaXRzIGFkZHJlc3MgaXMgKnRha2VuKiB2aWEgYSBmdW5jdGlvbiBwb2ludGVyOlxuXG5gYGBjXG5cdGNhc2UgQlBGX01PRDpcblx0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG5cdFx0YnJlYWs7XG5gYGBcblxuVGhhdCAqZm9yY2VzKiBpdCB0byBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIG1ha2luZyBpdCBhIHZpYWJsZSB0YXJnZXQuIEdvaW5nIHRvIGxvb2sgYXQgYGppdF9zbW9kNjRgIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBjb25maXJtZWQsIGl0J3MgdGhlcmUuIFNvIGBqaXRfc21vZDY0YCBpcyBhIGdvIVxuXG5gYnVpbGRfaW5zbmAgaXMgYW5vdGhlciBvYnZpb3VzIGNhbmRpZGF0ZSBiZWNhdXNlIGl0IGlzIGluIGJvdGggYC5jYCBmaWxlcywgc28gaWYgSSBwaWNrIGl0LCBpdCB3aWxsIHRyaWdnZXIgYm90aC4gSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBlbWl0X2FsdV9yYC5cblxuT2theSwgSSd2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBzb2xlIGNvbmZpZyBuZWVkZWQuXG5cblRoZXJlZm9yZSwgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOlxuLSBgYnBmX2ludF9qaXRfY29tcGlsZWBcbi0gYGJ1aWxkX2luc25gXG4tIGBqaXRfc21vZDY0YFxuLSBgZW1pdF9hbHVfcmBcblxuRW5hYmxlIGNvbmZpZzogYEJQRl9KSVRgXG5cbioqUmVhc29uaW5nOioqXG5cblRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSBieSBwcm92aWRpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIGNhcGFiaWxpdGllcyB0byB0aGUgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgaG93IGluc3RydWN0aW9ucyBhcmUgdHJhbnNsYXRlZCBhbmQgZXhlY3V0ZWQsIG1ha2luZyBpdCBhIGNyaXRpY2FsIGFyZWEgZm9yIGZ1enppbmcuXG5cbkdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBqaXRfc21vZDY0YCBpcyBzcGVjaWZpY2FsbHkgMzItYml0LiBJdCAqaXMqIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLiBPbiA2NC1iaXQsIGFzIHNlZW4gaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGhhcmR3YXJlIGRpdmlzaW9uL21vZHVsbyBpbnN0cnVjdGlvbnMgYXJlIHVzZWQuIFNvIHllcywgYGppdF9zbW9kNjRgIGlzIG5lZWRlZCBmb3IgMzItYml0IGVtdWxhdGlvbiBvZiA2NC1iaXQgc2lnbmVkIG1vZHVsby5cblxuQWxsIHJpZ2h0LCB0aGF0IGNvdmVycyBpdC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxOSwiT3V0cHV0VG9rZW5zIjoxNTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjU1LjE3NjQyODE0NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDAzOTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnVpbGRfaW5zblwiLFxuICAgIFwiaml0X3Ntb2Q2NFwiLFxuICAgIFwiZW1pdF9hbHVfclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyBpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIgdG8gc3VwcG9ydCBzaWduZWQgZGl2L21vZCBpbnN0cnVjdGlvbnMgYW5kIHVwZGF0ZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgdG8gdXNlIHRoZW0gd2hlbiB0cmFuc2xhdGluZyBCUEZfRElWIGFuZCBCUEZfTU9EIGluc3RydWN0aW9ucyB3aXRoIHRoZSBzaWduZWQgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIEpJVCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJ1aWxkX2luc25cIixcbiAgICBcImppdF9zbW9kNjRcIixcbiAgICBcImVtaXRfYWx1X3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIHRvIHN1cHBvcnQgc2lnbmVkIGRpdi9tb2QgaW5zdHJ1Y3Rpb25zIGFuZCB1cGRhdGVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSB0aGVtIHdoZW4gdHJhbnNsYXRpbmcgQlBGX0RJViBhbmQgQlBGX01PRCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgc2lnbmVkIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowp7qjh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 01:32:02 +0000 UTC FinishedAt: 2026-07-31 01:33:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "66e2e68f-0639-4a32-a7f0-1cd42d5be106" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "build_insn", "jit_smod64", "emit_alu_r" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2J1aWxkX2luc24mIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyBpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIgdG8gc3VwcG9ydCBzaWduZWQgZGl2L21vZCBpbnN0cnVjdGlvbnMgYW5kIHVwZGF0ZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgdG8gdXNlIHRoZW0gd2hlbiB0cmFuc2xhdGluZyBCUEZfRElWIGFuZCBCUEZfTU9EIGluc3RydWN0aW9ucyB3aXRoIHRoZSBzaWduZWQgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIEpJVCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMzllZDRlZjMwZTQ5ZGQ0NzhkMDM0OTc5MTMxY2Y4MmU2MmNkMjY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6MzM6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbmluZGV4IGI0M2JmZDQ0NTI1MjEuLjlkM2VkYjU5ZWZjMDkgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG5AQCAtODUsMTUgJiM0Mzs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcbiBJcF91MnUxKF9jdGNtc2EpO1xuIElwX3UydTFzMyhfZGFkZGl1KTtcbiBJcF91M3UxdTIoX2RhZGR1KTtcbiYjNDM7SXBfdTF1MihfZGRpdik7XG4mIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7XG4gSXBfdTF1MihfZGRpdnUpO1xuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xuIElwX3UxKF9kaSk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zKTtcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcbiBJcF91MnUxbXNidTMoX2RpbnN1KTtcbiYjNDM7SXBfdTF1MihfZGl2KTtcbiYjNDM7SXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4mIzQzO0lwX3UzdTF1MihfZG1vZCk7XG4gSXBfdTN1MXUyKF9kbW9kdSk7XG4gSXBfdTF1MnUzKF9kbXRjMCk7XG4gSXBfdTF1MihfZG11bHR1KTtcbkBAIC0xMzUsNiAmIzQzOzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XG4gSXBfdTF1MnUzKF9tZmhjMCk7XG4gSXBfdTEoX21maGkpO1xuIElwX3UxKF9tZmxvKTtcbiYjNDM7SXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuaW5kZXggZTE1YzY3MDBjZDA4OC4uZWYxYTJiMDQwMDcwMCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5AQCAtNzUsNiAmIzQzOzc1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2N0Y21zYV1cdD0ge00obXNhX29wLCAwLCBtc2FfY3RjX29wLCAwLCAwLCBtc2FfZWxtX29wKSwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kYWRkaXVdXHQ9IHtNKGRhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NfSxcbiBcdFtpbnNuX2RhZGR1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkYWRkdV9vcCksIFJTIHwgUlQgfCBSRH0sXG4mIzQzO1x0W2luc25fZGRpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdl9vcCksIFJTIHwgUlR9LFxuJiM0MztcdFtpbnNuX2RkaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZGRpdjZfb3AsIGRkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RkaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG5AQCAtODIsMTAgJiM0Mzs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fZGluc11cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zbV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc3VdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiYjNDM7XHRbaW5zbl9kaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LFxuJiM0MztcdFtpbnNuX2Rpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtZmMwXVx0PSB7TShjb3AwX29wLCBkbWZjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG4mIzQzO1x0W2luc25fZG1vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kbW9kX29wLCBkZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG10YzBdXHQ9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbkBAIC0xNDAsNiAmIzQzOzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9tZmhjMF1cdD0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sXG4gXHRbaW5zbl9tZmhpXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LFxuIFx0W2luc25fbWZsb11cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSxcbiYjNDM7XHRbaW5zbl9tb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW92bl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbW92bl9vcCksIFJTIHwgUlQgfCBSRH0sXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uYyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbmluZGV4IDEyNTE0MDk3OWQ2MmMuLjA2ZDcyMjY2NTQ1MWYgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS5jXG5AQCAtNDksMTggJiM0Mzs0OSwyMCBAQCBlbnVtIG9wY29kZSB7XG4gXHRpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsXG4gXHRpbnNuX2JlcSwgaW5zbl9iZXFsLCBpbnNuX2JnZXosIGluc25fYmdlemwsIGluc25fYmd0eiwgaW5zbl9ibGV6LFxuIFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxuLVx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LFxuLVx0aW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLCBpbnNuX2RpbnN1LCBpbnNuX2RpdnUsXG4tXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxuJiM0MztcdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LFxuJiM0MztcdGluc25fZGRpdl9yNiwgaW5zbl9kZGl2dSwgaW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLFxuJiM0MztcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXG4mIzQzO1x0aW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiBcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcbiBcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXG4gXHRpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsXG4gXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxuIFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcbiBcdGluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLFxuLVx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4tXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcbi1cdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXG4mIzQzO1x0aW5zbl9tZmxvLCBpbnNuX21vZCwgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLFxuJiM0MztcdGluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LFxuJiM0MztcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXG4mIzQzO1x0aW5zbl9zYiwgaW5zbl9zYyxcbiBcdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuIFx0aW5zbl9zbGx2LCBpbnNuX3NsdCwgaW5zbl9zbHRpLCBpbnNuX3NsdGl1LCBpbnNuX3NsdHUsIGluc25fc3JhLFxuIFx0aW5zbl9zcmF2LCBpbnNuX3NybCwgaW5zbl9zcmx2LCBpbnNuX3N1YnUsIGluc25fc3csIGluc25fc3luYyxcbkBAIC0yODcsOSAmIzQzOzI4OSwxMiBAQCBJX3UxdTIoX2NmYzEpXG4gSV91MnUxKF9jZmNtc2EpXG4gSV91MXUyKF9jdGMxKVxuIElfdTJ1MShfY3RjbXNhKVxuJiM0MztJX3UxdTIoX2RkaXYpXG4mIzQzO0lfdTN1MXUyKF9kZGl2X3I2KVxuIElfdTF1MihfZGRpdnUpXG4gSV91M3UxdTIoX2RkaXZ1X3I2KVxuIElfdTF1MnUzKF9kbWZjMClcbiYjNDM7SV91M3UxdTIoX2Rtb2QpXG4gSV91M3UxdTIoX2Rtb2R1KVxuIElfdTF1MnUzKF9kbXRjMClcbiBJX3UxdTIoX2RtdWx0dSlcbkBAIC0yOTcsNiAmIzQzOzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4mIzQzO0lfdTF1MihfZGl2KVxuJiM0MztJX3UzdTF1MihfZGl2X3I2KVxuIElfdTF1MihfZGl2dSlcbiBJX3UzdTF1MihfZGl2dV9yNilcbiBJX3UydTEoX2RzYmgpO1xuQEAgLTMzMiw2ICYjNDM7MzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuJiM0MztJX3UzdTF1MihfbW9kKVxuIElfdTN1MXUyKF9tb2R1KVxuIElfdTN1MXUyKF9tb3ZuKVxuIElfdTN1MXUyKF9tb3Z6KVxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCA2ZWU0YWJlNmExZjcwLi5hNjc4ODVkMjg5NDJmIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYylcbiB9XG4gXG4gLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqL1xuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXG4mIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0Y2FzZSBCUEZfTkVHOlxuQEAgLTIzNyw2ICYjNDM7MjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiBcdFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XG4gXHRjYXNlIEJQRl9ESVY6XG4gXHRjYXNlIEJQRl9NT0Q6XG4mIzQzO1x0XHQvKiBEbyBub3QgdXNlIHVuc2lnbmVkIHNoaWZ0L21hc2sgcmV3cml0ZXMgZm9yIHNpZ25lZCBkaXYvbW9kLiAqL1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHQvKiBpbW0gbXVzdCBiZSBhbiAxNy1iaXQgcG93ZXIgb2YgdHdvICovXG4gXHRcdHJldHVybiAodTMyKWltbSBcdTAwM2M9IDB4MTAwMDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoKHUzMilpbW0pO1xuIFx0fVxuQEAgLTMzOCw4ICYjNDM7MzQxLDQwIEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICovXG5AQCAtMzg1LDIxICYjNDM7NDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuLVx0XHR9XG4mIzQzO1x0XHRlbWl0X2RpdihjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuLVx0XHR9XG4mIzQzO1x0XHRlbWl0X21vZChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxuaW5kZXggYTM3ZmUyMDgxOGViOS4uMzkyNjZkYWE2ZGE2ZCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbkBAIC0xNjMsNyAmIzQzOzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4mIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgJiM0MzsxNzIsOCBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7XG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuJiM0MztcdFx0Ym9vbCBpc19zaWduZWQpO1xuIFxuIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqL1xuIHZvaWQgZW1pdF9hdG9taWNfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYsIHU4IGNvZGUpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuaW5kZXggNDBhODc4YjY3MmY1ZC4uYzhkNDVhNWQ1NGQ4MyAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5AQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcbiB9XG4gXG4tLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovXG4mIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiB7XG4gXHR1NjQgcmVtO1xuQEAgLTUyMSw5ICYjNDM7NTIxLDE3IEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiBcdHJldHVybiByZW07XG4gfVxuIFxuJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovXG4mIzQzO3N0YXRpYyBzNjQgaml0X3Ntb2Q2NChzNjQgYSwgczY0IGIpXG4mIzQzO3tcbiYjNDM7XHR1NjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGEgLSBxdW90ICogYjtcbiYjNDM7fVxuJiM0MztcbiAvKiBBTFUgZGl2L21vZCByZWdpc3RlciAoNjQtYml0KSAqL1xuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbi1cdFx0XHQgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSxcbiYjNDM7XHRcdFx0ICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cbiBcdGNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovXG5AQCAtNTQ2LDExICYjNDM7NTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiYjNDM7XHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4mIzQzO1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XG5AQCAtMTQ2OSw2ICYjNDM7MTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHR1OCBjb2RlID0gaW5zbi1cdTAwM2Vjb2RlO1xuIFx0czE2IG9mZiA9IGluc24tXHUwMDNlb2ZmO1xuIFx0czMyIGltbSA9IGluc24tXHUwMDNlaW1tO1xuJiM0MztcdGJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7XG4gXHRzMzIgdmFsLCByZWw7XG4gXHR1OCBhbHUsIGptcDtcbiBcbkBAIC0xNTE2LDkgJiM0MzsxNTI1LDEwIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksXG4mIzQzO1x0XHRcdFx0ICAgaXNfc2lnbmVkKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtMTU0Niw3ICYjNDM7MTU1Niw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcbiBcdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXG5AQCAtMTU5OSw3ICYjNDM7MTYwOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cbiBcdFx0ICovXG4gXHRcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcbi1cdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICg2NC1iaXQpICovXG4gXHQvKiBkc3QgPSBkc3QgfCBzcmMgKDY0LWJpdCkgKi9cbkBAIC0xNjI5LDcgJiM0MzsxNjM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqL1xuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmNhMjc0MWYxNDQ4M2QgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE5Nyw4ICYjNDM7MTk3LDQzIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxuJiM0MztcdFx0ICAgICAgIGJvb2wgaXNfc2lnbmVkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxuJiM0MztcdFx0ICAgICAgIGJvb2wgaXNfc2lnbmVkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZClcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuJiM0MztzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcbiYjNDM7XHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzY1x1MDAzYyBzcmMgKi9cbkBAIC0yMzUsMjUgJiM0MzsyNzAsMTUgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbi1cdFx0fVxuJiM0MztcdFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4tXHRcdH1cbiYjNDM7XHRcdGVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBmYWxzZSk7XG4gXHR9XG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuQEAgLTY0MCw2ICYjNDM7NjY1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdHU4IGNvZGUgPSBpbnNuLVx1MDAzZWNvZGU7XG4gXHRzMTYgb2ZmID0gaW5zbi1cdTAwM2VvZmY7XG4gXHRzMzIgaW1tID0gaW5zbi1cdTAwM2VpbW07XG4mIzQzO1x0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcbiBcdHMzMiB2YWwsIHJlbDtcbiBcdHU4IGFsdSwgam1wO1xuIFxuQEAgLTY3NCw5ICYjNDM7NzAwLDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9BTkQgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGZhbHNlKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTY5NiwxMCAmIzQzOzcyMiwxMSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG4mIzQzO1x0XHRcdFx0ICAgaXNfc2lnbmVkKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpO1xuQEAgLTcxNCw3ICYjNDM7NzQxLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICYjNDM7NzYwLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC03NzAsOSAmIzQzOzc5NywxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG4mIzQzO1x0XHRcdFx0ICAgICBpc19zaWduZWQpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNzk5LDcgJiM0Mzs4MjcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xuIFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDtidWlsZF9pbnNuJiMzNDssCiAgICAmIzM0O2ppdF9zbW9kNjQmIzM0OywKICAgICYjMzQ7ZW1pdF9hbHVfciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIHRvIHN1cHBvcnQgc2lnbmVkIGRpdi9tb2QgaW5zdHJ1Y3Rpb25zIGFuZCB1cGRhdGVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSB0aGVtIHdoZW4gdHJhbnNsYXRpbmcgQlBGX0RJViBhbmQgQlBGX01PRCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgc2lnbmVkIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzM5ZWQ0ZWYzMGU0OWRkNDc4ZDAzNDk3OTEzMWNmODJlNjJjZDI2NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAxOjMzOjA5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmgKaW5kZXggYjQzYmZkNDQ1MjUyMS4uOWQzZWRiNTllZmMwOSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oCkBAIC04NSwxNSAmIzQzOzg1LDIwIEBAIElwX3UxdTIoX2N0YzEpOwogSXBfdTJ1MShfY3RjbXNhKTsKIElwX3UydTFzMyhfZGFkZGl1KTsKIElwX3UzdTF1MihfZGFkZHUpOwomIzQzO0lwX3UxdTIoX2RkaXYpOwomIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7CiBJcF91MXUyKF9kZGl2dSk7CiBJcF91M3UxdTIoX2RkaXZ1X3I2KTsKIElwX3UxKF9kaSk7CiBJcF91MnUxbXNidTMoX2RpbnMpOwogSXBfdTJ1MW1zYnUzKF9kaW5zbSk7CiBJcF91MnUxbXNidTMoX2RpbnN1KTsKJiM0MztJcF91MXUyKF9kaXYpOwomIzQzO0lwX3UzdTF1MihfZGl2X3I2KTsKIElwX3UxdTIoX2RpdnUpOwogSXBfdTN1MXUyKF9kaXZ1X3I2KTsKIElwX3UxdTJ1MyhfZG1mYzApOwomIzQzO0lwX3UzdTF1MihfZG1vZCk7CiBJcF91M3UxdTIoX2Rtb2R1KTsKIElwX3UxdTJ1MyhfZG10YzApOwogSXBfdTF1MihfZG11bHR1KTsKQEAgLTEzNSw2ICYjNDM7MTQwLDcgQEAgSXBfdTF1MnUzKF9tZmMwKTsKIElwX3UxdTJ1MyhfbWZoYzApOwogSXBfdTEoX21maGkpOwogSXBfdTEoX21mbG8pOwomIzQzO0lwX3UzdTF1MihfbW9kKTsKIElwX3UzdTF1MihfbW9kdSk7CiBJcF91M3UxdTIoX21vdm4pOwogSXBfdTN1MXUyKF9tb3Z6KTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYwppbmRleCBlMTVjNjcwMGNkMDg4Li5lZjFhMmIwNDAwNzAwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jCkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2N0Y21zYV0JPSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSwKIAlbaW5zbl9kYWRkaXVdCT0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LAogCVtpbnNuX2RhZGR1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSwKJiM0MzsJW2luc25fZGRpdl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sCiYjNDM7CVtpbnNuX2RkaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGRpdnVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSwKIAlbaW5zbl9kZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LApAQCAtODIsMTAgJiM0Mzs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2RpbnNdCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sCiAJW2luc25fZGluc21dCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LAogCVtpbnNuX2RpbnN1XQk9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSwKJiM0MzsJW2luc25fZGl2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LAomIzQzOwlbaW5zbl9kaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGl2dV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sCiAJW2luc25fZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2RtZmMwXQk9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSwKJiM0MzsJW2luc25fZG1vZF0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLAomIzQzOwkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2Rtb2R1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksCiAJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kbXRjMF0JPSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sCkBAIC0xNDAsNiAmIzQzOzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fbWZoYzBdCT0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sCiAJW2luc25fbWZoaV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LAogCVtpbnNuX21mbG9dCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSwKJiM0MzsJW2luc25fbW9kXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW9kdV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW92bl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IDEyNTE0MDk3OWQ2MmMuLjA2ZDcyMjY2NTQ1MWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uYwpAQCAtNDksMTggJiM0Mzs0OSwyMCBAQCBlbnVtIG9wY29kZSB7CiAJaW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLAogCWluc25fYmVxLCBpbnNuX2JlcWwsIGluc25fYmdleiwgaW5zbl9iZ2V6bCwgaW5zbl9iZ3R6LCBpbnNuX2JsZXosCiAJaW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLAotCWluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSwKLQlpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sIGluc25fZGluc3UsIGluc25fZGl2dSwKLQlpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LAomIzQzOwlpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdiwKJiM0MzsJaW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sCiYjNDM7CWluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsCiYjNDM7CWluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsCiAJaW5zbl9kbXVsdSwgaW5zbl9kcm90ciwgaW5zbl9kcm90cjMyLCBpbnNuX2RzYmgsIGluc25fZHNoZCwgaW5zbl9kc2xsLAogCWluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsCiAJaW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLAogCWluc25faiwgaW5zbl9qYWwsIGluc25famFsciwgaW5zbl9qciwgaW5zbl9sYiwgaW5zbl9sYnUsIGluc25fbGQsCiAJaW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCwKIAlpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSwKLQlpbnNuX21mbG8sIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCwKLQlpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vciwKLQlpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLAomIzQzOwlpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsCiYjNDM7CWluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LAomIzQzOwlpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLAomIzQzOwlpbnNuX3NiLCBpbnNuX3NjLAogCWluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLAogCWluc25fc2xsdiwgaW5zbl9zbHQsIGluc25fc2x0aSwgaW5zbl9zbHRpdSwgaW5zbl9zbHR1LCBpbnNuX3NyYSwKIAlpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLApAQCAtMjg3LDkgJiM0MzsyODksMTIgQEAgSV91MXUyKF9jZmMxKQogSV91MnUxKF9jZmNtc2EpCiBJX3UxdTIoX2N0YzEpCiBJX3UydTEoX2N0Y21zYSkKJiM0MztJX3UxdTIoX2RkaXYpCiYjNDM7SV91M3UxdTIoX2RkaXZfcjYpCiBJX3UxdTIoX2RkaXZ1KQogSV91M3UxdTIoX2RkaXZ1X3I2KQogSV91MXUydTMoX2RtZmMwKQomIzQzO0lfdTN1MXUyKF9kbW9kKQogSV91M3UxdTIoX2Rtb2R1KQogSV91MXUydTMoX2RtdGMwKQogSV91MXUyKF9kbXVsdHUpCkBAIC0yOTcsNiAmIzQzOzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSkKIElfdTJ1MXMzKF9kYWRkaXUpCiBJX3UzdTF1MihfZGFkZHUpCiBJX3UxKF9kaSk7CiYjNDM7SV91MXUyKF9kaXYpCiYjNDM7SV91M3UxdTIoX2Rpdl9yNikKIElfdTF1MihfZGl2dSkKIElfdTN1MXUyKF9kaXZ1X3I2KQogSV91MnUxKF9kc2JoKTsKQEAgLTMzMiw2ICYjNDM7MzM5LDcgQEAgSV91MnMzdTEoX2x3KQogSV91MnMzdTEoX2x3dSkKIElfdTF1MnUzKF9tZmMwKQogSV91MXUydTMoX21maGMwKQomIzQzO0lfdTN1MXUyKF9tb2QpCiBJX3UzdTF1MihfbW9kdSkKIElfdTN1MXUyKF9tb3ZuKQogSV91M3UxdTIoX21vdnopCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYwppbmRleCA2ZWU0YWJlNmExZjcwLi5hNjc4ODVkMjg5NDJmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYykKIH0KIAogLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAljYXNlIEJQRl9ORUc6CkBAIC0yMzcsNiAmIzQzOzIzNyw5IEBAIGJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pCiAJCXJldHVybiBpbW0gPT0gMCB8fCAoaW1tICZndDsgMCAmYW1wOyZhbXA7IGlzX3Bvd2VyX29mXzIoaW1tKSk7CiAJY2FzZSBCUEZfRElWOgogCWNhc2UgQlBGX01PRDoKJiM0MzsJCS8qIERvIG5vdCB1c2UgdW5zaWduZWQgc2hpZnQvbWFzayByZXdyaXRlcyBmb3Igc2lnbmVkIGRpdi9tb2QuICovCiYjNDM7CQlpZiAoaXNfc2lnbmVkKQomIzQzOwkJCXJldHVybiBmYWxzZTsKIAkJLyogaW1tIG11c3QgYmUgYW4gMTctYml0IHBvd2VyIG9mIHR3byAqLwogCQlyZXR1cm4gKHUzMilpbW0gJmx0Oz0gMHgxMDAwMCAmYW1wOyZhbXA7IGlzX3Bvd2VyX29mXzIoKHUzMilpbW0pOwogCX0KQEAgLTMzOCw4ICYjNDM7MzQxLDQwIEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCkKIAljbG9iYmVyX3JlZyhjdHgsIGRzdCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBlbWl0X2RpdihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKQomIzQzO3sKJiM0MzsJaWYgKGNwdV9oYXNfbWlwczMycjYpIHsKJiM0MzsJCWlmIChpc19zaWduZWQpCiYjNDM7CQkJZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQllbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzMzJyNikgewomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQllbWl0KGN0eCwgbW9kLCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKQomIzQzOwkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovCi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCkKJiM0Mzt2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpCiB7CiAJc3dpdGNoIChCUEZfT1Aob3ApKSB7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAqLwpAQCAtMzg1LDIxICYjNDM7NDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgLyBzcmMgKi8KIAljYXNlIEJQRl9ESVY6Ci0JCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7Ci0JCQllbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfZGl2KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczMycjYpIHsKLQkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7Ci0JCQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKLQkJfQomIzQzOwkJZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTsKIAkJYnJlYWs7CiAJfQogCWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oCmluZGV4IGEzN2ZlMjA4MThlYjkuLjM5MjY2ZGFhNmRhNmQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaApAQCAtMTYzLDcgJiM0MzsxNjMsNyBAQCB2b2lkIGVtaXRfbW92X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSk7CiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTsKIAogLyogVmFsaWRhdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7CiYjNDM7Ym9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgYm9vbCBpc19zaWduZWQpOwogCiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovCiBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTsKQEAgLTE3Miw3ICYjNDM7MTcyLDggQEAgYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7CiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApOwogCiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovCi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7CiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsCiYjNDM7CQlib29sIGlzX3NpZ25lZCk7CiAKIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqLwogdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKaW5kZXggNDBhODc4YjY3MmY1ZC4uYzhkNDVhNWQ1NGQ4MyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYwpAQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsCiAJY2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7CiB9CiAKLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqLwomIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqLwogc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKQogewogCXU2NCByZW07CkBAIC01MjEsOSAmIzQzOzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpCiAJcmV0dXJuIHJlbTsKIH0KIAomIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi8KJiM0MztzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKQomIzQzO3sKJiM0MzsJdTY0IHF1b3QgPSBkaXY2NF9zNjQoYSwgYik7CiYjNDM7CiYjNDM7CXJldHVybiBhIC0gcXVvdCAqIGI7CiYjNDM7fQomIzQzOwogLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwKLQkJCSAgICBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sCiYjNDM7CQkJICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpCiB7CiAJY29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi8KIAljb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqLwpAQCAtNTQ2LDExICYjNDM7NTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAkvKiBkc3QgPSBkc3QgLyBzcmMgKi8KIAljYXNlIEJQRl9ESVY6Ci0JCWFkZHIgPSAodTMyKSZhbXA7ZGl2NjRfdTY0OwomIzQzOwkJYWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpJmFtcDtkaXY2NF9zNjQgOiAodTMyKSZhbXA7ZGl2NjRfdTY0OwogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgJSBzcmMgKi8KIAljYXNlIEJQRl9NT0Q6Ci0JCWFkZHIgPSAodTMyKSZhbXA7aml0X21vZDY0OwomIzQzOwkJYWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpJmFtcDtqaXRfc21vZDY0IDogKHUzMikmYW1wO2ppdF9tb2Q2NDsKIAkJYnJlYWs7CiAJfQogCWVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDksIGFkZHIpOwpAQCAtMTQ2OSw2ICYjNDM7MTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJdTggY29kZSA9IGluc24tJmd0O2NvZGU7CiAJczE2IG9mZiA9IGluc24tJmd0O29mZjsKIAlzMzIgaW1tID0gaW5zbi0mZ3Q7aW1tOwomIzQzOwlib29sIGlzX3NpZ25lZCA9IG9mZiA9PSAxOwogCXMzMiB2YWwsIHJlbDsKIAl1OCBhbHUsIGptcDsKIApAQCAtMTUxNiw5ICYjNDM7MTUyNSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLAomIzQzOwkJCQkgICBpc19zaWduZWQpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7CiAJCX0KQEAgLTE1NDYsNyAmIzQzOzE1NTYsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KQEAgLTE1OTksNyAmIzQzOzE2MDksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCQkgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuCiAJCSAqLwogCQllbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7Ci0JCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAoNjQtYml0KSAqLwogCS8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqLwpAQCAtMTYyOSw3ICYjNDM7MTYzOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJLyogZHN0ID0gZHN0ICUgc3JjICg2NC1iaXQpICovCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaHRvbGUoZHN0KSAqLwogCS8qIGRzdCA9IGh0b2JlKGRzdCkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCBmYTdlOWFhMzdmNDk4Li5jYTI3NDFmMTQ0ODNkIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xOTcsOCAmIzQzOzE5Nyw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApCiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsCiYjNDM7CQkgICAgICAgYm9vbCBpc19zaWduZWQpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzNjRyNikgewomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQllbWl0KGN0eCwgZGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChpc19zaWduZWQpCiYjNDM7CQkJZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLAomIzQzOwkJICAgICAgIGJvb2wgaXNfc2lnbmVkKQomIzQzO3sKJiM0MzsJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCWlmIChpc19zaWduZWQpCiYjNDM7CQkJZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJZWxzZQomIzQzOwkJCWVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKQomIzQzOwkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7CiYjNDM7CQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLAomIzQzOwkJCSBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAkvKiBkc3QgPSBkc3QgJmx0OyZsdDsgc3JjICovCkBAIC0yMzUsMjUgJiM0MzsyNzAsMTUgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwotCQl9CiYjNDM7CQllbWl0X2RpdjY0KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwotCQl9CiYjNDM7CQllbWl0X21vZDY0KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqLwotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTsKIAl9CiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQpAQCAtNjQwLDYgJiM0Mzs2NjUsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCXU4IGNvZGUgPSBpbnNuLSZndDtjb2RlOwogCXMxNiBvZmYgPSBpbnNuLSZndDtvZmY7CiAJczMyIGltbSA9IGluc24tJmd0O2ltbTsKJiM0MzsJYm9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTsKIAlzMzIgdmFsLCByZWw7CiAJdTggYWx1LCBqbXA7CiAKQEAgLTY3NCw5ICYjNDM7NzAwLDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGZhbHNlKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTsKIAkJfQpAQCAtNjk2LDEwICYjNDM7NzIyLDExIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6Ci0JCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7CiYjNDM7CQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7CiAJCQllbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7CiAJCQllbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pOwotCQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLAomIzQzOwkJCQkgICBpc19zaWduZWQpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTsKIAkJCWVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTsKQEAgLTcxNCw3ICYjNDM7NzQxLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOgotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZndDsmZ3Q7IHNyYyAqLwpAQCAtNzMzLDcgJiM0Mzs3NjAsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDoKIAkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQllbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7Ci0JCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaW1tICg2NC1iaXQpICovCkBAIC03NzAsOSAmIzQzOzc5NywxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksCiYjNDM7CQkJCSAgICAgaXNfc2lnbmVkKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTsKIAkJfQpAQCAtNzk5LDcgJiM0Mzs4MjcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGh0b2xlKGRzdCkgKi8KIAkvKiBkc3QgPSBodG9iZShkc3QpICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDQ2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1JUFMgQlBGIEpJVCBDb21waWxlcjogU2lnbmVkIERpdmlzaW9uIGFuZCBNb2R1bG8gU3VwcG9ydCAtIFdvcnRoeSBvZiBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IGZvciB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIHNpZ25pZmljYW50LCBpdCBleHRlbmRzIHRoZSBCUEYgY2FwYWJpbGl0aWVzIG9uIE1JUFMsIHNwZWNpZmljYWxseSBieSBhZGRpbmcgdGhlIG5lY2Vzc2FyeSBNSVBTIGluc3RydWN0aW9ucyAoYGRkaXZgLCBgZGRpdl9yNmAsIGBkaXZgLCBgZGl2X3I2YCwgYGRtb2RgLCBgbW9kYCwgZXRjLikgd2l0aGluIGBhcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oYCwgYGFyY2gvbWlwcy9tbS91YXNtLW1pcHMuY2AsIGFuZCBgYXJjaC9taXBzL21tL3Vhc20uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBsZXZlcmFnaW5nIHRoZXNlIGluc3RydWN0aW9ucyB3aGVuIGBpc19zaWduZWRgIGlzIHRydWUgZm9yIGBCUEZfRElWYCBhbmQgYEJQRl9NT0RgIGluc3RydWN0aW9ucyBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBhbmQgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AuCgpGdW5jdGlvbmFsbHksIHRoaXMgbWVhbnMgdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlciBjYW4gbm93IGhhbmRsZSBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHksIGFuZCB5ZXMsIHRoaXMgaXMgYWJzb2x1dGVseSByZWFjaGFibGUuIFdlIGNhbiB0cmlnZ2VyIHRoaXMgZnVuY3Rpb25hbGl0eSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBieSBsb2FkaW5nIGEgQlBGIHByb2dyYW0gY29udGFpbmluZyBzaWduZWQgZGl2aXNpb24vbW9kdWxvIGluc3RydWN0aW9ucy4KClRoaW5raW5nIGFib3V0IGZ1enppbmcsIHRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcyBNSVBTIHN1cHBvcnQgaW4gZ2VuZXJhbC4gQW5kIHllcywgc3l6a2FsbGVyIGhhcyBNSVBTIHN1cHBvcnQuIFdlIGhhdmUgYG1pcHM2NGxlYCwgYG1pcHMzMmAsIGV0Yy4sIGNvdmVyZWQhCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydDogdGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0aGF0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjb2RlIGNhbiBiZSBleGVjdXRlZC4gQmFzZWQgb24gdGhlIHByb21wdCwgdGhpcyBtZWFucyBJIG5lZWQgdG8gdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGNvbmZpcm0gZXhlY3V0aW9uLiBTbywgdGhpcyBkZWZpbml0ZWx5IG1lYW5zIGl0JiMzOTtzIFdvcnRoRnV6emluZz10cnVlLgoKQmVmb3JlIEkgc2F5IHRoYXQgd2l0aCBjb25maWRlbmNlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLiBDT05GSUdfQlBGX0pJVCBpcyBuZWNlc3NhcnkgYXMgaXQgcHJvdmlkZXMgdGhlIEJQRiBKSVQgaW5mcmFzdHJ1Y3R1cmUuIEFsc28sIENPTkZJR19NSVBTIGlzIG9idmlvdXNseSBuZWVkZWQgYmVjYXVzZSB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlOiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgc3BlY2lmaWMgZmlsZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSSBuZWVkIHRvIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIHRoZSBmdW5jdGlvbnM6IGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2FsdV9yYCwgYGVtaXRfZGl2bW9kX3I2NGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIGBidWlsZF9pbnNuYC4gSSYjMzk7bGwgYWxzbyBkb3VibGUtY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIGJlIGNlcnRhaW4uCgpHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgY2hhbmdlIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM9OTMyPWJvb2wgYnBmX2ppdF9uZWVkc196ZXh0KHZvaWQpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy05MzYtXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjkzNzpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy05Mzgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzg5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZvY3VzOiBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gYSBzcGVjaWZpYyBhcmVhIHdpdGhpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBNeSBwcmltYXJ5IHRhcmdldHMgYXJlIHRoZSBgYnVpbGRfaW5zbmAgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBpbnN0cnVjdGlvbiBidWlsZGluZyBsb2dpYyByZXNpZGVzLCBuYXR1cmFsbHkuCgpCZXlvbmQgYGJ1aWxkX2luc25gLCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRpdmlzaW9uIGFuZCBtb2R1bG8gaW1wbGVtZW50YXRpb25zLiBUaGUgZnVuY3Rpb25zIHRvIGV4YW1pbmUgd2lsbCBiZSBgZW1pdF9kaXZgLCBgZW1pdF9tb2RgLCBgZW1pdF9kaXY2NGAsIGBlbWl0X21vZDY0YCwgYGVtaXRfZGl2bW9kX3I2NGAgYW5kIGBqaXRfc21vZDY0YC4gR2V0dGluZyB0aGVzZSBmdW5jdGlvbnMgd29ya2luZyBjb3JyZWN0bHkgaXMgcGFyYW1vdW50IGZvciBwZXJmb3JtYW5jZSBhbmQgY29ycmVjdG5lc3MuCgpOb3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJlZm9yZSBJIGRpdmUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCB0byBzZWUgaWYgYGJ1aWxkX2luc25gIGlzIGRlY2xhcmVkIHN0YXRpYy4gS25vd2luZyB0aGF0IHdpbGwgaW1wYWN0IHRoZSB3YXkgSSB0aGluayBhYm91dCBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBmb3IgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J1aWxkX2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTg3NT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy04OTUtXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjg5NjpcdFx0cmV0ID0gYnVpbGRfaW5zbihpbnNuLCBjdHgpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy04OTctXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaD0yMjM9dm9pZCBidWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgaW50IGRlc3RfcmVnKTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTIzMy0gKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MjM0OmludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0yMzUtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jPTE0NTI9dm9pZCBidWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgaW50IGRlc3RfcmVnKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNDcwLS8qIEJ1aWxkIG9uZSBlQlBGIGluc3RydWN0aW9uICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTQ3MTppbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE0NzIte1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz02NDQ9dm9pZCBidWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgaW50IGRlc3RfcmVnKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy02NTktLyogQnVpbGQgb25lIGVCUEYgaW5zdHJ1Y3Rpb24gKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo2NjA6aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy02NjEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDA5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24gRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBCUEYgSklUIGNvbXBpbGF0aW9uIGZ1bmN0aW9ucyBmb3IgTUlQUywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBidWlsZF9pbnNuYCBpc24mIzM5O3Qgc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyBzdGF0aWMgZnVuY3Rpb25zIHR5cGljYWxseSBoYXZlIGludGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzdWdnZXN0cyBgYnVpbGRfaW5zbmAgbWlnaHQgYmUgdXNlZCBtb3JlIGJyb2FkbHkuCgpUaGVuIEkgc2VlIGEgY291cGxlIG9mIGZ1bmN0aW9ucywgYGVtaXRfZGl2YCBhbmQgYGVtaXRfbW9kYCwgdGhhdCAqYXJlKiBzdGF0aWMsIGFuZCB0aGV5IHJlc2lkZSBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AuIFRoYXQmIzM5O3MgZXhwZWN0ZWQsIGdpdmVuIHRoZWlyIHJvbGUgaW4gZ2VuZXJhdGluZyBvcHRpbWl6ZWQgY29kZSBmb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLiBTaW1pbGFybHksIGBlbWl0X2RpdjY0YCBhbmQgYGVtaXRfbW9kNjRgIGFyZSBzdGF0aWMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGFuZCBgZW1pdF9kaXZtb2RfcjY0YCBhbmQgYGppdF9zbW9kNjRgIGFyZSBzdGF0aWMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYGVtaXRfYWx1X3JgLCBzaW5jZSBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZ1bmN0aW9uJiMzOTtzIHNjb3BlIGFuZCBwb3NzaWJsZSBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIGJ1aWxkIGEgY2xlYXJlciBtZW50YWwgbW9kZWwgb2YgdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlciYjMzk7cyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW1pdF9hbHVfciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM9MzYwPXN0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNzYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzozNzc6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNzgte1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg9MTcyPXZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaDoxNzU6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTE3Ni1cdFx0Ym9vbCBpc19zaWduZWQpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0yMDE9c3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjI2NzpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjY4LVx0XHRcdCBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDcxPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MjktXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTMwOlx0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNTMxLVx0XHRcdFx0ICAgaXNfc2lnbmVkKTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTU1OC1cdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTU5Olx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NjAtXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjIzLVx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTYyNDpcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyNS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTIxNz1zdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyxcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjM0LS8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMzU6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjM2LVx0XHRcdCBib29sIGlzX3NpZ25lZClcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjgwLVx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyODE6XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yODItXHR9XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTY2MD1pbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MDQtXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3MDU6XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MDYtXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTcyNy1cdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjcyODpcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjktXHRcdFx0XHQgICBpc19zaWduZWQpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03NDMtXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzQ0Olx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc0NS1cdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc2Mi1cdFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjc2MzpcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzY0LVx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODAxLVx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6ODAyOlx0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODAzLVx0XHRcdFx0ICAgICBpc19zaWduZWQpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MjktXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo4MzA6XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODMxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTkwOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIHN1cHBvcnQgdG8gdGhlIEJQRiBKSVQgY29tcGlsZXIgc3BlY2lmaWNhbGx5IG9uIE1JUFMgYXJjaGl0ZWN0dXJlLiBUaGF0JiMzOTtzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBwcmltZSBlbnRyeSBwb2ludCBpcyBkZWZpbml0ZWx5IGBicGZfaW50X2ppdF9jb21waWxlYC4gSSYjMzk7bGwgd2FudCB0byB0YXJnZXQgdGhhdCBmb3Igc3VyZS4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjYWxscyB0byBgYnVpbGRfaW5zbmAuIEkgc2VlIGl0IGRlZmluZWQgaW4gYm90aCBgYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBicGZfaml0X2NvbXA2NC5jYC4gQnV0IGhvbGQgb24sIGBidWlsZF9pbnNuYCBpc24mIzM5O3Qgc3RhdGljLCBzbyBpdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBzeW1ib2wgYWRkcmVzcywgd2hpY2ggaXMgZ29vZCBmb3IgZnV6emluZy4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIHRoZSBtYWluIHRoaW5nIGhlcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGluc3RydWN0aW9ucyBhcmUgYnVpbHQuCgpMZXQmIzM5O3MgY29uZmlybSBob3cgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGludGVyYWN0cyB3aXRoIGBidWlsZF9pbnNuYC4gSSYjMzk7bGwgcGVlayBhdCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBidWlsZF9ib2R5YCBjYWxscyBgYnVpbGRfaW5zbmAsIHNvIHRoYXQmIzM5O3MgdGhlIGNoYWluLiBJIGNhbiBwcm9iYWJseSBmdXp6IHRoZSBgYnBmX2ludF9qaXRfY29tcGlsZWAgZnVuY3Rpb24sIGFuZCBzZWUgaG93IGl0IGJ1aWxkcyBpbnN0cnVjdGlvbnMuCgpOb3csIGNvbmZpZyByZXF1aXJlbWVudHMgYXJlIGltcG9ydGFudC4gTmF0dXJhbGx5LCBgQ09ORklHX0JQRl9KSVRgIGlzIGEgbXVzdC4gQW5kLCBzaW5jZSB0aGlzIGlzIE1JUFMgc3BlY2lmaWMsIEkgZG9uJiMzOTt0IG5lZWQgYENPTkZJR19NSVBTYCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBhcmNoaXRlY3R1cmUgaXRzZWxmLiBJIHdpbGwgbG9vayBpbnRvIGBhcmNoL21pcHMvS2NvbmZpZ2Agb3IgYGFyY2gvbWlwcy9uZXQvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRldGFpbHMgb3IgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2NvbXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0L01ha2VmaWxlLTMtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAub1xuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTgtZWxzZVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xOC0gKlxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzoxOTogKiAtIGJwZl9qaXRfY29tcC5oXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTIwLSAqICAgQ29tbW9uIGRlZmluaXRpb25zIGFuZCB1dGlsaXRpZXMuXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTIxLSAqXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjIyOiAqIC0gYnBmX2ppdF9jb21wLmNcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMjMtICogICBJbXBsZW1lbnRhdGlvbiBvZiBKSVQgdG9wLWxldmVsIGxvZ2ljIGFuZCBleHBvcnRlZCBKSVQgQVBJIGZ1bmN0aW9ucy5cbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTI3LSAqXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjI4OiAqIC0gYnBmX2ppdF9jb21wMzIuY1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0yOS0gKiAgIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyB0byBKSVQgcHJvbG9ndWUsIGVwaWxvZ3VlIGFuZCBhIHNpbmdsZSBlQlBGXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zMy0gKlxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzozNDogKiAtIGJwZl9qaXRfY29tcDY0LmNcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMzUtICogICBEaXR0bywgZm9yIDY0LWJpdCBNSVBTIENQVXMuXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xMTYtXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjExNzojaW5jbHVkZSBcJiMzNDticGZfaml0X2NvbXAuaFwmIzM0O1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xMTgtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTIyLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjIzOiNpbmNsdWRlIFwmIzM0O2JwZl9qaXRfY29tcC5oXCYjMzQ7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjQtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIxLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjIyOiNpbmNsdWRlIFwmIzM0O2JwZl9qaXRfY29tcC5oXCYjMzQ7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDM0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbiBhbmQgTWljcm8tQXNzZW1ibGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJQRiBKSVQgc2V0dXAsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlIGlzIGNsZWFybHkgYENPTkZJR19CUEZfSklUYC4gVGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgaW5pdGlhbCB0YXJnZXRzIGFyZSB0aGUgY29yZSBzeW1ib2xzOiBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGFuZCB0aGUgYGJ1aWxkX2luc25gIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGluIGBicGZfaml0X2NvbXAzMi5jYCBhbmQgYGJwZl9qaXRfY29tcDY0LmNgLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGV4dGVybmFsbHkuIEludGVyZXN0aW5nbHksIGBidWlsZF9pbnNuYCBpcyAqbm90KiBzdGF0aWMsIHNvIHRoYXQmIzM5O3MgaGVscGZ1bC4gTm93LCBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHNvIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBUaGUgYGJ1aWxkX2JvZHlgIGlzIGEgc3RhdGljIGhlbHBlciBmdW5jdGlvbi4gSSBzZWUgYGVtaXRfYWx1X3JgIGlzIG5vbi1zdGF0aWMgaW4gYGJwZl9qaXRfY29tcC5jYCwgd2hpY2ggbWFrZXMgaXQgYSBnbG9iYWwgc3ltYm9sLiBTbyBJIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IHVuZGVyc3RhbmRpbmcuIEl0IG1ha2VzIHNlbnNlLCBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBidWlsZF9pbnNuYCwgYW5kIGBlbWl0X2FsdV9yYCBhcmUgaW1wb3J0YW50LgoKSSYjMzk7bSB2ZXJpZnlpbmcgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaXMgaW5kZWVkIHRoZSAqb25seSogZW50cnkgcG9pbnQgZm9yIHRoZSBCUEYgSklULCB0byBhdm9pZCBnZXR0aW5nIGRpc3RyYWN0ZWQuIFRoYXQmIzM5O3MgY29uZmlybWVkLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucywganVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bSBhd2FyZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGdlbmVyYWxseSBhIHByZXJlcXVpc2l0ZSBmb3IgQlBGLCBidXQgYENPTkZJR19CUEZfSklUYCBpcyB0aGUgc3BlY2lmaWMgb25lIEkmIzM5O20gY29uY2VybmVkIHdpdGggaGVyZS4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIHJldmlldyB0aGlzIHBhdGNoIGEgbGl0dGxlIG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBpdCYjMzk7cyBhZGRpbmcgaW5zdHJ1Y3Rpb25zIHRvIGB1YXNtLW1pcHMuY2AgYW5kIGB1YXNtLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBmaWxlcyBhcmUgcGFydCBvZiB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIuIEkgbmVlZCB0byBjaGVjayB0aGUgTUlQUyBhcmNoaXRlY3R1cmUmIzM5O3MgTWFrZWZpbGUgdG8gc2VlIHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsaW5nIGB1YXNtLmNgLiBUaGF0IHdpbGwgcHJvdmlkZSBmdXJ0aGVyIGNsYXJpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Vhc20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjI0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL21pcHMvbW0vTWFrZWZpbGU9MTk9aWZkZWYgQ09ORklHX0NQVV9NSUNST01JUFNcbmFyY2gvbWlwcy9tbS9NYWtlZmlsZToyMDpvYmoteVx0XHRcdFx0JiM0Mzs9IHVhc20tbWljcm9taXBzLm9cbmFyY2gvbWlwcy9tbS9NYWtlZmlsZS0yMS1lbHNlXG5hcmNoL21pcHMvbW0vTWFrZWZpbGU6MjI6b2JqLXlcdFx0XHRcdCYjNDM7PSB1YXNtLW1pcHMub1xuYXJjaC9taXBzL21tL01ha2VmaWxlLTIzLWVuZGlmXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNS1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzY6I2luY2x1ZGUgXHUwMDNjYXNtL3Vhc20uaFx1MDAzZVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNy1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTUxPVVBU01fTF9MQShfY29weV9wcmVmX3N0b3JlKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTMtLyogV2UgbmVlZCBvbmUgYnJhbmNoIGFuZCB0aGVyZWZvcmUgb25lIHJlbG9jYXRpb24gcGVyIHRhcmdldCBsYWJlbC4gKi9cbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTQ6c3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1s1XTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTU6c3RhdGljIHN0cnVjdCB1YXNtX3JlbG9jIHJlbG9jc1s1XTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTYtXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy02My0gKi9cbmFyY2gvbWlwcy9tbS9wYWdlLmM6NjQ6I2RlZmluZSBfdWFzbV9pX3ByZWYoYSwgYiwgYywgZClcdFx0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNjUtZG8ge1x0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy02Ny1cdFx0aWYgKGMgXHUwMDNjPSAweGZmIFx1MDAyNlx1MDAyNiBjIFx1MDAzZT0gLTB4MTAwKVx0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Njg6XHRcdFx0dWFzbV9pX3ByZWYoYSwgYiwgYywgZCk7XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNjktXHR9IGVsc2Uge1x0XHRcdFx0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NzA6XHRcdHVhc21faV9wcmVmKGEsIGIsIGMsIGQpO1x0XFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNzEtXHR9XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz05MT1wZ19hZGRpdSh1MzIgKipidWYsIHVuc2lnbmVkIGludCByZWcxLCB1bnNpZ25lZCBpbnQgcmVnMiwgdW5zaWduZWQgaW50IG9mZilcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTk2LVx0XHRpZiAob2ZmIFx1MDAzZSAweDdmZmYpIHtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6OTc6XHRcdFx0dWFzbV9pX2x1aShidWYsIEdQUl9UOSwgdWFzbV9yZWxfaGkob2ZmKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjk4Olx0XHRcdHVhc21faV9hZGRpdShidWYsIEdQUl9UOSwgR1BSX1Q5LCB1YXNtX3JlbF9sbyhvZmYpKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtOTktXHRcdH0gZWxzZVxuYXJjaC9taXBzL21tL3BhZ2UuYzoxMDA6XHRcdFx0dWFzbV9pX2FkZGl1KGJ1ZiwgR1BSX1Q5LCBHUFJfWkVSTywgb2ZmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MTAxOlx0XHR1YXNtX2lfZGFkZHUoYnVmLCByZWcxLCByZWcyLCBHUFJfVDkpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0xMDItXHR9IGVsc2Uge1xuYXJjaC9taXBzL21tL3BhZ2UuYy0xMDMtXHRcdGlmIChvZmYgXHUwMDNlIDB4N2ZmZikge1xuYXJjaC9taXBzL21tL3BhZ2UuYzoxMDQ6XHRcdFx0dWFzbV9pX2x1aShidWYsIEdQUl9UOSwgdWFzbV9yZWxfaGkob2ZmKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjEwNTpcdFx0XHR1YXNtX2lfYWRkaXUoYnVmLCBHUFJfVDksIEdQUl9UOSwgdWFzbV9yZWxfbG8ob2ZmKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTEwNi1cdFx0XHRVQVNNX2lfQUREVShidWYsIHJlZzEsIHJlZzIsIEdQUl9UOSk7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0yMjE9c3RhdGljIHZvaWQgYnVpbGRfY2xlYXJfc3RvcmUodTMyICoqYnVmLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjIzLVx0aWYgKGNwdV9oYXNfNjRiaXRfZ3BfcmVncyB8fCBjcHVfaGFzXzY0Yml0X3plcm9fcmVnKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjIyNDpcdFx0dWFzbV9pX3NkKGJ1ZiwgR1BSX1pFUk8sIG9mZiwgR1BSX0EwKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjI1LVx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjI2Olx0XHR1YXNtX2lfc3coYnVmLCBHUFJfWkVSTywgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0yMjctXHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0yMzA9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NsZWFyX3ByZWYodTMyICoqYnVmLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjM1LVx0aWYgKHByZWZfYmlhc19jbGVhcl9zdG9yZSkge1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyMzY6XHRcdF91YXNtX2lfcHJlZihidWYsIHByZWZfZHN0X21vZGUsIHByZWZfYmlhc19jbGVhcl9zdG9yZSAmIzQzOyBvZmYsXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIzNy1cdFx0XHQgICAgR1BSX0EwKTtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIzOS1cdFx0aWYgKGNwdV9oYXNfY2FjaGVfY2RleF9zKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjI0MDpcdFx0XHR1YXNtX2lfY2FjaGUoYnVmLCBDcmVhdGVfRGlydHlfRXhjbF9TRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0yNDEtXHRcdH0gZWxzZSBpZiAoY3B1X2hhc19jYWNoZV9jZGV4X3ApIHtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0My1cdFx0XHQgICAgY3B1X2lzX3I0NjAwX3YxX3goKSkge1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDQ6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjI0NTpcdFx0XHRcdHVhc21faV9ub3AoYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjQ2Olx0XHRcdFx0dWFzbV9pX25vcChidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDc6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0OC1cdFx0XHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0yNTEtXHRcdFx0ICAgIGNwdV9pc19yNDYwMF92Ml94KCkpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI1MjpcdFx0XHRcdHVhc21faV9sdyhidWYsIEdQUl9aRVJPLCBHUFJfWkVSTywgR1BSX0FUKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjUzLVxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNTQ6XHRcdFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0yNTUtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTI2ND12b2lkIGJ1aWxkX2NsZWFyX3BhZ2Uodm9pZClcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI2Ny1cdHUzMiAqYnVmID0gXHUwMDI2X19jbGVhcl9wYWdlX3N0YXJ0O1xuYXJjaC9taXBzL21tL3BhZ2UuYzoyNjg6XHRzdHJ1Y3QgdWFzbV9sYWJlbCAqbCA9IGxhYmVscztcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjY5Olx0c3RydWN0IHVhc21fcmVsb2MgKnIgPSByZWxvY3M7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTI3MC1cdGludCBpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjkzLVx0ZWxzZVxuYXJjaC9taXBzL21tL3BhZ2UuYzoyOTQ6XHRcdHVhc21faV9vcmkoXHUwMDI2YnVmLCBHUFJfQTIsIEdQUl9BMCwgb2ZmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjk1LVxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTYtXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfV0FSX1I0NjAwX1YyX0hJVF9DQUNIRU9QKSBcdTAwMjZcdTAwMjYgY3B1X2lzX3I0NjAwX3YyX3goKSlcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Mjk3Olx0XHR1YXNtX2lfbHVpKFx1MDAyNmJ1ZiwgR1BSX0FULCB1YXNtX3JlbF9oaSgweGEwMDAwMDAwKSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTI5OC1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTMwNC1cdH1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzA1Olx0dWFzbV9sX2NsZWFyX3ByZWYoXHUwMDI2bCwgYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzA2LVx0ZG8ge1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE1LVx0XHRpZiAob2ZmID09IC1jbGVhcl93b3JkX3NpemUpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjMxNjpcdFx0XHR1YXNtX2lsX2JuZShcdTAwMjZidWYsIFx1MDAyNnIsIEdQUl9BMCwgR1BSX0EyLCBsYWJlbF9jbGVhcl9wcmVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE3LVx0XHRidWlsZF9jbGVhcl9zdG9yZShcdTAwMjZidWYsIG9mZik7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMjItXHRcdHBnX2FkZGl1KFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIHByZWZfYmlhc19jbGVhcl9zdG9yZSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjMyMzpcdFx0dWFzbV9sX2NsZWFyX25vcHJlZihcdTAwMjZsLCBidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zMjQtXHRcdG9mZiA9IDA7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMzItXHRcdFx0aWYgKG9mZiA9PSAtY2xlYXJfd29yZF9zaXplKVxuYXJjaC9taXBzL21tL3BhZ2UuYzozMzM6XHRcdFx0XHR1YXNtX2lsX2JuZShcdTAwMjZidWYsIFx1MDAyNnIsIEdQUl9BMCwgR1BSX0EyLFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMzQtXHRcdFx0XHRcdCAgICBsYWJlbF9jbGVhcl9ub3ByZWYpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzM5LVxuYXJjaC9taXBzL21tL3BhZ2UuYzozNDA6XHR1YXNtX2lfanIoXHUwMDI2YnVmLCBHUFJfUkEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzozNDE6XHR1YXNtX2lfbm9wKFx1MDAyNmJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0Mi1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0NC1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzQ1Olx0dWFzbV9yZXNvbHZlX3JlbG9jcyhyZWxvY3MsIGxhYmVscyk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0Ni1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTM1Nz1zdGF0aWMgdm9pZCBidWlsZF9jb3B5X2xvYWQodTMyICoqYnVmLCBpbnQgcmVnLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzU5LVx0aWYgKGNwdV9oYXNfNjRiaXRfZ3BfcmVncykge1xuYXJjaC9taXBzL21tL3BhZ2UuYzozNjA6XHRcdHVhc21faV9sZChidWYsIHJlZywgb2ZmLCBHUFJfQTEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjEtXHR9IGVsc2Uge1xuYXJjaC9taXBzL21tL3BhZ2UuYzozNjI6XHRcdHVhc21faV9sdyhidWYsIHJlZywgb2ZmLCBHUFJfQTEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjMtXHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0zNjY9c3RhdGljIHZvaWQgYnVpbGRfY29weV9zdG9yZSh1MzIgKipidWYsIGludCByZWcsIGludCBvZmYpXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjgtXHRpZiAoY3B1X2hhc182NGJpdF9ncF9yZWdzKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM2OTpcdFx0dWFzbV9pX3NkKGJ1ZiwgcmVnLCBvZmYsIEdQUl9BMCk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM3MC1cdH0gZWxzZSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM3MTpcdFx0dWFzbV9pX3N3KGJ1ZiwgcmVnLCBvZmYsIEdQUl9BMCk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM3Mi1cdH1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTM3NT1zdGF0aWMgaW5saW5lIHZvaWQgYnVpbGRfY29weV9sb2FkX3ByZWYodTMyICoqYnVmLCBpbnQgb2ZmKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzgwLVx0aWYgKHByZWZfYmlhc19jb3B5X2xvYWQpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM4MTpcdFx0X3Vhc21faV9wcmVmKGJ1ZiwgcHJlZl9zcmNfbW9kZSwgcHJlZl9iaWFzX2NvcHlfbG9hZCAmIzQzOyBvZmYsIEdQUl9BMSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTM4Mi19XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYz0zODQ9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NvcHlfc3RvcmVfcHJlZih1MzIgKipidWYsIGludCBvZmYpXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy0zODktXHRpZiAocHJlZl9iaWFzX2NvcHlfc3RvcmUpIHtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzkwOlx0XHRfdWFzbV9pX3ByZWYoYnVmLCBwcmVmX2RzdF9tb2RlLCBwcmVmX2JpYXNfY29weV9zdG9yZSAmIzQzOyBvZmYsXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5MS1cdFx0XHQgICAgR1BSX0EwKTtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5My1cdFx0aWYgKGNwdV9oYXNfY2FjaGVfY2RleF9zKSB7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5NDpcdFx0XHR1YXNtX2lfY2FjaGUoYnVmLCBDcmVhdGVfRGlydHlfRXhjbF9TRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy0zOTUtXHRcdH0gZWxzZSBpZiAoY3B1X2hhc19jYWNoZV9jZGV4X3ApIHtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5Ny1cdFx0XHQgICAgY3B1X2lzX3I0NjAwX3YxX3goKSkge1xuYXJjaC9taXBzL21tL3BhZ2UuYzozOTg6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5OTpcdFx0XHRcdHVhc21faV9ub3AoYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDAwOlx0XHRcdFx0dWFzbV9pX25vcChidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzo0MDE6XHRcdFx0XHR1YXNtX2lfbm9wKGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTQwMi1cdFx0XHR9XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy00MDUtXHRcdFx0ICAgIGNwdV9pc19yNDYwMF92Ml94KCkpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjQwNjpcdFx0XHRcdHVhc21faV9sdyhidWYsIEdQUl9aRVJPLCBHUFJfWkVSTywgR1BSX0FUKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDA3LVxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MDg6XHRcdFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfRCwgb2ZmLCBHUFJfQTApO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00MDktXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jPTQxMz12b2lkIGJ1aWxkX2NvcHlfcGFnZSh2b2lkKVxuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDE2LVx0dTMyICpidWYgPSBcdTAwMjZfX2NvcHlfcGFnZV9zdGFydDtcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDE3Olx0c3RydWN0IHVhc21fbGFiZWwgKmwgPSBsYWJlbHM7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjQxODpcdHN0cnVjdCB1YXNtX3JlbG9jICpyID0gcmVsb2NzO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00MTktXHRpbnQgaTtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0Ni1cdGVsc2VcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDQ3Olx0XHR1YXNtX2lfb3JpKFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIG9mZik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0OC1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDQ5LVx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1dBUl9SNDYwMF9WMl9ISVRfQ0FDSEVPUCkgXHUwMDI2XHUwMDI2IGNwdV9pc19yNDYwMF92Ml94KCkpXG5hcmNoL21pcHMvbW0vcGFnZS5jOjQ1MDpcdFx0dWFzbV9pX2x1aShcdTAwMjZidWYsIEdQUl9BVCwgdWFzbV9yZWxfaGkoMHhhMDAwMDAwMCkpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00NTEtXG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy00NjMtXHR9XG5hcmNoL21pcHMvbW0vcGFnZS5jOjQ2NDpcdHVhc21fbF9jb3B5X3ByZWZfYm90aChcdTAwMjZsLCBidWYpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy00NjUtXHRkbyB7XG4tLVxuYXJjaC9taXBzL21tL3BhZ2UuYy01MDMtXHRcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxuYXJjaC9taXBzL21tL3BhZ2UuYzo1MDQ6XHRcdFx0dWFzbV9pbF9ibmUoXHUwMDI2YnVmLCBcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCwgbGFiZWxfY29weV9wcmVmX2JvdGgpO1xuYXJjaC9taXBzL21tL3BhZ2UuYy01MDUtXHRcdGJ1aWxkX2NvcHlfc3RvcmUoXHUwMDI2YnVmLCBHUFJfVDMsIG9mZiAmIzQzOyAzICogY29weV93b3JkX3NpemUpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTExLVx0XHRcdCBwcmVmX2JpYXNfY29weV9sb2FkIC0gcHJlZl9iaWFzX2NvcHlfc3RvcmUpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzo1MTI6XHRcdHVhc21fbF9jb3B5X3ByZWZfc3RvcmUoXHUwMDI2bCwgYnVmKTtcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTEzLVx0XHRvZmYgPSAwO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTQ0LVx0XHRcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxuYXJjaC9taXBzL21tL3BhZ2UuYzo1NDU6XHRcdFx0XHR1YXNtX2lsX2JuZShcdTAwMjZidWYsIFx1MDAyNnIsIEdQUl9BMiwgR1BSX0EwLFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NDYtXHRcdFx0XHRcdCAgICBsYWJlbF9jb3B5X3ByZWZfc3RvcmUpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTUzLVx0XHRwZ19hZGRpdShcdTAwMjZidWYsIEdQUl9BMiwgR1BSX0EwLCBwcmVmX2JpYXNfY29weV9zdG9yZSk7XG5hcmNoL21pcHMvbW0vcGFnZS5jOjU1NDpcdFx0dWFzbV9sX2NvcHlfbm9wcmVmKFx1MDAyNmwsIGJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTU1NS1cdFx0b2ZmID0gMDtcbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU3OC1cdFx0XHRpZiAob2ZmID09IC0oNCAqIGNvcHlfd29yZF9zaXplKSlcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTc5Olx0XHRcdFx0dWFzbV9pbF9ibmUoXHUwMDI2YnVmLCBcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTgwLVx0XHRcdFx0XHQgICAgbGFiZWxfY29weV9ub3ByZWYpO1xuLS1cbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTg1LVxuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODY6XHR1YXNtX2lfanIoXHUwMDI2YnVmLCBHUFJfUkEpO1xuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODc6XHR1YXNtX2lfbm9wKFx1MDAyNmJ1Zik7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTU4OC1cbi0tXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU5MC1cbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTkxOlx0dWFzbV9yZXNvbHZlX3JlbG9jcyhyZWxvY3MsIGxhYmVscyk7XG5hcmNoL21pcHMvbW0vcGFnZS5jLTU5Mi1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zNy0jaW5jbHVkZSBcdTAwM2Nhc20vcmVnZGVmLmhcdTAwM2VcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM4OiNpbmNsdWRlIFx1MDAzY2FzbS91YXNtLmhcdTAwM2VcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM5LSNpbmNsdWRlIFx1MDAzY2FzbS9zZXR1cC5oXHUwMDNlXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmM9MjA0PXN0YXRpYyBpbnQgaGF6YXJkX2luc3RhbmNlO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA1LVxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjA2OnN0YXRpYyB2b2lkIHVhc21fYmdlemxfaGF6YXJkKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgaW50IGluc3RhbmNlKVxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA3LXtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMDktXHRjYXNlIDAgLi4uIDc6XG5hcmNoL21pcHMvbW0vdGxiZXguYzoyMTA6XHRcdHVhc21faWxfYmdlemwocCwgciwgMCwgbGFiZWxfdGxid19oYXphcmRfMCAmIzQzOyBpbnN0YW5jZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMTEtXHRcdHJldHVybjtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMTYtXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyMTc6c3RhdGljIHZvaWQgdWFzbV9iZ2V6bF9sYWJlbChzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHUzMiAqKnAsIGludCBpbnN0YW5jZSlcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIxOC17XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjIwLVx0Y2FzZSAwIC4uLiA3OlxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjIxOlx0XHR1YXNtX2J1aWxkX2xhYmVsKGwsICpwLCBsYWJlbF90bGJ3X2hhemFyZF8wICYjNDM7IGluc3RhbmNlKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIyMi1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmM9Mjk1PXN0YXRpYyB1MzIgdGxiX2hhbmRsZXJbMTI4XTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yOTctLyogc2ltcGx5IGFzc3VtZSB3b3JzdCBjYXNlIHNpemUgZm9yIGxhYmVscyBhbmQgcmVsb2NzICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyOTg6c3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1sxMjhdO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6Mjk5OnN0YXRpYyBzdHJ1Y3QgdWFzbV9yZWxvYyByZWxvY3NbMTI4XTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTMwMC1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYz0zNjk9c3RhdGljIHZvaWQgYnVpbGRfcmVzdG9yZV93b3JrX3JlZ2lzdGVycyh1MzIgKipwKVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3MS1cdGlmIChzY3JhdGNoX3JlZyBcdTAwM2U9IDApIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM3MjpcdFx0dWFzbV9pX2VoYihwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3My1cdFx0VUFTTV9pX01GQzAocCwgMSwgYzBfa3NjcmF0Y2goKSwgc2NyYXRjaF9yZWcpO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jPTM4OT1zdGF0aWMgdm9pZCBidWlsZF9yMzAwMF90bGJfcmVmaWxsX2hhbmRsZXIodm9pZClcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zOTYtXG5hcmNoL21pcHMvbW0vdGxiZXguYzozOTc6XHR1YXNtX2lfbWZjMChcdTAwMjZwLCBHUFJfSzAsIEMwX0JBRFZBRERSKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM5ODpcdHVhc21faV9sdWkoXHUwMDI2cCwgR1BSX0sxLCB1YXNtX3JlbF9oaShwZ2RjKSk7IC8qIGNwMCBkZWxheSAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6Mzk5Olx0dWFzbV9pX2x3KFx1MDAyNnAsIEdQUl9LMSwgdWFzbV9yZWxfbG8ocGdkYyksIEdQUl9LMSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDA6XHR1YXNtX2lfc3JsKFx1MDAyNnAsIEdQUl9LMCwgR1BSX0swLCAyMik7IC8qIGxvYWQgZGVsYXkgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwMTpcdHVhc21faV9zbGwoXHUwMDI2cCwgR1BSX0swLCBHUFJfSzAsIDIpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDAyOlx0dWFzbV9pX2FkZHUoXHUwMDI2cCwgR1BSX0sxLCBHUFJfSzEsIEdQUl9LMCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDM6XHR1YXNtX2lfbWZjMChcdTAwMjZwLCBHUFJfSzAsIEMwX0NPTlRFWFQpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA0Olx0dWFzbV9pX2x3KFx1MDAyNnAsIEdQUl9LMSwgMCwgR1BSX0sxKTsgLyogY3AwIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDU6XHR1YXNtX2lfYW5kaShcdTAwMjZwLCBHUFJfSzAsIEdQUl9LMCwgMHhmZmMpOyAvKiBsb2FkIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDY6XHR1YXNtX2lfYWRkdShcdTAwMjZwLCBHUFJfSzEsIEdQUl9LMSwgR1BSX0swKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwNzpcdHVhc21faV9sdyhcdTAwMjZwLCBHUFJfSzAsIDAsIEdQUl9LMSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDg6XHR1YXNtX2lfbm9wKFx1MDAyNnApOyAvKiBsb2FkIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDk6XHR1YXNtX2lfbXRjMChcdTAwMjZwLCBHUFJfSzAsIEMwX0VOVFJZTE8wKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQxMDpcdHVhc21faV9tZmMwKFx1MDAyNnAsIEdQUl9LMSwgQzBfRVBDKTsgLyogY3AwIGRlbGF5ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MTE6XHR1YXNtX2lfdGxid3IoXHUwMDI2cCk7IC8qIGNwMCBkZWxheSAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDEyOlx0dWFzbV9pX2pyKFx1MDAyNnAsIEdQUl9LMSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MTM6XHR1YXNtX2lfcmZlKFx1MDAyNnApOyAvKiBicmFuY2ggZGVsYXkgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jLTQxNC1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYz00NTg9c3RhdGljIHZvaWQgX19tYXliZV91bnVzZWQgYnVpbGRfdGxiX3Byb2JlX2VudHJ5KHUzMiAqKnApXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDY1LVx0Y2FzZSBDUFVfTkVWQURBOlxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDY2Olx0XHR1YXNtX2lfbm9wKHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NDY3Olx0XHR1YXNtX2lfdGxicChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ2OC1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDcwLVx0ZGVmYXVsdDpcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ3MTpcdFx0dWFzbV9pX3RsYnAocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy00NzItXHRcdGJyZWFrO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ3NS1cbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ3Njp2b2lkIGJ1aWxkX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0Nzc6XHRcdFx0ICAgc3RydWN0IHVhc21fcmVsb2MgKipyLFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDc4LVx0XHRcdCAgIGVudW0gdGxiX3dyaXRlX2VudHJ5IHdtb2RlKVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ4Mi1cdHN3aXRjaCAod21vZGUpIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ4MzpcdGNhc2UgdGxiX3JhbmRvbTogdGxidyA9IHVhc21faV90bGJ3cjsgYnJlYWs7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo0ODQ6XHRjYXNlIHRsYl9pbmRleGVkOiB0bGJ3ID0gdWFzbV9pX3RsYndpOyBicmVhaztcbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ4NS1cdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy00ODgtXHRcdGlmIChjcHVfaGFzX21pcHNfcjJfZXhlY19oYXphcmQpXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0ODk6XHRcdFx0dWFzbV9pX2VoYihwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTQ5MC1cdFx0dGxidyhwKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDQtXHRcdCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA1Olx0XHR1YXNtX2JnZXpsX2hhemFyZChwLCByLCBoYXphcmRfaW5zdGFuY2UpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNTA2LVx0XHR0bGJ3KHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA3Olx0XHR1YXNtX2JnZXpsX2xhYmVsKGwsIHAsIGhhemFyZF9pbnN0YW5jZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDgtXHRcdGhhemFyZF9pbnN0YW5jZSYjNDM7JiM0Mzs7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1MDk6XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01MTAtXHRcdGJyZWFrO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTUxMy1cdGNhc2UgQ1BVX1I0NzAwOlxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTE0Olx0XHR1YXNtX2lfbm9wKHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNTE1LVx0XHR0bGJ3KHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTE2Olx0XHR1YXNtX2lfbm9wKHApO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNTE3LVx0XHRicmVhaztcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MjAtXHRjYXNlIENQVV9ORVZBREE6XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1MjE6XHRcdHVhc21faV9ub3AocCk7IC8qIFFFRCBzcGVjaWZpZXMgMiBub3BzIGhhemFyZCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NTIyOlx0XHR1YXNtX2lfbm9wKHApOyAvKiBRRUQgc3BlY2lmaWVzIDIgbm9wcyBoYXphcmQgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jLTUyMy1cdFx0dGxidyhwKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MjktXHRjYXNlIENQVV9QUjQ0NTA6XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1MzA6XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01MzEtXHRcdHRsYncocCk7XG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTU1LVx0XHRpZiAobTRrY190bGJwX3dhcigpKVxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTU2Olx0XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01NTctXHRcdGZhbGx0aHJvdWdoO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTU2Mi1cdGNhc2UgQ1BVX1JNNzAwMDpcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2MzpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NDpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NTpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NjpcdFx0dWFzbV9pX25vcChwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTU2Ny1cdFx0dGxidyhwKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NzEtXHRcdHRsYncocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo1NzI6XHRcdHVhc21faV9ub3AocCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy01NzMtXHRcdGJyZWFrO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jPTU4Mz1zdGF0aWMgX19tYXliZV91bnVzZWQgdm9pZCBidWlsZF9jb252ZXJ0X3B0ZV90b19lbnRyeWxvKHUzMiAqKnAsXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjAwLSNpZmRlZiBDT05GSUdfUEhZU19BRERSX1RfNjRCSVRcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYwMTpcdFx0dWFzbV9pX2Rzcmxfc2FmZShwLCByZWcsIHJlZywgaWxvZzIoX1BBR0VfR0xPQkFMKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy02MDItI2Vsc2Vcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MDktXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MTA6c3RhdGljIHZvaWQgYnVpbGRfcmVzdG9yZV9wYWdlbWFzayh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTEtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgdG1wLCBlbnVtIGxhYmVsX2lkIGxpZCxcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTktXHRcdGlmIChzY3JhdGNoX3JlZyBcdTAwM2U9IDApXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MjA6XHRcdFx0dWFzbV9pX2VoYihwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYyMS1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MjMtXHRcdGlmIChQTV9ERUZBVUxUX01BU0sgXHUwMDNlXHUwMDNlIDE2KSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MjQ6XHRcdFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwM2VcdTAwM2UgMTYpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NjI1Olx0XHRcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwMjYgMHhmZmZmKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyNjpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyNzpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYyOC1cdFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyOTpcdFx0XHR1YXNtX2lfb3JpKHAsIHRtcCwgMCwgUE1fREVGQVVMVF9NQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMDpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMTpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYzMi1cdFx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMzpcdFx0XHR1YXNtX2lfbXRjMChwLCAwLCBDMF9QQUdFTUFTSyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MzQ6XHRcdFx0dWFzbV9pbF9iKHAsIHIsIGxpZCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy02MzUtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NDItXHRcdGlmIChQTV9ERUZBVUxUX01BU0sgXHUwMDNlXHUwMDNlIDE2KSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NDM6XHRcdFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwM2VcdTAwM2UgMTYpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ0Olx0XHRcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcdTAwMjYgMHhmZmZmKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0NTpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0NjpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY0Ny1cdFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0ODpcdFx0XHR1YXNtX2lfb3JpKHAsIHRtcCwgMCwgUE1fREVGQVVMVF9NQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0OTpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MDpcdFx0XHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY1MS1cdFx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MjpcdFx0XHR1YXNtX2lsX2IocCwgciwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MzpcdFx0XHR1YXNtX2lfbXRjMChwLCAwLCBDMF9QQUdFTUFTSyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTQtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTctXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NTg6c3RhdGljIHZvaWQgYnVpbGRfaHVnZV90bGJfd3JpdGVfZW50cnkodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjU5Olx0XHRcdFx0ICAgICAgIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY2MC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgdG1wLFxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTY2NC1cdC8qIFNldCBodWdlIHBhZ2UgdGxiIGVudHJ5IHNpemUgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjY2NTpcdHVhc21faV9sdWkocCwgdG1wLCBQTV9IVUdFX01BU0sgXHUwMDNlXHUwMDNlIDE2KTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY2NjpcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0hVR0VfTUFTSyBcdTAwMjYgMHhmZmZmKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY2NzpcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNjY4LVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jPTY3Nz1zdGF0aWMgdm9pZFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Njc4OmJ1aWxkX2lzX2h1Z2VfcHRlKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqciwgdW5zaWduZWQgaW50IHRtcCxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY3OS1cdFx0ICB1bnNpZ25lZCBpbnQgcG1kLCBpbnQgbGlkKVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4Mi1cdGlmICh1c2VfYmJpdF9pbnNucygpKSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2ODM6XHRcdHVhc21faWxfYmJpdDEocCwgciwgdG1wLCBpbG9nMihfUEFHRV9IVUdFKSwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4NC1cdH0gZWxzZSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo2ODU6XHRcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCBfUEFHRV9IVUdFKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY4NjpcdFx0dWFzbV9pbF9ibmV6KHAsIHIsIHRtcCwgbGlkKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4Ny1cdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYz02OTA9c3RhdGljIHZvaWQgYnVpbGRfaHVnZV91cGRhdGVfZW50cmllcyh1MzIgKipwLCB1bnNpZ25lZCBpbnQgcHRlLFxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTcwNy1cdGlmICghc21hbGxfc2VxdWVuY2UpXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3MDg6XHRcdHVhc21faV9sdWkocCwgdG1wLCBIUEFHRV9TSVpFIFx1MDAzZVx1MDAzZSAoNyAmIzQzOyAxNikpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNzA5LVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTcyMC1cbmFyY2gvbWlwcy9tbS90bGJleC5jOjcyMTpzdGF0aWMgdm9pZCBidWlsZF9odWdlX2hhbmRsZXJfdGFpbCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3MjI6XHRcdFx0XHQgICAgc3RydWN0IHVhc21fbGFiZWwgKipsLFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzIzLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBwdGUsXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzI4LVx0VUFTTV9pX1NDKHAsIHB0ZSwgMCwgcHRyKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjcyOTpcdHVhc21faWxfYmVxeihwLCByLCBwdGUsIGxhYmVsX3RsYl9odWdlX3VwZGF0ZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy03MzAtXHRVQVNNX2lfTFcocCwgcHRlLCAwLCBwdHIpOyAvKiBOZWVkZWQgYmVjYXVzZSBTQyBraWxsZWQgb3VyIFBURSAqL1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTczNy1cdFx0VUFTTV9pX01GQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjczODpcdFx0dWFzbV9pX29yaShwLCBwdHIsIHB0ciwgTUlQU19FTlRSWUhJX0VISU5WKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTczOS1cdFx0VUFTTV9pX01UQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NDEtXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3NDI6XHRcdHVhc21faV94b3JpKHAsIHB0ciwgcHRyLCBNSVBTX0VOVFJZSElfRUhJTlYpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNzQzLVx0XHRVQVNNX2lfTVRDMChwLCBwdHIsIEMwX0VOVFJZSEkpO1xuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTc1OS0gKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjc2MDp2b2lkIGJ1aWxkX2dldF9wbWRlNjQodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NjEtXHRcdCAgICAgIHVuc2lnbmVkIGludCB0bXAsIHVuc2lnbmVkIGludCBwdHIpXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzY4LVx0ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3Njk6XHR1YXNtX2lfZG1mYzAocCwgdG1wLCBDMF9CQURWQUREUik7XG5hcmNoL21pcHMvbW0vdGxiZXguYy03NzAtXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzgyLVx0XHQgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4MzpcdFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHRtcCwgUEdESVJfU0hJRlQgJiM0MzsgUEdEX1RBQkxFX09SREVSICYjNDM7IFBBR0VfU0hJRlQgLSAzKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4NDpcdFx0dWFzbV9pbF9ibmV6KHAsIHIsIHB0ciwgbGFiZWxfdm1hbGxvYyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy03ODUtXHR9IGVsc2Uge1xuYXJjaC9taXBzL21tL3RsYmV4LmM6Nzg2Olx0XHR1YXNtX2lsX2JsdHoocCwgciwgdG1wLCBsYWJlbF92bWFsbG9jKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4Ny1cdH1cbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4ODpcdC8qIE5vIHVhc21faV9ub3AgbmVlZGVkIGhlcmUsIHNpbmNlIHRoZSBuZXh0IGluc24gZG9lc24mIzM5O3QgdG91Y2ggVE1QLiAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmMtNzg5LVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwMy1cdFx0LyogQ2xlYXIgbG93ZXIgMjMgYml0cyBvZiBjb250ZXh0LiAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODA0Olx0XHR1YXNtX2lfZGlucyhwLCBwdHIsIDAsIDAsIDIzKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwNS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwNi1cdFx0LyogaW5zZXJ0IGJpdFs2Mzo1OV0gb2YgQ0FDX0JBU0UgaW50byBiaXRbMTE6Nl0gb2YgcHRyICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MDc6XHRcdHVhc21faV9vcmkocCwgcHRyLCBwdHIsICgodTY0KShDQUNfQkFTRSkgXHUwMDNlXHUwMDNlIDUzKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MDg6XHRcdHVhc21faV9kcm90cihwLCBwdHIsIHB0ciwgMTEpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODA5LSNlbGlmIGRlZmluZWQoQ09ORklHX1NNUClcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxMC1cdFx0VUFTTV9pX0NQVUlEX01GQzAocCwgcHRyLCBTTVBfQ1BVSURfUkVHKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgxMTpcdFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHB0ciwgU01QX0NQVUlEX1BUUlNISUZUKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxMi1cdFx0VUFTTV9pX0xBX21vc3RseShwLCB0bXAsIHBnZGMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODEzOlx0XHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTQ6XHRcdHVhc21faV9kbWZjMChwLCB0bXAsIEMwX0JBRFZBRERSKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgxNTpcdFx0dWFzbV9pX2xkKHAsIHB0ciwgdWFzbV9yZWxfbG8ocGdkYyksIHB0cik7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04MTYtI2Vsc2VcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxNy1cdFx0VUFTTV9pX0xBX21vc3RseShwLCBwdHIsIHBnZGMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODE4Olx0XHR1YXNtX2lfbGQocCwgcHRyLCB1YXNtX3JlbF9sbyhwZ2RjKSwgcHRyKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgxOS0jZW5kaWZcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MjEtXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MjI6XHR1YXNtX2xfdm1hbGxvY19kb25lKGwsICpwKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgyMy1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTgyNC1cdC8qIGdldCBwZ2Qgb2Zmc2V0IGluIGJ5dGVzICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MjU6XHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQR0RJUl9TSElGVCAtIDMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODI2LVxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODI3Olx0dWFzbV9pX2FuZGkocCwgdG1wLCB0bXAsIChQVFJTX1BFUl9QR0QgLSAxKVx1MDAzY1x1MDAzYzMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODI4Olx0dWFzbV9pX2RhZGR1KHAsIHB0ciwgcHRyLCB0bXApOyAvKiBhZGQgaW4gcGdkIG9mZnNldCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODI5LSNpZm5kZWYgX19QQUdFVEFCTEVfUFVEX0ZPTERFRFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODMwOlx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpOyAvKiBnZXQgZmF1bHRpbmcgYWRkcmVzcyAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODMxOlx0dWFzbV9pX2xkKHAsIHB0ciwgMCwgcHRyKTsgLyogZ2V0IHB1ZCBwb2ludGVyICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MzI6XHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQVURfU0hJRlQgLSAzKTsgLyogZ2V0IHB1ZCBvZmZzZXQgaW4gYnl0ZXMgKi9cbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzMzpcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCAoUFRSU19QRVJfUFVEIC0gMSkgXHUwMDNjXHUwMDNjIDMpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM0Olx0dWFzbV9pX2RhZGR1KHAsIHB0ciwgcHRyLCB0bXApOyAvKiBhZGQgaW4gcHVkIG9mZnNldCAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODM1LSNlbmRpZlxuYXJjaC9taXBzL21tL3RsYmV4LmMtODM2LSNpZm5kZWYgX19QQUdFVEFCTEVfUE1EX0ZPTERFRFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM3Olx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpOyAvKiBnZXQgZmF1bHRpbmcgYWRkcmVzcyAqL1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM4Olx0dWFzbV9pX2xkKHAsIHB0ciwgMCwgcHRyKTsgLyogZ2V0IHBtZCBwb2ludGVyICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4Mzk6XHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQTURfU0hJRlQtMyk7IC8qIGdldCBwbWQgb2Zmc2V0IGluIGJ5dGVzICovXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NDA6XHR1YXNtX2lfYW5kaShwLCB0bXAsIHRtcCwgKFBUUlNfUEVSX1BNRCAtIDEpXHUwMDNjXHUwMDNjMyk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NDE6XHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7IC8qIGFkZCBpbiBwbWQgb2Zmc2V0ICovXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NDItI2VuZGlmXG4tLVxuYXJjaC9taXBzL21tL3RsYmV4LmM9ODUwPXN0YXRpYyB2b2lkXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NTE6YnVpbGRfZ2V0X3BnZF92bWFsbG9jNjQodTMyICoqcCwgc3RydWN0IHVhc21fbGFiZWwgKipsLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NTItXHRcdFx0dW5zaWduZWQgaW50IGJ2YWRkciwgdW5zaWduZWQgaW50IHB0cixcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NTgtXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NTk6XHRzaW5nbGVfaW5zbl9zd3BkID0gdWFzbV9pbl9jb21wYXRfc3BhY2VfcChzd3BkKSBcdTAwMjZcdTAwMjYgIXVhc21fcmVsX2xvKHN3cGQpO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODYwLVxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODYxOlx0dWFzbV9sX3ZtYWxsb2MobCwgKnApO1xuYXJjaC9taXBzL21tL3RsYmV4LmMtODYyLVxuLS1cbmFyY2gvbWlwcy9tbS90bGJleC5jLTg2NC1cdFx0aWYgKHNpbmdsZV9pbnNuX3N3cGQpIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg2NTpcdFx0XHR1YXNtX2lsX2JsdHoocCwgciwgYnZhZGRyLCBsYWJlbF92bWFsbG9jX2RvbmUpO1xuYXJjaC9taXBzL21tL3RsYmV4LmM6ODY2Olx0XHRcdHVhc21faV9sdWkocCwgcHRyLCB1YXNtX3JlbF9oaShzd3BkKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04NjctXHRcdFx0ZGlkX3ZtYWxsb2NfYnJhbmNoID0gMTtcbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NjktXHRcdH0gZWxzZSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzA6XHRcdFx0dWFzbV9pbF9iZ2V6KHAsIHIsIGJ2YWRkciwgbGFiZWxfbGFyZ2Vfc2VnYml0c19mYXVsdCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzEtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzQtXHRcdGlmIChzaW5nbGVfaW5zbl9zd3BkKSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzU6XHRcdFx0dWFzbV9pbF9iKHAsIHIsIGxhYmVsX3ZtYWxsb2NfZG9uZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzY6XHRcdFx0dWFzbV9pX2x1aShwLCBwdHIsIHVhc21fcmVsX2hpKHN3cGQpKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg3Ny1cdFx0fSBlbHNlIHtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg3OC1cdFx0XHRVQVNNX2lfTEFfbW9zdGx5KHAsIHB0ciwgc3dwZCk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4Nzk6XHRcdFx0dWFzbV9pbF9iKHAsIHIsIGxhYmVsX3ZtYWxsb2NfZG9uZSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODA6XHRcdFx0aWYgKHVhc21faW5fY29tcGF0X3NwYWNlX3Aoc3dwZCkpXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODE6XHRcdFx0XHR1YXNtX2lfYWRkaXUocCwgcHRyLCBwdHIsIHVhc21fcmVsX2xvKHN3cGQpKTtcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg4Mi1cdFx0XHRlbHNlXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODM6XHRcdFx0XHR1YXNtX2lfZGFkZGl1KHAsIHB0ciwgcHRyLCB1YXNtX3JlbF9sbyhzd3BkKSk7XG5hcmNoL21pcHMvbW0vdGxiZXguYy04ODQtXHRcdH1cbi0tXG5hcmNoL21pcHMvbW0vdGxiZXguYy04ODYtXHRpZiAobW9kZSAhPSBub3RfcmVmaWxsIFx1MDAyNlx1MDAyNiBjaGVja19mb3JfaGlnaF9zZWdiaXRzKSB7XG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODc6XHRcdHVhc21fbF9sYXJnZV9zZWdiaXRzX2ZhdWx0KGwsICpwKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAxOQoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiAxNDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNSVBTIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgc2lnbmVkIG9uZXMsIHdpdGhpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBUaGUgYHVhc21gIG1pY3JvLWFzc2VtYmxlciBpcyB0aGUga2V5LCBhbmQgaXQmIzM5O3MgYmVpbmcgdXBkYXRlZCB0byBoYW5kbGUgdGhlIG5ldyBgZGRpdmAsIGBkZGl2X3I2YCwgYGRpdmAsIGBkaXZfcjZgLCBgZG1vZGAsIGFuZCBgbW9kYCBpbnN0cnVjdGlvbnMuIFRoZXNlIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBCUEYgSklULCB3aGljaCBpcywgb2YgY291cnNlLCBjb250cm9sbGVkIGJ5IHRoZSBgQ09ORklHX0JQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBHb29kLCBzbyBgQ09ORklHX0JQRl9KSVRgIGlzIGRlZmluaXRlbHkgdGhlIGVuYWJsaW5nIGNvbmZpZy4gTm8gbmVlZCB0byB3b3JyeSBhYm91dCBgQ09ORklHX01JUFMzMl9PMzJgIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4KClNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIGJvdGggYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AsIHRoaXMgYXBwbGllcyB0byBib3RoIDMyLWJpdCBhbmQgNjQtYml0IE1JUFMgYXJjaGl0ZWN0dXJlcy4gU28sIEkgd2lsbCBqdXN0IHNldCB0aGUgY29uZmlnIHRvIGBCUEZfSklUYCB3aGljaCBpcyB0aGUgY29ycmVjdCBvbmUuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUga2V5IHN5bWJvbHMuIGBicGZfaW50X2ppdF9jb21waWxlYCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIEJQRiBKSVQsIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGVuIHdlIGhhdmUgYGJ1aWxkX2luc25gLCB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIHRyYW5zbGF0aW5nIEJQRiBpbnN0cnVjdGlvbnMgdG8gTUlQUyBjb2RlLiBBbHNvLCBmdW5jdGlvbnMgbGlrZSBgZW1pdF9hbHVfcmAsIGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQuCgpJbnRlcmVzdGluZ2x5LCBgaml0X3Ntb2Q2NGAgaXMgc3RhdGljLCB3aGljaCBpcyB1c3VhbGx5IGEgcmVkIGZsYWcgd2hlbiBmdXp6aW5nLCBiZWNhdXNlIGl0IG1lYW5zIGl0IGNhbiYjMzk7dCBiZSBjYWxsZWQgZGlyZWN0bHkuIEJ1dCwgaW4gdGhpcyBjYXNlLCBpdHMgYWRkcmVzcyBpcyAqdGFrZW4qIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXI6CgpgYGBjCgljYXNlIEJQRl9NT0Q6CgkJYWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpJmFtcDtqaXRfc21vZDY0IDogKHUzMikmYW1wO2ppdF9tb2Q2NDsKCQlicmVhazsKYGBgCgpUaGF0ICpmb3JjZXMqIGl0IHRvIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgbWFraW5nIGl0IGEgdmlhYmxlIHRhcmdldC4gR29pbmcgdG8gbG9vayBhdCBgaml0X3Ntb2Q2NGAgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AsIGNvbmZpcm1lZCwgaXQmIzM5O3MgdGhlcmUuIFNvIGBqaXRfc21vZDY0YCBpcyBhIGdvIQoKYGJ1aWxkX2luc25gIGlzIGFub3RoZXIgb2J2aW91cyBjYW5kaWRhdGUgYmVjYXVzZSBpdCBpcyBpbiBib3RoIGAuY2AgZmlsZXMsIHNvIGlmIEkgcGljayBpdCwgaXQgd2lsbCB0cmlnZ2VyIGJvdGguIEkgc2hvdWxkIGFsc28gaW5jbHVkZSBgZW1pdF9hbHVfcmAuCgpPa2F5LCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBzb2xlIGNvbmZpZyBuZWVkZWQuCgpUaGVyZWZvcmUsIHRoZSBmb2N1cyBzeW1ib2xzIGFyZToKLSBgYnBmX2ludF9qaXRfY29tcGlsZWAKLSBgYnVpbGRfaW5zbmAKLSBgaml0X3Ntb2Q2NGAKLSBgZW1pdF9hbHVfcmAKCkVuYWJsZSBjb25maWc6IGBCUEZfSklUYAoKKipSZWFzb25pbmc6KioKClRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSBieSBwcm92aWRpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIGNhcGFiaWxpdGllcyB0byB0aGUgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgaG93IGluc3RydWN0aW9ucyBhcmUgdHJhbnNsYXRlZCBhbmQgZXhlY3V0ZWQsIG1ha2luZyBpdCBhIGNyaXRpY2FsIGFyZWEgZm9yIGZ1enppbmcuCgpHb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgaml0X3Ntb2Q2NGAgaXMgc3BlY2lmaWNhbGx5IDMyLWJpdC4gSXQgKmlzKiBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jYC4gT24gNjQtYml0LCBhcyBzZWVuIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBoYXJkd2FyZSBkaXZpc2lvbi9tb2R1bG8gaW5zdHJ1Y3Rpb25zIGFyZSB1c2VkLiBTbyB5ZXMsIGBqaXRfc21vZDY0YCBpcyBuZWVkZWQgZm9yIDMyLWJpdCBlbXVsYXRpb24gb2YgNjQtYml0IHNpZ25lZCBtb2R1bG8uCgpBbGwgcmlnaHQsIHRoYXQgY292ZXJzIGl0LiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnVpbGRfaW5zbiYjMzQ7LAogICAgJiMzNDtqaXRfc21vZDY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBNSVBTIG1pY3JvLWFzc2VtYmxlciB0byBzdXBwb3J0IHNpZ25lZCBkaXYvbW9kIGluc3RydWN0aW9ucyBhbmQgdXBkYXRlcyB0aGUgQlBGIEpJVCBjb21waWxlciB0byB1c2UgdGhlbSB3aGVuIHRyYW5zbGF0aW5nIEJQRl9ESVYgYW5kIEJQRl9NT0QgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIHNpZ25lZCBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklUKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnVpbGRfaW5zbiYjMzQ7LAogICAgJiMzNDtqaXRfc21vZDY0JiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBNSVBTIG1pY3JvLWFzc2VtYmxlciB0byBzdXBwb3J0IHNpZ25lZCBkaXYvbW9kIGluc3RydWN0aW9ucyBhbmQgdXBkYXRlcyB0aGUgQlBGIEpJVCBjb21waWxlciB0byB1c2UgdGhlbSB3aGVuIHRyYW5zbGF0aW5nIEJQRl9ESVYgYW5kIEJQRl9NT0QgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIHNpZ25lZCBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklUKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjEwLjU3NjA3MzQ1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Njg0NzcxMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJidWlsZF9pbnNuXCIsXG4gICAgXCJqaXRfc21vZDY0XCIsXG4gICAgXCJlbWl0X2FsdV9yXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBNSVBTIG1pY3JvLWFzc2VtYmxlciB0byBzdXBwb3J0IHNpZ25lZCBkaXYvbW9kIGluc3RydWN0aW9ucyBhbmQgdXBkYXRlcyB0aGUgQlBGIEpJVCBjb21waWxlciB0byB1c2UgdGhlbSB3aGVuIHRyYW5zbGF0aW5nIEJQRl9ESVYgYW5kIEJQRl9NT0QgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIHNpZ25lZCBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklUKSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MTAuNTc2MDgwOTIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU0MjE3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMzllZDRlZjMwZTQ5ZGQ0NzhkMDM0OTc5MTMxY2Y4MmU2MmNkMjY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjMzOjA5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uOWQzZWRiNTllZmMwOSAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XFxuIElwX3UydTEoX2N0Y21zYSk7XFxuIElwX3UydTFzMyhfZGFkZGl1KTtcXG4gSXBfdTN1MXUyKF9kYWRkdSk7XFxuK0lwX3UxdTIoX2RkaXYpO1xcbitJcF91M3UxdTIoX2RkaXZfcjYpO1xcbiBJcF91MXUyKF9kZGl2dSk7XFxuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xcbiBJcF91MShfZGkpO1xcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcXG4gSXBfdTJ1MW1zYnUzKF9kaW5zdSk7XFxuK0lwX3UxdTIoX2Rpdik7XFxuK0lwX3UzdTF1MihfZGl2X3I2KTtcXG4gSXBfdTF1MihfZGl2dSk7XFxuIElwX3UzdTF1MihfZGl2dV9yNik7XFxuIElwX3UxdTJ1MyhfZG1mYzApO1xcbitJcF91M3UxdTIoX2Rtb2QpO1xcbiBJcF91M3UxdTIoX2Rtb2R1KTtcXG4gSXBfdTF1MnUzKF9kbXRjMCk7XFxuIElwX3UxdTIoX2RtdWx0dSk7XFxuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xcbiBJcF91MXUydTMoX21maGMwKTtcXG4gSXBfdTEoX21maGkpO1xcbiBJcF91MShfbWZsbyk7XFxuK0lwX3UzdTF1MihfbW9kKTtcXG4gSXBfdTN1MXUyKF9tb2R1KTtcXG4gSXBfdTN1MXUyKF9tb3ZuKTtcXG4gSXBfdTN1MXUyKF9tb3Z6KTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXFxuaW5kZXggZTE1YzY3MDBjZDA4OC4uZWYxYTJiMDQwMDcwMCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG5AQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xcbiBcXHRbaW5zbl9jdGNtc2FdXFx0PSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSxcXG4gXFx0W2luc25fZGFkZGl1XVxcdD0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LFxcbiBcXHRbaW5zbl9kYWRkdV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSxcXG4rXFx0W2luc25fZGRpdl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSxcXG4rXFx0W2luc25fZGRpdl9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZGRpdjZfb3AsIGRkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kZGl2dV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZ1X29wKSwgUlMgfCBSVH0sXFxuIFxcdFtpbnNuX2RkaXZ1X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZGRpdnU2X29wLCBkZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuQEAgLTgyLDEwICs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xcbiBcXHRbaW5zbl9kaW5zXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXFxuIFxcdFtpbnNuX2RpbnNtXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxcbiBcXHRbaW5zbl9kaW5zdV1cXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcXG4rXFx0W2luc25fZGl2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sXFxuK1xcdFtpbnNuX2Rpdl9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9kaXY2X29wLCBkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kaXZ1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2dV9vcCksIFJTIHwgUlR9LFxcbiBcXHRbaW5zbl9kaXZ1X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9kaXZ1Nl9vcCwgZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RtZmMwXVxcdD0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxcbitcXHRbaW5zbl9kbW9kXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kbW9kX29wLCBkZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZG1vZHVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kbW9kdV9vcCwgZGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kbXRjMF1cXHQ9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcXG5AQCAtMTQwLDYgKzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XFxuIFxcdFtpbnNuX21maGMwXVxcdD0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sXFxuIFxcdFtpbnNuX21maGldXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LFxcbiBcXHRbaW5zbl9tZmxvXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSxcXG4rXFx0W2luc25fbW9kXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fbW9kdV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX21vdm5dXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSxcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uYyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcXG5pbmRleCAxMjUxNDA5NzlkNjJjLi4wNmQ3MjI2NjU0NTFmIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuQEAgLTQ5LDE4ICs0OSwyMCBAQCBlbnVtIG9wY29kZSB7XFxuIFxcdGluc25fYWRkaXUsIGluc25fYWRkdSwgaW5zbl9hbmQsIGluc25fYW5kaSwgaW5zbl9iYml0MCwgaW5zbl9iYml0MSxcXG4gXFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcXG4gXFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxcbi1cXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdnUsXFxuLVxcdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxcbi1cXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxcbitcXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcXG4rXFx0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXFxuK1xcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXFxuK1xcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXFxuIFxcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcXG4gXFx0aW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCxcXG4gXFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxcbiBcXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxcbiBcXHRpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLFxcbiBcXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcXG4tXFx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXFxuLVxcdGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LCBpbnNuX211aHUsIGluc25fbm9yLFxcbi1cXHRpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLFxcbitcXHRpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsXFxuK1xcdGluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LFxcbitcXHRpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLFxcbitcXHRpbnNuX3NiLCBpbnNuX3NjLFxcbiBcXHRpbnNuX3NjZCwgaW5zbl9zZWxlcXosIGluc25fc2VsbmV6LCBpbnNuX3NkLCBpbnNuX3NoLCBpbnNuX3NsbCxcXG4gXFx0aW5zbl9zbGx2LCBpbnNuX3NsdCwgaW5zbl9zbHRpLCBpbnNuX3NsdGl1LCBpbnNuX3NsdHUsIGluc25fc3JhLFxcbiBcXHRpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLFxcbkBAIC0yODcsOSArMjg5LDEyIEBAIElfdTF1MihfY2ZjMSlcXG4gSV91MnUxKF9jZmNtc2EpXFxuIElfdTF1MihfY3RjMSlcXG4gSV91MnUxKF9jdGNtc2EpXFxuK0lfdTF1MihfZGRpdilcXG4rSV91M3UxdTIoX2RkaXZfcjYpXFxuIElfdTF1MihfZGRpdnUpXFxuIElfdTN1MXUyKF9kZGl2dV9yNilcXG4gSV91MXUydTMoX2RtZmMwKVxcbitJX3UzdTF1MihfZG1vZClcXG4gSV91M3UxdTIoX2Rtb2R1KVxcbiBJX3UxdTJ1MyhfZG10YzApXFxuIElfdTF1MihfZG11bHR1KVxcbkBAIC0yOTcsNiArMzAyLDggQEAgSV91M3UxdTIoX2RtdWx1KVxcbiBJX3UydTFzMyhfZGFkZGl1KVxcbiBJX3UzdTF1MihfZGFkZHUpXFxuIElfdTEoX2RpKTtcXG4rSV91MXUyKF9kaXYpXFxuK0lfdTN1MXUyKF9kaXZfcjYpXFxuIElfdTF1MihfZGl2dSlcXG4gSV91M3UxdTIoX2RpdnVfcjYpXFxuIElfdTJ1MShfZHNiaCk7XFxuQEAgLTMzMiw2ICszMzksNyBAQCBJX3UyczN1MShfbHcpXFxuIElfdTJzM3UxKF9sd3UpXFxuIElfdTF1MnUzKF9tZmMwKVxcbiBJX3UxdTJ1MyhfbWZoYzApXFxuK0lfdTN1MXUyKF9tb2QpXFxuIElfdTN1MXUyKF9tb2R1KVxcbiBJX3UzdTF1MihfbW92bilcXG4gSV91M3UxdTIoX21vdnopXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggNmVlNGFiZTZhMWY3MC4uYTY3ODg1ZDI4OTQyZiAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYylcXG4gfVxcbiBcXG4gLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqL1xcbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxcbitib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0Y2FzZSBCUEZfTkVHOlxcbkBAIC0yMzcsNiArMjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcXG4gXFx0XFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbitcXHRcXHQvKiBEbyBub3QgdXNlIHVuc2lnbmVkIHNoaWZ0L21hc2sgcmV3cml0ZXMgZm9yIHNpZ25lZCBkaXYvbW9kLiAqL1xcbitcXHRcXHRpZiAoaXNfc2lnbmVkKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdFxcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cXG4gXFx0XFx0cmV0dXJuICh1MzIpaW1tIFxcdTAwM2M9IDB4MTAwMDAgXFx1MDAyNlxcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XFxuIFxcdH1cXG5AQCAtMzM4LDggKzM0MSw0MCBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZW1pdF9kaXYoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBib29sIGlzX3NpZ25lZClcXG4re1xcbitcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbitcXHRcXHRpZiAoaXNfc2lnbmVkKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKVxcbit7XFxuK1xcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZClcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwMjYgc3JjICovXFxuQEAgLTM4NSwyMSArNDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0IC8gc3JjICovXFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4tXFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4tXFx0XFx0fVxcbitcXHRcXHRlbWl0X2RpdihjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0ICUgc3JjICovXFxuIFxcdGNhc2UgQlBGX01PRDpcXG4tXFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcXG4tXFx0XFx0fVxcbitcXHRcXHRlbWl0X21vZChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXFxuaW5kZXggYTM3ZmUyMDgxOGViOS4uMzkyNjZkYWE2ZGE2ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pO1xcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcXG4gXFxuIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi9cXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcXG4gXFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XFxuQEAgLTE3Miw3ICsxNzIsOCBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcXG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcXG4gXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcXG4rXFx0XFx0Ym9vbCBpc19zaWduZWQpO1xcbiBcXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXFxuIHZvaWQgZW1pdF9hdG9taWNfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYsIHU4IGNvZGUpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcXG5pbmRleCA0MGE4NzhiNjcyZjVkLi5jOGQ0NWE1ZDU0ZDgzIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbiBcXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcXG4gfVxcbiBcXG4tLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovXFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xcbiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXFxuIHtcXG4gXFx0dTY0IHJlbTtcXG5AQCAtNTIxLDkgKzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXFxuIFxcdHJldHVybiByZW07XFxuIH1cXG4gXFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cXG4rc3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcXG4re1xcbitcXHR1NjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcXG4rXFxuK1xcdHJldHVybiBhIC0gcXVvdCAqIGI7XFxuK31cXG4rXFxuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXFxuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4tXFx0XFx0XFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXFxuK1xcdFxcdFxcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxcbiB7XFxuIFxcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXFxuIFxcdGNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovXFxuQEAgLTU0NiwxMSArNTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGFkZHIgPSAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuK1xcdFxcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVxcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRhZGRyID0gKHUzMilcXHUwMDI2aml0X21vZDY0O1xcbitcXHRcXHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXFx1MDAyNmppdF9tb2Q2NDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XFxuQEAgLTE0NjksNiArMTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdHU4IGNvZGUgPSBpbnNuLVxcdTAwM2Vjb2RlO1xcbiBcXHRzMTYgb2ZmID0gaW5zbi1cXHUwMDNlb2ZmO1xcbiBcXHRzMzIgaW1tID0gaW5zbi1cXHUwMDNlaW1tO1xcbitcXHRib29sIGlzX3NpZ25lZCA9IG9mZiA9PSAxO1xcbiBcXHRzMzIgdmFsLCByZWw7XFxuIFxcdHU4IGFsdSwgam1wO1xcbiBcXG5AQCAtMTUxNiw5ICsxNTI1LDEwIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XFxuLVxcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XFxuK1xcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGlzX3NpZ25lZCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLFxcbitcXHRcXHRcXHRcXHQgICBpc19zaWduZWQpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtMTU0Niw3ICsxNTU2LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuIFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuQEAgLTE1OTksNyArMTYwOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcXG4tXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cXG4gXFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXFxuQEAgLTE2MjksNyArMTYzOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqL1xcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xcbiBcXHQvKiBkc3QgPSBodG9iZShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmNhMjc0MWYxNDQ4M2QgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTE5Nyw4ICsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbiBcXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxcbitcXHRcXHQgICAgICAgYm9vbCBpc19zaWduZWQpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZClcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxcbitcXHRcXHQgICAgICAgYm9vbCBpc19zaWduZWQpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZClcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbitcXHRcXHRcXHQgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCBcXHUwMDNjXFx1MDAzYyBzcmMgKi9cXG5AQCAtMjM1LDI1ICsyNzAsMTUgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfRElWOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBpc19zaWduZWQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0ICUgc3JjICovXFxuIFxcdGNhc2UgQlBGX01PRDpcXG4tXFx0XFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdC8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqL1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgZmFsc2UpO1xcbiBcXHR9XFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbkBAIC02NDAsNiArNjY1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0dTggY29kZSA9IGluc24tXFx1MDAzZWNvZGU7XFxuIFxcdHMxNiBvZmYgPSBpbnNuLVxcdTAwM2VvZmY7XFxuIFxcdHMzMiBpbW0gPSBpbnNuLVxcdTAwM2VpbW07XFxuK1xcdGJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7XFxuIFxcdHMzMiB2YWwsIHJlbDtcXG4gXFx0dTggYWx1LCBqbXA7XFxuIFxcbkBAIC02NzQsOSArNzAwLDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgZmFsc2UpKSB7XFxuIFxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XFxuLVxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtNjk2LDEwICs3MjIsMTEgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgaXNfc2lnbmVkKSkge1xcbiBcXHRcXHRcXHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XFxuIFxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XFxuLVxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXFxuK1xcdFxcdFxcdFxcdCAgIGlzX3NpZ25lZCk7XFxuIFxcdFxcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXFx1MDAyNmFsdSwgXFx1MDAyNnZhbCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XFxuQEAgLTcxNCw3ICs3NDEsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAzZVxcdTAwM2Ugc3JjICovXFxuQEAgLTczMyw3ICs3NjAsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xcbiBcXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xcbkBAIC03NzAsOSArNzk3LDEwIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6XFxuLVxcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XFxuK1xcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGlzX3NpZ25lZCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXFxuK1xcdFxcdFxcdFxcdCAgICAgaXNfc2lnbmVkKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC03OTksNyArODI3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBodG9sZShkc3QpICovXFxuIFxcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MTEuMDAyMjAxNTE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDQyNTg2MzQxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJ1aWxkX2luc25cIixcbiAgICBcImppdF9zbW9kNjRcIixcbiAgICBcImVtaXRfYWx1X3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIHRvIHN1cHBvcnQgc2lnbmVkIGRpdi9tb2QgaW5zdHJ1Y3Rpb25zIGFuZCB1cGRhdGVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSB0aGVtIHdoZW4gdHJhbnNsYXRpbmcgQlBGX0RJViBhbmQgQlBGX01PRCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgc2lnbmVkIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMzllZDRlZjMwZTQ5ZGQ0NzhkMDM0OTc5MTMxY2Y4MmU2MmNkMjY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6MzM6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uOWQzZWRiNTllZmMwOSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XG4gSXBfdTJ1MShfY3RjbXNhKTtcbiBJcF91MnUxczMoX2RhZGRpdSk7XG4gSXBfdTN1MXUyKF9kYWRkdSk7XG4rSXBfdTF1MihfZGRpdik7XG4rSXBfdTN1MXUyKF9kZGl2X3I2KTtcbiBJcF91MXUyKF9kZGl2dSk7XG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XG4gSXBfdTEoX2RpKTtcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xuIElwX3UydTFtc2J1MyhfZGluc20pO1xuIElwX3UydTFtc2J1MyhfZGluc3UpO1xuK0lwX3UxdTIoX2Rpdik7XG4rSXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4rSXBfdTN1MXUyKF9kbW9kKTtcbiBJcF91M3UxdTIoX2Rtb2R1KTtcbiBJcF91MXUydTMoX2RtdGMwKTtcbiBJcF91MXUyKF9kbXVsdHUpO1xuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xuIElwX3UxdTJ1MyhfbWZoYzApO1xuIElwX3UxKF9tZmhpKTtcbiBJcF91MShfbWZsbyk7XG4rSXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuaW5kZXggZTE1YzY3MDBjZDA4OC4uZWYxYTJiMDQwMDcwMCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuKysrIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5AQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fY3RjbXNhXVx0PSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RhZGRpdV1cdD0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LFxuIFx0W2luc25fZGFkZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSxcbitcdFtpbnNuX2RkaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSxcbitcdFtpbnNuX2RkaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZGRpdjZfb3AsIGRkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RkaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGRpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbkBAIC04MiwxMCArODUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2RpbnNdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc21dXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zbV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnN1XVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc3Vfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4rXHRbaW5zbl9kaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LFxuK1x0W2luc25fZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbWZjMF1cdD0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuK1x0W2luc25fZG1vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kbW9kX29wLCBkZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbXRjMF1cdD0ge00oY29wMF9vcCwgZG10Y19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuQEAgLTE0MCw2ICsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fbWZoYzBdXHQ9IHtNKGNvcDBfb3AsIG1maGMwX29wLCAwLCAwLCAwLCAwKSwgIFJUIHwgUkQgfCBTRVR9LFxuIFx0W2luc25fbWZoaV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZoaV9vcCksIFJEfSxcbiBcdFtpbnNuX21mbG9dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1mbG9fb3ApLCBSRH0sXG4rXHRbaW5zbl9tb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9tb2R1X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb3ZuXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSxcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS5jIGIvYXJjaC9taXBzL21tL3Vhc20uY1xuaW5kZXggMTI1MTQwOTc5ZDYyYy4uMDZkNzIyNjY1NDUxZiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbkBAIC00OSwxOCArNDksMjAgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbitcdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LFxuK1x0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXG4rXHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuK1x0aW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiBcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcbiBcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXG4gXHRpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsXG4gXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxuIFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcbiBcdGluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLFxuLVx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4tXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcbi1cdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXG4rXHRpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsXG4rXHRpbnNuX210aGMwLCBpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSxcbitcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXG4rXHRpbnNuX3NiLCBpbnNuX3NjLFxuIFx0aW5zbl9zY2QsIGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXG4gXHRpbnNuX3NsbHYsIGluc25fc2x0LCBpbnNuX3NsdGksIGluc25fc2x0aXUsIGluc25fc2x0dSwgaW5zbl9zcmEsXG4gXHRpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLFxuQEAgLTI4Nyw5ICsyODksMTIgQEAgSV91MXUyKF9jZmMxKVxuIElfdTJ1MShfY2ZjbXNhKVxuIElfdTF1MihfY3RjMSlcbiBJX3UydTEoX2N0Y21zYSlcbitJX3UxdTIoX2RkaXYpXG4rSV91M3UxdTIoX2RkaXZfcjYpXG4gSV91MXUyKF9kZGl2dSlcbiBJX3UzdTF1MihfZGRpdnVfcjYpXG4gSV91MXUydTMoX2RtZmMwKVxuK0lfdTN1MXUyKF9kbW9kKVxuIElfdTN1MXUyKF9kbW9kdSlcbiBJX3UxdTJ1MyhfZG10YzApXG4gSV91MXUyKF9kbXVsdHUpXG5AQCAtMjk3LDYgKzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4rSV91MXUyKF9kaXYpXG4rSV91M3UxdTIoX2Rpdl9yNilcbiBJX3UxdTIoX2RpdnUpXG4gSV91M3UxdTIoX2RpdnVfcjYpXG4gSV91MnUxKF9kc2JoKTtcbkBAIC0zMzIsNiArMzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuK0lfdTN1MXUyKF9tb2QpXG4gSV91M3UxdTIoX21vZHUpXG4gSV91M3UxdTIoX21vdm4pXG4gSV91M3UxdTIoX21vdnopXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDZlZTRhYmU2YTFmNzAuLmE2Nzg4NWQyODk0MmYgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpXG4gfVxuIFxuIC8qIFZhbGlkYXRlIEFMVSBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0Y2FzZSBCUEZfTkVHOlxuQEAgLTIzNyw2ICsyMzcsOSBAQCBib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuIFx0XHRyZXR1cm4gaW1tID09IDAgfHwgKGltbSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihpbW0pKTtcbiBcdGNhc2UgQlBGX0RJVjpcbiBcdGNhc2UgQlBGX01PRDpcbitcdFx0LyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi9cbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM4LDggKzM0MSw0MCBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmIChpc19zaWduZWQpXG4rXHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgYm9vbCBpc19zaWduZWQpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgbW9kLCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmIChpc19zaWduZWQpXG4rXHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4rXHR9XG4rfVxuK1xuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAqL1xuQEAgLTM4NSwyMSArNDIwLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuLVx0XHR9XG4rXHRcdGVtaXRfZGl2KGN0eCwgZHN0LCBzcmMsIGlzX3NpZ25lZCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0ICUgc3JjICovXG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbmluZGV4IGEzN2ZlMjA4MThlYjkuLjM5MjY2ZGFhNmRhNmQgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4rYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgYm9vbCBpc19zaWduZWQpO1xuIFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cbiBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbkBAIC0xNzIsNyArMTcyLDggQEAgYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcbiBcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuK1x0XHRib29sIGlzX3NpZ25lZCk7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkLi5jOGQ0NWE1ZDU0ZDgzIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiB7XG4gXHR1NjQgcmVtO1xuQEAgLTUyMSw5ICs1MjEsMTcgQEAgc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuIFx0cmV0dXJuIHJlbTtcbiB9XG4gXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuK3N0YXRpYyBzNjQgaml0X3Ntb2Q2NChzNjQgYSwgczY0IGIpXG4re1xuK1x0dTY0IHF1b3QgPSBkaXY2NF9zNjQoYSwgYik7XG4rXG4rXHRyZXR1cm4gYSAtIHF1b3QgKiBiO1xuK31cbitcbiAvKiBBTFUgZGl2L21vZCByZWdpc3RlciAoNjQtYml0KSAqL1xuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbi1cdFx0XHQgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcbitzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuK1x0XHRcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuQEAgLTU0NiwxMSArNTU0LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbitcdFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXHUwMDI2ZGl2NjRfczY0IDogKHUzMilcdTAwMjZkaXY2NF91NjQ7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0ICUgc3JjICovXG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmppdF9tb2Q2NDtcbitcdFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDksIGFkZHIpO1xuQEAgLTE0NjksNiArMTQ3Nyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHR1OCBjb2RlID0gaW5zbi1cdTAwM2Vjb2RlO1xuIFx0czE2IG9mZiA9IGluc24tXHUwMDNlb2ZmO1xuIFx0czMyIGltbSA9IGluc24tXHUwMDNlaW1tO1xuK1x0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcbiBcdHMzMiB2YWwsIHJlbDtcbiBcdHU4IGFsdSwgam1wO1xuIFxuQEAgLTE1MTYsOSArMTUyNSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSxcbitcdFx0XHRcdCAgIGlzX3NpZ25lZCk7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGxvKGRzdCksIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTE1NDYsNyArMTU1Niw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC0xNTk5LDcgKzE2MDksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHQgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuXG4gXHRcdCAqL1xuIFx0XHRlbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICg2NC1iaXQpICovXG4gXHQvKiBkc3QgPSBkc3QgfCBzcmMgKDY0LWJpdCkgKi9cbkBAIC0xNjI5LDcgKzE2MzksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0LyogZHN0ID0gZHN0ICUgc3JjICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBodG9sZShkc3QpICovXG4gXHQvKiBkc3QgPSBodG9iZShkc3QpICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5jYTI3NDFmMTQ0ODNkIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOTcsOCArMTk3LDQzIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsXG4rXHRcdCAgICAgICBib29sIGlzX3NpZ25lZClcbit7XG4rXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRpZiAoaXNfc2lnbmVkKVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAoaXNfc2lnbmVkKVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGVtaXRfbW9kNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLFxuK1x0XHQgICAgICAgYm9vbCBpc19zaWduZWQpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgZG1vZCwgZHN0LCBkc3QsIHNyYyk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuK1x0fVxuK31cbitcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4rXHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzY1x1MDAzYyBzcmMgKi9cbkBAIC0yMzUsMjUgKzI3MCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuLVx0XHR9XG4rXHRcdGVtaXRfZGl2NjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuLVx0XHR9XG4rXHRcdGVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgaXNfc2lnbmVkKTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjQwLDYgKzY2NSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHR1OCBjb2RlID0gaW5zbi1cdTAwM2Vjb2RlO1xuIFx0czE2IG9mZiA9IGluc24tXHUwMDNlb2ZmO1xuIFx0czMyIGltbSA9IGluc24tXHUwMDNlaW1tO1xuK1x0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcbiBcdHMzMiB2YWwsIHJlbDtcbiBcdHU4IGFsdSwgam1wO1xuIFxuQEAgLTY3NCw5ICs3MDAsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBmYWxzZSkpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTY5NiwxMCArNzIyLDExIEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4rXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGlzX3NpZ25lZCkpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4rXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXG4rXHRcdFx0XHQgICBpc19zaWduZWQpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG5AQCAtNzE0LDcgKzc0MSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICs3NjAsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxuIFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdGVtaXRfc2V4dChjdHgsIE1JUFNfUl9UNCwgc3JjKTtcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcbiBcdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXG5AQCAtNzcwLDkgKzc5NywxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBpc19zaWduZWQpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLFxuK1x0XHRcdFx0ICAgICBpc19zaWduZWQpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNzk5LDcgKzgyNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBpc19zaWduZWQpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjExLjAwMjIwMzU2NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MTQ4MTAzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUlQUyBCUEYgSklUIENvbXBpbGVyOiBTaWduZWQgRGl2aXNpb24gYW5kIE1vZHVsbyBTdXBwb3J0IC0gV29ydGh5IG9mIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IGZvciB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBUaGlzIGlzIHNpZ25pZmljYW50LCBpdCBleHRlbmRzIHRoZSBCUEYgY2FwYWJpbGl0aWVzIG9uIE1JUFMsIHNwZWNpZmljYWxseSBieSBhZGRpbmcgdGhlIG5lY2Vzc2FyeSBNSVBTIGluc3RydWN0aW9ucyAoYGRkaXZgLCBgZGRpdl9yNmAsIGBkaXZgLCBgZGl2X3I2YCwgYGRtb2RgLCBgbW9kYCwgZXRjLikgd2l0aGluIGBhcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oYCwgYGFyY2gvbWlwcy9tbS91YXNtLW1pcHMuY2AsIGFuZCBgYXJjaC9taXBzL21tL3Vhc20uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBsZXZlcmFnaW5nIHRoZXNlIGluc3RydWN0aW9ucyB3aGVuIGBpc19zaWduZWRgIGlzIHRydWUgZm9yIGBCUEZfRElWYCBhbmQgYEJQRl9NT0RgIGluc3RydWN0aW9ucyBpbiBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBhbmQgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBtZWFucyB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyIGNhbiBub3cgaGFuZGxlIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eSwgYW5kIHllcywgdGhpcyBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZS4gV2UgY2FuIHRyaWdnZXIgdGhpcyBmdW5jdGlvbmFsaXR5IHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIGJ5IGxvYWRpbmcgYSBCUEYgcHJvZ3JhbSBjb250YWluaW5nIHNpZ25lZCBkaXZpc2lvbi9tb2R1bG8gaW5zdHJ1Y3Rpb25zLlxuXG5UaGlua2luZyBhYm91dCBmdXp6aW5nLCB0aGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgTUlQUyBzdXBwb3J0IGluIGdlbmVyYWwuIEFuZCB5ZXMsIHN5emthbGxlciBoYXMgTUlQUyBzdXBwb3J0LiBXZSBoYXZlIGBtaXBzNjRsZWAsIGBtaXBzMzJgLCBldGMuLCBjb3ZlcmVkIVxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydDogdGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0aGF0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjb2RlIGNhbiBiZSBleGVjdXRlZC4gQmFzZWQgb24gdGhlIHByb21wdCwgdGhpcyBtZWFucyBJIG5lZWQgdG8gdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIGNvbmZpcm0gZXhlY3V0aW9uLiBTbywgdGhpcyBkZWZpbml0ZWx5IG1lYW5zIGl0J3MgV29ydGhGdXp6aW5nPXRydWUuXG5cbkJlZm9yZSBJIHNheSB0aGF0IHdpdGggY29uZmlkZW5jZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gQ09ORklHX0JQRl9KSVQgaXMgbmVjZXNzYXJ5IGFzIGl0IHByb3ZpZGVzIHRoZSBCUEYgSklUIGluZnJhc3RydWN0dXJlLiBBbHNvLCBDT05GSUdfTUlQUyBpcyBvYnZpb3VzbHkgbmVlZGVkIGJlY2F1c2UgdGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIGFyY2hpdGVjdHVyZS5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGU6IEknbGwgZm9jdXMgb24gdGhlIHNwZWNpZmljIGZpbGVzIGFuZCBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIEkgbmVlZCB0byBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb25zOiBgZW1pdF9kaXZgLCBgZW1pdF9tb2RgLCBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9kaXY2NGAsIGBlbWl0X21vZDY0YCwgYGVtaXRfYWx1X3I2NGAsIGFuZCBgYnVpbGRfaW5zbmAuIEknbGwgYWxzbyBkb3VibGUtY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIGJlIGNlcnRhaW4uXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIGNoYW5nZSB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA0NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjE4LjYxNzAxNjUxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkxNzQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbWlwcy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM9OTMyPWJvb2wgYnBmX2ppdF9uZWVkc196ZXh0KHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTkzNi1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjkzNzpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtOTM4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MTguNjU5OTM4NjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYwMDY0MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZvY3VzOiBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBhIHNwZWNpZmljIGFyZWEgd2l0aGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIE15IHByaW1hcnkgdGFyZ2V0cyBhcmUgdGhlIGBidWlsZF9pbnNuYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgaW5zdHJ1Y3Rpb24gYnVpbGRpbmcgbG9naWMgcmVzaWRlcywgbmF0dXJhbGx5LlxuXG5CZXlvbmQgYGJ1aWxkX2luc25gLCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGl2aXNpb24gYW5kIG1vZHVsbyBpbXBsZW1lbnRhdGlvbnMuIFRoZSBmdW5jdGlvbnMgdG8gZXhhbWluZSB3aWxsIGJlIGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgLCBgZW1pdF9kaXZtb2RfcjY0YCBhbmQgYGppdF9zbW9kNjRgLiBHZXR0aW5nIHRoZXNlIGZ1bmN0aW9ucyB3b3JraW5nIGNvcnJlY3RseSBpcyBwYXJhbW91bnQgZm9yIHBlcmZvcm1hbmNlIGFuZCBjb3JyZWN0bmVzcy5cblxuTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjayBiZWZvcmUgSSBkaXZlIGRlZXBlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCB0byBzZWUgaWYgYGJ1aWxkX2luc25gIGlzIGRlY2xhcmVkIHN0YXRpYy4gS25vd2luZyB0aGF0IHdpbGwgaW1wYWN0IHRoZSB3YXkgSSB0aGluayBhYm91dCBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBmb3IgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM4OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTozMzoyMi44MjAwMDUxNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MDcyMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnVpbGRfaW5zblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTg3NT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTg5NS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjg5NjpcXHRcXHRyZXQgPSBidWlsZF9pbnNuKGluc24sIGN0eCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy04OTctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oPTIyMz12b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBpbnQgZGVzdF9yZWcpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0yMzMtICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaDoyMzQ6aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0yMzUtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTQ1Mj12b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBpbnQgZGVzdF9yZWcpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTQ3MC0vKiBCdWlsZCBvbmUgZUJQRiBpbnN0cnVjdGlvbiAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNDcxOmludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE0NzIte1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTY0ND12b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBpbnQgZGVzdF9yZWcpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjU5LS8qIEJ1aWxkIG9uZSBlQlBGIGluc3RydWN0aW9uICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjY2MDppbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy02NjEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTozMzoyMi44NjU1MzAwNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA4NDM4MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQlBGIEpJVCBjb21waWxhdGlvbiBmdW5jdGlvbnMgZm9yIE1JUFMsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgYnVpbGRfaW5zbmAgaXNuJ3Qgc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyBzdGF0aWMgZnVuY3Rpb25zIHR5cGljYWxseSBoYXZlIGludGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzdWdnZXN0cyBgYnVpbGRfaW5zbmAgbWlnaHQgYmUgdXNlZCBtb3JlIGJyb2FkbHkuXG5cblRoZW4gSSBzZWUgYSBjb3VwbGUgb2YgZnVuY3Rpb25zLCBgZW1pdF9kaXZgIGFuZCBgZW1pdF9tb2RgLCB0aGF0ICphcmUqIHN0YXRpYywgYW5kIHRoZXkgcmVzaWRlIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCdzIGV4cGVjdGVkLCBnaXZlbiB0aGVpciByb2xlIGluIGdlbmVyYXRpbmcgb3B0aW1pemVkIGNvZGUgZm9yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucy4gU2ltaWxhcmx5LCBgZW1pdF9kaXY2NGAgYW5kIGBlbWl0X21vZDY0YCBhcmUgc3RhdGljIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBhbmQgYGVtaXRfZGl2bW9kX3I2NGAgYW5kIGBqaXRfc21vZDY0YCBhcmUgc3RhdGljIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLlxuXG5Ob3csIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jYCB0byBzZWUgaWYgSSBjYW4gZmluZCBgZW1pdF9hbHVfcmAsIHNpbmNlIEknbSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmdW5jdGlvbidzIHNjb3BlIGFuZCBwb3NzaWJsZSBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIGJ1aWxkIGEgY2xlYXJlciBtZW50YWwgbW9kZWwgb2YgdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlcidzIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0MDksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6MzM6MjcuMzczOTcwNDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDMzMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pdF9hbHVfclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTM2MD1zdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIGJvb2wgaXNfc2lnbmVkKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNzYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM6Mzc3OnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTM3OC17XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oPTE3Mj12b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTc1OnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMTc2LVxcdFxcdGJvb2wgaXNfc2lnbmVkKTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0yMDE9c3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTI2Ni0vKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjI2NzpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTI2OC1cXHRcXHRcXHQgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDcxPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTUyOS1cXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q2LCBpbW0pO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTMwOlxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSxcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTUzMS1cXHRcXHRcXHRcXHQgICBpc19zaWduZWQpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NTgtXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTU5OlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NjAtXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyMy1cXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9TVUIgfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTYyNDpcXHRcXHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyNS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz0yMTc9c3RhdGljIHZvaWQgZW1pdF9tb2Q2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjM0LS8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjM1OnN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMzYtXFx0XFx0XFx0IGJvb2wgaXNfc2lnbmVkKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTI4MC1cXHRcXHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjgxOlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjgyLVxcdH1cXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz02NjA9aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MDQtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzA1OlxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTcwNi1cXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzI3LVxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjcyODpcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSxcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzI5LVxcdFxcdFxcdFxcdCAgIGlzX3NpZ25lZCk7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzQzLVxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzQ0OlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc0NS1cXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03NjItXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3NjM6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGlzX3NpZ25lZCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc2NC1cXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MDEtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6ODAyOlxcdFxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTgwMy1cXHRcXHRcXHRcXHQgICAgIGlzX3NpZ25lZCk7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODI5LVxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo4MzA6XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgaXNfc2lnbmVkKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODMxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTozMzoyNy40MTg4MjQ5MzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc4MTE1NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1JUFMgQlBGIEpJVCBDb21waWxlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IHRvIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBvbiBNSVBTIGFyY2hpdGVjdHVyZS4gVGhhdCdzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBwcmltZSBlbnRyeSBwb2ludCBpcyBkZWZpbml0ZWx5IGBicGZfaW50X2ppdF9jb21waWxlYC4gSSdsbCB3YW50IHRvIHRhcmdldCB0aGF0IGZvciBzdXJlLiBHaXZlbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUsIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY2FsbHMgdG8gYGJ1aWxkX2luc25gLiBJIHNlZSBpdCBkZWZpbmVkIGluIGJvdGggYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AuIEJ1dCBob2xkIG9uLCBgYnVpbGRfaW5zbmAgaXNuJ3Qgc3RhdGljLCBzbyBpdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBzeW1ib2wgYWRkcmVzcywgd2hpY2ggaXMgZ29vZCBmb3IgZnV6emluZy4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIHRoZSBtYWluIHRoaW5nIGhlcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGluc3RydWN0aW9ucyBhcmUgYnVpbHQuXG5cbkxldCdzIGNvbmZpcm0gaG93IGBicGZfaW50X2ppdF9jb21waWxlYCBpbnRlcmFjdHMgd2l0aCBgYnVpbGRfaW5zbmAuIEknbGwgcGVlayBhdCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBidWlsZF9ib2R5YCBjYWxscyBgYnVpbGRfaW5zbmAsIHNvIHRoYXQncyB0aGUgY2hhaW4uIEkgY2FuIHByb2JhYmx5IGZ1enogdGhlIGBicGZfaW50X2ppdF9jb21waWxlYCBmdW5jdGlvbiwgYW5kIHNlZSBob3cgaXQgYnVpbGRzIGluc3RydWN0aW9ucy5cblxuTm93LCBjb25maWcgcmVxdWlyZW1lbnRzIGFyZSBpbXBvcnRhbnQuIE5hdHVyYWxseSwgYENPTkZJR19CUEZfSklUYCBpcyBhIG11c3QuIEFuZCwgc2luY2UgdGhpcyBpcyBNSVBTIHNwZWNpZmljLCBJIGRvbid0IG5lZWQgYENPTkZJR19NSVBTYCBiZWNhdXNlIGl0J3MgdGhlIGFyY2hpdGVjdHVyZSBpdHNlbGYuIEkgd2lsbCBsb29rIGludG8gYGFyY2gvbWlwcy9LY29uZmlnYCBvciBgYXJjaC9taXBzL25ldC9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBvciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjMyLjc5Njk0MzgyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNDIxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9jb21wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbWlwcy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU9Nj1pZmVxICgkKENPTkZJR18zMkJJVCkseSlcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTE4LSAqXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzoxOTogKiAtIGJwZl9qaXRfY29tcC5oXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0yMC0gKiAgIENvbW1vbiBkZWZpbml0aW9ucyBhbmQgdXRpbGl0aWVzLlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMjEtICpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjIyOiAqIC0gYnBmX2ppdF9jb21wLmNcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTIzLSAqICAgSW1wbGVtZW50YXRpb24gb2YgSklUIHRvcC1sZXZlbCBsb2dpYyBhbmQgZXhwb3J0ZWQgSklUIEFQSSBmdW5jdGlvbnMuXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTI3LSAqXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzoyODogKiAtIGJwZl9qaXRfY29tcDMyLmNcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTI5LSAqICAgSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIHRvIEpJVCBwcm9sb2d1ZSwgZXBpbG9ndWUgYW5kIGEgc2luZ2xlIGVCUEZcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMzMtICpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjM0OiAqIC0gYnBmX2ppdF9jb21wNjQuY1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMtMzUtICogICBEaXR0bywgZm9yIDY0LWJpdCBNSVBTIENQVXMuXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTExNi1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jOjExNzojaW5jbHVkZSBcXFwiYnBmX2ppdF9jb21wLmhcXFwiXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0xMTgtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjItXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjIzOiNpbmNsdWRlIFxcXCJicGZfaml0X2NvbXAuaFxcXCJcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjQtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjEtXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjIyOiNpbmNsdWRlIFxcXCJicGZfaml0X2NvbXAuaFxcXCJcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjMyLjg0NDE5NDg1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODEzMjk5ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbiBhbmQgTWljcm8tQXNzZW1ibGVyIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBCUEYgSklUIHNldHVwLCBhbmQgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaGVyZSBpcyBjbGVhcmx5IGBDT05GSUdfQlBGX0pJVGAuIFRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgaW5pdGlhbCB0YXJnZXRzIGFyZSB0aGUgY29yZSBzeW1ib2xzOiBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGFuZCB0aGUgYGJ1aWxkX2luc25gIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGluIGBicGZfaml0X2NvbXAzMi5jYCBhbmQgYGJwZl9qaXRfY29tcDY0LmNgLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUgZXh0ZXJuYWxseS4gSW50ZXJlc3RpbmdseSwgYGJ1aWxkX2luc25gIGlzICpub3QqIHN0YXRpYywgc28gdGhhdCdzIGhlbHBmdWwuIE5vdywgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHNlZW1zIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LCBzbyB0aGF0J3MgZ29vZCB0byBrbm93LiBUaGUgYGJ1aWxkX2JvZHlgIGlzIGEgc3RhdGljIGhlbHBlciBmdW5jdGlvbi4gSSBzZWUgYGVtaXRfYWx1X3JgIGlzIG5vbi1zdGF0aWMgaW4gYGJwZl9qaXRfY29tcC5jYCwgd2hpY2ggbWFrZXMgaXQgYSBnbG9iYWwgc3ltYm9sLiBTbyBJIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IHVuZGVyc3RhbmRpbmcuIEl0IG1ha2VzIHNlbnNlLCBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBidWlsZF9pbnNuYCwgYW5kIGBlbWl0X2FsdV9yYCBhcmUgaW1wb3J0YW50LlxuXG5JJ20gdmVyaWZ5aW5nIHRoYXQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIGluZGVlZCB0aGUgKm9ubHkqIGVudHJ5IHBvaW50IGZvciB0aGUgQlBGIEpJVCwgdG8gYXZvaWQgZ2V0dGluZyBkaXN0cmFjdGVkLiBUaGF0J3MgY29uZmlybWVkLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEknbSBhd2FyZSB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGdlbmVyYWxseSBhIHByZXJlcXVpc2l0ZSBmb3IgQlBGLCBidXQgYENPTkZJR19CUEZfSklUYCBpcyB0aGUgc3BlY2lmaWMgb25lIEknbSBjb25jZXJuZWQgd2l0aCBoZXJlLlxuXG5Ob3csIGxldCdzIGdvIGJhY2sgYW5kIHJldmlldyB0aGlzIHBhdGNoIGEgbGl0dGxlIG1vcmUgY2xvc2VseS4gSSBzZWUgdGhhdCBpdCdzIGFkZGluZyBpbnN0cnVjdGlvbnMgdG8gYHVhc20tbWlwcy5jYCBhbmQgYHVhc20uY2AuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgZmlsZXMgYXJlIHBhcnQgb2YgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyLiBJIG5lZWQgdG8gY2hlY2sgdGhlIE1JUFMgYXJjaGl0ZWN0dXJlJ3MgTWFrZWZpbGUgdG8gc2VlIHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsaW5nIGB1YXNtLmNgLiBUaGF0IHdpbGwgcHJvdmlkZSBmdXJ0aGVyIGNsYXJpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDM0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjM4LjY1NzQ5NzEyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwNTkzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWFzbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvbW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTYyNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC9taXBzL21tL01ha2VmaWxlPTE5PWlmZGVmIENPTkZJR19DUFVfTUlDUk9NSVBTXFxuYXJjaC9taXBzL21tL01ha2VmaWxlOjIwOm9iai15XFx0XFx0XFx0XFx0Kz0gdWFzbS1taWNyb21pcHMub1xcbmFyY2gvbWlwcy9tbS9NYWtlZmlsZS0yMS1lbHNlXFxuYXJjaC9taXBzL21tL01ha2VmaWxlOjIyOm9iai15XFx0XFx0XFx0XFx0Kz0gdWFzbS1taXBzLm9cXG5hcmNoL21pcHMvbW0vTWFrZWZpbGUtMjMtZW5kaWZcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzUtXFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNjojaW5jbHVkZSBcXHUwMDNjYXNtL3Vhc20uaFxcdTAwM2VcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM3LVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz01MT1VQVNNX0xfTEEoX2NvcHlfcHJlZl9zdG9yZSlcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTMtLyogV2UgbmVlZCBvbmUgYnJhbmNoIGFuZCB0aGVyZWZvcmUgb25lIHJlbG9jYXRpb24gcGVyIHRhcmdldCBsYWJlbC4gKi9cXG5hcmNoL21pcHMvbW0vcGFnZS5jOjU0OnN0YXRpYyBzdHJ1Y3QgdWFzbV9sYWJlbCBsYWJlbHNbNV07XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1NTpzdGF0aWMgc3RydWN0IHVhc21fcmVsb2MgcmVsb2NzWzVdO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTYtXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTYzLSAqL1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NjQ6I2RlZmluZSBfdWFzbV9pX3ByZWYoYSwgYiwgYywgZClcXHRcXHRcXFxcXFxuYXJjaC9taXBzL21tL3BhZ2UuYy02NS1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy02Ny1cXHRcXHRpZiAoYyBcXHUwMDNjPSAweGZmIFxcdTAwMjZcXHUwMDI2IGMgXFx1MDAzZT0gLTB4MTAwKVxcdFxcXFxcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjY4OlxcdFxcdFxcdHVhc21faV9wcmVmKGEsIGIsIGMsIGQpO1xcXFxcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTY5LVxcdH0gZWxzZSB7XFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NzA6XFx0XFx0dWFzbV9pX3ByZWYoYSwgYiwgYywgZCk7XFx0XFxcXFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNzEtXFx0fVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM9OTE9cGdfYWRkaXUodTMyICoqYnVmLCB1bnNpZ25lZCBpbnQgcmVnMSwgdW5zaWduZWQgaW50IHJlZzIsIHVuc2lnbmVkIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTk2LVxcdFxcdGlmIChvZmYgXFx1MDAzZSAweDdmZmYpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjk3OlxcdFxcdFxcdHVhc21faV9sdWkoYnVmLCBHUFJfVDksIHVhc21fcmVsX2hpKG9mZikpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6OTg6XFx0XFx0XFx0dWFzbV9pX2FkZGl1KGJ1ZiwgR1BSX1Q5LCBHUFJfVDksIHVhc21fcmVsX2xvKG9mZikpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtOTktXFx0XFx0fSBlbHNlXFxuYXJjaC9taXBzL21tL3BhZ2UuYzoxMDA6XFx0XFx0XFx0dWFzbV9pX2FkZGl1KGJ1ZiwgR1BSX1Q5LCBHUFJfWkVSTywgb2ZmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjEwMTpcXHRcXHR1YXNtX2lfZGFkZHUoYnVmLCByZWcxLCByZWcyLCBHUFJfVDkpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMTAyLVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0xMDMtXFx0XFx0aWYgKG9mZiBcXHUwMDNlIDB4N2ZmZikge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MTA0OlxcdFxcdFxcdHVhc21faV9sdWkoYnVmLCBHUFJfVDksIHVhc21fcmVsX2hpKG9mZikpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MTA1OlxcdFxcdFxcdHVhc21faV9hZGRpdShidWYsIEdQUl9UOSwgR1BSX1Q5LCB1YXNtX3JlbF9sbyhvZmYpKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTEwNi1cXHRcXHRcXHRVQVNNX2lfQUREVShidWYsIHJlZzEsIHJlZzIsIEdQUl9UOSk7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jPTIyMT1zdGF0aWMgdm9pZCBidWlsZF9jbGVhcl9zdG9yZSh1MzIgKipidWYsIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIyMy1cXHRpZiAoY3B1X2hhc182NGJpdF9ncF9yZWdzIHx8IGNwdV9oYXNfNjRiaXRfemVyb19yZWcpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjIyNDpcXHRcXHR1YXNtX2lfc2QoYnVmLCBHUFJfWkVSTywgb2ZmLCBHUFJfQTApO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjI1LVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyMjY6XFx0XFx0dWFzbV9pX3N3KGJ1ZiwgR1BSX1pFUk8sIG9mZiwgR1BSX0EwKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIyNy1cXHR9XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jPTIzMD1zdGF0aWMgaW5saW5lIHZvaWQgYnVpbGRfY2xlYXJfcHJlZih1MzIgKipidWYsIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTIzNS1cXHRpZiAocHJlZl9iaWFzX2NsZWFyX3N0b3JlKSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyMzY6XFx0XFx0X3Vhc21faV9wcmVmKGJ1ZiwgcHJlZl9kc3RfbW9kZSwgcHJlZl9iaWFzX2NsZWFyX3N0b3JlICsgb2ZmLFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjM3LVxcdFxcdFxcdCAgICBHUFJfQTApO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yMzktXFx0XFx0aWYgKGNwdV9oYXNfY2FjaGVfY2RleF9zKSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDA6XFx0XFx0XFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfU0QsIG9mZiwgR1BSX0EwKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0MS1cXHRcXHR9IGVsc2UgaWYgKGNwdV9oYXNfY2FjaGVfY2RleF9wKSB7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0My1cXHRcXHRcXHQgICAgY3B1X2lzX3I0NjAwX3YxX3goKSkge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjQ0OlxcdFxcdFxcdFxcdHVhc21faV9ub3AoYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI0NTpcXHRcXHRcXHRcXHR1YXNtX2lfbm9wKGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNDY6XFx0XFx0XFx0XFx0dWFzbV9pX25vcChidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjQ3OlxcdFxcdFxcdFxcdHVhc21faV9ub3AoYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI0OC1cXHRcXHRcXHR9XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTI1MS1cXHRcXHRcXHQgICAgY3B1X2lzX3I0NjAwX3YyX3goKSlcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI1MjpcXHRcXHRcXHRcXHR1YXNtX2lfbHcoYnVmLCBHUFJfWkVSTywgR1BSX1pFUk8sIEdQUl9BVCk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yNTMtXFxuYXJjaC9taXBzL21tL3BhZ2UuYzoyNTQ6XFx0XFx0XFx0dWFzbV9pX2NhY2hlKGJ1ZiwgQ3JlYXRlX0RpcnR5X0V4Y2xfRCwgb2ZmLCBHUFJfQTApO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjU1LVxcdFxcdH1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM9MjY0PXZvaWQgYnVpbGRfY2xlYXJfcGFnZSh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yNjctXFx0dTMyICpidWYgPSBcXHUwMDI2X19jbGVhcl9wYWdlX3N0YXJ0O1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjY4OlxcdHN0cnVjdCB1YXNtX2xhYmVsICpsID0gbGFiZWxzO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MjY5OlxcdHN0cnVjdCB1YXNtX3JlbG9jICpyID0gcmVsb2NzO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjcwLVxcdGludCBpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTMtXFx0ZWxzZVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Mjk0OlxcdFxcdHVhc21faV9vcmkoXFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIG9mZik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTUtXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0yOTYtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1dBUl9SNDYwMF9WMl9ISVRfQ0FDSEVPUCkgXFx1MDAyNlxcdTAwMjYgY3B1X2lzX3I0NjAwX3YyX3goKSlcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjI5NzpcXHRcXHR1YXNtX2lfbHVpKFxcdTAwMjZidWYsIEdQUl9BVCwgdWFzbV9yZWxfaGkoMHhhMDAwMDAwMCkpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMjk4LVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMDQtXFx0fVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzA1OlxcdHVhc21fbF9jbGVhcl9wcmVmKFxcdTAwMjZsLCBidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzA2LVxcdGRvIHtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE1LVxcdFxcdGlmIChvZmYgPT0gLWNsZWFyX3dvcmRfc2l6ZSlcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjMxNjpcXHRcXHRcXHR1YXNtX2lsX2JuZShcXHUwMDI2YnVmLCBcXHUwMDI2ciwgR1BSX0EwLCBHUFJfQTIsIGxhYmVsX2NsZWFyX3ByZWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzE3LVxcdFxcdGJ1aWxkX2NsZWFyX3N0b3JlKFxcdTAwMjZidWYsIG9mZik7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTMyMi1cXHRcXHRwZ19hZGRpdShcXHUwMDI2YnVmLCBHUFJfQTIsIEdQUl9BMCwgcHJlZl9iaWFzX2NsZWFyX3N0b3JlKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjMyMzpcXHRcXHR1YXNtX2xfY2xlYXJfbm9wcmVmKFxcdTAwMjZsLCBidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzI0LVxcdFxcdG9mZiA9IDA7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTMzMi1cXHRcXHRcXHRpZiAob2ZmID09IC1jbGVhcl93b3JkX3NpemUpXFxuYXJjaC9taXBzL21tL3BhZ2UuYzozMzM6XFx0XFx0XFx0XFx0dWFzbV9pbF9ibmUoXFx1MDAyNmJ1ZiwgXFx1MDAyNnIsIEdQUl9BMCwgR1BSX0EyLFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzM0LVxcdFxcdFxcdFxcdFxcdCAgICBsYWJlbF9jbGVhcl9ub3ByZWYpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zMzktXFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNDA6XFx0dWFzbV9pX2pyKFxcdTAwMjZidWYsIEdQUl9SQSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNDE6XFx0dWFzbV9pX25vcChcXHUwMDI2YnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM0Mi1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzQ0LVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzQ1OlxcdHVhc21fcmVzb2x2ZV9yZWxvY3MocmVsb2NzLCBsYWJlbHMpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzQ2LVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz0zNTc9c3RhdGljIHZvaWQgYnVpbGRfY29weV9sb2FkKHUzMiAqKmJ1ZiwgaW50IHJlZywgaW50IG9mZilcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzU5LVxcdGlmIChjcHVfaGFzXzY0Yml0X2dwX3JlZ3MpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM2MDpcXHRcXHR1YXNtX2lfbGQoYnVmLCByZWcsIG9mZiwgR1BSX0ExKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM2MS1cXHR9IGVsc2Uge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzYyOlxcdFxcdHVhc21faV9sdyhidWYsIHJlZywgb2ZmLCBHUFJfQTEpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzYzLVxcdH1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM9MzY2PXN0YXRpYyB2b2lkIGJ1aWxkX2NvcHlfc3RvcmUodTMyICoqYnVmLCBpbnQgcmVnLCBpbnQgb2ZmKVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNjgtXFx0aWYgKGNwdV9oYXNfNjRiaXRfZ3BfcmVncykge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzY5OlxcdFxcdHVhc21faV9zZChidWYsIHJlZywgb2ZmLCBHUFJfQTApO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzcwLVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzozNzE6XFx0XFx0dWFzbV9pX3N3KGJ1ZiwgcmVnLCBvZmYsIEdQUl9BMCk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zNzItXFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz0zNzU9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NvcHlfbG9hZF9wcmVmKHUzMiAqKmJ1ZiwgaW50IG9mZilcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzgwLVxcdGlmIChwcmVmX2JpYXNfY29weV9sb2FkKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6MzgxOlxcdFxcdF91YXNtX2lfcHJlZihidWYsIHByZWZfc3JjX21vZGUsIHByZWZfYmlhc19jb3B5X2xvYWQgKyBvZmYsIEdQUl9BMSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zODItfVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYz0zODQ9c3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX2NvcHlfc3RvcmVfcHJlZih1MzIgKipidWYsIGludCBvZmYpXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM4OS1cXHRpZiAocHJlZl9iaWFzX2NvcHlfc3RvcmUpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5MDpcXHRcXHRfdWFzbV9pX3ByZWYoYnVmLCBwcmVmX2RzdF9tb2RlLCBwcmVmX2JpYXNfY29weV9zdG9yZSArIG9mZixcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTM5MS1cXHRcXHRcXHQgICAgR1BSX0EwKTtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtMzkzLVxcdFxcdGlmIChjcHVfaGFzX2NhY2hlX2NkZXhfcykge1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6Mzk0OlxcdFxcdFxcdHVhc21faV9jYWNoZShidWYsIENyZWF0ZV9EaXJ0eV9FeGNsX1NELCBvZmYsIEdQUl9BMCk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zOTUtXFx0XFx0fSBlbHNlIGlmIChjcHVfaGFzX2NhY2hlX2NkZXhfcCkge1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy0zOTctXFx0XFx0XFx0ICAgIGNwdV9pc19yNDYwMF92MV94KCkpIHtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjM5ODpcXHRcXHRcXHRcXHR1YXNtX2lfbm9wKGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzozOTk6XFx0XFx0XFx0XFx0dWFzbV9pX25vcChidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDAwOlxcdFxcdFxcdFxcdHVhc21faV9ub3AoYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjQwMTpcXHRcXHRcXHRcXHR1YXNtX2lfbm9wKGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MDItXFx0XFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MDUtXFx0XFx0XFx0ICAgIGNwdV9pc19yNDYwMF92Ml94KCkpXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MDY6XFx0XFx0XFx0XFx0dWFzbV9pX2x3KGJ1ZiwgR1BSX1pFUk8sIEdQUl9aRVJPLCBHUFJfQVQpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDA3LVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDA4OlxcdFxcdFxcdHVhc21faV9jYWNoZShidWYsIENyZWF0ZV9EaXJ0eV9FeGNsX0QsIG9mZiwgR1BSX0EwKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQwOS1cXHRcXHR9XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jPTQxMz12b2lkIGJ1aWxkX2NvcHlfcGFnZSh2b2lkKVxcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MTYtXFx0dTMyICpidWYgPSBcXHUwMDI2X19jb3B5X3BhZ2Vfc3RhcnQ7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MTc6XFx0c3RydWN0IHVhc21fbGFiZWwgKmwgPSBsYWJlbHM7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0MTg6XFx0c3RydWN0IHVhc21fcmVsb2MgKnIgPSByZWxvY3M7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy00MTktXFx0aW50IGk7XFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0Ni1cXHRlbHNlXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0NDc6XFx0XFx0dWFzbV9pX29yaShcXHUwMDI2YnVmLCBHUFJfQTIsIEdQUl9BMCwgb2ZmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0OC1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ0OS1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfV0FSX1I0NjAwX1YyX0hJVF9DQUNIRU9QKSBcXHUwMDI2XFx1MDAyNiBjcHVfaXNfcjQ2MDBfdjJfeCgpKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NDUwOlxcdFxcdHVhc21faV9sdWkoXFx1MDAyNmJ1ZiwgR1BSX0FULCB1YXNtX3JlbF9oaSgweGEwMDAwMDAwKSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy00NTEtXFxuLS1cXG5hcmNoL21pcHMvbW0vcGFnZS5jLTQ2My1cXHR9XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo0NjQ6XFx0dWFzbV9sX2NvcHlfcHJlZl9ib3RoKFxcdTAwMjZsLCBidWYpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNDY1LVxcdGRvIHtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTAzLVxcdFxcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTA0OlxcdFxcdFxcdHVhc21faWxfYm5lKFxcdTAwMjZidWYsIFxcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCwgbGFiZWxfY29weV9wcmVmX2JvdGgpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTA1LVxcdFxcdGJ1aWxkX2NvcHlfc3RvcmUoXFx1MDAyNmJ1ZiwgR1BSX1QzLCBvZmYgKyAzICogY29weV93b3JkX3NpemUpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01MTEtXFx0XFx0XFx0IHByZWZfYmlhc19jb3B5X2xvYWQgLSBwcmVmX2JpYXNfY29weV9zdG9yZSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1MTI6XFx0XFx0dWFzbV9sX2NvcHlfcHJlZl9zdG9yZShcXHUwMDI2bCwgYnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTUxMy1cXHRcXHRvZmYgPSAwO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NDQtXFx0XFx0XFx0aWYgKG9mZiA9PSAtKDQgKiBjb3B5X3dvcmRfc2l6ZSkpXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1NDU6XFx0XFx0XFx0XFx0dWFzbV9pbF9ibmUoXFx1MDAyNmJ1ZiwgXFx1MDAyNnIsIEdQUl9BMiwgR1BSX0EwLFxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTQ2LVxcdFxcdFxcdFxcdFxcdCAgICBsYWJlbF9jb3B5X3ByZWZfc3RvcmUpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NTMtXFx0XFx0cGdfYWRkaXUoXFx1MDAyNmJ1ZiwgR1BSX0EyLCBHUFJfQTAsIHByZWZfYmlhc19jb3B5X3N0b3JlKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jOjU1NDpcXHRcXHR1YXNtX2xfY29weV9ub3ByZWYoXFx1MDAyNmwsIGJ1Zik7XFxuYXJjaC9taXBzL21tL3BhZ2UuYy01NTUtXFx0XFx0b2ZmID0gMDtcXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTc4LVxcdFxcdFxcdGlmIChvZmYgPT0gLSg0ICogY29weV93b3JkX3NpemUpKVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTc5OlxcdFxcdFxcdFxcdHVhc21faWxfYm5lKFxcdTAwMjZidWYsIFxcdTAwMjZyLCBHUFJfQTIsIEdQUl9BMCxcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU4MC1cXHRcXHRcXHRcXHRcXHQgICAgbGFiZWxfY29weV9ub3ByZWYpO1xcbi0tXFxuYXJjaC9taXBzL21tL3BhZ2UuYy01ODUtXFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODY6XFx0dWFzbV9pX2pyKFxcdTAwMjZidWYsIEdQUl9SQSk7XFxuYXJjaC9taXBzL21tL3BhZ2UuYzo1ODc6XFx0dWFzbV9pX25vcChcXHUwMDI2YnVmKTtcXG5hcmNoL21pcHMvbW0vcGFnZS5jLTU4OC1cXG4tLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTkwLVxcbmFyY2gvbWlwcy9tbS9wYWdlLmM6NTkxOlxcdHVhc21fcmVzb2x2ZV9yZWxvY3MocmVsb2NzLCBsYWJlbHMpO1xcbmFyY2gvbWlwcy9tbS9wYWdlLmMtNTkyLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMzctI2luY2x1ZGUgXFx1MDAzY2FzbS9yZWdkZWYuaFxcdTAwM2VcXG5hcmNoL21pcHMvbW0vdGxiZXguYzozODojaW5jbHVkZSBcXHUwMDNjYXNtL3Vhc20uaFxcdTAwM2VcXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zOS0jaW5jbHVkZSBcXHUwMDNjYXNtL3NldHVwLmhcXHUwMDNlXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYz0yMDQ9c3RhdGljIGludCBoYXphcmRfaW5zdGFuY2U7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA1LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjIwNjpzdGF0aWMgdm9pZCB1YXNtX2JnZXpsX2hhemFyZCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIGludCBpbnN0YW5jZSlcXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMDcte1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjA5LVxcdGNhc2UgMCAuLi4gNzpcXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyMTA6XFx0XFx0dWFzbV9pbF9iZ2V6bChwLCByLCAwLCBsYWJlbF90bGJ3X2hhemFyZF8wICsgaW5zdGFuY2UpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIxMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy0yMTYtXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjE3OnN0YXRpYyB2b2lkIHVhc21fYmdlemxfbGFiZWwoc3RydWN0IHVhc21fbGFiZWwgKipsLCB1MzIgKipwLCBpbnQgaW5zdGFuY2UpXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjE4LXtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTIyMC1cXHRjYXNlIDAgLi4uIDc6XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6MjIxOlxcdFxcdHVhc21fYnVpbGRfbGFiZWwobCwgKnAsIGxhYmVsX3RsYndfaGF6YXJkXzAgKyBpbnN0YW5jZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMjIyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9Mjk1PXN0YXRpYyB1MzIgdGxiX2hhbmRsZXJbMTI4XTtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTI5Ny0vKiBzaW1wbHkgYXNzdW1lIHdvcnN0IGNhc2Ugc2l6ZSBmb3IgbGFiZWxzIGFuZCByZWxvY3MgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzoyOTg6c3RhdGljIHN0cnVjdCB1YXNtX2xhYmVsIGxhYmVsc1sxMjhdO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjI5OTpzdGF0aWMgc3RydWN0IHVhc21fcmVsb2MgcmVsb2NzWzEyOF07XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtMzAwLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9MzY5PXN0YXRpYyB2b2lkIGJ1aWxkX3Jlc3RvcmVfd29ya19yZWdpc3RlcnModTMyICoqcClcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3MS1cXHRpZiAoc2NyYXRjaF9yZWcgXFx1MDAzZT0gMCkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM3MjpcXHRcXHR1YXNtX2lfZWhiKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTM3My1cXHRcXHRVQVNNX2lfTUZDMChwLCAxLCBjMF9rc2NyYXRjaCgpLCBzY3JhdGNoX3JlZyk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYz0zODk9c3RhdGljIHZvaWQgYnVpbGRfcjMwMDBfdGxiX3JlZmlsbF9oYW5kbGVyKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy0zOTYtXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Mzk3OlxcdHVhc21faV9tZmMwKFxcdTAwMjZwLCBHUFJfSzAsIEMwX0JBRFZBRERSKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzozOTg6XFx0dWFzbV9pX2x1aShcXHUwMDI2cCwgR1BSX0sxLCB1YXNtX3JlbF9oaShwZ2RjKSk7IC8qIGNwMCBkZWxheSAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjM5OTpcXHR1YXNtX2lfbHcoXFx1MDAyNnAsIEdQUl9LMSwgdWFzbV9yZWxfbG8ocGdkYyksIEdQUl9LMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDAwOlxcdHVhc21faV9zcmwoXFx1MDAyNnAsIEdQUl9LMCwgR1BSX0swLCAyMik7IC8qIGxvYWQgZGVsYXkgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDE6XFx0dWFzbV9pX3NsbChcXHUwMDI2cCwgR1BSX0swLCBHUFJfSzAsIDIpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwMjpcXHR1YXNtX2lfYWRkdShcXHUwMDI2cCwgR1BSX0sxLCBHUFJfSzEsIEdQUl9LMCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDAzOlxcdHVhc21faV9tZmMwKFxcdTAwMjZwLCBHUFJfSzAsIEMwX0NPTlRFWFQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQwNDpcXHR1YXNtX2lfbHcoXFx1MDAyNnAsIEdQUl9LMSwgMCwgR1BSX0sxKTsgLyogY3AwIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA1OlxcdHVhc21faV9hbmRpKFxcdTAwMjZwLCBHUFJfSzAsIEdQUl9LMCwgMHhmZmMpOyAvKiBsb2FkIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA2OlxcdHVhc21faV9hZGR1KFxcdTAwMjZwLCBHUFJfSzEsIEdQUl9LMSwgR1BSX0swKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MDc6XFx0dWFzbV9pX2x3KFxcdTAwMjZwLCBHUFJfSzAsIDAsIEdQUl9LMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA4OlxcdHVhc21faV9ub3AoXFx1MDAyNnApOyAvKiBsb2FkIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDA5OlxcdHVhc21faV9tdGMwKFxcdTAwMjZwLCBHUFJfSzAsIEMwX0VOVFJZTE8wKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0MTA6XFx0dWFzbV9pX21mYzAoXFx1MDAyNnAsIEdQUl9LMSwgQzBfRVBDKTsgLyogY3AwIGRlbGF5ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDExOlxcdHVhc21faV90bGJ3cihcXHUwMDI2cCk7IC8qIGNwMCBkZWxheSAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQxMjpcXHR1YXNtX2lfanIoXFx1MDAyNnAsIEdQUl9LMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDEzOlxcdHVhc21faV9yZmUoXFx1MDAyNnApOyAvKiBicmFuY2ggZGVsYXkgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00MTQtXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYz00NTg9c3RhdGljIHZvaWQgX19tYXliZV91bnVzZWQgYnVpbGRfdGxiX3Byb2JlX2VudHJ5KHUzMiAqKnApXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NjUtXFx0Y2FzZSBDUFVfTkVWQURBOlxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ2NjpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ2NzpcXHRcXHR1YXNtX2lfdGxicChwKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NzAtXFx0ZGVmYXVsdDpcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo0NzE6XFx0XFx0dWFzbV9pX3RsYnAocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDcyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDc1LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ3Njp2b2lkIGJ1aWxkX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDc3OlxcdFxcdFxcdCAgIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcXG5hcmNoL21pcHMvbW0vdGxiZXguYy00NzgtXFx0XFx0XFx0ICAgZW51bSB0bGJfd3JpdGVfZW50cnkgd21vZGUpXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy00ODItXFx0c3dpdGNoICh3bW9kZSkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ4MzpcXHRjYXNlIHRsYl9yYW5kb206IHRsYncgPSB1YXNtX2lfdGxid3I7IGJyZWFrO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjQ4NDpcXHRjYXNlIHRsYl9pbmRleGVkOiB0bGJ3ID0gdWFzbV9pX3RsYndpOyBicmVhaztcXG5hcmNoL21pcHMvbW0vdGxiZXguYy00ODUtXFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDg4LVxcdFxcdGlmIChjcHVfaGFzX21pcHNfcjJfZXhlY19oYXphcmQpXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NDg5OlxcdFxcdFxcdHVhc21faV9laGIocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNDkwLVxcdFxcdHRsYncocCk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDQtXFx0XFx0ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA1OlxcdFxcdHVhc21fYmdlemxfaGF6YXJkKHAsIHIsIGhhemFyZF9pbnN0YW5jZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTA2LVxcdFxcdHRsYncocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA3OlxcdFxcdHVhc21fYmdlemxfbGFiZWwobCwgcCwgaGF6YXJkX2luc3RhbmNlKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MDgtXFx0XFx0aGF6YXJkX2luc3RhbmNlKys7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTA5OlxcdFxcdHVhc21faV9ub3AocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTEzLVxcdGNhc2UgQ1BVX1I0NzAwOlxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjUxNDpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUxNS1cXHRcXHR0bGJ3KHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjUxNjpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUxNy1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUyMC1cXHRjYXNlIENQVV9ORVZBREE6XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTIxOlxcdFxcdHVhc21faV9ub3AocCk7IC8qIFFFRCBzcGVjaWZpZXMgMiBub3BzIGhhemFyZCAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjUyMjpcXHRcXHR1YXNtX2lfbm9wKHApOyAvKiBRRUQgc3BlY2lmaWVzIDIgbm9wcyBoYXphcmQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01MjMtXFx0XFx0dGxidyhwKTtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTUyOS1cXHRjYXNlIENQVV9QUjQ0NTA6XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTMwOlxcdFxcdHVhc21faV9ub3AocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTMxLVxcdFxcdHRsYncocCk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NTUtXFx0XFx0aWYgKG00a2NfdGxicF93YXIoKSlcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo1NTY6XFx0XFx0XFx0dWFzbV9pX25vcChwKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NTctXFx0XFx0ZmFsbHRocm91Z2g7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy01NjItXFx0Y2FzZSBDUFVfUk03MDAwOlxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2MzpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NDpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NTpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjU2NjpcXHRcXHR1YXNtX2lfbm9wKHApO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTU2Ny1cXHRcXHR0bGJ3KHApO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTcxLVxcdFxcdHRsYncocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NTcyOlxcdFxcdHVhc21faV9ub3AocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNTczLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9NTgzPXN0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkIGJ1aWxkX2NvbnZlcnRfcHRlX3RvX2VudHJ5bG8odTMyICoqcCxcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYwMC0jaWZkZWYgQ09ORklHX1BIWVNfQUREUl9UXzY0QklUXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjAxOlxcdFxcdHVhc21faV9kc3JsX3NhZmUocCwgcmVnLCByZWcsIGlsb2cyKF9QQUdFX0dMT0JBTCkpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTYwMi0jZWxzZVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjA5LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYxMDpzdGF0aWMgdm9pZCBidWlsZF9yZXN0b3JlX3BhZ2VtYXNrKHUzMiAqKnAsIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTEtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHRtcCwgZW51bSBsYWJlbF9pZCBsaWQsXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MTktXFx0XFx0aWYgKHNjcmF0Y2hfcmVnIFxcdTAwM2U9IDApXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjIwOlxcdFxcdFxcdHVhc21faV9laGIocCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjIxLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjIzLVxcdFxcdGlmIChQTV9ERUZBVUxUX01BU0sgXFx1MDAzZVxcdTAwM2UgMTYpIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MjQ6XFx0XFx0XFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDNlXFx1MDAzZSAxNik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjI1OlxcdFxcdFxcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDI2IDB4ZmZmZik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjI2OlxcdFxcdFxcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYyNzpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MjgtXFx0XFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2Mjk6XFx0XFx0XFx0dWFzbV9pX29yaShwLCB0bXAsIDAsIFBNX0RFRkFVTFRfTUFTSyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjMwOlxcdFxcdFxcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzMTpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MzItXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2MzM6XFx0XFx0XFx0dWFzbV9pX210YzAocCwgMCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjYzNDpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02MzUtXFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjQyLVxcdFxcdGlmIChQTV9ERUZBVUxUX01BU0sgXFx1MDAzZVxcdTAwM2UgMTYpIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NDM6XFx0XFx0XFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDNlXFx1MDAzZSAxNik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ0OlxcdFxcdFxcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0RFRkFVTFRfTUFTSyBcXHUwMDI2IDB4ZmZmZik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ1OlxcdFxcdFxcdHVhc21faWxfYihwLCByLCBsaWQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY0NjpcXHRcXHRcXHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NDctXFx0XFx0fSBlbHNlIGlmIChQTV9ERUZBVUxUX01BU0spIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NDg6XFx0XFx0XFx0dWFzbV9pX29yaShwLCB0bXAsIDAsIFBNX0RFRkFVTFRfTUFTSyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjQ5OlxcdFxcdFxcdHVhc21faWxfYihwLCByLCBsaWQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1MDpcXHRcXHRcXHR1YXNtX2lfbXRjMChwLCB0bXAsIEMwX1BBR0VNQVNLKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTEtXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NTI6XFx0XFx0XFx0dWFzbV9pbF9iKHAsIHIsIGxpZCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjUzOlxcdFxcdFxcdHVhc21faV9tdGMwKHAsIDAsIEMwX1BBR0VNQVNLKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02NTQtXFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjU3LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY1ODpzdGF0aWMgdm9pZCBidWlsZF9odWdlX3RsYl93cml0ZV9lbnRyeSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjU5OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjYwLVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgdG1wLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjY0LVxcdC8qIFNldCBodWdlIHBhZ2UgdGxiIGVudHJ5IHNpemUgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2NjU6XFx0dWFzbV9pX2x1aShwLCB0bXAsIFBNX0hVR0VfTUFTSyBcXHUwMDNlXFx1MDAzZSAxNik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjY2OlxcdHVhc21faV9vcmkocCwgdG1wLCB0bXAsIFBNX0hVR0VfTUFTSyBcXHUwMDI2IDB4ZmZmZik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NjY3OlxcdHVhc21faV9tdGMwKHAsIHRtcCwgQzBfUEFHRU1BU0spO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY2OC1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jPTY3Nz1zdGF0aWMgdm9pZFxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY3ODpidWlsZF9pc19odWdlX3B0ZSh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsIHVuc2lnbmVkIGludCB0bXAsXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjc5LVxcdFxcdCAgdW5zaWduZWQgaW50IHBtZCwgaW50IGxpZClcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTY4Mi1cXHRpZiAodXNlX2JiaXRfaW5zbnMoKSkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjY4MzpcXHRcXHR1YXNtX2lsX2JiaXQxKHAsIHIsIHRtcCwgaWxvZzIoX1BBR0VfSFVHRSksIGxpZCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNjg0LVxcdH0gZWxzZSB7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Njg1OlxcdFxcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCBfUEFHRV9IVUdFKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo2ODY6XFx0XFx0dWFzbV9pbF9ibmV6KHAsIHIsIHRtcCwgbGlkKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy02ODctXFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9NjkwPXN0YXRpYyB2b2lkIGJ1aWxkX2h1Z2VfdXBkYXRlX2VudHJpZXModTMyICoqcCwgdW5zaWduZWQgaW50IHB0ZSxcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTcwNy1cXHRpZiAoIXNtYWxsX3NlcXVlbmNlKVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjcwODpcXHRcXHR1YXNtX2lfbHVpKHAsIHRtcCwgSFBBR0VfU0laRSBcXHUwMDNlXFx1MDAzZSAoNyArIDE2KSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzA5LVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzIwLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjcyMTpzdGF0aWMgdm9pZCBidWlsZF9odWdlX2hhbmRsZXJfdGFpbCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9yZWxvYyAqKnIsXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NzIyOlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzIzLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcHRlLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzI4LVxcdFVBU01faV9TQyhwLCBwdGUsIDAsIHB0cik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NzI5OlxcdHVhc21faWxfYmVxeihwLCByLCBwdGUsIGxhYmVsX3RsYl9odWdlX3VwZGF0ZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzMwLVxcdFVBU01faV9MVyhwLCBwdGUsIDAsIHB0cik7IC8qIE5lZWRlZCBiZWNhdXNlIFNDIGtpbGxlZCBvdXIgUFRFICovXFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy03MzctXFx0XFx0VUFTTV9pX01GQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3Mzg6XFx0XFx0dWFzbV9pX29yaShwLCBwdHIsIHB0ciwgTUlQU19FTlRSWUhJX0VISU5WKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy03MzktXFx0XFx0VUFTTV9pX01UQzAocCwgcHRyLCBDMF9FTlRSWUhJKTtcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc0MS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3NDI6XFx0XFx0dWFzbV9pX3hvcmkocCwgcHRyLCBwdHIsIE1JUFNfRU5UUllISV9FSElOVik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtNzQzLVxcdFxcdFVBU01faV9NVEMwKHAsIHB0ciwgQzBfRU5UUllISSk7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NTktICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6NzYwOnZvaWQgYnVpbGRfZ2V0X3BtZGU2NCh1MzIgKipwLCBzdHJ1Y3QgdWFzbV9sYWJlbCAqKmwsIHN0cnVjdCB1YXNtX3JlbG9jICoqcixcXG5hcmNoL21pcHMvbW0vdGxiZXguYy03NjEtXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHRtcCwgdW5zaWduZWQgaW50IHB0cilcXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc2OC1cXHQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3Njk6XFx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc3MC1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4Mi1cXHRcXHQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo3ODM6XFx0XFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHRtcCwgUEdESVJfU0hJRlQgKyBQR0RfVEFCTEVfT1JERVIgKyBQQUdFX1NISUZUIC0gMyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6Nzg0OlxcdFxcdHVhc21faWxfYm5leihwLCByLCBwdHIsIGxhYmVsX3ZtYWxsb2MpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4NS1cXHR9IGVsc2Uge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4NjpcXHRcXHR1YXNtX2lsX2JsdHoocCwgciwgdG1wLCBsYWJlbF92bWFsbG9jKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy03ODctXFx0fVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjc4ODpcXHQvKiBObyB1YXNtX2lfbm9wIG5lZWRlZCBoZXJlLCBzaW5jZSB0aGUgbmV4dCBpbnNuIGRvZXNuJ3QgdG91Y2ggVE1QLiAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTc4OS1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwMy1cXHRcXHQvKiBDbGVhciBsb3dlciAyMyBiaXRzIG9mIGNvbnRleHQuICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODA0OlxcdFxcdHVhc21faV9kaW5zKHAsIHB0ciwgMCwgMCwgMjMpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgwNS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MDYtXFx0XFx0LyogaW5zZXJ0IGJpdFs2Mzo1OV0gb2YgQ0FDX0JBU0UgaW50byBiaXRbMTE6Nl0gb2YgcHRyICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODA3OlxcdFxcdHVhc21faV9vcmkocCwgcHRyLCBwdHIsICgodTY0KShDQUNfQkFTRSkgXFx1MDAzZVxcdTAwM2UgNTMpKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MDg6XFx0XFx0dWFzbV9pX2Ryb3RyKHAsIHB0ciwgcHRyLCAxMSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODA5LSNlbGlmIGRlZmluZWQoQ09ORklHX1NNUClcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MTAtXFx0XFx0VUFTTV9pX0NQVUlEX01GQzAocCwgcHRyLCBTTVBfQ1BVSURfUkVHKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTE6XFx0XFx0dWFzbV9pX2Rzcmxfc2FmZShwLCBwdHIsIHB0ciwgU01QX0NQVUlEX1BUUlNISUZUKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MTItXFx0XFx0VUFTTV9pX0xBX21vc3RseShwLCB0bXAsIHBnZGMpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgxMzpcXHRcXHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODE0OlxcdFxcdHVhc21faV9kbWZjMChwLCB0bXAsIEMwX0JBRFZBRERSKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTU6XFx0XFx0dWFzbV9pX2xkKHAsIHB0ciwgdWFzbV9yZWxfbG8ocGdkYyksIHB0cik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODE2LSNlbHNlXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODE3LVxcdFxcdFVBU01faV9MQV9tb3N0bHkocCwgcHRyLCBwZ2RjKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MTg6XFx0XFx0dWFzbV9pX2xkKHAsIHB0ciwgdWFzbV9yZWxfbG8ocGdkYyksIHB0cik7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODE5LSNlbmRpZlxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODIxLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgyMjpcXHR1YXNtX2xfdm1hbGxvY19kb25lKGwsICpwKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MjMtXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODI0LVxcdC8qIGdldCBwZ2Qgb2Zmc2V0IGluIGJ5dGVzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODI1OlxcdHVhc21faV9kc3JsX3NhZmUocCwgdG1wLCB0bXAsIFBHRElSX1NISUZUIC0gMyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODI2LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgyNzpcXHR1YXNtX2lfYW5kaShwLCB0bXAsIHRtcCwgKFBUUlNfUEVSX1BHRCAtIDEpXFx1MDAzY1xcdTAwM2MzKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4Mjg6XFx0dWFzbV9pX2RhZGR1KHAsIHB0ciwgcHRyLCB0bXApOyAvKiBhZGQgaW4gcGdkIG9mZnNldCAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTgyOS0jaWZuZGVmIF9fUEFHRVRBQkxFX1BVRF9GT0xERURcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MzA6XFx0dWFzbV9pX2RtZmMwKHAsIHRtcCwgQzBfQkFEVkFERFIpOyAvKiBnZXQgZmF1bHRpbmcgYWRkcmVzcyAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzMTpcXHR1YXNtX2lfbGQocCwgcHRyLCAwLCBwdHIpOyAvKiBnZXQgcHVkIHBvaW50ZXIgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4MzI6XFx0dWFzbV9pX2Rzcmxfc2FmZShwLCB0bXAsIHRtcCwgUFVEX1NISUZUIC0gMyk7IC8qIGdldCBwdWQgb2Zmc2V0IGluIGJ5dGVzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODMzOlxcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCAoUFRSU19QRVJfUFVEIC0gMSkgXFx1MDAzY1xcdTAwM2MgMyk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM0OlxcdHVhc21faV9kYWRkdShwLCBwdHIsIHB0ciwgdG1wKTsgLyogYWRkIGluIHB1ZCBvZmZzZXQgKi9cXG5hcmNoL21pcHMvbW0vdGxiZXguYy04MzUtI2VuZGlmXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODM2LSNpZm5kZWYgX19QQUdFVEFCTEVfUE1EX0ZPTERFRFxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzNzpcXHR1YXNtX2lfZG1mYzAocCwgdG1wLCBDMF9CQURWQUREUik7IC8qIGdldCBmYXVsdGluZyBhZGRyZXNzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODM4OlxcdHVhc21faV9sZChwLCBwdHIsIDAsIHB0cik7IC8qIGdldCBwbWQgcG9pbnRlciAqL1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjgzOTpcXHR1YXNtX2lfZHNybF9zYWZlKHAsIHRtcCwgdG1wLCBQTURfU0hJRlQtMyk7IC8qIGdldCBwbWQgb2Zmc2V0IGluIGJ5dGVzICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODQwOlxcdHVhc21faV9hbmRpKHAsIHRtcCwgdG1wLCAoUFRSU19QRVJfUE1EIC0gMSlcXHUwMDNjXFx1MDAzYzMpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg0MTpcXHR1YXNtX2lfZGFkZHUocCwgcHRyLCBwdHIsIHRtcCk7IC8qIGFkZCBpbiBwbWQgb2Zmc2V0ICovXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODQyLSNlbmRpZlxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmM9ODUwPXN0YXRpYyB2b2lkXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODUxOmJ1aWxkX2dldF9wZ2Rfdm1hbGxvYzY0KHUzMiAqKnAsIHN0cnVjdCB1YXNtX2xhYmVsICoqbCwgc3RydWN0IHVhc21fcmVsb2MgKipyLFxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg1Mi1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgYnZhZGRyLCB1bnNpZ25lZCBpbnQgcHRyLFxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODU4LVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg1OTpcXHRzaW5nbGVfaW5zbl9zd3BkID0gdWFzbV9pbl9jb21wYXRfc3BhY2VfcChzd3BkKSBcXHUwMDI2XFx1MDAyNiAhdWFzbV9yZWxfbG8oc3dwZCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODYwLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg2MTpcXHR1YXNtX2xfdm1hbGxvYyhsLCAqcCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODYyLVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODY0LVxcdFxcdGlmIChzaW5nbGVfaW5zbl9zd3BkKSB7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODY1OlxcdFxcdFxcdHVhc21faWxfYmx0eihwLCByLCBidmFkZHIsIGxhYmVsX3ZtYWxsb2NfZG9uZSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODY2OlxcdFxcdFxcdHVhc21faV9sdWkocCwgcHRyLCB1YXNtX3JlbF9oaShzd3BkKSk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODY3LVxcdFxcdFxcdGRpZF92bWFsbG9jX2JyYW5jaCA9IDE7XFxuLS1cXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NjktXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzA6XFx0XFx0XFx0dWFzbV9pbF9iZ2V6KHAsIHIsIGJ2YWRkciwgbGFiZWxfbGFyZ2Vfc2VnYml0c19mYXVsdCk7XFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODcxLVxcdFxcdH1cXG4tLVxcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg3NC1cXHRcXHRpZiAoc2luZ2xlX2luc25fc3dwZCkge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg3NTpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGFiZWxfdm1hbGxvY19kb25lKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4NzY6XFx0XFx0XFx0dWFzbV9pX2x1aShwLCBwdHIsIHVhc21fcmVsX2hpKHN3cGQpKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzctXFx0XFx0fSBlbHNlIHtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04NzgtXFx0XFx0XFx0VUFTTV9pX0xBX21vc3RseShwLCBwdHIsIHN3cGQpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg3OTpcXHRcXHRcXHR1YXNtX2lsX2IocCwgciwgbGFiZWxfdm1hbGxvY19kb25lKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYzo4ODA6XFx0XFx0XFx0aWYgKHVhc21faW5fY29tcGF0X3NwYWNlX3Aoc3dwZCkpXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODgxOlxcdFxcdFxcdFxcdHVhc21faV9hZGRpdShwLCBwdHIsIHB0ciwgdWFzbV9yZWxfbG8oc3dwZCkpO1xcbmFyY2gvbWlwcy9tbS90bGJleC5jLTg4Mi1cXHRcXHRcXHRlbHNlXFxuYXJjaC9taXBzL21tL3RsYmV4LmM6ODgzOlxcdFxcdFxcdFxcdHVhc21faV9kYWRkaXUocCwgcHRyLCBwdHIsIHVhc21fcmVsX2xvKHN3cGQpKTtcXG5hcmNoL21pcHMvbW0vdGxiZXguYy04ODQtXFx0XFx0fVxcbi0tXFxuYXJjaC9taXBzL21tL3RsYmV4LmMtODg2LVxcdGlmIChtb2RlICE9IG5vdF9yZWZpbGwgXFx1MDAyNlxcdTAwMjYgY2hlY2tfZm9yX2hpZ2hfc2VnYml0cykge1xcbmFyY2gvbWlwcy9tbS90bGJleC5jOjg4NzpcXHRcXHR1YXNtX2xfbGFyZ2Vfc2VnYml0c19mYXVsdChsLCAqcCk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjM4LjcwMTU2MTQ3NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjQ3NDg2NDYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTUlQUyBCUEYgSklUIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBzdXBwb3J0IGZvciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBzaWduZWQgb25lcywgd2l0aGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoZSBgdWFzbWAgbWljcm8tYXNzZW1ibGVyIGlzIHRoZSBrZXksIGFuZCBpdCdzIGJlaW5nIHVwZGF0ZWQgdG8gaGFuZGxlIHRoZSBuZXcgYGRkaXZgLCBgZGRpdl9yNmAsIGBkaXZgLCBgZGl2X3I2YCwgYGRtb2RgLCBhbmQgYG1vZGAgaW5zdHJ1Y3Rpb25zLiBUaGVzZSBhcmUgZXNzZW50aWFsIGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMsIG9mIGNvdXJzZSwgY29udHJvbGxlZCBieSB0aGUgYENPTkZJR19CUEZfSklUYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR29vZCwgc28gYENPTkZJR19CUEZfSklUYCBpcyBkZWZpbml0ZWx5IHRoZSBlbmFibGluZyBjb25maWcuIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgYENPTkZJR19NSVBTMzJfTzMyYCBvciBhbnl0aGluZyBsaWtlIHRoYXQuXG5cblNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIGJvdGggYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AsIHRoaXMgYXBwbGllcyB0byBib3RoIDMyLWJpdCBhbmQgNjQtYml0IE1JUFMgYXJjaGl0ZWN0dXJlcy4gU28sIEkgd2lsbCBqdXN0IHNldCB0aGUgY29uZmlnIHRvIGBCUEZfSklUYCB3aGljaCBpcyB0aGUgY29ycmVjdCBvbmUuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGtleSBzeW1ib2xzLiBgYnBmX2ludF9qaXRfY29tcGlsZWAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBCUEYgSklULCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGVuIHdlIGhhdmUgYGJ1aWxkX2luc25gLCB0aGUgd29ya2hvcnNlIGZ1bmN0aW9uIHRyYW5zbGF0aW5nIEJQRiBpbnN0cnVjdGlvbnMgdG8gTUlQUyBjb2RlLiBBbHNvLCBmdW5jdGlvbnMgbGlrZSBgZW1pdF9hbHVfcmAsIGBlbWl0X2RpdmAsIGBlbWl0X21vZGAsIGBlbWl0X2RpdjY0YCwgYGVtaXRfbW9kNjRgIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQuXG5cbkludGVyZXN0aW5nbHksIGBqaXRfc21vZDY0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIHVzdWFsbHkgYSByZWQgZmxhZyB3aGVuIGZ1enppbmcsIGJlY2F1c2UgaXQgbWVhbnMgaXQgY2FuJ3QgYmUgY2FsbGVkIGRpcmVjdGx5LiBCdXQsIGluIHRoaXMgY2FzZSwgaXRzIGFkZHJlc3MgaXMgKnRha2VuKiB2aWEgYSBmdW5jdGlvbiBwb2ludGVyOlxuXG5gYGBjXG5cdGNhc2UgQlBGX01PRDpcblx0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG5cdFx0YnJlYWs7XG5gYGBcblxuVGhhdCAqZm9yY2VzKiBpdCB0byBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIG1ha2luZyBpdCBhIHZpYWJsZSB0YXJnZXQuIEdvaW5nIHRvIGxvb2sgYXQgYGppdF9zbW9kNjRgIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLCBjb25maXJtZWQsIGl0J3MgdGhlcmUuIFNvIGBqaXRfc21vZDY0YCBpcyBhIGdvIVxuXG5gYnVpbGRfaW5zbmAgaXMgYW5vdGhlciBvYnZpb3VzIGNhbmRpZGF0ZSBiZWNhdXNlIGl0IGlzIGluIGJvdGggYC5jYCBmaWxlcywgc28gaWYgSSBwaWNrIGl0LCBpdCB3aWxsIHRyaWdnZXIgYm90aC4gSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBlbWl0X2FsdV9yYC5cblxuT2theSwgSSd2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBzb2xlIGNvbmZpZyBuZWVkZWQuXG5cblRoZXJlZm9yZSwgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOlxuLSBgYnBmX2ludF9qaXRfY29tcGlsZWBcbi0gYGJ1aWxkX2luc25gXG4tIGBqaXRfc21vZDY0YFxuLSBgZW1pdF9hbHVfcmBcblxuRW5hYmxlIGNvbmZpZzogYEJQRl9KSVRgXG5cbioqUmVhc29uaW5nOioqXG5cblRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSBieSBwcm92aWRpbmcgbmV3IHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIGNhcGFiaWxpdGllcyB0byB0aGUgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgaG93IGluc3RydWN0aW9ucyBhcmUgdHJhbnNsYXRlZCBhbmQgZXhlY3V0ZWQsIG1ha2luZyBpdCBhIGNyaXRpY2FsIGFyZWEgZm9yIGZ1enppbmcuXG5cbkdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBqaXRfc21vZDY0YCBpcyBzcGVjaWZpY2FsbHkgMzItYml0LiBJdCAqaXMqIGluIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgLiBPbiA2NC1iaXQsIGFzIHNlZW4gaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY2AsIGhhcmR3YXJlIGRpdmlzaW9uL21vZHVsbyBpbnN0cnVjdGlvbnMgYXJlIHVzZWQuIFNvIHllcywgYGppdF9zbW9kNjRgIGlzIG5lZWRlZCBmb3IgMzItYml0IGVtdWxhdGlvbiBvZiA2NC1iaXQgc2lnbmVkIG1vZHVsby5cblxuQWxsIHJpZ2h0LCB0aGF0IGNvdmVycyBpdC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxOSwiT3V0cHV0VG9rZW5zIjoxNTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjMzOjU1LjE3NjQyODE0NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDAzOTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnVpbGRfaW5zblwiLFxuICAgIFwiaml0X3Ntb2Q2NFwiLFxuICAgIFwiZW1pdF9hbHVfclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyBpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIgdG8gc3VwcG9ydCBzaWduZWQgZGl2L21vZCBpbnN0cnVjdGlvbnMgYW5kIHVwZGF0ZXMgdGhlIEJQRiBKSVQgY29tcGlsZXIgdG8gdXNlIHRoZW0gd2hlbiB0cmFuc2xhdGluZyBCUEZfRElWIGFuZCBCUEZfTU9EIGluc3RydWN0aW9ucyB3aXRoIHRoZSBzaWduZWQgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIEpJVCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJ1aWxkX2luc25cIixcbiAgICBcImppdF9zbW9kNjRcIixcbiAgICBcImVtaXRfYWx1X3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIHRvIHN1cHBvcnQgc2lnbmVkIGRpdi9tb2QgaW5zdHJ1Y3Rpb25zIGFuZCB1cGRhdGVzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSB0aGVtIHdoZW4gdHJhbnNsYXRpbmcgQlBGX0RJViBhbmQgQlBGX01PRCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgc2lnbmVkIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowp7qjh[1] Phase: Succeeded StartedAt: 2026-07-31 01:34:07 +0000 UTC FinishedAt: 2026-07-31 01:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 01:34:07 +0000 UTC FinishedAt: 2026-07-31 01:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2] Phase: Succeeded StartedAt: 2026-07-31 01:34:07 +0000 UTC FinishedAt: 2026-07-31 02:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 01:34:07 +0000 UTC FinishedAt: 2026-07-31 02:19:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 01:34:07 +0000 UTC FinishedAt: 2026-07-31 01:34:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 01:34:07 +0000 UTC FinishedAt: 2026-07-31 01:34:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp7qjh/series-workflowp7qjh-convert-artifact-1246524887/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 01:34:17 +0000 UTC FinishedAt: 2026-07-31 01:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 01:34:17 +0000 UTC FinishedAt: 2026-07-31 01:56:04 +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:*e4e1a491-4bc6-4307-b337-55ab24becb37,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-workflowp7qjh/series-workflowp7qjh-convert-artifact-1246524887/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": "8f5e1851-b315-4e80-844d-1ea4afbdbd50", "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-workflowp7qjh/series-workflowp7qjh-build-action-2426730029/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 01:34:17 +0000 UTC FinishedAt: 2026-07-31 01:55:54 +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:*e4e1a491-4bc6-4307-b337-55ab24becb37,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-workflowp7qjh/series-workflowp7qjh-convert-artifact-1246524887/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": "8f5e1851-b315-4e80-844d-1ea4afbdbd50", "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-workflowp7qjh/series-workflowp7qjh-build-action-2426730029/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 01:56:04 +0000 UTC FinishedAt: 2026-07-31 01:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 01:56:04 +0000 UTC FinishedAt: 2026-07-31 01:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 01:56:04 +0000 UTC FinishedAt: 2026-07-31 01:56:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 01:56:04 +0000 UTC FinishedAt: 2026-07-31 01:56:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp7qjh/series-workflowp7qjh-convert-artifact-4220210950/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 01:56:14 +0000 UTC FinishedAt: 2026-07-31 01:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 01:56:14 +0000 UTC FinishedAt: 2026-07-31 01:57:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8f5e1851-b315-4e80-844d-1ea4afbdbd50,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-workflowp7qjh/series-workflowp7qjh-build-action-2426730029/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-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 01:58:05 +0000 UTC FinishedAt: 2026-07-31 01:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 01:58:05 +0000 UTC FinishedAt: 2026-07-31 01:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 01:58:05 +0000 UTC FinishedAt: 2026-07-31 02:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 01:58:05 +0000 UTC FinishedAt: 2026-07-31 02:15:52 +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:*e4e1a491-4bc6-4307-b337-55ab24becb37,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-workflowp7qjh/series-workflowp7qjh-convert-artifact-4220210950/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": "86c37b6a-36ad-4703-8526-3ee0ea88a73a", "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-workflowp7qjh/series-workflowp7qjh-build-action-3038422346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 01:58:05 +0000 UTC FinishedAt: 2026-07-31 02:15:42 +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:*e4e1a491-4bc6-4307-b337-55ab24becb37,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-workflowp7qjh/series-workflowp7qjh-convert-artifact-4220210950/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": "86c37b6a-36ad-4703-8526-3ee0ea88a73a", "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-workflowp7qjh/series-workflowp7qjh-build-action-3038422346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 02:15:52 +0000 UTC FinishedAt: 2026-07-31 02:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 02:15:52 +0000 UTC FinishedAt: 2026-07-31 02:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 02:15:52 +0000 UTC FinishedAt: 2026-07-31 02:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 02:15:52 +0000 UTC FinishedAt: 2026-07-31 02:17:46 +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:*86c37b6a-36ad-4703-8526-3ee0ea88a73a,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-workflowp7qjh/series-workflowp7qjh-build-action-3038422346/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-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:19:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*8f5e1851-b315-4e80-844d-1ea4afbdbd50,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*86c37b6a-36ad-4703-8526-3ee0ea88a73a,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-workflowp7qjh/series-workflowp7qjh-build-action-2426730029/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-workflowp7qjh/series-workflowp7qjh-build-action-3038422346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:18:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:18:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp7qjh/series-workflowp7qjh-convert-artifact-192849355/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 02:17:56 +0000 UTC FinishedAt: 2026-07-31 02:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 02:18:06 +0000 UTC FinishedAt: 2026-07-31 02:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7qjh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","build_insn","jit_smod64","emit_alu_r"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"66e2e68f-0639-4a32-a7f0-1cd42d5be106","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 02:18:06 +0000 UTC FinishedAt: 2026-07-31 02:19:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8f5e1851-b315-4e80-844d-1ea4afbdbd50,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*86c37b6a-36ad-4703-8526-3ee0ea88a73a,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-workflowp7qjh/series-workflowp7qjh-build-action-2426730029/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-workflowp7qjh/series-workflowp7qjh-build-action-3038422346/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-workflowp7qjh/series-workflowp7qjh-convert-artifact-192849355/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,}