Name: series-workflowrlql7 Phase: Succeeded StartedAt: 2026-09-11 07:15:33 +0000 UTC FinishedAt: 2026-09-11 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[0] Phase: Succeeded StartedAt: 2026-09-11 07:15:33 +0000 UTC FinishedAt: 2026-09-11 07:20:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 07:15:33 +0000 UTC FinishedAt: 2026-09-11 07:20:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211", "USB" ], "series_id": "9729e253-4afe-41a7-b2e0-66c3a6dad16c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "_set_bt_tx_power", "rtw89_btc_ntfy_init", "rtw89_btc_ntfy_scan_start", "rtw89_btc_ntfy_radio_state", "rtw89_btc_c2h_handle" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfc2V0X2J0X3R4X3Bvd2VyJiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X2luaXQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZSYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfYzJoX2hhbmRsZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIGB8fCAhcmZfYmFuZGAgY2hlY2sgZnJvbSB0aGUgZWFybHkgcmV0dXJuIGNvbmRpdGlvbiBpbiBgX3NldF9idF90eF9wb3dlcigpYCwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBBbGwgdmFyaWFibGVzIHdpdGhpbiBgX3NldF9idF90eF9wb3dlcigpYCAoc3VjaCBhcyBgYnVmYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgb24gdGhlIHN0YWNrIChgdTggYnVmWzJdID0ge307YCksIGFuZCBgcmZfYmFuZGAgaXMgcGFzc2VkIGJ5IHZhbHVlIGFzIGEgYHU4YCBwYXJhbWV0ZXIuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGV4ZWN1dGFibGUgY29udHJvbCBmbG93IGluIFJlYWx0ZWsgcnR3ODkgV2ktRmkgY29leGlzdGVuY2UgbG9naWMgKF9zZXRfYnRfdHhfcG93ZXIpIGJ5IHJlbW92aW5nIHRoZSByZl9iYW5kIGd1YXJkIGNoZWNrLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChlLmcuIFJUVzg5Xzg4NTJBVSkgYW5kIG1hYzgwMjExIGludGVyZmFjZXMsIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmUwODI1YWNmZTMwY2I0ZmFmOWI2MDIyMTFmNTllOTQzOTUwMmE2MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjE3OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLmY0MmE2Y2MzZWI3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0zODU5LDcgJiM0MzszODU5LDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuIFx0dTggYnVmWzJdID0ge307XG4gXHR1OCBsZW4gPSBzaXplb2YoKmJ1Zik7XG4gXG4tXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKVxuJiM0MztcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfc2V0X2J0X3R4X3Bvd2VyJiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X2luaXQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZSYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfYzJoX2hhbmRsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZlMDgyNWFjZmUzMGNiNGZhZjliNjAyMjExZjU5ZTk0Mzk1MDJhNjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKaW5kZXggNWE5ZGM0ZDhhMDBiYS4uZjQyYTZjYzNlYjdhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKQEAgLTM4NTksNyAmIzQzOzM4NTksNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsCiAJdTggYnVmWzJdID0ge307CiAJdTggbGVuID0gc2l6ZW9mKCpidWYpOwogCi0JaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpCiYjNDM7CWlmIChidC0mZ3Q7YmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKQogCQlyZXR1cm47CiAKIAlpZiAoYnQtJmd0O3JmX3BhcmEudHhfcHdyX2ZyZWVydW4gPT0gbGV2ZWwpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyBhIEtlcm5lbCBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmc6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIHNjcnV0aW5pemUgYSBwYXRjaCBhcHBsaWVkIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyBzYWZldHkuIEdpdmVuIHRoYXQgdGhpcyBpcyBhYm91dCBldmFsdWF0aW5nIGEga2VybmVsIHBhdGNoIGZvciBzeXprYWxsZXIgZnV6emluZywgdGhpcyBpcyBhIGNvbXBsZXRlbHkgc3RhbmRhcmQgZGV2ZWxvcGVyL1FBIHRhc2suIE5vIHJlZCBmbGFncyB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIHRoZSB0ZWNobmljYWwgZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgY2hhbmdlcyBhbmQgZGV0ZXJtaW5lIGhvdyByZWFjaGFibGUgdGhlIG1vZGlmaWVkIGNvZGUgaXMuIEkmIzM5O2xsIHByb2JhYmx5IHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBvciBvcHBvcnR1bml0aWVzIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM4NTA6XHR9XG4zODUxOlx0XG4zODUyOlx0c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuMzg1MzpcdFx0XHRcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4zODU0Olx0e1xuMzg1NTpcdFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbjM4NTY6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuMzg1NzpcdFx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xuMzg1ODpcdFx0dTggaSwgaWRfc3RhcnQsIGlkX3N0b3A7XG4zODU5Olx0XHR1OCBidWZbMl0gPSB7fTtcbjM4NjA6XHRcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbjM4NjE6XHRcbjM4NjI6XHRcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4zODYzOlx0XHRcdHJldHVybjtcbjM4NjQ6XHRcbjM4NjU6XHRcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuMzg2NjpcdFx0XHRyZXR1cm47XG4zODY3Olx0XG4zODY4Olx0XHRpZiAoYmlkID09IEJUQ19BTExfQlQpIHtcbjM4Njk6XHRcdFx0aWRfc3RhcnQgPSBCVENfQlRfMVNUO1xuMzg3MDpcdFx0XHRpZF9zdG9wID0gQlRDX0JUXzJORDtcbjM4NzE6XHRcdH0gZWxzZSB7XG4zODcyOlx0XHRcdGlkX3N0YXJ0ID0gYmlkO1xuMzg3MzpcdFx0XHRpZF9zdG9wID0gYmlkO1xuMzg3NDpcdFx0fVxuMzg3NTpcdFxuMzg3NjpcdFx0Zm9yIChpID0gaWRfc3RhcnQ7IGkgXHUwMDNjPSBpZF9zdG9wOyBpJiM0MzsmIzQzOykge1xuMzg3NzpcdFx0XHRpZiAoaSA9PSBCVENfQlRfMk5EKSB7XG4zODc4Olx0XHRcdFx0aWYgKCEocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlcGFyYV92ZXIgXHUwMDI2IEJUQ19GRUFUX0RVQUxfQlQpKVxuMzg3OTpcdFx0XHRcdFx0Y29udGludWU7XG4zODgwOlx0XG4zODgxOlx0XHRcdFx0YnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQxO1xuMzg4MjpcdFx0XHRcdGgyY19mdW5jIHw9IEJUX0gyQ19GVU5DX0JUMk5EO1xuMzg4MzpcdFx0XHR9XG4zODg0Olx0XG4zODg1Olx0XHRcdGJ1ZlswXSA9IChzOCkoLWxldmVsKTtcbjM4ODY6XHRcdFx0YnVmWzFdID0gcmZfYmFuZDsgIC8qIGJpdC1tYXA6IGJpdDEtXHUwMDNlNUdIei82R2h6LCBiaXQwLVx1MDAzZTIuNEdIeiAqL1xuMzg4NzpcdFxuMzg4ODpcdFx0XHRpZiAoIWZvcmNlX2V4ZWMgXHUwMDI2XHUwMDI2ICFidGMtXHUwMDNlY2xpX2gyY19jbWQpIHtcbjM4ODk6XHRcdFx0XHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBydHc4OSBEcml2ZXIqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBydHc4OWAgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IGl0IGlzIGFuZCwgY3JpdGljYWxseSwgd2hhdCBidXMgaXQmIzM5O3MgdGllZCB0by4gVGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJJiMzOTtsbCBza2lwIHRoYXQgZm9yIG5vdyBhbmQgZ28gc3RyYWlnaHQgdG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5IHNob3VsZCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uYWwgaW5mb3JtYXRpb24gSSYjMzk7bSBhZnRlci4gYE1ha2VmaWxlYCB3aWxsIHJldmVhbCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgbGlrZWx5IHRoZSBkZXBlbmRlbmNpZXMsIHdoaWxlIGBLY29uZmlnYCB3aWxsIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQsIGxpa2VseSwgaGludCBhdCB0aGUgYnVzIHR5cGUuIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgZGl2ZTsgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBzb2xpZCBvdmVydmlldyBpbiBqdXN0IGEgY291cGxlIG9mIG1pbnV0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19SVFc4OV9DT1JFKSAmIzQzOz0gcnR3ODlfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQtcnR3ODlfY29yZS15ICYjNDM7PSBjb3JlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTIzPXJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCKSAmIzQzOz0gcnR3ODlfODg1MWIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNi1ydHc4OV84ODUxYi1vYmpzIDo9IHJ0dzg4NTFiLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfUlRXODlfODg1MUJFKSAmIzQzOz0gcnR3ODlfODg1MWJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzItcnR3ODlfODg1MWJlLW9ianMgOj0gcnR3ODg1MWJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19SVFc4OV84ODUxQlUpICYjNDM7PSBydHc4OV84ODUxYnUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zNS1ydHc4OV84ODUxYnUtb2JqcyA6PSBydHc4ODUxYnUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBKSAmIzQzOz0gcnR3ODlfODg1MmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zOC1ydHc4OV84ODUyYS1vYmpzIDo9IHJ0dzg4NTJhLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfUlRXODlfODg1MkFFKSAmIzQzOz0gcnR3ODlfODg1MmFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDQtcnR3ODlfODg1MmFlLW9ianMgOj0gcnR3ODg1MmFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19SVFc4OV84ODUyQVUpICYjNDM7PSBydHc4OV84ODUyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00Ny1ydHc4OV84ODUyYXUtb2JqcyA6PSBydHc4ODUyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCX0NPTU1PTikgJiM0Mzs9IHJ0dzg5Xzg4NTJiX2NvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUwLXJ0dzg5Xzg4NTJiX2NvbW1vbi1vYmpzIDo9IHJ0dzg4NTJiX2NvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfUlRXODlfODg1MkIpICYjNDM7PSBydHc4OV84ODUyYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUzLXJ0dzg5Xzg4NTJiLW9ianMgOj0gcnR3ODg1MmIubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQkUpICYjNDM7PSBydHc4OV84ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01OS1ydHc4OV84ODUyYmUtb2JqcyA6PSBydHc4ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYyLXJ0dzg5Xzg4NTJidS1vYmpzIDo9IHJ0dzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfUlRXODlfODg1MkJUKSAmIzQzOz0gcnR3ODlfODg1MmJ0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjUtcnR3ODlfODg1MmJ0LW9ianMgOj0gcnR3ODg1MmJ0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MC1ydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfUlRXODlfODg1MkMpICYjNDM7PSBydHc4OV84ODUyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTczLXJ0dzg5Xzg4NTJjLW9ianMgOj0gcnR3ODg1MmMubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjc4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQ0UpICYjNDM7PSBydHc4OV84ODUyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03OS1ydHc4OV84ODUyY2Utb2JqcyA6PSBydHc4ODUyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJDVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgyLXJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfUlRXODlfODkyMkEpICYjNDM7PSBydHc4OV84OTIyYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTg1LXJ0dzg5Xzg5MjJhLW9ianMgOj0gcnR3ODkyMmEubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg4Om9iai0kKENPTkZJR19SVFc4OV84OTIyQUUpICYjNDM7PSBydHc4OV84OTIyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04OS1ydHc4OV84OTIyYWUtb2JqcyA6PSBydHc4OTIyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBVSkgJiM0Mzs9IHJ0dzg5Xzg5MjJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkyLXJ0dzg5Xzg5MjJhdS1vYmpzIDo9IHJ0dzg5MjJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5NDpvYmotJChDT05GSUdfUlRXODlfODkyMkQpICYjNDM7PSBydHc4OV84OTIyZC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTk1LXJ0dzg5Xzg5MjJkLW9ianMgOj0gcnR3ODkyMmQubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19SVFc4OV84OTIyREUpICYjNDM7PSBydHc4OV84OTIyZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05OS1ydHc4OV84OTIyZGUtb2JqcyA6PSBydHc4OTIyZGUub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9MTAzPXJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgJiM0Mzs9IGxlZF9tYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA1Om9iai0kKENPTkZJR19SVFc4OV9QQ0kpICYjNDM7PSBydHc4OV9wY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDYtcnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwOS1ydHc4OV91c2IteSA6PSB1c2Iub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTE1PXN0YXRpYyB1MzIgcnR3ODlfYWNwaV90cmF2ZXJzYWxfb2JqZWN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI0Olx0c3dpdGNoIChvYmotXHUwMDNldHlwZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjUtXHRjYXNlIEFDUElfVFlQRV9JTlRFR0VSOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjYtXHRcdGlmIChwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNzpcdFx0XHRwb3NbbGVuXSA9IG9iai1cdTAwM2VpbnRlZ2VyLnZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzEtXHRjYXNlIEFDUElfVFlQRV9CVUZGRVI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMjpcdFx0aWYgKHVubGlrZWx5KG9iai1cdTAwM2VidWZmZXIubGVuZ3RoID09IDApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMy1cdFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM4LVx0XHRpZiAocG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk6XHRcdFx0bWVtY3B5KHBvcywgb2JqLVx1MDAzZWJ1ZmZlci5wb2ludGVyLCBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQxOlx0XHRsZW4gJiM0Mzs9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDMtXHRjYXNlIEFDUElfVFlQRV9QQUNLQUdFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDQ6XHRcdGlmICh1bmxpa2VseShvYmotXHUwMDNlcGFja2FnZS5jb3VudCA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDUtXHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBvYmotXHUwMDNlcGFja2FnZS5jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUxOlx0XHRcdGVsbSA9IFx1MDAyNm9iai1cdTAwM2VwYWNrYWdlLmVsZW1lbnRzW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTItXHRcdFx0dG1wID0gcG9zID8gcG9zICYjNDM7IGxlbiA6IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjItXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0OyVzOiB1bmhhbmRsZWQgdHlwZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MzpcdFx0XHQgICAgX19mdW5jX18sIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY0LVx0XHRnb3RvIGVycjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0xMzE9aW50IHJ0dzg5X2FjcGlfZHNtX2dldF92YWx1ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTMzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzNDpcdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTM1LVx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTM2Olx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgaW50ZWdlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEzNy1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTQwOlx0KnZhbHVlID0gKHU4KW9iai1cdTAwM2VpbnRlZ2VyLnZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTQxLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTUyPWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2MDpcdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjEtXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNjI6XHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2NjpcdGxlbiA9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTY3LVx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTczOlx0cHRyID0gKHR5cGVvZihwdHIpKW9iai1cdTAwM2VidWZmZXIucG9pbnRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE3NC1cdGlmICghY2hrX2FjcGlfcG9saWN5XzZnaHpfc2lnKHB0cikpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yMDQ9aW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfNmdoel9zcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjExOlx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxMi1cdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxMzpcdFx0XHQgICAgXCYjMzQ7YWNwaTogZXhwZWN0IGJ1ZmZlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxNC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjE3Olx0YnVmX2xlbiA9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjE4LVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIyNDpcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXHUwMDNlYnVmZmVyLnBvaW50ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjUtXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3NwX3NpZyhwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjQ4PWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfdmxwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNTU6XHRpZiAob2JqLVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU2LVx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjU3Olx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNjE6XHRidWZfbGVuID0gb2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjItXHRpZiAoYnVmX2xlbiBcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjY4Olx0cHRyID0gKHR5cGVvZihwdHIpKW9iai1cdTAwM2VidWZmZXIucG9pbnRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2OS1cdGlmICghY2hrX2FjcGlfcG9saWN5XzZnaHpfdmxwX3NpZyhwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjkxPXN0YXRpYyBpbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5ODpcdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yOTktXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMDA6XHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDEtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMwNDpcdGJ1Zl9sZW4gPSBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwNS1cdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2YoKnB0cikpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMTE6XHRwdHIgPSAodHlwZW9mKHB0cikpb2JqLVx1MDAzZWJ1ZmZlci5wb2ludGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzEyLVx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfdGFzX3NpZyhwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MzM2PWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5X3JlZ19ydWxlcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzQzOlx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0NC1cdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0NTpcdFx0XHQgICAgXCYjMzQ7YWNwaTogZXhwZWN0IGJ1ZmZlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0Ni1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzQ5Olx0YnVmX2xlbiA9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM1NjpcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXHUwMDNlYnVmZmVyLnBvaW50ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNTctXHRpZiAoIWNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKHB0cikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI3MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFVTQiBTdXBwb3J0IGFuZCBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgbm90aWNlZCB0aGF0IHRoZSBydHc4OSBkcml2ZXIgaGFzIHNvbWUgYXBwYXJlbnQgVVNCIHN1cHBvcnQsIGluZGljYXRlZCBieSB0aG9zZSBgQ09ORklHX1JUVzg5X1VTQmAgYW5kIHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzeXprYWxsZXIuIENhbiB3ZSBsZXZlcmFnZSB0aGlzIFVTQiBzdXBwb3J0PyBDYW4gd2UgKmVtdWxhdGUqIHRoZXNlIFVTQiBkZXZpY2VzIHVzaW5nIFVTQiBSYXcgR2FkZ2V0IHdpdGhpbiBzeXprYWxsZXIsIGxpa2UgY3JlYXRpbmcgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGdhZGdldHM/IFRoaXMgY291bGQgb3BlbiB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4KCkJlZm9yZSBkaXZpbmcgZGVlcCwgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IFVTQiBkZXZpY2VzIGFyZSBoYW5kbGVkIHdpdGhpbiBzeXprYWxsZXIuIEkgc2hvdWxkIGFsc28gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB3aXJlbGVzcyBVU0IgZHJpdmVycywgaW4gcGFydGljdWxhciwgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLgoKTm93LCBob2xkIG9uLiBCZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLCBhbmQgaG93IGNvZXguYyBpcyB1c2VkLiBJcyB0aGVyZSBhIGNhbGwgc3RhY2sgb3IgZGVwZW5kZW5jeSBJJiMzOTttIG1pc3Npbmc/IEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IGBfc2V0X2J0X3R4X3Bvd2VyYCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcGljdHVyZSwgYW5kIHNwZWNpZmljYWxseSwgaG93IGBjb2V4LmNgIGdldHMgaW52b2x2ZWQuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgc2VhcmNoIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYCBkaXJlY3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3NldF9idF90eF9wb3dlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzgyMT1zdGF0aWMgdm9pZCBfc2V0X3dsX3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM4NTI6c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1My1cdFx0XHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQwNTY9c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2NS1cdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE2NjpcdFx0X3NldF9idF90eF9wb3dlcihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY3LVx0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDcKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipQZWVyaW5nIERlZXBlciBpbnRvIHRoZSBSYWRpbyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHJhZGlvIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBleHBsb3JlIHdoZXJlIGBfc2V0X3JmX3RyeF9wYXJhYCBpcyBhY3R1YWxseSB1c2VkIGJleW9uZCB0aGlzIGltbWVkaWF0ZSBjb250ZXh0LCBvciBwZXJoYXBzIHRyYWNlIHRoZSBjYWxscyB0byBgX3NldF9idF90eF9wb3dlcmAsIGdpdmVuIHRoZWlyIGxpa2VseSByZWxhdGlvbnNoaXAuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IGlzIGtleS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBwYXJhbWV0ZXJzIHRoZXkmIzM5O3JlIHNldHRpbmcgYXJlIHVsdGltYXRlbHkgdXNlZC4KCkkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBjb2V4LmMgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZSBnaXZlbiBteSBwYXN0IGV4cGVyaWVuY2UsIHNvIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nIGFyb3VuZCBsaW5lIDQxNjYgaW4gdGhhdCBmaWxlLiBJdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBjb2V4aXN0ZW5jZSBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcmFkaW8gcHJvdG9jb2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDE1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MTUwOlx0XHRcdFx0XHRwYXJhLndsX3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF90eF9wb3dlcjtcbjQxNTE6XHRcdFx0XHRcdHBhcmEud2xfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfcnhfZ2FpbjtcbjQxNTI6XHRcdFx0XHR9XG40MTUzOlx0XHRcdFx0Zm9yIChpID0gQlRDX0JUXzFTVDsgaSBcdTAwM2MgQlRDX0FMTF9CVDsgaSYjNDM7JiM0MzspIHtcbjQxNTQ6XHRcdFx0XHRcdHBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyO1xuNDE1NTpcdFx0XHRcdFx0cGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF9yeF9nYWluO1xuNDE1NjpcdFx0XHRcdH1cbjQxNTc6XHRcdFx0fVxuNDE1ODpcdFx0fVxuNDE1OTpcdFxuNDE2MDpcdFx0aWYgKGRtLVx1MDAzZWZkZHRfdHJhaW4pIHtcbjQxNjE6XHRcdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgMSwgUlRXODlfUEhZXzApO1xuNDE2MjpcdFx0XHRfd3JpdGVfc2NiZChydHdkZXYsIGJpZCwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcbjQxNjM6XHRcdH0gZWxzZSB7XG40MTY0Olx0XHRcdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuNDE2NTpcdFx0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XG40MTY2Olx0XHRcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0pO1xuNDE2NzpcdFx0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XG40MTY4Olx0XHR9XG40MTY5Olx0XG40MTcwOlx0bmV4dDpcbjQxNzE6XHRcdGlmICghYnQtXHUwMDNlZW5hYmxlLm5vdyB8fCBkbS1cdTAwM2V3bF9vbmx5IHx8IHdsX3NtYXAtXHUwMDNlcmZfb2ZmIHx8XG40MTcyOlx0XHQgICAgd2xfc21hcC1cdTAwM2VscHMgPT0gQlRDX0xQU19SRl9PRkYgfHwgbW9kZSA9PSBCVENfV0xJTktfVjBfNUcgfHxcbjQxNzM6XHRcdCAgICAocnR3ZGV2LVx1MDAzZWRiY2NfZW4gXHUwMDI2XHUwMDI2IHItXHUwMDNlZGJjY18yZ19waHkgIT0gUlRXODlfUEhZXzEpKVxuNDE3NDpcdFx0XHR3bF9zdGJfY2hnID0gMDtcbjQxNzU6XHRcdGVsc2VcbjQxNzY6XHRcdFx0d2xfc3RiX2NoZyA9IDE7XG40MTc3Olx0XG40MTc4Olx0XHRpZiAod2xfc3RiX2NoZyAhPSBkbS1cdTAwM2V3bF9zdGJfY2hnKSB7XG40MTc5Olx0XHRcdGRtLVx1MDAzZXdsX3N0Yl9jaGcgPSB3bF9zdGJfY2hnO1xuNDE4MDpcdFx0XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VidGNfd2xfczFfc3RhbmRieShydHdkZXYsIGRtLVx1MDAzZXdsX3N0Yl9jaGcpO1xuNDE4MTpcdFx0fVxuNDE4MjpcdH1cbjQxODM6XHRcbjQxODQ6XHRzdGF0aWMgdm9pZCBfdXBkYXRlX2J0Y19zdGF0ZV9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuNDE4NTpcdHtcbjQxODY6XHRcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG40MTg3Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbjQxODg6XHRcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbjQxODk6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDE4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMsIGBfc2V0X3JmX3RyeF9wYXJhYCBhbmQgYF9zZXRfYnRfdHhfcG93ZXJgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0cmFjZSB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgcHVycG9zZSBvZiB0aGUgb3BlcmF0aW9ucyB0aGV5IHBlcmZvcm0uCgoqKkRlZXAgRGl2ZSBJbnRvIEZ1bmN0aW9uIENhbGxzKioKCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmR1Y3QgYSBjb2RlLXdpZGUgc2VhcmNoLiBBIHNpbXBsZSBgZ3JlcGAgZm9yIGBfc2V0X3JmX3RyeF9wYXJhYCB3aWxsIGRvIHRoZSB0cmljay4gVGhhdCBzaG91bGQgcmV2ZWFsIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIGNhbGxpbmcgY29kZSB0byBkZWR1Y2UgdGhlIHNjZW5hcmlvcyB3aGVyZSByYWRpbyBmcmVxdWVuY3kgdHJhbnNtaXQvcmVjZWl2ZSBwYXJhbWV0ZXJzIGFyZSBiZWluZyBzZXQsIG9yIHdoZXJlIEJsdWV0b290aCB0cmFuc21pdCBwb3dlciBpcyBiZWluZyBhZGp1c3RlZC4gVGhpcyBraW5kIG9mIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyBmdW5kYW1lbnRhbCB0byBncmFzcCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZ3JlcCBzZWFyY2ggcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfc2V0X3JmX3RyeF9wYXJhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTg4PXN0YXRpYyB2b2lkIF9zZXRfYnRfY29yeF90YWJsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDAyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwMjg6c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYV92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA1NjpzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwODAtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDgxOlx0XHRcdF9zZXRfcmZfdHJ4X3BhcmFfdjkocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwODItXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTY2Nzk9c3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2OTQtXHRfc2V0X2J0X3J4X2FnYyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjY5NTpcdF9zZXRfcmZfdHJ4X3BhcmEocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2OTYtXHRfc2V0X2J0X3J4X3NjYW5fcHJpKHJ0d2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjIyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIEJhY2sgaW50byB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIENhbGwgQ2hhaW4qKgoKQWxyaWdodCwgSSYjMzk7bSBjaXJjbGluZyBiYWNrIG9uIHRoaXMuIEJlZm9yZSBJIGNvbW1pdCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byByZXZpc2l0IHRoZSBjYWxsIGdyYXBoIGZvciBgX3NldF9idF90eF9wb3dlcmAuIEkgd2FudCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3Igc2lkZSBlZmZlY3RzIGZyb20gdXBzdHJlYW0gb3IgZG93bnN0cmVhbSBjYWxscyB0aGF0IEkgZGlkbiYjMzk7dCBpbml0aWFsbHkgZmFjdG9yIGluLiBJdCYjMzk7cyBlYXN5IHRvIGdldCB0dW5uZWwgdmlzaW9uIHdoZW4gZm9jdXNpbmcgb24gYSBzcGVjaWZpYyBmdW5jdGlvbiwgc28gYSBmcmVzaCBsb29rIGF0IHRoZSBpbW1lZGlhdGUgY2FsbGVycyBpcyB0aGUgZmlyc3Qgc3RlcC4KCldhaXQgYSBzZWNvbmQsIGEgbW9yZSB0aG9yb3VnaCBhcHByb2FjaCBpcyB3YXJyYW50ZWQgaGVyZS4gSW5zdGVhZCBvZiBqdXN0IGZvY3VzaW5nIG9uICp0aG9zZSoga25vd24gY2FsbGVycywgbGV0JiMzOTtzIGNhc3QgYSB3aWRlciBuZXQuIEEgYGdyZXBgIGFjcm9zcyB0aGUgZW50aXJlIGNvZGViYXNlIHRvIHNlZSAqZXZlcnkqIGluc3RhbmNlIG9mIGBfc2V0X2J0X3R4X3Bvd2VyYCBpcyBpbiBvcmRlci4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IHVzYWdlIG9mIHRoYXQgZnVuY3Rpb24sIGluY2x1ZGluZyBwb3RlbnRpYWxseSBpbmRpcmVjdCBjYWxscyBvciBpbnN0YW5jZXMgSSYjMzk7dmUgZm9yZ290dGVuIGFib3V0LiBUaGlzIGNvbXByZWhlbnNpdmUgc2VhcmNoIHNob3VsZCB1bmNvdmVyIGFueSBvYnNjdXJlIG9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfc2V0X2J0X3R4X3Bvd2VyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTgzMT1zdGF0aWMgdm9pZCBydHdfY29leF91cGRhdGVfd2xfY2hfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jLTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjg4MTpzdGF0aWMgdm9pZCBydHdfY29leF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggYnRfcHdyX2RlY19sdmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy04ODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTkxNT1zdGF0aWMgdm9pZCBydHdfY29leF9zZXRfcmZfcGFyYShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jLTkyNS1cdHJ0d19jb2V4X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfcHdyX2RlY19sdmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM6OTI2Olx0cnR3X2NvZXhfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS5idF9wd3JfZGVjX2x2bCAmIzQzOyBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtOTI3LVx0cnR3X2NvZXhfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX2xvd19nYWluX2VuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zODIxPXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1MjpzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUzLVx0XHRcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDA1Nj1zdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY1LVx0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTY2Olx0XHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxNjctXHRcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBydHc4OSBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gYHJ0dzg5YCBpcyB0aGUgUmVhbHRlayBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgODAyLjExYXgvYmUgY2hpcHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gKmZ1enphYmxlKiB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIG91ciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBiYXNpY3Mg4oCTIHdoYXQgYnVzIHR5cGVzIGRvZXMgYHJ0dzg5YCBzdXBwb3J0PwoKUmlnaHQsIHRoZSBgTWFrZWZpbGVgIGluZGljYXRlcyBib3RoIFBDSSBhbmQgVVNCIHN1cHBvcnQuIFNwZWNpZmljYWxseSwgSSBzZWUgYHJ0dzg5X3BjaS5vYCBmb3IgUENJIGRldmljZXMgYW5kIGBydHc4OV91c2Iub2AgZm9yIFVTQiBkZXZpY2VzLiBUaGUgbGlzdGVkIG1vZHVsZXMgc3VnZ2VzdCBzdXBwb3J0IGZvciBhIHJhbmdlIG9mIGNoaXBzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXNlIGJ1cyB0eXBlcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXBzLCBhcyBwZXIgdGhlIHByb21wdCYjMzk7cyBmaXJzdCBzZWN0aW9uPyBUaGUgcHJvbXB0IGlzIGNsZWFyOiBmdXp6aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIGNvZGUgKmNhbiogYWN0dWFsbHkgcnVuIGluIEdDRSBvciBRRU1VIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMuIFZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGlzIG91dCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuJiMzOTt0IGZ1enogZHJpdmVycyB0aGF0IHJlbHkgb24gYSBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZCB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZC4KCkJ1dCB3YWl0LCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgVVNCIGdhZGdldHMgKmFyZSogcmVhY2hhYmxlLiBFeGNlbGxlbnQuIFRoYXTigJlzIHByb21pc2luZy4gSSBrbm93IFVTQiBSYXcgR2FkZ2V0IGNhbiBiZSB1c2VkIGluIHN5emthbGxlci4KClRoZXJlZm9yZSwgdGhlIGtleSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gdGhlIFVTQiBwcm9iZSBwcm9jZXNzIGFuZCBgcnR3ODlfdXNiYCBkcml2ZXIgYmUgdHJpZ2dlcmVkIHZpYSBVU0IgUmF3IEdhZGdldC9VU0IgZW11bGF0aW9uPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFVTQiBwcm9iZSBwYXRoLiBMZXTigJlzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIFVTQiBwcm9iZSB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfdXNiX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY0LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjU6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy0xMzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MC1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03Nz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg5MjJhdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03OS1cdC5pZF90YWJsZSA9IHJ0d184OTIyYXVfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xMjAxPV9fQVRUUklCVVRFX0dST1VQUyhydHc4OV91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjAzOmludCBydHc4OV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMDQtXHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjk0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI5NTpFWFBPUlRfU1lNQk9MKHJ0dzg5X3VzYl9wcm9iZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaD05Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBydHc4OV91c2IgKnJ0dzg5X3VzYl9wcml2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaDo5NzppbnQgcnR3ODlfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05OC1cdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgUlRXODkgQ29leGlzdGVuY2UgTG9naWMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3Mga2lja2luZyBvZmYgdGhvc2UgY29leGlzdGVuY2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHRoZSBgX3NldF9idF90eF9wb3dlcmAgZnVuY3Rpb24sIGFuZCBhbHNvIHRoZSBgX2FjdGlvbl9jb21tb25gIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgbW9yZSBnZW5lcmFsIGBydHc4OV9idGNfYCBmdW5jdGlvbnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbnZvY2F0aW9uIHBhdGhzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNhbGxzIG9yaWdpbmF0ZSBmcm9tLgoKRmlyc3QsIGxldCBtZSBydW4gYSBxdWljayBgZ3JlcGAgc2VhcmNoIHdpdGhpbiB0aGUgYHJ0dzg5YCBkaXJlY3RvcnkuIEkmIzM5O2xsIGxvb2sgZm9yIGJvdGggYF9hY3Rpb25fY29tbW9uYCBhbmQgYW55dGhpbmcgdGhhdCBzdGFydHMgd2l0aCBgcnR3ODlfYnRjX2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgbGlzdCBvZiBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGhlbiwgSSYjMzk7bGwgYW5hbHl6ZSB0aG9zZSBsb2NhdGlvbnMgdG8gY29uc3RydWN0IHRoZSBjb250cm9sIHBhdGhzLiBPbmNlIEkgaGF2ZSB0aGUgY2FsbCBjaGFpbnMgbWFwcGVkIG91dCwgSSYjMzk7bGwgaGF2ZSBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGNvZXhpc3RlbmNlIGZlYXR1cmVzIGFyZSBiZWluZyB0cmlnZ2VyZWQgYW5kIHdoYXQmIzM5O3MgZHJpdmluZyB0aG9zZSBwb3dlciBhZGp1c3RtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2FjdGlvbl9jb21tb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTY2MTk9c3RhdGljIHZvaWQgX3NldF9md19yZXBvcnRfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02Njc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjY3OTpzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02NjgwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz03MDExPXN0YXRpYyB2b2lkIF93cml0ZV9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmlkLCB1MzIgdmFsLCBib29sIHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTcwNTgtXHRcdFx0ICogSnVzdCB1cGRhdGUgd2wtXHUwMDNlc2NiZFtdIGFuZCBzZXQgd2wtXHUwMDNlc2NiZF9jaGdbXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjcwNTk6XHRcdFx0ICogbW92ZWQgXCYjMzQ7V3JpdGUgc2NvcmVib2FyZCBJL09cJiMzNDsgdG8gIF9hY3Rpb25fY29tbW9uKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTcwNjAtXHRcdFx0ICogX3dyaXRlX3NjYmQgd2lsbCBiZSBleGVjdXRlZCBpZiBydW5fY29leCgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODQxOT12b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQyLVx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcJiMzNDtbQlRDXSwgJXMoKTogZXhpdFxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODY0MzpcdF9hY3Rpb25fY29tbW9uKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQ0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0MjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRGVidWdnaW5nIGEgQ09FWCBDYWxsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYF9ydW5fY29leGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdHJhY2UgaW5kaWNhdGVzIHRoYXQgaXQgdWx0aW1hdGVseSBnb2VzIHRocm91Z2ggYF9hY3Rpb25fY29tbW9uKHJ0d2RldilgLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjaGFpbiwgdG8gdW5kZXJzdGFuZCBob3cgd2UgZ290IGhlcmUuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgX3J1bl9jb2V4YCBpdHNlbGYgaXMgY2FsbGVkLCBhbmQgYWxzbyB0byBjaGVjayBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucywgbGlrZSBgcnR3ODlfYnRjX250ZnlfYC4gSSYjMzk7bGwgZG8gYSBxdWljayBjYWxsIGdyYXBoIGFuYWx5c2lzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgdG8gZWl0aGVyIG9mIHRoZXNlIGZ1bnRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIENPRVggb3BlcmF0aW9uLiBUaGVuLCBJIGNhbiBzdGFydCB0byB6ZXJvIGluIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19ydW5fY29leCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTM2PWVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5OTk6c3RhdGljIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEwMDAtXHRcdCAgICAgIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzU4MT12b2lkIGJ0Y19md19ldmVudChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGV2dF9pZCwgdm9pZCAqZGF0YSwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjEwLVx0aWYgKCFidGMtXHUwMDNlZG0uc2NiZF9iMndfdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzYxMTpcdFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfU0NCRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjEyLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3MTY9dm9pZCBydHc4OV9jb2V4X2FjdDFfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM1LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NzczNjpcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQUNUMV9XT1JLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3Mzk9dm9pZCBydHc4OV9jb2V4X2J0X2RldmluZm9fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzUxLVx0YTJkcC1cdTAwM2VwbGF5X2xhdGVuY3kgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Nzc1MjpcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQlRfREVWSU5GT19XT1JLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NTMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3NTU9dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03Nzc0LVx0XHRfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19BTExfQlQsIEJUQ19XU0NCX1dMUkZLLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3Nzc1Olx0XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1JGS19DSEtfV09SSyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03Nzc2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg0MTg9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NDE5OnZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODQyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY3MT12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjgzLVx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfQUxMX0JULCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2ODQ6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUE9XRVJPRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NzIzPXZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODc4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3ODE6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfSU5JVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzgyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04Nzg0PXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODgxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4MTE6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfU0NBTl9TVEFSVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODEyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04ODE0PXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9maW5pc2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4ODM0Olx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NDQU5fRklOSVNIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg4Mzc9dm9pZCBydHc4OV9idGNfbnRmeV9zd2l0Y2hfYmFuZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODg1NS1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4NTY6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfU1dCQU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4NTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg4NTk9dm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MjMtXHRidGMtXHUwMDNlZG0uY250X25vdGlmeVtCVENfTkNOVF9TUEVDSUFMX1BBQ0tFVF0mIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODkyNDpcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9TUEVDSUZJQ19QQUNLRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODkyNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTAwMz1zdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBiaWQsIHU4ICpidWYsIHUzMiBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTE1My1cdF91cGRhdGVfYnRfY3RybF9scHMocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkxNTQ6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9JTkZPKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkxNTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTkxNTc9c3RhdGljIHZvaWQgX250Znlfcm9sZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5MjI2Olx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1JPTEVfSU5GTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MjI3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05MzQ1PXZvaWQgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZmN0cmwgcmZfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTM5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkzOTU6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUkFESU9fU1RBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTM5Ni1cdHdsLVx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmX3ByZSA9IHdsLVx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk0MDA9c3RhdGljIGJvb2wgX250Znlfd2xfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X3BhdGgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTQ1MC1cdFx0ICAgIHdsLVx1MDAzZXJma19pbmZvLnN0YXRlID09IEJUQ19XUkZLX1NUT1ApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NDUxOlx0XHRcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9XTF9SRkspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTQ1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05NjU1PXZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05Njg5LVx0XHR3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyID0gZGF0YS5kaXJfYWxsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTY5MDpcdFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1dMX1NUQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NjkxLVx0fSBlbHNlIGlmIChidGMtXHUwMDNlZG0uY250X25vdGlmeVtCVENfTkNOVF9XTF9TVEFdIFx1MDAzZT1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05NzY3PXZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk4MTctXHRcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIGJpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5ODE4Olx0XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk4MTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk4MzktXHRcdFx0X3VwZGF0ZV9idF9sZWF1ZGlvX2luZm8ocnR3ZGV2LCBiaWQsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk4NDA6XHRcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fVVBEQVRFX0JUX0xFQVVESU5GTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODQxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NTUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2ktRmkgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBgcnR3ODlgLCBhIFdpLUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgY29tcG9uZW50IChgcnR3ODlfdXNiYCksIHV0aWxpemluZyBzdGFuZGFyZCBVU0IgZW11bGF0aW9uIChzeXprYWxsZXIpIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBgbWFjODAyMTFgIHdpcmVsZXNzIHN1YnN5c3RlbXMuIFRoZSBjb2RlJiMzOTtzIGRlYWxpbmcgd2l0aCB0aGluZ3MgbGlrZSBgbmw4MDIxMWAsIHNjYW4gc3RhcnQvZmluaXNoIGV2ZW50cywgcmFkaW8gc3RhdGUgY2hhbmdlcywgYW5kIHBhY2tldCB0cmFuc21pc3Npb24uCgpNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBzcGVjaWZpYyBjaGFuZ2U6IHRoZSBtb2RpZmljYXRpb24gdG8gYF9zZXRfYnRfdHhfcG93ZXJgLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbi4KCmBgYGMKc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLAoJCQkgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKQp7CglzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwoJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7Cgl1OCBoMmNfZnVuYyA9IFNFVF9CVF9UWF9QV1I7Cgl1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDsKCXU4IGJ1ZlsyXSA9IHt9OwoJdTggbGVuID0gc2l6ZW9mKCpidWYpOwoKLQlpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZCkKJiM0MzsJaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApCgkJcmV0dXJuOwoKCWlmIChidC0mZ3Q7cmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbCkKCQlyZXR1cm47Ci4uLgpgYGAKClRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIGB8fCAhcmZfYmFuZGAuIEJlZm9yZSwgaWYgYGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdYCB3YXMgMCAqb3IqIGlmIGByZl9iYW5kYCB3YXMgemVybywgdGhlIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBlYXJseS4gTm93LCBpdCBvbmx5IHJldHVybnMgZWFybHkgaWYgYGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdYCBpcyB6ZXJvLiBTbywgd2hhdCYjMzk7cyB0aGUgaW1wbGljYXRpb24/IEl0IG5vdyAqZXhlY3V0ZXMqIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJcyBgcmZfYmFuZGAgYSBiaXRtYXAgb3IgYW4gZW51bT8gV2hhdCYjMzk7cyB0aGUgbGVnaXRpbWF0ZSB1c2Ugb2YgYSB6ZXJvIHZhbHVlIGZvciBgcmZfYmFuZGA/CgpUbyBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJvbGUgb2YgYHJmX2JhbmRgLiBTbywgSSYjMzk7bGwgY2hlY2sgd2hlcmUgYHJmX2JhbmRgIGdldHMgaXRzIHZhbHVlIGJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGluZyBmdW5jdGlvbiwgc28gbGV0JiMzOTtzIGNoZWNrIGBfc2V0X3JmX3RyeF9wYXJhYCBpbiBgY29leC5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQwNTU6XHRcbjQwNTY6XHRzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbjQwNTc6XHR7XG40MDU4Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG40MDU5Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuNDA2MDpcdFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG40MDYxOlx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbjQwNjI6XHRcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG40MDYzOlx0XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqciA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbjQwNjQ6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuNDA2NTpcdFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG40MDY2Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcdTAwMjZ3bC1cdTAwM2VzdGF0dXMubWFwO1xuNDA2NzpcdFx0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSBwYXJhO1xuNDA2ODpcdFx0dTggYm1vZGUgPSBkbS1cdTAwM2V0ZGRfYmluZC53bF9saW5rX21vZGU7XG40MDY5Olx0XHR1OCByZl9iYW5kID0gZG0tXHUwMDNldGRkX2JpbmQucmZfYmFuZDtcbjQwNzA6XHRcdHU4IGksIHVsX3BhcmFfbnVtLCBkbF9wYXJhX251bTtcbjQwNzE6XHRcdHU4IG1vZGUgPSBCVENfV0xJTktfTk9MSU5LO1xuNDA3MjpcdFx0dTggYmlkID0gQlRDX0JUXzFTVCwgbHY7XG40MDczOlx0XHR1MzIgd2xfc3RiX2NoZztcbjQwNzQ6XHRcbjQwNzU6XHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpIHtcbjQwNzY6XHRcdFx0LyogRWFybHkgdjkgbmVlZCB0byBhc3NpZ24gVUwvREwgUkYgcGFyYSBhdCBkcml2ZXIgKi9cbjQwNzc6XHRcdFx0aWYgKGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192OSkge1xuNDA3ODpcdFx0XHRcdHVsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX251bV92OTtcbjQwNzk6XHRcdFx0XHRkbF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua19udW1fdjk7XG40MDgwOlx0XHRcdH0gZWxzZSB7XG40MDgxOlx0XHRcdFx0X3NldF9yZl90cnhfcGFyYV92OShydHdkZXYpO1xuNDA4MjpcdFx0XHRcdHJldHVybjtcbjQwODM6XHRcdFx0fVxuNDA4NDpcdFx0fSBlbHNlIGlmICgodmVyLVx1MDAzZWZjeHRyeCA9PSAwIHx8IHZlci1cdTAwM2VmY3h0cnggPT0gNyB8fCB2ZXItXHUwMDNlZmN4dHJ4ID09IDEwNykgXHUwMDI2XHUwMDI2XG40MDg1Olx0XHRcdCAgIGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192MCkge1xuNDA4NjpcdFx0XHR1bF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua19udW1fdjA7XG40MDg3Olx0XHRcdGRsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX251bV92MDtcbjQwODg6XHRcdH0gZWxzZSB7XG40MDg5Olx0XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtbQlRDXSVzKCksIE5vIHJmX3BhcmEgZm9yIHZlcnNlaW9uICVkXFxuXCYjMzQ7LFxuNDA5MDpcdFx0XHRcdCAgIF9fZnVuY19fLCB2ZXItXHUwMDNlZmN4dHJ4KTtcbjQwOTE6XHRcdFx0Z290byBuZXh0O1xuNDA5MjpcdFx0fVxuNDA5MzpcdFxuNDA5NDpcdFx0aWYgKGJtb2RlID09IEJUQ19XTElOS19OT0xJTkspIHtcbjQwOTU6XHRcdFx0cmV0dXJuO1xuNDA5NjpcdFx0fSBlbHNlIGlmIChyZl9iYW5kID09IFJUVzg5X0JBTkRfNUcpIHtcbjQwOTc6XHRcdFx0bW9kZSA9IEJUQ19XTElOS19WMF81RztcbjQwOTg6XHRcdH0gZWxzZSBpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNiBibW9kZSA9PSBCVENfV0xJTktfU1RBKSB7XG40MDk5Olx0XHRcdG1vZGUgPSBCVENfV0xJTktfVjBfMkdfU1RBO1xuNDEwMDpcdFx0fVxuNDEwMTpcdFxuNDEwMjpcdFx0LyogZGVjaWRlIHRyeF9wYXJhX2xldmVsICovXG40MTAzOlx0XHRpZiAoYnRjLVx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7XG40MTA0Olx0XHRcdC8qIGZpeCBMTkEyICYjNDM7IFRJQSBnYWluIG5vdCBjaGFuZ2UgYnkgR05UX0JUICovXG40MTA1Olx0XHRcdGlmICgoYnRjLVx1MDAzZWRtLndsX2J0Z19yeCBcdTAwMjZcdTAwMjYgYi1cdTAwM2VsaW5rX2NudC5ub3cgIT0gMCkgfHxcbjQxMDY6XHRcdFx0ICAgIGRtLVx1MDAzZWJ0X29ubHkgPT0gMSlcbjQxMDc6XHRcdFx0XHRkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCA9IDE7IC8qIGZvciBiZXR0ZXIgQlQgQUNJIGlzc3VlICovXG40MTA4Olx0XHRcdGVsc2VcbjQxMDk6XHRcdFx0XHRkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCA9IDA7XG40MTEwOlx0XHR9IGVsc2UgeyAvKiBub24tc2hhcmVkIGFudGVubmEgICovXG40MTExOlx0XHRcdGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsID0gNTtcbjQxMTI6XHRcdFx0LyogbW9kaWZ5IHRyeF9wYXJhIGlmIFdLIDIuNEctU1RBLURMICYjNDM7IGJ0IGxpbmsgKi9cbjQxMTM6XHRcdFx0aWYgKGItXHUwMDNlbGlua19jbnQubm93ICE9IDAgXHUwMDI2XHUwMDI2XG40MTE0Olx0XHRcdCAgICBtb2RlID09IEJUQ19XTElOS19WMF8yR19TVEEgXHUwMDI2XHUwMDI2XG40MTE1Olx0XHRcdCAgICB3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSkgeyAvKiB1cGxpbmsgKi9cbjQxMTY6XHRcdFx0XHRpZiAod2wtXHUwMDNlcnNzaV9sZXZlbCA9PSA0IFx1MDAyNlx1MDAyNiBidC1cdTAwM2Vyc3NpX2xldmVsIFx1MDAzZSAyKVxuNDExNzpcdFx0XHRcdFx0ZG0tXHUwMDNldHJ4X3BhcmFfbGV2ZWwgPSA2O1xuNDExODpcdFx0XHRcdGVsc2UgaWYgKHdsLVx1MDAzZXJzc2lfbGV2ZWwgPT0gMyBcdTAwMjZcdTAwMjYgYnQtXHUwMDNlcnNzaV9sZXZlbCBcdTAwM2UgMylcbjQxMTk6XHRcdFx0XHRcdGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsID0gNztcbjQxMjA6XHRcdFx0fVxuNDEyMTpcdFx0fVxuNDEyMjpcdFxuNDEyMzpcdFx0bHYgPSBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbDtcbjQxMjQ6XHRcdGlmIChsdiBcdTAwM2U9IHVsX3BhcmFfbnVtIHx8XG40MTI1Olx0XHQgICAgbHYgXHUwMDNlPSBkbF9wYXJhX251bSkge1xuNDEyNjpcdFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG40MTI3Olx0XHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBpbnZhbGlkIGxldmVsX2lkOiAlZFxcblwmIzM0OyxcbjQxMjg6XHRcdFx0XHQgICAgX19mdW5jX18sIGx2KTtcbjQxMjk6XHRcdFx0cmV0dXJuO1xuNDEzMDpcdFx0fVxuNDEzMTpcdFxuNDEzMjpcdFx0aWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKSB7XG40MTMzOlx0XHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpIHtcbjQxMzQ6XHRcdFx0XHRwYXJhID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3Y5W2x2XTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1NTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiB0aGUgYHJ0dzg5YCBXaS1GaSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYHJ0dzg5YCBpcyBhIFJlYWx0ZWsgV2ktRmkgZHJpdmVyLCBzbyBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgaXQmIzM5O3MgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIGhvdyByZWFjaGFibGUgaXQgaXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcyBjb3JyZWN0bHkuCgpXYWl0LCBiYWNrIHVwISBJIG5lZWQgdG8gcmUtcmVhZCB0aGUgcmVhY2hhYmlsaXR5IGNyaXRlcmlhLiBPa2F5LCBhY2NvcmRpbmcgdG8gU2VjdGlvbiAyLCBJIG5lZWQgdG8gc2F5ICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgKm9ubHkqIGlmIHRoZSBjaGFuZ2VzIGFyZSBub24ta2VybmVsL25vbi1leGVjdXRhYmxlLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgKGxpa2UgdGhvc2Ugc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUpLCBvciB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgaGFwcGVuIHdpdGggUENJIGhvdC11bnBsdWcgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuCgpPbiB0aGUgZmxpcCBzaWRlLCBTZWN0aW9uIDMgc3RhdGVzICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0OyBpZiB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUsIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nIGNvcmUgc3Vic3lzdGVtcywgcmVmYWN0b3JpbmdzLCBhc3NlcnRpb25zLCBhbmQgKnJlYWNoYWJsZSogZHJpdmVycyBhbmQgcHJvdG9jb2xzLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEhvdyBpcyBgcnR3ODlgIHJlYWNoYWJsZT8KCkFoLWhhISBJcyB0aGlzIGRyaXZlciByZWFjaGFibGUgdmlhIFVTQiBnYWRnZXQ/IEkga25vdyBzeXprYWxsZXIgaGFzIHRoYXQgY2FwYWJpbGl0eS4gSSBuZWVkIHRvIGNoZWNrIGlmIHN5emthbGxlciBlbXVsYXRlcyBVU0IgZGV2aWNlcywgYW5kIGlmIHNvLCBjYW4gaXQgcHJvYmUgdGhlIGBydHc4OWAgVVNCIGRyaXZlcnMgc3BlY2lmaWNhbGx5LiBMZXQgbWUgZGlnIGludG8gdGhlIGRlc2NyaXB0aW9ucyBhbmQgc2VlIGlmIFVTQiByYXcgZ2FkZ2V0IGFsbG93cyBmdXp6aW5nIFVTQiBkcml2ZXJzIGxpa2UgYHJ0dzg5X3VzYmAsIGBydHc4ODUyYXVgLCBgcnR3ODg1MmJ1YCwgYHJ0dzg4NTJjdWAsIGBydHc4OTIyYXVgLCBhbmQgYHJ0dzg4NTFidWAuCgpZZXMhIEZyb20gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZSBMaW51eCBrZXJuZWwsIEkga25vdyBVU0IgZHJpdmVycyAqY2FuKiBiZSBwcm9iZWQgYW5kIGNvbW11bmljYXRlZCB3aXRoIHZpYSBVU0IgUmF3IEdhZGdldCBhbmQgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4KCk5vdywgb25lIG1vcmUgY3JpdGljYWwgZGV0YWlsOiBsZXQmIzM5O3MgY2hlY2sgaWYgdGhlIGBjb2V4LmNgIGNvZGUgaXMgZXZlbiBjb21waWxlZCB3aGVuIGVpdGhlciBgUlRXODlfVVNCYCBvciBgUlRXODlfQ09SRWAgaXMgZW5hYmxlZC4gTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUVzg5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTppZiBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzpjb25maWcgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozNTpjb25maWcgUlRXODlfODg1MkJUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00Mi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDQ6Y29uZmlnIFJUVzg5Xzg5MjJEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDktXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjUwOlx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MTpcdHNlbGVjdCBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MjpcdHNlbGVjdCBSVFc4OV84ODUxQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTUzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1ODpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTYwLVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2MTpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjI6XHRzZWxlY3QgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjM6XHRzZWxlY3QgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Njk6Y29uZmlnIFJUVzg5Xzg4NTJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MS1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NzI6XHRzZWxlY3QgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjczOlx0c2VsZWN0IFJUVzg5X1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc0Olx0c2VsZWN0IFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODItXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgzOlx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4NDpcdHNlbGVjdCBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4NTpcdHNlbGVjdCBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5MTpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTItXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkzLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NDpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6OTU6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6OTY6XHRzZWxlY3QgUlRXODlfODg1MkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NzpcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMzpjb25maWcgUlRXODlfODg1MkJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDUtXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwNjpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTA3Olx0c2VsZWN0IFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwODpcdHNlbGVjdCBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwOTpcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNy1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE4Olx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTk6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTIwOlx0c2VsZWN0IFJUVzg5Xzg4NTJCVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyMTpcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMjc6Y29uZmlnIFJUVzg5Xzg4NTJDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOS1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTMwOlx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzE6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTMyOlx0c2VsZWN0IFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTMzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM4OmNvbmZpZyBSVFc4OV84ODUyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDAtXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MTpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTQyOlx0c2VsZWN0IFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MzpcdHNlbGVjdCBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0OTpjb25maWcgUlRXODlfODkyMkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTUxLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNTI6XHRzZWxlY3QgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE1MzpcdHNlbGVjdCBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNTQ6XHRzZWxlY3QgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjM6Y29uZmlnIFJUVzg5Xzg5MjJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTY1LVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjY6XHRzZWxlY3QgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2NzpcdHNlbGVjdCBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjg6XHRzZWxlY3QgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5Xzg5MjJERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkRFLzg5MjJERS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ny1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc4Olx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzk6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTgwOlx0c2VsZWN0IFJUVzg5Xzg5MjJEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg3OmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4OC1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTkwOmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5MS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTI6XHRkZXBlbmRzIG9uIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTM6XHRzZWxlY3QgUlRXODlfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTk6Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjAxOlx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjAyOlx0c2VsZWN0IFJUVzg5X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjAzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA4OmNvbmZpZyBSVFc4OV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA5LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxMDpcdGRlcGVuZHMgb24gUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxMS1cdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxNTpjb25maWcgUlRXODlfTEVEU19NQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMTc6XHRkZXBlbmRzIG9uIFJUVzg5X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTgtXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1NfTVVMVElDT0xPUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTM3NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlRXODkgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgYFJUVzg5YCBkcml2ZXIsIHNwZWNpZmljYWxseS4gVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN1Z2dlc3RzIGl0IHJlbGllcyBvbiBgTUFDODAyMTFgLCB3aGljaCBtYWtlcyBzZW5zZS4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSBmdWxsIHBpY3R1cmUuIE15IGJlc3QgYmV0IGlzIHRvIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlIGZvciBgUlRXODlgLiBUaGF0IHNob3VsZCBsYXkgb3V0IGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBleHBsaWNpdGx5LiBMZXQgbWUgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgYW5kIHRha2UgYSBwZWVrIGF0IHRoZSB0b3AgbGluZXMgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBgUlRXODlgIG1pZ2h0IG5lZWQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhbmRhcmQgcHJvY2VkdXJlIHdoZW4gdW5yYXZlbGluZyBrZXJuZWwgbW9kdWxlIGludGVyZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gICAyOlx0bWVudWNvbmZpZyBSVFc4OVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XG4gICA3Olx0XHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHJ0dzg5LlxuICAxMDpcdFxuICAxMTpcdGlmIFJUVzg5XG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFJUVzg5X0NPUkVcbiAgMTQ6XHRcdHRyaXN0YXRlXG4gIDE1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgUlRXODlfUENJXG4gIDE4Olx0XHR0cmlzdGF0ZVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBSVFc4OV9VU0JcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4OSBDb2V4aXN0ZW5jZSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBSVFc4OWAgZHJpdmVyIGNvZGUuIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCBmb3IgdGhlIFVTQiB2YXJpYW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBmb3IgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg4NTFCVWAsIGFuZCBgUlRXODlfODkyMkFVYCBjb25maWd1cmF0aW9ucy4gSWYgYENPTkZJR19SVFc4OWAsIGBDT05GSUdfUlRXODlfVVNCYCwgYW5kIHRoZSBhcHByb3ByaWF0ZSBkcml2ZXItc3BlY2lmaWMgY29uZmlnIGxpa2UgYENPTkZJR19SVFc4OV84ODUyQVVgIGFyZSBlbmFibGVkLCBhbG9uZyB3aXRoIHRoZSBzdGFuZGFyZCBgQ09ORklHX01BQzgwMjExYCBhbmQgYENPTkZJR19VU0JgLCB0aGVuIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGJ1aWx0IGFuZCBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IG9yIHJhdyBnYWRnZXQgaW50ZXJmYWNlcywgd2hpY2ggaXMgd2hhdCBJJiMzOTttIGV4cGVjdGluZy4KCk5vdywgYSBjcml0aWNhbCBwb2ludCBmb3IgY29leGlzdGVuY2UgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEJsdWV0b290aCBUWCBwb3dlciBjb250cm9sIGlzIG1hbmFnZWQgd2l0aGluIHRoZSBjb2V4aXN0ZW5jZSBtb2R1bGUuIFNwZWNpZmljYWxseSwgaXMgYF9zZXRfYnRfdHhfcG93ZXJgIGEgc3RhdGljIGZ1bmN0aW9uPyBBbHJpZ2h0LCBjaGVja2luZyBgY29leC5jYCwgeWVzLCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlciguLi4pYC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGV4dGVybmFsIG1hbmlwdWxhdGlvbi4KCk5vdywgd2hpY2ggbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbCBgX3NldF9idF90eF9wb3dlcmA/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbGluZyBjaGFpbnMuIE9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBmb3VuZDogYF9zZXRfYnRfdHhfcG93ZXJgIGlzIGNhbGxlZCBieSBgX3NldF9yZl90cnhfcGFyYWAgd2hpY2ggaXMgYWxzbyBzdGF0aWMuIEFuZCBgX3NldF9yZl90cnhfcGFyYWAgaXMgY2FsbGVkIGJ5IGBfYWN0aW9uX2NvbW1vbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLCBhbmQgZmluYWxseSwgYF9hY3Rpb25fY29tbW9uYCBpcyBjYWxsZWQgYnkgYF9ydW5fY29leGAsIHdoaWNoIGlzIGFsc28gc3RhdGljLgoKT2theSwgdGhhdCYjMzk7cyB0aGUgY29yZSBjaGFpbi4gQnV0IHdobyBjYWxscyBgX3J1bl9jb2V4YD8gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJmYWNlIHBvaW50cyBhcmUhIEl0JiMzOTtzIGNhbGxlZCBieTogYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydGAsIGBydHc4OV9idGNfbnRmeV9zY2FuX2ZpbmlzaGAsIGBydHc4OV9idGNfbnRmeV9zd2l0Y2hfYmFuZGAsIGBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXRgLCBgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGVgLCBgcnR3ODlfYnRjX250Znlfd2xfc3RhYCwgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYCwgYHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmYCwgYHJ0dzg5X2NvZXhfYWN0MV93b3JrYCwgYHJ0dzg5X2NvZXhfYnRfZGV2aW5mb193b3JrYCwgYHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrYCBhbmQgYGJ0Y19md19ldmVudGAuICBgYnRjX2Z3X2V2ZW50YCBjb3VsZCBiZSBzdGF0aWMgb3IgZXhwb3J0ZWQg4oCTIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4KClRvIGNvbmZpcm0gdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhpcyBtb2R1bGUsIEkgbm93IG5lZWQgdG8gY2hlY2sgd2hldGhlciBgX3J1bl9jb2V4YCBvciBhbnkgb2YgdGhlIGBydHc4OV9idGNfKmAgZnVuY3Rpb25zIGFyZSBleHBvc2VkIGFzIG5vbi1zdGF0aWMgc3ltYm9scyBpbiBgcnR3ODlfY29yZS5rb2AuICBUaGlzIGlzIGNydWNpYWwuIEFsc28sIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgZGVjbGFyYXRpb24sIHByb2JhYmx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIG9yIGBjb2V4LmhgIHRvIHNlZSBob3cgdGhleSBhcmUgc3RydWN0dXJlZC4gVGhpcyB3aWxsIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4dGVybmFsIGhvb2tzIGFuZCB0aGUgb3ZlcmFsbCBtb2R1bGUmIzM5O3MgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9idGNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDEyMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NTk9c3RydWN0IGJ0Y19mYnRjXzFzbG90IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02MS1cdHU4IHNpZDsgLyogc2xvdCBpZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjI6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc2xvdCBzbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjMtfSBfX3BhY2tlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hIHRfZGVmW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02Ni1cdFtDWFREX09GRl1cdD0geyBDWFRETUFfT0ZGLCAgICBDWEZMQ19PRkYsIENYVFBTX09GRiwgMCwgMCwgMCwgMCwgMH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4MTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3Qgc19kZWZbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTgyLVx0W0NYU1RfT0ZGXVx0PSBfX0RFRl9GQlRDX1NMT1QoMTAwLCAweDU1NTU1NTU1LCBTTE9UX01JWCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTAyPXN0YXRpYyBjb25zdCB1MzIgY3h0YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTM1LVx0LyogZmlybXdhcmUgdmVyc2lvbiBtdXN0IGJlIGluIGRlY3JlYXNpbmcgb3JkZXIgZm9yIGVhY2ggY2hpcCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NzojZGVmaW5lIFJUVzg5X0RFRkFVTFRfQlRDX1ZFUl9JRFggKEFSUkFZX1NJWkUocnR3ODlfYnRjX3Zlcl9kZWZzKSAtIDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDk6c3RhdGljIGNvbnN0IHVuaW9uIHJ0dzg5X2J0Y193bF9zdGF0ZV9tYXAgYnRjX3NjYW5uaW5nX21hcCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM1MC1cdC5tYXAgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzkxPXN0YXRpYyBjaGFyICpjaGlwX2lkX3N0cih1MzIgaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDEzOnN0cnVjdCBydHc4OV9idGNfYnRmX3RsdiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTQtXHR1OCB0eXBlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQxOTpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDIwLVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjY9ZW51bSBidGNfYnRmX3NldF9yZXBvcnRfZW4ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ0NDpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfcmVwb3J0X3YxIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0NS1cdHU4IGZ2ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDUwOnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9yZXBvcnRfdjgge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDUxLVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00NTc9dW5pb24gcnR3ODlfZmJ0Y19ydHBfY3RybCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfcmVwb3J0X3YxIHYxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU5Olx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X3JlcG9ydF92OCB2ODtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2MC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2Mi0jZGVmaW5lIEJURl9TRVRfU0xPVF9UQUJMRV9WRVIgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDYzOnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9zbG90X3RhYmxlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2NC1cdHU4IGZ2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NjUtXHR1OCB0YmxfbnVtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDY2Olx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3QgdGJsc1tdIF9fY291bnRlZF9ieSh0YmxfbnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2Ny19IF9fcGFja2VkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDY5OnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9zbG90X3RhYmxlX3Y3IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ3MC1cdHU4IHR5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDcyLVx0dTggbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDczOlx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3RfdjcgdjdbQ1hTVF9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc0LX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NzY6c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X21vbl9yZWdfdjEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc3LVx0dTggZnZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ3OC1cdHU4IHJlZ19udW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0Nzk6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyByZWdzW10gX19jb3VudGVkX2J5KHJlZ19udW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgwLX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0ODI6c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X21vbl9yZWdfdjcge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgzLVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODUtXHR1OCBsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0ODY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyByZWdzW10gX19jb3VudGVkX2J5KGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODctfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00ODk9dW5pb24gcnR3ODlfZmJ0Y19zZXRfbW9uX3JlZyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0OTA6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192MSB2MTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ5MTpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9tb25fcmVnX3Y3IHY3O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDkyLX0gX19wYWNrZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTAxMz1zdGF0aWMgaW50IF9zZW5kX2Z3X2NtZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGgyY19jbGFzcywgdTggaDJjX2Z1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTAxNi1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMDE3Olx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEwMTg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEwMTk6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMDIwOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMDIxLVx0dTggaDJjX2Z1bmNfbWFzaywgYmlkID0gQlRDX0JUXzFTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTIyPXN0YXRpYyB2b2lkIF9yZXNldF9idGNfdmFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMTI0LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjY6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjc6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0MCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0MSA9IFx1MDAyNmN4LVx1MDAzZWJ0MTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTExMjktXHR1OCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEyMjA9c3RhdGljIHZvaWQgX2dldF9yZWdfc3RhdHVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTggKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjIyLVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMjM6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMjQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX21vZHVsZSAqbWQgPSBcdTAwMjZidGMtXHUwMDNlbWRpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyNTpcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX21yZWdfdmFsICpwbXJlZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMjYtXHR1MzIgcHJlX2FnY19hZGRyID0gUl9CVENfQkJfUFJFX0FHQ19TMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMzEzPXN0YXRpYyB2b2lkIF9jaGtfYnRjX2VycihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiBjbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMxNS1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE2Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE3Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEzMTg6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE5Olx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTE1MTI9c3RhdGljIHZvaWQgX3VwZGF0ZV9idF9yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBycHRfdHlwZSwgdTggKnBmaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTE0LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTU6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTc6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTE4Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidF9saW5mby1cdTAwM2VhMmRwX2Rlc2M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTE5Olx0dW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mby5ycHRfZmJ0Y19idHZlci5maW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjA6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRhZmhfdjIgKnBhZmhfdjIgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUyMTpcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqcGFmaF92NyA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIyOlx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0ZGV2aW5mbyAqcGRldiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIzOlx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoICpwYWZoX3YxID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YxICpwc2Nhbl92MTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YyICpwc2Nhbl92MjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3Y3ICpwc2Nhbl92NztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1MjctXHRib29sIHNjYW5fdXBkYXRlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTM2LVx0XHRpZiAodmVyLVx1MDAzZWZjeGJ0dmVyID09IDgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1Mzc6XHRcdFx0cHZlci1cdTAwM2V2OCA9ICooc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0dmVyX3Y4ICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTUzOC1cdFx0XHRidCA9IHB2ZXItXHUwMDNldjguYnRfaWQgPyBcdTAwMjZidGMtXHUwMDNlY3guYnQxIDogXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTQzLVx0XHR9IGVsc2UgaWYgKHZlci1cdTAwM2VmY3hidHZlciA9PSA3KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTQ0Olx0XHRcdHB2ZXItXHUwMDNldjcgPSAqKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHZlcl92NyAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NDUtXHRcdFx0YnQtXHUwMDNldmVyX2luZm8uZncgPSBsZTMyX3RvX2NwdShwdmVyLVx1MDAzZXY3LmZ3X3Zlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU0OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1NTA6XHRcdFx0cHZlci1cdTAwM2V2MSA9ICooc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0dmVyX3YxICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU1MS1cdFx0XHRidC1cdTAwM2V2ZXJfaW5mby5mdyA9IGxlMzJfdG9fY3B1KHB2ZXItXHUwMDNldjEuZndfdmVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTU4LVx0XHRpZiAodmVyLVx1MDAzZWZjeGJ0c2NhbiA9PSAxKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTU5Olx0XHRcdHBzY2FuX3YxID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjEgKilwZmluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTYwLVx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJUQ19TQ0FOX01BWDE7IGkmIzQzOyYjNDM7KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU2Ni1cdFx0fSBlbHNlIGlmICh2ZXItXHUwMDNlZmN4YnRzY2FuID09IDIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1Njc6XHRcdFx0cHNjYW5fdjIgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92MiAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NjgtXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQ1hTQ0FOX01BWDsgaSYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTc1LVx0XHR9IGVsc2UgaWYgKHZlci1cdTAwM2VmY3hidHNjYW4gPT0gNykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU3NjpcdFx0XHRwc2Nhbl92NyA9IChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3Y3ICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU3Ny1cdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBDWFNDQU5fTUFYOyBpJiM0MzsmIzQzOykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1ODQtXHRcdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeGJ0c2NhbiA9PSA4KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTg1Olx0XHRcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjggKnBzY2FuX3Y4ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODY6XHRcdFx0XHQoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92OCAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODc6XHRcdFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICp0YnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU4OC1cdFx0XHRcdHBzY2FuX3Y4LVx1MDAzZWJ0X2lkID8gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MSA6IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYwMi1cdFx0aWYgKHZlci1cdTAwM2VmY3hidGFmaCA9PSAyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjAzOlx0XHRcdHBhZmhfdjIgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3YyICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYwNC1cdFx0XHRpZiAocGFmaF92Mi1cdTAwM2VtYXBfdHlwZSBcdTAwMjYgUlBUX0JUX0FGSF9TRVFfTEVHQUNZKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYxMy1cdFx0fSBlbHNlIGlmICh2ZXItXHUwMDNlZmN4YnRhZmggPT0gNykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYxNDpcdFx0XHRwYWZoX3Y3ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MTUtXHRcdFx0aWYgKHBhZmhfdjctXHUwMDNlbWFwX3R5cGUgXHUwMDI2IFJQVF9CVF9BRkhfU0VRX0xFR0FDWSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MjQtXHRcdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeGJ0YWZoID09IDgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2MjU6XHRcdFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3Y4ICpwYWZoX3Y4ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2MjY6XHRcdFx0XHQoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3Y4ICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYyNzpcdFx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKnRidCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjI4LVx0XHRcdFx0cGFmaF92OC1cdTAwM2VidF9pZCA/IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDEgOiBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYyOTpcdFx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqdGJ0X2xpbmZvID0gXHUwMDI2dGJ0LVx1MDAzZWxpbmtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY0MC1cdFx0fSBlbHNlIGlmICh2ZXItXHUwMDNlZmN4YnRhZmggPT0gMSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY0MTpcdFx0XHRwYWZoX3YxID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaCAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDItXHRcdFx0bWVtY3B5KFx1MDAyNmJ0X2xpbmZvLVx1MDAzZWFmaF9tYXBbMF0sIHBhZmhfdjEtXHUwMDNlYWZoX2wsIDQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDctXHRjYXNlIEJUQ19SUFRfVFlQRV9CVF9ERVZJQ0U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjQ4Olx0XHRwZGV2ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGRldmluZm8gKilwZmluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjQ5LVx0XHRhMmRwLVx1MDAzZWRldmljZV9uYW1lID0gbGUzMl90b19jcHUocGRldi1cdTAwM2VkZXZfbmFtZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2NTg6c3RhdGljIHZvaWQgcnR3ODlfYnRjX2Z3X3JwdF9ldm50X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICppbmRleClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY2MC1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjYxOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjc3OnN0cnVjdCBydHc4OV9idGNfcHJwdCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjc4LVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xNjgzPXN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2ODQ6XHRcdFx0ICAgc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY4NS1cdFx0XHQgICB1OCAqcHJwdGJ1ZiwgdTMyIGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2ODctXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY4ODpcdHN0cnVjdCBydHc4OV9idGNfdmVyICpmd3N1YnZlciA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm8uZndfc3VidmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY4OTpcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MDpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MTpcdHN0cnVjdCBydHc4OV9idGNfcnB0X2Ntbl9pbmZvICpwY2luZm8gPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MjpcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MzpcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk0Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk1Olx0dW5pb24gcnR3ODlfYnRjX2ZidGNfcnB0X2N0cmxfdmVyX2luZm8gKnBycHQgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5NjpcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX2N5c3RhX2luZm8gKnBjeXN0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk3Olx0c3RydWN0IHJ0dzg5X2J0Y19wcnB0ICpidGNfcHJwdCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjk4LVx0dm9pZCAqcnB0X2NvbnRlbnQgPSBOVUxMLCAqcGZpbmZvID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTcxNTpcdGJ0Y19wcnB0ID0gKHN0cnVjdCBydHc4OV9idGNfcHJwdCAqKVx1MDAyNnBycHRidWZbaW5kZXhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTcxNi1cdHJwdF90eXBlID0gYnRjX3BycHQtXHUwMDNldHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTcyNDpcdHJ0dzg5X2J0Y19md19ycHRfZXZudF92ZXIocnR3ZGV2LCBcdTAwMjZycHRfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE4NTAtXHRcdFx0XHRcdCAgdHJhY2Vfc3RlcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTg1MTpcdFx0XHRcdFx0ICBvZmZzZXRvZihzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc3RlcHNfdjIsIHN0ZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1Mi1cdFx0XHRmd3N1YnZlci1cdTAwM2VmY3hzdGVwID0gcGZ3aW5mby1cdTAwM2VycHRfZmJ0Y19zdGVwLmZpbmZvLnYyLmZ2ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1Ni1cdFx0XHRcdFx0ICB0cmFjZV9zdGVwICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxODU3Olx0XHRcdFx0XHQgIG9mZnNldG9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zdGVwc192Mywgc3RlcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xODU4LVx0XHRcdGZ3c3VidmVyLVx1MDAzZWZjeHN0ZXAgPSBwZndpbmZvLVx1MDAzZXJwdF9mYnRjX3N0ZXAuZmluZm8udjMuZnZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0yNjU4PXN0YXRpYyB2b2lkIF9wYXJzZV9idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NTk6XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY2MC1cdFx0XHQgICAgICB1OCAqcGJ1ZiwgdTMyIGJ1Zl9sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NjI6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjYzOlx0c3RydWN0IHJ0dzg5X2J0Y19wcnB0ICpidGNfcHJwdCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjY0LVx0dTMyIGluZGV4ID0gMCwgcnB0X2xlbiA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY3MC1cdHdoaWxlIChwYnVmKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjcxOlx0XHRidGNfcHJwdCA9IChzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKilcdTAwMjZwYnVmW2luZGV4XTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NzItXHRcdGlmIChpbmRleCAmIzQzOyAyIFx1MDAzZT0gdmVyLVx1MDAzZWluZm9fYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI2ODk9c3RhdGljIHZvaWQgX2FwcGVuZF90ZG1hKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjkxLVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTI6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTM6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcgKnRsdl92NztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSAqdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTc6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYV92MyAqdjM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjk4LVx0dTE2IGxlbiA9IGJ0Yy1cdTAwM2Vwb2xpY3lfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzA4Olx0dGx2ID0gKHN0cnVjdCBydHc4OV9idGNfYnRmX3RsdiAqKVx1MDAyNmJ0Yy1cdTAwM2Vwb2xpY3lbbGVuXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MDktXHR0bHYtXHUwMDNldHlwZSA9IENYUE9MSUNZX1RETUE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzEwLVx0aWYgKHZlci1cdTAwM2VmY3h0ZG1hID09IDEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI3MTE6XHRcdHYgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKilcdTAwMjZ0bHYtXHUwMDNldmFsWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxMi1cdFx0dGx2LVx1MDAzZWxlbiA9IHNpemVvZigqdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxNS1cdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeHRkbWEgPT0gNyB8fCB2ZXItXHUwMDNlZmN4dGRtYSA9PSA0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzE2Olx0XHR0bHZfdjcgPSAoc3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3ICopXHUwMDI2YnRjLVx1MDAzZXBvbGljeVtsZW5dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxNy1cdFx0dGx2X3Y3LVx1MDAzZWxlbiA9IHNpemVvZihkbS1cdTAwM2V0ZG1hKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzIzLVx0XHR0bHYtXHUwMDNlbGVuID0gc2l6ZW9mKCp2Myk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzI0Olx0XHR2MyA9IChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYV92MyAqKVx1MDAyNnRsdi1cdTAwM2V2YWxbMF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzI1LVx0XHR2My1cdTAwM2VmdmVyID0gdmVyLVx1MDAzZWZjeHRkbWE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MjczNz1zdGF0aWMgdm9pZCBfYXBwZW5kX3Nsb3RfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MzktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc0MDpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc0MTpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3RsdiAqdGx2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3NDItXHRzdHJ1Y3QgYnRjX2ZidGNfMXNsb3QgKnYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzU4Olx0XHR0bHYgPSAoc3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2ICopXHUwMDI2YnRjLVx1MDAzZXBvbGljeVtsZW5dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc1OS1cdFx0diA9IChzdHJ1Y3QgYnRjX2ZidGNfMXNsb3QgKilcdTAwMjZ0bHYtXHUwMDNldmFsWzBdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI3ODI9c3RhdGljIHZvaWQgX2FwcGVuZF9zbG90X3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc4NDpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqdGx2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODUtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc4NjpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc4Ny1cdHU4IGksIGNudCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjgwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI4MDU6XHRcdFx0dGx2ID0gKHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqKVx1MDAyNmJ0Yy1cdTAwM2Vwb2xpY3lbbGVuXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4MDYtXHRcdFx0dGx2LVx1MDAzZXR5cGUgPSBDWFBPTElDWV9TTE9UO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI4Mzc9c3RhdGljIHZvaWQgX2FwcGVuZF9zbG90KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yODQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg0NzpzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yODQ4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4NDktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg1MDpcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg1MS1cdHUzMiBiaXRfbWFwID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA0NzpzdGF0aWMgdm9pZCBydHc4OV9idGNfZndfc2V0X3Nsb3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwNDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA0OS1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMDUwOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMDUxOlx0c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3ICp0bHZfdjcgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MjpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9zbG90X3RhYmxlICp0Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMDUzOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDU0LVx0dTE2IG4sIGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA4NjpzdGF0aWMgdm9pZCBydHc4OV9idGNfZndfZW5fcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwODctXHRcdFx0XHRib29sIGZvcmNlX2V4ZWMsIHUzMiBycHRfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwODktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA5MDpcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqZndpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwOTEtXHR1bmlvbiBydHc4OV9mYnRjX3J0cF9jdHJsIHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzEzMz1zdGF0aWMgdm9pZCBidGNfZndfc2V0X21vbnJlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzEzNS1cdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxMzY6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMTM3Olx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X21vbl9yZWdfdjEgKnYxID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxMzg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyAqdjcgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzEzOS1cdHU4IGksIG4sIHVsZW4sIGN4bXJlZ19tYXg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxNTg6XHR1bGVuID0gc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxNTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzE5ND1zdGF0aWMgdm9pZCBfdXBkYXRlX2RtX3N0ZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxOTctXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzE5ODpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjEwPXN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyMTMtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzIxNDpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzIxNS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI2MT1zdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjYyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNjM6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjY0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyODc9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyODk6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjkwLVx0dTMyIGVuX21hcF92NyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMxMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzE0Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cdTAwM2VidGMudmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMxNS1cdHUzMiBlbl9tYXBfdjggPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM2LVx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXHUwMDI2YnRjLVx1MDAzZWdwaW87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM3Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM4LVx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzJiIGwyX2gyYztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDI1PXN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNy1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDI4Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDI5LVx0dTggYnQxX3N3X3R5cGUgPSBCVENfU1dJVENIX0lOVEVSTkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM0Njc9c3RhdGljIHZvaWQgX2Z3X3NldF9kcnZfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ3MDpcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ3MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNTgxPXZvaWQgYnRjX2Z3X2V2ZW50KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZXZ0X2lkLCB2b2lkICpkYXRhLCB1MzIgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM1ODMtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzU4NDpcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNTg1Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNTg2LVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNjE2PXN0YXRpYyB2b2lkIF9zZXRfZ250KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X21hcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjE5LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MjA6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MjE6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfb3V0c3JjX3NldF9pbmZvICpvID0gXHUwMDI2ZG0tXHUwMDNlb3N0X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjIyLVx0c3RydWN0IHJ0dzg5X21hY19heF93bF9hY3QgKndsYWN0X3NldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNzY5PXN0YXRpYyB2b2lkIF9zZXRfd2xfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzc3Mi1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNzczOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNzc0Olx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNzc1LVx0Ym9vbCBsZXZlbF9jaGcgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zODIxPXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODI0LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM4MjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4MjYtXHRib29sIGxldmVsX2NoZyA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4NTI9c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTUtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1NjpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1Ny1cdHU4IGgyY19mdW5jID0gU0VUX0JUX1RYX1BXUjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTE0PXN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5MTctXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzkxODpcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzkxOTpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zOTIwLVx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfTE5BX0NPTlNUUkFJTjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTg4PXN0YXRpYyB2b2lkIF9zZXRfYnRfY29yeF90YWJsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzk5MC1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTkxOlx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTkyOlx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM5OTM6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5OTQtXHR1OCBpc18yNGcsIGlzXzU2ZywgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDI4PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmFfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwMzAtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAzMTpcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAzMjpcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFx1MDAyNmN4LVx1MDAzZXdsLnN0YXR1cy5tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDMzOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDM0LVx0Ym9vbCBidF8yciA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQwNTY9c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDA1OS1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYwOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYxOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYyOlx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjM6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqciA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjY6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcdTAwMjZ3bC1cdTAwM2VzdGF0dXMubWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2NzpcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcGFyYTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwNjgtXHR1OCBibW9kZSA9IGRtLVx1MDAzZXRkZF9iaW5kLndsX2xpbmtfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MTg0PXN0YXRpYyB2b2lkIF91cGRhdGVfYnRjX3N0YXRlX21hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE4Ni1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg3Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg4Olx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE4OTpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTkwOlx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjExPXN0YXRpYyB1OCBfZ2V0X3dsX2d1YXJkX2J3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaW5kZXgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyMTM6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjE0LVx0dTggZ3VhcmRfY2ggPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VhZmhfZ3VhcmRfY2g7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDI1Mj1zdGF0aWMgdm9pZCBfc2V0X3dsX2NoX21hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDI1NC1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MjU1Olx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyNTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2FmaF9pbmZvICphZmg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjU3LVx0dTE2IGNoX3N0YXJ0LCBjaF9lbmQsIGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDM3MT1zdGF0aWMgdm9pZCBfc2V0X3dsX2NoX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQzNzMtXHRzdGF0aWMgY29uc3QgdTggcGF0aF9od2JbQlRDX1JGX05VTV0gPSB7UlRXODlfUEhZXzAsIFJUVzg5X1BIWV8xfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQzNzQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0Mzc1Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDM3NjpcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQzNzctXHR1MzIgdmNvX2ZyZXEsIGNoX2xvID0gMCwgY2hfdXAgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ0NTA9c3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ1Mi1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDUzOlx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDU0Olx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDQ1NTpcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ0NTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JsaW5rICpybGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0NTctXHR1OCBoMmNfZnVuYywgaHdiLCBidF9saW5rX2NoZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTM2LVx0XHRcdCAgICBcdTAwMjZ3bC1cdTAwM2VhZmhfaW5mb1tod2JdW2pdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDUzNzpcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8pKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ1MzgtXHRcdFx0ICAgICFidF9saW5rX2NoZyBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTQzLVx0XHQgICAgICAgXHUwMDI2d2wtXHUwMDNlYWZoX2luZm9baHdiXVtqXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1NDQ6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDU0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00NTc5PXN0YXRpYyBib29sIF9jaGVja19mcmVlcnVuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTgxLVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1ODI6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU4MzpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU4NDpcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1ODU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg2Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2YnRfbGluZm8tXHUwMDNlaGlkX2Rlc2M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg3Olx0c3RydWN0IHJ0dzg5X2J0Y19tb2R1bGUgKm1kID0gXHUwMDI2YnRjLVx1MDAzZW1kaW5mbztcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODE5OQoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29leGlzdGVuY2UgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGNvZXguY2AgZmlsZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGV4cG9zZWQgaW50ZXJmYWNlIOKAkyB3aGljaCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG1lYW50IHRvIGJlIHVzZWQgZXh0ZXJuYWxseT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29leGlzdGVuY2UgZnVuY3Rpb25zIGFyZSAqbm90KiBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgdGhhdCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBvciBwb3RlbnRpYWxseSBldmVuIG90aGVyIG1vZHVsZXMsIGNvdWxkIGNhbGwuCgpUaGVyZWZvcmUsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZ3JlcCBmb3IgZWl0aGVyIGBydHc4OV9idGNfYCBvciBgcnR3ODlfY29leF9gIHdpdGhpbiBgY29leC5jYCBhbmQgb25seSByZXR1cm4gdGhvc2UgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGFzIGBzdGF0aWNgLiBUaGF0IHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgaW50ZXJuYWwgZnVuY3Rpb24gY2FsbHMgdGhhdCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIGxldmVyYWdlcy4gSSBleHBlY3QgdGhpcyB3aWxsIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGV4dGVybmFsIGludGVyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHZvaWR8aW50fGJvb2x8dTMyKSBydHc4OV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00NzE3PXN0YXRpYyB2b2lkIF9zZXRfdGRtYV9iaW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB0ZG1hX29uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ3NjAtI2RlZmluZSBCVENfQjFfTUFYIDI1MCAvKiB1bml0IG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NzYxOnZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzYyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz01MDk1PUVYUE9SVF9TWU1CT0wocnR3ODlfYnRjX3NldF9wb2xpY3kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNTA5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjUwOTc6dm9pZCBydHc4OV9idGNfc2V0X3BvbGljeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTUwOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc1ODc9c3RhdGljIHZvaWQgX3VwZGF0ZV93bF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X2J0Y193bF9saW5rX2luZm8gKndsX2xpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzE2OnZvaWQgcnR3ODlfY29leF9hY3QxX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzE3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NzczOTp2b2lkIHJ0dzg5X2NvZXhfYnRfZGV2aW5mb193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzc0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzc1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjc3NTU6dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg0MTk9dm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NDY6dm9pZCBydHc4OV9idGNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODY2Mzp2b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NzE6dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjcyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjkwPXN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODcyMzp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODc4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3ODQ6dm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4ODE0OnZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9maW5pc2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODgxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODgzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4Mzc6dm9pZCBydHc4OV9idGNfbnRmeV9zd2l0Y2hfYmFuZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODg1OTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODYwLVx0XHRcdFx0ICAgIGVudW0gYnRjX3BrdF90eXBlIHBrdF90eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4OTI3OnZvaWQgcnR3ODlfYnRjX250ZnlfZWFwb2xfcGFja2V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTI4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODkzODp2b2lkIHJ0dzg5X2J0Y19udGZ5X2FycF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4OTQ4OnZvaWQgcnR3ODlfYnRjX250ZnlfZGhjcF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4OTU5OnZvaWQgcnR3ODlfYnRjX250ZnlfaWNtcF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTkxNTc9c3RhdGljIHZvaWQgX250Znlfcm9sZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5MjI5OnZvaWQgcnR3ODlfYnRjX250Znlfcm9sZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMzAtXHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTM0NTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTM0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTQwMD1zdGF0aWMgYm9vbCBfbnRmeV93bF9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfcGF0aCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NDY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTQ2Njp2b2lkIHJ0dzg5X2J0Y19udGZ5X3dsX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9tYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NDY3LVx0XHRcdCAgIGVudW0gYnRjX3dsX3Jma190eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTYzOD1zdGF0aWMgdm9pZCBydHc4OV9idGNfbnRmeV93bF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk2NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NjU1OnZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk2NTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk3MDI9c3RhdGljIHU4IHJ0dzg5X2J0Y19jMmhfZ2V0X2luZGV4X2J5X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk3Njc6dm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NzY4LVx0XHRcdCAgdTMyIGxlbiwgdTggY2xhc3MsIHU4IGZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTMyNDY9c3NpemVfdCBydHc4OV9idGNfZHVtcF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzMyMDp2b2lkIHJ0dzg5X2NvZXhfcmVjb2duaXplX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzMyMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzM1MTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3ByZXNlcnZlX2J0X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzM1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTMzNjQ9RVhQT1JUX1NZTUJPTChydHc4OV9idGNfbnRmeV9wcmVzZXJ2ZV9idF90aW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMzY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTMzNjY6dm9pZCBydHc4OV9idGNfbnRmeV9jb25uX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgc3RhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzM2Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODkxCgkJCQkJCQlvdXRwdXQ6IDIyOQoJCQkJCQkJdGhvdWdodHM6IDEzNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBfc2V0X2J0X3R4X3Bvd2VyYCBmdW5jdGlvbi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIGl0JiMzOTtzIHN0YXRpYy4gTGluZSAzODUyIGNvbmZpcm1zIGl0OiBgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlciguLi4pYC4gT2theSwgaXQmIzM5O3Mgc3RhdGljLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgd2UgY2FuIHRhcmdldCBpdCBkaXJlY3RseSB3aXRoIHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLCBnaXZlbiBjb21waWxlciBpbmxpbmluZyBjb25zaWRlcmF0aW9ucyBmb3Igc3RhdGljIGZ1bmN0aW9ucyBhcyBvdXRsaW5lZCBpbiB0aGUgcHJvbXB0JiMzOTtzIHJ1bGUuIFNpbmNlIGl0JiMzOTtzIGluIGEgYC5jYCBmaWxlLCBpdCBtaWdodCBub3QgYmUgaW5saW5lZCwgYnV0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzLgoKTG9va2luZyBhdCBgY29leC5jYCwgdGhlIGNhbGxlcnMgYXJlIGBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0YCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGVgLCBgcnR3ODlfYnRjX250Znlfd2xfc3RhYCwgYW5kIGBydHc4OV9idGNfYzJoX2hhbmRsZWAuIEVpdGhlciB0aGVzZSBjYW4gYmUgdGFyZ2V0ZWQsIG9yIHRoZSBmdW5jdGlvbiBpdHNlbGYgaWYgbm90IGlubGluZWQuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlIGBydHc4OWAgVVNCIHZhcmlhbnQuIEZyb20gdGhlIGBLY29uZmlnYCBmaWxlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AsIEkgc2VlIHRoZXNlIHJlbGV2YW50IG9wdGlvbnM6IGBSVFc4OWAgKGRlcGVuZHMgb24gYE1BQzgwMjExYCksIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAgKHRyaXN0YXRlKSwgYW5kIHZhcmlvdXMgZGV2aWNlLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgUlRXODlfODg1MkFVYCAoZGVwZW5kcyBvbiBgVVNCYCwgc2VsZWN0cyBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBldGMuKS4gV2UgYWxzbyBoYXZlIGBNQUM4MDIxMWAgYW5kIGBVU0JgLgoKTGV0IG1lIHZlcmlmeSB0aGF0IGBSVFc4OV84ODUyQVVgIHJlYWxseSBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgUlRXODlgLiBEb3VibGUtY2hlY2tpbmcgdGhlIGBLY29uZmlnYDogeWVzLCBgUlRXODlfODg1MkFVYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBzZWxlY3RzIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAuICBTbywgdG8gZW5hYmxlIHRoZSBVU0IgdmFyaWFudCwgdGhlIGZvbGxvd2luZyBjb25maWdzIGFyZSBuZWVkZWQ6IGBSVFc4OWAsIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAsIGBSVFc4OV84ODUyQVVgIChvciBvbmUgb2YgdGhlIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgUlRXODlfODg1MkJVYCwgZXRjLiksIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gSSYjMzk7bGwgYWxzbyBkb3VibGUgY2hlY2sgdGhhdCBgTUFDODAyMTFgIGRlcGVuZHMgb24gYE5FVERFVklDRVNgLCBgV0xBTmAsIGBDRkc4MDIxMWAsIGJ1dCB0aGF0IHNob3VsZCBiZSBzdGFuZGFyZCwgYW5kIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY29ycmVjdC4KCk5vdywgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgcmVtb3ZpbmcgYSBndWFyZCBjb25kaXRpb24sIGAhcmZfYmFuZGAuIFRoaXMgbWVhbnMgdGhhdCBgX3NldF9idF90eF9wb3dlcmAgd2lsbCBub3cgYmUgZXhlY3V0ZWQgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBJcyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nPyBZZXMsIHRoaXMgY2hhbmdlIGltcGFjdHMgZXhlY3V0YWJsZSBkcml2ZXIgbG9naWMgaW4gdGhlIGBydHc4OWAgZHJpdmVyLCB3aGljaCBpcyBhIFJlYWx0ZWsgV2ktRmkgZHJpdmVyLCB3aXRoIFVTQiBkcml2ZXIgdmFyaWFudHMuIFdlIGhhdmUgVVNCIGdhZGdldCBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcyBmb3IgcmVhY2hhYmlsaXR5LiBSZW1vdmluZyB0aGUgY2hlY2sgY291bGQgaW50cm9kdWNlIG5ldyBleGVjdXRpb24gcGF0aHMgb3IgdnVsbmVyYWJpbGl0aWVzLgoKVGhlcmVmb3JlLCBmb3IgRm9jdXNTeW1ib2xzLCBJJiMzOTtsbCBzZWxlY3Q6IGBfc2V0X2J0X3R4X3Bvd2VyYCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydGAsIGBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZWAsIGFuZCBgcnR3ODlfYnRjX2MyaF9oYW5kbGVgLgoKVG8gc3VtbWFyaXplIHRoZSByZXF1aXJlZCBjb25maWdzIGZvciB0aGlzIHRhcmdldCB0aGV5IGFyZTogYFJUVzg5YCwgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgYFJUVzg5Xzg4NTJBVWAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19zZXRfYnRfdHhfcG93ZXImIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0JiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlJiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19jMmhfaGFuZGxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGV4ZWN1dGFibGUgY29udHJvbCBmbG93IGluIFJlYWx0ZWsgcnR3ODkgV2ktRmkgY29leGlzdGVuY2UgbG9naWMgKF9zZXRfYnRfdHhfcG93ZXIpIGJ5IHJlbW92aW5nIHRoZSByZl9iYW5kIGd1YXJkIGNoZWNrLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChlLmcuIFJUVzg5Xzg4NTJBVSkgYW5kIG1hYzgwMjExIGludGVyZmFjZXMsIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X3NldF9idF90eF9wb3dlciYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9pbml0JiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX2MyaF9oYW5kbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXhlY3V0YWJsZSBjb250cm9sIGZsb3cgaW4gUmVhbHRlayBydHc4OSBXaS1GaSBjb2V4aXN0ZW5jZSBsb2dpYyAoX3NldF9idF90eF9wb3dlcikgYnkgcmVtb3ZpbmcgdGhlIHJmX2JhbmQgZ3VhcmQgY2hlY2suIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGUuZy4gUlRXODlfODg1MkFVKSBhbmQgbWFjODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHRoZSBgfHwgIXJmX2JhbmRgIGNoZWNrIGZyb20gdGhlIGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gQWxsIHZhcmlhYmxlcyB3aXRoaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAgKHN1Y2ggYXMgYGJ1ZmApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIG9uIHRoZSBzdGFjayAoYHU4IGJ1ZlsyXSA9IHt9O2ApLCBhbmQgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSBhcyBhIGB1OGAgcGFyYW1ldGVyLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmUwODI1YWNmZTMwY2I0ZmFmOWI2MDIyMTFmNTllOTQzOTUwMmE2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDA3OjE3OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwppbmRleCA1YTlkYzRkOGEwMGJhLi5mNDJhNmNjM2ViN2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwpAQCAtMzg1OSw3ICYjNDM7Mzg1OSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCwKIAl1OCBidWZbMl0gPSB7fTsKIAl1OCBsZW4gPSBzaXplb2YoKmJ1Zik7CiAKLQlpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZCkKJiM0MzsJaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApCiAJCXJldHVybjsKIAogCWlmIChidC0mZ3Q7cmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIENvZXhpc3RlbmNlIFBhdGNoKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGRpdmUgaW50byBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvLCBvZiBjb3Vyc2UsICphY3R1YWxseSogbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIOKAkyBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMgbWFkZSBkaXJlY3RseS4gIEJleW9uZCB0aGUgcGF0Y2ggaXRzZWxmLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ2V0IGEgc2Vuc2Ugb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmaWxlLCB0byBzZWUgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgY2hhbmdlcy4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhYm91dCBgX3NldF9idF90eF9wb3dlcmAgYW5kIGhvdyB0aGUgYHJmX2JhbmRgIHZhcmlhYmxlIGludGVyYWN0cyB3aXRoIGl0LiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIHVzZSBlaXRoZXIgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgc3BlY2lmaWNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24mIzM5O3MgYmVoYXZpb3IgaW4gcmVsYXRpb24gdG8gZnJlcXVlbmN5IGJhbmQgc2VsZWN0aW9uLCBhcyBhbnkgY2hhbmdlcyBoZXJlIGNvdWxkIHNpZ25pZmljYW50bHkgaW1wYWN0IGNvZXhpc3RlbmNlIHdpdGggQmx1ZXRvb3RoLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIGtub3cgKndoYXQqIGl0IGRvZXMgYW5kICpob3cqIGl0IGRvZXMgaXQgd2l0aCBgcmZfYmFuZGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM4NTA6XHR9XG4zODUxOlx0XG4zODUyOlx0c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuMzg1MzpcdFx0XHRcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4zODU0Olx0e1xuMzg1NTpcdFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbjM4NTY6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuMzg1NzpcdFx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xuMzg1ODpcdFx0dTggaSwgaWRfc3RhcnQsIGlkX3N0b3A7XG4zODU5Olx0XHR1OCBidWZbMl0gPSB7fTtcbjM4NjA6XHRcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbjM4NjE6XHRcbjM4NjI6XHRcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4zODYzOlx0XHRcdHJldHVybjtcbjM4NjQ6XHRcbjM4NjU6XHRcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuMzg2NjpcdFx0XHRyZXR1cm47XG4zODY3Olx0XG4zODY4Olx0XHRpZiAoYmlkID09IEJUQ19BTExfQlQpIHtcbjM4Njk6XHRcdFx0aWRfc3RhcnQgPSBCVENfQlRfMVNUO1xuMzg3MDpcdFx0XHRpZF9zdG9wID0gQlRDX0JUXzJORDtcbjM4NzE6XHRcdH0gZWxzZSB7XG4zODcyOlx0XHRcdGlkX3N0YXJ0ID0gYmlkO1xuMzg3MzpcdFx0XHRpZF9zdG9wID0gYmlkO1xuMzg3NDpcdFx0fVxuMzg3NTpcdFxuMzg3NjpcdFx0Zm9yIChpID0gaWRfc3RhcnQ7IGkgXHUwMDNjPSBpZF9zdG9wOyBpJiM0MzsmIzQzOykge1xuMzg3NzpcdFx0XHRpZiAoaSA9PSBCVENfQlRfMk5EKSB7XG4zODc4Olx0XHRcdFx0aWYgKCEocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlcGFyYV92ZXIgXHUwMDI2IEJUQ19GRUFUX0RVQUxfQlQpKVxuMzg3OTpcdFx0XHRcdFx0Y29udGludWU7XG4zODgwOlx0XG4zODgxOlx0XHRcdFx0YnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQxO1xuMzg4MjpcdFx0XHRcdGgyY19mdW5jIHw9IEJUX0gyQ19GVU5DX0JUMk5EO1xuMzg4MzpcdFx0XHR9XG4zODg0Olx0XG4zODg1Olx0XHRcdGJ1ZlswXSA9IChzOCkoLWxldmVsKTtcbjM4ODY6XHRcdFx0YnVmWzFdID0gcmZfYmFuZDsgIC8qIGJpdC1tYXA6IGJpdDEtXHUwMDNlNUdIei82R2h6LCBiaXQwLVx1MDAzZTIuNEdIeiAqL1xuMzg4NzpcdFxuMzg4ODpcdFx0XHRpZiAoIWZvcmNlX2V4ZWMgXHUwMDI2XHUwMDI2ICFidGMtXHUwMDNlY2xpX2gyY19jbWQpIHtcbjM4ODk6XHRcdFx0XHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNlxuMzg5MDpcdFx0XHRcdCAgICBidC1cdTAwM2V0eF9wb3dlcl9ub3cgPT0gbGV2ZWwpXG4zODkxOlx0XHRcdFx0XHRjb250aW51ZTtcbjM4OTI6XHRcdFx0XHRlbHNlIGlmIChyZl9iYW5kICE9IFJUVzg5X0JBTkRfMkcgXHUwMDI2XHUwMDI2XG4zODkzOlx0XHRcdFx0XHQgYnQtXHUwMDNldHhfcG93ZXJfbm93XzZnID09IGxldmVsKVxuMzg5NDpcdFx0XHRcdFx0Y29udGludWU7XG4zODk1Olx0XHRcdH1cbjM4OTY6XHRcbjM4OTc6XHRcdFx0aWYgKHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXG4zODk4Olx0XHRcdFx0bGVuID0gU0VUX1JGX1BBUkFfQVhfTEVOO1xuMzg5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzIxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBEZWVwZXIgaW50byBCbHVldG9vdGggVHJhbnNtaXNzaW9uIFBvd2VyKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYXQgYSBncmFudWxhciBsZXZlbC4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIGl0JiMzOTtzIGEgcHJpdmF0ZSBmdW5jdGlvbiwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgQmx1ZXRvb3RoIHRyYW5zbWl0dGVyJiMzOTtzIHBvd2VyIG91dHB1dC4gSSBrbm93IHRoaXMgaXMgYSBjcml0aWNhbCBwYXJhbWV0ZXIuIEVuc3VyaW5nIHByb3BlciBwb3dlciBsZXZlbCBpcyBwYXJhbW91bnQgZm9yIHJhbmdlLCBjb25uZWN0aW9uIHN0YWJpbGl0eSwgYW5kLCBvZiBjb3Vyc2UsIGFkaGVyZW5jZSB0byByZWd1bGF0b3J5IGxpbWl0cy4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpcyB2aXRhbCBmb3IgdHJvdWJsZXNob290aW5nIGNvbm5lY3Rpdml0eSBpc3N1ZXMgb3Igb3B0aW1pemluZyBwZXJmb3JtYW5jZSBpbiBteSBzeXN0ZW1zLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyZmFjZSDigJMgd2hldGhlciBpdCYjMzk7cyBkaXJlY3QgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uLCB1c2VzIGEgSEFMLCBvciBpbnRlcmFjdHMgd2l0aCBhIEJsdWV0b290aCBjb250cm9sbGVyIHRocm91Z2ggYW4gSENJIGNvbW1hbmQuIEkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBpbnB1dCBwYXJhbWV0ZXJzOiBhcmUgd2UgZGVhbGluZyB3aXRoIGEgZEJtIHZhbHVlIGRpcmVjdGx5LCBvciBhIG1vcmUgYWJzdHJhY3QgbGV2ZWw/IEFuZCBob3cgZG9lcyBpdCBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucz8gQW55IHJhbmdlIGNoZWNrcyBvciBjbGFtcGluZz8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBpbnRlcm5hbCB2YXJpYWJsZXMgb3Igc3RhdGVzPyBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIGZsb3cgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbXBsaWNpdCBwb3dlciBtYW5hZ2VtZW50IG9yIGR5bmFtaWMgcG93ZXIgYWRhcHRhdGlvbiBpbnZvbHZlZC4gTXkgZ29hbCBoZXJlIGlzIGEgZnVsbCBjb25jZXB0dWFsIG1vZGVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzg5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODkwOlx0XHRcdFx0ICAgIGJ0LVx1MDAzZXR4X3Bvd2VyX25vdyA9PSBsZXZlbClcbjM4OTE6XHRcdFx0XHRcdGNvbnRpbnVlO1xuMzg5MjpcdFx0XHRcdGVsc2UgaWYgKHJmX2JhbmQgIT0gUlRXODlfQkFORF8yRyBcdTAwMjZcdTAwMjZcbjM4OTM6XHRcdFx0XHRcdCBidC1cdTAwM2V0eF9wb3dlcl9ub3dfNmcgPT0gbGV2ZWwpXG4zODk0Olx0XHRcdFx0XHRjb250aW51ZTtcbjM4OTU6XHRcdFx0fVxuMzg5NjpcdFxuMzg5NzpcdFx0XHRpZiAocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbjM4OTg6XHRcdFx0XHRsZW4gPSBTRVRfUkZfUEFSQV9BWF9MRU47XG4zODk5Olx0XG4zOTAwOlx0XHRcdGlmICghX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIGgyY19mdW5jLCBidWYsIGxlbikpIHtcbjM5MDE6XHRcdFx0XHRidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmEuYnRfdHhfcG93ZXJbaV0gPSBsZXZlbDtcbjM5MDI6XHRcdFx0XHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHKVxuMzkwMzpcdFx0XHRcdFx0YnQtXHUwMDNldHhfcG93ZXJfbm93ID0gbGV2ZWw7XG4zOTA0Olx0XHRcdFx0ZWxzZVxuMzkwNTpcdFx0XHRcdFx0YnQtXHUwMDNldHhfcG93ZXJfbm93XzZnID0gbGV2ZWw7XG4zOTA2Olx0XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuMzkwNzpcdFx0XHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBidCVkX3R4X3Bvd2VyX2xldmVsID0gJWRcXG5cJiMzNDssXG4zOTA4Olx0XHRcdFx0XHQgICAgX19mdW5jX18sIGksIGxldmVsKTtcbjM5MDk6XHRcdFx0fVxuMzkxMDpcdFx0fVxuMzkxMTpcdH1cbjM5MTI6XHRcbjM5MTM6XHQjZGVmaW5lIEJUQ19CVF9SWF9OT1JNQUxfTFZMIDdcbjM5MTQ6XHRzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcbjM5MTU6XHRcdFx0XHQgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4zOTE2Olx0e1xuMzkxNzpcdFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbjM5MTg6XHRcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuMzkxOTpcdFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbjM5MjA6XHRcdHU4IGgyY19mdW5jID0gU0VUX0JUX0xOQV9DT05TVFJBSU47XG4zOTIxOlx0XHR1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDtcbjM5MjI6XHRcdGJvb2wgc3RhdGUgPSBmYWxzZTtcbjM5MjM6XHRcdHUzMiBzY2JkX2JpdCA9IDA7XG4zOTI0Olx0XHR1OCBidWZbMl0gPSB7fTtcbjM5MjU6XHRcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbjM5MjY6XHRcbjM5Mjc6XHRcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpXG4zOTI4Olx0XHRcdHJldHVybjtcbjM5Mjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJsdWV0b290aCBUWCBQb3dlciBTZXR0aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlIGhhdmUgYSBidWZmZXIsIGBidWZgLCBpbml0aWFsaXplZCBhcyBgdTggYnVmWzJdID0ge307YC4gU28gaXQmIzM5O3MgYSB0d28tYnl0ZSBhcnJheSwgemVyb2VkIG91dC4gTGluZSAzODYwIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc6IGB1OCBsZW4gPSBzaXplb2YoKmJ1Zik7YC4gTm93LCBgc2l6ZW9mKCpidWYpYCBzaG91bGQgYmUgYDFgIGJlY2F1c2UgYCpidWZgIGRlcmVmZXJlbmNlcyB0byBhIGB1OGAsIHdoaWNoIGlzIG9uZSBieXRlLiBUaG91Z2gsIGlmIHRoZSBgY2hpcF9nZW5gIGlzIGBSVFc4OV9DSElQX0FYYCwgdGhlbiB0aGUgbGVuZ3RoIGNvdWxkIGFjdHVhbGx5IGJlIDIgb3IgMSBhcyBkZXRlcm1pbmVkIGJ5ICBgU0VUX1JGX1BBUkFfQVhfTEVOYC4KClRoYXQgc2VlbXMgYSBiaXQgb2RkOyB0aGUgYnVmZmVyIGlzICpjbGVhcmx5KiB0d28gYnl0ZXMgd2lkZSwgYm90aCBpbml0aWFsaXplZCwgYW5kIHlldCB0aGUgY29kZSBjYWxjdWxhdGVzIGBsZW5gIGFzIGAxYCAob3Igd2hhdGV2ZXIgYFNFVF9SRl9QQVJBX0FYX0xFTmAgZXZhbHVhdGVzIHRvKS4gIFRoaXMgbWVhbnMgd2UgYXJlIGxvc2luZyBpbmZvcm1hdGlvbi4KClRoZW4sIHdlIGhhdmUgdGhlIGBfc2V0X2J0X3R4X3Bvd2VyYCBmdW5jdGlvbiwgd2hpY2ggY2FsbHMgYF9zZW5kX2Z3X2NtZChydHdkZXYsIEJURkNfU0VULCBoMmNfZnVuYywgYnVmLCBsZW4pYC4gVGhpcyBpcyB3aGVyZSB3ZSYjMzk7cmUgYWN0dWFsbHkgKnNlbmRpbmcqIHRoZSBjb21tYW5kLiBTbywgd2l0aCB0aGlzIGJ1ZmZlciBhbmQgbGVuZ3RoLCB3ZSYjMzk7cmUgc2VuZGluZyB3aGF0ZXZlciBpcyBpbiBgYnVmYCB0byB0aGUgZmlybXdhcmUgdXNpbmcgYSBjb21tYW5kLiBUaGlzIGlzIHZlcnkgaW1wb3J0YW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29tbWFuZCBpcyBleHBlY3RpbmcgYW5kIGlmIHRoaXMgYGxlbmAgbWlzbWF0Y2ggaXMgaW50ZW5kZWQuICBJIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYF9zZXRfYnRfdHhfcG93ZXJgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19zZXRfYnRfdHhfcG93ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozODUyOnN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTMtXHRcdFx0ICAgICB1OCByZl9iYW5kLCB1OCBsZXZlbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDU2PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxNjUtXHRcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIHBhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQxNjY6XHRcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2Ny1cdFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzU0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgcnR3ODkgQ29leCBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIGBfc2V0X2J0X3R4X3Bvd2VyYCwgSSBzZWUgdGhleSYjMzk7dmUgc2ltcGxpZmllZCB0aGUgY2hlY2suIEl0IHVzZWQgdG8gYmUgYGlmIChidC0mZ3Q7YmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKWAgYW5kIG5vdyBpdCYjMzk7cyBqdXN0IGBpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBzY2FuIGZvciBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcy4gQW55dGltZSB5b3UgY2hhbmdlIGEgY29uZGl0aW9uYWwgbGlrZSB0aGF0LCB5b3UgbmVlZCB0byBiZSB2ZXJ5IGNhcmVmdWwuCgpNeSBmaXJzdCBsaW5lIG9mIGF0dGFjayBpcyB0byBsb29rIGZvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgcGxhY2VzIHdoZXJlIHdlIG1pZ2h0IG5vdyBiZSByZWFkaW5nIGZyb20gbWVtb3J5IHRoYXQgd2Ugc2hvdWxkbiYjMzk7dCBiZSwgYW55IGBjb3B5X3RvX3VzZXJgIGNhbGxzIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIG9yIGFueSB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMuIExldCYjMzk7cyBzZWUuLi4gdGhlIGB1OCBidWZbMl0gPSB7fTtgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCwgd2hpY2ggaXMgZ29vZC4gV2UgYXNzaWduIHZhbHVlcyB0byBgYnVmWzBdYCBhbmQgYGJ1ZlsxXWAsIHRoZSBgbGVuYCB2YXJpYWJsZSBpcyBlaXRoZXIgMSBvciBgU0VUX1JGX1BBUkFfQVhfTEVOYCAod2hpY2ggaXMgMiksIHNvIHRoZSBhcnJheSBpcyBmdWxseSB3cml0dGVuIHRvIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLiBJbXBvcnRhbnRseSwgbm90aGluZyBpcyBldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIHNvIHdlJiMzOTtyZSBzYWZlIHRoZXJlLiBJJiMzOTttIG5vdCBzZWVpbmcgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBpbnRlcm5hbCBkcml2ZXIgbG9naWMgY2hhbmdlIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGNvZXggZHJpdmVyLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2UgYWxsb3dzIGByZl9iYW5kID09IDBgIHRvICpub3QqIGJhaWwgb3V0IGVhcmx5IGZyb20gdGhlIGZ1bmN0aW9uLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBfc2V0X3JmX3RyeF9wYXJhYCBhcm91bmQgbGluZSA0MTY2IGFzIHdlbGwuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIGV4dHJhIGNhdXRpb3VzIHdoZW4gZGVhbGluZyB3aXRoIHJhZGlvLXJlbGF0ZWQgcGFyYW1ldGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDE1MDpcdFx0XHRcdFx0cGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfdHhfcG93ZXI7XG40MTUxOlx0XHRcdFx0XHRwYXJhLndsX3J4X2dhaW5baV0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLndsX3J4X2dhaW47XG40MTUyOlx0XHRcdFx0fVxuNDE1MzpcdFx0XHRcdGZvciAoaSA9IEJUQ19CVF8xU1Q7IGkgXHUwMDNjIEJUQ19BTExfQlQ7IGkmIzQzOyYjNDM7KSB7XG40MTU0Olx0XHRcdFx0XHRwYXJhLmJ0X3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcbjQxNTU6XHRcdFx0XHRcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0uYnRfcnhfZ2FpbjtcbjQxNTY6XHRcdFx0XHR9XG40MTU3Olx0XHRcdH1cbjQxNTg6XHRcdH1cbjQxNTk6XHRcbjQxNjA6XHRcdGlmIChkbS1cdTAwM2VmZGR0X3RyYWluKSB7XG40MTYxOlx0XHRcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIDEsIFJUVzg5X1BIWV8wKTtcbjQxNjI6XHRcdFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBiaWQsIEJUQ19XU0NCX1JYR0FJTiwgdHJ1ZSk7XG40MTYzOlx0XHR9IGVsc2Uge1xuNDE2NDpcdFx0XHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcbjQxNjU6XHRcdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuNDE2NjpcdFx0XHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcbjQxNjc6XHRcdFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xuNDE2ODpcdFx0fVxuNDE2OTpcdFxuNDE3MDpcdG5leHQ6XG40MTcxOlx0XHRpZiAoIWJ0LVx1MDAzZWVuYWJsZS5ub3cgfHwgZG0tXHUwMDNld2xfb25seSB8fCB3bF9zbWFwLVx1MDAzZXJmX29mZiB8fFxuNDE3MjpcdFx0ICAgIHdsX3NtYXAtXHUwMDNlbHBzID09IEJUQ19MUFNfUkZfT0ZGIHx8IG1vZGUgPT0gQlRDX1dMSU5LX1YwXzVHIHx8XG40MTczOlx0XHQgICAgKHJ0d2Rldi1cdTAwM2VkYmNjX2VuIFx1MDAyNlx1MDAyNiByLVx1MDAzZWRiY2NfMmdfcGh5ICE9IFJUVzg5X1BIWV8xKSlcbjQxNzQ6XHRcdFx0d2xfc3RiX2NoZyA9IDA7XG40MTc1Olx0XHRlbHNlXG40MTc2Olx0XHRcdHdsX3N0Yl9jaGcgPSAxO1xuNDE3NzpcdFxuNDE3ODpcdFx0aWYgKHdsX3N0Yl9jaGcgIT0gZG0tXHUwMDNld2xfc3RiX2NoZykge1xuNDE3OTpcdFx0XHRkbS1cdTAwM2V3bF9zdGJfY2hnID0gd2xfc3RiX2NoZztcbjQxODA6XHRcdFx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlYnRjX3dsX3MxX3N0YW5kYnkocnR3ZGV2LCBkbS1cdTAwM2V3bF9zdGJfY2hnKTtcbjQxODE6XHRcdH1cbjQxODI6XHR9XG40MTgzOlx0XG40MTg0Olx0c3RhdGljIHZvaWQgX3VwZGF0ZV9idGNfc3RhdGVfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbjQxODU6XHR7XG40MTg2Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuNDE4NzpcdFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG40MTg4Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG40MTg5Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTU2CgkJCQkJCQlvdXRwdXQ6IDE2MAoJCQkJCQkJdGhvdWdodHM6IDIwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBTYWZldHkqKgoKT2theSwgc28gSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBqdXN0IHJlbW92aW5nIGB8fCAhcmZfYmFuZGAgZnJvbSB0aGF0IGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IHRoZSBsb2NhbCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHByb3Blcmx5IOKAkyBgYnVmYCBpcyB6ZXJvZWQgb3V0IGFuZCBgbGVuYCBpcyBzZXQgY29ycmVjdGx5LiBJbXBvcnRhbnRseSwgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSwgd2hpY2ggaXMgZ29vZC4gVGhlcmUmIzM5O3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgZXZlbiBpbmZsdWVuY2luZyBjb250cm9sIGZsb3cuIE5vIG5ldyBhbGxvY2F0aW9ucyBvciBwYWRkaW5nIGlzc3VlcywgZWl0aGVyLgoKTm93LCBsZXQgbWUgc3lzdGVtYXRpY2FsbHkgcnVuIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoxLiAgKipLZXJuZWwgZGF0YSB0byB1c2Vyc3BhY2U/KiogTm9wZSwgbm90IGhlcmUuIFRoaXMgaXMgYSBjbGVhbiBiaWxsIG9mIGhlYWx0aC4KMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgZGF0YT8qKiBBYnNvbHV0ZWx5IG5vdC4gVGhlIHZhcmlhYmxlcyBpbnZvbHZlZCBhcmUgaW5pdGlhbGl6ZWQuCjMuICAqKkNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/KiogTm8gZGljZS4gRXZlcnl0aGluZyBzZWVtcyBzdHJhaWdodGZvcndhcmQgaGVyZS4KNC4gICoqQm91bmRzIGNoZWNrIHZ1bG5lcmFiaWxpdGllcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhY2Nlc3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/KiogTm90IGF0IGFsbC4gVGhlIGJvdW5kcyBjaGVja3Mgc2VlbSByb2J1c3QuCgpTbywgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBMZXQmIzM5O3MgZ2V0IHRoZXNlIHJlc3VsdHMgc2V0LiBUaGlzIGlzIGEgc2ltcGxlIGFuZCBzYWZlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgYHx8ICFyZl9iYW5kYCBjaGVjayBmcm9tIHRoZSBlYXJseSByZXR1cm4gY29uZGl0aW9uIGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIEFsbCB2YXJpYWJsZXMgd2l0aGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgIChzdWNoIGFzIGBidWZgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCBvbiB0aGUgc3RhY2sgKGB1OCBidWZbMl0gPSB7fTtgKSwgYW5kIGByZl9iYW5kYCBpcyBwYXNzZWQgYnkgdmFsdWUgYXMgYSBgdThgIHBhcmFtZXRlci4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIGB8fCAhcmZfYmFuZGAgY2hlY2sgZnJvbSB0aGUgZWFybHkgcmV0dXJuIGNvbmRpdGlvbiBpbiBgX3NldF9idF90eF9wb3dlcigpYCwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBBbGwgdmFyaWFibGVzIHdpdGhpbiBgX3NldF9idF90eF9wb3dlcigpYCAoc3VjaCBhcyBgYnVmYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgb24gdGhlIHN0YWNrIChgdTggYnVmWzJdID0ge307YCksIGFuZCBgcmZfYmFuZGAgaXMgcGFzc2VkIGJ5IHZhbHVlIGFzIGEgYHU4YCBwYXJhbWV0ZXIuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE3OjQyLjE0NDg3NjQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MjczMjY1NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9zZXRfYnRfdHhfcG93ZXJcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlXCIsXG4gICAgXCJydHc4OV9idGNfYzJoX2hhbmRsZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgYHx8ICFyZl9iYW5kYCBjaGVjayBmcm9tIHRoZSBlYXJseSByZXR1cm4gY29uZGl0aW9uIGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIEFsbCB2YXJpYWJsZXMgd2l0aGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgIChzdWNoIGFzIGBidWZgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCBvbiB0aGUgc3RhY2sgKGB1OCBidWZbMl0gPSB7fTtgKSwgYW5kIGByZl9iYW5kYCBpcyBwYXNzZWQgYnkgdmFsdWUgYXMgYSBgdThgIHBhcmFtZXRlci4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTc6NDIuMTQ0ODgwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4NTk5NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmUwODI1YWNmZTMwY2I0ZmFmOWI2MDIyMTFmNTllOTQzOTUwMmE2MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXFxuaW5kZXggNWE5ZGM0ZDhhMDBiYS4uZjQyYTZjYzNlYjdhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXFxuQEAgLTM4NTksNyArMzg1OSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG4gXFx0dTggYnVmWzJdID0ge307XFxuIFxcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcXG4gXFxuLVxcdGlmIChidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKVxcbitcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKGJ0LVxcdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxNzo0Mi41NjQwNDg0MzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjkzODIwNjU3MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9zZXRfYnRfdHhfcG93ZXJcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlXCIsXG4gICAgXCJydHc4OV9idGNfYzJoX2hhbmRsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGV4ZWN1dGFibGUgY29udHJvbCBmbG93IGluIFJlYWx0ZWsgcnR3ODkgV2ktRmkgY29leGlzdGVuY2UgbG9naWMgKF9zZXRfYnRfdHhfcG93ZXIpIGJ5IHJlbW92aW5nIHRoZSByZl9iYW5kIGd1YXJkIGNoZWNrLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChlLmcuIFJUVzg5Xzg4NTJBVSkgYW5kIG1hYzgwMjExIGludGVyZmFjZXMsIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZlMDgyNWFjZmUzMGNiNGZhZjliNjAyMjExZjU5ZTk0Mzk1MDJhNjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLmY0MmE2Y2MzZWI3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0zODU5LDcgKzM4NTksNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG4gXHR1OCBidWZbMl0gPSB7fTtcbiBcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbiBcbi1cdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpXG4rXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoYnQtXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE3OjQyLjU2NDA0OTg5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NDkzNTAxNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIFN5emthbGxlciBGdXp6aW5nOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIHNjcnV0aW5pemUgYSBwYXRjaCBhcHBsaWVkIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyBzYWZldHkuIEdpdmVuIHRoYXQgdGhpcyBpcyBhYm91dCBldmFsdWF0aW5nIGEga2VybmVsIHBhdGNoIGZvciBzeXprYWxsZXIgZnV6emluZywgdGhpcyBpcyBhIGNvbXBsZXRlbHkgc3RhbmRhcmQgZGV2ZWxvcGVyL1FBIHRhc2suIE5vIHJlZCBmbGFncyB0aGVyZS5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgdGVjaG5pY2FsIGRldGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNoYW5nZXMgYW5kIGRldGVybWluZSBob3cgcmVhY2hhYmxlIHRoZSBtb2RpZmllZCBjb2RlIGlzLiBJJ2xsIHByb2JhYmx5IHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBvciBvcHBvcnR1bml0aWVzIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTMwLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MDAuMDU3NTU0MDAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY2MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4NTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM4NTA6XFx0fVxcbjM4NTE6XFx0XFxuMzg1MjpcXHRzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXFxuMzg1MzpcXHRcXHRcXHRcXHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxcbjM4NTQ6XFx0e1xcbjM4NTU6XFx0XFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbjM4NTY6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4zODU3OlxcdFxcdHU4IGgyY19mdW5jID0gU0VUX0JUX1RYX1BXUjtcXG4zODU4OlxcdFxcdHU4IGksIGlkX3N0YXJ0LCBpZF9zdG9wO1xcbjM4NTk6XFx0XFx0dTggYnVmWzJdID0ge307XFxuMzg2MDpcXHRcXHR1OCBsZW4gPSBzaXplb2YoKmJ1Zik7XFxuMzg2MTpcXHRcXG4zODYyOlxcdFxcdGlmIChidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxcbjM4NjM6XFx0XFx0XFx0cmV0dXJuO1xcbjM4NjQ6XFx0XFxuMzg2NTpcXHRcXHRpZiAoYnQtXFx1MDAzZXJmX3BhcmEudHhfcHdyX2ZyZWVydW4gPT0gbGV2ZWwpXFxuMzg2NjpcXHRcXHRcXHRyZXR1cm47XFxuMzg2NzpcXHRcXG4zODY4OlxcdFxcdGlmIChiaWQgPT0gQlRDX0FMTF9CVCkge1xcbjM4Njk6XFx0XFx0XFx0aWRfc3RhcnQgPSBCVENfQlRfMVNUO1xcbjM4NzA6XFx0XFx0XFx0aWRfc3RvcCA9IEJUQ19CVF8yTkQ7XFxuMzg3MTpcXHRcXHR9IGVsc2Uge1xcbjM4NzI6XFx0XFx0XFx0aWRfc3RhcnQgPSBiaWQ7XFxuMzg3MzpcXHRcXHRcXHRpZF9zdG9wID0gYmlkO1xcbjM4NzQ6XFx0XFx0fVxcbjM4NzU6XFx0XFxuMzg3NjpcXHRcXHRmb3IgKGkgPSBpZF9zdGFydDsgaSBcXHUwMDNjPSBpZF9zdG9wOyBpKyspIHtcXG4zODc3OlxcdFxcdFxcdGlmIChpID09IEJUQ19CVF8yTkQpIHtcXG4zODc4OlxcdFxcdFxcdFxcdGlmICghKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlcGFyYV92ZXIgXFx1MDAyNiBCVENfRkVBVF9EVUFMX0JUKSlcXG4zODc5OlxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM4ODA6XFx0XFxuMzg4MTpcXHRcXHRcXHRcXHRidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MTtcXG4zODgyOlxcdFxcdFxcdFxcdGgyY19mdW5jIHw9IEJUX0gyQ19GVU5DX0JUMk5EO1xcbjM4ODM6XFx0XFx0XFx0fVxcbjM4ODQ6XFx0XFxuMzg4NTpcXHRcXHRcXHRidWZbMF0gPSAoczgpKC1sZXZlbCk7XFxuMzg4NjpcXHRcXHRcXHRidWZbMV0gPSByZl9iYW5kOyAgLyogYml0LW1hcDogYml0MS1cXHUwMDNlNUdIei82R2h6LCBiaXQwLVxcdTAwM2UyLjRHSHogKi9cXG4zODg3OlxcdFxcbjM4ODg6XFx0XFx0XFx0aWYgKCFmb3JjZV9leGVjIFxcdTAwMjZcXHUwMDI2ICFidGMtXFx1MDAzZWNsaV9oMmNfY21kKSB7XFxuMzg4OTpcXHRcXHRcXHRcXHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjAwLjA1NzkyMTg1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNzE4NDE2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgcnR3ODkgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBydHc4OWAgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IGl0IGlzIGFuZCwgY3JpdGljYWxseSwgd2hhdCBidXMgaXQncyB0aWVkIHRvLiBUaGUga2VybmVsIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEknbGwgc2tpcCB0aGF0IGZvciBub3cgYW5kIGdvIHN0cmFpZ2h0IHRvIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIHRoZSBgTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeSBzaG91bGQgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGluZm9ybWF0aW9uIEknbSBhZnRlci4gYE1ha2VmaWxlYCB3aWxsIHJldmVhbCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgbGlrZWx5IHRoZSBkZXBlbmRlbmNpZXMsIHdoaWxlIGBLY29uZmlnYCB3aWxsIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQsIGxpa2VseSwgaGludCBhdCB0aGUgYnVzIHR5cGUuIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgZGl2ZTsgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBzb2xpZCBvdmVydmlldyBpbiBqdXN0IGEgY291cGxlIG9mIG1pbnV0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjAyLjMyOTc2NTY2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI0MDU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfUlRXODlfQ09SRSkgKz0gcnR3ODlfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00LXJ0dzg5X2NvcmUteSArPSBjb3JlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT0yMz1ydHc4OV9jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfUlRXODlfODg1MUIpICs9IHJ0dzg5Xzg4NTFiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTI2LXJ0dzg5Xzg4NTFiLW9ianMgOj0gcnR3ODg1MWIubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCRSkgKz0gcnR3ODlfODg1MWJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMyLXJ0dzg5Xzg4NTFiZS1vYmpzIDo9IHJ0dzg4NTFiZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19SVFc4OV84ODUxQlUpICs9IHJ0dzg5Xzg4NTFidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zNS1ydHc4OV84ODUxYnUtb2JqcyA6PSBydHc4ODUxYnUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfUlRXODlfODg1MkEpICs9IHJ0dzg5Xzg4NTJhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTM4LXJ0dzg5Xzg4NTJhLW9ianMgOj0gcnR3ODg1MmEubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBRSkgKz0gcnR3ODlfODg1MmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQ0LXJ0dzg5Xzg4NTJhZS1vYmpzIDo9IHJ0dzg4NTJhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19SVFc4OV84ODUyQVUpICs9IHJ0dzg5Xzg4NTJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00Ny1ydHc4OV84ODUyYXUtb2JqcyA6PSBydHc4ODUyYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJfQ09NTU9OKSArPSBydHc4OV84ODUyYl9jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTAtcnR3ODlfODg1MmJfY29tbW9uLW9ianMgOj0gcnR3ODg1MmJfY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCKSArPSBydHc4OV84ODUyYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01My1ydHc4OV84ODUyYi1vYmpzIDo9IHJ0dzg4NTJiLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQkUpICs9IHJ0dzg5Xzg4NTJiZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01OS1ydHc4OV84ODUyYmUtb2JqcyA6PSBydHc4ODUyYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfUlRXODlfODg1MkJVKSArPSBydHc4OV84ODUyYnUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjItcnR3ODlfODg1MmJ1LW9ianMgOj0gcnR3ODg1MmJ1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVCkgKz0gcnR3ODlfODg1MmJ0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTY1LXJ0dzg5Xzg4NTJidC1vYmpzIDo9IHJ0dzg4NTJidC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgKz0gcnR3ODlfODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MC1ydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQykgKz0gcnR3ODlfODg1MmMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzMtcnR3ODlfODg1MmMtb2JqcyA6PSBydHc4ODUyYy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfUlRXODlfODg1MkNFKSArPSBydHc4OV84ODUyY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzktcnR3ODlfODg1MmNlLW9ianMgOj0gcnR3ODg1MmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJDVSkgKz0gcnR3ODlfODg1MmN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgyLXJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19SVFc4OV84OTIyQSkgKz0gcnR3ODlfODkyMmEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODUtcnR3ODlfODkyMmEtb2JqcyA6PSBydHc4OTIyYS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODlfODkyMkFFKSArPSBydHc4OV84OTIyYWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODktcnR3ODlfODkyMmFlLW9ianMgOj0gcnR3ODkyMmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBVSkgKz0gcnR3ODlfODkyMmF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkyLXJ0dzg5Xzg5MjJhdS1vYmpzIDo9IHJ0dzg5MjJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19SVFc4OV84OTIyRCkgKz0gcnR3ODlfODkyMmQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTUtcnR3ODlfODkyMmQtb2JqcyA6PSBydHc4OTIyZC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfUlRXODlfODkyMkRFKSArPSBydHc4OV84OTIyZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTktcnR3ODlfODkyMmRlLW9ianMgOj0gcnR3ODkyMmRlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9MTAzPXJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgKz0gbGVkX21jLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwNTpvYmotJChDT05GSUdfUlRXODlfUENJKSArPSBydHc4OV9wY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA2LXJ0dzg5X3BjaS15IDo9IHBjaS5vIHBjaV9iZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgKz0gcnR3ODlfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwOS1ydHc4OV91c2IteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTU9c3RhdGljIHUzMiBydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjQ6XFx0c3dpdGNoIChvYmotXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNS1cXHRjYXNlIEFDUElfVFlQRV9JTlRFR0VSOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2LVxcdFxcdGlmIChwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mjc6XFx0XFx0XFx0cG9zW2xlbl0gPSBvYmotXFx1MDAzZWludGVnZXIudmFsdWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMS1cXHRjYXNlIEFDUElfVFlQRV9CVUZGRVI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzI6XFx0XFx0aWYgKHVubGlrZWx5KG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCA9PSAwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMzLVxcdFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOC1cXHRcXHRpZiAocG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM5OlxcdFxcdFxcdG1lbWNweShwb3MsIG9iai1cXHUwMDNlYnVmZmVyLnBvaW50ZXIsIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDE6XFx0XFx0bGVuICs9IG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00Mi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00My1cXHRjYXNlIEFDUElfVFlQRV9QQUNLQUdFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ0OlxcdFxcdGlmICh1bmxpa2VseShvYmotXFx1MDAzZXBhY2thZ2UuY291bnQgPT0gMCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NS1cXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG9iai1cXHUwMDNlcGFja2FnZS5jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTE6XFx0XFx0XFx0ZWxtID0gXFx1MDAyNm9iai1cXHUwMDNlcGFja2FnZS5lbGVtZW50c1tpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01Mi1cXHRcXHRcXHR0bXAgPSBwb3MgPyBwb3MgKyBsZW4gOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjItXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiB1bmhhbmRsZWQgdHlwZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjM6XFx0XFx0XFx0ICAgIF9fZnVuY19fLCBvYmotXFx1MDAzZXR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY0LVxcdFxcdGdvdG8gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTMxPWludCBydHc4OV9hY3BpX2RzbV9nZXRfdmFsdWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTMzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMzQ6XFx0aWYgKG9iai1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEzNS1cXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzNjpcXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBpbnRlZ2VyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTQwOlxcdCp2YWx1ZSA9ICh1OClvYmotXFx1MDAzZWludGVnZXIudmFsdWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTQxLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTUyPWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2MDpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjEtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNjI6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTY2OlxcdGxlbiA9IG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjctXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqcHRyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE3MzpcXHRwdHIgPSAodHlwZW9mKHB0cikpb2JqLVxcdTAwM2VidWZmZXIucG9pbnRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNzQtXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcocHRyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjA0PWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfc3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxMTpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTItXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMTM6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTQtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjE3OlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjE4LVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjI0OlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIyNS1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3NwX3NpZyhwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yNDg9aW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfNmdoel92bHAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI1NTpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTYtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNTc6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjYxOlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjYyLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjY4OlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2OS1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcocHRyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjkxPXN0YXRpYyBpbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5ODpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yOTktXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMDA6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzA0OlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzA1LVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzExOlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMxMi1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV90YXNfc2lnKHB0cikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMzNj1pbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV9yZWdfcnVsZXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0MzpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDQtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNDU6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzQ5OlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzU2OlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Ny1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKHB0cikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MDIuMzc4MDEwNDg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk3ODc4MzkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBTdXBwb3J0IGFuZCBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5vdGljZWQgdGhhdCB0aGUgcnR3ODkgZHJpdmVyIGhhcyBzb21lIGFwcGFyZW50IFVTQiBzdXBwb3J0LCBpbmRpY2F0ZWQgYnkgdGhvc2UgYENPTkZJR19SVFc4OV9VU0JgIGFuZCByZWxhdGVkIGNvbmZpZyBvcHRpb25zLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzeXprYWxsZXIuIENhbiB3ZSBsZXZlcmFnZSB0aGlzIFVTQiBzdXBwb3J0PyBDYW4gd2UgKmVtdWxhdGUqIHRoZXNlIFVTQiBkZXZpY2VzIHVzaW5nIFVTQiBSYXcgR2FkZ2V0IHdpdGhpbiBzeXprYWxsZXIsIGxpa2UgY3JlYXRpbmcgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGdhZGdldHM/IFRoaXMgY291bGQgb3BlbiB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy5cblxuQmVmb3JlIGRpdmluZyBkZWVwLCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgVVNCIGRldmljZXMgYXJlIGhhbmRsZWQgd2l0aGluIHN5emthbGxlci4gSSBzaG91bGQgYWxzbyByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHdpcmVsZXNzIFVTQiBkcml2ZXJzLCBpbiBwYXJ0aWN1bGFyLCBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0uXG5cbk5vdywgaG9sZCBvbi4gQmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIHdhbnQgdG8gaW52ZXN0aWdhdGUgdGhlIGBfc2V0X2J0X3R4X3Bvd2VyYCBmdW5jdGlvbiwgYW5kIGhvdyBjb2V4LmMgaXMgdXNlZC4gSXMgdGhlcmUgYSBjYWxsIHN0YWNrIG9yIGRlcGVuZGVuY3kgSSdtIG1pc3Npbmc/IEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IGBfc2V0X2J0X3R4X3Bvd2VyYCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcGljdHVyZSwgYW5kIHNwZWNpZmljYWxseSwgaG93IGBjb2V4LmNgIGdldHMgaW52b2x2ZWQuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MDcuMzU2Nzk2Mjc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDIwNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9zZXRfYnRfdHhfcG93ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zODIxPXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1MjpzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1My1cXHRcXHRcXHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDA1Nj1zdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxNjUtXFx0XFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQxNjY6XFx0XFx0X3NldF9idF90eF9wb3dlcihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2Ny1cXHRcXHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjA3LjQwNDIxOTQ1N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NTE2MDAyNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlBlZXJpbmcgRGVlcGVyIGludG8gdGhlIFJhZGlvIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyByYWRpbyBjb25maWd1cmF0aW9uIGlzIGJlaW5nIGhhbmRsZWQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlLiBJJ20gdGhpbmtpbmcsIGxldCdzIGV4cGxvcmUgd2hlcmUgYF9zZXRfcmZfdHJ4X3BhcmFgIGlzIGFjdHVhbGx5IHVzZWQgYmV5b25kIHRoaXMgaW1tZWRpYXRlIGNvbnRleHQsIG9yIHBlcmhhcHMgdHJhY2UgdGhlIGNhbGxzIHRvIGBfc2V0X2J0X3R4X3Bvd2VyYCwgZ2l2ZW4gdGhlaXIgbGlrZWx5IHJlbGF0aW9uc2hpcC4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QgaXMga2V5LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgcGFyYW1ldGVycyB0aGV5J3JlIHNldHRpbmcgYXJlIHVsdGltYXRlbHkgdXNlZC5cblxuSSBoYXZlIGEgZmVlbGluZyB0aGF0IGNvZXguYyBtaWdodCBiZSByZWxldmFudCBoZXJlIGdpdmVuIG15IHBhc3QgZXhwZXJpZW5jZSwgc28gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgY29kZSBhbmQgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSA0MTY2IGluIHRoYXQgZmlsZS4gSXQncyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBjb2V4aXN0ZW5jZSBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcmFkaW8gcHJvdG9jb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwNywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjA5Ljg1NTgyMjI1OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDE1MDpcXHRcXHRcXHRcXHRcXHRwYXJhLndsX3R4X3Bvd2VyW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfdHhfcG93ZXI7XFxuNDE1MTpcXHRcXHRcXHRcXHRcXHRwYXJhLndsX3J4X2dhaW5baV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF9yeF9nYWluO1xcbjQxNTI6XFx0XFx0XFx0XFx0fVxcbjQxNTM6XFx0XFx0XFx0XFx0Zm9yIChpID0gQlRDX0JUXzFTVDsgaSBcXHUwMDNjIEJUQ19BTExfQlQ7IGkrKykge1xcbjQxNTQ6XFx0XFx0XFx0XFx0XFx0cGFyYS5idF90eF9wb3dlcltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyO1xcbjQxNTU6XFx0XFx0XFx0XFx0XFx0cGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0uYnRfcnhfZ2FpbjtcXG40MTU2OlxcdFxcdFxcdFxcdH1cXG40MTU3OlxcdFxcdFxcdH1cXG40MTU4OlxcdFxcdH1cXG40MTU5OlxcdFxcbjQxNjA6XFx0XFx0aWYgKGRtLVxcdTAwM2VmZGR0X3RyYWluKSB7XFxuNDE2MTpcXHRcXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCAxLCBSVFc4OV9QSFlfMCk7XFxuNDE2MjpcXHRcXHRcXHRfd3JpdGVfc2NiZChydHdkZXYsIGJpZCwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcXG40MTYzOlxcdFxcdH0gZWxzZSB7XFxuNDE2NDpcXHRcXHRcXHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcXG40MTY1OlxcdFxcdFxcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIHBhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcXG40MTY2OlxcdFxcdFxcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0pO1xcbjQxNjc6XFx0XFx0XFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xcbjQxNjg6XFx0XFx0fVxcbjQxNjk6XFx0XFxuNDE3MDpcXHRuZXh0OlxcbjQxNzE6XFx0XFx0aWYgKCFidC1cXHUwMDNlZW5hYmxlLm5vdyB8fCBkbS1cXHUwMDNld2xfb25seSB8fCB3bF9zbWFwLVxcdTAwM2VyZl9vZmYgfHxcXG40MTcyOlxcdFxcdCAgICB3bF9zbWFwLVxcdTAwM2VscHMgPT0gQlRDX0xQU19SRl9PRkYgfHwgbW9kZSA9PSBCVENfV0xJTktfVjBfNUcgfHxcXG40MTczOlxcdFxcdCAgICAocnR3ZGV2LVxcdTAwM2VkYmNjX2VuIFxcdTAwMjZcXHUwMDI2IHItXFx1MDAzZWRiY2NfMmdfcGh5ICE9IFJUVzg5X1BIWV8xKSlcXG40MTc0OlxcdFxcdFxcdHdsX3N0Yl9jaGcgPSAwO1xcbjQxNzU6XFx0XFx0ZWxzZVxcbjQxNzY6XFx0XFx0XFx0d2xfc3RiX2NoZyA9IDE7XFxuNDE3NzpcXHRcXG40MTc4OlxcdFxcdGlmICh3bF9zdGJfY2hnICE9IGRtLVxcdTAwM2V3bF9zdGJfY2hnKSB7XFxuNDE3OTpcXHRcXHRcXHRkbS1cXHUwMDNld2xfc3RiX2NoZyA9IHdsX3N0Yl9jaGc7XFxuNDE4MDpcXHRcXHRcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZWJ0Y193bF9zMV9zdGFuZGJ5KHJ0d2RldiwgZG0tXFx1MDAzZXdsX3N0Yl9jaGcpO1xcbjQxODE6XFx0XFx0fVxcbjQxODI6XFx0fVxcbjQxODM6XFx0XFxuNDE4NDpcXHRzdGF0aWMgdm9pZCBfdXBkYXRlX2J0Y19zdGF0ZV9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbjQxODU6XFx0e1xcbjQxODY6XFx0XFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbjQxODc6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG40MTg4OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbjQxODk6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODowOS44NTYyMjgxNjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzk0MDAwNjEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zLCBgX3NldF9yZl90cnhfcGFyYWAgYW5kIGBfc2V0X2J0X3R4X3Bvd2VyYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2Ugd2hlcmUgdGhleSBhcmUgYmVpbmcgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhlIG9wZXJhdGlvbnMgdGhleSBwZXJmb3JtLlxuXG4qKkRlZXAgRGl2ZSBJbnRvIEZ1bmN0aW9uIENhbGxzKipcblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uZHVjdCBhIGNvZGUtd2lkZSBzZWFyY2guIEEgc2ltcGxlIGBncmVwYCBmb3IgYF9zZXRfcmZfdHJ4X3BhcmFgIHdpbGwgZG8gdGhlIHRyaWNrLiBUaGF0IHNob3VsZCByZXZlYWwgYWxsIGluc3RhbmNlcyB3aGVyZSB0aGUgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY2FsbGluZyBjb2RlIHRvIGRlZHVjZSB0aGUgc2NlbmFyaW9zIHdoZXJlIHJhZGlvIGZyZXF1ZW5jeSB0cmFuc21pdC9yZWNlaXZlIHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgb3Igd2hlcmUgQmx1ZXRvb3RoIHRyYW5zbWl0IHBvd2VyIGlzIGJlaW5nIGFkanVzdGVkLiBUaGlzIGtpbmQgb2YgY29udGV4dHVhbCB1bmRlcnN0YW5kaW5nIGlzIGZ1bmRhbWVudGFsIHRvIGdyYXNwIHRoZSBvdmVyYWxsIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGdyZXAgc2VhcmNoIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MTgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjEzLjc5NjIzNzM4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MjY2MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3NldF9yZl90cnhfcGFyYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM5ODg9c3RhdGljIHZvaWQgX3NldF9idF9jb3J4X3RhYmxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAyODpzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhX3Y5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA1NjpzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwODAtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDgxOlxcdFxcdFxcdF9zZXRfcmZfdHJ4X3BhcmFfdjkocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDgyLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTY2Nzk9c3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjY5NC1cXHRfc2V0X2J0X3J4X2FnYyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjY2OTU6XFx0X3NldF9yZl90cnhfcGFyYShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2OTYtXFx0X3NldF9idF9yeF9zY2FuX3ByaShydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODoxMy44NDM2Njk5ODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTA4NTUxMTg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIEJhY2sgaW50byB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIENhbGwgQ2hhaW4qKlxuXG5BbHJpZ2h0LCBJJ20gY2lyY2xpbmcgYmFjayBvbiB0aGlzLiBCZWZvcmUgSSBjb21taXQgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gcmV2aXNpdCB0aGUgY2FsbCBncmFwaCBmb3IgYF9zZXRfYnRfdHhfcG93ZXJgLiBJIHdhbnQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3Igc2lkZSBlZmZlY3RzIGZyb20gdXBzdHJlYW0gb3IgZG93bnN0cmVhbSBjYWxscyB0aGF0IEkgZGlkbid0IGluaXRpYWxseSBmYWN0b3IgaW4uIEl0J3MgZWFzeSB0byBnZXQgdHVubmVsIHZpc2lvbiB3aGVuIGZvY3VzaW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHNvIGEgZnJlc2ggbG9vayBhdCB0aGUgaW1tZWRpYXRlIGNhbGxlcnMgaXMgdGhlIGZpcnN0IHN0ZXAuXG5cbldhaXQgYSBzZWNvbmQsIGEgbW9yZSB0aG9yb3VnaCBhcHByb2FjaCBpcyB3YXJyYW50ZWQgaGVyZS4gSW5zdGVhZCBvZiBqdXN0IGZvY3VzaW5nIG9uICp0aG9zZSoga25vd24gY2FsbGVycywgbGV0J3MgY2FzdCBhIHdpZGVyIG5ldC4gQSBgZ3JlcGAgYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UgdG8gc2VlICpldmVyeSogaW5zdGFuY2Ugb2YgYF9zZXRfYnRfdHhfcG93ZXJgIGlzIGluIG9yZGVyLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSB1c2FnZSBvZiB0aGF0IGZ1bmN0aW9uLCBpbmNsdWRpbmcgcG90ZW50aWFsbHkgaW5kaXJlY3QgY2FsbHMgb3IgaW5zdGFuY2VzIEkndmUgZm9yZ290dGVuIGFib3V0LiBUaGlzIGNvbXByZWhlbnNpdmUgc2VhcmNoIHNob3VsZCB1bmNvdmVyIGFueSBvYnNjdXJlIG9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzIyMiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjE4LjkyOTE4NDYyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMTU2ODI0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfc2V0X2J0X3R4X3Bvd2VyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTgzMT1zdGF0aWMgdm9pZCBydHdfY29leF91cGRhdGVfd2xfY2hfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjg4MTpzdGF0aWMgdm9pZCBydHdfY29leF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggYnRfcHdyX2RlY19sdmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtODgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTkxNT1zdGF0aWMgdm9pZCBydHdfY29leF9zZXRfcmZfcGFyYShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtOTI1LVxcdHJ0d19jb2V4X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfcHdyX2RlY19sdmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjkyNjpcXHRydHdfY29leF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLmJ0X3B3cl9kZWNfbHZsICsgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy05MjctXFx0cnR3X2NvZXhfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX2xvd19nYWluX2VuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozODUyOnN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUzLVxcdFxcdFxcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDU2PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2NS1cXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE2NjpcXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY3LVxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MjAuNjQwNzU3MjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ4MDc4MzUyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHJ0dzg5IFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGBydHc4OWAgaXMgdGhlIFJlYWx0ZWsgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIDgwMi4xMWF4L2JlIGNoaXBzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpmdXp6YWJsZSogd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3Mg4oCTIHdoYXQgYnVzIHR5cGVzIGRvZXMgYHJ0dzg5YCBzdXBwb3J0P1xuXG5SaWdodCwgdGhlIGBNYWtlZmlsZWAgaW5kaWNhdGVzIGJvdGggUENJIGFuZCBVU0Igc3VwcG9ydC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgcnR3ODlfcGNpLm9gIGZvciBQQ0kgZGV2aWNlcyBhbmQgYHJ0dzg5X3VzYi5vYCBmb3IgVVNCIGRldmljZXMuIFRoZSBsaXN0ZWQgbW9kdWxlcyBzdWdnZXN0IHN1cHBvcnQgZm9yIGEgcmFuZ2Ugb2YgY2hpcHMuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB0aGVzZSBidXMgdHlwZXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwcywgYXMgcGVyIHRoZSBwcm9tcHQncyBmaXJzdCBzZWN0aW9uPyBUaGUgcHJvbXB0IGlzIGNsZWFyOiBmdXp6aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIGNvZGUgKmNhbiogYWN0dWFsbHkgcnVuIGluIEdDRSBvciBRRU1VIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMuIFZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGlzIG91dCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuJ3QgZnV6eiBkcml2ZXJzIHRoYXQgcmVseSBvbiBhIHBoeXNpY2FsIEFTSUMgb3IgUENJZSBjYXJkIHRoYXQncyBub3QgZW11bGF0ZWQuXG5cbkJ1dCB3YWl0LCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgVVNCIGdhZGdldHMgKmFyZSogcmVhY2hhYmxlLiBFeGNlbGxlbnQuIFRoYXTigJlzIHByb21pc2luZy4gSSBrbm93IFVTQiBSYXcgR2FkZ2V0IGNhbiBiZSB1c2VkIGluIHN5emthbGxlci5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB0aGUgVVNCIHByb2JlIHByb2Nlc3MgYW5kIGBydHc4OV91c2JgIGRyaXZlciBiZSB0cmlnZ2VyZWQgdmlhIFVTQiBSYXcgR2FkZ2V0L1VTQiBlbXVsYXRpb24/IEkgbmVlZCB0byBjaGVjayB0aGUgVVNCIHByb2JlIHBhdGguIExldOKAmXMgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgVVNCIHByb2JlIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODoyNi4xMjE1NDI4MjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODM1OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02NC1cXHQuaWRfdGFibGUgPSBydHdfODg1MWJ1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjU6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjYtXFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODAtXFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmJ1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODAtXFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9MTM2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmN1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTM4LVxcdC5pZF90YWJsZSA9IHJ0d184ODUyY3VfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQwLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jPTc3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXFx0LmlkX3RhYmxlID0gcnR3Xzg5MjJhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgxLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jPTEyMDE9X19BVFRSSUJVVEVfR1JPVVBTKHJ0dzg5X3VzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTIwMzppbnQgcnR3ODlfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTIwNC1cXHRcXHQgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjk0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyOTU6RVhQT1JUX1NZTUJPTChydHc4OV91c2JfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmg9OTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcnR3ODlfdXNiICpydHc4OV91c2JfcHJpdihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmg6OTc6aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk4LVxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODoyNi4xNjkzODE4MTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ1MjM1ODM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBSVFc4OSBDb2V4aXN0ZW5jZSBMb2dpYyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250cm9sIGZsb3cgaGVyZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3Mga2lja2luZyBvZmYgdGhvc2UgY29leGlzdGVuY2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHRoZSBgX3NldF9idF90eF9wb3dlcmAgZnVuY3Rpb24sIGFuZCBhbHNvIHRoZSBgX2FjdGlvbl9jb21tb25gIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgbW9yZSBnZW5lcmFsIGBydHc4OV9idGNfYCBmdW5jdGlvbnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbnZvY2F0aW9uIHBhdGhzLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY2FsbHMgb3JpZ2luYXRlIGZyb20uXG5cbkZpcnN0LCBsZXQgbWUgcnVuIGEgcXVpY2sgYGdyZXBgIHNlYXJjaCB3aXRoaW4gdGhlIGBydHc4OWAgZGlyZWN0b3J5LiBJJ2xsIGxvb2sgZm9yIGJvdGggYF9hY3Rpb25fY29tbW9uYCBhbmQgYW55dGhpbmcgdGhhdCBzdGFydHMgd2l0aCBgcnR3ODlfYnRjX2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgbGlzdCBvZiBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGhlbiwgSSdsbCBhbmFseXplIHRob3NlIGxvY2F0aW9ucyB0byBjb25zdHJ1Y3QgdGhlIGNvbnRyb2wgcGF0aHMuIE9uY2UgSSBoYXZlIHRoZSBjYWxsIGNoYWlucyBtYXBwZWQgb3V0LCBJJ2xsIGhhdmUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBjb2V4aXN0ZW5jZSBmZWF0dXJlcyBhcmUgYmVpbmcgdHJpZ2dlcmVkIGFuZCB3aGF0J3MgZHJpdmluZyB0aG9zZSBwb3dlciBhZGp1c3RtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODozMS42MjE3NDI4NjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTA3NDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9hY3Rpb25fY29tbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NjYxOT1zdGF0aWMgdm9pZCBfc2V0X2Z3X3JlcG9ydF9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjY3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo2Njc5OnN0YXRpYyB2b2lkIF9hY3Rpb25fY29tbW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02NjgwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTcwMTE9c3RhdGljIHZvaWQgX3dyaXRlX3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBiaWQsIHUzMiB2YWwsIGJvb2wgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03MDU4LVxcdFxcdFxcdCAqIEp1c3QgdXBkYXRlIHdsLVxcdTAwM2VzY2JkW10gYW5kIHNldCB3bC1cXHUwMDNlc2NiZF9jaGdbXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3MDU5OlxcdFxcdFxcdCAqIG1vdmVkIFxcXCJXcml0ZSBzY29yZWJvYXJkIEkvT1xcXCIgdG8gIF9hY3Rpb25fY29tbW9uKClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03MDYwLVxcdFxcdFxcdCAqIF93cml0ZV9zY2JkIHdpbGwgYmUgZXhlY3V0ZWQgaWYgcnVuX2NvZXgoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODQxOT12b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2NDItXFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcXFwiW0JUQ10sICVzKCk6IGV4aXRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NjQzOlxcdF9hY3Rpb25fY29tbW9uKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY0NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjMxLjY2OTY1NTkyOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzYxNzQwNzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqRGVidWdnaW5nIGEgQ09FWCBDYWxsKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBfcnVuX2NvZXhgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGl0IHVsdGltYXRlbHkgZ29lcyB0aHJvdWdoIGBfYWN0aW9uX2NvbW1vbihydHdkZXYpYC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY2hhaW4sIHRvIHVuZGVyc3RhbmQgaG93IHdlIGdvdCBoZXJlLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9ydW5fY29leGAgaXRzZWxmIGlzIGNhbGxlZCwgYW5kIGFsc28gdG8gY2hlY2sgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMsIGxpa2UgYHJ0dzg5X2J0Y19udGZ5X2AuIEknbGwgZG8gYSBxdWljayBjYWxsIGdyYXBoIGFuYWx5c2lzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgdG8gZWl0aGVyIG9mIHRoZXNlIGZ1bnRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHdoYXQncyBkcml2aW5nIHRoaXMgQ09FWCBvcGVyYXRpb24uIFRoZW4sIEkgY2FuIHN0YXJ0IHRvIHplcm8gaW4gb24gd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQyNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjM5LjAzMTM5ODczM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczMDAwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3J1bl9jb2V4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTM2PWVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5OTk6c3RhdGljIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMDAwLVxcdFxcdCAgICAgIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNTgxPXZvaWQgYnRjX2Z3X2V2ZW50KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZXZ0X2lkLCB2b2lkICpkYXRhLCB1MzIgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYxMC1cXHRpZiAoIWJ0Yy1cXHUwMDNlZG0uc2NiZF9iMndfdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MTE6XFx0XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfU0NCRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYxMi1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz03NzE2PXZvaWQgcnR3ODlfY29leF9hY3QxX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM1LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzM2OlxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQUNUMV9XT1JLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3Mzk9dm9pZCBydHc4OV9jb2V4X2J0X2RldmluZm9fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NTEtXFx0YTJkcC1cXHUwMDNlcGxheV9sYXRlbmN5ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzUyOlxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQlRfREVWSU5GT19XT1JLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzUzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3NTU9dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NzQtXFx0XFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfQUxMX0JULCBCVENfV1NDQl9XTFJGSywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjc3NzU6XFx0XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9SRktfQ0hLX1dPUkspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NzYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODQxOD1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NDE5OnZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg0MjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY3MT12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2ODMtXFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfQUxMX0JULCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4Njg0OlxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9QT1dFUk9GRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg3MjM9dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODc4MTpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfSU5JVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODc4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04Nzg0PXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4MTE6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NDQU5fU1RBUlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MTItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODgxND12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fZmluaXNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODgzNDpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfU0NBTl9GSU5JU0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODgzNz12b2lkIHJ0dzg5X2J0Y19udGZ5X3N3aXRjaF9iYW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4NTUtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4NTY6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NXQkFORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODg1Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04ODU5PXZvaWQgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MjMtXFx0YnRjLVxcdTAwM2VkbS5jbnRfbm90aWZ5W0JUQ19OQ05UX1NQRUNJQUxfUEFDS0VUXSsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg5MjQ6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NQRUNJRklDX1BBQ0tFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODkyNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05MDAzPXN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJpZCwgdTggKmJ1ZiwgdTMyIGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkxNTMtXFx0X3VwZGF0ZV9idF9jdHJsX2xwcyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkxNTQ6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfSU5GTyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTE1NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05MTU3PXN0YXRpYyB2b2lkIF9udGZ5X3JvbGVfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTIyNjpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUk9MRV9JTkZPKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MjI3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTkzNDU9dm9pZCBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JmY3RybCByZl9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTM5NTpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUkFESU9fU1RBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzOTYtXFx0d2wtXFx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmX3ByZSA9IHdsLVxcdTAwM2VzdGF0dXMubWFwLnJmX29mZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk0MDA9c3RhdGljIGJvb2wgX250Znlfd2xfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X3BhdGgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NDUwLVxcdFxcdCAgICB3bC1cXHUwMDNlcmZrX2luZm8uc3RhdGUgPT0gQlRDX1dSRktfU1RPUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NDUxOlxcdFxcdFxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9XTF9SRkspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk0NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05NjU1PXZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk2ODktXFx0XFx0d2wtXFx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgPSBkYXRhLmRpcl9hbGw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTY5MDpcXHRcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfV0xfU1RBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NjkxLVxcdH0gZWxzZSBpZiAoYnRjLVxcdTAwM2VkbS5jbnRfbm90aWZ5W0JUQ19OQ05UX1dMX1NUQV0gXFx1MDAzZT1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk3Njc9dm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODE3LVxcdFxcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIGJpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTgxODpcXHRcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODE5LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTgzOS1cXHRcXHRcXHRfdXBkYXRlX2J0X2xlYXVkaW9faW5mbyhydHdkZXYsIGJpZCwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk4NDA6XFx0XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfTEVBVURJTkZPKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODQxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODozOS4wNzg3MDQwOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYxOTQ2ODk2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaS1GaSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBydHc4OWAsIGEgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBjb21wb25lbnQgKGBydHc4OV91c2JgKSwgdXRpbGl6aW5nIHN0YW5kYXJkIFVTQiBlbXVsYXRpb24gKHN5emthbGxlcikgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIGBtYWM4MDIxMWAgd2lyZWxlc3Mgc3Vic3lzdGVtcy4gVGhlIGNvZGUncyBkZWFsaW5nIHdpdGggdGhpbmdzIGxpa2UgYG5sODAyMTFgLCBzY2FuIHN0YXJ0L2ZpbmlzaCBldmVudHMsIHJhZGlvIHN0YXRlIGNoYW5nZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBzcGVjaWZpYyBjaGFuZ2U6IHRoZSBtb2RpZmljYXRpb24gdG8gYF9zZXRfYnRfdHhfcG93ZXJgLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLlxuXG5gYGBjXG5zdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG5cdFx0XHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxue1xuXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcblx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xuXHR1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDtcblx0dTggYnVmWzJdID0ge307XG5cdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcblxuLVx0aWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZClcbitcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG5cdFx0cmV0dXJuO1xuXG5cdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuXHRcdHJldHVybjtcbi4uLlxuYGBgXG5cblRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIGB8fCAhcmZfYmFuZGAuIEJlZm9yZSwgaWYgYGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV1gIHdhcyAwICpvciogaWYgYHJmX2JhbmRgIHdhcyB6ZXJvLCB0aGUgZnVuY3Rpb24gd291bGQgcmV0dXJuIGVhcmx5LiBOb3csIGl0IG9ubHkgcmV0dXJucyBlYXJseSBpZiBgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXWAgaXMgemVyby4gU28sIHdoYXQncyB0aGUgaW1wbGljYXRpb24/IEl0IG5vdyAqZXhlY3V0ZXMqIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJcyBgcmZfYmFuZGAgYSBiaXRtYXAgb3IgYW4gZW51bT8gV2hhdCdzIHRoZSBsZWdpdGltYXRlIHVzZSBvZiBhIHplcm8gdmFsdWUgZm9yIGByZl9iYW5kYD9cblxuVG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIGByZl9iYW5kYC4gU28sIEknbGwgY2hlY2sgd2hlcmUgYHJmX2JhbmRgIGdldHMgaXRzIHZhbHVlIGJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGluZyBmdW5jdGlvbiwgc28gbGV0J3MgY2hlY2sgYF9zZXRfcmZfdHJ4X3BhcmFgIGluIGBjb2V4LmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NDMuNjk4MTc1OTMxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDU1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MDU1OlxcdFxcbjQwNTY6XFx0c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuNDA1NzpcXHR7XFxuNDA1ODpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbjQwNTk6XFx0XFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbjQwNjA6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbjQwNjE6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG40MDYyOlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG40MDYzOlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICpyID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm87XFxuNDA2NDpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbjQwNjU6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mbztcXG40MDY2OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFxcdTAwMjZ3bC1cXHUwMDNlc3RhdHVzLm1hcDtcXG40MDY3OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcGFyYTtcXG40MDY4OlxcdFxcdHU4IGJtb2RlID0gZG0tXFx1MDAzZXRkZF9iaW5kLndsX2xpbmtfbW9kZTtcXG40MDY5OlxcdFxcdHU4IHJmX2JhbmQgPSBkbS1cXHUwMDNldGRkX2JpbmQucmZfYmFuZDtcXG40MDcwOlxcdFxcdHU4IGksIHVsX3BhcmFfbnVtLCBkbF9wYXJhX251bTtcXG40MDcxOlxcdFxcdHU4IG1vZGUgPSBCVENfV0xJTktfTk9MSU5LO1xcbjQwNzI6XFx0XFx0dTggYmlkID0gQlRDX0JUXzFTVCwgbHY7XFxuNDA3MzpcXHRcXHR1MzIgd2xfc3RiX2NoZztcXG40MDc0OlxcdFxcbjQwNzU6XFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4dHJ4ID09IDkpIHtcXG40MDc2OlxcdFxcdFxcdC8qIEVhcmx5IHY5IG5lZWQgdG8gYXNzaWduIFVML0RMIFJGIHBhcmEgYXQgZHJpdmVyICovXFxuNDA3NzpcXHRcXHRcXHRpZiAoY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192OSkge1xcbjQwNzg6XFx0XFx0XFx0XFx0dWxfcGFyYV9udW0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX3VsaW5rX251bV92OTtcXG40MDc5OlxcdFxcdFxcdFxcdGRsX3BhcmFfbnVtID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua19udW1fdjk7XFxuNDA4MDpcXHRcXHRcXHR9IGVsc2Uge1xcbjQwODE6XFx0XFx0XFx0XFx0X3NldF9yZl90cnhfcGFyYV92OShydHdkZXYpO1xcbjQwODI6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbjQwODM6XFx0XFx0XFx0fVxcbjQwODQ6XFx0XFx0fSBlbHNlIGlmICgodmVyLVxcdTAwM2VmY3h0cnggPT0gMCB8fCB2ZXItXFx1MDAzZWZjeHRyeCA9PSA3IHx8IHZlci1cXHUwMDNlZmN4dHJ4ID09IDEwNykgXFx1MDAyNlxcdTAwMjZcXG40MDg1OlxcdFxcdFxcdCAgIGNoaXAtXFx1MDAzZXJmX3BhcmFfdWxpbmtfdjApIHtcXG40MDg2OlxcdFxcdFxcdHVsX3BhcmFfbnVtID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua19udW1fdjA7XFxuNDA4NzpcXHRcXHRcXHRkbF9wYXJhX251bSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfbnVtX3YwO1xcbjQwODg6XFx0XFx0fSBlbHNlIHtcXG40MDg5OlxcdFxcdFxcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcXFwiW0JUQ10lcygpLCBObyByZl9wYXJhIGZvciB2ZXJzZWlvbiAlZFxcXFxuXFxcIixcXG40MDkwOlxcdFxcdFxcdFxcdCAgIF9fZnVuY19fLCB2ZXItXFx1MDAzZWZjeHRyeCk7XFxuNDA5MTpcXHRcXHRcXHRnb3RvIG5leHQ7XFxuNDA5MjpcXHRcXHR9XFxuNDA5MzpcXHRcXG40MDk0OlxcdFxcdGlmIChibW9kZSA9PSBCVENfV0xJTktfTk9MSU5LKSB7XFxuNDA5NTpcXHRcXHRcXHRyZXR1cm47XFxuNDA5NjpcXHRcXHR9IGVsc2UgaWYgKHJmX2JhbmQgPT0gUlRXODlfQkFORF81Rykge1xcbjQwOTc6XFx0XFx0XFx0bW9kZSA9IEJUQ19XTElOS19WMF81RztcXG40MDk4OlxcdFxcdH0gZWxzZSBpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFxcdTAwMjZcXHUwMDI2IGJtb2RlID09IEJUQ19XTElOS19TVEEpIHtcXG40MDk5OlxcdFxcdFxcdG1vZGUgPSBCVENfV0xJTktfVjBfMkdfU1RBO1xcbjQxMDA6XFx0XFx0fVxcbjQxMDE6XFx0XFxuNDEwMjpcXHRcXHQvKiBkZWNpZGUgdHJ4X3BhcmFfbGV2ZWwgKi9cXG40MTAzOlxcdFxcdGlmIChidGMtXFx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7XFxuNDEwNDpcXHRcXHRcXHQvKiBmaXggTE5BMiArIFRJQSBnYWluIG5vdCBjaGFuZ2UgYnkgR05UX0JUICovXFxuNDEwNTpcXHRcXHRcXHRpZiAoKGJ0Yy1cXHUwMDNlZG0ud2xfYnRnX3J4IFxcdTAwMjZcXHUwMDI2IGItXFx1MDAzZWxpbmtfY250Lm5vdyAhPSAwKSB8fFxcbjQxMDY6XFx0XFx0XFx0ICAgIGRtLVxcdTAwM2VidF9vbmx5ID09IDEpXFxuNDEwNzpcXHRcXHRcXHRcXHRkbS1cXHUwMDNldHJ4X3BhcmFfbGV2ZWwgPSAxOyAvKiBmb3IgYmV0dGVyIEJUIEFDSSBpc3N1ZSAqL1xcbjQxMDg6XFx0XFx0XFx0ZWxzZVxcbjQxMDk6XFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsID0gMDtcXG40MTEwOlxcdFxcdH0gZWxzZSB7IC8qIG5vbi1zaGFyZWQgYW50ZW5uYSAgKi9cXG40MTExOlxcdFxcdFxcdGRtLVxcdTAwM2V0cnhfcGFyYV9sZXZlbCA9IDU7XFxuNDExMjpcXHRcXHRcXHQvKiBtb2RpZnkgdHJ4X3BhcmEgaWYgV0sgMi40Ry1TVEEtREwgKyBidCBsaW5rICovXFxuNDExMzpcXHRcXHRcXHRpZiAoYi1cXHUwMDNlbGlua19jbnQubm93ICE9IDAgXFx1MDAyNlxcdTAwMjZcXG40MTE0OlxcdFxcdFxcdCAgICBtb2RlID09IEJUQ19XTElOS19WMF8yR19TVEEgXFx1MDAyNlxcdTAwMjZcXG40MTE1OlxcdFxcdFxcdCAgICB3bC1cXHUwMDNlc3RhdHVzLm1hcC50cmFmZmljX2RpciBcXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKSB7IC8qIHVwbGluayAqL1xcbjQxMTY6XFx0XFx0XFx0XFx0aWYgKHdsLVxcdTAwM2Vyc3NpX2xldmVsID09IDQgXFx1MDAyNlxcdTAwMjYgYnQtXFx1MDAzZXJzc2lfbGV2ZWwgXFx1MDAzZSAyKVxcbjQxMTc6XFx0XFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsID0gNjtcXG40MTE4OlxcdFxcdFxcdFxcdGVsc2UgaWYgKHdsLVxcdTAwM2Vyc3NpX2xldmVsID09IDMgXFx1MDAyNlxcdTAwMjYgYnQtXFx1MDAzZXJzc2lfbGV2ZWwgXFx1MDAzZSAzKVxcbjQxMTk6XFx0XFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsID0gNztcXG40MTIwOlxcdFxcdFxcdH1cXG40MTIxOlxcdFxcdH1cXG40MTIyOlxcdFxcbjQxMjM6XFx0XFx0bHYgPSBkbS1cXHUwMDNldHJ4X3BhcmFfbGV2ZWw7XFxuNDEyNDpcXHRcXHRpZiAobHYgXFx1MDAzZT0gdWxfcGFyYV9udW0gfHxcXG40MTI1OlxcdFxcdCAgICBsdiBcXHUwMDNlPSBkbF9wYXJhX251bSkge1xcbjQxMjY6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbjQxMjc6XFx0XFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogaW52YWxpZCBsZXZlbF9pZDogJWRcXFxcblxcXCIsXFxuNDEyODpcXHRcXHRcXHRcXHQgICAgX19mdW5jX18sIGx2KTtcXG40MTI5OlxcdFxcdFxcdHJldHVybjtcXG40MTMwOlxcdFxcdH1cXG40MTMxOlxcdFxcbjQxMzI6XFx0XFx0aWYgKHdsLVxcdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFxcdTAwMjYgQklUKFJUVzg5X1RGQ19VTCkpIHtcXG40MTMzOlxcdFxcdFxcdGlmICh2ZXItXFx1MDAzZWZjeHRyeCA9PSA5KSB7XFxuNDEzNDpcXHRcXHRcXHRcXHRwYXJhID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192OVtsdl07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjQzLjY5ODU2MjAwMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjU0NzkwOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIGBydHc4OWAgV2ktRmkgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgcnR3ODlgIGlzIGEgUmVhbHRlayBXaS1GaSBkcml2ZXIsIHNvIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBpdCdzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBob3cgcmVhY2hhYmxlIGl0IGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcyBjb3JyZWN0bHkuXG5cbldhaXQsIGJhY2sgdXAhIEkgbmVlZCB0byByZS1yZWFkIHRoZSByZWFjaGFiaWxpdHkgY3JpdGVyaWEuIE9rYXksIGFjY29yZGluZyB0byBTZWN0aW9uIDIsIEkgbmVlZCB0byBzYXkgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiAqb25seSogaWYgdGhlIGNoYW5nZXMgYXJlIG5vbi1rZXJuZWwvbm9uLWV4ZWN1dGFibGUsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSAobGlrZSB0aG9zZSBzcGVjaWZpYyBQQ0llIHN3aXRjaGVzIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCBzcGVjaWFsaXplZCBoYXJkd2FyZSksIG9yIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBoYXBwZW4gd2l0aCBQQ0kgaG90LXVucGx1ZyBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS5cblxuT24gdGhlIGZsaXAgc2lkZSwgU2VjdGlvbiAzIHN0YXRlcyBcIldvcnRoRnV6emluZz10cnVlXCIgaWYgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlLCBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZyBjb3JlIHN1YnN5c3RlbXMsIHJlZmFjdG9yaW5ncywgYXNzZXJ0aW9ucywgYW5kICpyZWFjaGFibGUqIGRyaXZlcnMgYW5kIHByb3RvY29scy4gVGhhdCdzIHRoZSBrZXkuIEhvdyBpcyBgcnR3ODlgIHJlYWNoYWJsZT9cblxuQWgtaGEhIElzIHRoaXMgZHJpdmVyIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldD8gSSBrbm93IHN5emthbGxlciBoYXMgdGhhdCBjYXBhYmlsaXR5LiBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGVtdWxhdGVzIFVTQiBkZXZpY2VzLCBhbmQgaWYgc28sIGNhbiBpdCBwcm9iZSB0aGUgYHJ0dzg5YCBVU0IgZHJpdmVycyBzcGVjaWZpY2FsbHkuIExldCBtZSBkaWcgaW50byB0aGUgZGVzY3JpcHRpb25zIGFuZCBzZWUgaWYgVVNCIHJhdyBnYWRnZXQgYWxsb3dzIGZ1enppbmcgVVNCIGRyaXZlcnMgbGlrZSBgcnR3ODlfdXNiYCwgYHJ0dzg4NTJhdWAsIGBydHc4ODUyYnVgLCBgcnR3ODg1MmN1YCwgYHJ0dzg5MjJhdWAsIGFuZCBgcnR3ODg1MWJ1YC5cblxuWWVzISBGcm9tIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGUgTGludXgga2VybmVsLCBJIGtub3cgVVNCIGRyaXZlcnMgKmNhbiogYmUgcHJvYmVkIGFuZCBjb21tdW5pY2F0ZWQgd2l0aCB2aWEgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy5cblxuTm93LCBvbmUgbW9yZSBjcml0aWNhbCBkZXRhaWw6IGxldCdzIGNoZWNrIGlmIHRoZSBgY29leC5jYCBjb2RlIGlzIGV2ZW4gY29tcGlsZWQgd2hlbiBlaXRoZXIgYFJUVzg5X1VTQmAgb3IgYFJUVzg5X0NPUkVgIGlzIGVuYWJsZWQuIExldCdzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTUzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NDguOTUzMzU1MDc5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDAwMzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE6aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODkyMkRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00OS1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MDpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MTpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjUyOlxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU4OmNvbmZpZyBSVFc4OV84ODUxQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02MC1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2MTpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2MjpcXHRzZWxlY3QgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjYzOlxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY5OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MS1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3MjpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3MzpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc0OlxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Mi1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4MzpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4NDpcXHRzZWxlY3QgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjg1OlxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjkxOmNvbmZpZyBSVFc4OV84ODUyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NDpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NTpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjk2OlxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NzpcXHRzZWxlY3QgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTk4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMzpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNS1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDY6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTA3OlxcdHNlbGVjdCBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTA4OlxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDk6XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OV84ODUyQlRFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUtVlQgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNy1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTg6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE5OlxcdHNlbGVjdCBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTIwOlxcdHNlbGVjdCBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTIxOlxcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTIyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNzpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjktXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTMwOlxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzMTpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzMjpcXHRzZWxlY3QgUlRXODlfODg1MkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTMzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzODpjb25maWcgUlRXODlfODg1MkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzOS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDAtXFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTQxOlxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MjpcXHRzZWxlY3QgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MzpcXHRzZWxlY3QgUlRXODlfODg1MkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0OTpjb25maWcgUlRXODlfODkyMkFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTEtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTUyOlxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE1MzpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE1NDpcXHRzZWxlY3QgUlRXODlfODkyMkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NS1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjY6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTY3OlxcdHNlbGVjdCBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTY4OlxcdHNlbGVjdCBSVFc4OV84OTIyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV84OTIyREVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJERS84OTIyREUtVlMgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ny1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzg6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc5OlxcdHNlbGVjdCBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTgwOlxcdHNlbGVjdCBSVFc4OV84OTIyRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg3OmNvbmZpZyBSVFc4OV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODgtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5MDpjb25maWcgUlRXODlfREVCVUdNU0dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTkxLVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWcgbWVzc2FnZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTI6XFx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5MzpcXHRzZWxlY3QgUlRXODlfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTk0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5OTpjb25maWcgUlRXODlfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwMTpcXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkUgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDI6XFx0c2VsZWN0IFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIwMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDg6Y29uZmlnIFJUVzg5X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA5LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjEwOlxcdGRlcGVuZHMgb24gUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTEtXFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjE1OmNvbmZpZyBSVFc4OV9MRURTX01DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxNzpcXHRkZXBlbmRzIG9uIFJUVzg5X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjE4LVxcdGRlcGVuZHMgb24gTEVEU19DTEFTU19NVUxUSUNPTE9SXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjQ4Ljk5NzM2NzI2OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDE2MzI2NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRXODkgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBgUlRXODlgIGRyaXZlciwgc3BlY2lmaWNhbGx5LiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3VnZ2VzdHMgaXQgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIGZ1bGwgcGljdHVyZS4gTXkgYmVzdCBiZXQgaXMgdG8gbG9vayBhdCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIGBSVFc4OWAuIFRoYXQgc2hvdWxkIGxheSBvdXQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGV4cGxpY2l0bHkuIExldCBtZSBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCBhbmQgdGFrZSBhIHBlZWsgYXQgdGhlIHRvcCBsaW5lcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIGBSVFc4OWAgbWlnaHQgbmVlZCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMganVzdCBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiB1bnJhdmVsaW5nIGtlcm5lbCBtb2R1bGUgaW50ZXJkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5Mzc0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NTUuNDEzNjk1Njk5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg5XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODkuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg5XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OV9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OV9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OV9VU0JcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NTUuNDEzNzYyMzk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0NTYwMDk0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSVFc4OSBDb2V4aXN0ZW5jZSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgUlRXODlgIGRyaXZlciBjb2RlLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgZm9yIHRoZSBVU0IgdmFyaWFudC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGBSVFc4OV84ODUxQlVgLCBhbmQgYFJUVzg5Xzg5MjJBVWAgY29uZmlndXJhdGlvbnMuIElmIGBDT05GSUdfUlRXODlgLCBgQ09ORklHX1JUVzg5X1VTQmAsIGFuZCB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLXNwZWNpZmljIGNvbmZpZyBsaWtlIGBDT05GSUdfUlRXODlfODg1MkFVYCBhcmUgZW5hYmxlZCwgYWxvbmcgd2l0aCB0aGUgc3RhbmRhcmQgYENPTkZJR19NQUM4MDIxMWAgYW5kIGBDT05GSUdfVVNCYCwgdGhlbiB0aGUgZHJpdmVyIHNob3VsZCBiZSBidWlsdCBhbmQgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBvciByYXcgZ2FkZ2V0IGludGVyZmFjZXMsIHdoaWNoIGlzIHdoYXQgSSdtIGV4cGVjdGluZy5cblxuTm93LCBhIGNyaXRpY2FsIHBvaW50IGZvciBjb2V4aXN0ZW5jZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgQmx1ZXRvb3RoIFRYIHBvd2VyIGNvbnRyb2wgaXMgbWFuYWdlZCB3aXRoaW4gdGhlIGNvZXhpc3RlbmNlIG1vZHVsZS4gU3BlY2lmaWNhbGx5LCBpcyBgX3NldF9idF90eF9wb3dlcmAgYSBzdGF0aWMgZnVuY3Rpb24/IEFscmlnaHQsIGNoZWNraW5nIGBjb2V4LmNgLCB5ZXMsIGl0J3MgZGVjbGFyZWQgYHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoLi4uKWAuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGZvciBleHRlcm5hbCBtYW5pcHVsYXRpb24uXG5cbk5vdywgd2hpY2ggbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbCBgX3NldF9idF90eF9wb3dlcmA/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbGluZyBjaGFpbnMuIE9rYXksIGhlcmUncyB3aGF0IEkndmUgZm91bmQ6IGBfc2V0X2J0X3R4X3Bvd2VyYCBpcyBjYWxsZWQgYnkgYF9zZXRfcmZfdHJ4X3BhcmFgIHdoaWNoIGlzIGFsc28gc3RhdGljLiBBbmQgYF9zZXRfcmZfdHJ4X3BhcmFgIGlzIGNhbGxlZCBieSBgX2FjdGlvbl9jb21tb25gLCB3aGljaCBpcyBhbHNvIHN0YXRpYywgYW5kIGZpbmFsbHksIGBfYWN0aW9uX2NvbW1vbmAgaXMgY2FsbGVkIGJ5IGBfcnVuX2NvZXhgLCB3aGljaCBpcyBhbHNvIHN0YXRpYy5cblxuT2theSwgdGhhdCdzIHRoZSBjb3JlIGNoYWluLiBCdXQgd2hvIGNhbGxzIGBfcnVuX2NvZXhgPyBUaGlzIGlzIHdoZXJlIHRoZSBpbnRlcmZhY2UgcG9pbnRzIGFyZSEgSXQncyBjYWxsZWQgYnk6IGBydHc4OV9idGNfbnRmeV9pbml0YCwgYHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9maW5pc2hgLCBgcnR3ODlfYnRjX250Znlfc3dpdGNoX2JhbmRgLCBgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0YCwgYHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlYCwgYHJ0dzg5X2J0Y19udGZ5X3dsX3N0YWAsIGBydHc4OV9idGNfYzJoX2hhbmRsZWAsIGBydHc4OV9idGNfbnRmeV9wb3dlcm9mZmAsIGBydHc4OV9jb2V4X2FjdDFfd29ya2AsIGBydHc4OV9jb2V4X2J0X2RldmluZm9fd29ya2AsIGBydHc4OV9jb2V4X3Jma19jaGtfd29ya2AgYW5kIGBidGNfZndfZXZlbnRgLiAgYGJ0Y19md19ldmVudGAgY291bGQgYmUgc3RhdGljIG9yIGV4cG9ydGVkIOKAkyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuXG5cblRvIGNvbmZpcm0gdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhpcyBtb2R1bGUsIEkgbm93IG5lZWQgdG8gY2hlY2sgd2hldGhlciBgX3J1bl9jb2V4YCBvciBhbnkgb2YgdGhlIGBydHc4OV9idGNfKmAgZnVuY3Rpb25zIGFyZSBleHBvc2VkIGFzIG5vbi1zdGF0aWMgc3ltYm9scyBpbiBgcnR3ODlfY29yZS5rb2AuICBUaGlzIGlzIGNydWNpYWwuIEFsc28sIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgZGVjbGFyYXRpb24sIHByb2JhYmx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIG9yIGBjb2V4LmhgIHRvIHNlZSBob3cgdGhleSBhcmUgc3RydWN0dXJlZC4gVGhpcyB3aWxsIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4dGVybmFsIGhvb2tzIGFuZCB0aGUgb3ZlcmFsbCBtb2R1bGUncyBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5OTA3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MDEuODY5Nzc0MzI4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ2NTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9idGNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTIwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz01OT1zdHJ1Y3QgYnRjX2ZidGNfMXNsb3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjEtXFx0dTggc2lkOyAvKiBzbG90IGlkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjI6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3Qgc2xvdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02My19IF9fcGFja2VkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjY1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB0X2RlZltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2LVxcdFtDWFREX09GRl1cXHQ9IHsgQ1hURE1BX09GRiwgICAgQ1hGTENfT0ZGLCBDWFRQU19PRkYsIDAsIDAsIDAsIDAsIDB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zbG90IHNfZGVmW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODItXFx0W0NYU1RfT0ZGXVxcdD0gX19ERUZfRkJUQ19TTE9UKDEwMCwgMHg1NTU1NTU1NSwgU0xPVF9NSVgpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTAyPXN0YXRpYyBjb25zdCB1MzIgY3h0YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzNS1cXHQvKiBmaXJtd2FyZSB2ZXJzaW9uIG11c3QgYmUgaW4gZGVjcmVhc2luZyBvcmRlciBmb3IgZWFjaCBjaGlwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ3OiNkZWZpbmUgUlRXODlfREVGQVVMVF9CVENfVkVSX0lEWCAoQVJSQVlfU0laRShydHc4OV9idGNfdmVyX2RlZnMpIC0gMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ5OnN0YXRpYyBjb25zdCB1bmlvbiBydHc4OV9idGNfd2xfc3RhdGVfbWFwIGJ0Y19zY2FubmluZ19tYXAgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzUwLVxcdC5tYXAgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTE9c3RhdGljIGNoYXIgKmNoaXBfaWRfc3RyKHUzMiBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTM6c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTQtXFx0dTggdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTk6c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjAtXFx0dTggdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQyNj1lbnVtIGJ0Y19idGZfc2V0X3JlcG9ydF9lbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDQ0OnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9yZXBvcnRfdjEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0NS1cXHR1OCBmdmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1MDpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfcmVwb3J0X3Y4IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTEtXFx0dTggdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ1Nz11bmlvbiBydHc4OV9mYnRjX3J0cF9jdHJsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg6XFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X3JlcG9ydF92MSB2MTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTk6XFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X3JlcG9ydF92OCB2ODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2Mi0jZGVmaW5lIEJURl9TRVRfU0xPVF9UQUJMRV9WRVIgMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ2MzpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfc2xvdF90YWJsZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY0LVxcdHU4IGZ2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY1LVxcdHU4IHRibF9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDY2OlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zbG90IHRibHNbXSBfX2NvdW50ZWRfYnkodGJsX251bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY3LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ2OTpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfc2xvdF90YWJsZV92NyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDcwLVxcdHU4IHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzItXFx0dTggbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ3MzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc2xvdF92NyB2N1tDWFNUX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc0LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ3NjpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192MSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc3LVxcdHU4IGZ2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc4LVxcdHU4IHJlZ19udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDc5OlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnIHJlZ3NbXSBfX2NvdW50ZWRfYnkocmVnX251bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgwLX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ4MjpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgzLVxcdHU4IHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODUtXFx0dTggbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ4NjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyByZWdzW10gX19jb3VudGVkX2J5KGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDg3LX0gX19wYWNrZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00ODk9dW5pb24gcnR3ODlfZmJ0Y19zZXRfbW9uX3JlZyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDkwOlxcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9tb25fcmVnX3YxIHYxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ5MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyB2NztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00OTItfSBfX3BhY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEwMTM9c3RhdGljIGludCBfc2VuZF9md19jbWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBoMmNfY2xhc3MsIHU4IGgyY19mdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTAxNi1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTAxNzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2Vmd2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTAxODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEwMTk6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZjeC1cXHUwMDNld2w7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTAyMDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEwMjEtXFx0dTggaDJjX2Z1bmNfbWFzaywgYmlkID0gQlRDX0JUXzFTVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTExMjI9c3RhdGljIHZvaWQgX3Jlc2V0X2J0Y192YXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTEyNC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTEyNTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjY6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjc6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidDAgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMTI4OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQxID0gXFx1MDAyNmN4LVxcdTAwM2VidDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTEyOS1cXHR1OCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTIyMD1zdGF0aWMgdm9pZCBfZ2V0X3JlZ19zdGF0dXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1OCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIyMi1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyMzpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyNDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX21vZHVsZSAqbWQgPSBcXHUwMDI2YnRjLVxcdTAwM2VtZGluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyNTpcXHR1bmlvbiBydHc4OV9idGNfZmJ0Y19tcmVnX3ZhbCAqcG1yZWc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIyNi1cXHR1MzIgcHJlX2FnY19hZGRyID0gUl9CVENfQkJfUFJFX0FHQ19TMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEzMTM9c3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMTUtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEzMTY6XFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE3OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE4OlxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEzMTk6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTUxMj1zdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJwdF90eXBlLCB1OCAqcGZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTUxNC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUxNTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUxNjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTc6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUxODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFxcdTAwMjZidF9saW5mby1cXHUwMDNlYTJkcF9kZXNjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTk6XFx0dW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvLnJwdF9mYnRjX2J0dmVyLmZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjA6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3YyICpwYWZoX3YyID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIxOlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqcGFmaF92NyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUyMjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRkZXZpbmZvICpwZGV2ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIzOlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaCAqcGFmaF92MSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUyNDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YxICpwc2Nhbl92MTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTI1OlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjIgKnBzY2FuX3YyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjY6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92NyAqcHNjYW5fdjc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTUyNy1cXHRib29sIHNjYW5fdXBkYXRlID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1MzYtXFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4YnR2ZXIgPT0gOCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1Mzc6XFx0XFx0XFx0cHZlci1cXHUwMDNldjggPSAqKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHZlcl92OCAqKXBmaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTM4LVxcdFxcdFxcdGJ0ID0gcHZlci1cXHUwMDNldjguYnRfaWQgPyBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDEgOiBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTQzLVxcdFxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3hidHZlciA9PSA3KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU0NDpcXHRcXHRcXHRwdmVyLVxcdTAwM2V2NyA9ICooc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0dmVyX3Y3ICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NDUtXFx0XFx0XFx0YnQtXFx1MDAzZXZlcl9pbmZvLmZ3ID0gbGUzMl90b19jcHUocHZlci1cXHUwMDNldjcuZndfdmVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NDktXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTUwOlxcdFxcdFxcdHB2ZXItXFx1MDAzZXYxID0gKihzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnR2ZXJfdjEgKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU1MS1cXHRcXHRcXHRidC1cXHUwMDNldmVyX2luZm8uZncgPSBsZTMyX3RvX2NwdShwdmVyLVxcdTAwM2V2MS5md192ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU1OC1cXHRcXHRpZiAodmVyLVxcdTAwM2VmY3hidHNjYW4gPT0gMSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1NTk6XFx0XFx0XFx0cHNjYW5fdjEgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92MSAqKXBmaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTYwLVxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCVENfU0NBTl9NQVgxOyBpKyspIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NjYtXFx0XFx0fSBlbHNlIGlmICh2ZXItXFx1MDAzZWZjeGJ0c2NhbiA9PSAyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU2NzpcXHRcXHRcXHRwc2Nhbl92MiA9IChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YyICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NjgtXFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIENYU0NBTl9NQVg7IGkrKykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU3NS1cXHRcXHR9IGVsc2UgaWYgKHZlci1cXHUwMDNlZmN4YnRzY2FuID09IDcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTc2OlxcdFxcdFxcdHBzY2FuX3Y3ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjcgKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU3Ny1cXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQ1hTQ0FOX01BWDsgaSsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTg0LVxcdFxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3hidHNjYW4gPT0gOCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODU6XFx0XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92OCAqcHNjYW5fdjggPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODY6XFx0XFx0XFx0XFx0KHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjggKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU4NzpcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKnRidCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU4OC1cXHRcXHRcXHRcXHRwc2Nhbl92OC1cXHUwMDNlYnRfaWQgPyBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDEgOiBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjAyLVxcdFxcdGlmICh2ZXItXFx1MDAzZWZjeGJ0YWZoID09IDIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjAzOlxcdFxcdFxcdHBhZmhfdjIgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3YyICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MDQtXFx0XFx0XFx0aWYgKHBhZmhfdjItXFx1MDAzZW1hcF90eXBlIFxcdTAwMjYgUlBUX0JUX0FGSF9TRVFfTEVHQUNZKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjEzLVxcdFxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3hidGFmaCA9PSA3KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYxNDpcXHRcXHRcXHRwYWZoX3Y3ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqKXBmaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjE1LVxcdFxcdFxcdGlmIChwYWZoX3Y3LVxcdTAwM2VtYXBfdHlwZSBcXHUwMDI2IFJQVF9CVF9BRkhfU0VRX0xFR0FDWSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYyNC1cXHRcXHR9IGVsc2UgaWYgKHZlci1cXHUwMDNlZmN4YnRhZmggPT0gOCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2MjU6XFx0XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3Y4ICpwYWZoX3Y4ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjI2OlxcdFxcdFxcdFxcdChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRhZmhfdjggKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYyNzpcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKnRidCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYyOC1cXHRcXHRcXHRcXHRwYWZoX3Y4LVxcdTAwM2VidF9pZCA/IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MSA6IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjI5OlxcdFxcdFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICp0YnRfbGluZm8gPSBcXHUwMDI2dGJ0LVxcdTAwM2VsaW5rX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDAtXFx0XFx0fSBlbHNlIGlmICh2ZXItXFx1MDAzZWZjeGJ0YWZoID09IDEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjQxOlxcdFxcdFxcdHBhZmhfdjEgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDItXFx0XFx0XFx0bWVtY3B5KFxcdTAwMjZidF9saW5mby1cXHUwMDNlYWZoX21hcFswXSwgcGFmaF92MS1cXHUwMDNlYWZoX2wsIDQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY0Ny1cXHRjYXNlIEJUQ19SUFRfVFlQRV9CVF9ERVZJQ0U6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY0ODpcXHRcXHRwZGV2ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGRldmluZm8gKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY0OS1cXHRcXHRhMmRwLVxcdTAwM2VkZXZpY2VfbmFtZSA9IGxlMzJfdG9fY3B1KHBkZXYtXFx1MDAzZWRldl9uYW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY1ODpzdGF0aWMgdm9pZCBydHc4OV9idGNfZndfcnB0X2V2bnRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmluZGV4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NjAtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2NjE6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2Nzc6c3RydWN0IHJ0dzg5X2J0Y19wcnB0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjc4LVxcdHU4IHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xNjgzPXN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjg0OlxcdFxcdFxcdCAgIHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjg1LVxcdFxcdFxcdCAgIHU4ICpwcnB0YnVmLCB1MzIgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjg3LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjg4OlxcdHN0cnVjdCBydHc4OV9idGNfdmVyICpmd3N1YnZlciA9IFxcdTAwMjZidGMtXFx1MDAzZWZ3aW5mby5md19zdWJ2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY4OTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2OTE6XFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2OTM6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2OTQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk1OlxcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX3JwdF9jdHJsX3Zlcl9pbmZvICpwcnB0ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk2OlxcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX2N5c3RhX2luZm8gKnBjeXN0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5NzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKmJ0Y19wcnB0ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjk4LVxcdHZvaWQgKnJwdF9jb250ZW50ID0gTlVMTCwgKnBmaW5mbyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE3MTU6XFx0YnRjX3BycHQgPSAoc3RydWN0IHJ0dzg5X2J0Y19wcnB0ICopXFx1MDAyNnBycHRidWZbaW5kZXhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE3MTYtXFx0cnB0X3R5cGUgPSBidGNfcHJwdC1cXHUwMDNldHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE3MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTcyNDpcXHRydHc4OV9idGNfZndfcnB0X2V2bnRfdmVyKHJ0d2RldiwgXFx1MDAyNnJwdF90eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1MC1cXHRcXHRcXHRcXHRcXHQgIHRyYWNlX3N0ZXAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE4NTE6XFx0XFx0XFx0XFx0XFx0ICBvZmZzZXRvZihzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc3RlcHNfdjIsIHN0ZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE4NTItXFx0XFx0XFx0ZndzdWJ2ZXItXFx1MDAzZWZjeHN0ZXAgPSBwZndpbmZvLVxcdTAwM2VycHRfZmJ0Y19zdGVwLmZpbmZvLnYyLmZ2ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xODU2LVxcdFxcdFxcdFxcdFxcdCAgdHJhY2Vfc3RlcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTg1NzpcXHRcXHRcXHRcXHRcXHQgIG9mZnNldG9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zdGVwc192Mywgc3RlcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1OC1cXHRcXHRcXHRmd3N1YnZlci1cXHUwMDNlZmN4c3RlcCA9IHBmd2luZm8tXFx1MDAzZXJwdF9mYnRjX3N0ZXAuZmluZm8udjMuZnZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI2NTg9c3RhdGljIHZvaWQgX3BhcnNlX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NTk6XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NjAtXFx0XFx0XFx0ICAgICAgdTggKnBidWYsIHUzMiBidWZfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NjI6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cXHUwMDNlYnRjLnZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjYzOlxcdHN0cnVjdCBydHc4OV9idGNfcHJwdCAqYnRjX3BycHQgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NjQtXFx0dTMyIGluZGV4ID0gMCwgcnB0X2xlbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjcwLVxcdHdoaWxlIChwYnVmKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MjY3MTpcXHRcXHRidGNfcHJwdCA9IChzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKilcXHUwMDI2cGJ1ZltpbmRleF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY3Mi1cXHRcXHRpZiAoaW5kZXggKyAyIFxcdTAwM2U9IHZlci1cXHUwMDNlaW5mb19idWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0yNjg5PXN0YXRpYyB2b2lkIF9hcHBlbmRfdGRtYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjkxLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjkyOlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjkzOlxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MjY5NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKnRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjk1OlxcdHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqdGx2X3Y3O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTY6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKnY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MjY5NzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYV92MyAqdjM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY5OC1cXHR1MTYgbGVuID0gYnRjLVxcdTAwM2Vwb2xpY3lfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzA4OlxcdHRsdiA9IChzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKilcXHUwMDI2YnRjLVxcdTAwM2Vwb2xpY3lbbGVuXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzA5LVxcdHRsdi1cXHUwMDNldHlwZSA9IENYUE9MSUNZX1RETUE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxMC1cXHRpZiAodmVyLVxcdTAwM2VmY3h0ZG1hID09IDEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzExOlxcdFxcdHYgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKilcXHUwMDI2dGx2LVxcdTAwM2V2YWxbMF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxMi1cXHRcXHR0bHYtXFx1MDAzZWxlbiA9IHNpemVvZigqdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzE1LVxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3h0ZG1hID09IDcgfHwgdmVyLVxcdTAwM2VmY3h0ZG1hID09IDQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzE2OlxcdFxcdHRsdl92NyA9IChzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcgKilcXHUwMDI2YnRjLVxcdTAwM2Vwb2xpY3lbbGVuXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzE3LVxcdFxcdHRsdl92Ny1cXHUwMDNlbGVuID0gc2l6ZW9mKGRtLVxcdTAwM2V0ZG1hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MjMtXFx0XFx0dGx2LVxcdTAwM2VsZW4gPSBzaXplb2YoKnYzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzI0OlxcdFxcdHYzID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hX3YzICopXFx1MDAyNnRsdi1cXHUwMDNldmFsWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MjUtXFx0XFx0djMtXFx1MDAzZWZ2ZXIgPSB2ZXItXFx1MDAzZWZjeHRkbWE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0yNzM3PXN0YXRpYyB2b2lkIF9hcHBlbmRfc2xvdF92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzM5LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzQwOlxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc0MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKnRsdiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc0Mi1cXHRzdHJ1Y3QgYnRjX2ZidGNfMXNsb3QgKnYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzU4OlxcdFxcdHRsdiA9IChzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKilcXHUwMDI2YnRjLVxcdTAwM2Vwb2xpY3lbbGVuXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzU5LVxcdFxcdHYgPSAoc3RydWN0IGJ0Y19mYnRjXzFzbG90ICopXFx1MDAyNnRsdi1cXHUwMDNldmFsWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9Mjc4Mj1zdGF0aWMgdm9pZCBfYXBwZW5kX3Nsb3Rfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI3ODQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3ICp0bHYgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODUtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI3ODY6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzg3LVxcdHU4IGksIGNudCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yODA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI4MDU6XFx0XFx0XFx0dGx2ID0gKHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqKVxcdTAwMjZidGMtXFx1MDAzZXBvbGljeVtsZW5dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4MDYtXFx0XFx0XFx0dGx2LVxcdTAwM2V0eXBlID0gQ1hQT0xJQ1lfU0xPVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI4Mzc9c3RhdGljIHZvaWQgX2FwcGVuZF9zbG90KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg0NzpzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg0OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg0OS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg1MDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg1MS1cXHR1MzIgYml0X21hcCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMwNDc6c3RhdGljIHZvaWQgcnR3ODlfYnRjX2Z3X3NldF9zbG90cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA0OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA0OS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcgKnRsdl92NyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfc2xvdF90YWJsZSAqdGJsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMwNTM6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDU0LVxcdHUxNiBuLCBsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMwODY6c3RhdGljIHZvaWQgcnR3ODlfYnRjX2Z3X2VuX3JwdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA4Ny1cXHRcXHRcXHRcXHRib29sIGZvcmNlX2V4ZWMsIHUzMiBycHRfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA4OS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA5MDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKmZ3aW5mbyA9IFxcdTAwMjZidGMtXFx1MDAzZWZ3aW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDkxLVxcdHVuaW9uIHJ0dzg5X2ZidGNfcnRwX2N0cmwgcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMxMzM9c3RhdGljIHZvaWQgYnRjX2Z3X3NldF9tb25yZWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzEzNS1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxMzY6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cXHUwMDNlYnRjLnZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMTM3OlxcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9tb25fcmVnX3YxICp2MSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzEzODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyAqdjcgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxMzktXFx0dTggaSwgbiwgdWxlbiwgY3htcmVnX21heDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzE1ODpcXHR1bGVuID0gc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzE5ND1zdGF0aWMgdm9pZCBfdXBkYXRlX2RtX3N0ZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzE5Ny1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzE5ODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxOTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjEwPXN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzIxMy1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzIxNDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyMTUtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyNjE9c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNjM6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cXHUwMDNlYnRjLnZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI4Nz1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfdG9fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcF92OClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjg4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjg5OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBydHdkZXYtXFx1MDAzZWJ0Yy52ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI5MC1cXHR1MzIgZW5fbWFwX3Y3ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzE0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBydHdkZXYtXFx1MDAzZWJ0Yy52ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMxNS1cXHR1MzIgZW5fbWFwX3Y4ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzYtXFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZ3BpbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM3OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM4LVxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBsMl9oMmM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDI1PXN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDI3LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDI4OlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyOS1cXHR1OCBidDFfc3dfdHlwZSA9IEJUQ19TV0lUQ0hfSU5URVJOQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDY3PXN0YXRpYyB2b2lkIF9md19zZXRfZHJ2X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjktXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NzA6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNTgxPXZvaWQgYnRjX2Z3X2V2ZW50KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZXZ0X2lkLCB2b2lkICpkYXRhLCB1MzIgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzU4My1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzU4NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2Vmd2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzU4NTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM1ODYtXFx0dTggaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM2MTY9c3RhdGljIHZvaWQgX3NldF9nbnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfbWFwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYxOS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzYyMDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MjE6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX291dHNyY19zZXRfaW5mbyAqbyA9IFxcdTAwMjZkbS1cXHUwMDNlb3N0X2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYyMi1cXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X3dsX2FjdCAqd2xhY3Rfc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9Mzc2OT1zdGF0aWMgdm9pZCBfc2V0X3dsX3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzc3Mi1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzc3MzpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzc3NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM3NzUtXFx0Ym9vbCBsZXZlbF9jaGcgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzgyNC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzgyNTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4MjYtXFx0Ym9vbCBsZXZlbF9jaGcgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4NTI9c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1NS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1NjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTctXFx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzkxND1zdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5MTctXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM5MTg6XFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTE5OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zOTIwLVxcdHU4IGgyY19mdW5jID0gU0VUX0JUX0xOQV9DT05TVFJBSU47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTg4PXN0YXRpYyB2b2lkIF9zZXRfYnRfY29yeF90YWJsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zOTkwLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTkxOlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzk5MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzk5MzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5OTQtXFx0dTggaXNfMjRnLCBpc181NmcsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDI4PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmFfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDAzMC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAzMTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwMzI6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9zbWFwICp3bF9zbWFwID0gXFx1MDAyNmN4LVxcdTAwM2V3bC5zdGF0dXMubWFwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwMzM6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDM0LVxcdGJvb2wgYnRfMnIgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQwNTY9c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDU5LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYwOlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYxOlxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2MzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqciA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDY1OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2NjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcXHUwMDI2d2wtXFx1MDAzZXN0YXR1cy5tYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2NzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHBhcmE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDA2OC1cXHR1OCBibW9kZSA9IGRtLVxcdTAwM2V0ZGRfYmluZC53bF9saW5rX21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MTg0PXN0YXRpYyB2b2lkIF91cGRhdGVfYnRjX3N0YXRlX21hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTg2LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg3OlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE4ODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg5OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTkwOlxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFxcdTAwMjZidC1cXHUwMDNlbGlua19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxOTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjExPXN0YXRpYyB1OCBfZ2V0X3dsX2d1YXJkX2J3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaW5kZXgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDIxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDIxMzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5kbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjE0LVxcdHU4IGd1YXJkX2NoID0gcnR3ZGV2LVxcdTAwM2VjaGlwLVxcdTAwM2VhZmhfZ3VhcmRfY2g7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjUyPXN0YXRpYyB2b2lkIF9zZXRfd2xfY2hfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQyNTQtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyNTU6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyNTY6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbyAqYWZoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQyNTctXFx0dTE2IGNoX3N0YXJ0LCBjaF9lbmQsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MzcxPXN0YXRpYyB2b2lkIF9zZXRfd2xfY2hfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MzczLVxcdHN0YXRpYyBjb25zdCB1OCBwYXRoX2h3YltCVENfUkZfTlVNXSA9IHtSVFc4OV9QSFlfMCwgUlRXODlfUEhZXzF9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQzNzQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGMuZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDM3NTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5jeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0Mzc2OlxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQzNzctXFx0dTMyIHZjb19mcmVxLCBjaF9sbyA9IDAsIGNoX3VwID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ0NTA9c3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NDUyLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDUzOlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDQ1NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDU1OlxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ0NTY6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9ybGluayAqcmxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ1Ny1cXHR1OCBoMmNfZnVuYywgaHdiLCBidF9saW5rX2NoZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ1MzYtXFx0XFx0XFx0ICAgIFxcdTAwMjZ3bC1cXHUwMDNlYWZoX2luZm9baHdiXVtqXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTM3OlxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbykpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDUzOC1cXHRcXHRcXHQgICAgIWJ0X2xpbmtfY2hnIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTQzLVxcdFxcdCAgICAgICBcXHUwMDI2d2wtXFx1MDAzZWFmaF9pbmZvW2h3Yl1bal0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU0NDpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDU3OT1zdGF0aWMgYm9vbCBfY2hlY2tfZnJlZXJ1bihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTgxLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTgyOlxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTgzOlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU4NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg1OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFxcdTAwMjZidC1cXHUwMDNlbGlua19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1ODY6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXFx1MDAyNmJ0X2xpbmZvLVxcdTAwM2VoaWRfZGVzYztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg3OlxcdHN0cnVjdCBydHc4OV9idGNfbW9kdWxlICptZCA9IFxcdTAwMjZidGMtXFx1MDAzZW1kaW5mbztcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MDEuOTIzMjQ1Njg3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwMjg0OTAzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2V4aXN0ZW5jZSBDb2RlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGNvZXguY2AgZmlsZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGV4cG9zZWQgaW50ZXJmYWNlIOKAkyB3aGljaCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG1lYW50IHRvIGJlIHVzZWQgZXh0ZXJuYWxseT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29leGlzdGVuY2UgZnVuY3Rpb25zIGFyZSAqbm90KiBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgdGhhdCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBvciBwb3RlbnRpYWxseSBldmVuIG90aGVyIG1vZHVsZXMsIGNvdWxkIGNhbGwuXG5cblRoZXJlZm9yZSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byBncmVwIGZvciBlaXRoZXIgYHJ0dzg5X2J0Y19gIG9yIGBydHc4OV9jb2V4X2Agd2l0aGluIGBjb2V4LmNgIGFuZCBvbmx5IHJldHVybiB0aG9zZSBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IGRlZmluZWQgYXMgYHN0YXRpY2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgaGlnaGxpZ2h0IHRoZSBrZXkgZW50cnkgcG9pbnRzIGFuZCBpbnRlcm5hbCBmdW5jdGlvbiBjYWxscyB0aGF0IHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gbGV2ZXJhZ2VzLiBJIGV4cGVjdCB0aGlzIHdpbGwgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW0ncyBleHRlcm5hbCBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxOTksIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTowNC45NTE3MzkxOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MjMwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXih2b2lkfGludHxib29sfHUzMikgcnR3ODlfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ3MTc9c3RhdGljIHZvaWQgX3NldF90ZG1hX2JpbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHRkbWFfb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzYwLSNkZWZpbmUgQlRDX0IxX01BWCAyNTAgLyogdW5pdCBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ3NjE6dm9pZCBydHc4OV9idGNfc2V0X3BvbGljeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTUwOTU9RVhQT1JUX1NZTUJPTChydHc4OV9idGNfc2V0X3BvbGljeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNTA5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo1MDk3OnZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3lfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNTA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz03NTg3PXN0YXRpYyB2b2lkIF91cGRhdGVfd2xfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9idGNfd2xfbGlua19pbmZvICp3bF9saW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NzcxNjp2b2lkIHJ0dzg5X2NvZXhfYWN0MV93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzczOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzM5OnZvaWQgcnR3ODlfY29leF9idF9kZXZpbmZvX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzc0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjc3NTU6dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg0MTk9dm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NDY6dm9pZCBydHc4OV9idGNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NjM6dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODY3MTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzIzOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3ODQ6dm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04Nzg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODgxNDp2b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fZmluaXNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODgzNzp2b2lkIHJ0dzg5X2J0Y19udGZ5X3N3aXRjaF9iYW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODg1OTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODg2MC1cXHRcXHRcXHRcXHQgICAgZW51bSBidGNfcGt0X3R5cGUgcGt0X3R5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg5Mjc6dm9pZCBydHc4OV9idGNfbnRmeV9lYXBvbF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODkzODp2b2lkIHJ0dzg5X2J0Y19udGZ5X2FycF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODk0ODp2b2lkIHJ0dzg5X2J0Y19udGZ5X2RoY3BfcGFja2V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODk0OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg5NTk6dm9pZCBydHc4OV9idGNfbnRmeV9pY21wX3BhY2tldF93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTE1Nz1zdGF0aWMgdm9pZCBfbnRmeV9yb2xlX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCByaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkyMjk6dm9pZCBydHc4OV9idGNfbnRmeV9yb2xlX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMzAtXFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTM0NTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTQwMD1zdGF0aWMgYm9vbCBfbnRmeV93bF9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfcGF0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk0NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTQ2Njp2b2lkIHJ0dzg5X2J0Y19udGZ5X3dsX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9tYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTQ2Ny1cXHRcXHRcXHQgICBlbnVtIGJ0Y193bF9yZmtfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTYzOD1zdGF0aWMgdm9pZCBydHc4OV9idGNfbnRmeV93bF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NjU1OnZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk3MDI9c3RhdGljIHU4IHJ0dzg5X2J0Y19jMmhfZ2V0X2luZGV4X2J5X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk3Njc6dm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTc2OC1cXHRcXHRcXHQgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTMyNDY9c3NpemVfdCBydHc4OV9idGNfZHVtcF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzMxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzMyMDp2b2lkIHJ0dzg5X2NvZXhfcmVjb2duaXplX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTMzNTE6dm9pZCBydHc4OV9idGNfbnRmeV9wcmVzZXJ2ZV9idF90aW1lKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMzUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEzMzY0PUVYUE9SVF9TWU1CT0wocnR3ODlfYnRjX250ZnlfcHJlc2VydmVfYnRfdGltZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTMzNjY6dm9pZCBydHc4OV9idGNfbnRmeV9jb25uX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgc3RhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNjcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTowNC45OTgzNjc0MTlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTEzMTMyNzU1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgX3NldF9idF90eF9wb3dlcmAgZnVuY3Rpb24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCdzIHN0YXRpYy4gTGluZSAzODUyIGNvbmZpcm1zIGl0OiBgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlciguLi4pYC4gT2theSwgaXQncyBzdGF0aWMuIFRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB3ZSBjYW4gdGFyZ2V0IGl0IGRpcmVjdGx5IHdpdGggc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMsIGdpdmVuIGNvbXBpbGVyIGlubGluaW5nIGNvbnNpZGVyYXRpb25zIGZvciBzdGF0aWMgZnVuY3Rpb25zIGFzIG91dGxpbmVkIGluIHRoZSBwcm9tcHQncyBydWxlLiBTaW5jZSBpdCdzIGluIGEgYC5jYCBmaWxlLCBpdCBtaWdodCBub3QgYmUgaW5saW5lZCwgYnV0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzLlxuXG5Mb29raW5nIGF0IGBjb2V4LmNgLCB0aGUgY2FsbGVycyBhcmUgYHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRgLCBgcnR3ODlfYnRjX250ZnlfaW5pdGAsIGBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZWAsIGBydHc4OV9idGNfbnRmeV93bF9zdGFgLCBhbmQgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYC4gRWl0aGVyIHRoZXNlIGNhbiBiZSB0YXJnZXRlZCwgb3IgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpZiBub3QgaW5saW5lZC5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZXF1aXJlZCBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBgcnR3ODlgIFVTQiB2YXJpYW50LiBGcm9tIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gLCBJIHNlZSB0aGVzZSByZWxldmFudCBvcHRpb25zOiBgUlRXODlgIChkZXBlbmRzIG9uIGBNQUM4MDIxMWApLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgICh0cmlzdGF0ZSksIGFuZCB2YXJpb3VzIGRldmljZS1zcGVjaWZpYyBvcHRpb25zIGxpa2UgYFJUVzg5Xzg4NTJBVWAgKGRlcGVuZHMgb24gYFVTQmAsIHNlbGVjdHMgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgZXRjLikuIFdlIGFsc28gaGF2ZSBgTUFDODAyMTFgIGFuZCBgVVNCYC5cblxuTGV0IG1lIHZlcmlmeSB0aGF0IGBSVFc4OV84ODUyQVVgIHJlYWxseSBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgUlRXODlgLiBEb3VibGUtY2hlY2tpbmcgdGhlIGBLY29uZmlnYDogeWVzLCBgUlRXODlfODg1MkFVYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBzZWxlY3RzIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAuICBTbywgdG8gZW5hYmxlIHRoZSBVU0IgdmFyaWFudCwgdGhlIGZvbGxvd2luZyBjb25maWdzIGFyZSBuZWVkZWQ6IGBSVFc4OWAsIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAsIGBSVFc4OV84ODUyQVVgIChvciBvbmUgb2YgdGhlIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgUlRXODlfODg1MkJVYCwgZXRjLiksIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gSSdsbCBhbHNvIGRvdWJsZSBjaGVjayB0aGF0IGBNQUM4MDIxMWAgZGVwZW5kcyBvbiBgTkVUREVWSUNFU2AsIGBXTEFOYCwgYENGRzgwMjExYCwgYnV0IHRoYXQgc2hvdWxkIGJlIHN0YW5kYXJkLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjb3JyZWN0LlxuXG5Ob3csIGxldCdzIHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyByZW1vdmluZyBhIGd1YXJkIGNvbmRpdGlvbiwgYCFyZl9iYW5kYC4gVGhpcyBtZWFucyB0aGF0IGBfc2V0X2J0X3R4X3Bvd2VyYCB3aWxsIG5vdyBiZSBleGVjdXRlZCBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIElzIHRoaXMgY29kZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmc/IFllcywgdGhpcyBjaGFuZ2UgaW1wYWN0cyBleGVjdXRhYmxlIGRyaXZlciBsb2dpYyBpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHdoaWNoIGlzIGEgUmVhbHRlayBXaS1GaSBkcml2ZXIsIHdpdGggVVNCIGRyaXZlciB2YXJpYW50cy4gV2UgaGF2ZSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBpbnRlcmZhY2VzIGZvciByZWFjaGFiaWxpdHkuIFJlbW92aW5nIHRoZSBjaGVjayBjb3VsZCBpbnRyb2R1Y2UgbmV3IGV4ZWN1dGlvbiBwYXRocyBvciB2dWxuZXJhYmlsaXRpZXMuXG5cblRoZXJlZm9yZSwgZm9yIEZvY3VzU3ltYm9scywgSSdsbCBzZWxlY3Q6IGBfc2V0X2J0X3R4X3Bvd2VyYCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydGAsIGBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZWAsIGFuZCBgcnR3ODlfYnRjX2MyaF9oYW5kbGVgLlxuXG5UbyBzdW1tYXJpemUgdGhlIHJlcXVpcmVkIGNvbmZpZ3MgZm9yIHRoaXMgdGFyZ2V0IHRoZXkgYXJlOiBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBgUlRXODlfODg1MkFVYCwgYE1BQzgwMjExYCwgYW5kIGBVU0JgLlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg5MSwiT3V0cHV0VG9rZW5zIjoyMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjE2LjMxMTY0NTQ4NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDU2OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfc2V0X2J0X3R4X3Bvd2VyXCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZVwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfc2V0X2J0X3R4X3Bvd2VyXCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZVwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MTYuMzg0NzA5NTU0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDAzMzQyMjQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjE2LjM4NTE3Mjk5NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwMDMyOTU1MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHRoZSBgfHwgIXJmX2JhbmRgIGNoZWNrIGZyb20gdGhlIGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gQWxsIHZhcmlhYmxlcyB3aXRoaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAgKHN1Y2ggYXMgYGJ1ZmApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIG9uIHRoZSBzdGFjayAoYHU4IGJ1ZlsyXSA9IHt9O2ApLCBhbmQgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSBhcyBhIGB1OGAgcGFyYW1ldGVyLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZlMDgyNWFjZmUzMGNiNGZhZjliNjAyMjExZjU5ZTk0Mzk1MDJhNjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLmY0MmE2Y2MzZWI3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0zODU5LDcgKzM4NTksNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG4gXHR1OCBidWZbMl0gPSB7fTtcbiBcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbiBcbi1cdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpXG4rXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoYnQtXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjE2LjM4NTE3NDI0NFoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDEzNDk5NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBDb2V4aXN0ZW5jZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGRpdmUgaW50byBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvLCBvZiBjb3Vyc2UsICphY3R1YWxseSogbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIOKAkyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBtYWRlIGRpcmVjdGx5LiAgQmV5b25kIHRoZSBwYXRjaCBpdHNlbGYsIEknbSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIHRoYXQgZmlsZSwgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGNoYW5nZXMuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhYm91dCBgX3NldF9idF90eF9wb3dlcmAgYW5kIGhvdyB0aGUgYHJmX2JhbmRgIHZhcmlhYmxlIGludGVyYWN0cyB3aXRoIGl0LiBUaGlzIGlzIHdoZXJlIEknbGwgdXNlIGVpdGhlciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbidzIGJlaGF2aW9yIGluIHJlbGF0aW9uIHRvIGZyZXF1ZW5jeSBiYW5kIHNlbGVjdGlvbiwgYXMgYW55IGNoYW5nZXMgaGVyZSBjb3VsZCBzaWduaWZpY2FudGx5IGltcGFjdCBjb2V4aXN0ZW5jZSB3aXRoIEJsdWV0b290aC4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBrbm93ICp3aGF0KiBpdCBkb2VzIGFuZCAqaG93KiBpdCBkb2VzIGl0IHdpdGggYHJmX2JhbmRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MjEuNzk4Njc2NDdaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODUwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzODUwOlxcdH1cXG4zODUxOlxcdFxcbjM4NTI6XFx0c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxcbjM4NTM6XFx0XFx0XFx0XFx0ICAgICB1OCByZl9iYW5kLCB1OCBsZXZlbClcXG4zODU0OlxcdHtcXG4zODU1OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4zODU2OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuMzg1NzpcXHRcXHR1OCBoMmNfZnVuYyA9IFNFVF9CVF9UWF9QV1I7XFxuMzg1ODpcXHRcXHR1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDtcXG4zODU5OlxcdFxcdHU4IGJ1ZlsyXSA9IHt9O1xcbjM4NjA6XFx0XFx0dTggbGVuID0gc2l6ZW9mKCpidWYpO1xcbjM4NjE6XFx0XFxuMzg2MjpcXHRcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcXG4zODYzOlxcdFxcdFxcdHJldHVybjtcXG4zODY0OlxcdFxcbjM4NjU6XFx0XFx0aWYgKGJ0LVxcdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxcbjM4NjY6XFx0XFx0XFx0cmV0dXJuO1xcbjM4Njc6XFx0XFxuMzg2ODpcXHRcXHRpZiAoYmlkID09IEJUQ19BTExfQlQpIHtcXG4zODY5OlxcdFxcdFxcdGlkX3N0YXJ0ID0gQlRDX0JUXzFTVDtcXG4zODcwOlxcdFxcdFxcdGlkX3N0b3AgPSBCVENfQlRfMk5EO1xcbjM4NzE6XFx0XFx0fSBlbHNlIHtcXG4zODcyOlxcdFxcdFxcdGlkX3N0YXJ0ID0gYmlkO1xcbjM4NzM6XFx0XFx0XFx0aWRfc3RvcCA9IGJpZDtcXG4zODc0OlxcdFxcdH1cXG4zODc1OlxcdFxcbjM4NzY6XFx0XFx0Zm9yIChpID0gaWRfc3RhcnQ7IGkgXFx1MDAzYz0gaWRfc3RvcDsgaSsrKSB7XFxuMzg3NzpcXHRcXHRcXHRpZiAoaSA9PSBCVENfQlRfMk5EKSB7XFxuMzg3ODpcXHRcXHRcXHRcXHRpZiAoIShydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZXBhcmFfdmVyIFxcdTAwMjYgQlRDX0ZFQVRfRFVBTF9CVCkpXFxuMzg3OTpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zODgwOlxcdFxcbjM4ODE6XFx0XFx0XFx0XFx0YnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDE7XFxuMzg4MjpcXHRcXHRcXHRcXHRoMmNfZnVuYyB8PSBCVF9IMkNfRlVOQ19CVDJORDtcXG4zODgzOlxcdFxcdFxcdH1cXG4zODg0OlxcdFxcbjM4ODU6XFx0XFx0XFx0YnVmWzBdID0gKHM4KSgtbGV2ZWwpO1xcbjM4ODY6XFx0XFx0XFx0YnVmWzFdID0gcmZfYmFuZDsgIC8qIGJpdC1tYXA6IGJpdDEtXFx1MDAzZTVHSHovNkdoeiwgYml0MC1cXHUwMDNlMi40R0h6ICovXFxuMzg4NzpcXHRcXG4zODg4OlxcdFxcdFxcdGlmICghZm9yY2VfZXhlYyBcXHUwMDI2XFx1MDAyNiAhYnRjLVxcdTAwM2VjbGlfaDJjX2NtZCkge1xcbjM4ODk6XFx0XFx0XFx0XFx0aWYgKHJmX2JhbmQgPT0gUlRXODlfQkFORF8yRyBcXHUwMDI2XFx1MDAyNlxcbjM4OTA6XFx0XFx0XFx0XFx0ICAgIGJ0LVxcdTAwM2V0eF9wb3dlcl9ub3cgPT0gbGV2ZWwpXFxuMzg5MTpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zODkyOlxcdFxcdFxcdFxcdGVsc2UgaWYgKHJmX2JhbmQgIT0gUlRXODlfQkFORF8yRyBcXHUwMDI2XFx1MDAyNlxcbjM4OTM6XFx0XFx0XFx0XFx0XFx0IGJ0LVxcdTAwM2V0eF9wb3dlcl9ub3dfNmcgPT0gbGV2ZWwpXFxuMzg5NDpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zODk1OlxcdFxcdFxcdH1cXG4zODk2OlxcdFxcbjM4OTc6XFx0XFx0XFx0aWYgKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcXG4zODk4OlxcdFxcdFxcdFxcdGxlbiA9IFNFVF9SRl9QQVJBX0FYX0xFTjtcXG4zODk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOToyMS43OTk4MjAwNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODY2ODg1ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIEJsdWV0b290aCBUcmFuc21pc3Npb24gUG93ZXIqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYXQgYSBncmFudWxhciBsZXZlbC4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIGl0J3MgYSBwcml2YXRlIGZ1bmN0aW9uLCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBCbHVldG9vdGggdHJhbnNtaXR0ZXIncyBwb3dlciBvdXRwdXQuIEkga25vdyB0aGlzIGlzIGEgY3JpdGljYWwgcGFyYW1ldGVyLiBFbnN1cmluZyBwcm9wZXIgcG93ZXIgbGV2ZWwgaXMgcGFyYW1vdW50IGZvciByYW5nZSwgY29ubmVjdGlvbiBzdGFiaWxpdHksIGFuZCwgb2YgY291cnNlLCBhZGhlcmVuY2UgdG8gcmVndWxhdG9yeSBsaW1pdHMuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaXMgdml0YWwgZm9yIHRyb3VibGVzaG9vdGluZyBjb25uZWN0aXZpdHkgaXNzdWVzIG9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UgaW4gbXkgc3lzdGVtcy4gSSdtIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyZmFjZSDigJMgd2hldGhlciBpdCdzIGRpcmVjdCByZWdpc3RlciBtYW5pcHVsYXRpb24sIHVzZXMgYSBIQUwsIG9yIGludGVyYWN0cyB3aXRoIGEgQmx1ZXRvb3RoIGNvbnRyb2xsZXIgdGhyb3VnaCBhbiBIQ0kgY29tbWFuZC4gSSdtIGFsc28gY3VyaW91cyBhYm91dCB0aGUgaW5wdXQgcGFyYW1ldGVyczogYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRCbSB2YWx1ZSBkaXJlY3RseSwgb3IgYSBtb3JlIGFic3RyYWN0IGxldmVsPyBBbmQgaG93IGRvZXMgaXQgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnM/IEFueSByYW5nZSBjaGVja3Mgb3IgY2xhbXBpbmc/IEFyZSB0aGVyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgaW50ZXJuYWwgdmFyaWFibGVzIG9yIHN0YXRlcz8gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIGZsb3cgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGltcGxpY2l0IHBvd2VyIG1hbmFnZW1lbnQgb3IgZHluYW1pYyBwb3dlciBhZGFwdGF0aW9uIGludm9sdmVkLiBNeSBnb2FsIGhlcmUgaXMgYSBmdWxsIGNvbmNlcHR1YWwgbW9kZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjEsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjI1LjY2NjcwOTY5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzODkwOlxcdFxcdFxcdFxcdCAgICBidC1cXHUwMDNldHhfcG93ZXJfbm93ID09IGxldmVsKVxcbjM4OTE6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzg5MjpcXHRcXHRcXHRcXHRlbHNlIGlmIChyZl9iYW5kICE9IFJUVzg5X0JBTkRfMkcgXFx1MDAyNlxcdTAwMjZcXG4zODkzOlxcdFxcdFxcdFxcdFxcdCBidC1cXHUwMDNldHhfcG93ZXJfbm93XzZnID09IGxldmVsKVxcbjM4OTQ6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzg5NTpcXHRcXHRcXHR9XFxuMzg5NjpcXHRcXG4zODk3OlxcdFxcdFxcdGlmIChydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXFxuMzg5ODpcXHRcXHRcXHRcXHRsZW4gPSBTRVRfUkZfUEFSQV9BWF9MRU47XFxuMzg5OTpcXHRcXG4zOTAwOlxcdFxcdFxcdGlmICghX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIGgyY19mdW5jLCBidWYsIGxlbikpIHtcXG4zOTAxOlxcdFxcdFxcdFxcdGJ0Yy1cXHUwMDNlZG0ucmZfdHJ4X3BhcmEuYnRfdHhfcG93ZXJbaV0gPSBsZXZlbDtcXG4zOTAyOlxcdFxcdFxcdFxcdGlmIChyZl9iYW5kID09IFJUVzg5X0JBTkRfMkcpXFxuMzkwMzpcXHRcXHRcXHRcXHRcXHRidC1cXHUwMDNldHhfcG93ZXJfbm93ID0gbGV2ZWw7XFxuMzkwNDpcXHRcXHRcXHRcXHRlbHNlXFxuMzkwNTpcXHRcXHRcXHRcXHRcXHRidC1cXHUwMDNldHhfcG93ZXJfbm93XzZnID0gbGV2ZWw7XFxuMzkwNjpcXHRcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuMzkwNzpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBidCVkX3R4X3Bvd2VyX2xldmVsID0gJWRcXFxcblxcXCIsXFxuMzkwODpcXHRcXHRcXHRcXHRcXHQgICAgX19mdW5jX18sIGksIGxldmVsKTtcXG4zOTA5OlxcdFxcdFxcdH1cXG4zOTEwOlxcdFxcdH1cXG4zOTExOlxcdH1cXG4zOTEyOlxcdFxcbjM5MTM6XFx0I2RlZmluZSBCVENfQlRfUlhfTk9STUFMX0xWTCA3XFxuMzkxNDpcXHRzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG4zOTE1OlxcdFxcdFxcdFxcdCAgICB1OCByZl9iYW5kLCB1OCBsZXZlbClcXG4zOTE2OlxcdHtcXG4zOTE3OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4zOTE4OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuMzkxOTpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuMzkyMDpcXHRcXHR1OCBoMmNfZnVuYyA9IFNFVF9CVF9MTkFfQ09OU1RSQUlOO1xcbjM5MjE6XFx0XFx0dTggaSwgaWRfc3RhcnQsIGlkX3N0b3A7XFxuMzkyMjpcXHRcXHRib29sIHN0YXRlID0gZmFsc2U7XFxuMzkyMzpcXHRcXHR1MzIgc2NiZF9iaXQgPSAwO1xcbjM5MjQ6XFx0XFx0dTggYnVmWzJdID0ge307XFxuMzkyNTpcXHRcXHR1OCBsZW4gPSBzaXplb2YoKmJ1Zik7XFxuMzkyNjpcXHRcXG4zOTI3OlxcdFxcdGlmIChidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKVxcbjM5Mjg6XFx0XFx0XFx0cmV0dXJuO1xcbjM5Mjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjI1LjY2NzEzMTM1WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NTE4NzcwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCbHVldG9vdGggVFggUG93ZXIgU2V0dGluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UgaGF2ZSBhIGJ1ZmZlciwgYGJ1ZmAsIGluaXRpYWxpemVkIGFzIGB1OCBidWZbMl0gPSB7fTtgLiBTbyBpdCdzIGEgdHdvLWJ5dGUgYXJyYXksIHplcm9lZCBvdXQuIExpbmUgMzg2MCBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBgdTggbGVuID0gc2l6ZW9mKCpidWYpO2AuIE5vdywgYHNpemVvZigqYnVmKWAgc2hvdWxkIGJlIGAxYCBiZWNhdXNlIGAqYnVmYCBkZXJlZmVyZW5jZXMgdG8gYSBgdThgLCB3aGljaCBpcyBvbmUgYnl0ZS4gVGhvdWdoLCBpZiB0aGUgYGNoaXBfZ2VuYCBpcyBgUlRXODlfQ0hJUF9BWGAsIHRoZW4gdGhlIGxlbmd0aCBjb3VsZCBhY3R1YWxseSBiZSAyIG9yIDEgYXMgZGV0ZXJtaW5lZCBieSAgYFNFVF9SRl9QQVJBX0FYX0xFTmAuXG5cblRoYXQgc2VlbXMgYSBiaXQgb2RkOyB0aGUgYnVmZmVyIGlzICpjbGVhcmx5KiB0d28gYnl0ZXMgd2lkZSwgYm90aCBpbml0aWFsaXplZCwgYW5kIHlldCB0aGUgY29kZSBjYWxjdWxhdGVzIGBsZW5gIGFzIGAxYCAob3Igd2hhdGV2ZXIgYFNFVF9SRl9QQVJBX0FYX0xFTmAgZXZhbHVhdGVzIHRvKS4gIFRoaXMgbWVhbnMgd2UgYXJlIGxvc2luZyBpbmZvcm1hdGlvbi5cblxuVGhlbiwgd2UgaGF2ZSB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLCB3aGljaCBjYWxscyBgX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIGgyY19mdW5jLCBidWYsIGxlbilgLiBUaGlzIGlzIHdoZXJlIHdlJ3JlIGFjdHVhbGx5ICpzZW5kaW5nKiB0aGUgY29tbWFuZC4gU28sIHdpdGggdGhpcyBidWZmZXIgYW5kIGxlbmd0aCwgd2UncmUgc2VuZGluZyB3aGF0ZXZlciBpcyBpbiBgYnVmYCB0byB0aGUgZmlybXdhcmUgdXNpbmcgYSBjb21tYW5kLiBUaGlzIGlzIHZlcnkgaW1wb3J0YW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29tbWFuZCBpcyBleHBlY3RpbmcgYW5kIGlmIHRoaXMgYGxlbmAgbWlzbWF0Y2ggaXMgaW50ZW5kZWQuICBJIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYF9zZXRfYnRfdHhfcG93ZXJgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOToyOS41MTkwMTA4M1oiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3MTI3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3NldF9idF90eF9wb3dlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozODUyOnN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUzLVxcdFxcdFxcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDU2PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2NS1cXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE2NjpcXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY3LVxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MjkuNTY1NzI4NDM5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MjM0NzA0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBydHc4OSBDb2V4IERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIGBfc2V0X2J0X3R4X3Bvd2VyYCwgSSBzZWUgdGhleSd2ZSBzaW1wbGlmaWVkIHRoZSBjaGVjay4gSXQgdXNlZCB0byBiZSBgaWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZClgIGFuZCBub3cgaXQncyBqdXN0IGBpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHNjYW4gZm9yIHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzLiBBbnl0aW1lIHlvdSBjaGFuZ2UgYSBjb25kaXRpb25hbCBsaWtlIHRoYXQsIHlvdSBuZWVkIHRvIGJlIHZlcnkgY2FyZWZ1bC5cblxuTXkgZmlyc3QgbGluZSBvZiBhdHRhY2sgaXMgdG8gbG9vayBmb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHBsYWNlcyB3aGVyZSB3ZSBtaWdodCBub3cgYmUgcmVhZGluZyBmcm9tIG1lbW9yeSB0aGF0IHdlIHNob3VsZG4ndCBiZSwgYW55IGBjb3B5X3RvX3VzZXJgIGNhbGxzIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIG9yIGFueSB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMuIExldCdzIHNlZS4uLiB0aGUgYHU4IGJ1ZlsyXSA9IHt9O2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLCB3aGljaCBpcyBnb29kLiBXZSBhc3NpZ24gdmFsdWVzIHRvIGBidWZbMF1gIGFuZCBgYnVmWzFdYCwgdGhlIGBsZW5gIHZhcmlhYmxlIGlzIGVpdGhlciAxIG9yIGBTRVRfUkZfUEFSQV9BWF9MRU5gICh3aGljaCBpcyAyKSwgc28gdGhlIGFycmF5IGlzIGZ1bGx5IHdyaXR0ZW4gdG8gYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQuIEltcG9ydGFudGx5LCBub3RoaW5nIGlzIGV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSwgc28gd2UncmUgc2FmZSB0aGVyZS4gSSdtIG5vdCBzZWVpbmcgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBpbnRlcm5hbCBkcml2ZXIgbG9naWMgY2hhbmdlIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGNvZXggZHJpdmVyLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2UgYWxsb3dzIGByZl9iYW5kID09IDBgIHRvICpub3QqIGJhaWwgb3V0IGVhcmx5IGZyb20gdGhlIGZ1bmN0aW9uLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgX3NldF9yZl90cnhfcGFyYWAgYXJvdW5kIGxpbmUgNDE2NiBhcyB3ZWxsLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIGV4dHJhIGNhdXRpb3VzIHdoZW4gZGVhbGluZyB3aXRoIHJhZGlvLXJlbGF0ZWQgcGFyYW1ldGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTozMy4xODkyMDI2OTNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQxNTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQxNTA6XFx0XFx0XFx0XFx0XFx0cGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLndsX3R4X3Bvd2VyO1xcbjQxNTE6XFx0XFx0XFx0XFx0XFx0cGFyYS53bF9yeF9nYWluW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfcnhfZ2FpbjtcXG40MTUyOlxcdFxcdFxcdFxcdH1cXG40MTUzOlxcdFxcdFxcdFxcdGZvciAoaSA9IEJUQ19CVF8xU1Q7IGkgXFx1MDAzYyBCVENfQUxMX0JUOyBpKyspIHtcXG40MTU0OlxcdFxcdFxcdFxcdFxcdHBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcXG40MTU1OlxcdFxcdFxcdFxcdFxcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3J4X2dhaW47XFxuNDE1NjpcXHRcXHRcXHRcXHR9XFxuNDE1NzpcXHRcXHRcXHR9XFxuNDE1ODpcXHRcXHR9XFxuNDE1OTpcXHRcXG40MTYwOlxcdFxcdGlmIChkbS1cXHUwMDNlZmRkdF90cmFpbikge1xcbjQxNjE6XFx0XFx0XFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgMSwgUlRXODlfUEhZXzApO1xcbjQxNjI6XFx0XFx0XFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBiaWQsIEJUQ19XU0NCX1JYR0FJTiwgdHJ1ZSk7XFxuNDE2MzpcXHRcXHR9IGVsc2Uge1xcbjQxNjQ6XFx0XFx0XFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuNDE2NTpcXHRcXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuNDE2NjpcXHRcXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG40MTY3OlxcdFxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG40MTY4OlxcdFxcdH1cXG40MTY5OlxcdFxcbjQxNzA6XFx0bmV4dDpcXG40MTcxOlxcdFxcdGlmICghYnQtXFx1MDAzZWVuYWJsZS5ub3cgfHwgZG0tXFx1MDAzZXdsX29ubHkgfHwgd2xfc21hcC1cXHUwMDNlcmZfb2ZmIHx8XFxuNDE3MjpcXHRcXHQgICAgd2xfc21hcC1cXHUwMDNlbHBzID09IEJUQ19MUFNfUkZfT0ZGIHx8IG1vZGUgPT0gQlRDX1dMSU5LX1YwXzVHIHx8XFxuNDE3MzpcXHRcXHQgICAgKHJ0d2Rldi1cXHUwMDNlZGJjY19lbiBcXHUwMDI2XFx1MDAyNiByLVxcdTAwM2VkYmNjXzJnX3BoeSAhPSBSVFc4OV9QSFlfMSkpXFxuNDE3NDpcXHRcXHRcXHR3bF9zdGJfY2hnID0gMDtcXG40MTc1OlxcdFxcdGVsc2VcXG40MTc2OlxcdFxcdFxcdHdsX3N0Yl9jaGcgPSAxO1xcbjQxNzc6XFx0XFxuNDE3ODpcXHRcXHRpZiAod2xfc3RiX2NoZyAhPSBkbS1cXHUwMDNld2xfc3RiX2NoZykge1xcbjQxNzk6XFx0XFx0XFx0ZG0tXFx1MDAzZXdsX3N0Yl9jaGcgPSB3bF9zdGJfY2hnO1xcbjQxODA6XFx0XFx0XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VidGNfd2xfczFfc3RhbmRieShydHdkZXYsIGRtLVxcdTAwM2V3bF9zdGJfY2hnKTtcXG40MTgxOlxcdFxcdH1cXG40MTgyOlxcdH1cXG40MTgzOlxcdFxcbjQxODQ6XFx0c3RhdGljIHZvaWQgX3VwZGF0ZV9idGNfc3RhdGVfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG40MTg1OlxcdHtcXG40MTg2OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG40MTg3OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuNDE4ODpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG40MTg5OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MzMuMTg5NjE3OTIzWiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMjg0OTA3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBTYWZldHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBFc3NlbnRpYWxseSwgaXQncyBqdXN0IHJlbW92aW5nIGB8fCAhcmZfYmFuZGAgZnJvbSB0aGF0IGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IHRoZSBsb2NhbCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHByb3Blcmx5IOKAkyBgYnVmYCBpcyB6ZXJvZWQgb3V0IGFuZCBgbGVuYCBpcyBzZXQgY29ycmVjdGx5LiBJbXBvcnRhbnRseSwgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSwgd2hpY2ggaXMgZ29vZC4gVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlcnNwYWNlLCBvciBldmVuIGluZmx1ZW5jaW5nIGNvbnRyb2wgZmxvdy4gTm8gbmV3IGFsbG9jYXRpb25zIG9yIHBhZGRpbmcgaXNzdWVzLCBlaXRoZXIuXG5cbk5vdywgbGV0IG1lIHN5c3RlbWF0aWNhbGx5IHJ1biB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG4xLiAgKipLZXJuZWwgZGF0YSB0byB1c2Vyc3BhY2U/KiogTm9wZSwgbm90IGhlcmUuIFRoaXMgaXMgYSBjbGVhbiBiaWxsIG9mIGhlYWx0aC5cbjIuICAqKkNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIGRhdGE/KiogQWJzb2x1dGVseSBub3QuIFRoZSB2YXJpYWJsZXMgaW52b2x2ZWQgYXJlIGluaXRpYWxpemVkLlxuMy4gICoqQ29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8qKiBObyBkaWNlLiBFdmVyeXRoaW5nIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBoZXJlLlxuNC4gICoqQm91bmRzIGNoZWNrIHZ1bG5lcmFiaWxpdGllcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhY2Nlc3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/KiogTm90IGF0IGFsbC4gVGhlIGJvdW5kcyBjaGVja3Mgc2VlbSByb2J1c3QuXG5cblNvLCBhZnRlciBhIHRob3JvdWdoIHJldmlldywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gTGV0J3MgZ2V0IHRoZXNlIHJlc3VsdHMgc2V0LiBUaGlzIGlzIGEgc2ltcGxlIGFuZCBzYWZlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1NiwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTozNi40MTgxMTEwNTJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIGB8fCAhcmZfYmFuZGAgY2hlY2sgZnJvbSB0aGUgZWFybHkgcmV0dXJuIGNvbmRpdGlvbiBpbiBgX3NldF9idF90eF9wb3dlcigpYCwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBBbGwgdmFyaWFibGVzIHdpdGhpbiBgX3NldF9idF90eF9wb3dlcigpYCAoc3VjaCBhcyBgYnVmYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgb24gdGhlIHN0YWNrIChgdTggYnVmWzJdID0ge307YCksIGFuZCBgcmZfYmFuZGAgaXMgcGFzc2VkIGJ5IHZhbHVlIGFzIGEgYHU4YCBwYXJhbWV0ZXIuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgYHx8ICFyZl9iYW5kYCBjaGVjayBmcm9tIHRoZSBlYXJseSByZXR1cm4gY29uZGl0aW9uIGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIEFsbCB2YXJpYWJsZXMgd2l0aGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgIChzdWNoIGFzIGBidWZgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCBvbiB0aGUgc3RhY2sgKGB1OCBidWZbMl0gPSB7fTtgKSwgYW5kIGByZl9iYW5kYCBpcyBwYXNzZWQgYnkgdmFsdWUgYXMgYSBgdThgIHBhcmFtZXRlci4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrlql7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 07:15:33 +0000 UTC FinishedAt: 2026-09-11 07:19:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "MAC80211", "USB" ], "series_id": "9729e253-4afe-41a7-b2e0-66c3a6dad16c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "_set_bt_tx_power", "rtw89_btc_ntfy_init", "rtw89_btc_ntfy_scan_start", "rtw89_btc_ntfy_radio_state", "rtw89_btc_c2h_handle" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfc2V0X2J0X3R4X3Bvd2VyJiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X2luaXQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZSYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfYzJoX2hhbmRsZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIGB8fCAhcmZfYmFuZGAgY2hlY2sgZnJvbSB0aGUgZWFybHkgcmV0dXJuIGNvbmRpdGlvbiBpbiBgX3NldF9idF90eF9wb3dlcigpYCwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBBbGwgdmFyaWFibGVzIHdpdGhpbiBgX3NldF9idF90eF9wb3dlcigpYCAoc3VjaCBhcyBgYnVmYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgb24gdGhlIHN0YWNrIChgdTggYnVmWzJdID0ge307YCksIGFuZCBgcmZfYmFuZGAgaXMgcGFzc2VkIGJ5IHZhbHVlIGFzIGEgYHU4YCBwYXJhbWV0ZXIuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGV4ZWN1dGFibGUgY29udHJvbCBmbG93IGluIFJlYWx0ZWsgcnR3ODkgV2ktRmkgY29leGlzdGVuY2UgbG9naWMgKF9zZXRfYnRfdHhfcG93ZXIpIGJ5IHJlbW92aW5nIHRoZSByZl9iYW5kIGd1YXJkIGNoZWNrLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChlLmcuIFJUVzg5Xzg4NTJBVSkgYW5kIG1hYzgwMjExIGludGVyZmFjZXMsIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmUwODI1YWNmZTMwY2I0ZmFmOWI2MDIyMTFmNTllOTQzOTUwMmE2MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjE3OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLmY0MmE2Y2MzZWI3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0zODU5LDcgJiM0MzszODU5LDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuIFx0dTggYnVmWzJdID0ge307XG4gXHR1OCBsZW4gPSBzaXplb2YoKmJ1Zik7XG4gXG4tXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKVxuJiM0MztcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5JiMzNDssCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfc2V0X2J0X3R4X3Bvd2VyJiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X2luaXQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZSYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfYzJoX2hhbmRsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZlMDgyNWFjZmUzMGNiNGZhZjliNjAyMjExZjU5ZTk0Mzk1MDJhNjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKaW5kZXggNWE5ZGM0ZDhhMDBiYS4uZjQyYTZjYzNlYjdhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKQEAgLTM4NTksNyAmIzQzOzM4NTksNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsCiAJdTggYnVmWzJdID0ge307CiAJdTggbGVuID0gc2l6ZW9mKCpidWYpOwogCi0JaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpCiYjNDM7CWlmIChidC0mZ3Q7YmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKQogCQlyZXR1cm47CiAKIAlpZiAoYnQtJmd0O3JmX3BhcmEudHhfcHdyX2ZyZWVydW4gPT0gbGV2ZWwpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyBhIEtlcm5lbCBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmc6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIHNjcnV0aW5pemUgYSBwYXRjaCBhcHBsaWVkIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyBzYWZldHkuIEdpdmVuIHRoYXQgdGhpcyBpcyBhYm91dCBldmFsdWF0aW5nIGEga2VybmVsIHBhdGNoIGZvciBzeXprYWxsZXIgZnV6emluZywgdGhpcyBpcyBhIGNvbXBsZXRlbHkgc3RhbmRhcmQgZGV2ZWxvcGVyL1FBIHRhc2suIE5vIHJlZCBmbGFncyB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIHRoZSB0ZWNobmljYWwgZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgY2hhbmdlcyBhbmQgZGV0ZXJtaW5lIGhvdyByZWFjaGFibGUgdGhlIG1vZGlmaWVkIGNvZGUgaXMuIEkmIzM5O2xsIHByb2JhYmx5IHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBvciBvcHBvcnR1bml0aWVzIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM4NTA6XHR9XG4zODUxOlx0XG4zODUyOlx0c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuMzg1MzpcdFx0XHRcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4zODU0Olx0e1xuMzg1NTpcdFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbjM4NTY6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuMzg1NzpcdFx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xuMzg1ODpcdFx0dTggaSwgaWRfc3RhcnQsIGlkX3N0b3A7XG4zODU5Olx0XHR1OCBidWZbMl0gPSB7fTtcbjM4NjA6XHRcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbjM4NjE6XHRcbjM4NjI6XHRcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4zODYzOlx0XHRcdHJldHVybjtcbjM4NjQ6XHRcbjM4NjU6XHRcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuMzg2NjpcdFx0XHRyZXR1cm47XG4zODY3Olx0XG4zODY4Olx0XHRpZiAoYmlkID09IEJUQ19BTExfQlQpIHtcbjM4Njk6XHRcdFx0aWRfc3RhcnQgPSBCVENfQlRfMVNUO1xuMzg3MDpcdFx0XHRpZF9zdG9wID0gQlRDX0JUXzJORDtcbjM4NzE6XHRcdH0gZWxzZSB7XG4zODcyOlx0XHRcdGlkX3N0YXJ0ID0gYmlkO1xuMzg3MzpcdFx0XHRpZF9zdG9wID0gYmlkO1xuMzg3NDpcdFx0fVxuMzg3NTpcdFxuMzg3NjpcdFx0Zm9yIChpID0gaWRfc3RhcnQ7IGkgXHUwMDNjPSBpZF9zdG9wOyBpJiM0MzsmIzQzOykge1xuMzg3NzpcdFx0XHRpZiAoaSA9PSBCVENfQlRfMk5EKSB7XG4zODc4Olx0XHRcdFx0aWYgKCEocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlcGFyYV92ZXIgXHUwMDI2IEJUQ19GRUFUX0RVQUxfQlQpKVxuMzg3OTpcdFx0XHRcdFx0Y29udGludWU7XG4zODgwOlx0XG4zODgxOlx0XHRcdFx0YnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQxO1xuMzg4MjpcdFx0XHRcdGgyY19mdW5jIHw9IEJUX0gyQ19GVU5DX0JUMk5EO1xuMzg4MzpcdFx0XHR9XG4zODg0Olx0XG4zODg1Olx0XHRcdGJ1ZlswXSA9IChzOCkoLWxldmVsKTtcbjM4ODY6XHRcdFx0YnVmWzFdID0gcmZfYmFuZDsgIC8qIGJpdC1tYXA6IGJpdDEtXHUwMDNlNUdIei82R2h6LCBiaXQwLVx1MDAzZTIuNEdIeiAqL1xuMzg4NzpcdFxuMzg4ODpcdFx0XHRpZiAoIWZvcmNlX2V4ZWMgXHUwMDI2XHUwMDI2ICFidGMtXHUwMDNlY2xpX2gyY19jbWQpIHtcbjM4ODk6XHRcdFx0XHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBydHc4OSBEcml2ZXIqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBydHc4OWAgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IGl0IGlzIGFuZCwgY3JpdGljYWxseSwgd2hhdCBidXMgaXQmIzM5O3MgdGllZCB0by4gVGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJJiMzOTtsbCBza2lwIHRoYXQgZm9yIG5vdyBhbmQgZ28gc3RyYWlnaHQgdG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5IHNob3VsZCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uYWwgaW5mb3JtYXRpb24gSSYjMzk7bSBhZnRlci4gYE1ha2VmaWxlYCB3aWxsIHJldmVhbCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgbGlrZWx5IHRoZSBkZXBlbmRlbmNpZXMsIHdoaWxlIGBLY29uZmlnYCB3aWxsIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQsIGxpa2VseSwgaGludCBhdCB0aGUgYnVzIHR5cGUuIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgZGl2ZTsgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBzb2xpZCBvdmVydmlldyBpbiBqdXN0IGEgY291cGxlIG9mIG1pbnV0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19SVFc4OV9DT1JFKSAmIzQzOz0gcnR3ODlfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQtcnR3ODlfY29yZS15ICYjNDM7PSBjb3JlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTIzPXJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCKSAmIzQzOz0gcnR3ODlfODg1MWIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNi1ydHc4OV84ODUxYi1vYmpzIDo9IHJ0dzg4NTFiLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfUlRXODlfODg1MUJFKSAmIzQzOz0gcnR3ODlfODg1MWJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzItcnR3ODlfODg1MWJlLW9ianMgOj0gcnR3ODg1MWJlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19SVFc4OV84ODUxQlUpICYjNDM7PSBydHc4OV84ODUxYnUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zNS1ydHc4OV84ODUxYnUtb2JqcyA6PSBydHc4ODUxYnUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBKSAmIzQzOz0gcnR3ODlfODg1MmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zOC1ydHc4OV84ODUyYS1vYmpzIDo9IHJ0dzg4NTJhLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfUlRXODlfODg1MkFFKSAmIzQzOz0gcnR3ODlfODg1MmFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDQtcnR3ODlfODg1MmFlLW9ianMgOj0gcnR3ODg1MmFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19SVFc4OV84ODUyQVUpICYjNDM7PSBydHc4OV84ODUyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00Ny1ydHc4OV84ODUyYXUtb2JqcyA6PSBydHc4ODUyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCX0NPTU1PTikgJiM0Mzs9IHJ0dzg5Xzg4NTJiX2NvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUwLXJ0dzg5Xzg4NTJiX2NvbW1vbi1vYmpzIDo9IHJ0dzg4NTJiX2NvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfUlRXODlfODg1MkIpICYjNDM7PSBydHc4OV84ODUyYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUzLXJ0dzg5Xzg4NTJiLW9ianMgOj0gcnR3ODg1MmIubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQkUpICYjNDM7PSBydHc4OV84ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01OS1ydHc4OV84ODUyYmUtb2JqcyA6PSBydHc4ODUyYmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS02MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYyLXJ0dzg5Xzg4NTJidS1vYmpzIDo9IHJ0dzg4NTJidS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfUlRXODlfODg1MkJUKSAmIzQzOz0gcnR3ODlfODg1MmJ0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjUtcnR3ODlfODg1MmJ0LW9ianMgOj0gcnR3ODg1MmJ0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgJiM0Mzs9IHJ0dzg5Xzg4NTJidGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MC1ydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfUlRXODlfODg1MkMpICYjNDM7PSBydHc4OV84ODUyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTczLXJ0dzg5Xzg4NTJjLW9ianMgOj0gcnR3ODg1MmMubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjc4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQ0UpICYjNDM7PSBydHc4OV84ODUyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03OS1ydHc4OV84ODUyY2Utb2JqcyA6PSBydHc4ODUyY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJDVSkgJiM0Mzs9IHJ0dzg5Xzg4NTJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgyLXJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfUlRXODlfODkyMkEpICYjNDM7PSBydHc4OV84OTIyYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTg1LXJ0dzg5Xzg5MjJhLW9ianMgOj0gcnR3ODkyMmEubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg4Om9iai0kKENPTkZJR19SVFc4OV84OTIyQUUpICYjNDM7PSBydHc4OV84OTIyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04OS1ydHc4OV84OTIyYWUtb2JqcyA6PSBydHc4OTIyYWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBVSkgJiM0Mzs9IHJ0dzg5Xzg5MjJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkyLXJ0dzg5Xzg5MjJhdS1vYmpzIDo9IHJ0dzg5MjJhdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5NDpvYmotJChDT05GSUdfUlRXODlfODkyMkQpICYjNDM7PSBydHc4OV84OTIyZC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTk1LXJ0dzg5Xzg5MjJkLW9ianMgOj0gcnR3ODkyMmQubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk4Om9iai0kKENPTkZJR19SVFc4OV84OTIyREUpICYjNDM7PSBydHc4OV84OTIyZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05OS1ydHc4OV84OTIyZGUtb2JqcyA6PSBydHc4OTIyZGUub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9MTAzPXJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgJiM0Mzs9IGxlZF9tYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA1Om9iai0kKENPTkZJR19SVFc4OV9QQ0kpICYjNDM7PSBydHc4OV9wY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDYtcnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwOS1ydHc4OV91c2IteSA6PSB1c2Iub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTE1PXN0YXRpYyB1MzIgcnR3ODlfYWNwaV90cmF2ZXJzYWxfb2JqZWN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI0Olx0c3dpdGNoIChvYmotXHUwMDNldHlwZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjUtXHRjYXNlIEFDUElfVFlQRV9JTlRFR0VSOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjYtXHRcdGlmIChwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNzpcdFx0XHRwb3NbbGVuXSA9IG9iai1cdTAwM2VpbnRlZ2VyLnZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzEtXHRjYXNlIEFDUElfVFlQRV9CVUZGRVI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMjpcdFx0aWYgKHVubGlrZWx5KG9iai1cdTAwM2VidWZmZXIubGVuZ3RoID09IDApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMy1cdFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM4LVx0XHRpZiAocG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mzk6XHRcdFx0bWVtY3B5KHBvcywgb2JqLVx1MDAzZWJ1ZmZlci5wb2ludGVyLCBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQxOlx0XHRsZW4gJiM0Mzs9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDMtXHRjYXNlIEFDUElfVFlQRV9QQUNLQUdFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDQ6XHRcdGlmICh1bmxpa2VseShvYmotXHUwMDNlcGFja2FnZS5jb3VudCA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDUtXHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBvYmotXHUwMDNlcGFja2FnZS5jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjUxOlx0XHRcdGVsbSA9IFx1MDAyNm9iai1cdTAwM2VwYWNrYWdlLmVsZW1lbnRzW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNTItXHRcdFx0dG1wID0gcG9zID8gcG9zICYjNDM7IGxlbiA6IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjItXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksIFwmIzM0OyVzOiB1bmhhbmRsZWQgdHlwZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzo2MzpcdFx0XHQgICAgX19mdW5jX18sIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY0LVx0XHRnb3RvIGVycjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0xMzE9aW50IHJ0dzg5X2FjcGlfZHNtX2dldF92YWx1ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmosXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTMzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzNDpcdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTM1LVx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTM2Olx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgaW50ZWdlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEzNy1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTQwOlx0KnZhbHVlID0gKHU4KW9iai1cdTAwM2VpbnRlZ2VyLnZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTQxLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTUyPWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2MDpcdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjEtXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNjI6XHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2NjpcdGxlbiA9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTY3LVx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTczOlx0cHRyID0gKHR5cGVvZihwdHIpKW9iai1cdTAwM2VidWZmZXIucG9pbnRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTE3NC1cdGlmICghY2hrX2FjcGlfcG9saWN5XzZnaHpfc2lnKHB0cikpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yMDQ9aW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfNmdoel9zcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjExOlx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxMi1cdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxMzpcdFx0XHQgICAgXCYjMzQ7YWNwaTogZXhwZWN0IGJ1ZmZlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIxNC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjE3Olx0YnVmX2xlbiA9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjE4LVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIyNDpcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXHUwMDNlYnVmZmVyLnBvaW50ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjUtXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3NwX3NpZyhwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjQ4PWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfdmxwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNTU6XHRpZiAob2JqLVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX0JVRkZFUikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU2LVx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjU3Olx0XHRcdCAgICBcJiMzNDthY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcblwmIzM0Oywgb2JqLVx1MDAzZXR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNjE6XHRidWZfbGVuID0gb2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjItXHRpZiAoYnVmX2xlbiBcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjY4Olx0cHRyID0gKHR5cGVvZihwdHIpKW9iai1cdTAwM2VidWZmZXIucG9pbnRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2OS1cdGlmICghY2hrX2FjcGlfcG9saWN5XzZnaHpfdmxwX3NpZyhwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjkxPXN0YXRpYyBpbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5ODpcdGlmIChvYmotXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfQlVGRkVSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yOTktXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMDA6XHRcdFx0ICAgIFwmIzM0O2FjcGk6IGV4cGVjdCBidWZmZXIgYnV0IHR5cGU6ICVkXFxuXCYjMzQ7LCBvYmotXHUwMDNldHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDEtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjMwNDpcdGJ1Zl9sZW4gPSBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMwNS1cdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2YoKnB0cikpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMTE6XHRwdHIgPSAodHlwZW9mKHB0cikpb2JqLVx1MDAzZWJ1ZmZlci5wb2ludGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzEyLVx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfdGFzX3NpZyhwdHIpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MzM2PWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5X3JlZ19ydWxlcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzQzOlx0aWYgKG9iai1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0NC1cdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0NTpcdFx0XHQgICAgXCYjMzQ7YWNwaTogZXhwZWN0IGJ1ZmZlciBidXQgdHlwZTogJWRcXG5cJiMzNDssIG9iai1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM0Ni1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzQ5Olx0YnVmX2xlbiA9IG9iai1cdTAwM2VidWZmZXIubGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVx0aWYgKGJ1Zl9sZW4gXHUwMDNjIHNpemVvZigqcHRyKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM1NjpcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXHUwMDNlYnVmZmVyLnBvaW50ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNTctXHRpZiAoIWNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKHB0cikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI3MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFVTQiBTdXBwb3J0IGFuZCBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgbm90aWNlZCB0aGF0IHRoZSBydHc4OSBkcml2ZXIgaGFzIHNvbWUgYXBwYXJlbnQgVVNCIHN1cHBvcnQsIGluZGljYXRlZCBieSB0aG9zZSBgQ09ORklHX1JUVzg5X1VTQmAgYW5kIHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzeXprYWxsZXIuIENhbiB3ZSBsZXZlcmFnZSB0aGlzIFVTQiBzdXBwb3J0PyBDYW4gd2UgKmVtdWxhdGUqIHRoZXNlIFVTQiBkZXZpY2VzIHVzaW5nIFVTQiBSYXcgR2FkZ2V0IHdpdGhpbiBzeXprYWxsZXIsIGxpa2UgY3JlYXRpbmcgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGdhZGdldHM/IFRoaXMgY291bGQgb3BlbiB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4KCkJlZm9yZSBkaXZpbmcgZGVlcCwgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IFVTQiBkZXZpY2VzIGFyZSBoYW5kbGVkIHdpdGhpbiBzeXprYWxsZXIuIEkgc2hvdWxkIGFsc28gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB3aXJlbGVzcyBVU0IgZHJpdmVycywgaW4gcGFydGljdWxhciwgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLgoKTm93LCBob2xkIG9uLiBCZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLCBhbmQgaG93IGNvZXguYyBpcyB1c2VkLiBJcyB0aGVyZSBhIGNhbGwgc3RhY2sgb3IgZGVwZW5kZW5jeSBJJiMzOTttIG1pc3Npbmc/IEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IGBfc2V0X2J0X3R4X3Bvd2VyYCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcGljdHVyZSwgYW5kIHNwZWNpZmljYWxseSwgaG93IGBjb2V4LmNgIGdldHMgaW52b2x2ZWQuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgc2VhcmNoIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYCBkaXJlY3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3NldF9idF90eF9wb3dlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzgyMT1zdGF0aWMgdm9pZCBfc2V0X3dsX3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM4NTI6c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1My1cdFx0XHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQwNTY9c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2NS1cdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE2NjpcdFx0X3NldF9idF90eF9wb3dlcihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY3LVx0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDcKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipQZWVyaW5nIERlZXBlciBpbnRvIHRoZSBSYWRpbyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHJhZGlvIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBleHBsb3JlIHdoZXJlIGBfc2V0X3JmX3RyeF9wYXJhYCBpcyBhY3R1YWxseSB1c2VkIGJleW9uZCB0aGlzIGltbWVkaWF0ZSBjb250ZXh0LCBvciBwZXJoYXBzIHRyYWNlIHRoZSBjYWxscyB0byBgX3NldF9idF90eF9wb3dlcmAsIGdpdmVuIHRoZWlyIGxpa2VseSByZWxhdGlvbnNoaXAuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IGlzIGtleS4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBwYXJhbWV0ZXJzIHRoZXkmIzM5O3JlIHNldHRpbmcgYXJlIHVsdGltYXRlbHkgdXNlZC4KCkkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBjb2V4LmMgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZSBnaXZlbiBteSBwYXN0IGV4cGVyaWVuY2UsIHNvIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nIGFyb3VuZCBsaW5lIDQxNjYgaW4gdGhhdCBmaWxlLiBJdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBjb2V4aXN0ZW5jZSBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcmFkaW8gcHJvdG9jb2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDE1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MTUwOlx0XHRcdFx0XHRwYXJhLndsX3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF90eF9wb3dlcjtcbjQxNTE6XHRcdFx0XHRcdHBhcmEud2xfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfcnhfZ2FpbjtcbjQxNTI6XHRcdFx0XHR9XG40MTUzOlx0XHRcdFx0Zm9yIChpID0gQlRDX0JUXzFTVDsgaSBcdTAwM2MgQlRDX0FMTF9CVDsgaSYjNDM7JiM0MzspIHtcbjQxNTQ6XHRcdFx0XHRcdHBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyO1xuNDE1NTpcdFx0XHRcdFx0cGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF9yeF9nYWluO1xuNDE1NjpcdFx0XHRcdH1cbjQxNTc6XHRcdFx0fVxuNDE1ODpcdFx0fVxuNDE1OTpcdFxuNDE2MDpcdFx0aWYgKGRtLVx1MDAzZWZkZHRfdHJhaW4pIHtcbjQxNjE6XHRcdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgMSwgUlRXODlfUEhZXzApO1xuNDE2MjpcdFx0XHRfd3JpdGVfc2NiZChydHdkZXYsIGJpZCwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcbjQxNjM6XHRcdH0gZWxzZSB7XG40MTY0Olx0XHRcdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuNDE2NTpcdFx0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XG40MTY2Olx0XHRcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0pO1xuNDE2NzpcdFx0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XG40MTY4Olx0XHR9XG40MTY5Olx0XG40MTcwOlx0bmV4dDpcbjQxNzE6XHRcdGlmICghYnQtXHUwMDNlZW5hYmxlLm5vdyB8fCBkbS1cdTAwM2V3bF9vbmx5IHx8IHdsX3NtYXAtXHUwMDNlcmZfb2ZmIHx8XG40MTcyOlx0XHQgICAgd2xfc21hcC1cdTAwM2VscHMgPT0gQlRDX0xQU19SRl9PRkYgfHwgbW9kZSA9PSBCVENfV0xJTktfVjBfNUcgfHxcbjQxNzM6XHRcdCAgICAocnR3ZGV2LVx1MDAzZWRiY2NfZW4gXHUwMDI2XHUwMDI2IHItXHUwMDNlZGJjY18yZ19waHkgIT0gUlRXODlfUEhZXzEpKVxuNDE3NDpcdFx0XHR3bF9zdGJfY2hnID0gMDtcbjQxNzU6XHRcdGVsc2VcbjQxNzY6XHRcdFx0d2xfc3RiX2NoZyA9IDE7XG40MTc3Olx0XG40MTc4Olx0XHRpZiAod2xfc3RiX2NoZyAhPSBkbS1cdTAwM2V3bF9zdGJfY2hnKSB7XG40MTc5Olx0XHRcdGRtLVx1MDAzZXdsX3N0Yl9jaGcgPSB3bF9zdGJfY2hnO1xuNDE4MDpcdFx0XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VidGNfd2xfczFfc3RhbmRieShydHdkZXYsIGRtLVx1MDAzZXdsX3N0Yl9jaGcpO1xuNDE4MTpcdFx0fVxuNDE4MjpcdH1cbjQxODM6XHRcbjQxODQ6XHRzdGF0aWMgdm9pZCBfdXBkYXRlX2J0Y19zdGF0ZV9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuNDE4NTpcdHtcbjQxODY6XHRcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG40MTg3Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbjQxODg6XHRcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbjQxODk6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDE4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMsIGBfc2V0X3JmX3RyeF9wYXJhYCBhbmQgYF9zZXRfYnRfdHhfcG93ZXJgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0cmFjZSB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgcHVycG9zZSBvZiB0aGUgb3BlcmF0aW9ucyB0aGV5IHBlcmZvcm0uCgoqKkRlZXAgRGl2ZSBJbnRvIEZ1bmN0aW9uIENhbGxzKioKCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmR1Y3QgYSBjb2RlLXdpZGUgc2VhcmNoLiBBIHNpbXBsZSBgZ3JlcGAgZm9yIGBfc2V0X3JmX3RyeF9wYXJhYCB3aWxsIGRvIHRoZSB0cmljay4gVGhhdCBzaG91bGQgcmV2ZWFsIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIGNhbGxpbmcgY29kZSB0byBkZWR1Y2UgdGhlIHNjZW5hcmlvcyB3aGVyZSByYWRpbyBmcmVxdWVuY3kgdHJhbnNtaXQvcmVjZWl2ZSBwYXJhbWV0ZXJzIGFyZSBiZWluZyBzZXQsIG9yIHdoZXJlIEJsdWV0b290aCB0cmFuc21pdCBwb3dlciBpcyBiZWluZyBhZGp1c3RlZC4gVGhpcyBraW5kIG9mIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyBmdW5kYW1lbnRhbCB0byBncmFzcCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZ3JlcCBzZWFyY2ggcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfc2V0X3JmX3RyeF9wYXJhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTg4PXN0YXRpYyB2b2lkIF9zZXRfYnRfY29yeF90YWJsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDAyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwMjg6c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYV92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA1NjpzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwODAtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDgxOlx0XHRcdF9zZXRfcmZfdHJ4X3BhcmFfdjkocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwODItXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTY2Nzk9c3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2OTQtXHRfc2V0X2J0X3J4X2FnYyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjY5NTpcdF9zZXRfcmZfdHJ4X3BhcmEocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2OTYtXHRfc2V0X2J0X3J4X3NjYW5fcHJpKHJ0d2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjIyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIEJhY2sgaW50byB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIENhbGwgQ2hhaW4qKgoKQWxyaWdodCwgSSYjMzk7bSBjaXJjbGluZyBiYWNrIG9uIHRoaXMuIEJlZm9yZSBJIGNvbW1pdCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byByZXZpc2l0IHRoZSBjYWxsIGdyYXBoIGZvciBgX3NldF9idF90eF9wb3dlcmAuIEkgd2FudCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3Igc2lkZSBlZmZlY3RzIGZyb20gdXBzdHJlYW0gb3IgZG93bnN0cmVhbSBjYWxscyB0aGF0IEkgZGlkbiYjMzk7dCBpbml0aWFsbHkgZmFjdG9yIGluLiBJdCYjMzk7cyBlYXN5IHRvIGdldCB0dW5uZWwgdmlzaW9uIHdoZW4gZm9jdXNpbmcgb24gYSBzcGVjaWZpYyBmdW5jdGlvbiwgc28gYSBmcmVzaCBsb29rIGF0IHRoZSBpbW1lZGlhdGUgY2FsbGVycyBpcyB0aGUgZmlyc3Qgc3RlcC4KCldhaXQgYSBzZWNvbmQsIGEgbW9yZSB0aG9yb3VnaCBhcHByb2FjaCBpcyB3YXJyYW50ZWQgaGVyZS4gSW5zdGVhZCBvZiBqdXN0IGZvY3VzaW5nIG9uICp0aG9zZSoga25vd24gY2FsbGVycywgbGV0JiMzOTtzIGNhc3QgYSB3aWRlciBuZXQuIEEgYGdyZXBgIGFjcm9zcyB0aGUgZW50aXJlIGNvZGViYXNlIHRvIHNlZSAqZXZlcnkqIGluc3RhbmNlIG9mIGBfc2V0X2J0X3R4X3Bvd2VyYCBpcyBpbiBvcmRlci4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IHVzYWdlIG9mIHRoYXQgZnVuY3Rpb24sIGluY2x1ZGluZyBwb3RlbnRpYWxseSBpbmRpcmVjdCBjYWxscyBvciBpbnN0YW5jZXMgSSYjMzk7dmUgZm9yZ290dGVuIGFib3V0LiBUaGlzIGNvbXByZWhlbnNpdmUgc2VhcmNoIHNob3VsZCB1bmNvdmVyIGFueSBvYnNjdXJlIG9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfc2V0X2J0X3R4X3Bvd2VyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTgzMT1zdGF0aWMgdm9pZCBydHdfY29leF91cGRhdGVfd2xfY2hfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jLTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjg4MTpzdGF0aWMgdm9pZCBydHdfY29leF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggYnRfcHdyX2RlY19sdmwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy04ODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTkxNT1zdGF0aWMgdm9pZCBydHdfY29leF9zZXRfcmZfcGFyYShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jLTkyNS1cdHJ0d19jb2V4X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfcHdyX2RlY19sdmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmM6OTI2Olx0cnR3X2NvZXhfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS5idF9wd3JfZGVjX2x2bCAmIzQzOyBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtOTI3LVx0cnR3X2NvZXhfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX2xvd19nYWluX2VuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zODIxPXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1MjpzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUzLVx0XHRcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDA1Nj1zdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY1LVx0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTY2Olx0XHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxNjctXHRcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNDAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBydHc4OSBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gYHJ0dzg5YCBpcyB0aGUgUmVhbHRlayBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgODAyLjExYXgvYmUgY2hpcHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gKmZ1enphYmxlKiB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIG91ciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBiYXNpY3Mg4oCTIHdoYXQgYnVzIHR5cGVzIGRvZXMgYHJ0dzg5YCBzdXBwb3J0PwoKUmlnaHQsIHRoZSBgTWFrZWZpbGVgIGluZGljYXRlcyBib3RoIFBDSSBhbmQgVVNCIHN1cHBvcnQuIFNwZWNpZmljYWxseSwgSSBzZWUgYHJ0dzg5X3BjaS5vYCBmb3IgUENJIGRldmljZXMgYW5kIGBydHc4OV91c2Iub2AgZm9yIFVTQiBkZXZpY2VzLiBUaGUgbGlzdGVkIG1vZHVsZXMgc3VnZ2VzdCBzdXBwb3J0IGZvciBhIHJhbmdlIG9mIGNoaXBzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXNlIGJ1cyB0eXBlcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXBzLCBhcyBwZXIgdGhlIHByb21wdCYjMzk7cyBmaXJzdCBzZWN0aW9uPyBUaGUgcHJvbXB0IGlzIGNsZWFyOiBmdXp6aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIGNvZGUgKmNhbiogYWN0dWFsbHkgcnVuIGluIEdDRSBvciBRRU1VIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMuIFZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGlzIG91dCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuJiMzOTt0IGZ1enogZHJpdmVycyB0aGF0IHJlbHkgb24gYSBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZCB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZC4KCkJ1dCB3YWl0LCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgVVNCIGdhZGdldHMgKmFyZSogcmVhY2hhYmxlLiBFeGNlbGxlbnQuIFRoYXTigJlzIHByb21pc2luZy4gSSBrbm93IFVTQiBSYXcgR2FkZ2V0IGNhbiBiZSB1c2VkIGluIHN5emthbGxlci4KClRoZXJlZm9yZSwgdGhlIGtleSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gdGhlIFVTQiBwcm9iZSBwcm9jZXNzIGFuZCBgcnR3ODlfdXNiYCBkcml2ZXIgYmUgdHJpZ2dlcmVkIHZpYSBVU0IgUmF3IEdhZGdldC9VU0IgZW11bGF0aW9uPyBJIG5lZWQgdG8gY2hlY2sgdGhlIFVTQiBwcm9iZSBwYXRoLiBMZXTigJlzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIFVTQiBwcm9iZSB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfdXNiX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTYyPXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MWJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY0LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTFidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjU6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY2LVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJidV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgwLVx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTEzNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJjdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy0xMzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmN1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MC1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03Nz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg5MjJhdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03OS1cdC5pZF90YWJsZSA9IHJ0d184OTIyYXVfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS1cdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYz0xMjAxPV9fQVRUUklCVVRFX0dST1VQUyhydHc4OV91c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjAzOmludCBydHc4OV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMDQtXHRcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjk0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI5NTpFWFBPUlRfU1lNQk9MKHJ0dzg5X3VzYl9wcm9iZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyOTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaD05Mj1zdGF0aWMgaW5saW5lIHN0cnVjdCBydHc4OV91c2IgKnJ0dzg5X3VzYl9wcml2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaDo5NzppbnQgcnR3ODlfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuaC05OC1cdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgUlRXODkgQ29leGlzdGVuY2UgTG9naWMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3Mga2lja2luZyBvZmYgdGhvc2UgY29leGlzdGVuY2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHRoZSBgX3NldF9idF90eF9wb3dlcmAgZnVuY3Rpb24sIGFuZCBhbHNvIHRoZSBgX2FjdGlvbl9jb21tb25gIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgbW9yZSBnZW5lcmFsIGBydHc4OV9idGNfYCBmdW5jdGlvbnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbnZvY2F0aW9uIHBhdGhzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNhbGxzIG9yaWdpbmF0ZSBmcm9tLgoKRmlyc3QsIGxldCBtZSBydW4gYSBxdWljayBgZ3JlcGAgc2VhcmNoIHdpdGhpbiB0aGUgYHJ0dzg5YCBkaXJlY3RvcnkuIEkmIzM5O2xsIGxvb2sgZm9yIGJvdGggYF9hY3Rpb25fY29tbW9uYCBhbmQgYW55dGhpbmcgdGhhdCBzdGFydHMgd2l0aCBgcnR3ODlfYnRjX2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgbGlzdCBvZiBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGhlbiwgSSYjMzk7bGwgYW5hbHl6ZSB0aG9zZSBsb2NhdGlvbnMgdG8gY29uc3RydWN0IHRoZSBjb250cm9sIHBhdGhzLiBPbmNlIEkgaGF2ZSB0aGUgY2FsbCBjaGFpbnMgbWFwcGVkIG91dCwgSSYjMzk7bGwgaGF2ZSBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGNvZXhpc3RlbmNlIGZlYXR1cmVzIGFyZSBiZWluZyB0cmlnZ2VyZWQgYW5kIHdoYXQmIzM5O3MgZHJpdmluZyB0aG9zZSBwb3dlciBhZGp1c3RtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2FjdGlvbl9jb21tb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTY2MTk9c3RhdGljIHZvaWQgX3NldF9md19yZXBvcnRfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02Njc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjY3OTpzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02NjgwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz03MDExPXN0YXRpYyB2b2lkIF93cml0ZV9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYmlkLCB1MzIgdmFsLCBib29sIHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTcwNTgtXHRcdFx0ICogSnVzdCB1cGRhdGUgd2wtXHUwMDNlc2NiZFtdIGFuZCBzZXQgd2wtXHUwMDNlc2NiZF9jaGdbXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjcwNTk6XHRcdFx0ICogbW92ZWQgXCYjMzQ7V3JpdGUgc2NvcmVib2FyZCBJL09cJiMzNDsgdG8gIF9hY3Rpb25fY29tbW9uKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTcwNjAtXHRcdFx0ICogX3dyaXRlX3NjYmQgd2lsbCBiZSBleGVjdXRlZCBpZiBydW5fY29leCgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODQxOT12b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQyLVx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcJiMzNDtbQlRDXSwgJXMoKTogZXhpdFxcblwmIzM0OywgX19mdW5jX18pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODY0MzpcdF9hY3Rpb25fY29tbW9uKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQ0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0MjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRGVidWdnaW5nIGEgQ09FWCBDYWxsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYF9ydW5fY29leGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdHJhY2UgaW5kaWNhdGVzIHRoYXQgaXQgdWx0aW1hdGVseSBnb2VzIHRocm91Z2ggYF9hY3Rpb25fY29tbW9uKHJ0d2RldilgLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjaGFpbiwgdG8gdW5kZXJzdGFuZCBob3cgd2UgZ290IGhlcmUuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgX3J1bl9jb2V4YCBpdHNlbGYgaXMgY2FsbGVkLCBhbmQgYWxzbyB0byBjaGVjayBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucywgbGlrZSBgcnR3ODlfYnRjX250ZnlfYC4gSSYjMzk7bGwgZG8gYSBxdWljayBjYWxsIGdyYXBoIGFuYWx5c2lzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgdG8gZWl0aGVyIG9mIHRoZXNlIGZ1bnRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIENPRVggb3BlcmF0aW9uLiBUaGVuLCBJIGNhbiBzdGFydCB0byB6ZXJvIGluIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19ydW5fY29leCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTM2PWVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5OTk6c3RhdGljIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEwMDAtXHRcdCAgICAgIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzU4MT12b2lkIGJ0Y19md19ldmVudChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGV2dF9pZCwgdm9pZCAqZGF0YSwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjEwLVx0aWYgKCFidGMtXHUwMDNlZG0uc2NiZF9iMndfdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzYxMTpcdFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfU0NCRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjEyLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3MTY9dm9pZCBydHc4OV9jb2V4X2FjdDFfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM1LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NzczNjpcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQUNUMV9XT1JLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3Mzk9dm9pZCBydHc4OV9jb2V4X2J0X2RldmluZm9fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzUxLVx0YTJkcC1cdTAwM2VwbGF5X2xhdGVuY3kgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Nzc1MjpcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQlRfREVWSU5GT19XT1JLKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NTMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3NTU9dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03Nzc0LVx0XHRfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19BTExfQlQsIEJUQ19XU0NCX1dMUkZLLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3Nzc1Olx0XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1JGS19DSEtfV09SSyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03Nzc2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg0MTg9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NDE5OnZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODQyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY3MT12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjgzLVx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfQUxMX0JULCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2ODQ6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUE9XRVJPRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NzIzPXZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODc4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3ODE6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfSU5JVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzgyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04Nzg0PXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODgxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4MTE6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfU0NBTl9TVEFSVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODEyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04ODE0PXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9maW5pc2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4ODM0Olx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NDQU5fRklOSVNIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg4Mzc9dm9pZCBydHc4OV9idGNfbnRmeV9zd2l0Y2hfYmFuZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODg1NS1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4NTY6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfU1dCQU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4NTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg4NTk9dm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MjMtXHRidGMtXHUwMDNlZG0uY250X25vdGlmeVtCVENfTkNOVF9TUEVDSUFMX1BBQ0tFVF0mIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODkyNDpcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9TUEVDSUZJQ19QQUNLRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODkyNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTAwMz1zdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBiaWQsIHU4ICpidWYsIHUzMiBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTE1My1cdF91cGRhdGVfYnRfY3RybF9scHMocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkxNTQ6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9JTkZPKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkxNTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTkxNTc9c3RhdGljIHZvaWQgX250Znlfcm9sZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5MjI2Olx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1JPTEVfSU5GTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MjI3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05MzQ1PXZvaWQgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZmN0cmwgcmZfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTM5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkzOTU6XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUkFESU9fU1RBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTM5Ni1cdHdsLVx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmX3ByZSA9IHdsLVx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk0MDA9c3RhdGljIGJvb2wgX250Znlfd2xfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X3BhdGgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTQ1MC1cdFx0ICAgIHdsLVx1MDAzZXJma19pbmZvLnN0YXRlID09IEJUQ19XUkZLX1NUT1ApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NDUxOlx0XHRcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9XTF9SRkspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTQ1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05NjU1PXZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05Njg5LVx0XHR3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyID0gZGF0YS5kaXJfYWxsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTY5MDpcdFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1dMX1NUQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NjkxLVx0fSBlbHNlIGlmIChidGMtXHUwMDNlZG0uY250X25vdGlmeVtCVENfTkNOVF9XTF9TVEFdIFx1MDAzZT1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05NzY3PXZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk4MTctXHRcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIGJpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5ODE4Olx0XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk4MTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk4MzktXHRcdFx0X3VwZGF0ZV9idF9sZWF1ZGlvX2luZm8ocnR3ZGV2LCBiaWQsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk4NDA6XHRcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fVVBEQVRFX0JUX0xFQVVESU5GTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODQxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NTUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2ktRmkgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBgcnR3ODlgLCBhIFdpLUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgY29tcG9uZW50IChgcnR3ODlfdXNiYCksIHV0aWxpemluZyBzdGFuZGFyZCBVU0IgZW11bGF0aW9uIChzeXprYWxsZXIpIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBgbWFjODAyMTFgIHdpcmVsZXNzIHN1YnN5c3RlbXMuIFRoZSBjb2RlJiMzOTtzIGRlYWxpbmcgd2l0aCB0aGluZ3MgbGlrZSBgbmw4MDIxMWAsIHNjYW4gc3RhcnQvZmluaXNoIGV2ZW50cywgcmFkaW8gc3RhdGUgY2hhbmdlcywgYW5kIHBhY2tldCB0cmFuc21pc3Npb24uCgpNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBzcGVjaWZpYyBjaGFuZ2U6IHRoZSBtb2RpZmljYXRpb24gdG8gYF9zZXRfYnRfdHhfcG93ZXJgLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbi4KCmBgYGMKc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLAoJCQkgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKQp7CglzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwoJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7Cgl1OCBoMmNfZnVuYyA9IFNFVF9CVF9UWF9QV1I7Cgl1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDsKCXU4IGJ1ZlsyXSA9IHt9OwoJdTggbGVuID0gc2l6ZW9mKCpidWYpOwoKLQlpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZCkKJiM0MzsJaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApCgkJcmV0dXJuOwoKCWlmIChidC0mZ3Q7cmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbCkKCQlyZXR1cm47Ci4uLgpgYGAKClRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIGB8fCAhcmZfYmFuZGAuIEJlZm9yZSwgaWYgYGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdYCB3YXMgMCAqb3IqIGlmIGByZl9iYW5kYCB3YXMgemVybywgdGhlIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBlYXJseS4gTm93LCBpdCBvbmx5IHJldHVybnMgZWFybHkgaWYgYGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdYCBpcyB6ZXJvLiBTbywgd2hhdCYjMzk7cyB0aGUgaW1wbGljYXRpb24/IEl0IG5vdyAqZXhlY3V0ZXMqIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJcyBgcmZfYmFuZGAgYSBiaXRtYXAgb3IgYW4gZW51bT8gV2hhdCYjMzk7cyB0aGUgbGVnaXRpbWF0ZSB1c2Ugb2YgYSB6ZXJvIHZhbHVlIGZvciBgcmZfYmFuZGA/CgpUbyBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJvbGUgb2YgYHJmX2JhbmRgLiBTbywgSSYjMzk7bGwgY2hlY2sgd2hlcmUgYHJmX2JhbmRgIGdldHMgaXRzIHZhbHVlIGJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGluZyBmdW5jdGlvbiwgc28gbGV0JiMzOTtzIGNoZWNrIGBfc2V0X3JmX3RyeF9wYXJhYCBpbiBgY29leC5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQwNTU6XHRcbjQwNTY6XHRzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbjQwNTc6XHR7XG40MDU4Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG40MDU5Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuNDA2MDpcdFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG40MDYxOlx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbjQwNjI6XHRcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG40MDYzOlx0XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqciA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbjQwNjQ6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuNDA2NTpcdFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG40MDY2Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcdTAwMjZ3bC1cdTAwM2VzdGF0dXMubWFwO1xuNDA2NzpcdFx0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSBwYXJhO1xuNDA2ODpcdFx0dTggYm1vZGUgPSBkbS1cdTAwM2V0ZGRfYmluZC53bF9saW5rX21vZGU7XG40MDY5Olx0XHR1OCByZl9iYW5kID0gZG0tXHUwMDNldGRkX2JpbmQucmZfYmFuZDtcbjQwNzA6XHRcdHU4IGksIHVsX3BhcmFfbnVtLCBkbF9wYXJhX251bTtcbjQwNzE6XHRcdHU4IG1vZGUgPSBCVENfV0xJTktfTk9MSU5LO1xuNDA3MjpcdFx0dTggYmlkID0gQlRDX0JUXzFTVCwgbHY7XG40MDczOlx0XHR1MzIgd2xfc3RiX2NoZztcbjQwNzQ6XHRcbjQwNzU6XHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpIHtcbjQwNzY6XHRcdFx0LyogRWFybHkgdjkgbmVlZCB0byBhc3NpZ24gVUwvREwgUkYgcGFyYSBhdCBkcml2ZXIgKi9cbjQwNzc6XHRcdFx0aWYgKGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192OSkge1xuNDA3ODpcdFx0XHRcdHVsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX251bV92OTtcbjQwNzk6XHRcdFx0XHRkbF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua19udW1fdjk7XG40MDgwOlx0XHRcdH0gZWxzZSB7XG40MDgxOlx0XHRcdFx0X3NldF9yZl90cnhfcGFyYV92OShydHdkZXYpO1xuNDA4MjpcdFx0XHRcdHJldHVybjtcbjQwODM6XHRcdFx0fVxuNDA4NDpcdFx0fSBlbHNlIGlmICgodmVyLVx1MDAzZWZjeHRyeCA9PSAwIHx8IHZlci1cdTAwM2VmY3h0cnggPT0gNyB8fCB2ZXItXHUwMDNlZmN4dHJ4ID09IDEwNykgXHUwMDI2XHUwMDI2XG40MDg1Olx0XHRcdCAgIGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192MCkge1xuNDA4NjpcdFx0XHR1bF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua19udW1fdjA7XG40MDg3Olx0XHRcdGRsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX251bV92MDtcbjQwODg6XHRcdH0gZWxzZSB7XG40MDg5Olx0XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtbQlRDXSVzKCksIE5vIHJmX3BhcmEgZm9yIHZlcnNlaW9uICVkXFxuXCYjMzQ7LFxuNDA5MDpcdFx0XHRcdCAgIF9fZnVuY19fLCB2ZXItXHUwMDNlZmN4dHJ4KTtcbjQwOTE6XHRcdFx0Z290byBuZXh0O1xuNDA5MjpcdFx0fVxuNDA5MzpcdFxuNDA5NDpcdFx0aWYgKGJtb2RlID09IEJUQ19XTElOS19OT0xJTkspIHtcbjQwOTU6XHRcdFx0cmV0dXJuO1xuNDA5NjpcdFx0fSBlbHNlIGlmIChyZl9iYW5kID09IFJUVzg5X0JBTkRfNUcpIHtcbjQwOTc6XHRcdFx0bW9kZSA9IEJUQ19XTElOS19WMF81RztcbjQwOTg6XHRcdH0gZWxzZSBpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNiBibW9kZSA9PSBCVENfV0xJTktfU1RBKSB7XG40MDk5Olx0XHRcdG1vZGUgPSBCVENfV0xJTktfVjBfMkdfU1RBO1xuNDEwMDpcdFx0fVxuNDEwMTpcdFxuNDEwMjpcdFx0LyogZGVjaWRlIHRyeF9wYXJhX2xldmVsICovXG40MTAzOlx0XHRpZiAoYnRjLVx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7XG40MTA0Olx0XHRcdC8qIGZpeCBMTkEyICYjNDM7IFRJQSBnYWluIG5vdCBjaGFuZ2UgYnkgR05UX0JUICovXG40MTA1Olx0XHRcdGlmICgoYnRjLVx1MDAzZWRtLndsX2J0Z19yeCBcdTAwMjZcdTAwMjYgYi1cdTAwM2VsaW5rX2NudC5ub3cgIT0gMCkgfHxcbjQxMDY6XHRcdFx0ICAgIGRtLVx1MDAzZWJ0X29ubHkgPT0gMSlcbjQxMDc6XHRcdFx0XHRkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCA9IDE7IC8qIGZvciBiZXR0ZXIgQlQgQUNJIGlzc3VlICovXG40MTA4Olx0XHRcdGVsc2VcbjQxMDk6XHRcdFx0XHRkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCA9IDA7XG40MTEwOlx0XHR9IGVsc2UgeyAvKiBub24tc2hhcmVkIGFudGVubmEgICovXG40MTExOlx0XHRcdGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsID0gNTtcbjQxMTI6XHRcdFx0LyogbW9kaWZ5IHRyeF9wYXJhIGlmIFdLIDIuNEctU1RBLURMICYjNDM7IGJ0IGxpbmsgKi9cbjQxMTM6XHRcdFx0aWYgKGItXHUwMDNlbGlua19jbnQubm93ICE9IDAgXHUwMDI2XHUwMDI2XG40MTE0Olx0XHRcdCAgICBtb2RlID09IEJUQ19XTElOS19WMF8yR19TVEEgXHUwMDI2XHUwMDI2XG40MTE1Olx0XHRcdCAgICB3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSkgeyAvKiB1cGxpbmsgKi9cbjQxMTY6XHRcdFx0XHRpZiAod2wtXHUwMDNlcnNzaV9sZXZlbCA9PSA0IFx1MDAyNlx1MDAyNiBidC1cdTAwM2Vyc3NpX2xldmVsIFx1MDAzZSAyKVxuNDExNzpcdFx0XHRcdFx0ZG0tXHUwMDNldHJ4X3BhcmFfbGV2ZWwgPSA2O1xuNDExODpcdFx0XHRcdGVsc2UgaWYgKHdsLVx1MDAzZXJzc2lfbGV2ZWwgPT0gMyBcdTAwMjZcdTAwMjYgYnQtXHUwMDNlcnNzaV9sZXZlbCBcdTAwM2UgMylcbjQxMTk6XHRcdFx0XHRcdGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsID0gNztcbjQxMjA6XHRcdFx0fVxuNDEyMTpcdFx0fVxuNDEyMjpcdFxuNDEyMzpcdFx0bHYgPSBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbDtcbjQxMjQ6XHRcdGlmIChsdiBcdTAwM2U9IHVsX3BhcmFfbnVtIHx8XG40MTI1Olx0XHQgICAgbHYgXHUwMDNlPSBkbF9wYXJhX251bSkge1xuNDEyNjpcdFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG40MTI3Olx0XHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBpbnZhbGlkIGxldmVsX2lkOiAlZFxcblwmIzM0OyxcbjQxMjg6XHRcdFx0XHQgICAgX19mdW5jX18sIGx2KTtcbjQxMjk6XHRcdFx0cmV0dXJuO1xuNDEzMDpcdFx0fVxuNDEzMTpcdFxuNDEzMjpcdFx0aWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKSB7XG40MTMzOlx0XHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpIHtcbjQxMzQ6XHRcdFx0XHRwYXJhID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3Y5W2x2XTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1NTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiB0aGUgYHJ0dzg5YCBXaS1GaSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYHJ0dzg5YCBpcyBhIFJlYWx0ZWsgV2ktRmkgZHJpdmVyLCBzbyBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgaXQmIzM5O3MgaGFyZHdhcmUtc3BlY2lmaWMgYW5kIGhvdyByZWFjaGFibGUgaXQgaXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcyBjb3JyZWN0bHkuCgpXYWl0LCBiYWNrIHVwISBJIG5lZWQgdG8gcmUtcmVhZCB0aGUgcmVhY2hhYmlsaXR5IGNyaXRlcmlhLiBPa2F5LCBhY2NvcmRpbmcgdG8gU2VjdGlvbiAyLCBJIG5lZWQgdG8gc2F5ICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgKm9ubHkqIGlmIHRoZSBjaGFuZ2VzIGFyZSBub24ta2VybmVsL25vbi1leGVjdXRhYmxlLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgKGxpa2UgdGhvc2Ugc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUpLCBvciB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgaGFwcGVuIHdpdGggUENJIGhvdC11bnBsdWcgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuCgpPbiB0aGUgZmxpcCBzaWRlLCBTZWN0aW9uIDMgc3RhdGVzICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0OyBpZiB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUsIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nIGNvcmUgc3Vic3lzdGVtcywgcmVmYWN0b3JpbmdzLCBhc3NlcnRpb25zLCBhbmQgKnJlYWNoYWJsZSogZHJpdmVycyBhbmQgcHJvdG9jb2xzLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEhvdyBpcyBgcnR3ODlgIHJlYWNoYWJsZT8KCkFoLWhhISBJcyB0aGlzIGRyaXZlciByZWFjaGFibGUgdmlhIFVTQiBnYWRnZXQ/IEkga25vdyBzeXprYWxsZXIgaGFzIHRoYXQgY2FwYWJpbGl0eS4gSSBuZWVkIHRvIGNoZWNrIGlmIHN5emthbGxlciBlbXVsYXRlcyBVU0IgZGV2aWNlcywgYW5kIGlmIHNvLCBjYW4gaXQgcHJvYmUgdGhlIGBydHc4OWAgVVNCIGRyaXZlcnMgc3BlY2lmaWNhbGx5LiBMZXQgbWUgZGlnIGludG8gdGhlIGRlc2NyaXB0aW9ucyBhbmQgc2VlIGlmIFVTQiByYXcgZ2FkZ2V0IGFsbG93cyBmdXp6aW5nIFVTQiBkcml2ZXJzIGxpa2UgYHJ0dzg5X3VzYmAsIGBydHc4ODUyYXVgLCBgcnR3ODg1MmJ1YCwgYHJ0dzg4NTJjdWAsIGBydHc4OTIyYXVgLCBhbmQgYHJ0dzg4NTFidWAuCgpZZXMhIEZyb20gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZSBMaW51eCBrZXJuZWwsIEkga25vdyBVU0IgZHJpdmVycyAqY2FuKiBiZSBwcm9iZWQgYW5kIGNvbW11bmljYXRlZCB3aXRoIHZpYSBVU0IgUmF3IEdhZGdldCBhbmQgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4KCk5vdywgb25lIG1vcmUgY3JpdGljYWwgZGV0YWlsOiBsZXQmIzM5O3MgY2hlY2sgaWYgdGhlIGBjb2V4LmNgIGNvZGUgaXMgZXZlbiBjb21waWxlZCB3aGVuIGVpdGhlciBgUlRXODlfVVNCYCBvciBgUlRXODlfQ09SRWAgaXMgZW5hYmxlZC4gTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUVzg5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTppZiBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzpjb25maWcgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozNTpjb25maWcgUlRXODlfODg1MkJUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00Mi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDQ6Y29uZmlnIFJUVzg5Xzg5MjJEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDktXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjUwOlx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MTpcdHNlbGVjdCBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MjpcdHNlbGVjdCBSVFc4OV84ODUxQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTUzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1ODpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTYwLVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2MTpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjI6XHRzZWxlY3QgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjM6XHRzZWxlY3QgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Njk6Y29uZmlnIFJUVzg5Xzg4NTJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MS1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NzI6XHRzZWxlY3QgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjczOlx0c2VsZWN0IFJUVzg5X1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc0Olx0c2VsZWN0IFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODItXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgzOlx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4NDpcdHNlbGVjdCBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4NTpcdHNlbGVjdCBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5MTpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTItXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTkzLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NDpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6OTU6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6OTY6XHRzZWxlY3QgUlRXODlfODg1MkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NzpcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMzpjb25maWcgUlRXODlfODg1MkJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDUtXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwNjpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTA3Olx0c2VsZWN0IFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwODpcdHNlbGVjdCBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwOTpcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNy1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE4Olx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTk6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTIwOlx0c2VsZWN0IFJUVzg5Xzg4NTJCVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyMTpcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMjc6Y29uZmlnIFJUVzg5Xzg4NTJDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOS1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTMwOlx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzE6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTMyOlx0c2VsZWN0IFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTMzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM4OmNvbmZpZyBSVFc4OV84ODUyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDAtXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MTpcdHNlbGVjdCBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTQyOlx0c2VsZWN0IFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MzpcdHNlbGVjdCBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0OTpjb25maWcgUlRXODlfODkyMkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTUxLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNTI6XHRzZWxlY3QgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE1MzpcdHNlbGVjdCBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNTQ6XHRzZWxlY3QgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjM6Y29uZmlnIFJUVzg5Xzg5MjJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTY1LVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjY6XHRzZWxlY3QgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2NzpcdHNlbGVjdCBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjg6XHRzZWxlY3QgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5Xzg5MjJERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkRFLzg5MjJERS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ny1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc4Olx0c2VsZWN0IFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzk6XHRzZWxlY3QgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTgwOlx0c2VsZWN0IFJUVzg5Xzg5MjJEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg3OmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4OC1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTkwOmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5MS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTI6XHRkZXBlbmRzIG9uIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTM6XHRzZWxlY3QgUlRXODlfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTk6Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjAxOlx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjAyOlx0c2VsZWN0IFJUVzg5X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjAzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA4OmNvbmZpZyBSVFc4OV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA5LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxMDpcdGRlcGVuZHMgb24gUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxMS1cdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxNTpjb25maWcgUlRXODlfTEVEU19NQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMTc6XHRkZXBlbmRzIG9uIFJUVzg5X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTgtXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1NfTVVMVElDT0xPUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTM3NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlRXODkgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgYFJUVzg5YCBkcml2ZXIsIHNwZWNpZmljYWxseS4gVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN1Z2dlc3RzIGl0IHJlbGllcyBvbiBgTUFDODAyMTFgLCB3aGljaCBtYWtlcyBzZW5zZS4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSBmdWxsIHBpY3R1cmUuIE15IGJlc3QgYmV0IGlzIHRvIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlIGZvciBgUlRXODlgLiBUaGF0IHNob3VsZCBsYXkgb3V0IGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBleHBsaWNpdGx5LiBMZXQgbWUgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgYW5kIHRha2UgYSBwZWVrIGF0IHRoZSB0b3AgbGluZXMgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBgUlRXODlgIG1pZ2h0IG5lZWQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhbmRhcmQgcHJvY2VkdXJlIHdoZW4gdW5yYXZlbGluZyBrZXJuZWwgbW9kdWxlIGludGVyZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gICAyOlx0bWVudWNvbmZpZyBSVFc4OVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XG4gICA3Olx0XHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxuICAgODpcdFxuICAgOTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHJ0dzg5LlxuICAxMDpcdFxuICAxMTpcdGlmIFJUVzg5XG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFJUVzg5X0NPUkVcbiAgMTQ6XHRcdHRyaXN0YXRlXG4gIDE1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgUlRXODlfUENJXG4gIDE4Olx0XHR0cmlzdGF0ZVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBSVFc4OV9VU0JcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVFc4OSBDb2V4aXN0ZW5jZSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBSVFc4OWAgZHJpdmVyIGNvZGUuIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCBmb3IgdGhlIFVTQiB2YXJpYW50LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBmb3IgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg4NTFCVWAsIGFuZCBgUlRXODlfODkyMkFVYCBjb25maWd1cmF0aW9ucy4gSWYgYENPTkZJR19SVFc4OWAsIGBDT05GSUdfUlRXODlfVVNCYCwgYW5kIHRoZSBhcHByb3ByaWF0ZSBkcml2ZXItc3BlY2lmaWMgY29uZmlnIGxpa2UgYENPTkZJR19SVFc4OV84ODUyQVVgIGFyZSBlbmFibGVkLCBhbG9uZyB3aXRoIHRoZSBzdGFuZGFyZCBgQ09ORklHX01BQzgwMjExYCBhbmQgYENPTkZJR19VU0JgLCB0aGVuIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGJ1aWx0IGFuZCBhY2Nlc3NpYmxlIHZpYSBVU0IgZ2FkZ2V0IG9yIHJhdyBnYWRnZXQgaW50ZXJmYWNlcywgd2hpY2ggaXMgd2hhdCBJJiMzOTttIGV4cGVjdGluZy4KCk5vdywgYSBjcml0aWNhbCBwb2ludCBmb3IgY29leGlzdGVuY2UgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEJsdWV0b290aCBUWCBwb3dlciBjb250cm9sIGlzIG1hbmFnZWQgd2l0aGluIHRoZSBjb2V4aXN0ZW5jZSBtb2R1bGUuIFNwZWNpZmljYWxseSwgaXMgYF9zZXRfYnRfdHhfcG93ZXJgIGEgc3RhdGljIGZ1bmN0aW9uPyBBbHJpZ2h0LCBjaGVja2luZyBgY29leC5jYCwgeWVzLCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlciguLi4pYC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGV4dGVybmFsIG1hbmlwdWxhdGlvbi4KCk5vdywgd2hpY2ggbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbCBgX3NldF9idF90eF9wb3dlcmA/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbGluZyBjaGFpbnMuIE9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBmb3VuZDogYF9zZXRfYnRfdHhfcG93ZXJgIGlzIGNhbGxlZCBieSBgX3NldF9yZl90cnhfcGFyYWAgd2hpY2ggaXMgYWxzbyBzdGF0aWMuIEFuZCBgX3NldF9yZl90cnhfcGFyYWAgaXMgY2FsbGVkIGJ5IGBfYWN0aW9uX2NvbW1vbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLCBhbmQgZmluYWxseSwgYF9hY3Rpb25fY29tbW9uYCBpcyBjYWxsZWQgYnkgYF9ydW5fY29leGAsIHdoaWNoIGlzIGFsc28gc3RhdGljLgoKT2theSwgdGhhdCYjMzk7cyB0aGUgY29yZSBjaGFpbi4gQnV0IHdobyBjYWxscyBgX3J1bl9jb2V4YD8gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJmYWNlIHBvaW50cyBhcmUhIEl0JiMzOTtzIGNhbGxlZCBieTogYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydGAsIGBydHc4OV9idGNfbnRmeV9zY2FuX2ZpbmlzaGAsIGBydHc4OV9idGNfbnRmeV9zd2l0Y2hfYmFuZGAsIGBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXRgLCBgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGVgLCBgcnR3ODlfYnRjX250Znlfd2xfc3RhYCwgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYCwgYHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmYCwgYHJ0dzg5X2NvZXhfYWN0MV93b3JrYCwgYHJ0dzg5X2NvZXhfYnRfZGV2aW5mb193b3JrYCwgYHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrYCBhbmQgYGJ0Y19md19ldmVudGAuICBgYnRjX2Z3X2V2ZW50YCBjb3VsZCBiZSBzdGF0aWMgb3IgZXhwb3J0ZWQg4oCTIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4KClRvIGNvbmZpcm0gdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhpcyBtb2R1bGUsIEkgbm93IG5lZWQgdG8gY2hlY2sgd2hldGhlciBgX3J1bl9jb2V4YCBvciBhbnkgb2YgdGhlIGBydHc4OV9idGNfKmAgZnVuY3Rpb25zIGFyZSBleHBvc2VkIGFzIG5vbi1zdGF0aWMgc3ltYm9scyBpbiBgcnR3ODlfY29yZS5rb2AuICBUaGlzIGlzIGNydWNpYWwuIEFsc28sIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgZGVjbGFyYXRpb24sIHByb2JhYmx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIG9yIGBjb2V4LmhgIHRvIHNlZSBob3cgdGhleSBhcmUgc3RydWN0dXJlZC4gVGhpcyB3aWxsIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4dGVybmFsIGhvb2tzIGFuZCB0aGUgb3ZlcmFsbCBtb2R1bGUmIzM5O3MgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9idGNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDEyMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NTk9c3RydWN0IGJ0Y19mYnRjXzFzbG90IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02MS1cdHU4IHNpZDsgLyogc2xvdCBpZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjI6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc2xvdCBzbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjMtfSBfX3BhY2tlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hIHRfZGVmW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02Ni1cdFtDWFREX09GRl1cdD0geyBDWFRETUFfT0ZGLCAgICBDWEZMQ19PRkYsIENYVFBTX09GRiwgMCwgMCwgMCwgMCwgMH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4MTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3Qgc19kZWZbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTgyLVx0W0NYU1RfT0ZGXVx0PSBfX0RFRl9GQlRDX1NMT1QoMTAwLCAweDU1NTU1NTU1LCBTTE9UX01JWCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTAyPXN0YXRpYyBjb25zdCB1MzIgY3h0YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTM1LVx0LyogZmlybXdhcmUgdmVyc2lvbiBtdXN0IGJlIGluIGRlY3JlYXNpbmcgb3JkZXIgZm9yIGVhY2ggY2hpcCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NzojZGVmaW5lIFJUVzg5X0RFRkFVTFRfQlRDX1ZFUl9JRFggKEFSUkFZX1NJWkUocnR3ODlfYnRjX3Zlcl9kZWZzKSAtIDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDk6c3RhdGljIGNvbnN0IHVuaW9uIHJ0dzg5X2J0Y193bF9zdGF0ZV9tYXAgYnRjX3NjYW5uaW5nX21hcCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM1MC1cdC5tYXAgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzkxPXN0YXRpYyBjaGFyICpjaGlwX2lkX3N0cih1MzIgaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDEzOnN0cnVjdCBydHc4OV9idGNfYnRmX3RsdiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTQtXHR1OCB0eXBlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQxOTpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDIwLVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjY9ZW51bSBidGNfYnRmX3NldF9yZXBvcnRfZW4ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ0NDpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfcmVwb3J0X3YxIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0NS1cdHU4IGZ2ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDUwOnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9yZXBvcnRfdjgge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDUxLVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00NTc9dW5pb24gcnR3ODlfZmJ0Y19ydHBfY3RybCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfcmVwb3J0X3YxIHYxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU5Olx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X3JlcG9ydF92OCB2ODtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2MC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2Mi0jZGVmaW5lIEJURl9TRVRfU0xPVF9UQUJMRV9WRVIgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDYzOnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9zbG90X3RhYmxlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2NC1cdHU4IGZ2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NjUtXHR1OCB0YmxfbnVtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDY2Olx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3QgdGJsc1tdIF9fY291bnRlZF9ieSh0YmxfbnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2Ny19IF9fcGFja2VkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDY5OnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9zbG90X3RhYmxlX3Y3IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ3MC1cdHU4IHR5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDcyLVx0dTggbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDczOlx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3RfdjcgdjdbQ1hTVF9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc0LX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NzY6c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X21vbl9yZWdfdjEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc3LVx0dTggZnZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ3OC1cdHU4IHJlZ19udW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0Nzk6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyByZWdzW10gX19jb3VudGVkX2J5KHJlZ19udW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgwLX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0ODI6c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X21vbl9yZWdfdjcge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgzLVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODUtXHR1OCBsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0ODY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyByZWdzW10gX19jb3VudGVkX2J5KGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODctfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00ODk9dW5pb24gcnR3ODlfZmJ0Y19zZXRfbW9uX3JlZyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0OTA6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192MSB2MTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ5MTpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9tb25fcmVnX3Y3IHY3O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDkyLX0gX19wYWNrZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTAxMz1zdGF0aWMgaW50IF9zZW5kX2Z3X2NtZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGgyY19jbGFzcywgdTggaDJjX2Z1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTAxNi1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMDE3Olx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEwMTg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEwMTk6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMDIwOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMDIxLVx0dTggaDJjX2Z1bmNfbWFzaywgYmlkID0gQlRDX0JUXzFTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTIyPXN0YXRpYyB2b2lkIF9yZXNldF9idGNfdmFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMTI0LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjY6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjc6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0MCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0MSA9IFx1MDAyNmN4LVx1MDAzZWJ0MTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTExMjktXHR1OCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEyMjA9c3RhdGljIHZvaWQgX2dldF9yZWdfc3RhdHVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTggKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjIyLVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMjM6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMjQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX21vZHVsZSAqbWQgPSBcdTAwMjZidGMtXHUwMDNlbWRpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyNTpcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX21yZWdfdmFsICpwbXJlZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMjYtXHR1MzIgcHJlX2FnY19hZGRyID0gUl9CVENfQkJfUFJFX0FHQ19TMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMzEzPXN0YXRpYyB2b2lkIF9jaGtfYnRjX2VycihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiBjbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMxNS1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE2Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE3Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEzMTg6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE5Olx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTE1MTI9c3RhdGljIHZvaWQgX3VwZGF0ZV9idF9yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBycHRfdHlwZSwgdTggKnBmaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTE0LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTU6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTc6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTE4Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidF9saW5mby1cdTAwM2VhMmRwX2Rlc2M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTE5Olx0dW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mby5ycHRfZmJ0Y19idHZlci5maW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjA6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRhZmhfdjIgKnBhZmhfdjIgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUyMTpcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqcGFmaF92NyA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIyOlx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0ZGV2aW5mbyAqcGRldiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIzOlx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoICpwYWZoX3YxID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YxICpwc2Nhbl92MTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YyICpwc2Nhbl92MjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3Y3ICpwc2Nhbl92NztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1MjctXHRib29sIHNjYW5fdXBkYXRlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTM2LVx0XHRpZiAodmVyLVx1MDAzZWZjeGJ0dmVyID09IDgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1Mzc6XHRcdFx0cHZlci1cdTAwM2V2OCA9ICooc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0dmVyX3Y4ICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTUzOC1cdFx0XHRidCA9IHB2ZXItXHUwMDNldjguYnRfaWQgPyBcdTAwMjZidGMtXHUwMDNlY3guYnQxIDogXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTQzLVx0XHR9IGVsc2UgaWYgKHZlci1cdTAwM2VmY3hidHZlciA9PSA3KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTQ0Olx0XHRcdHB2ZXItXHUwMDNldjcgPSAqKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHZlcl92NyAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NDUtXHRcdFx0YnQtXHUwMDNldmVyX2luZm8uZncgPSBsZTMyX3RvX2NwdShwdmVyLVx1MDAzZXY3LmZ3X3Zlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU0OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1NTA6XHRcdFx0cHZlci1cdTAwM2V2MSA9ICooc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0dmVyX3YxICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU1MS1cdFx0XHRidC1cdTAwM2V2ZXJfaW5mby5mdyA9IGxlMzJfdG9fY3B1KHB2ZXItXHUwMDNldjEuZndfdmVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTU4LVx0XHRpZiAodmVyLVx1MDAzZWZjeGJ0c2NhbiA9PSAxKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTU5Olx0XHRcdHBzY2FuX3YxID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjEgKilwZmluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTYwLVx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJUQ19TQ0FOX01BWDE7IGkmIzQzOyYjNDM7KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU2Ni1cdFx0fSBlbHNlIGlmICh2ZXItXHUwMDNlZmN4YnRzY2FuID09IDIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1Njc6XHRcdFx0cHNjYW5fdjIgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92MiAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NjgtXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQ1hTQ0FOX01BWDsgaSYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTc1LVx0XHR9IGVsc2UgaWYgKHZlci1cdTAwM2VmY3hidHNjYW4gPT0gNykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU3NjpcdFx0XHRwc2Nhbl92NyA9IChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3Y3ICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU3Ny1cdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBDWFNDQU5fTUFYOyBpJiM0MzsmIzQzOykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1ODQtXHRcdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeGJ0c2NhbiA9PSA4KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTg1Olx0XHRcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjggKnBzY2FuX3Y4ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODY6XHRcdFx0XHQoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92OCAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODc6XHRcdFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICp0YnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU4OC1cdFx0XHRcdHBzY2FuX3Y4LVx1MDAzZWJ0X2lkID8gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MSA6IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYwMi1cdFx0aWYgKHZlci1cdTAwM2VmY3hidGFmaCA9PSAyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjAzOlx0XHRcdHBhZmhfdjIgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3YyICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYwNC1cdFx0XHRpZiAocGFmaF92Mi1cdTAwM2VtYXBfdHlwZSBcdTAwMjYgUlBUX0JUX0FGSF9TRVFfTEVHQUNZKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYxMy1cdFx0fSBlbHNlIGlmICh2ZXItXHUwMDNlZmN4YnRhZmggPT0gNykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYxNDpcdFx0XHRwYWZoX3Y3ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MTUtXHRcdFx0aWYgKHBhZmhfdjctXHUwMDNlbWFwX3R5cGUgXHUwMDI2IFJQVF9CVF9BRkhfU0VRX0xFR0FDWSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MjQtXHRcdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeGJ0YWZoID09IDgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2MjU6XHRcdFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3Y4ICpwYWZoX3Y4ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2MjY6XHRcdFx0XHQoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3Y4ICopcGZpbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYyNzpcdFx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKnRidCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjI4LVx0XHRcdFx0cGFmaF92OC1cdTAwM2VidF9pZCA/IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDEgOiBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYyOTpcdFx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqdGJ0X2xpbmZvID0gXHUwMDI2dGJ0LVx1MDAzZWxpbmtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY0MC1cdFx0fSBlbHNlIGlmICh2ZXItXHUwMDNlZmN4YnRhZmggPT0gMSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY0MTpcdFx0XHRwYWZoX3YxID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaCAqKXBmaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDItXHRcdFx0bWVtY3B5KFx1MDAyNmJ0X2xpbmZvLVx1MDAzZWFmaF9tYXBbMF0sIHBhZmhfdjEtXHUwMDNlYWZoX2wsIDQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDctXHRjYXNlIEJUQ19SUFRfVFlQRV9CVF9ERVZJQ0U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjQ4Olx0XHRwZGV2ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGRldmluZm8gKilwZmluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjQ5LVx0XHRhMmRwLVx1MDAzZWRldmljZV9uYW1lID0gbGUzMl90b19jcHUocGRldi1cdTAwM2VkZXZfbmFtZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2NTg6c3RhdGljIHZvaWQgcnR3ODlfYnRjX2Z3X3JwdF9ldm50X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICppbmRleClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY2MC1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjYxOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjYyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjc3OnN0cnVjdCBydHc4OV9idGNfcHJwdCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjc4LVx0dTggdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xNjgzPXN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2ODQ6XHRcdFx0ICAgc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY4NS1cdFx0XHQgICB1OCAqcHJwdGJ1ZiwgdTMyIGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2ODctXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY4ODpcdHN0cnVjdCBydHc4OV9idGNfdmVyICpmd3N1YnZlciA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm8uZndfc3VidmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY4OTpcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MDpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MTpcdHN0cnVjdCBydHc4OV9idGNfcnB0X2Ntbl9pbmZvICpwY2luZm8gPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MjpcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MzpcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk0Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk1Olx0dW5pb24gcnR3ODlfYnRjX2ZidGNfcnB0X2N0cmxfdmVyX2luZm8gKnBycHQgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5NjpcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX2N5c3RhX2luZm8gKnBjeXN0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk3Olx0c3RydWN0IHJ0dzg5X2J0Y19wcnB0ICpidGNfcHJwdCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjk4LVx0dm9pZCAqcnB0X2NvbnRlbnQgPSBOVUxMLCAqcGZpbmZvID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTcxNTpcdGJ0Y19wcnB0ID0gKHN0cnVjdCBydHc4OV9idGNfcHJwdCAqKVx1MDAyNnBycHRidWZbaW5kZXhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTcxNi1cdHJwdF90eXBlID0gYnRjX3BycHQtXHUwMDNldHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTcyNDpcdHJ0dzg5X2J0Y19md19ycHRfZXZudF92ZXIocnR3ZGV2LCBcdTAwMjZycHRfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE4NTAtXHRcdFx0XHRcdCAgdHJhY2Vfc3RlcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTg1MTpcdFx0XHRcdFx0ICBvZmZzZXRvZihzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc3RlcHNfdjIsIHN0ZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1Mi1cdFx0XHRmd3N1YnZlci1cdTAwM2VmY3hzdGVwID0gcGZ3aW5mby1cdTAwM2VycHRfZmJ0Y19zdGVwLmZpbmZvLnYyLmZ2ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1Ni1cdFx0XHRcdFx0ICB0cmFjZV9zdGVwICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxODU3Olx0XHRcdFx0XHQgIG9mZnNldG9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zdGVwc192Mywgc3RlcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xODU4LVx0XHRcdGZ3c3VidmVyLVx1MDAzZWZjeHN0ZXAgPSBwZndpbmZvLVx1MDAzZXJwdF9mYnRjX3N0ZXAuZmluZm8udjMuZnZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0yNjU4PXN0YXRpYyB2b2lkIF9wYXJzZV9idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NTk6XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY2MC1cdFx0XHQgICAgICB1OCAqcGJ1ZiwgdTMyIGJ1Zl9sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NjI6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjYzOlx0c3RydWN0IHJ0dzg5X2J0Y19wcnB0ICpidGNfcHJwdCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjY0LVx0dTMyIGluZGV4ID0gMCwgcnB0X2xlbiA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY3MC1cdHdoaWxlIChwYnVmKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjcxOlx0XHRidGNfcHJwdCA9IChzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKilcdTAwMjZwYnVmW2luZGV4XTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NzItXHRcdGlmIChpbmRleCAmIzQzOyAyIFx1MDAzZT0gdmVyLVx1MDAzZWluZm9fYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI2ODk9c3RhdGljIHZvaWQgX2FwcGVuZF90ZG1hKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjkxLVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTI6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTM6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcgKnRsdl92NztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSAqdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTc6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYV92MyAqdjM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjk4LVx0dTE2IGxlbiA9IGJ0Yy1cdTAwM2Vwb2xpY3lfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzA4Olx0dGx2ID0gKHN0cnVjdCBydHc4OV9idGNfYnRmX3RsdiAqKVx1MDAyNmJ0Yy1cdTAwM2Vwb2xpY3lbbGVuXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MDktXHR0bHYtXHUwMDNldHlwZSA9IENYUE9MSUNZX1RETUE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzEwLVx0aWYgKHZlci1cdTAwM2VmY3h0ZG1hID09IDEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI3MTE6XHRcdHYgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKilcdTAwMjZ0bHYtXHUwMDNldmFsWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxMi1cdFx0dGx2LVx1MDAzZWxlbiA9IHNpemVvZigqdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxNS1cdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeHRkbWEgPT0gNyB8fCB2ZXItXHUwMDNlZmN4dGRtYSA9PSA0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzE2Olx0XHR0bHZfdjcgPSAoc3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3ICopXHUwMDI2YnRjLVx1MDAzZXBvbGljeVtsZW5dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxNy1cdFx0dGx2X3Y3LVx1MDAzZWxlbiA9IHNpemVvZihkbS1cdTAwM2V0ZG1hKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzIzLVx0XHR0bHYtXHUwMDNlbGVuID0gc2l6ZW9mKCp2Myk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzI0Olx0XHR2MyA9IChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYV92MyAqKVx1MDAyNnRsdi1cdTAwM2V2YWxbMF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzI1LVx0XHR2My1cdTAwM2VmdmVyID0gdmVyLVx1MDAzZWZjeHRkbWE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MjczNz1zdGF0aWMgdm9pZCBfYXBwZW5kX3Nsb3RfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MzktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc0MDpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc0MTpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3RsdiAqdGx2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3NDItXHRzdHJ1Y3QgYnRjX2ZidGNfMXNsb3QgKnYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzU4Olx0XHR0bHYgPSAoc3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2ICopXHUwMDI2YnRjLVx1MDAzZXBvbGljeVtsZW5dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc1OS1cdFx0diA9IChzdHJ1Y3QgYnRjX2ZidGNfMXNsb3QgKilcdTAwMjZ0bHYtXHUwMDNldmFsWzBdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI3ODI9c3RhdGljIHZvaWQgX2FwcGVuZF9zbG90X3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc4NDpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqdGx2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODUtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc4NjpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc4Ny1cdHU4IGksIGNudCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjgwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI4MDU6XHRcdFx0dGx2ID0gKHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqKVx1MDAyNmJ0Yy1cdTAwM2Vwb2xpY3lbbGVuXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4MDYtXHRcdFx0dGx2LVx1MDAzZXR5cGUgPSBDWFBPTElDWV9TTE9UO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI4Mzc9c3RhdGljIHZvaWQgX2FwcGVuZF9zbG90KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yODQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg0NzpzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yODQ4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4NDktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg1MDpcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg1MS1cdHUzMiBiaXRfbWFwID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA0NzpzdGF0aWMgdm9pZCBydHc4OV9idGNfZndfc2V0X3Nsb3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwNDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA0OS1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMDUwOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMDUxOlx0c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3ICp0bHZfdjcgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MjpcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9zbG90X3RhYmxlICp0Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMDUzOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDU0LVx0dTE2IG4sIGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA4NjpzdGF0aWMgdm9pZCBydHc4OV9idGNfZndfZW5fcnB0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwODctXHRcdFx0XHRib29sIGZvcmNlX2V4ZWMsIHUzMiBycHRfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwODktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA5MDpcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqZndpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMwOTEtXHR1bmlvbiBydHc4OV9mYnRjX3J0cF9jdHJsIHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzEzMz1zdGF0aWMgdm9pZCBidGNfZndfc2V0X21vbnJlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzEzNS1cdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxMzY6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMTM3Olx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X21vbl9yZWdfdjEgKnYxID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxMzg6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyAqdjcgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzEzOS1cdHU4IGksIG4sIHVsZW4sIGN4bXJlZ19tYXg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxNTg6XHR1bGVuID0gc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxNTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzE5ND1zdGF0aWMgdm9pZCBfdXBkYXRlX2RtX3N0ZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxOTctXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzE5ODpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjEwPXN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyMTMtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzIxNDpcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzIxNS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI2MT1zdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjYyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNjM6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjY0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyODc9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjg4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyODk6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjkwLVx0dTMyIGVuX21hcF92NyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMxMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzE0Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cdTAwM2VidGMudmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMxNS1cdHUzMiBlbl9tYXBfdjggPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM2LVx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXHUwMDI2YnRjLVx1MDAzZWdwaW87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM3Olx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM4LVx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzJiIGwyX2gyYztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDI1PXN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNy1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDI4Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDI5LVx0dTggYnQxX3N3X3R5cGUgPSBCVENfU1dJVENIX0lOVEVSTkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM0Njc9c3RhdGljIHZvaWQgX2Z3X3NldF9kcnZfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjktXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ3MDpcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ3MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNTgxPXZvaWQgYnRjX2Z3X2V2ZW50KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZXZ0X2lkLCB2b2lkICpkYXRhLCB1MzIgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM1ODMtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzU4NDpcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNTg1Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNTg2LVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNjE2PXN0YXRpYyB2b2lkIF9zZXRfZ250KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X21hcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjE5LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MjA6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MjE6XHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfb3V0c3JjX3NldF9pbmZvICpvID0gXHUwMDI2ZG0tXHUwMDNlb3N0X2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNjIyLVx0c3RydWN0IHJ0dzg5X21hY19heF93bF9hY3QgKndsYWN0X3NldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNzY5PXN0YXRpYyB2b2lkIF9zZXRfd2xfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzc3Mi1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNzczOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNzc0Olx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNzc1LVx0Ym9vbCBsZXZlbF9jaGcgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zODIxPXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODI0LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM4MjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4MjYtXHRib29sIGxldmVsX2NoZyA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4NTI9c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTUtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1NjpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1Ny1cdHU4IGgyY19mdW5jID0gU0VUX0JUX1RYX1BXUjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTE0PXN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5MTctXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzkxODpcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzkxOTpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zOTIwLVx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfTE5BX0NPTlNUUkFJTjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTg4PXN0YXRpYyB2b2lkIF9zZXRfYnRfY29yeF90YWJsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzk5MC1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTkxOlx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTkyOlx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM5OTM6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5OTQtXHR1OCBpc18yNGcsIGlzXzU2ZywgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDI4PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmFfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwMzAtXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAzMTpcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAzMjpcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFx1MDAyNmN4LVx1MDAzZXdsLnN0YXR1cy5tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDMzOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDM0LVx0Ym9vbCBidF8yciA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQwNTY9c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDA1OS1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYwOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYxOlx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYyOlx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjM6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqciA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjY6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcdTAwMjZ3bC1cdTAwM2VzdGF0dXMubWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2NzpcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcGFyYTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwNjgtXHR1OCBibW9kZSA9IGRtLVx1MDAzZXRkZF9iaW5kLndsX2xpbmtfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MTg0PXN0YXRpYyB2b2lkIF91cGRhdGVfYnRjX3N0YXRlX21hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE4Ni1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg3Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg4Olx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE4OTpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTkwOlx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjExPXN0YXRpYyB1OCBfZ2V0X3dsX2d1YXJkX2J3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaW5kZXgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyMTM6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjE0LVx0dTggZ3VhcmRfY2ggPSBydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VhZmhfZ3VhcmRfY2g7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDI1Mj1zdGF0aWMgdm9pZCBfc2V0X3dsX2NoX21hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDI1NC1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MjU1Olx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyNTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2FmaF9pbmZvICphZmg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjU3LVx0dTE2IGNoX3N0YXJ0LCBjaF9lbmQsIGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDM3MT1zdGF0aWMgdm9pZCBfc2V0X3dsX2NoX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQzNzMtXHRzdGF0aWMgY29uc3QgdTggcGF0aF9od2JbQlRDX1JGX05VTV0gPSB7UlRXODlfUEhZXzAsIFJUVzg5X1BIWV8xfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQzNzQ6XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuZG07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0Mzc1Olx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDM3NjpcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQzNzctXHR1MzIgdmNvX2ZyZXEsIGNoX2xvID0gMCwgY2hfdXAgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ0NTA9c3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ1Mi1cdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDUzOlx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDU0Olx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDQ1NTpcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ0NTY6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JsaW5rICpybGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0NTctXHR1OCBoMmNfZnVuYywgaHdiLCBidF9saW5rX2NoZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTM2LVx0XHRcdCAgICBcdTAwMjZ3bC1cdTAwM2VhZmhfaW5mb1tod2JdW2pdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDUzNzpcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8pKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ1MzgtXHRcdFx0ICAgICFidF9saW5rX2NoZyBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTQzLVx0XHQgICAgICAgXHUwMDI2d2wtXHUwMDNlYWZoX2luZm9baHdiXVtqXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1NDQ6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDU0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00NTc5PXN0YXRpYyBib29sIF9jaGVja19mcmVlcnVuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTgxLVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1ODI6XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU4MzpcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU4NDpcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1ODU6XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg2Olx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2YnRfbGluZm8tXHUwMDNlaGlkX2Rlc2M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg3Olx0c3RydWN0IHJ0dzg5X2J0Y19tb2R1bGUgKm1kID0gXHUwMDI2YnRjLVx1MDAzZW1kaW5mbztcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODE5OQoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29leGlzdGVuY2UgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGNvZXguY2AgZmlsZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGV4cG9zZWQgaW50ZXJmYWNlIOKAkyB3aGljaCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG1lYW50IHRvIGJlIHVzZWQgZXh0ZXJuYWxseT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29leGlzdGVuY2UgZnVuY3Rpb25zIGFyZSAqbm90KiBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgdGhhdCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBvciBwb3RlbnRpYWxseSBldmVuIG90aGVyIG1vZHVsZXMsIGNvdWxkIGNhbGwuCgpUaGVyZWZvcmUsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZ3JlcCBmb3IgZWl0aGVyIGBydHc4OV9idGNfYCBvciBgcnR3ODlfY29leF9gIHdpdGhpbiBgY29leC5jYCBhbmQgb25seSByZXR1cm4gdGhvc2UgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGFzIGBzdGF0aWNgLiBUaGF0IHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgaW50ZXJuYWwgZnVuY3Rpb24gY2FsbHMgdGhhdCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIGxldmVyYWdlcy4gSSBleHBlY3QgdGhpcyB3aWxsIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGV4dGVybmFsIGludGVyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHZvaWR8aW50fGJvb2x8dTMyKSBydHc4OV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00NzE3PXN0YXRpYyB2b2lkIF9zZXRfdGRtYV9iaW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCB0ZG1hX29uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ3NjAtI2RlZmluZSBCVENfQjFfTUFYIDI1MCAvKiB1bml0IG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NzYxOnZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzYyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz01MDk1PUVYUE9SVF9TWU1CT0wocnR3ODlfYnRjX3NldF9wb2xpY3kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNTA5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjUwOTc6dm9pZCBydHc4OV9idGNfc2V0X3BvbGljeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTUwOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc1ODc9c3RhdGljIHZvaWQgX3VwZGF0ZV93bF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X2J0Y193bF9saW5rX2luZm8gKndsX2xpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzE2OnZvaWQgcnR3ODlfY29leF9hY3QxX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzE3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NzczOTp2b2lkIHJ0dzg5X2NvZXhfYnRfZGV2aW5mb193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzc0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzc1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjc3NTU6dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg0MTk9dm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NDY6dm9pZCBydHc4OV9idGNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODY2Mzp2b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NzE6dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjcyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjkwPXN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODcyMzp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODc4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3ODQ6dm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3ODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4ODE0OnZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9maW5pc2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODgxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODgzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4Mzc6dm9pZCBydHc4OV9idGNfbnRmeV9zd2l0Y2hfYmFuZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODg1OTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODYwLVx0XHRcdFx0ICAgIGVudW0gYnRjX3BrdF90eXBlIHBrdF90eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4OTI3OnZvaWQgcnR3ODlfYnRjX250ZnlfZWFwb2xfcGFja2V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTI4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODkzODp2b2lkIHJ0dzg5X2J0Y19udGZ5X2FycF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4OTQ4OnZvaWQgcnR3ODlfYnRjX250ZnlfZGhjcF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4OTU5OnZvaWQgcnR3ODlfYnRjX250ZnlfaWNtcF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTkxNTc9c3RhdGljIHZvaWQgX250Znlfcm9sZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcmlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5MjI5OnZvaWQgcnR3ODlfYnRjX250Znlfcm9sZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMzAtXHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTM0NTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTM0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTQwMD1zdGF0aWMgYm9vbCBfbnRmeV93bF9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfcGF0aCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NDY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTQ2Njp2b2lkIHJ0dzg5X2J0Y19udGZ5X3dsX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9tYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NDY3LVx0XHRcdCAgIGVudW0gYnRjX3dsX3Jma190eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTYzOD1zdGF0aWMgdm9pZCBydHc4OV9idGNfbnRmeV93bF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk2NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NjU1OnZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk2NTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk3MDI9c3RhdGljIHU4IHJ0dzg5X2J0Y19jMmhfZ2V0X2luZGV4X2J5X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk3Njc6dm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NzY4LVx0XHRcdCAgdTMyIGxlbiwgdTggY2xhc3MsIHU4IGZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTMyNDY9c3NpemVfdCBydHc4OV9idGNfZHVtcF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzMyMDp2b2lkIHJ0dzg5X2NvZXhfcmVjb2duaXplX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzMyMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzM1MTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3ByZXNlcnZlX2J0X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzM1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTMzNjQ9RVhQT1JUX1NZTUJPTChydHc4OV9idGNfbnRmeV9wcmVzZXJ2ZV9idF90aW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMzY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTMzNjY6dm9pZCBydHc4OV9idGNfbnRmeV9jb25uX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgc3RhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzM2Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODkxCgkJCQkJCQlvdXRwdXQ6IDIyOQoJCQkJCQkJdGhvdWdodHM6IDEzNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBfc2V0X2J0X3R4X3Bvd2VyYCBmdW5jdGlvbi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIGl0JiMzOTtzIHN0YXRpYy4gTGluZSAzODUyIGNvbmZpcm1zIGl0OiBgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlciguLi4pYC4gT2theSwgaXQmIzM5O3Mgc3RhdGljLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgd2UgY2FuIHRhcmdldCBpdCBkaXJlY3RseSB3aXRoIHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLCBnaXZlbiBjb21waWxlciBpbmxpbmluZyBjb25zaWRlcmF0aW9ucyBmb3Igc3RhdGljIGZ1bmN0aW9ucyBhcyBvdXRsaW5lZCBpbiB0aGUgcHJvbXB0JiMzOTtzIHJ1bGUuIFNpbmNlIGl0JiMzOTtzIGluIGEgYC5jYCBmaWxlLCBpdCBtaWdodCBub3QgYmUgaW5saW5lZCwgYnV0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzLgoKTG9va2luZyBhdCBgY29leC5jYCwgdGhlIGNhbGxlcnMgYXJlIGBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0YCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGVgLCBgcnR3ODlfYnRjX250Znlfd2xfc3RhYCwgYW5kIGBydHc4OV9idGNfYzJoX2hhbmRsZWAuIEVpdGhlciB0aGVzZSBjYW4gYmUgdGFyZ2V0ZWQsIG9yIHRoZSBmdW5jdGlvbiBpdHNlbGYgaWYgbm90IGlubGluZWQuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlIGBydHc4OWAgVVNCIHZhcmlhbnQuIEZyb20gdGhlIGBLY29uZmlnYCBmaWxlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AsIEkgc2VlIHRoZXNlIHJlbGV2YW50IG9wdGlvbnM6IGBSVFc4OWAgKGRlcGVuZHMgb24gYE1BQzgwMjExYCksIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAgKHRyaXN0YXRlKSwgYW5kIHZhcmlvdXMgZGV2aWNlLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgUlRXODlfODg1MkFVYCAoZGVwZW5kcyBvbiBgVVNCYCwgc2VsZWN0cyBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBldGMuKS4gV2UgYWxzbyBoYXZlIGBNQUM4MDIxMWAgYW5kIGBVU0JgLgoKTGV0IG1lIHZlcmlmeSB0aGF0IGBSVFc4OV84ODUyQVVgIHJlYWxseSBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgUlRXODlgLiBEb3VibGUtY2hlY2tpbmcgdGhlIGBLY29uZmlnYDogeWVzLCBgUlRXODlfODg1MkFVYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBzZWxlY3RzIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAuICBTbywgdG8gZW5hYmxlIHRoZSBVU0IgdmFyaWFudCwgdGhlIGZvbGxvd2luZyBjb25maWdzIGFyZSBuZWVkZWQ6IGBSVFc4OWAsIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAsIGBSVFc4OV84ODUyQVVgIChvciBvbmUgb2YgdGhlIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgUlRXODlfODg1MkJVYCwgZXRjLiksIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gSSYjMzk7bGwgYWxzbyBkb3VibGUgY2hlY2sgdGhhdCBgTUFDODAyMTFgIGRlcGVuZHMgb24gYE5FVERFVklDRVNgLCBgV0xBTmAsIGBDRkc4MDIxMWAsIGJ1dCB0aGF0IHNob3VsZCBiZSBzdGFuZGFyZCwgYW5kIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY29ycmVjdC4KCk5vdywgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgcmVtb3ZpbmcgYSBndWFyZCBjb25kaXRpb24sIGAhcmZfYmFuZGAuIFRoaXMgbWVhbnMgdGhhdCBgX3NldF9idF90eF9wb3dlcmAgd2lsbCBub3cgYmUgZXhlY3V0ZWQgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBJcyB0aGlzIGNvZGUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nPyBZZXMsIHRoaXMgY2hhbmdlIGltcGFjdHMgZXhlY3V0YWJsZSBkcml2ZXIgbG9naWMgaW4gdGhlIGBydHc4OWAgZHJpdmVyLCB3aGljaCBpcyBhIFJlYWx0ZWsgV2ktRmkgZHJpdmVyLCB3aXRoIFVTQiBkcml2ZXIgdmFyaWFudHMuIFdlIGhhdmUgVVNCIGdhZGdldCBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcyBmb3IgcmVhY2hhYmlsaXR5LiBSZW1vdmluZyB0aGUgY2hlY2sgY291bGQgaW50cm9kdWNlIG5ldyBleGVjdXRpb24gcGF0aHMgb3IgdnVsbmVyYWJpbGl0aWVzLgoKVGhlcmVmb3JlLCBmb3IgRm9jdXNTeW1ib2xzLCBJJiMzOTtsbCBzZWxlY3Q6IGBfc2V0X2J0X3R4X3Bvd2VyYCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydGAsIGBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZWAsIGFuZCBgcnR3ODlfYnRjX2MyaF9oYW5kbGVgLgoKVG8gc3VtbWFyaXplIHRoZSByZXF1aXJlZCBjb25maWdzIGZvciB0aGlzIHRhcmdldCB0aGV5IGFyZTogYFJUVzg5YCwgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgYFJUVzg5Xzg4NTJBVWAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19zZXRfYnRfdHhfcG93ZXImIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0JiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlJiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19jMmhfaGFuZGxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGV4ZWN1dGFibGUgY29udHJvbCBmbG93IGluIFJlYWx0ZWsgcnR3ODkgV2ktRmkgY29leGlzdGVuY2UgbG9naWMgKF9zZXRfYnRfdHhfcG93ZXIpIGJ5IHJlbW92aW5nIHRoZSByZl9iYW5kIGd1YXJkIGNoZWNrLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChlLmcuIFJUVzg5Xzg4NTJBVSkgYW5kIG1hYzgwMjExIGludGVyZmFjZXMsIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X3NldF9idF90eF9wb3dlciYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfbnRmeV9pbml0JiMzNDssCiAgICAmIzM0O3J0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX2MyaF9oYW5kbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXhlY3V0YWJsZSBjb250cm9sIGZsb3cgaW4gUmVhbHRlayBydHc4OSBXaS1GaSBjb2V4aXN0ZW5jZSBsb2dpYyAoX3NldF9idF90eF9wb3dlcikgYnkgcmVtb3ZpbmcgdGhlIHJmX2JhbmQgZ3VhcmQgY2hlY2suIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGUuZy4gUlRXODlfODg1MkFVKSBhbmQgbWFjODAyMTEgaW50ZXJmYWNlcywgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHRoZSBgfHwgIXJmX2JhbmRgIGNoZWNrIGZyb20gdGhlIGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gQWxsIHZhcmlhYmxlcyB3aXRoaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAgKHN1Y2ggYXMgYGJ1ZmApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIG9uIHRoZSBzdGFjayAoYHU4IGJ1ZlsyXSA9IHt9O2ApLCBhbmQgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSBhcyBhIGB1OGAgcGFyYW1ldGVyLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmUwODI1YWNmZTMwY2I0ZmFmOWI2MDIyMTFmNTllOTQzOTUwMmE2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDA3OjE3OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwppbmRleCA1YTlkYzRkOGEwMGJhLi5mNDJhNmNjM2ViN2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwpAQCAtMzg1OSw3ICYjNDM7Mzg1OSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCwKIAl1OCBidWZbMl0gPSB7fTsKIAl1OCBsZW4gPSBzaXplb2YoKmJ1Zik7CiAKLQlpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZCkKJiM0MzsJaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApCiAJCXJldHVybjsKIAogCWlmIChidC0mZ3Q7cmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIENvZXhpc3RlbmNlIFBhdGNoKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGRpdmUgaW50byBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvLCBvZiBjb3Vyc2UsICphY3R1YWxseSogbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIOKAkyBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMgbWFkZSBkaXJlY3RseS4gIEJleW9uZCB0aGUgcGF0Y2ggaXRzZWxmLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ2V0IGEgc2Vuc2Ugb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmaWxlLCB0byBzZWUgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgY2hhbmdlcy4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhYm91dCBgX3NldF9idF90eF9wb3dlcmAgYW5kIGhvdyB0aGUgYHJmX2JhbmRgIHZhcmlhYmxlIGludGVyYWN0cyB3aXRoIGl0LiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIHVzZSBlaXRoZXIgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgc3BlY2lmaWNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24mIzM5O3MgYmVoYXZpb3IgaW4gcmVsYXRpb24gdG8gZnJlcXVlbmN5IGJhbmQgc2VsZWN0aW9uLCBhcyBhbnkgY2hhbmdlcyBoZXJlIGNvdWxkIHNpZ25pZmljYW50bHkgaW1wYWN0IGNvZXhpc3RlbmNlIHdpdGggQmx1ZXRvb3RoLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIGtub3cgKndoYXQqIGl0IGRvZXMgYW5kICpob3cqIGl0IGRvZXMgaXQgd2l0aCBgcmZfYmFuZGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM4NTA6XHR9XG4zODUxOlx0XG4zODUyOlx0c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxuMzg1MzpcdFx0XHRcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4zODU0Olx0e1xuMzg1NTpcdFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbjM4NTY6XHRcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuMzg1NzpcdFx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xuMzg1ODpcdFx0dTggaSwgaWRfc3RhcnQsIGlkX3N0b3A7XG4zODU5Olx0XHR1OCBidWZbMl0gPSB7fTtcbjM4NjA6XHRcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbjM4NjE6XHRcbjM4NjI6XHRcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4zODYzOlx0XHRcdHJldHVybjtcbjM4NjQ6XHRcbjM4NjU6XHRcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuMzg2NjpcdFx0XHRyZXR1cm47XG4zODY3Olx0XG4zODY4Olx0XHRpZiAoYmlkID09IEJUQ19BTExfQlQpIHtcbjM4Njk6XHRcdFx0aWRfc3RhcnQgPSBCVENfQlRfMVNUO1xuMzg3MDpcdFx0XHRpZF9zdG9wID0gQlRDX0JUXzJORDtcbjM4NzE6XHRcdH0gZWxzZSB7XG4zODcyOlx0XHRcdGlkX3N0YXJ0ID0gYmlkO1xuMzg3MzpcdFx0XHRpZF9zdG9wID0gYmlkO1xuMzg3NDpcdFx0fVxuMzg3NTpcdFxuMzg3NjpcdFx0Zm9yIChpID0gaWRfc3RhcnQ7IGkgXHUwMDNjPSBpZF9zdG9wOyBpJiM0MzsmIzQzOykge1xuMzg3NzpcdFx0XHRpZiAoaSA9PSBCVENfQlRfMk5EKSB7XG4zODc4Olx0XHRcdFx0aWYgKCEocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlcGFyYV92ZXIgXHUwMDI2IEJUQ19GRUFUX0RVQUxfQlQpKVxuMzg3OTpcdFx0XHRcdFx0Y29udGludWU7XG4zODgwOlx0XG4zODgxOlx0XHRcdFx0YnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQxO1xuMzg4MjpcdFx0XHRcdGgyY19mdW5jIHw9IEJUX0gyQ19GVU5DX0JUMk5EO1xuMzg4MzpcdFx0XHR9XG4zODg0Olx0XG4zODg1Olx0XHRcdGJ1ZlswXSA9IChzOCkoLWxldmVsKTtcbjM4ODY6XHRcdFx0YnVmWzFdID0gcmZfYmFuZDsgIC8qIGJpdC1tYXA6IGJpdDEtXHUwMDNlNUdIei82R2h6LCBiaXQwLVx1MDAzZTIuNEdIeiAqL1xuMzg4NzpcdFxuMzg4ODpcdFx0XHRpZiAoIWZvcmNlX2V4ZWMgXHUwMDI2XHUwMDI2ICFidGMtXHUwMDNlY2xpX2gyY19jbWQpIHtcbjM4ODk6XHRcdFx0XHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFx1MDAyNlx1MDAyNlxuMzg5MDpcdFx0XHRcdCAgICBidC1cdTAwM2V0eF9wb3dlcl9ub3cgPT0gbGV2ZWwpXG4zODkxOlx0XHRcdFx0XHRjb250aW51ZTtcbjM4OTI6XHRcdFx0XHRlbHNlIGlmIChyZl9iYW5kICE9IFJUVzg5X0JBTkRfMkcgXHUwMDI2XHUwMDI2XG4zODkzOlx0XHRcdFx0XHQgYnQtXHUwMDNldHhfcG93ZXJfbm93XzZnID09IGxldmVsKVxuMzg5NDpcdFx0XHRcdFx0Y29udGludWU7XG4zODk1Olx0XHRcdH1cbjM4OTY6XHRcbjM4OTc6XHRcdFx0aWYgKHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXG4zODk4Olx0XHRcdFx0bGVuID0gU0VUX1JGX1BBUkFfQVhfTEVOO1xuMzg5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzIxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBEZWVwZXIgaW50byBCbHVldG9vdGggVHJhbnNtaXNzaW9uIFBvd2VyKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYXQgYSBncmFudWxhciBsZXZlbC4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIGl0JiMzOTtzIGEgcHJpdmF0ZSBmdW5jdGlvbiwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgQmx1ZXRvb3RoIHRyYW5zbWl0dGVyJiMzOTtzIHBvd2VyIG91dHB1dC4gSSBrbm93IHRoaXMgaXMgYSBjcml0aWNhbCBwYXJhbWV0ZXIuIEVuc3VyaW5nIHByb3BlciBwb3dlciBsZXZlbCBpcyBwYXJhbW91bnQgZm9yIHJhbmdlLCBjb25uZWN0aW9uIHN0YWJpbGl0eSwgYW5kLCBvZiBjb3Vyc2UsIGFkaGVyZW5jZSB0byByZWd1bGF0b3J5IGxpbWl0cy4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpcyB2aXRhbCBmb3IgdHJvdWJsZXNob290aW5nIGNvbm5lY3Rpdml0eSBpc3N1ZXMgb3Igb3B0aW1pemluZyBwZXJmb3JtYW5jZSBpbiBteSBzeXN0ZW1zLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyZmFjZSDigJMgd2hldGhlciBpdCYjMzk7cyBkaXJlY3QgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uLCB1c2VzIGEgSEFMLCBvciBpbnRlcmFjdHMgd2l0aCBhIEJsdWV0b290aCBjb250cm9sbGVyIHRocm91Z2ggYW4gSENJIGNvbW1hbmQuIEkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBpbnB1dCBwYXJhbWV0ZXJzOiBhcmUgd2UgZGVhbGluZyB3aXRoIGEgZEJtIHZhbHVlIGRpcmVjdGx5LCBvciBhIG1vcmUgYWJzdHJhY3QgbGV2ZWw/IEFuZCBob3cgZG9lcyBpdCBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucz8gQW55IHJhbmdlIGNoZWNrcyBvciBjbGFtcGluZz8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBpbnRlcm5hbCB2YXJpYWJsZXMgb3Igc3RhdGVzPyBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIGZsb3cgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbXBsaWNpdCBwb3dlciBtYW5hZ2VtZW50IG9yIGR5bmFtaWMgcG93ZXIgYWRhcHRhdGlvbiBpbnZvbHZlZC4gTXkgZ29hbCBoZXJlIGlzIGEgZnVsbCBjb25jZXB0dWFsIG1vZGVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzg5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszODkwOlx0XHRcdFx0ICAgIGJ0LVx1MDAzZXR4X3Bvd2VyX25vdyA9PSBsZXZlbClcbjM4OTE6XHRcdFx0XHRcdGNvbnRpbnVlO1xuMzg5MjpcdFx0XHRcdGVsc2UgaWYgKHJmX2JhbmQgIT0gUlRXODlfQkFORF8yRyBcdTAwMjZcdTAwMjZcbjM4OTM6XHRcdFx0XHRcdCBidC1cdTAwM2V0eF9wb3dlcl9ub3dfNmcgPT0gbGV2ZWwpXG4zODk0Olx0XHRcdFx0XHRjb250aW51ZTtcbjM4OTU6XHRcdFx0fVxuMzg5NjpcdFxuMzg5NzpcdFx0XHRpZiAocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcbjM4OTg6XHRcdFx0XHRsZW4gPSBTRVRfUkZfUEFSQV9BWF9MRU47XG4zODk5Olx0XG4zOTAwOlx0XHRcdGlmICghX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIGgyY19mdW5jLCBidWYsIGxlbikpIHtcbjM5MDE6XHRcdFx0XHRidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmEuYnRfdHhfcG93ZXJbaV0gPSBsZXZlbDtcbjM5MDI6XHRcdFx0XHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHKVxuMzkwMzpcdFx0XHRcdFx0YnQtXHUwMDNldHhfcG93ZXJfbm93ID0gbGV2ZWw7XG4zOTA0Olx0XHRcdFx0ZWxzZVxuMzkwNTpcdFx0XHRcdFx0YnQtXHUwMDNldHhfcG93ZXJfbm93XzZnID0gbGV2ZWw7XG4zOTA2Olx0XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuMzkwNzpcdFx0XHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBidCVkX3R4X3Bvd2VyX2xldmVsID0gJWRcXG5cJiMzNDssXG4zOTA4Olx0XHRcdFx0XHQgICAgX19mdW5jX18sIGksIGxldmVsKTtcbjM5MDk6XHRcdFx0fVxuMzkxMDpcdFx0fVxuMzkxMTpcdH1cbjM5MTI6XHRcbjM5MTM6XHQjZGVmaW5lIEJUQ19CVF9SWF9OT1JNQUxfTFZMIDdcbjM5MTQ6XHRzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcbjM5MTU6XHRcdFx0XHQgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXG4zOTE2Olx0e1xuMzkxNzpcdFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbjM5MTg6XHRcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuMzkxOTpcdFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbjM5MjA6XHRcdHU4IGgyY19mdW5jID0gU0VUX0JUX0xOQV9DT05TVFJBSU47XG4zOTIxOlx0XHR1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDtcbjM5MjI6XHRcdGJvb2wgc3RhdGUgPSBmYWxzZTtcbjM5MjM6XHRcdHUzMiBzY2JkX2JpdCA9IDA7XG4zOTI0Olx0XHR1OCBidWZbMl0gPSB7fTtcbjM5MjU6XHRcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbjM5MjY6XHRcbjM5Mjc6XHRcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpXG4zOTI4Olx0XHRcdHJldHVybjtcbjM5Mjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJsdWV0b290aCBUWCBQb3dlciBTZXR0aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlIGhhdmUgYSBidWZmZXIsIGBidWZgLCBpbml0aWFsaXplZCBhcyBgdTggYnVmWzJdID0ge307YC4gU28gaXQmIzM5O3MgYSB0d28tYnl0ZSBhcnJheSwgemVyb2VkIG91dC4gTGluZSAzODYwIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc6IGB1OCBsZW4gPSBzaXplb2YoKmJ1Zik7YC4gTm93LCBgc2l6ZW9mKCpidWYpYCBzaG91bGQgYmUgYDFgIGJlY2F1c2UgYCpidWZgIGRlcmVmZXJlbmNlcyB0byBhIGB1OGAsIHdoaWNoIGlzIG9uZSBieXRlLiBUaG91Z2gsIGlmIHRoZSBgY2hpcF9nZW5gIGlzIGBSVFc4OV9DSElQX0FYYCwgdGhlbiB0aGUgbGVuZ3RoIGNvdWxkIGFjdHVhbGx5IGJlIDIgb3IgMSBhcyBkZXRlcm1pbmVkIGJ5ICBgU0VUX1JGX1BBUkFfQVhfTEVOYC4KClRoYXQgc2VlbXMgYSBiaXQgb2RkOyB0aGUgYnVmZmVyIGlzICpjbGVhcmx5KiB0d28gYnl0ZXMgd2lkZSwgYm90aCBpbml0aWFsaXplZCwgYW5kIHlldCB0aGUgY29kZSBjYWxjdWxhdGVzIGBsZW5gIGFzIGAxYCAob3Igd2hhdGV2ZXIgYFNFVF9SRl9QQVJBX0FYX0xFTmAgZXZhbHVhdGVzIHRvKS4gIFRoaXMgbWVhbnMgd2UgYXJlIGxvc2luZyBpbmZvcm1hdGlvbi4KClRoZW4sIHdlIGhhdmUgdGhlIGBfc2V0X2J0X3R4X3Bvd2VyYCBmdW5jdGlvbiwgd2hpY2ggY2FsbHMgYF9zZW5kX2Z3X2NtZChydHdkZXYsIEJURkNfU0VULCBoMmNfZnVuYywgYnVmLCBsZW4pYC4gVGhpcyBpcyB3aGVyZSB3ZSYjMzk7cmUgYWN0dWFsbHkgKnNlbmRpbmcqIHRoZSBjb21tYW5kLiBTbywgd2l0aCB0aGlzIGJ1ZmZlciBhbmQgbGVuZ3RoLCB3ZSYjMzk7cmUgc2VuZGluZyB3aGF0ZXZlciBpcyBpbiBgYnVmYCB0byB0aGUgZmlybXdhcmUgdXNpbmcgYSBjb21tYW5kLiBUaGlzIGlzIHZlcnkgaW1wb3J0YW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29tbWFuZCBpcyBleHBlY3RpbmcgYW5kIGlmIHRoaXMgYGxlbmAgbWlzbWF0Y2ggaXMgaW50ZW5kZWQuICBJIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYF9zZXRfYnRfdHhfcG93ZXJgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19zZXRfYnRfdHhfcG93ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozODUyOnN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTMtXHRcdFx0ICAgICB1OCByZl9iYW5kLCB1OCBsZXZlbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDU2PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxNjUtXHRcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIHBhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQxNjY6XHRcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2Ny1cdFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzU0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgcnR3ODkgQ29leCBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIGBfc2V0X2J0X3R4X3Bvd2VyYCwgSSBzZWUgdGhleSYjMzk7dmUgc2ltcGxpZmllZCB0aGUgY2hlY2suIEl0IHVzZWQgdG8gYmUgYGlmIChidC0mZ3Q7YmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKWAgYW5kIG5vdyBpdCYjMzk7cyBqdXN0IGBpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBzY2FuIGZvciBwb3RlbnRpYWwgaXNzdWVzIGludHJvZHVjZWQgYnkgdGhpcy4gQW55dGltZSB5b3UgY2hhbmdlIGEgY29uZGl0aW9uYWwgbGlrZSB0aGF0LCB5b3UgbmVlZCB0byBiZSB2ZXJ5IGNhcmVmdWwuCgpNeSBmaXJzdCBsaW5lIG9mIGF0dGFjayBpcyB0byBsb29rIGZvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgcGxhY2VzIHdoZXJlIHdlIG1pZ2h0IG5vdyBiZSByZWFkaW5nIGZyb20gbWVtb3J5IHRoYXQgd2Ugc2hvdWxkbiYjMzk7dCBiZSwgYW55IGBjb3B5X3RvX3VzZXJgIGNhbGxzIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIG9yIGFueSB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMuIExldCYjMzk7cyBzZWUuLi4gdGhlIGB1OCBidWZbMl0gPSB7fTtgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCwgd2hpY2ggaXMgZ29vZC4gV2UgYXNzaWduIHZhbHVlcyB0byBgYnVmWzBdYCBhbmQgYGJ1ZlsxXWAsIHRoZSBgbGVuYCB2YXJpYWJsZSBpcyBlaXRoZXIgMSBvciBgU0VUX1JGX1BBUkFfQVhfTEVOYCAod2hpY2ggaXMgMiksIHNvIHRoZSBhcnJheSBpcyBmdWxseSB3cml0dGVuIHRvIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLiBJbXBvcnRhbnRseSwgbm90aGluZyBpcyBldmVyIGNvcGllZCB0byB1c2Vyc3BhY2UsIHNvIHdlJiMzOTtyZSBzYWZlIHRoZXJlLiBJJiMzOTttIG5vdCBzZWVpbmcgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBpbnRlcm5hbCBkcml2ZXIgbG9naWMgY2hhbmdlIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGNvZXggZHJpdmVyLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2UgYWxsb3dzIGByZl9iYW5kID09IDBgIHRvICpub3QqIGJhaWwgb3V0IGVhcmx5IGZyb20gdGhlIGZ1bmN0aW9uLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBfc2V0X3JmX3RyeF9wYXJhYCBhcm91bmQgbGluZSA0MTY2IGFzIHdlbGwuIEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIGV4dHJhIGNhdXRpb3VzIHdoZW4gZGVhbGluZyB3aXRoIHJhZGlvLXJlbGF0ZWQgcGFyYW1ldGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDE1MDpcdFx0XHRcdFx0cGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfdHhfcG93ZXI7XG40MTUxOlx0XHRcdFx0XHRwYXJhLndsX3J4X2dhaW5baV0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLndsX3J4X2dhaW47XG40MTUyOlx0XHRcdFx0fVxuNDE1MzpcdFx0XHRcdGZvciAoaSA9IEJUQ19CVF8xU1Q7IGkgXHUwMDNjIEJUQ19BTExfQlQ7IGkmIzQzOyYjNDM7KSB7XG40MTU0Olx0XHRcdFx0XHRwYXJhLmJ0X3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcbjQxNTU6XHRcdFx0XHRcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0uYnRfcnhfZ2FpbjtcbjQxNTY6XHRcdFx0XHR9XG40MTU3Olx0XHRcdH1cbjQxNTg6XHRcdH1cbjQxNTk6XHRcbjQxNjA6XHRcdGlmIChkbS1cdTAwM2VmZGR0X3RyYWluKSB7XG40MTYxOlx0XHRcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIDEsIFJUVzg5X1BIWV8wKTtcbjQxNjI6XHRcdFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBiaWQsIEJUQ19XU0NCX1JYR0FJTiwgdHJ1ZSk7XG40MTYzOlx0XHR9IGVsc2Uge1xuNDE2NDpcdFx0XHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcbjQxNjU6XHRcdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuNDE2NjpcdFx0XHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcbjQxNjc6XHRcdFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xuNDE2ODpcdFx0fVxuNDE2OTpcdFxuNDE3MDpcdG5leHQ6XG40MTcxOlx0XHRpZiAoIWJ0LVx1MDAzZWVuYWJsZS5ub3cgfHwgZG0tXHUwMDNld2xfb25seSB8fCB3bF9zbWFwLVx1MDAzZXJmX29mZiB8fFxuNDE3MjpcdFx0ICAgIHdsX3NtYXAtXHUwMDNlbHBzID09IEJUQ19MUFNfUkZfT0ZGIHx8IG1vZGUgPT0gQlRDX1dMSU5LX1YwXzVHIHx8XG40MTczOlx0XHQgICAgKHJ0d2Rldi1cdTAwM2VkYmNjX2VuIFx1MDAyNlx1MDAyNiByLVx1MDAzZWRiY2NfMmdfcGh5ICE9IFJUVzg5X1BIWV8xKSlcbjQxNzQ6XHRcdFx0d2xfc3RiX2NoZyA9IDA7XG40MTc1Olx0XHRlbHNlXG40MTc2Olx0XHRcdHdsX3N0Yl9jaGcgPSAxO1xuNDE3NzpcdFxuNDE3ODpcdFx0aWYgKHdsX3N0Yl9jaGcgIT0gZG0tXHUwMDNld2xfc3RiX2NoZykge1xuNDE3OTpcdFx0XHRkbS1cdTAwM2V3bF9zdGJfY2hnID0gd2xfc3RiX2NoZztcbjQxODA6XHRcdFx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlYnRjX3dsX3MxX3N0YW5kYnkocnR3ZGV2LCBkbS1cdTAwM2V3bF9zdGJfY2hnKTtcbjQxODE6XHRcdH1cbjQxODI6XHR9XG40MTgzOlx0XG40MTg0Olx0c3RhdGljIHZvaWQgX3VwZGF0ZV9idGNfc3RhdGVfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbjQxODU6XHR7XG40MTg2Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuNDE4NzpcdFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG40MTg4Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG40MTg5Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTU2CgkJCQkJCQlvdXRwdXQ6IDE2MAoJCQkJCQkJdGhvdWdodHM6IDIwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBTYWZldHkqKgoKT2theSwgc28gSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBqdXN0IHJlbW92aW5nIGB8fCAhcmZfYmFuZGAgZnJvbSB0aGF0IGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IHRoZSBsb2NhbCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHByb3Blcmx5IOKAkyBgYnVmYCBpcyB6ZXJvZWQgb3V0IGFuZCBgbGVuYCBpcyBzZXQgY29ycmVjdGx5LiBJbXBvcnRhbnRseSwgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSwgd2hpY2ggaXMgZ29vZC4gVGhlcmUmIzM5O3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgZXZlbiBpbmZsdWVuY2luZyBjb250cm9sIGZsb3cuIE5vIG5ldyBhbGxvY2F0aW9ucyBvciBwYWRkaW5nIGlzc3VlcywgZWl0aGVyLgoKTm93LCBsZXQgbWUgc3lzdGVtYXRpY2FsbHkgcnVuIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoxLiAgKipLZXJuZWwgZGF0YSB0byB1c2Vyc3BhY2U/KiogTm9wZSwgbm90IGhlcmUuIFRoaXMgaXMgYSBjbGVhbiBiaWxsIG9mIGhlYWx0aC4KMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgZGF0YT8qKiBBYnNvbHV0ZWx5IG5vdC4gVGhlIHZhcmlhYmxlcyBpbnZvbHZlZCBhcmUgaW5pdGlhbGl6ZWQuCjMuICAqKkNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/KiogTm8gZGljZS4gRXZlcnl0aGluZyBzZWVtcyBzdHJhaWdodGZvcndhcmQgaGVyZS4KNC4gICoqQm91bmRzIGNoZWNrIHZ1bG5lcmFiaWxpdGllcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhY2Nlc3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/KiogTm90IGF0IGFsbC4gVGhlIGJvdW5kcyBjaGVja3Mgc2VlbSByb2J1c3QuCgpTbywgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBMZXQmIzM5O3MgZ2V0IHRoZXNlIHJlc3VsdHMgc2V0LiBUaGlzIGlzIGEgc2ltcGxlIGFuZCBzYWZlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgYHx8ICFyZl9iYW5kYCBjaGVjayBmcm9tIHRoZSBlYXJseSByZXR1cm4gY29uZGl0aW9uIGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIEFsbCB2YXJpYWJsZXMgd2l0aGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgIChzdWNoIGFzIGBidWZgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCBvbiB0aGUgc3RhY2sgKGB1OCBidWZbMl0gPSB7fTtgKSwgYW5kIGByZl9iYW5kYCBpcyBwYXNzZWQgYnkgdmFsdWUgYXMgYSBgdThgIHBhcmFtZXRlci4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIGB8fCAhcmZfYmFuZGAgY2hlY2sgZnJvbSB0aGUgZWFybHkgcmV0dXJuIGNvbmRpdGlvbiBpbiBgX3NldF9idF90eF9wb3dlcigpYCwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBBbGwgdmFyaWFibGVzIHdpdGhpbiBgX3NldF9idF90eF9wb3dlcigpYCAoc3VjaCBhcyBgYnVmYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgb24gdGhlIHN0YWNrIChgdTggYnVmWzJdID0ge307YCksIGFuZCBgcmZfYmFuZGAgaXMgcGFzc2VkIGJ5IHZhbHVlIGFzIGEgYHU4YCBwYXJhbWV0ZXIuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE3OjQyLjE0NDg3NjQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0MjczMjY1NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9zZXRfYnRfdHhfcG93ZXJcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlXCIsXG4gICAgXCJydHc4OV9idGNfYzJoX2hhbmRsZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgYHx8ICFyZl9iYW5kYCBjaGVjayBmcm9tIHRoZSBlYXJseSByZXR1cm4gY29uZGl0aW9uIGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIEFsbCB2YXJpYWJsZXMgd2l0aGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgIChzdWNoIGFzIGBidWZgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCBvbiB0aGUgc3RhY2sgKGB1OCBidWZbMl0gPSB7fTtgKSwgYW5kIGByZl9iYW5kYCBpcyBwYXNzZWQgYnkgdmFsdWUgYXMgYSBgdThgIHBhcmFtZXRlci4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTc6NDIuMTQ0ODgwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4NTk5NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmUwODI1YWNmZTMwY2I0ZmFmOWI2MDIyMTFmNTllOTQzOTUwMmE2MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXFxuaW5kZXggNWE5ZGM0ZDhhMDBiYS4uZjQyYTZjYzNlYjdhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXFxuQEAgLTM4NTksNyArMzg1OSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG4gXFx0dTggYnVmWzJdID0ge307XFxuIFxcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcXG4gXFxuLVxcdGlmIChidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKVxcbitcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKGJ0LVxcdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxNzo0Mi41NjQwNDg0MzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjkzODIwNjU3MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9zZXRfYnRfdHhfcG93ZXJcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRcIixcbiAgICBcInJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlXCIsXG4gICAgXCJydHc4OV9idGNfYzJoX2hhbmRsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGV4ZWN1dGFibGUgY29udHJvbCBmbG93IGluIFJlYWx0ZWsgcnR3ODkgV2ktRmkgY29leGlzdGVuY2UgbG9naWMgKF9zZXRfYnRfdHhfcG93ZXIpIGJ5IHJlbW92aW5nIHRoZSByZl9iYW5kIGd1YXJkIGNoZWNrLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChlLmcuIFJUVzg5Xzg4NTJBVSkgYW5kIG1hYzgwMjExIGludGVyZmFjZXMsIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZlMDgyNWFjZmUzMGNiNGZhZjliNjAyMjExZjU5ZTk0Mzk1MDJhNjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLmY0MmE2Y2MzZWI3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0zODU5LDcgKzM4NTksNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG4gXHR1OCBidWZbMl0gPSB7fTtcbiBcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbiBcbi1cdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpXG4rXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoYnQtXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE3OjQyLjU2NDA0OTg5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NDkzNTAxNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIFN5emthbGxlciBGdXp6aW5nOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIHNjcnV0aW5pemUgYSBwYXRjaCBhcHBsaWVkIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyBzYWZldHkuIEdpdmVuIHRoYXQgdGhpcyBpcyBhYm91dCBldmFsdWF0aW5nIGEga2VybmVsIHBhdGNoIGZvciBzeXprYWxsZXIgZnV6emluZywgdGhpcyBpcyBhIGNvbXBsZXRlbHkgc3RhbmRhcmQgZGV2ZWxvcGVyL1FBIHRhc2suIE5vIHJlZCBmbGFncyB0aGVyZS5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgdGVjaG5pY2FsIGRldGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNoYW5nZXMgYW5kIGRldGVybWluZSBob3cgcmVhY2hhYmxlIHRoZSBtb2RpZmllZCBjb2RlIGlzLiBJJ2xsIHByb2JhYmx5IHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBvciBvcHBvcnR1bml0aWVzIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTMwLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MDAuMDU3NTU0MDAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY2MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4NTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM4NTA6XFx0fVxcbjM4NTE6XFx0XFxuMzg1MjpcXHRzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXFxuMzg1MzpcXHRcXHRcXHRcXHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxcbjM4NTQ6XFx0e1xcbjM4NTU6XFx0XFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbjM4NTY6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4zODU3OlxcdFxcdHU4IGgyY19mdW5jID0gU0VUX0JUX1RYX1BXUjtcXG4zODU4OlxcdFxcdHU4IGksIGlkX3N0YXJ0LCBpZF9zdG9wO1xcbjM4NTk6XFx0XFx0dTggYnVmWzJdID0ge307XFxuMzg2MDpcXHRcXHR1OCBsZW4gPSBzaXplb2YoKmJ1Zik7XFxuMzg2MTpcXHRcXG4zODYyOlxcdFxcdGlmIChidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxcbjM4NjM6XFx0XFx0XFx0cmV0dXJuO1xcbjM4NjQ6XFx0XFxuMzg2NTpcXHRcXHRpZiAoYnQtXFx1MDAzZXJmX3BhcmEudHhfcHdyX2ZyZWVydW4gPT0gbGV2ZWwpXFxuMzg2NjpcXHRcXHRcXHRyZXR1cm47XFxuMzg2NzpcXHRcXG4zODY4OlxcdFxcdGlmIChiaWQgPT0gQlRDX0FMTF9CVCkge1xcbjM4Njk6XFx0XFx0XFx0aWRfc3RhcnQgPSBCVENfQlRfMVNUO1xcbjM4NzA6XFx0XFx0XFx0aWRfc3RvcCA9IEJUQ19CVF8yTkQ7XFxuMzg3MTpcXHRcXHR9IGVsc2Uge1xcbjM4NzI6XFx0XFx0XFx0aWRfc3RhcnQgPSBiaWQ7XFxuMzg3MzpcXHRcXHRcXHRpZF9zdG9wID0gYmlkO1xcbjM4NzQ6XFx0XFx0fVxcbjM4NzU6XFx0XFxuMzg3NjpcXHRcXHRmb3IgKGkgPSBpZF9zdGFydDsgaSBcXHUwMDNjPSBpZF9zdG9wOyBpKyspIHtcXG4zODc3OlxcdFxcdFxcdGlmIChpID09IEJUQ19CVF8yTkQpIHtcXG4zODc4OlxcdFxcdFxcdFxcdGlmICghKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlcGFyYV92ZXIgXFx1MDAyNiBCVENfRkVBVF9EVUFMX0JUKSlcXG4zODc5OlxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM4ODA6XFx0XFxuMzg4MTpcXHRcXHRcXHRcXHRidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MTtcXG4zODgyOlxcdFxcdFxcdFxcdGgyY19mdW5jIHw9IEJUX0gyQ19GVU5DX0JUMk5EO1xcbjM4ODM6XFx0XFx0XFx0fVxcbjM4ODQ6XFx0XFxuMzg4NTpcXHRcXHRcXHRidWZbMF0gPSAoczgpKC1sZXZlbCk7XFxuMzg4NjpcXHRcXHRcXHRidWZbMV0gPSByZl9iYW5kOyAgLyogYml0LW1hcDogYml0MS1cXHUwMDNlNUdIei82R2h6LCBiaXQwLVxcdTAwM2UyLjRHSHogKi9cXG4zODg3OlxcdFxcbjM4ODg6XFx0XFx0XFx0aWYgKCFmb3JjZV9leGVjIFxcdTAwMjZcXHUwMDI2ICFidGMtXFx1MDAzZWNsaV9oMmNfY21kKSB7XFxuMzg4OTpcXHRcXHRcXHRcXHRpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjAwLjA1NzkyMTg1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNzE4NDE2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgcnR3ODkgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBydHc4OWAgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IGl0IGlzIGFuZCwgY3JpdGljYWxseSwgd2hhdCBidXMgaXQncyB0aWVkIHRvLiBUaGUga2VybmVsIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEknbGwgc2tpcCB0aGF0IGZvciBub3cgYW5kIGdvIHN0cmFpZ2h0IHRvIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIHRoZSBgTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeSBzaG91bGQgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGluZm9ybWF0aW9uIEknbSBhZnRlci4gYE1ha2VmaWxlYCB3aWxsIHJldmVhbCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgbGlrZWx5IHRoZSBkZXBlbmRlbmNpZXMsIHdoaWxlIGBLY29uZmlnYCB3aWxsIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQsIGxpa2VseSwgaGludCBhdCB0aGUgYnVzIHR5cGUuIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgZGl2ZTsgSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBzb2xpZCBvdmVydmlldyBpbiBqdXN0IGEgY291cGxlIG9mIG1pbnV0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjAyLjMyOTc2NTY2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI0MDU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfUlRXODlfQ09SRSkgKz0gcnR3ODlfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00LXJ0dzg5X2NvcmUteSArPSBjb3JlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT0yMz1ydHc4OV9jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfUlRXODlfODg1MUIpICs9IHJ0dzg5Xzg4NTFiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTI2LXJ0dzg5Xzg4NTFiLW9ianMgOj0gcnR3ODg1MWIubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTFCRSkgKz0gcnR3ODlfODg1MWJlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTMyLXJ0dzg5Xzg4NTFiZS1vYmpzIDo9IHJ0dzg4NTFiZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19SVFc4OV84ODUxQlUpICs9IHJ0dzg5Xzg4NTFidS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0zNS1ydHc4OV84ODUxYnUtb2JqcyA6PSBydHc4ODUxYnUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfUlRXODlfODg1MkEpICs9IHJ0dzg5Xzg4NTJhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTM4LXJ0dzg5Xzg4NTJhLW9ianMgOj0gcnR3ODg1MmEubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJBRSkgKz0gcnR3ODlfODg1MmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTQ0LXJ0dzg5Xzg4NTJhZS1vYmpzIDo9IHJ0dzg4NTJhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19SVFc4OV84ODUyQVUpICs9IHJ0dzg5Xzg4NTJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS00Ny1ydHc4OV84ODUyYXUtb2JqcyA6PSBydHc4ODUyYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJfQ09NTU9OKSArPSBydHc4OV84ODUyYl9jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNTAtcnR3ODlfODg1MmJfY29tbW9uLW9ianMgOj0gcnR3ODg1MmJfY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCKSArPSBydHc4OV84ODUyYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01My1ydHc4OV84ODUyYi1vYmpzIDo9IHJ0dzg4NTJiLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19SVFc4OV84ODUyQkUpICs9IHJ0dzg5Xzg4NTJiZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS01OS1ydHc4OV84ODUyYmUtb2JqcyA6PSBydHc4ODUyYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfUlRXODlfODg1MkJVKSArPSBydHc4OV84ODUyYnUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjItcnR3ODlfODg1MmJ1LW9ianMgOj0gcnR3ODg1MmJ1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJCVCkgKz0gcnR3ODlfODg1MmJ0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTY1LXJ0dzg5Xzg4NTJidC1vYmpzIDo9IHJ0dzg4NTJidC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfUlRXODlfODg1MkJURSkgKz0gcnR3ODlfODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MC1ydHc4OV84ODUyYnRlLW9ianMgOj0gcnR3ODg1MmJ0ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19SVFc4OV84ODUyQykgKz0gcnR3ODlfODg1MmMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzMtcnR3ODlfODg1MmMtb2JqcyA6PSBydHc4ODUyYy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfUlRXODlfODg1MkNFKSArPSBydHc4OV84ODUyY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtNzktcnR3ODlfODg1MmNlLW9ianMgOj0gcnR3ODg1MmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX1JUVzg5Xzg4NTJDVSkgKz0gcnR3ODlfODg1MmN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgyLXJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19SVFc4OV84OTIyQSkgKz0gcnR3ODlfODkyMmEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODUtcnR3ODlfODkyMmEtb2JqcyA6PSBydHc4OTIyYS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODlfODkyMkFFKSArPSBydHc4OV84OTIyYWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODktcnR3ODlfODkyMmFlLW9ianMgOj0gcnR3ODkyMmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTE6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBVSkgKz0gcnR3ODlfODkyMmF1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkyLXJ0dzg5Xzg5MjJhdS1vYmpzIDo9IHJ0dzg5MjJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjk0Om9iai0kKENPTkZJR19SVFc4OV84OTIyRCkgKz0gcnR3ODlfODkyMmQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTUtcnR3ODlfODkyMmQtb2JqcyA6PSBydHc4OTIyZC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5ODpvYmotJChDT05GSUdfUlRXODlfODkyMkRFKSArPSBydHc4OV84OTIyZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTktcnR3ODlfODkyMmRlLW9ianMgOj0gcnR3ODkyMmRlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9MTAzPXJ0dzg5X2NvcmUtJChDT05GSUdfUlRXODlfTEVEU19NQykgKz0gbGVkX21jLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwNTpvYmotJChDT05GSUdfUlRXODlfUENJKSArPSBydHc4OV9wY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA2LXJ0dzg5X3BjaS15IDo9IHBjaS5vIHBjaV9iZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgKz0gcnR3ODlfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTEwOS1ydHc4OV91c2IteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTU9c3RhdGljIHUzMiBydHc4OV9hY3BpX3RyYXZlcnNhbF9vYmplY3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjQ6XFx0c3dpdGNoIChvYmotXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNS1cXHRjYXNlIEFDUElfVFlQRV9JTlRFR0VSOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2LVxcdFxcdGlmIChwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6Mjc6XFx0XFx0XFx0cG9zW2xlbl0gPSBvYmotXFx1MDAzZWludGVnZXIudmFsdWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMS1cXHRjYXNlIEFDUElfVFlQRV9CVUZGRVI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzI6XFx0XFx0aWYgKHVubGlrZWx5KG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCA9PSAwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMzLVxcdFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0FDUEksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zOC1cXHRcXHRpZiAocG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM5OlxcdFxcdFxcdG1lbWNweShwb3MsIG9iai1cXHUwMDNlYnVmZmVyLnBvaW50ZXIsIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NDE6XFx0XFx0bGVuICs9IG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00Mi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00My1cXHRjYXNlIEFDUElfVFlQRV9QQUNLQUdFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjQ0OlxcdFxcdGlmICh1bmxpa2VseShvYmotXFx1MDAzZXBhY2thZ2UuY291bnQgPT0gMCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy00NS1cXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG9iai1cXHUwMDNlcGFja2FnZS5jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NTE6XFx0XFx0XFx0ZWxtID0gXFx1MDAyNm9iai1cXHUwMDNlcGFja2FnZS5lbGVtZW50c1tpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy01Mi1cXHRcXHRcXHR0bXAgPSBwb3MgPyBwb3MgKyBsZW4gOiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtNjItXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSwgXFxcIiVzOiB1bmhhbmRsZWQgdHlwZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6NjM6XFx0XFx0XFx0ICAgIF9fZnVuY19fLCBvYmotXFx1MDAzZXR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTY0LVxcdFxcdGdvdG8gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTMxPWludCBydHc4OV9hY3BpX2RzbV9nZXRfdmFsdWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1bmlvbiBhY3BpX29iamVjdCAqb2JqLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTMzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxMzQ6XFx0aWYgKG9iai1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTEzNS1cXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19BQ1BJLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjEzNjpcXHRcXHRcXHQgICAgXFxcImFjcGk6IGV4cGVjdCBpbnRlZ2VyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTQwOlxcdCp2YWx1ZSA9ICh1OClvYmotXFx1MDAzZWludGVnZXIudmFsdWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTQxLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MTUyPWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHooc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE2MDpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjEtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoxNjI6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MTY2OlxcdGxlbiA9IG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNjctXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqcHRyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjE3MzpcXHRwdHIgPSAodHlwZW9mKHB0cikpb2JqLVxcdTAwM2VidWZmZXIucG9pbnRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0xNzQtXFx0aWYgKCFjaGtfYWNwaV9wb2xpY3lfNmdoel9zaWcocHRyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjA0PWludCBydHc4OV9hY3BpX2RzbV9nZXRfcG9saWN5XzZnaHpfc3Aoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjIxMTpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTItXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyMTM6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTQtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjE3OlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjE4LVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjI0OlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTIyNS1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3NwX3NpZyhwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYz0yNDg9aW50IHJ0dzg5X2FjcGlfZHNtX2dldF9wb2xpY3lfNmdoel92bHAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI1NTpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTYtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzoyNTc6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNTgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjYxOlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjYyLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MjY4OlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTI2OS1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV82Z2h6X3ZscF9zaWcocHRyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM9MjkxPXN0YXRpYyBpbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMjk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjI5ODpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0yOTktXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozMDA6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzA0OlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzA1LVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzExOlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTMxMi1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV90YXNfc2lnKHB0cikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jPTMzNj1pbnQgcnR3ODlfYWNwaV9kc21fZ2V0X3BvbGljeV9yZWdfcnVsZXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jOjM0MzpcXHRpZiAob2JqLVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9CVUZGRVIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDQtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQUNQSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYzozNDU6XFx0XFx0XFx0ICAgIFxcXCJhY3BpOiBleHBlY3QgYnVmZmVyIGJ1dCB0eXBlOiAlZFxcXFxuXFxcIiwgb2JqLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzQ5OlxcdGJ1Zl9sZW4gPSBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmMtMzUwLVxcdGlmIChidWZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpwdHIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2FjcGkuYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9hY3BpLmM6MzU2OlxcdHB0ciA9ICh0eXBlb2YocHRyKSlvYmotXFx1MDAzZWJ1ZmZlci5wb2ludGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYWNwaS5jLTM1Ny1cXHRpZiAoIWNoa19hY3BpX3BvbGljeV9yZWdfcnVsZXNfc2lnKHB0cikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MDIuMzc4MDEwNDg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk3ODc4MzkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBTdXBwb3J0IGFuZCBSZWFsdGVrIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5vdGljZWQgdGhhdCB0aGUgcnR3ODkgZHJpdmVyIGhhcyBzb21lIGFwcGFyZW50IFVTQiBzdXBwb3J0LCBpbmRpY2F0ZWQgYnkgdGhvc2UgYENPTkZJR19SVFc4OV9VU0JgIGFuZCByZWxhdGVkIGNvbmZpZyBvcHRpb25zLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzeXprYWxsZXIuIENhbiB3ZSBsZXZlcmFnZSB0aGlzIFVTQiBzdXBwb3J0PyBDYW4gd2UgKmVtdWxhdGUqIHRoZXNlIFVTQiBkZXZpY2VzIHVzaW5nIFVTQiBSYXcgR2FkZ2V0IHdpdGhpbiBzeXprYWxsZXIsIGxpa2UgY3JlYXRpbmcgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGdhZGdldHM/IFRoaXMgY291bGQgb3BlbiB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy5cblxuQmVmb3JlIGRpdmluZyBkZWVwLCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgVVNCIGRldmljZXMgYXJlIGhhbmRsZWQgd2l0aGluIHN5emthbGxlci4gSSBzaG91bGQgYWxzbyByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHdpcmVsZXNzIFVTQiBkcml2ZXJzLCBpbiBwYXJ0aWN1bGFyLCBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0uXG5cbk5vdywgaG9sZCBvbi4gQmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIHdhbnQgdG8gaW52ZXN0aWdhdGUgdGhlIGBfc2V0X2J0X3R4X3Bvd2VyYCBmdW5jdGlvbiwgYW5kIGhvdyBjb2V4LmMgaXMgdXNlZC4gSXMgdGhlcmUgYSBjYWxsIHN0YWNrIG9yIGRlcGVuZGVuY3kgSSdtIG1pc3Npbmc/IEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IGBfc2V0X2J0X3R4X3Bvd2VyYCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcGljdHVyZSwgYW5kIHNwZWNpZmljYWxseSwgaG93IGBjb2V4LmNgIGdldHMgaW52b2x2ZWQuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MDcuMzU2Nzk2Mjc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDIwNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9zZXRfYnRfdHhfcG93ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zODIxPXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1MjpzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1My1cXHRcXHRcXHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDA1Nj1zdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxNjUtXFx0XFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQxNjY6XFx0XFx0X3NldF9idF90eF9wb3dlcihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2Ny1cXHRcXHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjA3LjQwNDIxOTQ1N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NTE2MDAyNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlBlZXJpbmcgRGVlcGVyIGludG8gdGhlIFJhZGlvIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyByYWRpbyBjb25maWd1cmF0aW9uIGlzIGJlaW5nIGhhbmRsZWQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlLiBJJ20gdGhpbmtpbmcsIGxldCdzIGV4cGxvcmUgd2hlcmUgYF9zZXRfcmZfdHJ4X3BhcmFgIGlzIGFjdHVhbGx5IHVzZWQgYmV5b25kIHRoaXMgaW1tZWRpYXRlIGNvbnRleHQsIG9yIHBlcmhhcHMgdHJhY2UgdGhlIGNhbGxzIHRvIGBfc2V0X2J0X3R4X3Bvd2VyYCwgZ2l2ZW4gdGhlaXIgbGlrZWx5IHJlbGF0aW9uc2hpcC4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QgaXMga2V5LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgcGFyYW1ldGVycyB0aGV5J3JlIHNldHRpbmcgYXJlIHVsdGltYXRlbHkgdXNlZC5cblxuSSBoYXZlIGEgZmVlbGluZyB0aGF0IGNvZXguYyBtaWdodCBiZSByZWxldmFudCBoZXJlIGdpdmVuIG15IHBhc3QgZXhwZXJpZW5jZSwgc28gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgY29kZSBhbmQgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSA0MTY2IGluIHRoYXQgZmlsZS4gSXQncyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBjb2V4aXN0ZW5jZSBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcmFkaW8gcHJvdG9jb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwNywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjA5Ljg1NTgyMjI1OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDE1MDpcXHRcXHRcXHRcXHRcXHRwYXJhLndsX3R4X3Bvd2VyW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfdHhfcG93ZXI7XFxuNDE1MTpcXHRcXHRcXHRcXHRcXHRwYXJhLndsX3J4X2dhaW5baV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF9yeF9nYWluO1xcbjQxNTI6XFx0XFx0XFx0XFx0fVxcbjQxNTM6XFx0XFx0XFx0XFx0Zm9yIChpID0gQlRDX0JUXzFTVDsgaSBcXHUwMDNjIEJUQ19BTExfQlQ7IGkrKykge1xcbjQxNTQ6XFx0XFx0XFx0XFx0XFx0cGFyYS5idF90eF9wb3dlcltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyO1xcbjQxNTU6XFx0XFx0XFx0XFx0XFx0cGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0uYnRfcnhfZ2FpbjtcXG40MTU2OlxcdFxcdFxcdFxcdH1cXG40MTU3OlxcdFxcdFxcdH1cXG40MTU4OlxcdFxcdH1cXG40MTU5OlxcdFxcbjQxNjA6XFx0XFx0aWYgKGRtLVxcdTAwM2VmZGR0X3RyYWluKSB7XFxuNDE2MTpcXHRcXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCAxLCBSVFc4OV9QSFlfMCk7XFxuNDE2MjpcXHRcXHRcXHRfd3JpdGVfc2NiZChydHdkZXYsIGJpZCwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcXG40MTYzOlxcdFxcdH0gZWxzZSB7XFxuNDE2NDpcXHRcXHRcXHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcXG40MTY1OlxcdFxcdFxcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIHBhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcXG40MTY2OlxcdFxcdFxcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCB0cnVlLCBiaWQsIHJmX2JhbmQsIHBhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0pO1xcbjQxNjc6XFx0XFx0XFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xcbjQxNjg6XFx0XFx0fVxcbjQxNjk6XFx0XFxuNDE3MDpcXHRuZXh0OlxcbjQxNzE6XFx0XFx0aWYgKCFidC1cXHUwMDNlZW5hYmxlLm5vdyB8fCBkbS1cXHUwMDNld2xfb25seSB8fCB3bF9zbWFwLVxcdTAwM2VyZl9vZmYgfHxcXG40MTcyOlxcdFxcdCAgICB3bF9zbWFwLVxcdTAwM2VscHMgPT0gQlRDX0xQU19SRl9PRkYgfHwgbW9kZSA9PSBCVENfV0xJTktfVjBfNUcgfHxcXG40MTczOlxcdFxcdCAgICAocnR3ZGV2LVxcdTAwM2VkYmNjX2VuIFxcdTAwMjZcXHUwMDI2IHItXFx1MDAzZWRiY2NfMmdfcGh5ICE9IFJUVzg5X1BIWV8xKSlcXG40MTc0OlxcdFxcdFxcdHdsX3N0Yl9jaGcgPSAwO1xcbjQxNzU6XFx0XFx0ZWxzZVxcbjQxNzY6XFx0XFx0XFx0d2xfc3RiX2NoZyA9IDE7XFxuNDE3NzpcXHRcXG40MTc4OlxcdFxcdGlmICh3bF9zdGJfY2hnICE9IGRtLVxcdTAwM2V3bF9zdGJfY2hnKSB7XFxuNDE3OTpcXHRcXHRcXHRkbS1cXHUwMDNld2xfc3RiX2NoZyA9IHdsX3N0Yl9jaGc7XFxuNDE4MDpcXHRcXHRcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZWJ0Y193bF9zMV9zdGFuZGJ5KHJ0d2RldiwgZG0tXFx1MDAzZXdsX3N0Yl9jaGcpO1xcbjQxODE6XFx0XFx0fVxcbjQxODI6XFx0fVxcbjQxODM6XFx0XFxuNDE4NDpcXHRzdGF0aWMgdm9pZCBfdXBkYXRlX2J0Y19zdGF0ZV9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbjQxODU6XFx0e1xcbjQxODY6XFx0XFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbjQxODc6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG40MTg4OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbjQxODk6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODowOS44NTYyMjgxNjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzk0MDAwNjEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zLCBgX3NldF9yZl90cnhfcGFyYWAgYW5kIGBfc2V0X2J0X3R4X3Bvd2VyYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2Ugd2hlcmUgdGhleSBhcmUgYmVpbmcgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhlIG9wZXJhdGlvbnMgdGhleSBwZXJmb3JtLlxuXG4qKkRlZXAgRGl2ZSBJbnRvIEZ1bmN0aW9uIENhbGxzKipcblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uZHVjdCBhIGNvZGUtd2lkZSBzZWFyY2guIEEgc2ltcGxlIGBncmVwYCBmb3IgYF9zZXRfcmZfdHJ4X3BhcmFgIHdpbGwgZG8gdGhlIHRyaWNrLiBUaGF0IHNob3VsZCByZXZlYWwgYWxsIGluc3RhbmNlcyB3aGVyZSB0aGUgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY2FsbGluZyBjb2RlIHRvIGRlZHVjZSB0aGUgc2NlbmFyaW9zIHdoZXJlIHJhZGlvIGZyZXF1ZW5jeSB0cmFuc21pdC9yZWNlaXZlIHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgb3Igd2hlcmUgQmx1ZXRvb3RoIHRyYW5zbWl0IHBvd2VyIGlzIGJlaW5nIGFkanVzdGVkLiBUaGlzIGtpbmQgb2YgY29udGV4dHVhbCB1bmRlcnN0YW5kaW5nIGlzIGZ1bmRhbWVudGFsIHRvIGdyYXNwIHRoZSBvdmVyYWxsIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGdyZXAgc2VhcmNoIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MTgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjEzLjc5NjIzNzM4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MjY2MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3NldF9yZl90cnhfcGFyYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM5ODg9c3RhdGljIHZvaWQgX3NldF9idF9jb3J4X3RhYmxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAyODpzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhX3Y5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA1NjpzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQwODAtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDgxOlxcdFxcdFxcdF9zZXRfcmZfdHJ4X3BhcmFfdjkocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDgyLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTY2Nzk9c3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjY5NC1cXHRfc2V0X2J0X3J4X2FnYyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjY2OTU6XFx0X3NldF9yZl90cnhfcGFyYShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2OTYtXFx0X3NldF9idF9yeF9zY2FuX3ByaShydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODoxMy44NDM2Njk5ODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTA4NTUxMTg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIEJhY2sgaW50byB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIENhbGwgQ2hhaW4qKlxuXG5BbHJpZ2h0LCBJJ20gY2lyY2xpbmcgYmFjayBvbiB0aGlzLiBCZWZvcmUgSSBjb21taXQgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gcmV2aXNpdCB0aGUgY2FsbCBncmFwaCBmb3IgYF9zZXRfYnRfdHhfcG93ZXJgLiBJIHdhbnQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3Igc2lkZSBlZmZlY3RzIGZyb20gdXBzdHJlYW0gb3IgZG93bnN0cmVhbSBjYWxscyB0aGF0IEkgZGlkbid0IGluaXRpYWxseSBmYWN0b3IgaW4uIEl0J3MgZWFzeSB0byBnZXQgdHVubmVsIHZpc2lvbiB3aGVuIGZvY3VzaW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIHNvIGEgZnJlc2ggbG9vayBhdCB0aGUgaW1tZWRpYXRlIGNhbGxlcnMgaXMgdGhlIGZpcnN0IHN0ZXAuXG5cbldhaXQgYSBzZWNvbmQsIGEgbW9yZSB0aG9yb3VnaCBhcHByb2FjaCBpcyB3YXJyYW50ZWQgaGVyZS4gSW5zdGVhZCBvZiBqdXN0IGZvY3VzaW5nIG9uICp0aG9zZSoga25vd24gY2FsbGVycywgbGV0J3MgY2FzdCBhIHdpZGVyIG5ldC4gQSBgZ3JlcGAgYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UgdG8gc2VlICpldmVyeSogaW5zdGFuY2Ugb2YgYF9zZXRfYnRfdHhfcG93ZXJgIGlzIGluIG9yZGVyLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSB1c2FnZSBvZiB0aGF0IGZ1bmN0aW9uLCBpbmNsdWRpbmcgcG90ZW50aWFsbHkgaW5kaXJlY3QgY2FsbHMgb3IgaW5zdGFuY2VzIEkndmUgZm9yZ290dGVuIGFib3V0LiBUaGlzIGNvbXByZWhlbnNpdmUgc2VhcmNoIHNob3VsZCB1bmNvdmVyIGFueSBvYnNjdXJlIG9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzIyMiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjE4LjkyOTE4NDYyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMTU2ODI0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfc2V0X2J0X3R4X3Bvd2VyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTgzMT1zdGF0aWMgdm9pZCBydHdfY29leF91cGRhdGVfd2xfY2hfaW5mbyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjg4MTpzdGF0aWMgdm9pZCBydHdfY29leF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggYnRfcHdyX2RlY19sdmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtODgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jPTkxNT1zdGF0aWMgdm9pZCBydHdfY29leF9zZXRfcmZfcGFyYShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9jb2V4LmMtOTI1LVxcdHJ0d19jb2V4X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfcHdyX2RlY19sdmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvY29leC5jOjkyNjpcXHRydHdfY29leF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLmJ0X3B3cl9kZWNfbHZsICsgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L2NvZXguYy05MjctXFx0cnR3X2NvZXhfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX2xvd19nYWluX2VuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozODUyOnN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUzLVxcdFxcdFxcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDU2PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2NS1cXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE2NjpcXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY3LVxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6MjAuNjQwNzU3MjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ4MDc4MzUyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHJ0dzg5IFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIGBydHc4OWAgaXMgdGhlIFJlYWx0ZWsgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRob3NlIDgwMi4xMWF4L2JlIGNoaXBzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpmdXp6YWJsZSogd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3Mg4oCTIHdoYXQgYnVzIHR5cGVzIGRvZXMgYHJ0dzg5YCBzdXBwb3J0P1xuXG5SaWdodCwgdGhlIGBNYWtlZmlsZWAgaW5kaWNhdGVzIGJvdGggUENJIGFuZCBVU0Igc3VwcG9ydC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgcnR3ODlfcGNpLm9gIGZvciBQQ0kgZGV2aWNlcyBhbmQgYHJ0dzg5X3VzYi5vYCBmb3IgVVNCIGRldmljZXMuIFRoZSBsaXN0ZWQgbW9kdWxlcyBzdWdnZXN0IHN1cHBvcnQgZm9yIGEgcmFuZ2Ugb2YgY2hpcHMuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB0aGVzZSBidXMgdHlwZXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHNldHVwcywgYXMgcGVyIHRoZSBwcm9tcHQncyBmaXJzdCBzZWN0aW9uPyBUaGUgcHJvbXB0IGlzIGNsZWFyOiBmdXp6aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIGNvZGUgKmNhbiogYWN0dWFsbHkgcnVuIGluIEdDRSBvciBRRU1VIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMuIFZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGlzIG91dCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuJ3QgZnV6eiBkcml2ZXJzIHRoYXQgcmVseSBvbiBhIHBoeXNpY2FsIEFTSUMgb3IgUENJZSBjYXJkIHRoYXQncyBub3QgZW11bGF0ZWQuXG5cbkJ1dCB3YWl0LCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgVVNCIGdhZGdldHMgKmFyZSogcmVhY2hhYmxlLiBFeGNlbGxlbnQuIFRoYXTigJlzIHByb21pc2luZy4gSSBrbm93IFVTQiBSYXcgR2FkZ2V0IGNhbiBiZSB1c2VkIGluIHN5emthbGxlci5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB0aGUgVVNCIHByb2JlIHByb2Nlc3MgYW5kIGBydHc4OV91c2JgIGRyaXZlciBiZSB0cmlnZ2VyZWQgdmlhIFVTQiBSYXcgR2FkZ2V0L1VTQiBlbXVsYXRpb24/IEkgbmVlZCB0byBjaGVjayB0aGUgVVNCIHByb2JlIHBhdGguIExldOKAmXMgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgVVNCIHByb2JlIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM0MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODoyNi4xMjE1NDI4MjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODM1OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02NC1cXHQuaWRfdGFibGUgPSBydHdfODg1MWJ1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjU6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjYtXFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODAtXFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmJ1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODAtXFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9MTM2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmN1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTM4LVxcdC5pZF90YWJsZSA9IHJ0d184ODUyY3VfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxMzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQwLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jPTc3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXFx0LmlkX3RhYmxlID0gcnR3Xzg5MjJhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgxLVxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jPTEyMDE9X19BVFRSSUJVVEVfR1JPVVBTKHJ0dzg5X3VzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTIwMzppbnQgcnR3ODlfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTIwNC1cXHRcXHQgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjk0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyOTU6RVhQT1JUX1NZTUJPTChydHc4OV91c2JfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmg9OTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcnR3ODlfdXNiICpydHc4OV91c2JfcHJpdihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmg6OTc6aW50IHJ0dzg5X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5oLTk4LVxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODoyNi4xNjkzODE4MTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ1MjM1ODM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBSVFc4OSBDb2V4aXN0ZW5jZSBMb2dpYyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250cm9sIGZsb3cgaGVyZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3Mga2lja2luZyBvZmYgdGhvc2UgY29leGlzdGVuY2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHRoZSBgX3NldF9idF90eF9wb3dlcmAgZnVuY3Rpb24sIGFuZCBhbHNvIHRoZSBgX2FjdGlvbl9jb21tb25gIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgbW9yZSBnZW5lcmFsIGBydHc4OV9idGNfYCBmdW5jdGlvbnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbnZvY2F0aW9uIHBhdGhzLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgY2FsbHMgb3JpZ2luYXRlIGZyb20uXG5cbkZpcnN0LCBsZXQgbWUgcnVuIGEgcXVpY2sgYGdyZXBgIHNlYXJjaCB3aXRoaW4gdGhlIGBydHc4OWAgZGlyZWN0b3J5LiBJJ2xsIGxvb2sgZm9yIGJvdGggYF9hY3Rpb25fY29tbW9uYCBhbmQgYW55dGhpbmcgdGhhdCBzdGFydHMgd2l0aCBgcnR3ODlfYnRjX2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgbGlzdCBvZiBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGhlbiwgSSdsbCBhbmFseXplIHRob3NlIGxvY2F0aW9ucyB0byBjb25zdHJ1Y3QgdGhlIGNvbnRyb2wgcGF0aHMuIE9uY2UgSSBoYXZlIHRoZSBjYWxsIGNoYWlucyBtYXBwZWQgb3V0LCBJJ2xsIGhhdmUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBjb2V4aXN0ZW5jZSBmZWF0dXJlcyBhcmUgYmVpbmcgdHJpZ2dlcmVkIGFuZCB3aGF0J3MgZHJpdmluZyB0aG9zZSBwb3dlciBhZGp1c3RtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY1NzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODozMS42MjE3NDI4NjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTA3NDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9hY3Rpb25fY29tbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NjYxOT1zdGF0aWMgdm9pZCBfc2V0X2Z3X3JlcG9ydF9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjY3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo2Njc5OnN0YXRpYyB2b2lkIF9hY3Rpb25fY29tbW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02NjgwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTcwMTE9c3RhdGljIHZvaWQgX3dyaXRlX3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBiaWQsIHUzMiB2YWwsIGJvb2wgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03MDU4LVxcdFxcdFxcdCAqIEp1c3QgdXBkYXRlIHdsLVxcdTAwM2VzY2JkW10gYW5kIHNldCB3bC1cXHUwMDNlc2NiZF9jaGdbXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3MDU5OlxcdFxcdFxcdCAqIG1vdmVkIFxcXCJXcml0ZSBzY29yZWJvYXJkIEkvT1xcXCIgdG8gIF9hY3Rpb25fY29tbW9uKClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03MDYwLVxcdFxcdFxcdCAqIF93cml0ZV9zY2JkIHdpbGwgYmUgZXhlY3V0ZWQgaWYgcnVuX2NvZXgoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODQxOT12b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2NDItXFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcXFwiW0JUQ10sICVzKCk6IGV4aXRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NjQzOlxcdF9hY3Rpb25fY29tbW9uKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY0NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjMxLjY2OTY1NTkyOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzYxNzQwNzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqRGVidWdnaW5nIGEgQ09FWCBDYWxsKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBfcnVuX2NvZXhgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRyYWNlIGluZGljYXRlcyB0aGF0IGl0IHVsdGltYXRlbHkgZ29lcyB0aHJvdWdoIGBfYWN0aW9uX2NvbW1vbihydHdkZXYpYC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY2hhaW4sIHRvIHVuZGVyc3RhbmQgaG93IHdlIGdvdCBoZXJlLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYF9ydW5fY29leGAgaXRzZWxmIGlzIGNhbGxlZCwgYW5kIGFsc28gdG8gY2hlY2sgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMsIGxpa2UgYHJ0dzg5X2J0Y19udGZ5X2AuIEknbGwgZG8gYSBxdWljayBjYWxsIGdyYXBoIGFuYWx5c2lzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgdG8gZWl0aGVyIG9mIHRoZXNlIGZ1bnRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIHdoYXQncyBkcml2aW5nIHRoaXMgQ09FWCBvcGVyYXRpb24uIFRoZW4sIEkgY2FuIHN0YXJ0IHRvIHplcm8gaW4gb24gd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQyNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjM5LjAzMTM5ODczM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczMDAwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3J1bl9jb2V4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTM2PWVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5OTk6c3RhdGljIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMDAwLVxcdFxcdCAgICAgIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNTgxPXZvaWQgYnRjX2Z3X2V2ZW50KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZXZ0X2lkLCB2b2lkICpkYXRhLCB1MzIgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYxMC1cXHRpZiAoIWJ0Yy1cXHUwMDNlZG0uc2NiZF9iMndfdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MTE6XFx0XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfU0NCRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYxMi1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz03NzE2PXZvaWQgcnR3ODlfY29leF9hY3QxX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM1LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzM2OlxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQUNUMV9XT1JLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3Mzk9dm9pZCBydHc4OV9jb2V4X2J0X2RldmluZm9fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NTEtXFx0YTJkcC1cXHUwMDNlcGxheV9sYXRlbmN5ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzUyOlxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fQlRfREVWSU5GT19XT1JLKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzUzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTc3NTU9dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NzQtXFx0XFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfQUxMX0JULCBCVENfV1NDQl9XTFJGSywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjc3NzU6XFx0XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9SRktfQ0hLX1dPUkspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3NzYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODQxOD1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NDE5OnZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg0MjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY3MT12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2ODMtXFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfQUxMX0JULCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4Njg0OlxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9QT1dFUk9GRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg3MjM9dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODc4MTpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfSU5JVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODc4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04Nzg0PXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4MTE6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NDQU5fU1RBUlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MTItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODgxND12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fZmluaXNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODgzNDpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfU0NBTl9GSU5JU0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODgzNz12b2lkIHJ0dzg5X2J0Y19udGZ5X3N3aXRjaF9iYW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4NTUtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg4NTY6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NXQkFORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODg1Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04ODU5PXZvaWQgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MjMtXFx0YnRjLVxcdTAwM2VkbS5jbnRfbm90aWZ5W0JUQ19OQ05UX1NQRUNJQUxfUEFDS0VUXSsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg5MjQ6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9OVEZZX1NQRUNJRklDX1BBQ0tFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODkyNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05MDAzPXN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGJpZCwgdTggKmJ1ZiwgdTMyIGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkxNTMtXFx0X3VwZGF0ZV9idF9jdHJsX2xwcyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkxNTQ6XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfSU5GTyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTE1NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05MTU3PXN0YXRpYyB2b2lkIF9udGZ5X3JvbGVfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTIyNjpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUk9MRV9JTkZPKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MjI3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTkzNDU9dm9pZCBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JmY3RybCByZl9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTM5NTpcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfUkFESU9fU1RBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzOTYtXFx0d2wtXFx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmX3ByZSA9IHdsLVxcdTAwM2VzdGF0dXMubWFwLnJmX29mZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk0MDA9c3RhdGljIGJvb2wgX250Znlfd2xfcmZrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X3BhdGgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NDUwLVxcdFxcdCAgICB3bC1cXHUwMDNlcmZrX2luZm8uc3RhdGUgPT0gQlRDX1dSRktfU1RPUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NDUxOlxcdFxcdFxcdF9ydW5fY29leChydHdkZXYsIEJUQ19SU05fTlRGWV9XTF9SRkspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk0NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz05NjU1PXZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk2ODktXFx0XFx0d2wtXFx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgPSBkYXRhLmRpcl9hbGw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTY5MDpcXHRcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX05URllfV0xfU1RBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NjkxLVxcdH0gZWxzZSBpZiAoYnRjLVxcdTAwM2VkbS5jbnRfbm90aWZ5W0JUQ19OQ05UX1dMX1NUQV0gXFx1MDAzZT1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk3Njc9dm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODE3LVxcdFxcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIGJpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTgxODpcXHRcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODE5LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTgzOS1cXHRcXHRcXHRfdXBkYXRlX2J0X2xlYXVkaW9faW5mbyhydHdkZXYsIGJpZCwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk4NDA6XFx0XFx0X3J1bl9jb2V4KHJ0d2RldiwgQlRDX1JTTl9VUERBVEVfQlRfTEVBVURJTkZPKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05ODQxLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxODozOS4wNzg3MDQwOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYxOTQ2ODk2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaS1GaSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBydHc4OWAsIGEgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBjb21wb25lbnQgKGBydHc4OV91c2JgKSwgdXRpbGl6aW5nIHN0YW5kYXJkIFVTQiBlbXVsYXRpb24gKHN5emthbGxlcikgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIGBtYWM4MDIxMWAgd2lyZWxlc3Mgc3Vic3lzdGVtcy4gVGhlIGNvZGUncyBkZWFsaW5nIHdpdGggdGhpbmdzIGxpa2UgYG5sODAyMTFgLCBzY2FuIHN0YXJ0L2ZpbmlzaCBldmVudHMsIHJhZGlvIHN0YXRlIGNoYW5nZXMsIGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLlxuXG5NeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBzcGVjaWZpYyBjaGFuZ2U6IHRoZSBtb2RpZmljYXRpb24gdG8gYF9zZXRfYnRfdHhfcG93ZXJgLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLlxuXG5gYGBjXG5zdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG5cdFx0XHQgICAgIHU4IHJmX2JhbmQsIHU4IGxldmVsKVxue1xuXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcblx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xuXHR1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDtcblx0dTggYnVmWzJdID0ge307XG5cdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcblxuLVx0aWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZClcbitcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG5cdFx0cmV0dXJuO1xuXG5cdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuXHRcdHJldHVybjtcbi4uLlxuYGBgXG5cblRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIGB8fCAhcmZfYmFuZGAuIEJlZm9yZSwgaWYgYGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV1gIHdhcyAwICpvciogaWYgYHJmX2JhbmRgIHdhcyB6ZXJvLCB0aGUgZnVuY3Rpb24gd291bGQgcmV0dXJuIGVhcmx5LiBOb3csIGl0IG9ubHkgcmV0dXJucyBlYXJseSBpZiBgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXWAgaXMgemVyby4gU28sIHdoYXQncyB0aGUgaW1wbGljYXRpb24/IEl0IG5vdyAqZXhlY3V0ZXMqIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJcyBgcmZfYmFuZGAgYSBiaXRtYXAgb3IgYW4gZW51bT8gV2hhdCdzIHRoZSBsZWdpdGltYXRlIHVzZSBvZiBhIHplcm8gdmFsdWUgZm9yIGByZl9iYW5kYD9cblxuVG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIGByZl9iYW5kYC4gU28sIEknbGwgY2hlY2sgd2hlcmUgYHJmX2JhbmRgIGdldHMgaXRzIHZhbHVlIGJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGluZyBmdW5jdGlvbiwgc28gbGV0J3MgY2hlY2sgYF9zZXRfcmZfdHJ4X3BhcmFgIGluIGBjb2V4LmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBjb250ZXh0IEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NDMuNjk4MTc1OTMxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDU1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MDU1OlxcdFxcbjQwNTY6XFx0c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuNDA1NzpcXHR7XFxuNDA1ODpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbjQwNTk6XFx0XFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbjQwNjA6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbjQwNjE6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG40MDYyOlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG40MDYzOlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICpyID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm87XFxuNDA2NDpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbjQwNjU6XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mbztcXG40MDY2OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFxcdTAwMjZ3bC1cXHUwMDNlc3RhdHVzLm1hcDtcXG40MDY3OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcGFyYTtcXG40MDY4OlxcdFxcdHU4IGJtb2RlID0gZG0tXFx1MDAzZXRkZF9iaW5kLndsX2xpbmtfbW9kZTtcXG40MDY5OlxcdFxcdHU4IHJmX2JhbmQgPSBkbS1cXHUwMDNldGRkX2JpbmQucmZfYmFuZDtcXG40MDcwOlxcdFxcdHU4IGksIHVsX3BhcmFfbnVtLCBkbF9wYXJhX251bTtcXG40MDcxOlxcdFxcdHU4IG1vZGUgPSBCVENfV0xJTktfTk9MSU5LO1xcbjQwNzI6XFx0XFx0dTggYmlkID0gQlRDX0JUXzFTVCwgbHY7XFxuNDA3MzpcXHRcXHR1MzIgd2xfc3RiX2NoZztcXG40MDc0OlxcdFxcbjQwNzU6XFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4dHJ4ID09IDkpIHtcXG40MDc2OlxcdFxcdFxcdC8qIEVhcmx5IHY5IG5lZWQgdG8gYXNzaWduIFVML0RMIFJGIHBhcmEgYXQgZHJpdmVyICovXFxuNDA3NzpcXHRcXHRcXHRpZiAoY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192OSkge1xcbjQwNzg6XFx0XFx0XFx0XFx0dWxfcGFyYV9udW0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX3VsaW5rX251bV92OTtcXG40MDc5OlxcdFxcdFxcdFxcdGRsX3BhcmFfbnVtID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua19udW1fdjk7XFxuNDA4MDpcXHRcXHRcXHR9IGVsc2Uge1xcbjQwODE6XFx0XFx0XFx0XFx0X3NldF9yZl90cnhfcGFyYV92OShydHdkZXYpO1xcbjQwODI6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbjQwODM6XFx0XFx0XFx0fVxcbjQwODQ6XFx0XFx0fSBlbHNlIGlmICgodmVyLVxcdTAwM2VmY3h0cnggPT0gMCB8fCB2ZXItXFx1MDAzZWZjeHRyeCA9PSA3IHx8IHZlci1cXHUwMDNlZmN4dHJ4ID09IDEwNykgXFx1MDAyNlxcdTAwMjZcXG40MDg1OlxcdFxcdFxcdCAgIGNoaXAtXFx1MDAzZXJmX3BhcmFfdWxpbmtfdjApIHtcXG40MDg2OlxcdFxcdFxcdHVsX3BhcmFfbnVtID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua19udW1fdjA7XFxuNDA4NzpcXHRcXHRcXHRkbF9wYXJhX251bSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfbnVtX3YwO1xcbjQwODg6XFx0XFx0fSBlbHNlIHtcXG40MDg5OlxcdFxcdFxcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcXFwiW0JUQ10lcygpLCBObyByZl9wYXJhIGZvciB2ZXJzZWlvbiAlZFxcXFxuXFxcIixcXG40MDkwOlxcdFxcdFxcdFxcdCAgIF9fZnVuY19fLCB2ZXItXFx1MDAzZWZjeHRyeCk7XFxuNDA5MTpcXHRcXHRcXHRnb3RvIG5leHQ7XFxuNDA5MjpcXHRcXHR9XFxuNDA5MzpcXHRcXG40MDk0OlxcdFxcdGlmIChibW9kZSA9PSBCVENfV0xJTktfTk9MSU5LKSB7XFxuNDA5NTpcXHRcXHRcXHRyZXR1cm47XFxuNDA5NjpcXHRcXHR9IGVsc2UgaWYgKHJmX2JhbmQgPT0gUlRXODlfQkFORF81Rykge1xcbjQwOTc6XFx0XFx0XFx0bW9kZSA9IEJUQ19XTElOS19WMF81RztcXG40MDk4OlxcdFxcdH0gZWxzZSBpZiAocmZfYmFuZCA9PSBSVFc4OV9CQU5EXzJHIFxcdTAwMjZcXHUwMDI2IGJtb2RlID09IEJUQ19XTElOS19TVEEpIHtcXG40MDk5OlxcdFxcdFxcdG1vZGUgPSBCVENfV0xJTktfVjBfMkdfU1RBO1xcbjQxMDA6XFx0XFx0fVxcbjQxMDE6XFx0XFxuNDEwMjpcXHRcXHQvKiBkZWNpZGUgdHJ4X3BhcmFfbGV2ZWwgKi9cXG40MTAzOlxcdFxcdGlmIChidGMtXFx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7XFxuNDEwNDpcXHRcXHRcXHQvKiBmaXggTE5BMiArIFRJQSBnYWluIG5vdCBjaGFuZ2UgYnkgR05UX0JUICovXFxuNDEwNTpcXHRcXHRcXHRpZiAoKGJ0Yy1cXHUwMDNlZG0ud2xfYnRnX3J4IFxcdTAwMjZcXHUwMDI2IGItXFx1MDAzZWxpbmtfY250Lm5vdyAhPSAwKSB8fFxcbjQxMDY6XFx0XFx0XFx0ICAgIGRtLVxcdTAwM2VidF9vbmx5ID09IDEpXFxuNDEwNzpcXHRcXHRcXHRcXHRkbS1cXHUwMDNldHJ4X3BhcmFfbGV2ZWwgPSAxOyAvKiBmb3IgYmV0dGVyIEJUIEFDSSBpc3N1ZSAqL1xcbjQxMDg6XFx0XFx0XFx0ZWxzZVxcbjQxMDk6XFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsID0gMDtcXG40MTEwOlxcdFxcdH0gZWxzZSB7IC8qIG5vbi1zaGFyZWQgYW50ZW5uYSAgKi9cXG40MTExOlxcdFxcdFxcdGRtLVxcdTAwM2V0cnhfcGFyYV9sZXZlbCA9IDU7XFxuNDExMjpcXHRcXHRcXHQvKiBtb2RpZnkgdHJ4X3BhcmEgaWYgV0sgMi40Ry1TVEEtREwgKyBidCBsaW5rICovXFxuNDExMzpcXHRcXHRcXHRpZiAoYi1cXHUwMDNlbGlua19jbnQubm93ICE9IDAgXFx1MDAyNlxcdTAwMjZcXG40MTE0OlxcdFxcdFxcdCAgICBtb2RlID09IEJUQ19XTElOS19WMF8yR19TVEEgXFx1MDAyNlxcdTAwMjZcXG40MTE1OlxcdFxcdFxcdCAgICB3bC1cXHUwMDNlc3RhdHVzLm1hcC50cmFmZmljX2RpciBcXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKSB7IC8qIHVwbGluayAqL1xcbjQxMTY6XFx0XFx0XFx0XFx0aWYgKHdsLVxcdTAwM2Vyc3NpX2xldmVsID09IDQgXFx1MDAyNlxcdTAwMjYgYnQtXFx1MDAzZXJzc2lfbGV2ZWwgXFx1MDAzZSAyKVxcbjQxMTc6XFx0XFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsID0gNjtcXG40MTE4OlxcdFxcdFxcdFxcdGVsc2UgaWYgKHdsLVxcdTAwM2Vyc3NpX2xldmVsID09IDMgXFx1MDAyNlxcdTAwMjYgYnQtXFx1MDAzZXJzc2lfbGV2ZWwgXFx1MDAzZSAzKVxcbjQxMTk6XFx0XFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsID0gNztcXG40MTIwOlxcdFxcdFxcdH1cXG40MTIxOlxcdFxcdH1cXG40MTIyOlxcdFxcbjQxMjM6XFx0XFx0bHYgPSBkbS1cXHUwMDNldHJ4X3BhcmFfbGV2ZWw7XFxuNDEyNDpcXHRcXHRpZiAobHYgXFx1MDAzZT0gdWxfcGFyYV9udW0gfHxcXG40MTI1OlxcdFxcdCAgICBsdiBcXHUwMDNlPSBkbF9wYXJhX251bSkge1xcbjQxMjY6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbjQxMjc6XFx0XFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogaW52YWxpZCBsZXZlbF9pZDogJWRcXFxcblxcXCIsXFxuNDEyODpcXHRcXHRcXHRcXHQgICAgX19mdW5jX18sIGx2KTtcXG40MTI5OlxcdFxcdFxcdHJldHVybjtcXG40MTMwOlxcdFxcdH1cXG40MTMxOlxcdFxcbjQxMzI6XFx0XFx0aWYgKHdsLVxcdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFxcdTAwMjYgQklUKFJUVzg5X1RGQ19VTCkpIHtcXG40MTMzOlxcdFxcdFxcdGlmICh2ZXItXFx1MDAzZWZjeHRyeCA9PSA5KSB7XFxuNDEzNDpcXHRcXHRcXHRcXHRwYXJhID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192OVtsdl07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjQzLjY5ODU2MjAwMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjU0NzkwOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIGBydHc4OWAgV2ktRmkgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgcnR3ODlgIGlzIGEgUmVhbHRlayBXaS1GaSBkcml2ZXIsIHNvIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBpdCdzIGhhcmR3YXJlLXNwZWNpZmljIGFuZCBob3cgcmVhY2hhYmxlIGl0IGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcyBjb3JyZWN0bHkuXG5cbldhaXQsIGJhY2sgdXAhIEkgbmVlZCB0byByZS1yZWFkIHRoZSByZWFjaGFiaWxpdHkgY3JpdGVyaWEuIE9rYXksIGFjY29yZGluZyB0byBTZWN0aW9uIDIsIEkgbmVlZCB0byBzYXkgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiAqb25seSogaWYgdGhlIGNoYW5nZXMgYXJlIG5vbi1rZXJuZWwvbm9uLWV4ZWN1dGFibGUsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSAobGlrZSB0aG9zZSBzcGVjaWZpYyBQQ0llIHN3aXRjaGVzIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCBzcGVjaWFsaXplZCBoYXJkd2FyZSksIG9yIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBoYXBwZW4gd2l0aCBQQ0kgaG90LXVucGx1ZyBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS5cblxuT24gdGhlIGZsaXAgc2lkZSwgU2VjdGlvbiAzIHN0YXRlcyBcIldvcnRoRnV6emluZz10cnVlXCIgaWYgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlLCBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZyBjb3JlIHN1YnN5c3RlbXMsIHJlZmFjdG9yaW5ncywgYXNzZXJ0aW9ucywgYW5kICpyZWFjaGFibGUqIGRyaXZlcnMgYW5kIHByb3RvY29scy4gVGhhdCdzIHRoZSBrZXkuIEhvdyBpcyBgcnR3ODlgIHJlYWNoYWJsZT9cblxuQWgtaGEhIElzIHRoaXMgZHJpdmVyIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldD8gSSBrbm93IHN5emthbGxlciBoYXMgdGhhdCBjYXBhYmlsaXR5LiBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGVtdWxhdGVzIFVTQiBkZXZpY2VzLCBhbmQgaWYgc28sIGNhbiBpdCBwcm9iZSB0aGUgYHJ0dzg5YCBVU0IgZHJpdmVycyBzcGVjaWZpY2FsbHkuIExldCBtZSBkaWcgaW50byB0aGUgZGVzY3JpcHRpb25zIGFuZCBzZWUgaWYgVVNCIHJhdyBnYWRnZXQgYWxsb3dzIGZ1enppbmcgVVNCIGRyaXZlcnMgbGlrZSBgcnR3ODlfdXNiYCwgYHJ0dzg4NTJhdWAsIGBydHc4ODUyYnVgLCBgcnR3ODg1MmN1YCwgYHJ0dzg5MjJhdWAsIGFuZCBgcnR3ODg1MWJ1YC5cblxuWWVzISBGcm9tIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGUgTGludXgga2VybmVsLCBJIGtub3cgVVNCIGRyaXZlcnMgKmNhbiogYmUgcHJvYmVkIGFuZCBjb21tdW5pY2F0ZWQgd2l0aCB2aWEgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy5cblxuTm93LCBvbmUgbW9yZSBjcml0aWNhbCBkZXRhaWw6IGxldCdzIGNoZWNrIGlmIHRoZSBgY29leC5jYCBjb2RlIGlzIGV2ZW4gY29tcGlsZWQgd2hlbiBlaXRoZXIgYFJUVzg5X1VTQmAgb3IgYFJUVzg5X0NPUkVgIGlzIGVuYWJsZWQuIExldCdzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTUzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NDguOTUzMzU1MDc5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDAwMzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE6aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODkyMkRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ3OmNvbmZpZyBSVFc4OV84ODUxQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00OS1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MDpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1MTpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjUyOlxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU4OmNvbmZpZyBSVFc4OV84ODUxQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02MC1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2MTpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2MjpcXHRzZWxlY3QgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjYzOlxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY5OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03MS1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3MjpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3MzpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc0OlxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjgwOmNvbmZpZyBSVFc4OV84ODUyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Mi1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4MzpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4NDpcXHRzZWxlY3QgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjg1OlxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjkxOmNvbmZpZyBSVFc4OV84ODUyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NDpcXHRzZWxlY3QgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NTpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjk2OlxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo5NzpcXHRzZWxlY3QgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTk4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMzpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNS1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDY6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTA3OlxcdHNlbGVjdCBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTA4OlxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDk6XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OV84ODUyQlRFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUtVlQgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExNy1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTg6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTE5OlxcdHNlbGVjdCBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTIwOlxcdHNlbGVjdCBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTIxOlxcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTIyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNzpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjktXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTMwOlxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzMTpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzMjpcXHRzZWxlY3QgUlRXODlfODg1MkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTMzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzODpjb25maWcgUlRXODlfODg1MkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzOS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDAtXFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTQxOlxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MjpcXHRzZWxlY3QgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0MzpcXHRzZWxlY3QgUlRXODlfODg1MkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0OTpjb25maWcgUlRXODlfODkyMkFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTEtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTUyOlxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE1MzpcXHRzZWxlY3QgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE1NDpcXHRzZWxlY3QgUlRXODlfODkyMkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NS1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjY6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTY3OlxcdHNlbGVjdCBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTY4OlxcdHNlbGVjdCBSVFc4OV84OTIyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV84OTIyREVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJERS84OTIyREUtVlMgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ny1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzg6XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc5OlxcdHNlbGVjdCBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTgwOlxcdHNlbGVjdCBSVFc4OV84OTIyRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg3OmNvbmZpZyBSVFc4OV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODgtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5MDpjb25maWcgUlRXODlfREVCVUdNU0dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTkxLVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWcgbWVzc2FnZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxOTI6XFx0ZGVwZW5kcyBvbiBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5MzpcXHRzZWxlY3QgUlRXODlfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTk0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE5OTpjb25maWcgUlRXODlfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMDAtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwMTpcXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkUgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDI6XFx0c2VsZWN0IFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIwMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDg6Y29uZmlnIFJUVzg5X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjA5LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjEwOlxcdGRlcGVuZHMgb24gUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMTEtXFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjE1OmNvbmZpZyBSVFc4OV9MRURTX01DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxNi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIxNzpcXHRkZXBlbmRzIG9uIFJUVzg5X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjE4LVxcdGRlcGVuZHMgb24gTEVEU19DTEFTU19NVUxUSUNPTE9SXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE4OjQ4Ljk5NzM2NzI2OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDE2MzI2NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRXODkgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBgUlRXODlgIGRyaXZlciwgc3BlY2lmaWNhbGx5LiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3VnZ2VzdHMgaXQgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIGZ1bGwgcGljdHVyZS4gTXkgYmVzdCBiZXQgaXMgdG8gbG9vayBhdCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIGBSVFc4OWAuIFRoYXQgc2hvdWxkIGxheSBvdXQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGV4cGxpY2l0bHkuIExldCBtZSBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCBhbmQgdGFrZSBhIHBlZWsgYXQgdGhlIHRvcCBsaW5lcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIGBSVFc4OWAgbWlnaHQgbmVlZCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMganVzdCBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiB1bnJhdmVsaW5nIGtlcm5lbCBtb2R1bGUgaW50ZXJkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5Mzc0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NTUuNDEzNjk1Njk5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg5XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODkuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg5XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OV9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OV9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OV9VU0JcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTg6NTUuNDEzNzYyMzk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0NTYwMDk0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSVFc4OSBDb2V4aXN0ZW5jZSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgUlRXODlgIGRyaXZlciBjb2RlLiBGaXJzdCwgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgZm9yIHRoZSBVU0IgdmFyaWFudC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGBSVFc4OV84ODUxQlVgLCBhbmQgYFJUVzg5Xzg5MjJBVWAgY29uZmlndXJhdGlvbnMuIElmIGBDT05GSUdfUlRXODlgLCBgQ09ORklHX1JUVzg5X1VTQmAsIGFuZCB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLXNwZWNpZmljIGNvbmZpZyBsaWtlIGBDT05GSUdfUlRXODlfODg1MkFVYCBhcmUgZW5hYmxlZCwgYWxvbmcgd2l0aCB0aGUgc3RhbmRhcmQgYENPTkZJR19NQUM4MDIxMWAgYW5kIGBDT05GSUdfVVNCYCwgdGhlbiB0aGUgZHJpdmVyIHNob3VsZCBiZSBidWlsdCBhbmQgYWNjZXNzaWJsZSB2aWEgVVNCIGdhZGdldCBvciByYXcgZ2FkZ2V0IGludGVyZmFjZXMsIHdoaWNoIGlzIHdoYXQgSSdtIGV4cGVjdGluZy5cblxuTm93LCBhIGNyaXRpY2FsIHBvaW50IGZvciBjb2V4aXN0ZW5jZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgQmx1ZXRvb3RoIFRYIHBvd2VyIGNvbnRyb2wgaXMgbWFuYWdlZCB3aXRoaW4gdGhlIGNvZXhpc3RlbmNlIG1vZHVsZS4gU3BlY2lmaWNhbGx5LCBpcyBgX3NldF9idF90eF9wb3dlcmAgYSBzdGF0aWMgZnVuY3Rpb24/IEFscmlnaHQsIGNoZWNraW5nIGBjb2V4LmNgLCB5ZXMsIGl0J3MgZGVjbGFyZWQgYHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoLi4uKWAuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGZvciBleHRlcm5hbCBtYW5pcHVsYXRpb24uXG5cbk5vdywgd2hpY2ggbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbCBgX3NldF9idF90eF9wb3dlcmA/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbGluZyBjaGFpbnMuIE9rYXksIGhlcmUncyB3aGF0IEkndmUgZm91bmQ6IGBfc2V0X2J0X3R4X3Bvd2VyYCBpcyBjYWxsZWQgYnkgYF9zZXRfcmZfdHJ4X3BhcmFgIHdoaWNoIGlzIGFsc28gc3RhdGljLiBBbmQgYF9zZXRfcmZfdHJ4X3BhcmFgIGlzIGNhbGxlZCBieSBgX2FjdGlvbl9jb21tb25gLCB3aGljaCBpcyBhbHNvIHN0YXRpYywgYW5kIGZpbmFsbHksIGBfYWN0aW9uX2NvbW1vbmAgaXMgY2FsbGVkIGJ5IGBfcnVuX2NvZXhgLCB3aGljaCBpcyBhbHNvIHN0YXRpYy5cblxuT2theSwgdGhhdCdzIHRoZSBjb3JlIGNoYWluLiBCdXQgd2hvIGNhbGxzIGBfcnVuX2NvZXhgPyBUaGlzIGlzIHdoZXJlIHRoZSBpbnRlcmZhY2UgcG9pbnRzIGFyZSEgSXQncyBjYWxsZWQgYnk6IGBydHc4OV9idGNfbnRmeV9pbml0YCwgYHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9maW5pc2hgLCBgcnR3ODlfYnRjX250Znlfc3dpdGNoX2JhbmRgLCBgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0YCwgYHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlYCwgYHJ0dzg5X2J0Y19udGZ5X3dsX3N0YWAsIGBydHc4OV9idGNfYzJoX2hhbmRsZWAsIGBydHc4OV9idGNfbnRmeV9wb3dlcm9mZmAsIGBydHc4OV9jb2V4X2FjdDFfd29ya2AsIGBydHc4OV9jb2V4X2J0X2RldmluZm9fd29ya2AsIGBydHc4OV9jb2V4X3Jma19jaGtfd29ya2AgYW5kIGBidGNfZndfZXZlbnRgLiAgYGJ0Y19md19ldmVudGAgY291bGQgYmUgc3RhdGljIG9yIGV4cG9ydGVkIOKAkyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuXG5cblRvIGNvbmZpcm0gdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhpcyBtb2R1bGUsIEkgbm93IG5lZWQgdG8gY2hlY2sgd2hldGhlciBgX3J1bl9jb2V4YCBvciBhbnkgb2YgdGhlIGBydHc4OV9idGNfKmAgZnVuY3Rpb25zIGFyZSBleHBvc2VkIGFzIG5vbi1zdGF0aWMgc3ltYm9scyBpbiBgcnR3ODlfY29yZS5rb2AuICBUaGlzIGlzIGNydWNpYWwuIEFsc28sIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgZGVjbGFyYXRpb24sIHByb2JhYmx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIG9yIGBjb2V4LmhgIHRvIHNlZSBob3cgdGhleSBhcmUgc3RydWN0dXJlZC4gVGhpcyB3aWxsIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4dGVybmFsIGhvb2tzIGFuZCB0aGUgb3ZlcmFsbCBtb2R1bGUncyBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5OTA3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MDEuODY5Nzc0MzI4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ2NTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9idGNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTIwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz01OT1zdHJ1Y3QgYnRjX2ZidGNfMXNsb3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNjEtXFx0dTggc2lkOyAvKiBzbG90IGlkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NjI6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3Nsb3Qgc2xvdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy02My19IF9fcGFja2VkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjY1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB0X2RlZltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTY2LVxcdFtDWFREX09GRl1cXHQ9IHsgQ1hURE1BX09GRiwgICAgQ1hGTENfT0ZGLCBDWFRQU19PRkYsIDAsIDAsIDAsIDAsIDB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zbG90IHNfZGVmW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODItXFx0W0NYU1RfT0ZGXVxcdD0gX19ERUZfRkJUQ19TTE9UKDEwMCwgMHg1NTU1NTU1NSwgU0xPVF9NSVgpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTAyPXN0YXRpYyBjb25zdCB1MzIgY3h0YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzNS1cXHQvKiBmaXJtd2FyZSB2ZXJzaW9uIG11c3QgYmUgaW4gZGVjcmVhc2luZyBvcmRlciBmb3IgZWFjaCBjaGlwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ3OiNkZWZpbmUgUlRXODlfREVGQVVMVF9CVENfVkVSX0lEWCAoQVJSQVlfU0laRShydHc4OV9idGNfdmVyX2RlZnMpIC0gMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ5OnN0YXRpYyBjb25zdCB1bmlvbiBydHc4OV9idGNfd2xfc3RhdGVfbWFwIGJ0Y19zY2FubmluZ19tYXAgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzUwLVxcdC5tYXAgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTE9c3RhdGljIGNoYXIgKmNoaXBfaWRfc3RyKHUzMiBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTM6c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTQtXFx0dTggdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTk6c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjAtXFx0dTggdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQyNj1lbnVtIGJ0Y19idGZfc2V0X3JlcG9ydF9lbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDQ0OnN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9yZXBvcnRfdjEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ0NS1cXHR1OCBmdmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1MDpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfcmVwb3J0X3Y4IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTEtXFx0dTggdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ1Nz11bmlvbiBydHc4OV9mYnRjX3J0cF9jdHJsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg6XFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X3JlcG9ydF92MSB2MTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTk6XFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfc2V0X3JlcG9ydF92OCB2ODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ2Mi0jZGVmaW5lIEJURl9TRVRfU0xPVF9UQUJMRV9WRVIgMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ2MzpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfc2xvdF90YWJsZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY0LVxcdHU4IGZ2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY1LVxcdHU4IHRibF9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDY2OlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zbG90IHRibHNbXSBfX2NvdW50ZWRfYnkodGJsX251bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY3LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ2OTpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfc2xvdF90YWJsZV92NyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDcwLVxcdHU4IHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzItXFx0dTggbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ3MzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc2xvdF92NyB2N1tDWFNUX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc0LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ3NjpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192MSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc3LVxcdHU4IGZ2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDc4LVxcdHU4IHJlZ19udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDc5OlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnIHJlZ3NbXSBfX2NvdW50ZWRfYnkocmVnX251bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgwLX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ4MjpzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDgzLVxcdHU4IHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00ODUtXFx0dTggbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ4NjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyByZWdzW10gX19jb3VudGVkX2J5KGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDg3LX0gX19wYWNrZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00ODk9dW5pb24gcnR3ODlfZmJ0Y19zZXRfbW9uX3JlZyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDkwOlxcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9tb25fcmVnX3YxIHYxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ5MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyB2NztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00OTItfSBfX3BhY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEwMTM9c3RhdGljIGludCBfc2VuZF9md19jbWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBoMmNfY2xhc3MsIHU4IGgyY19mdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTAxNi1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTAxNzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2Vmd2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTAxODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEwMTk6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZjeC1cXHUwMDNld2w7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTAyMDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEwMjEtXFx0dTggaDJjX2Z1bmNfbWFzaywgYmlkID0gQlRDX0JUXzFTVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTExMjI9c3RhdGljIHZvaWQgX3Jlc2V0X2J0Y192YXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTEyNC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTEyNTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjY6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjExMjc6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidDAgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMTI4OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQxID0gXFx1MDAyNmN4LVxcdTAwM2VidDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTEyOS1cXHR1OCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTIyMD1zdGF0aWMgdm9pZCBfZ2V0X3JlZ19zdGF0dXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1OCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIyMi1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyMzpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyNDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX21vZHVsZSAqbWQgPSBcXHUwMDI2YnRjLVxcdTAwM2VtZGluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIyNTpcXHR1bmlvbiBydHc4OV9idGNfZmJ0Y19tcmVnX3ZhbCAqcG1yZWc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIyNi1cXHR1MzIgcHJlX2FnY19hZGRyID0gUl9CVENfQkJfUFJFX0FHQ19TMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEzMTM9c3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMTUtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEzMTY6XFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE3OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzE4OlxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEzMTk6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTUxMj1zdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJwdF90eXBlLCB1OCAqcGZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTUxNC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUxNTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUxNjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTc6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUxODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFxcdTAwMjZidF9saW5mby1cXHUwMDNlYTJkcF9kZXNjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MTk6XFx0dW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvLnJwdF9mYnRjX2J0dmVyLmZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjA6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3YyICpwYWZoX3YyID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIxOlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqcGFmaF92NyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUyMjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRkZXZpbmZvICpwZGV2ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTIzOlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaCAqcGFmaF92MSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTUyNDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YxICpwc2Nhbl92MTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTI1OlxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjIgKnBzY2FuX3YyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1MjY6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92NyAqcHNjYW5fdjc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTUyNy1cXHRib29sIHNjYW5fdXBkYXRlID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1MzYtXFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4YnR2ZXIgPT0gOCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1Mzc6XFx0XFx0XFx0cHZlci1cXHUwMDNldjggPSAqKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHZlcl92OCAqKXBmaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTM4LVxcdFxcdFxcdGJ0ID0gcHZlci1cXHUwMDNldjguYnRfaWQgPyBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDEgOiBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTQzLVxcdFxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3hidHZlciA9PSA3KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU0NDpcXHRcXHRcXHRwdmVyLVxcdTAwM2V2NyA9ICooc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0dmVyX3Y3ICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NDUtXFx0XFx0XFx0YnQtXFx1MDAzZXZlcl9pbmZvLmZ3ID0gbGUzMl90b19jcHUocHZlci1cXHUwMDNldjcuZndfdmVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NDktXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTUwOlxcdFxcdFxcdHB2ZXItXFx1MDAzZXYxID0gKihzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnR2ZXJfdjEgKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU1MS1cXHRcXHRcXHRidC1cXHUwMDNldmVyX2luZm8uZncgPSBsZTMyX3RvX2NwdShwdmVyLVxcdTAwM2V2MS5md192ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU1OC1cXHRcXHRpZiAodmVyLVxcdTAwM2VmY3hidHNjYW4gPT0gMSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1NTk6XFx0XFx0XFx0cHNjYW5fdjEgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92MSAqKXBmaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTYwLVxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCVENfU0NBTl9NQVgxOyBpKyspIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NjYtXFx0XFx0fSBlbHNlIGlmICh2ZXItXFx1MDAzZWZjeGJ0c2NhbiA9PSAyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU2NzpcXHRcXHRcXHRwc2Nhbl92MiA9IChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRzY2FuX3YyICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE1NjgtXFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIENYU0NBTl9NQVg7IGkrKykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU3NS1cXHRcXHR9IGVsc2UgaWYgKHZlci1cXHUwMDNlZmN4YnRzY2FuID09IDcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNTc2OlxcdFxcdFxcdHBzY2FuX3Y3ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjcgKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU3Ny1cXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQ1hTQ0FOX01BWDsgaSsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNTg0LVxcdFxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3hidHNjYW4gPT0gOCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODU6XFx0XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0c2Nhbl92OCAqcHNjYW5fdjggPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE1ODY6XFx0XFx0XFx0XFx0KHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idHNjYW5fdjggKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTU4NzpcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKnRidCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTU4OC1cXHRcXHRcXHRcXHRwc2Nhbl92OC1cXHUwMDNlYnRfaWQgPyBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDEgOiBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjAyLVxcdFxcdGlmICh2ZXItXFx1MDAzZWZjeGJ0YWZoID09IDIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjAzOlxcdFxcdFxcdHBhZmhfdjIgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3YyICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2MDQtXFx0XFx0XFx0aWYgKHBhZmhfdjItXFx1MDAzZW1hcF90eXBlIFxcdTAwMjYgUlBUX0JUX0FGSF9TRVFfTEVHQUNZKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjEzLVxcdFxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3hidGFmaCA9PSA3KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYxNDpcXHRcXHRcXHRwYWZoX3Y3ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGFmaF92NyAqKXBmaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjE1LVxcdFxcdFxcdGlmIChwYWZoX3Y3LVxcdTAwM2VtYXBfdHlwZSBcXHUwMDI2IFJQVF9CVF9BRkhfU0VRX0xFR0FDWSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYyNC1cXHRcXHR9IGVsc2UgaWYgKHZlci1cXHUwMDNlZmN4YnRhZmggPT0gOCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2MjU6XFx0XFx0XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoX3Y4ICpwYWZoX3Y4ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjI2OlxcdFxcdFxcdFxcdChzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYnRhZmhfdjggKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTYyNzpcXHRcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKnRidCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYyOC1cXHRcXHRcXHRcXHRwYWZoX3Y4LVxcdTAwM2VidF9pZCA/IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MSA6IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjI5OlxcdFxcdFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICp0YnRfbGluZm8gPSBcXHUwMDI2dGJ0LVxcdTAwM2VsaW5rX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTYzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDAtXFx0XFx0fSBlbHNlIGlmICh2ZXItXFx1MDAzZWZjeGJ0YWZoID09IDEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjQxOlxcdFxcdFxcdHBhZmhfdjEgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0YWZoICopcGZpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NDItXFx0XFx0XFx0bWVtY3B5KFxcdTAwMjZidF9saW5mby1cXHUwMDNlYWZoX21hcFswXSwgcGFmaF92MS1cXHUwMDNlYWZoX2wsIDQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY0Ny1cXHRjYXNlIEJUQ19SUFRfVFlQRV9CVF9ERVZJQ0U6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY0ODpcXHRcXHRwZGV2ID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGRldmluZm8gKilwZmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTY0OS1cXHRcXHRhMmRwLVxcdTAwM2VkZXZpY2VfbmFtZSA9IGxlMzJfdG9fY3B1KHBkZXYtXFx1MDAzZWRldl9uYW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY1ODpzdGF0aWMgdm9pZCBydHc4OV9idGNfZndfcnB0X2V2bnRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmluZGV4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NjAtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2NjE6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE2NjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2Nzc6c3RydWN0IHJ0dzg5X2J0Y19wcnB0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjc4LVxcdHU4IHR5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xNjgzPXN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjg0OlxcdFxcdFxcdCAgIHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjg1LVxcdFxcdFxcdCAgIHU4ICpwcnB0YnVmLCB1MzIgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjg3LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjg4OlxcdHN0cnVjdCBydHc4OV9idGNfdmVyICpmd3N1YnZlciA9IFxcdTAwMjZidGMtXFx1MDAzZWZ3aW5mby5md19zdWJ2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY4OTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2OTE6XFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2OTM6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE2OTQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk1OlxcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX3JwdF9jdHJsX3Zlcl9pbmZvICpwcnB0ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxNjk2OlxcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX2N5c3RhX2luZm8gKnBjeXN0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTY5NzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKmJ0Y19wcnB0ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNjk4LVxcdHZvaWQgKnJwdF9jb250ZW50ID0gTlVMTCwgKnBmaW5mbyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE3MTU6XFx0YnRjX3BycHQgPSAoc3RydWN0IHJ0dzg5X2J0Y19wcnB0ICopXFx1MDAyNnBycHRidWZbaW5kZXhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE3MTYtXFx0cnB0X3R5cGUgPSBidGNfcHJwdC1cXHUwMDNldHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE3MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTcyNDpcXHRydHc4OV9idGNfZndfcnB0X2V2bnRfdmVyKHJ0d2RldiwgXFx1MDAyNnJwdF90eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xNzI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1MC1cXHRcXHRcXHRcXHRcXHQgIHRyYWNlX3N0ZXAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjE4NTE6XFx0XFx0XFx0XFx0XFx0ICBvZmZzZXRvZihzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfc3RlcHNfdjIsIHN0ZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTE4NTItXFx0XFx0XFx0ZndzdWJ2ZXItXFx1MDAzZWZjeHN0ZXAgPSBwZndpbmZvLVxcdTAwM2VycHRfZmJ0Y19zdGVwLmZpbmZvLnYyLmZ2ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xODU2LVxcdFxcdFxcdFxcdFxcdCAgdHJhY2Vfc3RlcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTg1NzpcXHRcXHRcXHRcXHRcXHQgIG9mZnNldG9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19zdGVwc192Mywgc3RlcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTg1OC1cXHRcXHRcXHRmd3N1YnZlci1cXHUwMDNlZmN4c3RlcCA9IHBmd2luZm8tXFx1MDAzZXJwdF9mYnRjX3N0ZXAuZmluZm8udjMuZnZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI2NTg9c3RhdGljIHZvaWQgX3BhcnNlX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NTk6XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NjAtXFx0XFx0XFx0ICAgICAgdTggKnBidWYsIHUzMiBidWZfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2NjI6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cXHUwMDNlYnRjLnZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjYzOlxcdHN0cnVjdCBydHc4OV9idGNfcHJwdCAqYnRjX3BycHQgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI2NjQtXFx0dTMyIGluZGV4ID0gMCwgcnB0X2xlbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjcwLVxcdHdoaWxlIChwYnVmKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MjY3MTpcXHRcXHRidGNfcHJwdCA9IChzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKilcXHUwMDI2cGJ1ZltpbmRleF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY3Mi1cXHRcXHRpZiAoaW5kZXggKyAyIFxcdTAwM2U9IHZlci1cXHUwMDNlaW5mb19idWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0yNjg5PXN0YXRpYyB2b2lkIF9hcHBlbmRfdGRtYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNjkxLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjkyOlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjkzOlxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MjY5NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKnRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNjk1OlxcdHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqdGx2X3Y3O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI2OTY6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKnY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MjY5NzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYV92MyAqdjM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjY5OC1cXHR1MTYgbGVuID0gYnRjLVxcdTAwM2Vwb2xpY3lfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzA4OlxcdHRsdiA9IChzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKilcXHUwMDI2YnRjLVxcdTAwM2Vwb2xpY3lbbGVuXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzA5LVxcdHRsdi1cXHUwMDNldHlwZSA9IENYUE9MSUNZX1RETUE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxMC1cXHRpZiAodmVyLVxcdTAwM2VmY3h0ZG1hID09IDEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzExOlxcdFxcdHYgPSAoc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKilcXHUwMDI2dGx2LVxcdTAwM2V2YWxbMF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjcxMi1cXHRcXHR0bHYtXFx1MDAzZWxlbiA9IHNpemVvZigqdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzE1LVxcdH0gZWxzZSBpZiAodmVyLVxcdTAwM2VmY3h0ZG1hID09IDcgfHwgdmVyLVxcdTAwM2VmY3h0ZG1hID09IDQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzE2OlxcdFxcdHRsdl92NyA9IChzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcgKilcXHUwMDI2YnRjLVxcdTAwM2Vwb2xpY3lbbGVuXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzE3LVxcdFxcdHRsdl92Ny1cXHUwMDNlbGVuID0gc2l6ZW9mKGRtLVxcdTAwM2V0ZG1hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MjMtXFx0XFx0dGx2LVxcdTAwM2VsZW4gPSBzaXplb2YoKnYzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzI0OlxcdFxcdHYzID0gKHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hX3YzICopXFx1MDAyNnRsdi1cXHUwMDNldmFsWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3MjUtXFx0XFx0djMtXFx1MDAzZWZ2ZXIgPSB2ZXItXFx1MDAzZWZjeHRkbWE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0yNzM3PXN0YXRpYyB2b2lkIF9hcHBlbmRfc2xvdF92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzM5LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzQwOlxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjc0MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKnRsdiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc0Mi1cXHRzdHJ1Y3QgYnRjX2ZidGNfMXNsb3QgKnYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjc1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoyNzU4OlxcdFxcdHRsdiA9IChzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHYgKilcXHUwMDI2YnRjLVxcdTAwM2Vwb2xpY3lbbGVuXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzU5LVxcdFxcdHYgPSAoc3RydWN0IGJ0Y19mYnRjXzFzbG90ICopXFx1MDAyNnRsdi1cXHUwMDNldmFsWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9Mjc4Mj1zdGF0aWMgdm9pZCBfYXBwZW5kX3Nsb3Rfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI3ODQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfdGx2X3Y3ICp0bHYgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI3ODUtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI3ODY6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yNzg3LVxcdHU4IGksIGNudCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0yODA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjI4MDU6XFx0XFx0XFx0dGx2ID0gKHN0cnVjdCBydHc4OV9idGNfYnRmX3Rsdl92NyAqKVxcdTAwMjZidGMtXFx1MDAzZXBvbGljeVtsZW5dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4MDYtXFx0XFx0XFx0dGx2LVxcdTAwM2V0eXBlID0gQ1hQT0xJQ1lfU0xPVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTI4Mzc9c3RhdGljIHZvaWQgX2FwcGVuZF9zbG90KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTI4NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg0NzpzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg0OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg0OS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mjg1MDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMjg1MS1cXHR1MzIgYml0X21hcCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMwNDc6c3RhdGljIHZvaWQgcnR3ODlfYnRjX2Z3X3NldF9zbG90cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA0OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA0OS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MDpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl90bHZfdjcgKnRsdl92NyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA1MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfc2xvdF90YWJsZSAqdGJsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMwNTM6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDU0LVxcdHUxNiBuLCBsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMwODY6c3RhdGljIHZvaWQgcnR3ODlfYnRjX2Z3X2VuX3JwdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA4Ny1cXHRcXHRcXHRcXHRib29sIGZvcmNlX2V4ZWMsIHUzMiBycHRfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzA4OS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzA5MDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKmZ3aW5mbyA9IFxcdTAwMjZidGMtXFx1MDAzZWZ3aW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMDkxLVxcdHVuaW9uIHJ0dzg5X2ZidGNfcnRwX2N0cmwgcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMxMzM9c3RhdGljIHZvaWQgYnRjX2Z3X3NldF9tb25yZWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzEzNS1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMxMzY6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cXHUwMDNlYnRjLnZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMTM3OlxcdHN0cnVjdCBydHc4OV9idGNfYnRmX3NldF9tb25fcmVnX3YxICp2MSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzEzODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9zZXRfbW9uX3JlZ192NyAqdjcgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxMzktXFx0dTggaSwgbiwgdWxlbiwgY3htcmVnX21heDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzE1ODpcXHR1bGVuID0gc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzE5ND1zdGF0aWMgdm9pZCBfdXBkYXRlX2RtX3N0ZXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzE5Ny1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzE5ODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMxOTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjEwPXN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzIxMy1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzIxNDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyMTUtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyNjE9c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNjM6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IHJ0d2Rldi1cXHUwMDNlYnRjLnZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI4Nz1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfdG9fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcF92OClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjg4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjg5OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBydHdkZXYtXFx1MDAzZWJ0Yy52ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI5MC1cXHR1MzIgZW5fbWFwX3Y3ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzE0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBydHdkZXYtXFx1MDAzZWJ0Yy52ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMxNS1cXHR1MzIgZW5fbWFwX3Y4ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzYtXFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZ3BpbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM3OlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM4LVxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBsMl9oMmM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDI1PXN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDI3LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDI4OlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyOS1cXHR1OCBidDFfc3dfdHlwZSA9IEJUQ19TV0lUQ0hfSU5URVJOQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDY3PXN0YXRpYyB2b2lkIF9md19zZXRfZHJ2X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBpbmRleClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjktXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NzA6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNTgxPXZvaWQgYnRjX2Z3X2V2ZW50KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZXZ0X2lkLCB2b2lkICpkYXRhLCB1MzIgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzU4My1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzU4NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2Vmd2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzU4NTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM1ODYtXFx0dTggaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM2MTY9c3RhdGljIHZvaWQgX3NldF9nbnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfbWFwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYxOS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzYyMDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM2MjE6XFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX291dHNyY19zZXRfaW5mbyAqbyA9IFxcdTAwMjZkbS1cXHUwMDNlb3N0X2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzYyMi1cXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X3dsX2FjdCAqd2xhY3Rfc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9Mzc2OT1zdGF0aWMgdm9pZCBfc2V0X3dsX3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzc3Mi1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzc3MzpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzc3NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM3NzUtXFx0Ym9vbCBsZXZlbF9jaGcgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzgyNC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzgyNTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4MjYtXFx0Ym9vbCBsZXZlbF9jaGcgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4NTI9c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1NS1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzg1NjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM4NTctXFx0dTggaDJjX2Z1bmMgPSBTRVRfQlRfVFhfUFdSO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzkxND1zdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5MTctXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM5MTg6XFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTE5OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zOTIwLVxcdHU4IGgyY19mdW5jID0gU0VUX0JUX0xOQV9DT05TVFJBSU47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zOTg4PXN0YXRpYyB2b2lkIF9zZXRfYnRfY29yeF90YWJsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zOTkwLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozOTkxOlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzk5MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6Mzk5MzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM5OTQtXFx0dTggaXNfMjRnLCBpc181NmcsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDI4PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmFfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDAzMC1cXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDAzMTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwMzI6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9zbWFwICp3bF9zbWFwID0gXFx1MDAyNmN4LVxcdTAwM2V3bC5zdGF0dXMubWFwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwMzM6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDM0LVxcdGJvb2wgYnRfMnIgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQwNTY9c3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MDU5LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYwOlxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDYxOlxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2MjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2MzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqciA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQwNjQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MDY1OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2NjpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcXHUwMDI2d2wtXFx1MDAzZXN0YXR1cy5tYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDA2NzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHBhcmE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDA2OC1cXHR1OCBibW9kZSA9IGRtLVxcdTAwM2V0ZGRfYmluZC53bF9saW5rX21vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MTg0PXN0YXRpYyB2b2lkIF91cGRhdGVfYnRjX3N0YXRlX21hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTg2LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg3OlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE4ODpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTg5OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0MTkwOlxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFxcdTAwMjZidC1cXHUwMDNlbGlua19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQxOTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjExPXN0YXRpYyB1OCBfZ2V0X3dsX2d1YXJkX2J3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaW5kZXgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDIxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDIxMzpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5kbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MjE0LVxcdHU4IGd1YXJkX2NoID0gcnR3ZGV2LVxcdTAwM2VjaGlwLVxcdTAwM2VhZmhfZ3VhcmRfY2g7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MjUyPXN0YXRpYyB2b2lkIF9zZXRfd2xfY2hfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQyNTQtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyNTU6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQyNTY6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbyAqYWZoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQyNTctXFx0dTE2IGNoX3N0YXJ0LCBjaF9lbmQsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MzcxPXN0YXRpYyB2b2lkIF9zZXRfd2xfY2hfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MzczLVxcdHN0YXRpYyBjb25zdCB1OCBwYXRoX2h3YltCVENfUkZfTlVNXSA9IHtSVFc4OV9QSFlfMCwgUlRXODlfUEhZXzF9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQzNzQ6XFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGMuZG07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDM3NTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5jeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0Mzc2OlxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQzNzctXFx0dTMyIHZjb19mcmVxLCBjaF9sbyA9IDAsIGNoX3VwID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ0NTA9c3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NDUyLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDUzOlxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDQ1NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NDU1OlxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ0NTY6XFx0c3RydWN0IHJ0dzg5X2J0Y193bF9ybGluayAqcmxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDQ1Ny1cXHR1OCBoMmNfZnVuYywgaHdiLCBidF9saW5rX2NoZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTQ1MzYtXFx0XFx0XFx0ICAgIFxcdTAwMjZ3bC1cXHUwMDNlYWZoX2luZm9baHdiXVtqXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTM3OlxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbykpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDUzOC1cXHRcXHRcXHQgICAgIWJ0X2xpbmtfY2hnIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTQzLVxcdFxcdCAgICAgICBcXHUwMDI2d2wtXFx1MDAzZWFmaF9pbmZvW2h3Yl1bal0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU0NDpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9NDU3OT1zdGF0aWMgYm9vbCBfY2hlY2tfZnJlZXJ1bihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NTgxLVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTgyOlxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTgzOlxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDU4NDpcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg1OlxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFxcdTAwMjZidC1cXHUwMDNlbGlua19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ1ODY6XFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXFx1MDAyNmJ0X2xpbmZvLVxcdTAwM2VoaWRfZGVzYztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo0NTg3OlxcdHN0cnVjdCBydHc4OV9idGNfbW9kdWxlICptZCA9IFxcdTAwMjZidGMtXFx1MDAzZW1kaW5mbztcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MDEuOTIzMjQ1Njg3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwMjg0OTAzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2V4aXN0ZW5jZSBDb2RlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGNvZXguY2AgZmlsZS4gTXkgZ29hbCBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGV4cG9zZWQgaW50ZXJmYWNlIOKAkyB3aGljaCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG1lYW50IHRvIGJlIHVzZWQgZXh0ZXJuYWxseT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29leGlzdGVuY2UgZnVuY3Rpb25zIGFyZSAqbm90KiBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9uZXMgdGhhdCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBvciBwb3RlbnRpYWxseSBldmVuIG90aGVyIG1vZHVsZXMsIGNvdWxkIGNhbGwuXG5cblRoZXJlZm9yZSwgbXkgZmlyc3QgdGhvdWdodCBpcyB0byBncmVwIGZvciBlaXRoZXIgYHJ0dzg5X2J0Y19gIG9yIGBydHc4OV9jb2V4X2Agd2l0aGluIGBjb2V4LmNgIGFuZCBvbmx5IHJldHVybiB0aG9zZSBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IGRlZmluZWQgYXMgYHN0YXRpY2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgaGlnaGxpZ2h0IHRoZSBrZXkgZW50cnkgcG9pbnRzIGFuZCBpbnRlcm5hbCBmdW5jdGlvbiBjYWxscyB0aGF0IHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gbGV2ZXJhZ2VzLiBJIGV4cGVjdCB0aGlzIHdpbGwgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW0ncyBleHRlcm5hbCBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxOTksIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTowNC45NTE3MzkxOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MjMwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXih2b2lkfGludHxib29sfHUzMikgcnR3ODlfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTQ3MTc9c3RhdGljIHZvaWQgX3NldF90ZG1hX2JpbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIHRkbWFfb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzYwLSNkZWZpbmUgQlRDX0IxX01BWCAyNTAgLyogdW5pdCBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjQ3NjE6dm9pZCBydHc4OV9idGNfc2V0X3BvbGljeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00NzYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTUwOTU9RVhQT1JUX1NZTUJPTChydHc4OV9idGNfc2V0X3BvbGljeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNTA5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo1MDk3OnZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3lfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNTA5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz03NTg3PXN0YXRpYyB2b2lkIF91cGRhdGVfd2xfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV9idGNfd2xfbGlua19pbmZvICp3bF9saW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NzcxNjp2b2lkIHJ0dzg5X2NvZXhfYWN0MV93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTc3MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzczOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo3NzM5OnZvaWQgcnR3ODlfY29leF9idF9kZXZpbmZvX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNzc0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjc3NTU6dm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy03NzU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg0MTk9dm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NDY6dm9pZCBydHc4OV9idGNfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg2NjM6dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODY3MTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzIzOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3ODQ6dm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04Nzg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODgxNDp2b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fZmluaXNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODgzNzp2b2lkIHJ0dzg5X2J0Y19udGZ5X3N3aXRjaF9iYW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04ODM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg4NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODg1OTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODg2MC1cXHRcXHRcXHRcXHQgICAgZW51bSBidGNfcGt0X3R5cGUgcGt0X3R5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg5Mjc6dm9pZCBydHc4OV9idGNfbnRmeV9lYXBvbF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODkzODp2b2lkIHJ0dzg5X2J0Y19udGZ5X2FycF9wYWNrZXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODk0ODp2b2lkIHJ0dzg5X2J0Y19udGZ5X2RoY3BfcGFja2V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODk0OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04OTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg5NTk6dm9pZCBydHc4OV9idGNfbnRmeV9pY21wX3BhY2tldF93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg5NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTE1Nz1zdGF0aWMgdm9pZCBfbnRmeV9yb2xlX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCByaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05MjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjkyMjk6dm9pZCBydHc4OV9idGNfbnRmeV9yb2xlX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkyMzAtXFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTM0NTp2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTkzNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTQwMD1zdGF0aWMgYm9vbCBfbnRmeV93bF9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfcGF0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTk0NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6OTQ2Njp2b2lkIHJ0dzg5X2J0Y19udGZ5X3dsX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9tYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTQ2Ny1cXHRcXHRcXHQgICBlbnVtIGJ0Y193bF9yZmtfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9OTYzOD1zdGF0aWMgdm9pZCBydHc4OV9idGNfbnRmeV93bF9zdGFfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo5NjU1OnZvaWQgcnR3ODlfYnRjX250Znlfd2xfc3RhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTk3MDI9c3RhdGljIHU4IHJ0dzg5X2J0Y19jMmhfZ2V0X2luZGV4X2J5X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy05NzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjk3Njc6dm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtOTc2OC1cXHRcXHRcXHQgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTMyNDY9c3NpemVfdCBydHc4OV9idGNfZHVtcF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMzMxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMzMyMDp2b2lkIHJ0dzg5X2NvZXhfcmVjb2duaXplX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTMzNTE6dm9pZCBydHc4OV9idGNfbnRmeV9wcmVzZXJ2ZV9idF90aW1lKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEzMzUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTEzMzY0PUVYUE9SVF9TWU1CT0wocnR3ODlfYnRjX250ZnlfcHJlc2VydmVfYnRfdGltZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTMzNjY6dm9pZCBydHc4OV9idGNfbnRmeV9jb25uX3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgc3RhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTMzNjcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTowNC45OTgzNjc0MTlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTEzMTMyNzU1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgX3NldF9idF90eF9wb3dlcmAgZnVuY3Rpb24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCdzIHN0YXRpYy4gTGluZSAzODUyIGNvbmZpcm1zIGl0OiBgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlciguLi4pYC4gT2theSwgaXQncyBzdGF0aWMuIFRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB3ZSBjYW4gdGFyZ2V0IGl0IGRpcmVjdGx5IHdpdGggc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMsIGdpdmVuIGNvbXBpbGVyIGlubGluaW5nIGNvbnNpZGVyYXRpb25zIGZvciBzdGF0aWMgZnVuY3Rpb25zIGFzIG91dGxpbmVkIGluIHRoZSBwcm9tcHQncyBydWxlLiBTaW5jZSBpdCdzIGluIGEgYC5jYCBmaWxlLCBpdCBtaWdodCBub3QgYmUgaW5saW5lZCwgYnV0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzLlxuXG5Mb29raW5nIGF0IGBjb2V4LmNgLCB0aGUgY2FsbGVycyBhcmUgYHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnRgLCBgcnR3ODlfYnRjX250ZnlfaW5pdGAsIGBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZWAsIGBydHc4OV9idGNfbnRmeV93bF9zdGFgLCBhbmQgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYC4gRWl0aGVyIHRoZXNlIGNhbiBiZSB0YXJnZXRlZCwgb3IgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpZiBub3QgaW5saW5lZC5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZXF1aXJlZCBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBgcnR3ODlgIFVTQiB2YXJpYW50LiBGcm9tIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gLCBJIHNlZSB0aGVzZSByZWxldmFudCBvcHRpb25zOiBgUlRXODlgIChkZXBlbmRzIG9uIGBNQUM4MDIxMWApLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgICh0cmlzdGF0ZSksIGFuZCB2YXJpb3VzIGRldmljZS1zcGVjaWZpYyBvcHRpb25zIGxpa2UgYFJUVzg5Xzg4NTJBVWAgKGRlcGVuZHMgb24gYFVTQmAsIHNlbGVjdHMgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgZXRjLikuIFdlIGFsc28gaGF2ZSBgTUFDODAyMTFgIGFuZCBgVVNCYC5cblxuTGV0IG1lIHZlcmlmeSB0aGF0IGBSVFc4OV84ODUyQVVgIHJlYWxseSBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgUlRXODlgLiBEb3VibGUtY2hlY2tpbmcgdGhlIGBLY29uZmlnYDogeWVzLCBgUlRXODlfODg1MkFVYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBzZWxlY3RzIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAuICBTbywgdG8gZW5hYmxlIHRoZSBVU0IgdmFyaWFudCwgdGhlIGZvbGxvd2luZyBjb25maWdzIGFyZSBuZWVkZWQ6IGBSVFc4OWAsIGBSVFc4OV9DT1JFYCwgYFJUVzg5X1VTQmAsIGBSVFc4OV84ODUyQVVgIChvciBvbmUgb2YgdGhlIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgUlRXODlfODg1MkJVYCwgZXRjLiksIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gSSdsbCBhbHNvIGRvdWJsZSBjaGVjayB0aGF0IGBNQUM4MDIxMWAgZGVwZW5kcyBvbiBgTkVUREVWSUNFU2AsIGBXTEFOYCwgYENGRzgwMjExYCwgYnV0IHRoYXQgc2hvdWxkIGJlIHN0YW5kYXJkLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjb3JyZWN0LlxuXG5Ob3csIGxldCdzIHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyByZW1vdmluZyBhIGd1YXJkIGNvbmRpdGlvbiwgYCFyZl9iYW5kYC4gVGhpcyBtZWFucyB0aGF0IGBfc2V0X2J0X3R4X3Bvd2VyYCB3aWxsIG5vdyBiZSBleGVjdXRlZCBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIElzIHRoaXMgY29kZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmc/IFllcywgdGhpcyBjaGFuZ2UgaW1wYWN0cyBleGVjdXRhYmxlIGRyaXZlciBsb2dpYyBpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHdoaWNoIGlzIGEgUmVhbHRlayBXaS1GaSBkcml2ZXIsIHdpdGggVVNCIGRyaXZlciB2YXJpYW50cy4gV2UgaGF2ZSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBpbnRlcmZhY2VzIGZvciByZWFjaGFiaWxpdHkuIFJlbW92aW5nIHRoZSBjaGVjayBjb3VsZCBpbnRyb2R1Y2UgbmV3IGV4ZWN1dGlvbiBwYXRocyBvciB2dWxuZXJhYmlsaXRpZXMuXG5cblRoZXJlZm9yZSwgZm9yIEZvY3VzU3ltYm9scywgSSdsbCBzZWxlY3Q6IGBfc2V0X2J0X3R4X3Bvd2VyYCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydGAsIGBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZWAsIGFuZCBgcnR3ODlfYnRjX2MyaF9oYW5kbGVgLlxuXG5UbyBzdW1tYXJpemUgdGhlIHJlcXVpcmVkIGNvbmZpZ3MgZm9yIHRoaXMgdGFyZ2V0IHRoZXkgYXJlOiBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBgUlRXODlfODg1MkFVYCwgYE1BQzgwMjExYCwgYW5kIGBVU0JgLlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg5MSwiT3V0cHV0VG9rZW5zIjoyMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjE2LjMxMTY0NTQ4NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDU2OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfc2V0X2J0X3R4X3Bvd2VyXCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZVwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfc2V0X2J0X3R4X3Bvd2VyXCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0XCIsXG4gICAgXCJydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZVwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBleGVjdXRhYmxlIGNvbnRyb2wgZmxvdyBpbiBSZWFsdGVrIHJ0dzg5IFdpLUZpIGNvZXhpc3RlbmNlIGxvZ2ljIChfc2V0X2J0X3R4X3Bvd2VyKSBieSByZW1vdmluZyB0aGUgcmZfYmFuZCBndWFyZCBjaGVjay4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoZS5nLiBSVFc4OV84ODUyQVUpIGFuZCBtYWM4MDIxMSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MTYuMzg0NzA5NTU0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDAzMzQyMjQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjE2LjM4NTE3Mjk5NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwMDMyOTU1MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHRoZSBgfHwgIXJmX2JhbmRgIGNoZWNrIGZyb20gdGhlIGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGV2ZW4gd2hlbiBgcmZfYmFuZGAgaXMgemVyby4gQWxsIHZhcmlhYmxlcyB3aXRoaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAgKHN1Y2ggYXMgYGJ1ZmApIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIG9uIHRoZSBzdGFjayAoYHU4IGJ1ZlsyXSA9IHt9O2ApLCBhbmQgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSBhcyBhIGB1OGAgcGFyYW1ldGVyLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZlMDgyNWFjZmUzMGNiNGZhZjliNjAyMjExZjU5ZTk0Mzk1MDJhNjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzoxNzo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLmY0MmE2Y2MzZWI3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0zODU5LDcgKzM4NTksNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLCB1OCBiaWQsXG4gXHR1OCBidWZbMl0gPSB7fTtcbiBcdHU4IGxlbiA9IHNpemVvZigqYnVmKTtcbiBcbi1cdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDAgfHwgIXJmX2JhbmQpXG4rXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoYnQtXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjE2LjM4NTE3NDI0NFoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDEzNDk5NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBDb2V4aXN0ZW5jZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGRpdmUgaW50byBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBNeSBmaXJzdCBtb3ZlIGlzIHRvLCBvZiBjb3Vyc2UsICphY3R1YWxseSogbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIOKAkyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBtYWRlIGRpcmVjdGx5LiAgQmV5b25kIHRoZSBwYXRjaCBpdHNlbGYsIEknbSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIHRoYXQgZmlsZSwgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGNoYW5nZXMuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhYm91dCBgX3NldF9idF90eF9wb3dlcmAgYW5kIGhvdyB0aGUgYHJmX2JhbmRgIHZhcmlhYmxlIGludGVyYWN0cyB3aXRoIGl0LiBUaGlzIGlzIHdoZXJlIEknbGwgdXNlIGVpdGhlciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbidzIGJlaGF2aW9yIGluIHJlbGF0aW9uIHRvIGZyZXF1ZW5jeSBiYW5kIHNlbGVjdGlvbiwgYXMgYW55IGNoYW5nZXMgaGVyZSBjb3VsZCBzaWduaWZpY2FudGx5IGltcGFjdCBjb2V4aXN0ZW5jZSB3aXRoIEJsdWV0b290aC4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBrbm93ICp3aGF0KiBpdCBkb2VzIGFuZCAqaG93KiBpdCBkb2VzIGl0IHdpdGggYHJmX2JhbmRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MjEuNzk4Njc2NDdaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODUwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzODUwOlxcdH1cXG4zODUxOlxcdFxcbjM4NTI6XFx0c3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYywgdTggYmlkLFxcbjM4NTM6XFx0XFx0XFx0XFx0ICAgICB1OCByZl9iYW5kLCB1OCBsZXZlbClcXG4zODU0OlxcdHtcXG4zODU1OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4zODU2OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuMzg1NzpcXHRcXHR1OCBoMmNfZnVuYyA9IFNFVF9CVF9UWF9QV1I7XFxuMzg1ODpcXHRcXHR1OCBpLCBpZF9zdGFydCwgaWRfc3RvcDtcXG4zODU5OlxcdFxcdHU4IGJ1ZlsyXSA9IHt9O1xcbjM4NjA6XFx0XFx0dTggbGVuID0gc2l6ZW9mKCpidWYpO1xcbjM4NjE6XFx0XFxuMzg2MjpcXHRcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcXG4zODYzOlxcdFxcdFxcdHJldHVybjtcXG4zODY0OlxcdFxcbjM4NjU6XFx0XFx0aWYgKGJ0LVxcdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxcbjM4NjY6XFx0XFx0XFx0cmV0dXJuO1xcbjM4Njc6XFx0XFxuMzg2ODpcXHRcXHRpZiAoYmlkID09IEJUQ19BTExfQlQpIHtcXG4zODY5OlxcdFxcdFxcdGlkX3N0YXJ0ID0gQlRDX0JUXzFTVDtcXG4zODcwOlxcdFxcdFxcdGlkX3N0b3AgPSBCVENfQlRfMk5EO1xcbjM4NzE6XFx0XFx0fSBlbHNlIHtcXG4zODcyOlxcdFxcdFxcdGlkX3N0YXJ0ID0gYmlkO1xcbjM4NzM6XFx0XFx0XFx0aWRfc3RvcCA9IGJpZDtcXG4zODc0OlxcdFxcdH1cXG4zODc1OlxcdFxcbjM4NzY6XFx0XFx0Zm9yIChpID0gaWRfc3RhcnQ7IGkgXFx1MDAzYz0gaWRfc3RvcDsgaSsrKSB7XFxuMzg3NzpcXHRcXHRcXHRpZiAoaSA9PSBCVENfQlRfMk5EKSB7XFxuMzg3ODpcXHRcXHRcXHRcXHRpZiAoIShydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZXBhcmFfdmVyIFxcdTAwMjYgQlRDX0ZFQVRfRFVBTF9CVCkpXFxuMzg3OTpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zODgwOlxcdFxcbjM4ODE6XFx0XFx0XFx0XFx0YnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDE7XFxuMzg4MjpcXHRcXHRcXHRcXHRoMmNfZnVuYyB8PSBCVF9IMkNfRlVOQ19CVDJORDtcXG4zODgzOlxcdFxcdFxcdH1cXG4zODg0OlxcdFxcbjM4ODU6XFx0XFx0XFx0YnVmWzBdID0gKHM4KSgtbGV2ZWwpO1xcbjM4ODY6XFx0XFx0XFx0YnVmWzFdID0gcmZfYmFuZDsgIC8qIGJpdC1tYXA6IGJpdDEtXFx1MDAzZTVHSHovNkdoeiwgYml0MC1cXHUwMDNlMi40R0h6ICovXFxuMzg4NzpcXHRcXG4zODg4OlxcdFxcdFxcdGlmICghZm9yY2VfZXhlYyBcXHUwMDI2XFx1MDAyNiAhYnRjLVxcdTAwM2VjbGlfaDJjX2NtZCkge1xcbjM4ODk6XFx0XFx0XFx0XFx0aWYgKHJmX2JhbmQgPT0gUlRXODlfQkFORF8yRyBcXHUwMDI2XFx1MDAyNlxcbjM4OTA6XFx0XFx0XFx0XFx0ICAgIGJ0LVxcdTAwM2V0eF9wb3dlcl9ub3cgPT0gbGV2ZWwpXFxuMzg5MTpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zODkyOlxcdFxcdFxcdFxcdGVsc2UgaWYgKHJmX2JhbmQgIT0gUlRXODlfQkFORF8yRyBcXHUwMDI2XFx1MDAyNlxcbjM4OTM6XFx0XFx0XFx0XFx0XFx0IGJ0LVxcdTAwM2V0eF9wb3dlcl9ub3dfNmcgPT0gbGV2ZWwpXFxuMzg5NDpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zODk1OlxcdFxcdFxcdH1cXG4zODk2OlxcdFxcbjM4OTc6XFx0XFx0XFx0aWYgKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlY2hpcF9nZW4gPT0gUlRXODlfQ0hJUF9BWClcXG4zODk4OlxcdFxcdFxcdFxcdGxlbiA9IFNFVF9SRl9QQVJBX0FYX0xFTjtcXG4zODk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOToyMS43OTk4MjAwNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODY2ODg1ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIEJsdWV0b290aCBUcmFuc21pc3Npb24gUG93ZXIqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYXQgYSBncmFudWxhciBsZXZlbC4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIGl0J3MgYSBwcml2YXRlIGZ1bmN0aW9uLCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBCbHVldG9vdGggdHJhbnNtaXR0ZXIncyBwb3dlciBvdXRwdXQuIEkga25vdyB0aGlzIGlzIGEgY3JpdGljYWwgcGFyYW1ldGVyLiBFbnN1cmluZyBwcm9wZXIgcG93ZXIgbGV2ZWwgaXMgcGFyYW1vdW50IGZvciByYW5nZSwgY29ubmVjdGlvbiBzdGFiaWxpdHksIGFuZCwgb2YgY291cnNlLCBhZGhlcmVuY2UgdG8gcmVndWxhdG9yeSBsaW1pdHMuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaXMgdml0YWwgZm9yIHRyb3VibGVzaG9vdGluZyBjb25uZWN0aXZpdHkgaXNzdWVzIG9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UgaW4gbXkgc3lzdGVtcy4gSSdtIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGludGVyZmFjZSDigJMgd2hldGhlciBpdCdzIGRpcmVjdCByZWdpc3RlciBtYW5pcHVsYXRpb24sIHVzZXMgYSBIQUwsIG9yIGludGVyYWN0cyB3aXRoIGEgQmx1ZXRvb3RoIGNvbnRyb2xsZXIgdGhyb3VnaCBhbiBIQ0kgY29tbWFuZC4gSSdtIGFsc28gY3VyaW91cyBhYm91dCB0aGUgaW5wdXQgcGFyYW1ldGVyczogYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRCbSB2YWx1ZSBkaXJlY3RseSwgb3IgYSBtb3JlIGFic3RyYWN0IGxldmVsPyBBbmQgaG93IGRvZXMgaXQgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnM/IEFueSByYW5nZSBjaGVja3Mgb3IgY2xhbXBpbmc/IEFyZSB0aGVyZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgaW50ZXJuYWwgdmFyaWFibGVzIG9yIHN0YXRlcz8gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIGZsb3cgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGltcGxpY2l0IHBvd2VyIG1hbmFnZW1lbnQgb3IgZHluYW1pYyBwb3dlciBhZGFwdGF0aW9uIGludm9sdmVkLiBNeSBnb2FsIGhlcmUgaXMgYSBmdWxsIGNvbmNlcHR1YWwgbW9kZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjEsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjI1LjY2NjcwOTY5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODkwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzODkwOlxcdFxcdFxcdFxcdCAgICBidC1cXHUwMDNldHhfcG93ZXJfbm93ID09IGxldmVsKVxcbjM4OTE6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzg5MjpcXHRcXHRcXHRcXHRlbHNlIGlmIChyZl9iYW5kICE9IFJUVzg5X0JBTkRfMkcgXFx1MDAyNlxcdTAwMjZcXG4zODkzOlxcdFxcdFxcdFxcdFxcdCBidC1cXHUwMDNldHhfcG93ZXJfbm93XzZnID09IGxldmVsKVxcbjM4OTQ6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzg5NTpcXHRcXHRcXHR9XFxuMzg5NjpcXHRcXG4zODk3OlxcdFxcdFxcdGlmIChydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZWNoaXBfZ2VuID09IFJUVzg5X0NISVBfQVgpXFxuMzg5ODpcXHRcXHRcXHRcXHRsZW4gPSBTRVRfUkZfUEFSQV9BWF9MRU47XFxuMzg5OTpcXHRcXG4zOTAwOlxcdFxcdFxcdGlmICghX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIGgyY19mdW5jLCBidWYsIGxlbikpIHtcXG4zOTAxOlxcdFxcdFxcdFxcdGJ0Yy1cXHUwMDNlZG0ucmZfdHJ4X3BhcmEuYnRfdHhfcG93ZXJbaV0gPSBsZXZlbDtcXG4zOTAyOlxcdFxcdFxcdFxcdGlmIChyZl9iYW5kID09IFJUVzg5X0JBTkRfMkcpXFxuMzkwMzpcXHRcXHRcXHRcXHRcXHRidC1cXHUwMDNldHhfcG93ZXJfbm93ID0gbGV2ZWw7XFxuMzkwNDpcXHRcXHRcXHRcXHRlbHNlXFxuMzkwNTpcXHRcXHRcXHRcXHRcXHRidC1cXHUwMDNldHhfcG93ZXJfbm93XzZnID0gbGV2ZWw7XFxuMzkwNjpcXHRcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuMzkwNzpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBidCVkX3R4X3Bvd2VyX2xldmVsID0gJWRcXFxcblxcXCIsXFxuMzkwODpcXHRcXHRcXHRcXHRcXHQgICAgX19mdW5jX18sIGksIGxldmVsKTtcXG4zOTA5OlxcdFxcdFxcdH1cXG4zOTEwOlxcdFxcdH1cXG4zOTExOlxcdH1cXG4zOTEyOlxcdFxcbjM5MTM6XFx0I2RlZmluZSBCVENfQlRfUlhfTk9STUFMX0xWTCA3XFxuMzkxNDpcXHRzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG4zOTE1OlxcdFxcdFxcdFxcdCAgICB1OCByZl9iYW5kLCB1OCBsZXZlbClcXG4zOTE2OlxcdHtcXG4zOTE3OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4zOTE4OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuMzkxOTpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuMzkyMDpcXHRcXHR1OCBoMmNfZnVuYyA9IFNFVF9CVF9MTkFfQ09OU1RSQUlOO1xcbjM5MjE6XFx0XFx0dTggaSwgaWRfc3RhcnQsIGlkX3N0b3A7XFxuMzkyMjpcXHRcXHRib29sIHN0YXRlID0gZmFsc2U7XFxuMzkyMzpcXHRcXHR1MzIgc2NiZF9iaXQgPSAwO1xcbjM5MjQ6XFx0XFx0dTggYnVmWzJdID0ge307XFxuMzkyNTpcXHRcXHR1OCBsZW4gPSBzaXplb2YoKmJ1Zik7XFxuMzkyNjpcXHRcXG4zOTI3OlxcdFxcdGlmIChidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwIHx8ICFyZl9iYW5kKVxcbjM5Mjg6XFx0XFx0XFx0cmV0dXJuO1xcbjM5Mjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjE5OjI1LjY2NzEzMTM1WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NTE4NzcwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCbHVldG9vdGggVFggUG93ZXIgU2V0dGluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UgaGF2ZSBhIGJ1ZmZlciwgYGJ1ZmAsIGluaXRpYWxpemVkIGFzIGB1OCBidWZbMl0gPSB7fTtgLiBTbyBpdCdzIGEgdHdvLWJ5dGUgYXJyYXksIHplcm9lZCBvdXQuIExpbmUgMzg2MCBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBgdTggbGVuID0gc2l6ZW9mKCpidWYpO2AuIE5vdywgYHNpemVvZigqYnVmKWAgc2hvdWxkIGJlIGAxYCBiZWNhdXNlIGAqYnVmYCBkZXJlZmVyZW5jZXMgdG8gYSBgdThgLCB3aGljaCBpcyBvbmUgYnl0ZS4gVGhvdWdoLCBpZiB0aGUgYGNoaXBfZ2VuYCBpcyBgUlRXODlfQ0hJUF9BWGAsIHRoZW4gdGhlIGxlbmd0aCBjb3VsZCBhY3R1YWxseSBiZSAyIG9yIDEgYXMgZGV0ZXJtaW5lZCBieSAgYFNFVF9SRl9QQVJBX0FYX0xFTmAuXG5cblRoYXQgc2VlbXMgYSBiaXQgb2RkOyB0aGUgYnVmZmVyIGlzICpjbGVhcmx5KiB0d28gYnl0ZXMgd2lkZSwgYm90aCBpbml0aWFsaXplZCwgYW5kIHlldCB0aGUgY29kZSBjYWxjdWxhdGVzIGBsZW5gIGFzIGAxYCAob3Igd2hhdGV2ZXIgYFNFVF9SRl9QQVJBX0FYX0xFTmAgZXZhbHVhdGVzIHRvKS4gIFRoaXMgbWVhbnMgd2UgYXJlIGxvc2luZyBpbmZvcm1hdGlvbi5cblxuVGhlbiwgd2UgaGF2ZSB0aGUgYF9zZXRfYnRfdHhfcG93ZXJgIGZ1bmN0aW9uLCB3aGljaCBjYWxscyBgX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIGgyY19mdW5jLCBidWYsIGxlbilgLiBUaGlzIGlzIHdoZXJlIHdlJ3JlIGFjdHVhbGx5ICpzZW5kaW5nKiB0aGUgY29tbWFuZC4gU28sIHdpdGggdGhpcyBidWZmZXIgYW5kIGxlbmd0aCwgd2UncmUgc2VuZGluZyB3aGF0ZXZlciBpcyBpbiBgYnVmYCB0byB0aGUgZmlybXdhcmUgdXNpbmcgYSBjb21tYW5kLiBUaGlzIGlzIHZlcnkgaW1wb3J0YW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29tbWFuZCBpcyBleHBlY3RpbmcgYW5kIGlmIHRoaXMgYGxlbmAgbWlzbWF0Y2ggaXMgaW50ZW5kZWQuICBJIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYF9zZXRfYnRfdHhfcG93ZXJgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOToyOS41MTkwMTA4M1oiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3MTI3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX3NldF9idF90eF9wb3dlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM4MjE9c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozODUyOnN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsIHU4IGJpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zODUzLVxcdFxcdFxcdCAgICAgdTggcmZfYmFuZCwgdTggbGV2ZWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz00MDU2PXN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtNDE2NS1cXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6NDE2NjpcXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy00MTY3LVxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MjkuNTY1NzI4NDM5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MjM0NzA0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBydHc4OSBDb2V4IERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIGBfc2V0X2J0X3R4X3Bvd2VyYCwgSSBzZWUgdGhleSd2ZSBzaW1wbGlmaWVkIHRoZSBjaGVjay4gSXQgdXNlZCB0byBiZSBgaWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCB8fCAhcmZfYmFuZClgIGFuZCBub3cgaXQncyBqdXN0IGBpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHNjYW4gZm9yIHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzLiBBbnl0aW1lIHlvdSBjaGFuZ2UgYSBjb25kaXRpb25hbCBsaWtlIHRoYXQsIHlvdSBuZWVkIHRvIGJlIHZlcnkgY2FyZWZ1bC5cblxuTXkgZmlyc3QgbGluZSBvZiBhdHRhY2sgaXMgdG8gbG9vayBmb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHBsYWNlcyB3aGVyZSB3ZSBtaWdodCBub3cgYmUgcmVhZGluZyBmcm9tIG1lbW9yeSB0aGF0IHdlIHNob3VsZG4ndCBiZSwgYW55IGBjb3B5X3RvX3VzZXJgIGNhbGxzIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMsIG9yIGFueSB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMuIExldCdzIHNlZS4uLiB0aGUgYHU4IGJ1ZlsyXSA9IHt9O2AgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkLCB3aGljaCBpcyBnb29kLiBXZSBhc3NpZ24gdmFsdWVzIHRvIGBidWZbMF1gIGFuZCBgYnVmWzFdYCwgdGhlIGBsZW5gIHZhcmlhYmxlIGlzIGVpdGhlciAxIG9yIGBTRVRfUkZfUEFSQV9BWF9MRU5gICh3aGljaCBpcyAyKSwgc28gdGhlIGFycmF5IGlzIGZ1bGx5IHdyaXR0ZW4gdG8gYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQuIEltcG9ydGFudGx5LCBub3RoaW5nIGlzIGV2ZXIgY29waWVkIHRvIHVzZXJzcGFjZSwgc28gd2UncmUgc2FmZSB0aGVyZS4gSSdtIG5vdCBzZWVpbmcgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIFRoaXMgbG9va3MgbGlrZSBhIHB1cmVseSBpbnRlcm5hbCBkcml2ZXIgbG9naWMgY2hhbmdlIGluIHRoZSBSZWFsdGVrIHJ0dzg5IGNvZXggZHJpdmVyLiBJdCBhcHBlYXJzIHRoZSBjaGFuZ2UgYWxsb3dzIGByZl9iYW5kID09IDBgIHRvICpub3QqIGJhaWwgb3V0IGVhcmx5IGZyb20gdGhlIGZ1bmN0aW9uLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgX3NldF9yZl90cnhfcGFyYWAgYXJvdW5kIGxpbmUgNDE2NiBhcyB3ZWxsLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIGV4dHJhIGNhdXRpb3VzIHdoZW4gZGVhbGluZyB3aXRoIHJhZGlvLXJlbGF0ZWQgcGFyYW1ldGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTozMy4xODkyMDI2OTNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQxNTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQxNTA6XFx0XFx0XFx0XFx0XFx0cGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLndsX3R4X3Bvd2VyO1xcbjQxNTE6XFx0XFx0XFx0XFx0XFx0cGFyYS53bF9yeF9nYWluW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfcnhfZ2FpbjtcXG40MTUyOlxcdFxcdFxcdFxcdH1cXG40MTUzOlxcdFxcdFxcdFxcdGZvciAoaSA9IEJUQ19CVF8xU1Q7IGkgXFx1MDAzYyBCVENfQUxMX0JUOyBpKyspIHtcXG40MTU0OlxcdFxcdFxcdFxcdFxcdHBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcXG40MTU1OlxcdFxcdFxcdFxcdFxcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3J4X2dhaW47XFxuNDE1NjpcXHRcXHRcXHRcXHR9XFxuNDE1NzpcXHRcXHRcXHR9XFxuNDE1ODpcXHRcXHR9XFxuNDE1OTpcXHRcXG40MTYwOlxcdFxcdGlmIChkbS1cXHUwMDNlZmRkdF90cmFpbikge1xcbjQxNjE6XFx0XFx0XFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgMSwgUlRXODlfUEhZXzApO1xcbjQxNjI6XFx0XFx0XFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBiaWQsIEJUQ19XU0NCX1JYR0FJTiwgdHJ1ZSk7XFxuNDE2MzpcXHRcXHR9IGVsc2Uge1xcbjQxNjQ6XFx0XFx0XFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuNDE2NTpcXHRcXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuNDE2NjpcXHRcXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgdHJ1ZSwgYmlkLCByZl9iYW5kLCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG40MTY3OlxcdFxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHRydWUsIGJpZCwgcmZfYmFuZCwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG40MTY4OlxcdFxcdH1cXG40MTY5OlxcdFxcbjQxNzA6XFx0bmV4dDpcXG40MTcxOlxcdFxcdGlmICghYnQtXFx1MDAzZWVuYWJsZS5ub3cgfHwgZG0tXFx1MDAzZXdsX29ubHkgfHwgd2xfc21hcC1cXHUwMDNlcmZfb2ZmIHx8XFxuNDE3MjpcXHRcXHQgICAgd2xfc21hcC1cXHUwMDNlbHBzID09IEJUQ19MUFNfUkZfT0ZGIHx8IG1vZGUgPT0gQlRDX1dMSU5LX1YwXzVHIHx8XFxuNDE3MzpcXHRcXHQgICAgKHJ0d2Rldi1cXHUwMDNlZGJjY19lbiBcXHUwMDI2XFx1MDAyNiByLVxcdTAwM2VkYmNjXzJnX3BoeSAhPSBSVFc4OV9QSFlfMSkpXFxuNDE3NDpcXHRcXHRcXHR3bF9zdGJfY2hnID0gMDtcXG40MTc1OlxcdFxcdGVsc2VcXG40MTc2OlxcdFxcdFxcdHdsX3N0Yl9jaGcgPSAxO1xcbjQxNzc6XFx0XFxuNDE3ODpcXHRcXHRpZiAod2xfc3RiX2NoZyAhPSBkbS1cXHUwMDNld2xfc3RiX2NoZykge1xcbjQxNzk6XFx0XFx0XFx0ZG0tXFx1MDAzZXdsX3N0Yl9jaGcgPSB3bF9zdGJfY2hnO1xcbjQxODA6XFx0XFx0XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VidGNfd2xfczFfc3RhbmRieShydHdkZXYsIGRtLVxcdTAwM2V3bF9zdGJfY2hnKTtcXG40MTgxOlxcdFxcdH1cXG40MTgyOlxcdH1cXG40MTgzOlxcdFxcbjQxODQ6XFx0c3RhdGljIHZvaWQgX3VwZGF0ZV9idGNfc3RhdGVfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG40MTg1OlxcdHtcXG40MTg2OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG40MTg3OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuNDE4ODpcXHRcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG40MTg5OlxcdFxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MTk6MzMuMTg5NjE3OTIzWiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMjg0OTA3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBTYWZldHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBFc3NlbnRpYWxseSwgaXQncyBqdXN0IHJlbW92aW5nIGB8fCAhcmZfYmFuZGAgZnJvbSB0aGF0IGVhcmx5IHJldHVybiBjb25kaXRpb24gaW4gYF9zZXRfYnRfdHhfcG93ZXIoKWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IHRoZSBsb2NhbCB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHByb3Blcmx5IOKAkyBgYnVmYCBpcyB6ZXJvZWQgb3V0IGFuZCBgbGVuYCBpcyBzZXQgY29ycmVjdGx5LiBJbXBvcnRhbnRseSwgYHJmX2JhbmRgIGlzIHBhc3NlZCBieSB2YWx1ZSwgd2hpY2ggaXMgZ29vZC4gVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlcnNwYWNlLCBvciBldmVuIGluZmx1ZW5jaW5nIGNvbnRyb2wgZmxvdy4gTm8gbmV3IGFsbG9jYXRpb25zIG9yIHBhZGRpbmcgaXNzdWVzLCBlaXRoZXIuXG5cbk5vdywgbGV0IG1lIHN5c3RlbWF0aWNhbGx5IHJ1biB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG4xLiAgKipLZXJuZWwgZGF0YSB0byB1c2Vyc3BhY2U/KiogTm9wZSwgbm90IGhlcmUuIFRoaXMgaXMgYSBjbGVhbiBiaWxsIG9mIGhlYWx0aC5cbjIuICAqKkNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIGRhdGE/KiogQWJzb2x1dGVseSBub3QuIFRoZSB2YXJpYWJsZXMgaW52b2x2ZWQgYXJlIGluaXRpYWxpemVkLlxuMy4gICoqQ29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8qKiBObyBkaWNlLiBFdmVyeXRoaW5nIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBoZXJlLlxuNC4gICoqQm91bmRzIGNoZWNrIHZ1bG5lcmFiaWxpdGllcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhY2Nlc3Mgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk/KiogTm90IGF0IGFsbC4gVGhlIGJvdW5kcyBjaGVja3Mgc2VlbSByb2J1c3QuXG5cblNvLCBhZnRlciBhIHRob3JvdWdoIHJldmlldywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gTGV0J3MgZ2V0IHRoZXNlIHJlc3VsdHMgc2V0LiBUaGlzIGlzIGEgc2ltcGxlIGFuZCBzYWZlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1NiwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzoxOTozNi40MTgxMTEwNTJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIGB8fCAhcmZfYmFuZGAgY2hlY2sgZnJvbSB0aGUgZWFybHkgcmV0dXJuIGNvbmRpdGlvbiBpbiBgX3NldF9idF90eF9wb3dlcigpYCwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlbiB3aGVuIGByZl9iYW5kYCBpcyB6ZXJvLiBBbGwgdmFyaWFibGVzIHdpdGhpbiBgX3NldF9idF90eF9wb3dlcigpYCAoc3VjaCBhcyBgYnVmYCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgb24gdGhlIHN0YWNrIChgdTggYnVmWzJdID0ge307YCksIGFuZCBgcmZfYmFuZGAgaXMgcGFzc2VkIGJ5IHZhbHVlIGFzIGEgYHU4YCBwYXJhbWV0ZXIuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgYHx8ICFyZl9iYW5kYCBjaGVjayBmcm9tIHRoZSBlYXJseSByZXR1cm4gY29uZGl0aW9uIGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBldmVuIHdoZW4gYHJmX2JhbmRgIGlzIHplcm8uIEFsbCB2YXJpYWJsZXMgd2l0aGluIGBfc2V0X2J0X3R4X3Bvd2VyKClgIChzdWNoIGFzIGBidWZgKSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCBvbiB0aGUgc3RhY2sgKGB1OCBidWZbMl0gPSB7fTtgKSwgYW5kIGByZl9iYW5kYCBpcyBwYXNzZWQgYnkgdmFsdWUgYXMgYSBgdThgIHBhcmFtZXRlci4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrlql7[1] Phase: Succeeded StartedAt: 2026-09-11 07:20:20 +0000 UTC FinishedAt: 2026-09-11 07:20:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-11 07:20:20 +0000 UTC FinishedAt: 2026-09-11 07:20:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2] Phase: Succeeded StartedAt: 2026-09-11 07:20:20 +0000 UTC FinishedAt: 2026-09-11 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-11 07:20:20 +0000 UTC FinishedAt: 2026-09-11 08:06:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-11 07:20:20 +0000 UTC FinishedAt: 2026-09-11 07:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-11 07:20:20 +0000 UTC FinishedAt: 2026-09-11 07:20:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowrlql7/series-workflowrlql7-convert-artifact-1571815443/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-11 07:20:30 +0000 UTC FinishedAt: 2026-09-11 07:40:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-11 07:20:30 +0000 UTC FinishedAt: 2026-09-11 07:40:50 +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:*6a34d592-6007-4cb9-a0da-4c1dd662b385,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-workflowrlql7/series-workflowrlql7-convert-artifact-1571815443/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": "567ca502-b2f5-4b84-9e9a-797e2357c989", "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-workflowrlql7/series-workflowrlql7-build-action-721689921/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-11 07:20:30 +0000 UTC FinishedAt: 2026-09-11 07:40:26 +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:*6a34d592-6007-4cb9-a0da-4c1dd662b385,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-workflowrlql7/series-workflowrlql7-convert-artifact-1571815443/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": "567ca502-b2f5-4b84-9e9a-797e2357c989", "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-workflowrlql7/series-workflowrlql7-build-action-721689921/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-11 07:40:50 +0000 UTC FinishedAt: 2026-09-11 07:40:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-11 07:40:50 +0000 UTC FinishedAt: 2026-09-11 07:40:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-11 07:40:50 +0000 UTC FinishedAt: 2026-09-11 07:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-11 07:40:50 +0000 UTC FinishedAt: 2026-09-11 07:40:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowrlql7/series-workflowrlql7-convert-artifact-358081290/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-11 07:41:00 +0000 UTC FinishedAt: 2026-09-11 07:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-11 07:41:00 +0000 UTC FinishedAt: 2026-09-11 07:43:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*567ca502-b2f5-4b84-9e9a-797e2357c989,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-workflowrlql7/series-workflowrlql7-build-action-721689921/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-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-11 07:43:35 +0000 UTC FinishedAt: 2026-09-11 07:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-11 07:43:35 +0000 UTC FinishedAt: 2026-09-11 07:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-11 07:43:35 +0000 UTC FinishedAt: 2026-09-11 08:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-11 07:43:35 +0000 UTC FinishedAt: 2026-09-11 08:02:19 +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:*6a34d592-6007-4cb9-a0da-4c1dd662b385,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-workflowrlql7/series-workflowrlql7-convert-artifact-358081290/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": "8ceda12d-a204-4e22-8fa2-792b73607bf6", "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-workflowrlql7/series-workflowrlql7-build-action-546775342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-11 07:43:35 +0000 UTC FinishedAt: 2026-09-11 08:02:09 +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:*6a34d592-6007-4cb9-a0da-4c1dd662b385,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-workflowrlql7/series-workflowrlql7-convert-artifact-358081290/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": "8ceda12d-a204-4e22-8fa2-792b73607bf6", "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-workflowrlql7/series-workflowrlql7-build-action-546775342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-11 08:02:19 +0000 UTC FinishedAt: 2026-09-11 08:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-11 08:02:19 +0000 UTC FinishedAt: 2026-09-11 08:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-11 08:02:19 +0000 UTC FinishedAt: 2026-09-11 08:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-11 08:02:19 +0000 UTC FinishedAt: 2026-09-11 08:04:15 +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:*8ceda12d-a204-4e22-8fa2-792b73607bf6,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-workflowrlql7/series-workflowrlql7-build-action-546775342/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-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:06:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"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:*567ca502-b2f5-4b84-9e9a-797e2357c989,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ceda12d-a204-4e22-8fa2-792b73607bf6,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-workflowrlql7/series-workflowrlql7-build-action-721689921/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-workflowrlql7/series-workflowrlql7-build-action-546775342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:04:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:04:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"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-workflowrlql7/series-workflowrlql7-convert-artifact-883087007/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-11 08:04:25 +0000 UTC FinishedAt: 2026-09-11 08:04:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-11 08:04:35 +0000 UTC FinishedAt: 2026-09-11 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrlql7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["_set_bt_tx_power","rtw89_btc_ntfy_init","rtw89_btc_ntfy_scan_start","rtw89_btc_ntfy_radio_state","rtw89_btc_c2h_handle"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","MAC80211","USB"],"series_id":"9729e253-4afe-41a7-b2e0-66c3a6dad16c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-11 08:04:35 +0000 UTC FinishedAt: 2026-09-11 08:06:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*567ca502-b2f5-4b84-9e9a-797e2357c989,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ceda12d-a204-4e22-8fa2-792b73607bf6,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-workflowrlql7/series-workflowrlql7-build-action-721689921/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-workflowrlql7/series-workflowrlql7-build-action-546775342/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-workflowrlql7/series-workflowrlql7-convert-artifact-883087007/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,}