Name: series-workflow8qftm Phase: Running StartedAt: 2026-07-31 14:59:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[0] Phase: Succeeded StartedAt: 2026-07-31 14:59:30 +0000 UTC FinishedAt: 2026-07-31 15:23:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 14:59:30 +0000 UTC FinishedAt: 2026-07-31 15:23:05 +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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTL8723BS", "WLAN", "MMC", "CFG80211", "STAGING", "MMC_VUB300", "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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTL8723BS", "WLAN", "MMC", "CFG80211", "STAGING", "MMC_VUB300", "USB" ], "series_id": "b59a5ffe-2dcf-430a-934f-d1712c02e13e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw_recv_entry", "rtw_c2h_wk_cmd", "rtw_drv_register_netdev", "sd_int_dpc" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUTDg3MjNCUyYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtTVEFHSU5HJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X3JlY3ZfZW50cnkmIzM0OywKICAgICYjMzQ7cnR3X2MyaF93a19jbWQmIzM0OywKICAgICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAgICYjMzQ7c2RfaW50X2RwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBidWdzIChtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wdHItZGVyZWYpIGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAoZS5nLiwgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE1OjE5OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jXG5pbmRleCBiOTMyNjcwZjVkNjNhLi5lOWIxMTM2ZGJmNjY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xuQEAgLTE3MTYsNyAmIzQzOzE3MTYsOCBAQCBzdGF0aWMgdm9pZCBjMmhfd2tfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdFx0XHRrZnJlZShjMmhfZXZ0KTtcbiBcdFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0XHR9XG4tXHRcdFx0fVxuJiM0MztcdFx0XHR9IGVsc2VcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuIFx0XHQvKiBTcGVjaWFsIHBvaW50ZXIgdG8gdHJpZ2dlciBjMmhfZXZ0X2NsZWFyIG9ubHkgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jXG5pbmRleCA4NmM1ZTJjNGU3ZGRkLi5mZmNlZTQzMWNhZjU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jXG5AQCAtMTE0Niw3ICYjNDM7MTE0NiwxMCBAQCBzdGF0aWMgdW5pb24gcmVjdl9mcmFtZSAqcmVjdmZyYW1lX2Noa19kZWZyYWcoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZVxuIFxuIFx0XHRpZiAodHlwZSAhPSBXSUZJX0RBVEFfVFlQRSkge1xuIFx0XHRcdHBzdGEgPSBydHdfZ2V0X2JjbWNfc3RhaW5mbyhwYWRhcHRlcik7XG4tXHRcdFx0cGRlZnJhZ19xID0gXHUwMDI2cHN0YS1cdTAwM2VzdGFfcmVjdnByaXYuZGVmcmFnX3E7XG4mIzQzO1x0XHRcdGlmIChwc3RhKVxuJiM0MztcdFx0XHRcdHBkZWZyYWdfcSA9IFx1MDAyNnBzdGEtXHUwMDNlc3RhX3JlY3Zwcml2LmRlZnJhZ19xO1xuJiM0MztcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0cGRlZnJhZ19xID0gTlVMTDtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRwZGVmcmFnX3EgPSBOVUxMO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcbmluZGV4IGYzMTE5NmY1NGIzZTAuLjg0NjMzYTUxZTJkYjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG5AQCAtNzU0LDcgJiM0Mzs3NTQsNiBAQCB1OCBydHdfZnJlZV9kcnZfc3coc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxuIFxuIHN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcbiB7XG4tXHRpbnQgcmV0ID0gX1NVQ0NFU1M7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqcG5ldGRldiA9IHBhZGFwdGVyLVx1MDAzZXBuZXRkZXY7XG4gXG4gXHQvKiBhbGxvYyBuZXRkZXYgbmFtZSAqL1xuQEAgLTc2NSwxOSAmIzQzOzc2NCwxMCBAQCBzdGF0aWMgaW50IF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGNoYXIgKm5hbWUpXG4gXG4gXHQvKiBUZWxsIHRoZSBuZXR3b3JrIHN0YWNrIHdlIGV4aXN0ICovXG4gXHRpZiAocmVnaXN0ZXJfbmV0ZGV2KHBuZXRkZXYpICE9IDApIHtcbi1cdFx0cmV0ID0gX0ZBSUw7XG4tXHRcdGdvdG8gZXJyb3JfcmVnaXN0ZXJfbmV0ZGV2O1xuJiM0MztcdFx0cmV0dXJuIF9GQUlMO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHJldDtcbi1cbi1lcnJvcl9yZWdpc3Rlcl9uZXRkZXY6XG4tXG4tXHRydHdfZnJlZV9kcnZfc3cocGFkYXB0ZXIpO1xuLVxuLVx0cnR3X2ZyZWVfbmV0ZGV2KHBuZXRkZXYpO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gX1NVQ0NFU1M7XG4gfVxuIFxuIGludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcbmluZGV4IGM0M2EwMzkxYTVjYTcuLmY3ZWMwOTMxMGNlOTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcbkBAIC0yODYsNyAmIzQzOzI4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWRhcHRlciAqcnR3X3NkaW9faWYxX2luaXQoc3RydWN0IGR2b2JqX3ByaXYgKmR2b2JqLCBjb25zdCBzdHJ1Y3RcbiBcbiBmcmVlX2hhbF9kYXRhOlxuIFx0aWYgKHN0YXR1cyAhPSBfU1VDQ0VTUyBcdTAwMjZcdTAwMjYgcGFkYXB0ZXItXHUwMDNlSGFsRGF0YSlcbi1cdFx0a2ZyZWUocGFkYXB0ZXItXHUwMDNlSGFsRGF0YSk7XG4mIzQzO1x0XHRydHdfaGFsX2RhdGFfZGVpbml0KHBhZGFwdGVyKTtcbiBcbiBcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MpIHtcbiBcdFx0cnR3X3dkZXZfdW5yZWdpc3RlcihwYWRhcHRlci1cdTAwM2VydHdfd2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUTDg3MjNCUyYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtTVEFHSU5HJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X3JlY3ZfZW50cnkmIzM0OywKICAgICYjMzQ7cnR3X2MyaF93a19jbWQmIzM0OywKICAgICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAgICYjMzQ7c2RfaW50X2RwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBidWdzIChtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wdHItZGVyZWYpIGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAoZS5nLiwgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDE1OjE5OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMKaW5kZXggYjkzMjY3MGY1ZDYzYS4uZTliMTEzNmRiZjY2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jCkBAIC0xNzE2LDcgJiM0MzsxNzE2LDggQEAgc3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCQkJa2ZyZWUoYzJoX2V2dCk7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KLQkJCX0KJiM0MzsJCQl9IGVsc2UKJiM0MzsJCQkJY29udGludWU7CiAJCX0KIAogCQkvKiBTcGVjaWFsIHBvaW50ZXIgdG8gdHJpZ2dlciBjMmhfZXZ0X2NsZWFyIG9ubHkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMKaW5kZXggODZjNWUyYzRlN2RkZC4uZmZjZWU0MzFjYWY1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMKQEAgLTExNDYsNyAmIzQzOzExNDYsMTAgQEAgc3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9jaGtfZGVmcmFnKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmUKIAogCQlpZiAodHlwZSAhPSBXSUZJX0RBVEFfVFlQRSkgewogCQkJcHN0YSA9IHJ0d19nZXRfYmNtY19zdGFpbmZvKHBhZGFwdGVyKTsKLQkJCXBkZWZyYWdfcSA9ICZhbXA7cHN0YS0mZ3Q7c3RhX3JlY3Zwcml2LmRlZnJhZ19xOwomIzQzOwkJCWlmIChwc3RhKQomIzQzOwkJCQlwZGVmcmFnX3EgPSAmYW1wO3BzdGEtJmd0O3N0YV9yZWN2cHJpdi5kZWZyYWdfcTsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCXBkZWZyYWdfcSA9IE5VTEw7CiAJCX0gZWxzZSB7CiAJCQlwZGVmcmFnX3EgPSBOVUxMOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYwppbmRleCBmMzExOTZmNTRiM2UwLi44NDYzM2E1MWUyZGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMKQEAgLTc1NCw3ICYjNDM7NzU0LDYgQEAgdTggcnR3X2ZyZWVfZHJ2X3N3KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcikKIAogc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKQogewotCWludCByZXQgPSBfU1VDQ0VTUzsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqcG5ldGRldiA9IHBhZGFwdGVyLSZndDtwbmV0ZGV2OwogCiAJLyogYWxsb2MgbmV0ZGV2IG5hbWUgKi8KQEAgLTc2NSwxOSAmIzQzOzc2NCwxMCBAQCBzdGF0aWMgaW50IF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGNoYXIgKm5hbWUpCiAKIAkvKiBUZWxsIHRoZSBuZXR3b3JrIHN0YWNrIHdlIGV4aXN0ICovCiAJaWYgKHJlZ2lzdGVyX25ldGRldihwbmV0ZGV2KSAhPSAwKSB7Ci0JCXJldCA9IF9GQUlMOwotCQlnb3RvIGVycm9yX3JlZ2lzdGVyX25ldGRldjsKJiM0MzsJCXJldHVybiBfRkFJTDsKIAl9CiAKLQlyZXR1cm4gcmV0OwotCi1lcnJvcl9yZWdpc3Rlcl9uZXRkZXY6Ci0KLQlydHdfZnJlZV9kcnZfc3cocGFkYXB0ZXIpOwotCi0JcnR3X2ZyZWVfbmV0ZGV2KHBuZXRkZXYpOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIF9TVUNDRVNTOwogfQogCiBpbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKmlmMSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMKaW5kZXggYzQzYTAzOTFhNWNhNy4uZjdlYzA5MzEwY2U5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMKQEAgLTI4Niw3ICYjNDM7Mjg2LDcgQEAgc3RhdGljIHN0cnVjdCBhZGFwdGVyICpydHdfc2Rpb19pZjFfaW5pdChzdHJ1Y3QgZHZvYmpfcHJpdiAqZHZvYmosIGNvbnN0IHN0cnVjdAogCiBmcmVlX2hhbF9kYXRhOgogCWlmIChzdGF0dXMgIT0gX1NVQ0NFU1MgJmFtcDsmYW1wOyBwYWRhcHRlci0mZ3Q7SGFsRGF0YSkKLQkJa2ZyZWUocGFkYXB0ZXItJmd0O0hhbERhdGEpOwomIzQzOwkJcnR3X2hhbF9kYXRhX2RlaW5pdChwYWRhcHRlcik7CiAKIAlpZiAoc3RhdHVzICE9IF9TVUNDRVNTKSB7CiAJCXJ0d193ZGV2X3VucmVnaXN0ZXIocGFkYXB0ZXItJmd0O3J0d193ZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgdGhlIFJUTDg3MjNCUyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IHRvIGBydHdfY21kLmNgLCBgcnR3X3JlY3YuY2AsIGBvc19pbnRmcy5jYCwgYW5kIGBzZGlvX2ludGYuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIHRoZSBzdGFnaW5nIGRyaXZlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lGaSBjYXJkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFib3V0IHRlc3RpbmcgYW5kIGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMuIFNpbmNlIGl0JiMzOTtzIFNESU8sIG15IGluaXRpYWwgaW5jbGluYXRpb24gaXMgdG8gc2VlIGlmIEkgY2FuIHJ1biBpdCBpbiBRRU1VLiBCdXQsIHR5cGljYWwgUUVNVSBzZXR1cHMgZG9uJiMzOTt0IGVhc2lseSBlbXVsYXRlIFNESU8gd2l0aG91dCBzb21lIHNwZWNpZmljIFNESU8gZW11bGF0aW9uIG9yIGEgdmlydHVhbCBTRElPIGRldmljZSBzZXR1cC4gSSBrbm93IFNESU8gZGV2aWNlcyBhcmVuJiMzOTt0IHVzdWFsbHkgZWFzaWx5IGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB3aXRob3V0IGEgbW9jayBvciB2aXJ0dWFsIGJ1cyBpbnRlcmZhY2UuCgpUaGVuIGl0IGhpdHMgbWU6IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIFNESU8gZW11bGF0aW9uIGVpdGhlci4gU28sIEkgbmVlZCB0byBjaGVjayBib3RoIHN5emthbGxlciBhbmQgdGhlIGtlcm5lbCBmb3IgYW55IGV4aXN0aW5nIFNESU8gZW11bGF0aW9uIGNhcGFiaWxpdGllcywganVzdCB0byBiZSBzdXJlLiBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciBvciBub3QgZnV6emluZyB0aGUgYFJUTDg3MjNCU2AgZHJpdmVyIGlzIGV2ZW4gd29ydGggdGhlIGVmZm9ydC4gSXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNvIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGZlYXNpYmlsaXR5IG9mIGFjdHVhbGx5IHRyaWdnZXJpbmcgdGhpcyBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzIGEgd29ydGh3aGlsZSB0YXJnZXQuIFNvLCBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ2AgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMODcyM0JTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoyOmNvbmZpZyBSVEw4NzIzQlNcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzozOlx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4NzIzQlMgU0RJTyBXaXJlbGVzcyBMQU4gTklDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIFdMQU4gXHUwMDI2XHUwMDI2IE1NQyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctOS1cdGhlbHBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoxMDpcdFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgUlRMODcyM0JTIFNESU8gZHJpdmVycywgc3VjaCBhc1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTExLVx0dGhlIHdpZmkgZm91bmQgb24gdGhlIDFzdCBnZW4gSW50ZWwgQ29tcHV0ZSBTdGljaywgdGhlIENISVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTcwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU0RJTyBFbXVsYXRpb24gQ2hhbGxlbmdlKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZC4gVGhpcyBib2lscyBkb3duIHRvIE1NQywgc3BlY2lmaWNhbGx5IHRoZSBTRC9NTUMvU0RJTyB2YXJpYW50cy4gQ2FuIFFFTVUgY29udmluY2luZ2x5IGVtdWxhdGUgdGhlc2U/IEkga25vdyBRRU1VICpkb2VzKiBoYXZlIFNEIGNhcmQgZW11bGF0aW9uLCB0aGF0JiMzOTtzIGEga25vd24gcXVhbnRpdHkuIEJ1dCB3aGF0IGFib3V0IFNESU8/IFNESU8gaXMsIGZ1bmRhbWVudGFsbHksIGZvciBJL08gZGV2aWNlcyAtIHRoaW5ncyBsaWtlIFdpRmkuIEFuZCBJIHNlcmlvdXNseSBkb3VidCB0aGF0IFFFTVUgb2ZmZXJzIGEgZmFpdGhmdWwgZW11bGF0aW9uIG9mIHNvbWV0aGluZyBhcyBzcGVjaWZpYyBhcyBhbiBSVEw4NzIzQlMgU0RJTyBXaUZpIGNhcmQsIG9yIGFueSByZWFsLXdvcmxkIFNESU8gZGV2aWNlIGZvciB0aGF0IG1hdHRlci4KCldoaWNoIHN1Z2dlc3RzIGEgbWFqb3IgaHVyZGxlLiBJZiB0aGF0IGVtdWxhdGlvbiBpc24mIzM5O3QgdGhlcmUsIGl0IG1ha2VzIHJlYWNoaW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZXNlIGRldmljZXMgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciwgZXZlbiBtb3JlIGNvbW1vbiwgUUVNVSwgY29tcGxldGVseSBpbXBvc3NpYmxlLiBXZSYjMzk7cmUgZWZmZWN0aXZlbHkgY3V0IG9mZiBmcm9tIG91ciB0YXJnZXQuCgpMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbi4gU3VyZWx5LCAqc29tZW9uZSogaGFzIHRob3VnaHQgYWJvdXQgU0RJTyBmdXp6aW5nIGluIHRoaXMgY29udGV4dC4KCldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBmdXp6aW5nIGNhcGFiaWxpdGllcyBmb3IgVVNCLCBQQ0ksIHZoY2kgYW5kIG90aGVycywgSSBrbm93IHRoYXQuIEJ1dCBTRElPPyBUaGF0JiMzOTtzIGEgZGlmZmVyZW50IGFuaW1hbC4gTGV0IG1lIHRyeSBhIHF1aWNrIHNlYXJjaCBmb3IgYW55dGhpbmcgbGlrZSBgc3l6X3NkaW9gIG9yIGEgc2ltaWxhciB0ZXJtLiBHb3R0YSBzZWUgaWYgd2UmIzM5O3ZlIGdvdCBzb21lIGV4aXN0aW5nIGZvdW5kYXRpb24gdG8gYnVpbGQgb24gaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDUyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYSBEcml2ZXIgVGFzayoqCgpPa2F5LCBzbyBJIGNhbiYjMzk7dCBqdXN0IGBncmVwYCB0aHJvdWdoIGBzeXMvYCBmb3IgdGhpcyBvbmU7IHRoYXQmIzM5O3Mgbm90IGdvaW5nIHRvIGN1dCBpdC4gSSBuZWVkIHRvIHVzZSBgcmVhZC1maWxlYCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBnZXQgYXQgdGhpcyBtb3JlIGVmZmVjdGl2ZWx5LiBCdXQsIGxvb2tpbmcgYXQgdGhlIHByb21wdCwgaXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIGxpa2UgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbmQgYW1kZ3B1LCB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLiBJdCYjMzk7cyBleHBsaWNpdGx5IHNheWluZyB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUgdGhlc2UgZHJpdmVycyBkZXBlbmQgb24uIEl0IGFsc28gZmxhZ3MgY29kZSBwYXRocyB0aGF0IGFyZSBlbnRpcmVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgY2FsbHMgb3V0IHRoaW5ncyBsaWtlIHVzYiBnYWRnZXRzIGFuZCBtYWM4MDIxMV9od3NpbS4KClNpbmNlIHRoZSBSVEw4NzIzQlMgaXMgYW4gU0RJTyBXaUZpIGNhcmQsIGFuZCBJIGtub3cgb2Ygbm8gc29mdHdhcmUgZW11bGF0aW9uIHdpdGhpbiBRRU1VIHRoYXQgY292ZXJzIGl0LCBpdCAqc2hvdWxkKiBiZSB1bnJlYWNoYWJsZS4gQnV0IHdhaXQsIEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIElzIHRoZXJlICphbnkqIHBvc3NpYmlsaXR5IHRoYXQgaXQgY2FuIGJlIHJlYWNoZWQgdGhyb3VnaCBzb21lIG90aGVyIG1lY2hhbmlzbT8gTWF5YmUgU0RJTyBpbmplY3Rpb24/IEJldHRlciB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGNvZGUgcGF0aHMgaW4gdGhlIGtlcm5lbCBmb3IgU0RJTyBpbmplY3Rpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHRob3JvdWdoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDEwMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT03PW1tY19jb3JlLXlcdFx0XHQ6PSBjb3JlLm8gYnVzLm8gaG9zdC5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlLTgtXHRcdFx0XHQgICBtbWMubyBtbWNfb3BzLm8gc2QubyBzZF9vcHMubyBcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZTo5Olx0XHRcdFx0ICAgc2Rpby5vIHNkaW9fb3BzLm8gc2Rpb19idXMubyBcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToxMDpcdFx0XHRcdCAgIHNkaW9fY2lzLm8gc2Rpb19pby5vIHNkaW9faXJxLm8gc2RfdWhzMi5vXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMTEtXHRcdFx0XHQgICBzbG90LWdwaW8ubyByZWd1bGF0b3Iub1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX01NQ19URVNUKVx0XHQmIzQzOz0gbW1jX3Rlc3Qub1xuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfU0RJT19VQVJUKVx0XHQmIzQzOz0gc2Rpb191YXJ0Lm9cbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMjEtbW1jX2NvcmUtJChDT05GSUdfTU1DX0NSWVBUTylcdCYjNDM7PSBjcnlwdG8ub1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMjYtI2luY2x1ZGUgXCYjMzQ7aG9zdC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjI3OiNpbmNsdWRlIFwmIzM0O3NkaW9fY2lzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMjgtI2luY2x1ZGUgXCYjMzQ7YnVzLmhcJiMzNDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTU5PW1tY19idXNfdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtODgtXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjg5Olx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkgfHwgbW1jX2NhcmRfc2RfY29tYm8oY2FyZCkpIHtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtOTAtXHRcdHJldHZhbCA9IGFkZF91ZXZlbnRfdmFyKGVudiwgXCYjMzQ7U0RJT19JRD0lMDRYOiUwNFhcJiMzNDssXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0xMTAtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MTExOlx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYz0yNjQ9c3RhdGljIHZvaWQgbW1jX3JlbGVhc2VfY2FyZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjctXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjI2ODpcdHNkaW9fZnJlZV9jb21tb25fY2lzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjktXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmgtNDUtLypcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oOjQ2OiAqIFRoZSB3b3JsZCBpcyBub3QgcGVyZmVjdCBhbmQgc3VwcGxpZXMgdXMgd2l0aCBicm9rZW4gbW1jL3NkaW8gZGV2aWNlcy5cbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oLTQ3LSAqIEZvciBhdCBsZWFzdCBzb21lIG9mIHRoZXNlIGJ1Z3Mgd2UgbmVlZCBhIHdvcmstYXJvdW5kLlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQxLSNpbmNsdWRlIFwmIzM0O2hvc3QuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDI6I2luY2x1ZGUgXCYjMzQ7c2Rpb19idXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDMtI2luY2x1ZGUgXCYjMzQ7cHdyc2VxLmhcJiMzNDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00Ni0jaW5jbHVkZSBcJiMzNDtzZF9vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDc6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjE2PXN0YXRpYyB2b2lkIF9fbW1jX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMjgtXHQvKlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjI5Olx0ICogRm9yIHNkaW8gcncgY29tbWFuZHMgd2UgbXVzdCB3YWl0IGZvciBjYXJkIGJ1c3kgb3RoZXJ3aXNlIHNvbWVcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMDpcdCAqIHNkaW8gZGV2aWNlcyB3b24mIzM5O3Qgd29yayBwcm9wZXJseS5cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMS1cdCAqIEFuZCBieXBhc3MgSS9PIGFib3J0LCByZXNldCBhbmQgYnVzIHN1c3BlbmQgb3BlcmF0aW9ucy5cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMi1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMzOlx0aWYgKHNkaW9faXNfaW9fYnVzeShtcnEtXHUwMDNlY21kLVx1MDAzZW9wY29kZSwgbXJxLVx1MDAzZWNtZC1cdTAwM2VhcmcpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjM0LVx0ICAgIGhvc3QtXHUwMDNlb3BzLVx1MDAzZWNhcmRfYnVzeSkge1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTY2MD12b2lkIG1tY19zZXRfZGF0YV90aW1lb3V0KHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IG1tY19jYXJkICpjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2Ni1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NjY3Olx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpIHtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2OC1cdFx0ZGF0YS1cdTAwM2V0aW1lb3V0X25zID0gMTAwMDAwMDAwMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMDk5PXN0YXRpYyBpbnQgbW1jX3Jlc2Nhbl90cnlfZnJlcShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHVuc2lnbmVkIGZyZXEpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNC1cdC8qXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTE1Olx0ICogc2Rpb19yZXNldCBzZW5kcyBDTUQ1MiB0byByZXNldCBjYXJkLiAgU2luY2Ugd2UgZG8gbm90IGtub3dcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMTYtXHQgKiBpZiB0aGUgY2FyZCBpcyBiZWluZyByZS1pbml0aWFsaXplZCwganVzdCBzZW5kIGl0LiAgQ01ENTJcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIwLVx0aWYgKCEoaG9zdC1cdTAwM2VjYXBzMiBcdTAwMjYgTU1DX0NBUDJfTk9fU0RJTykpXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTIxOlx0XHRzZGlvX3Jlc2V0KGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMi1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTMzLVx0aWYgKCEoaG9zdC1cdTAwM2VjYXBzMiBcdTAwMjYgTU1DX0NBUDJfTk9fU0RJTykpXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTM0Olx0XHRpZiAoIW1tY19hdHRhY2hfc2Rpbyhob3N0KSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzUtXHRcdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjM5Mz1zdGF0aWMgaW50IF9faW5pdCBtbWNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDQtXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyNDA1Olx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9idXMoKTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTI0MTg9c3RhdGljIHZvaWQgX19leGl0IG1tY19leGl0KHZvaWQpXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDE5LXtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MjA6XHRzZGlvX3VucmVnaXN0ZXJfYnVzKCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDIxLVx0bW1jX3VucmVnaXN0ZXJfaG9zdF9jbGFzcygpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oPTg3PWludCBtbWNfYXR0YWNoX3NkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaDo4ODppbnQgbW1jX2F0dGFjaF9zZGlvKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaC04OS1pbnQgbW1jX2F0dGFjaF9zZF91aHMyKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMjktI2luY2x1ZGUgXCYjMzQ7cHdyc2VxLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjMwOiNpbmNsdWRlIFwmIzM0O3NkaW9fb3BzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTMxLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jPTI2NT1pbnQgbW1jX29mX3BhcnNlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjctXHRcdGhvc3QtXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX0hXX1JFU0VUO1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzY4Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDtjYXAtc2Rpby1pcnFcJiMzNDspKVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY5LVx0XHRob3N0LVx1MDAzZWNhcHMgfD0gTU1DX0NBUF9TRElPX0lSUTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zOTMtXHRcdGhvc3QtXHUwMDNlY2FwczIgfD0gTU1DX0NBUDJfSFM0MDBfRVM7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozOTQ6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O25vLXNkaW9cJiMzNDspKVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzk1LVx0XHRob3N0LVx1MDAzZWNhcHMyIHw9IE1NQ19DQVAyX05PX1NESU87XG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NTEyPXN0cnVjdCBtbWNfaG9zdCAqbW1jX2FsbG9jX2hvc3QoaW50IGV4dHJhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNTU4LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2aG9zdC1cdTAwM2VkZXRlY3QsIG1tY19yZXNjYW4pO1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NTU5Olx0SU5JVF9XT1JLKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yaywgc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NjAtXHR0aW1lcl9zZXR1cChcdTAwMjZob3N0LVx1MDAzZXJldHVuZV90aW1lciwgbW1jX3JldHVuZV90aW1lciwgMCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NjEwPXN0YXRpYyBpbnQgbW1jX3ZhbGlkYXRlX2hvc3RfY2FwcyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE0LVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE1Olx0aWYgKGNhcHMgXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEgXHUwMDI2XHUwMDI2ICFob3N0LVx1MDAzZW9wcy1cdTAwM2VlbmFibGVfc2Rpb19pcnEpIHtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjYxNjpcdFx0ZGV2X3dhcm4oZGV2LCBcJiMzNDttaXNzaW5nIC1cdTAwM2VlbmFibGVfc2Rpb19pcnEoKSBvcHNcXG5cJiMzNDspO1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTQ6I2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL3NkaW9faWRzLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaD0xNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgbW1jX2V4dF9jc2RfZml4dXBzW10gPSB7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xODgtXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTkwLVx0U0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9USV9XTDEyNTEsIFNESU9fREVWSUNFX0lEX1RJX1dMMTI1MSxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTIxNi1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MjE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fY2FyZF9pbml0X21ldGhvZHNbXSA9IHtcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE4LVx0U0RJT19GSVhVUF9DT01QQVRJQkxFKFwmIzM0O3RpLHdsMTI1MVwmIzM0Oywgd2wxMjUxX3F1aXJrLCAwKSxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzQ4PU1NQ19ERVZfQVRUUihyZXZpc2lvbiwgXCYjMzQ7JXUuJXVcXG5cJiMzNDssIGNhcmQtXHUwMDNlbWFqb3JfcmV2LCBjYXJkLVx1MDAzZW1pbm9yX3Jldik7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzQ5LVxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc1MDojZGVmaW5lIHNkaW9faW5mb19hdHRyKG51bSlcdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc1MS1zdGF0aWMgc3NpemVfdCBpbmZvIyNudW0jI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc2MT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc2Mi1cbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjM6c2Rpb19pbmZvX2F0dHIoMSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY0OnNkaW9faW5mb19hdHRyKDIpO1xuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NTpzZGlvX2luZm9fYXR0cigzKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjY6c2Rpb19pbmZvX2F0dHIoNCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzY3LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTItLypcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM6ICogIGxpbnV4L2RyaXZlcnMvbW1jL3NkaW8uY1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNC0gKlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9tbWMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL3NkaW8uaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY6I2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL3NkaW9fZnVuYy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNzojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjQtI2luY2x1ZGUgXCYjMzQ7c2QuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MjU6I2luY2x1ZGUgXCYjMzQ7c2Rpb19idXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYtI2luY2x1ZGUgXCYjMzQ7bW1jX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNy0jaW5jbHVkZSBcJiMzNDtzZF9vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjg6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk6I2luY2x1ZGUgXCYjMzQ7c2Rpb19jaXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzAtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9MzU9TU1DX0RFVl9BVFRSKHJjYSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7LCBjYXJkLVx1MDAzZXJjYSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNi1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3OiNkZWZpbmUgc2Rpb19pbmZvX2F0dHIobnVtKVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOC1zdGF0aWMgc3NpemVfdCBpbmZvIyNudW0jI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9NDg9c3RhdGljIERFVklDRV9BVFRSX1JPKGluZm8jI251bSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ5LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTA6c2Rpb19pbmZvX2F0dHIoMSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTpzZGlvX2luZm9fYXR0cigyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUyOnNkaW9faW5mb19hdHRyKDMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTM6c2Rpb19pbmZvX2F0dHIoNCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01NC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjU1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpzZGlvX3N0ZF9hdHRyc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTYtXHRcdTAwMjZkZXZfYXR0cl92ZW5kb3IuYXR0cixcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02Ni19O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Njc6QVRUUklCVVRFX0dST1VQUyhzZGlvX3N0ZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgc2Rpb190eXBlID0ge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzA6XHQuZ3JvdXBzID0gc2Rpb19zdGRfZ3JvdXBzLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzEtfTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcyLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM6c3RhdGljIGludCBzZGlvX3JlYWRfZmJyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAyLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAzOnN0YXRpYyBpbnQgc2Rpb19pbml0X2Z1bmMoc3RydWN0IG1tY19jYXJkICpjYXJkLCB1bnNpZ25lZCBpbnQgZm4pXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1LVx0aW50IHJldDtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNjpcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmM7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDctXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExOlx0ZnVuYyA9IHNkaW9fYWxsb2NfZnVuYyhjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMi1cdGlmIChJU19FUlIoZnVuYykpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3LVx0aWYgKCEoY2FyZC1cdTAwM2VxdWlya3MgXHUwMDI2IE1NQ19RVUlSS19OT05TVERfU0RJTykpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODpcdFx0cmV0ID0gc2Rpb19yZWFkX2ZicihmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExOS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMjEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMjI6XHRcdHJldCA9IHNkaW9fcmVhZF9mdW5jX2NpcyhmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMy1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMzE6XHRjYXJkLVx1MDAzZXNkaW9fZnVuY1tmbiAtIDFdID0gZnVuYztcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzMi1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzktXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0MDpcdHNkaW9fcmVtb3ZlX2Z1bmMoZnVuYyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDEtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0NDpzdGF0aWMgaW50IHNkaW9fcmVhZF9jY2NyKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTMyIG9jcilcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0NS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTYzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY0Olx0Y2FyZC1cdTAwM2VjY2NyLnNkaW9fdnNuID0gKGRhdGEgXHUwMDI2IDB4ZjApIFx1MDAzZVx1MDAzZSA0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTY1LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI2MTpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX3dpZGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYyLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTMtICogb2YgdGhlIGNhcmQuIFRoaXMgbWF5IGJlIHJlcXVpcmVkIG9uIGNlcnRhaW4gc2V0dXBzIG9mIGJvYXJkcyxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5NDogKiBjb250cm9sbGVycyBhbmQgZW1iZWRkZWQgc2RpbyBkZXZpY2Ugd2hpY2ggZG8gbm90IG5lZWQgdGhlIGNhcmQmIzM5O3NcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5NS0gKiBwdWxsLXVwLiBBcyBhIHJlc3VsdCwgY2FyZCBkZXRlY3Rpb24gaXMgZGlzYWJsZWQgYW5kIHBvd2VyIGlzIHNhdmVkLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk2LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk3OnN0YXRpYyBpbnQgc2Rpb19kaXNhYmxlX2NkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5OC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzE4OnN0YXRpYyBpbnQgc2Rpb19kaXNhYmxlX3dpZGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNDctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNDg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzQ5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNTEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNTI6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1My1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY1LW91dDpcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM2NjpcdHJldHVybiBzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2Ny19XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY5LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzcwOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzcxLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzQ6XHRlcnIgPSBzZGlvX2VuYWJsZV93aWRlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc1LVx0aWYgKGVyciBcdTAwM2M9IDApXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzYtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzc6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3OC1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzgyLVx0XHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozODM6XHRcdFx0c2Rpb19kaXNhYmxlX3dpZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zODQtXHRcdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozOTc6c3RhdGljIGludCBtbWNfc2Rpb19zd2l0Y2hfaHMoc3RydWN0IG1tY19jYXJkICpjYXJkLCBpbnQgZW5hYmxlKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MjYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mjc6c3RhdGljIGludCBzZGlvX2VuYWJsZV9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00Mjgte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMTpcdHJldCA9IG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCB0cnVlKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMjpcdGlmIChyZXQgXHUwMDNjPSAwIHx8IG1tY19jYXJkX3NkaW8oY2FyZCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzMtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM2LVx0aWYgKHJldCBcdTAwM2M9IDApXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mzc6XHRcdG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCBmYWxzZSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDQyOnN0YXRpYyB1bnNpZ25lZCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ0My17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY1LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDY2OnN0YXRpYyB1bnNpZ25lZCBjaGFyIGhvc3RfZHJpdmVfdG9fc2Rpb19kcml2ZShpbnQgaG9zdF9zdHJlbmd0aClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2Ny17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDgxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDgyOnN0YXRpYyB2b2lkIHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ4My17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTAzLVx0XHRjYXJkX3N0cmVuZ3RoIFx1MDAyNj0gfihTRElPX0RSSVZFX0RUU3hfTUFTS1x1MDAzY1x1MDAzY1NESU9fRFJJVkVfRFRTeF9TSElGVCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDQ6XHRcdGNhcmRfc3RyZW5ndGggfD0gaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGRyaXZlX3N0cmVuZ3RoKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUwNS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MTgtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTk6c3RhdGljIGludCBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MjAte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5Mi0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjU5MzpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTk0LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDAtXHQvKiBTd2l0Y2ggdG8gd2lkZXIgYnVzICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDE6XHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA1LVx0LyogU2V0IHRoZSBkcml2ZXIgc3RyZW5ndGggZm9yIHRoZSBjYXJkICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDY6XHRzZGlvX3NlbGVjdF9kcml2ZXJfdHlwZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwOC1cdC8qIFNldCBidXMgc3BlZWQgbW9kZSBvZiB0aGUgY2FyZCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA5Olx0ZXJyID0gc2Rpb19zZXRfYnVzX3NwZWVkX21vZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MTAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYyNC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYyNTpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9pbml0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYyNi1cdFx0XHQgICAgIHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzItXHQgKiBSZXNldCB0aGUgY2FyZCBieSBwZXJmb3JtaW5nIHRoZSBzYW1lIHN0ZXBzIHRoYXQgYXJlIHRha2VuIGJ5XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MzM6XHQgKiBtbWNfcmVzY2FuX3RyeV9mcmVxKCkgYW5kIG1tY19hdHRhY2hfc2RpbygpIGR1cmluZyBhIFwmIzM0O25vcm1hbFwmIzM0OyBwcm9iZS5cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNC1cdCAqXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MzU6XHQgKiBzZGlvX3Jlc2V0KCkgaXMgdGVjaG5pY2FsbHkgbm90IG5lZWRlZC4gSGF2aW5nIGp1c3QgcG93ZXJlZCB1cCB0aGVcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNi1cdCAqIGhhcmR3YXJlLCBpdCBzaG91bGQgYWxyZWFkeSBiZSBpbiByZXNldCBzdGF0ZS4gSG93ZXZlciwgc29tZVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0Ny1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY0ODpcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDktXHRtbWNfZ29faWRsZShob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NTktICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NjA6c3RhdGljIGludCBtbWNfc2Rpb19pbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYxLVx0XHRcdCAgICAgIHN0cnVjdCBtbWNfY2FyZCAqb2xkY2FyZClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OTktXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcwMDpcdGNhcmQgPSBtbWNfYWxsb2NfY2FyZChob3N0LCBcdTAwMjZzZGlvX3R5cGUpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzAxLVx0aWYgKElTX0VSUihjYXJkKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MTY6XHRcdGlmIChvbGRjYXJkIFx1MDAyNlx1MDAyNiAhbW1jX2NhcmRfc2RpbyhvbGRjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE3LVx0XHRcdGVyciA9IC1FTk9FTlQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI2LVx0XHRob3N0LVx1MDAzZW9wcy1cdTAwM2Vpbml0X2NhcmQoaG9zdCwgY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3Mjc6XHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fY2FyZF9pbml0X21ldGhvZHMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI4LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTczOC1cdCAqIGZhaWxzIHRvIGNoZWNrIHJvY3IgXHUwMDI2IFI0XzE4Vl9QUkVTRU5ULCAgYnV0IHdlIHN0aWxsIG5lZWQgdG9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjczOTpcdCAqIHRyeSB0byBpbml0IHVocyBjYXJkLiBzZGlvX3JlYWRfY2NjciB3aWxsIHRha2Ugb3ZlciB0aGlzIHRhc2tcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0MC1cdCAqIHRvIG1ha2Ugc3VyZSB3aGljaCBzcGVlZCBtb2RlIHNob3VsZCB3b3JrLlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0NC1cdFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3NDU6XHRcdFx0bW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgb2NyX2NhcmQsIGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ2LVx0XHRcdHJldHJpZXMtLTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTQtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNTpcdGVyciA9IHNkaW9fcmVhZF9jY2NyKGNhcmQsIG9jcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTYtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4MTc6XHRcdG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIG9jcl9jYXJkLCBjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxOC1cdFx0aWYgKG9jciBcdTAwMjYgUjRfMThWX1BSRVNFTlQpIHtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MjgtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgyOTpcdGVyciA9IHNkaW9fcmVhZF9jb21tb25fY2lzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODMwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NDMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NDQ6XHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fZml4dXBfbWV0aG9kcyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NDUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODYxLVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NjI6XHRlcnIgPSBzZGlvX2Rpc2FibGVfY2QoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2OC1cdGlmICgob2NyIFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkgXHUwMDI2XHUwMDI2IGNhcmQtXHUwMDNlc3dfY2Fwcy5zZDNfYnVzX21vZGUpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2OTpcdFx0ZXJyID0gbW1jX3NkaW9faW5pdF91aHNfY2FyZChjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3MC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzUtXHRcdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODc2Olx0XHRlcnIgPSBzZGlvX2VuYWJsZV9ocyhjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3Ny1cdFx0aWYgKGVyciBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODQtXHRcdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODg1Olx0XHRtbWNfc2V0X2Nsb2NrKGhvc3QsIG1tY19zZGlvX2dldF9tYXhfY2xvY2soY2FyZCkpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg2LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4OS1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4OTA6XHRcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODkxLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxMy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxNDpzdGF0aWMgaW50IG1tY19zZGlvX3JlaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxNS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE4Olx0cmV0ID0gbW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZW9jciwgTlVMTCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyMjpcdHJldHVybiBtbWNfc2Rpb19pbml0X2NhcmQoaG9zdCwgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZW9jciwgaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyMy19XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTI3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTI4OnN0YXRpYyB2b2lkIG1tY19zZGlvX3JlbW92ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05Mjkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkzMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMjpcdGZvciAoaSA9IDA7aSBcdTAwM2MgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY3M7aSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMzpcdFx0aWYgKGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV0pIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzNDpcdFx0XHRzZGlvX3JlbW92ZV9mdW5jKGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV0pO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM1Olx0XHRcdGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV0gPSBOVUxMO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTM2LVx0XHR9XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ1LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fYWxpdmUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ3LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NTctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5NTg6c3RhdGljIHZvaWQgbW1jX3NkaW9fZGV0ZWN0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1OS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTkzLVx0aWYgKGVycikge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTk0Olx0XHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwNy0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMDg6c3RhdGljIGludCBtbWNfc2Rpb19wcmVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDExLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxMjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxMzpcdFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYyA9IGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV07XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDE0Olx0XHRpZiAoZnVuYyBcdTAwMjZcdTAwMjYgc2Rpb19mdW5jX3ByZXNlbnQoZnVuYykgXHUwMDI2XHUwMDI2IGZ1bmMtXHUwMDNlZGV2LmRyaXZlcikge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxNS1cdFx0XHRjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG1vcHMgPSBmdW5jLVx1MDAzZWRldi5kcml2ZXItXHUwMDNlcG07XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAzMi1cdC8qIFJlbW92ZSB0aGUgU0RJTyBjYXJkIGFuZCBsZXQgaXQgYmUgcmUtZGV0ZWN0ZWQgbGF0ZXIgb24uICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDMzOlx0bW1jX3NkaW9fcmVtb3ZlKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAzNC1cdG1tY19jbGFpbV9ob3N0KGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDUtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ3LXtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDg6XHRXQVJOX09OKGhvc3QtXHUwMDNlc2Rpb19pcnFzIFx1MDAyNlx1MDAyNiAhbW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ5LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTEtXHRtbWNfY2FyZF9zZXRfc3VzcGVuZGVkKGhvc3QtXHUwMDNlY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDUyOlx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZob3N0LVx1MDAzZXNkaW9faXJxX3dvcmspO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1My1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU1LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA1NjpcdGlmIChtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpIFx1MDAyNlx1MDAyNiBtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA1NzpcdFx0c2Rpb19kaXNhYmxlXzRiaXRfYnVzKGhvc3QtXHUwMDNlY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU4LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNzAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDcxOnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNzIte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTUtXHRcdH1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwOTY6XHRcdGVyciA9IG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NzpcdH0gZWxzZSBpZiAobW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5OC1cdFx0Lypcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAzLVx0XHRtbWNfcmV0dW5lX2hvbGRfbm93KGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEwNDpcdFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDUtXHRcdG1tY19yZXR1bmVfcmVsZWFzZShob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTEzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNDpcdGlmIChob3N0LVx1MDAzZXNkaW9faXJxcykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNS1cdFx0aWYgKCEoaG9zdC1cdTAwM2VjYXBzMiBcdTAwMjYgTU1DX0NBUDJfU0RJT19JUlFfTk9USFJFQUQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNjpcdFx0XHR3YWtlX3VwX3Byb2Nlc3MoaG9zdC1cdTAwM2VzZGlvX2lycV90aHJlYWQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNy1cdFx0ZWxzZSBpZiAoaG9zdC1cdTAwM2VjYXBzIFx1MDAyNiBNTUNfQ0FQX1NESU9fSVJRKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExODpcdFx0XHRzY2hlZHVsZV93b3JrKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE5LVx0fVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTI4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMzctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTM4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcnVudGltZV9yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0NC1cdG1tY19wb3dlcl91cChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNDU6XHRyZXQgPSBtbWNfc2Rpb19yZWluaXRfY2FyZChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNDYtXHRtbWNfcmVsZWFzZV9ob3N0KGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTU3OnN0YXRpYyBpbnQgbW1jX3NkaW9faHdfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1OC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2NS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE2NjpcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjYXJkLVx1MDAzZXNkaW9fZnVuY3NfcHJvYmVkKSBcdTAwM2UgMSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2Ny1cdFx0aWYgKG1tY19jYXJkX3JlbW92ZWQoY2FyZCkpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3OS1cdG1tY19wb3dlcl9jeWNsZShob3N0LCBjYXJkLVx1MDAzZW9jcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgwOlx0cmV0dXJuIG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4MS19XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTgyLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MzpzdGF0aWMgaW50IG1tY19zZGlvX3N3X3Jlc2V0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODQte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4NS1cdG1tY19zZXRfY2xvY2soaG9zdCwgaG9zdC1cdTAwM2VmX2luaXQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4NjpcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg3LVx0bW1jX2dvX2lkbGUoaG9zdCk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqU0RJTyBUZXN0aW5nIHdpdGggU3l6a2FsbGVyOiBBIFF1aWNrIENoZWNrKioKCkhtbSwgcmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIFN5emthbGxlciBhbHJlYWR5IGhhcyBzb21ldGhpbmcgaW4gcGxhY2UgZm9yIFNESU8gZGV2aWNlIHRlc3RpbmcuIFRoYXQgd291bGQgc2F2ZSBhIGxvdCBvZiByZWludmVudGluZyB0aGUgd2hlZWwhIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gc3RhcnQgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgYHN5el9gIHBzZXVkby1zeXNjYWxsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIFNESU8uIFRoYXQgbmFtaW5nIGNvbnZlbnRpb24gaXMgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIG9mIGJ1aWx0LWluIHN1cHBvcnQsIHJpZ2h0PyBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIHRocm91Z2ggdGhlIHN5c2NhbGwgZGVmaW5pdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTc4MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbnN0cmFpbnRzIGFuZCBFeHBsb3JpbmcgQWx0ZXJuYXRpdmVzKioKCk9rYXksIHNvIEkgY2FuJiMzOTt0IGp1c3QgYGdyZXBgIHRoZSBgc3lzL2AgZGlyZWN0b3J5OyB0aGF0JiMzOTtzIG91dC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWdhaW5zdCB0aGF0IGJlY2F1c2UgaXQmIzM5O3Mgc3l6a2FsbGVyLXNwZWNpZmljIHN0dWZmLCBub3Qga2VybmVsIGNvZGUuIFRoZXkgc2F5IHRvIHVzZSBge3sudG9vbFJlYWREZXNjcmlwdGlvbn19YCBpbnN0ZWFkLCBidXQgSSBkb24mIzM5O3Qgc2VlIHRoYXQgdG9vbCBhdmFpbGFibGUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluc3RydWN0aW9ucy4KCkFscmlnaHQsIHRoZSBwcm9tcHQgaXMgbGlzdGluZyBzb21lIGV4cGxpY2l0IGV4Y2x1c2lvbnM6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBjb2RlLCB0aGluZ3MgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIGFuZCBjb2RlIHRoYXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSXQgZ2l2ZXMgZXhhbXBsZXMgbGlrZSBgdXNiIGdhZGdldGAgYW5kIGBtYWM4MDIxMV9od3NpbWAuCgpOb3csIHRoZSBzcGVjaWZpYyB0aGluZyBJJiMzOTttIGxvb2tpbmcgYXQsIHRoZSBSVEw4NzIzQlMsIGlzIGFuIFNESU8gV2lGaSBjYXJkLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3RhbmRhcmQgUUVNVSBvciBldmVuIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb2ZmZXIgYW55IFNESU8gZW11bGF0aW9uPyBObywgYG1hYzgwMjExX2h3c2ltYCBpcyBzcGVjaWZpY2FsbHkgZm9yIGVtdWxhdGluZyBtYWM4MDIxMSBoYXJkd2FyZSwgbm90IFNESU8uIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZG8gU0RJTyBlaXRoZXIuIFNvIHRoYXQgY29uZmlybXMgdGhhdCBTRElPIGRldmljZXMgYXJlIG5vdCBlbXVsYXRlZCwgYW5kIEkgY2Fubm90IHVzZSBRRU1VIHRvIHByb2JlIFJUTDg3MjNCUy4KCkJ1dCB3YWl0LCBob2xkIG9uLiBNYXliZSwganVzdCBtYXliZSwgdGhpcyBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIGFuIGFsdGVybmF0ZSBwYXRoLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBiYWNrZG9vciB0byB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZGlvX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTQ1MT1zdGF0aWMgaW50IF9faW5pdCBydHdfZHJ2X2VudHJ5KHZvaWQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTIte1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDUzOlx0cmV0dXJuIHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnJ0bDg3MjNic19zZGlvX2RyaXZlcik7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY2NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciYjMzk7cyBSZWFjaGFiaWxpdHkgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQmIzM5O3MgdXNpbmcgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBkZXNpZ25lZCB0byB3b3JrIHdpdGggU0RJTyBkZXZpY2VzLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGRyaXZlciBiaW5kcyB0byBhbiBTRElPIGRldmljZSwgbmF0dXJhbGx5LiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCAqd2l0aG91dCogYW4gYWN0dWFsIFNESU8gZGV2aWNlIHByZXNlbnQsIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBiZSBpbnZva2VkLiBBbmQgdGhhdOKAmXMgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uCgpHaXZlbiB0aGUgY29udGV4dCwgSSBrbm93IHRoYXQgUUVNVSwgYXMgaXQgc3RhbmRzLCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBSVEw4NzIzQlMgU0RJTyBkZXZpY2UuIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiwgYW5kIGNvbnNlcXVlbnRseSwgdGhlIGNvcmUgbG9naWMgb2YgdGhpcyBkcml2ZXIsIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBRRU1VIHNldHVwLiBJdCBhbHNvIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdHJpZ2dlciBhbnkgYnVnIHRoYXQgbWF5IGxpZSB3aXRoaW4gdGhlIGNvZGUuIFRoZSBzYW1lIHdvdWxkIGJlIHRydWUgZm9yIGNsb3VkIGVudmlyb25tZW50cywgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGlzIGFsc28gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28sIHRoZSBjaGFuY2VzIG9mIGV4cGxvcmluZyB0aGUgdGFyZ2V0IGNvZGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzIGFyZSB2ZXJ5IHNsaW0uCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBtYWtlcyBtZSB3b25kZXI6IERvZXMgdGhlIGtlcm5lbCwgZXNwZWNpYWxseSBmb3IgZnV6emluZyBwdXJwb3NlcywgaW5jb3Jwb3JhdGUgYW55IFNESU8gZHVtbXkgZHJpdmVyIG9yIHNvbWUga2luZCBvZiB3b3JrYXJvdW5kPyBNYXliZSBzb21ldGhpbmcgc3l6a2FsbGVyIG1pZ2h0IGJlIHVzaW5nIHRvIGluamVjdCBTRElPIG9wZXJhdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgaXMgYW4gU0RJTyBpbmplY3Rpb24gbWVjaGFuaXNtIHByZXNlbnQgaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIGJ5cGFzcyB0aGlzIHJlc3RyaWN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VhcmNoIGZvciBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMjUwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVx0XHRcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cdFx0XHRcdCAgIG1tYy5vIG1tY19vcHMubyBzZC5vIHNkX29wcy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjk6XHRcdFx0XHQgICBzZGlvLm8gc2Rpb19vcHMubyBzZGlvX2J1cy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjEwOlx0XHRcdFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cdFx0XHRcdCAgIHNsb3QtZ3Bpby5vIHJlZ3VsYXRvci5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXHRcdCYjNDM7PSBtbWNfdGVzdC5vXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19TRElPX1VBUlQpXHRcdCYjNDM7PSBzZGlvX3VhcnQub1xuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0yMS1tbWNfY29yZS0kKENPTkZJR19NTUNfQ1JZUFRPKVx0JiM0Mzs9IGNyeXB0by5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcJiMzNDtob3N0LmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXCYjMzQ7c2Rpb19jaXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcJiMzNDtidXMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9NTk9bW1jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6ODk6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSB8fCBtbWNfY2FyZF9zZF9jb21ibyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cdFx0cmV0dmFsID0gYWRkX3VldmVudF92YXIoZW52LCBcJiMzNDtTRElPX0lEPSUwNFg6JTA0WFwmIzM0Oyxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9idXMuYzoxMTE6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTI2ND1zdGF0aWMgdm9pZCBtbWNfcmVsZWFzZV9jYXJkKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2Ny1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MjY4Olx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2OS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmg6NDY6ICogVGhlIHdvcmxkIGlzIG5vdCBwZXJmZWN0IGFuZCBzdXBwbGllcyB1cyB3aXRoIGJyb2tlbiBtbWMvc2RpbyBkZXZpY2VzLlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmgtNDctICogRm9yIGF0IGxlYXN0IHNvbWUgb2YgdGhlc2UgYnVncyB3ZSBuZWVkIGEgd29yay1hcm91bmQuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDEtI2luY2x1ZGUgXCYjMzQ7aG9zdC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0MjojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00My0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ2LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0NzojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00OC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMTY9c3RhdGljIHZvaWQgX19tbWNfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cdC8qXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMjk6XHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMwOlx0ICogc2RpbyBkZXZpY2VzIHdvbiYjMzk7dCB3b3JrIHByb3Blcmx5LlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMxLVx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMyLVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XHRpZiAoc2Rpb19pc19pb19idXN5KG1ycS1cdTAwM2VjbWQtXHUwMDNlb3Bjb2RlLCBtcnEtXHUwMDNlY21kLVx1MDAzZWFyZykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzQtXHQgICAgaG9zdC1cdTAwM2VvcHMtXHUwMDNlY2FyZF9idXN5KSB7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9NjYwPXZvaWQgbW1jX3NldF9kYXRhX3RpbWVvdXQoc3RydWN0IG1tY19kYXRhICpkYXRhLCBjb25zdCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo2Njc6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY4LVx0XHRkYXRhLVx1MDAzZXRpbWVvdXRfbnMgPSAxMDAwMDAwMDAwO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTE0LVx0LypcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMTU6XHQgKiBzZGlvX3Jlc2V0IHNlbmRzIENNRDUyIHRvIHJlc2V0IGNhcmQuICBTaW5jZSB3ZSBkbyBub3Qga25vd1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cdCAqIGlmIHRoZSBjYXJkIGlzIGJlaW5nIHJlLWluaXRpYWxpemVkLCBqdXN0IHNlbmQgaXQuICBDTUQ1MlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMjE6XHRcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMzQ6XHRcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzNS1cdFx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNC1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2J1cygpO1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjQxOD1zdGF0aWMgdm9pZCBfX2V4aXQgbW1jX2V4aXQodm9pZClcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQyMDpcdHNkaW9fdW5yZWdpc3Rlcl9idXMoKTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXHRtbWNfdW5yZWdpc3Rlcl9ob3N0X2NsYXNzKCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oOjg4OmludCBtbWNfYXR0YWNoX3NkaW8oc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oLTg5LWludCBtbWNfYXR0YWNoX3NkX3VoczIoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0yOS0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzA6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzEtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM2Ny1cdFx0aG9zdC1cdTAwM2VjYXBzIHw9IE1NQ19DQVBfSFdfUkVTRVQ7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O2NhcC1zZGlvLWlycVwmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjktXHRcdGhvc3QtXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX1NESU9fSVJRO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cdFx0aG9zdC1cdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM5NDpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7bm8tc2Rpb1wmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zOTUtXHRcdGhvc3QtXHUwMDNlY2FwczIgfD0gTU1DX0NBUDJfTk9fU0RJTztcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz01MTI9c3RydWN0IG1tY19ob3N0ICptbWNfYWxsb2NfaG9zdChpbnQgZXh0cmEsIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZob3N0LVx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo1NTk6XHRJTklUX1dPUksoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrLCBzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTU2MC1cdHRpbWVyX3NldHVwKFx1MDAyNmhvc3QtXHUwMDNlcmV0dW5lX3RpbWVyLCBtbWNfcmV0dW5lX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz02MTA9c3RhdGljIGludCBtbWNfdmFsaWRhdGVfaG9zdF9jYXBzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTU6XHRpZiAoY2FwcyBcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcdTAwMjZcdTAwMjYgIWhvc3QtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZV9zZGlvX2lycSkge1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE2Olx0XHRkZXZfd2FybihkZXYsIFwmIzM0O21pc3NpbmcgLVx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcblwmIzM0Oyk7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xNS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oPTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBtbWNfZXh0X2NzZF9maXh1cHNbXSA9IHtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xOTAtXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE2LVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTgtXHRTRElPX0ZJWFVQX0NPTVBBVElCTEUoXCYjMzQ7dGksd2wxMjUxXCYjMzQ7LCB3bDEyNTFfcXVpcmssIDApLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcJiMzNDsldS4ldVxcblwmIzM0OywgY2FyZC1cdTAwM2VtYWpvcl9yZXYsIGNhcmQtXHUwMDNlbWlub3JfcmV2KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NDktXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzUwOiNkZWZpbmUgc2Rpb19pbmZvX2F0dHIobnVtKVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzUxLXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzYxPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzYyLVxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjQ6c2Rpb19pbmZvX2F0dHIoMik7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY1OnNkaW9faW5mb19hdHRyKDMpO1xuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjctXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzogKiAgbGludXgvZHJpdmVycy9tbWMvc2Rpby5jXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00LSAqXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL21tYy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpby5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19mdW5jLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvX2lkcy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcJiMzNDtzZC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcJiMzNDttbWNfb3BzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcJiMzNDtzZGlvX2Npcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz0zNT1NTUNfREVWX0FUVFIocmNhLCBcJiMzNDsweCUwNHhcXG5cJiMzNDssIGNhcmQtXHUwMDNlcmNhKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz00OD1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOnNkaW9faW5mb19hdHRyKDIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MzpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01Ni1cdFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY2LX07XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY4LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSBzZGlvX3R5cGUgPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcdC5ncm91cHMgPSBzZGlvX3N0ZF9ncm91cHMsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MS19O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MzpzdGF0aWMgaW50IHNkaW9fcmVhZF9mYnIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDM6c3RhdGljIGludCBzZGlvX2luaXRfZnVuYyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBmbilcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUtXHRpbnQgcmV0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2Olx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNy1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE6XHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyLVx0aWYgKElTX0VSUihmdW5jKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTctXHRpZiAoIShjYXJkLVx1MDAzZXF1aXJrcyBcdTAwMjYgTU1DX1FVSVJLX05PTlNURF9TRElPKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4Olx0XHRyZXQgPSBzZGlvX3JlYWRfZmJyKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEyMjpcdFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzMC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcdGNhcmQtXHUwMDNlc2Rpb19mdW5jW2ZuIC0gMV0gPSBmdW5jO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzOS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQwOlx0c2Rpb19yZW1vdmVfZnVuYyhmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQ0OnN0YXRpYyBpbnQgc2Rpb19yZWFkX2NjY3Ioc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgb2NyKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQ1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjQ6XHRjYXJkLVx1MDAzZWNjY3Iuc2Rpb192c24gPSAoZGF0YSBcdTAwMjYgMHhmMCkgXHUwMDNlXHUwMDNlIDQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MjYxOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5My0gKiBvZiB0aGUgY2FyZC4gVGhpcyBtYXkgYmUgcmVxdWlyZWQgb24gY2VydGFpbiBzZXR1cHMgb2YgYm9hcmRzLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCYjMzk7c1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTc6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfY2Qoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM0ODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1MS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM1MjpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzUzLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjUtb3V0OlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2Olx0cmV0dXJuIHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY3LX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzA6c3RhdGljIGludCBzZGlvX2VuYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcdGVyciA9IHNkaW9fZW5hYmxlX3dpZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzUtXHRpZiAoZXJyIFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3Ni1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NzpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc4LVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zODItXHRcdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM4MzpcdFx0XHRzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cdFx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM5Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTgte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQyNzpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyOC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDMwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMxOlx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMyOlx0aWYgKHJldCBcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMy1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzYtXHRpZiAocmV0IFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzNzpcdFx0bW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIGZhbHNlKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NDI6c3RhdGljIHVuc2lnbmVkIG1tY19zZGlvX2dldF9tYXhfY2xvY2soc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NjUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY3LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0ODI6c3RhdGljIHZvaWQgc2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDgzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MDMtXHRcdGNhcmRfc3RyZW5ndGggXHUwMDI2PSB+KFNESU9fRFJJVkVfRFRTeF9NQVNLXHUwMDNjXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUwNDpcdFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTA1LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOTpzdGF0aWMgaW50IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUyMC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTkyLSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTkzOnN0YXRpYyBpbnQgbW1jX3NkaW9faW5pdF91aHNfY2FyZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwMC1cdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwMTpcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXHQvKiBTZXQgdGhlIGRyaXZlciBzdHJlbmd0aCBmb3IgdGhlIGNhcmQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwNjpcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA4LVx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDk6XHRlcnIgPSBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjI1OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX2luaXQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI2LVx0XHRcdCAgICAgc3RydWN0IG1tY19jYXJkICpjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzMi1cdCAqIFJlc2V0IHRoZSBjYXJkIGJ5IHBlcmZvcm1pbmcgdGhlIHNhbWUgc3RlcHMgdGhhdCBhcmUgdGFrZW4gYnlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcdCAqIG1tY19yZXNjYW5fdHJ5X2ZyZXEoKSBhbmQgbW1jX2F0dGFjaF9zZGlvKCkgZHVyaW5nIGEgXCYjMzQ7bm9ybWFsXCYjMzQ7IHByb2JlLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM0LVx0ICpcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcdCAqIHNkaW9fcmVzZXQoKSBpcyB0ZWNobmljYWxseSBub3QgbmVlZGVkLiBIYXZpbmcganVzdCBwb3dlcmVkIHVwIHRoZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM2LVx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0OS1cdG1tY19nb19pZGxlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY1OS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NjEtXHRcdFx0ICAgICAgc3RydWN0IG1tY19jYXJkICpvbGRjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzAwOlx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFx1MDAyNnNkaW9fdHlwZSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MDEtXHRpZiAoSVNfRVJSKGNhcmQpKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcdFx0aWYgKG9sZGNhcmQgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9zZGlvKG9sZGNhcmQpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTctXHRcdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjYtXHRcdGhvc3QtXHUwMDNlb3BzLVx1MDAzZWluaXRfY2FyZChob3N0LCBjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19jYXJkX2luaXRfbWV0aG9kcyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzM4LVx0ICogZmFpbHMgdG8gY2hlY2sgcm9jciBcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM5Olx0ICogdHJ5IHRvIGluaXQgdWhzIGNhcmQuIHNkaW9fcmVhZF9jY2NyIHdpbGwgdGFrZSBvdmVyIHRoaXMgdGFza1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVx0ICogdG8gbWFrZSBzdXJlIHdoaWNoIHNwZWVkIG1vZGUgc2hvdWxkIHdvcmsuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVx0XHRpZiAoZXJyID09IC1FQUdBSU4pIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcdFx0XHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDYtXHRcdFx0cmV0cmllcy0tO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODE1Olx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNi1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcdFx0bW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgb2NyX2NhcmQsIGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVx0XHRpZiAob2NyIFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgyOC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODI5Olx0ZXJyID0gc2Rpb19yZWFkX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg0NDpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19maXh1cF9tZXRob2RzKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjEtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2MjpcdGVyciA9IHNkaW9fZGlzYWJsZV9jZChjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVx0aWYgKChvY3IgXHUwMDI2IFI0XzE4Vl9QUkVTRU5UKSBcdTAwMjZcdTAwMjYgY2FyZC1cdTAwM2Vzd19jYXBzLnNkM19idXNfbW9kZSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5Olx0XHRlcnIgPSBtbWNfc2Rpb19pbml0X3Voc19jYXJkKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3NS1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NzY6XHRcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODc3LVx0XHRpZiAoZXJyIFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XHRcdG1tY19zZXRfY2xvY2soaG9zdCwgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhjYXJkKSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg5LVx0XHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg5MDpcdFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04OTEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE0OnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVpbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MTg6XHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBOVUxMKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTIyOlx0cmV0dXJuIG1tY19zZGlvX2luaXRfY2FyZChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMyOlx0Zm9yIChpID0gMDtpIFx1MDAzYyBob3N0LVx1MDAzZWNhcmQtXHUwMDNlc2Rpb19mdW5jcztpJiM0MzsmIzQzOykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMzOlx0XHRpZiAoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0Olx0XHRcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XHRcdFx0aG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSA9IE5VTEw7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXHRcdH1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDUtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5NDY6c3RhdGljIGludCBtbWNfc2Rpb19hbGl2ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1Ny0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5OTQ6XHRcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk5NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAwODpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMTEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY3M7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlx0XHRzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jID0gaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTQ6XHRcdGlmIChmdW5jIFx1MDAyNlx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcdTAwMjZcdTAwMjYgZnVuYy1cdTAwM2VkZXYuZHJpdmVyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDE1LVx0XHRcdGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbW9wcyA9IGZ1bmMtXHUwMDNlZGV2LmRyaXZlci1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDMyLVx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzM6XHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVx0bW1jX2NsYWltX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDY6c3RhdGljIGludCBtbWNfc2Rpb19zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDcte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcdFdBUk5fT04oaG9zdC1cdTAwM2VzZGlvX2lycXMgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDktXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1MS1cdG1tY19jYXJkX3NldF9zdXNwZW5kZWQoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTI6XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU2Olx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXHUwMDI2XHUwMDI2IG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3Olx0XHRzZGlvX2Rpc2FibGVfNGJpdF9idXMoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNzE6c3RhdGljIGludCBtbWNfc2Rpb19yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5NS1cdFx0fVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NjpcdFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDk3Olx0fSBlbHNlIGlmIChtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDMtXHRcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTA0Olx0XHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwNS1cdFx0bW1jX3JldHVuZV9yZWxlYXNlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE0Olx0aWYgKGhvc3QtXHUwMDNlc2Rpb19pcnFzKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE1LVx0XHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9TRElPX0lSUV9OT1RIUkVBRCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2Olx0XHRcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVx1MDAzZXNkaW9faXJxX3RocmVhZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE3LVx0XHRlbHNlIGlmIChob3N0LVx1MDAzZWNhcHMgXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE4Olx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTktXHR9XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMjg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVx0bW1jX3Bvd2VyX3VwKGhvc3QsIGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VvY3IpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE0NTpcdHJldCA9IG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cdG1tY19yZWxlYXNlX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNTc6c3RhdGljIGludCBtbWNfc2Rpb19od19yZXNldChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTU4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY1LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2Olx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNhcmQtXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFx1MDAzZSAxKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY3LVx0XHRpZiAobW1jX2NhcmRfcmVtb3ZlZChjYXJkKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVx0bW1jX3Bvd2VyX2N5Y2xlKGhvc3QsIGNhcmQtXHUwMDNlb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XHRyZXR1cm4gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTgxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgzOnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4NC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVx0bW1jX3NldF9jbG9jayhob3N0LCBob3N0LVx1MDAzZWZfaW5pdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODctXHRtbWNfZ29faWRsZShob3N0KTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3NTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU0RJTyBFbXVsYXRpb24gUm9hZGJsb2NrKioKCk9rYXksIHNvIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9gIGNvZGUuLi4gaXQmIzM5O3MgbG9va2luZyBsaWtlIGEgZGVhZCBlbmQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgU0RJTyBkZXZpY2VzLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBlaXRoZXIuIFRoYXQgbWVhbnMgdGhvc2Ugc3BlY2lmaWMgY29kZSBwYXRocyBhcmUgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUgc2V0dXBzLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGFzc3VtcHRpb24uIE1heWJlIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIGEgY2xldmVyIHdvcmthcm91bmQ/IElzIHRoZXJlICphbnkqIHZpcnR1YWwgU0RJTyBob3N0IGNvbnRyb2xsZXIgb3V0IHRoZXJlIHRoYXQgSSYjMzk7bSBub3QgdGhpbmtpbmcgb2Y/IFRpbWUgdG8gd2lkZW4gdGhlIHNlYXJjaC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbW1jL2hvc3QvYCBkaXJlY3RvcnkgYW5kIHNlZSBpZiBhbnl0aGluZyBwb3BzIHVwLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z1YjMwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjQwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTIwPWNvbmZpZyBNTUNfVlVCMzAwXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0NC1cdCAgVG8gY29tcGlsZSB0aGlzIG1tYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFzIGEgbW9kdWxlLFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjk0NTpcdCAgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB2dWIzMDAuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX01NQ19KWjQ3NDApXHQmIzQzOz0gano0NzQwX21tYy5vXG5kcml2ZXJzL21tYy9ob3N0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19NTUNfVlVCMzAwKVx0JiM0Mzs9IHZ1YjMwMC5vXG5kcml2ZXJzL21tYy9ob3N0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19NTUNfVVNIQylcdFx0JiM0Mzs9IHVzaGMub1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjYwPU1PRFVMRV9QQVJNX0RFU0MoZmlybXdhcmVfcm9tX3dhaXRfc3RhdGVzLFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjY1LSNkZWZpbmUgVlVCMzAwX1BST0RVQ1RfSURcdDB4MDEyQ1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyNjY6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHZ1YjMwMF90YWJsZVtdID0ge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yNjctXHR7VVNCX0RFVklDRShFTEFOX1ZFTkRPUl9JRCwgVlVCMzAwX1BST0RVQ1RfSUQpfSxcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI3MC19O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHZ1YjMwMF90YWJsZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI3Mi1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTI4Nj1zdHJ1Y3Qgc2Rpb19yZWdpc3RlciB7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yOTUtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjI5NjpzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjk3LVx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNTQtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM1NTojZGVmaW5lIGtyZWZfdG9fdnViMzAwX21tY19ob3N0KGQpIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBrcmVmKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNTYtI2RlZmluZSBTRVRfVFJBTlNGRVJfUFNFVURPQ09ERVx0XHQyMVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzY4LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNjk6c3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzcwLXtcdFx0XHRcdC8qIGtyZWYgY2FsbGJhY2sgLSBzb2Z0aXJxICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3MTpcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IGtyZWZfdG9fdnViMzAwX21tY19ob3N0KGtyZWYpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzI6XHRzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IHZ1YjMwMC1cdTAwM2VtbWM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM3My1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc0Olx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzU6XHR2dWIzMDAtXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc2Olx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX3Jlc191cmIpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzc6XHR2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiID0gTlVMTDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc4Olx0dXNiX3B1dF9kZXYodnViMzAwLVx1MDAzZXVkZXYpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNzktXHRtbWNfZnJlZV9ob3N0KG1tYyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM4MC1cdC8qXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4MTpcdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zODItXHQgKiB3aGljaCBpcyBjb250YWluZWQgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QgbW1jXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zODUtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4NjpzdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfY21uZF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg3LXtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzg4Olx0a3JlZl9nZXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozODk6XHRpZiAocXVldWVfd29yayhjbW5kd29ya3F1ZXVlLCBcdTAwMjZ2dWIzMDAtXHUwMDNlY21uZHdvcmspKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM5MC1cdFx0Lypcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwMS1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwMjpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDMtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDUtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwNjpzdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfcG9sbF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCwgaW50IGRlbGF5KVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDcte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDg6XHRrcmVmX2dldChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwOTpcdGlmIChxdWV1ZV9kZWxheWVkX3dvcmsocG9sbHdvcmtxdWV1ZSwgXHUwMDI2dnViMzAwLVx1MDAzZXBvbGx3b3JrLCBkZWxheSkpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDEwLVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDIxLVx0XHQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDIyOlx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQyMy1cdH1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQyNS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDI2OnN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9kZWFkX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00Mjcte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Mjg6XHRrcmVmX2dldChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyOTpcdGlmIChxdWV1ZV93b3JrKGRlYWR3b3JrcXVldWUsIFx1MDAyNnZ1YjMwMC1cdTAwM2VkZWFkd29yaykpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDMwLVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDQxLVx0XHQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDQyOlx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0My1cdH1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQ0Nj1zdGF0aWMgdm9pZCBpcnFwb2xsX3Jlc19jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDcte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDQ4Olx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDQ5LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ1MDpcdFx0dnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHVyYi1cdTAwM2VzdGF0dXM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ1MTpcdGNvbXBsZXRlKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDUyLX1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQ1ND1zdGF0aWMgdm9pZCBpcnFwb2xsX291dF9jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NTUte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU2Olx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDU3LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU4Olx0XHR2dWIzMDAtXHUwMDNldXNiX3RyYW5zcG9ydF9mYWlsID0gdXJiLVx1MDAzZXN0YXR1cztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU5Olx0XHRjb21wbGV0ZShcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxcG9sbF9jb21wbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ2MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDYzLVx0XHR1bnNpZ25lZCBpbnQgcGlwZSA9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NDpcdFx0XHR1c2JfcmN2YnVsa3BpcGUodnViMzAwLVx1MDAzZXVkZXYsIHZ1YjMwMC1cdTAwM2VjbW5kX3Jlc19lcCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NTpcdFx0dXNiX2ZpbGxfYnVsa191cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYiwgdnViMzAwLVx1MDAzZXVkZXYsIHBpcGUsXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NjpcdFx0XHRcdCAgXHUwMDI2dnViMzAwLVx1MDAzZXJlc3AsIHNpemVvZih2dWIzMDAtXHUwMDNlcmVzcCksXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NzpcdFx0XHRcdCAgaXJxcG9sbF9yZXNfY29tcGxldGVkLCB2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Njg6XHRcdHZ1YjMwMC1cdTAwM2Vjb21tYW5kX3Jlc191cmItXHUwMDNlYWN0dWFsX2xlbmd0aCA9IDA7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2OTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ3MC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NzE6XHRcdFx0dnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHJldDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDcyOlx0XHRcdGNvbXBsZXRlKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDczLVx0XHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NzctXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3ODpzdGF0aWMgdm9pZCBzZW5kX2lycXBvbGwoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00Nzkte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODA6XHQvKiBjbWRfbXV0ZXggaXMgaGVsZCBieSB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ4MS1cdGludCByZXR2YWw7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ4Mi1cdGludCB0aW1lb3V0ID0gMHhGRkZGIFx1MDAyNiAoMHgwMDAxRkZGRiAtIGZpcm13YXJlX2lycXBvbGxfdGltZW91dCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4MzpcdHZ1YjMwMC1cdTAwM2VjbW5kLnBvbGwuaGVhZGVyX3NpemUgPSAyMjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg0Olx0dnViMzAwLVx1MDAzZWNtbmQucG9sbC5oZWFkZXJfdHlwZSA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NTpcdHZ1YjMwMC1cdTAwM2VjbW5kLnBvbGwucG9ydF9udW1iZXIgPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODY6XHR2dWIzMDAtXHUwMDNlY21uZC5wb2xsLmNvbW1hbmRfdHlwZSA9IDI7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NzpcdHZ1YjMwMC1cdTAwM2VjbW5kLnBvbGwucG9sbF90aW1lb3V0X2xzYiA9IDB4RkYgXHUwMDI2ICh1bnNpZ25lZCl0aW1lb3V0O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODg6XHR2dWIzMDAtXHUwMDNlY21uZC5wb2xsLnBvbGxfdGltZW91dF9tc2IgPSAweEZGIFx1MDAyNiAodW5zaWduZWQpKHRpbWVvdXQgXHUwMDNlXHUwMDNlIDgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODk6XHR1c2JfZmlsbF9idWxrX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9vdXRfdXJiLCB2dWIzMDAtXHUwMDNldWRldixcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkwOlx0XHRcdCAgdXNiX3NuZGJ1bGtwaXBlKHZ1YjMwMC1cdTAwM2V1ZGV2LCB2dWIzMDAtXHUwMDNlY21uZF9vdXRfZXApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5MTpcdFx0XHQgICwgXHUwMDI2dnViMzAwLVx1MDAzZWNtbmQsIHNpemVvZih2dWIzMDAtXHUwMDNlY21uZClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkyOlx0XHRcdCAgLCBpcnFwb2xsX291dF9jb21wbGV0ZWQsIHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5MzpcdHJldHZhbCA9IHVzYl9zdWJtaXRfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00OTQtXHRpZiAoMCBcdTAwM2UgcmV0dmFsKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5NTpcdFx0dnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHJldHZhbDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDk2Olx0XHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgMSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5NzpcdFx0Y29tcGxldGUoXHUwMDI2dnViMzAwLVx1MDAzZWlycXBvbGxfY29tcGxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00OTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUwMy1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTA0OnN0YXRpYyB2b2lkIG5ld19zeXN0ZW1fcG9ydF9zdGF0dXMoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MDUte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MDY6XHRpbnQgb2xkX2NhcmRfcHJlc2VudCA9IHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUwNy1cdGludCBuZXdfY2FyZF9wcmVzZW50ID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTA4Olx0XHQoMHgwMDAxIFx1MDAyNiB2dWIzMDAtXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzLnBvcnRfZmxhZ3MpID8gMSA6IDA7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwOTpcdHZ1YjMwMC1cdTAwM2VyZWFkX29ubHkgPVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTA6XHRcdCgweDAwMTAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMucG9ydF9mbGFncykgPyAxIDogMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTExLVx0aWYgKG5ld19jYXJkX3ByZXNlbnQgXHUwMDI2XHUwMDI2ICFvbGRfY2FyZF9wcmVzZW50KSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUxMjpcdFx0ZGV2X2luZm8oXHUwMDI2dnViMzAwLVx1MDAzZXVkZXYtXHUwMDNlZGV2LCBcJiMzNDtjYXJkIGp1c3QgaW5zZXJ0ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTM6XHRcdHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQgPSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTQ6XHRcdHZ1YjMwMC1cdTAwM2VidXNfd2lkdGggPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTUtXHRcdGlmIChkaXNhYmxlX29mZmxvYWRfcHJvY2Vzc2luZylcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE2Olx0XHRcdHN0cnNjcHkodnViMzAwLVx1MDAzZXZ1Yl9uYW1lLCBcJiMzNDtFTVBUWSBQcm9jZXNzaW5nIERpc2FibGVkXCYjMzQ7LFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTc6XHRcdFx0XHRzaXplb2YodnViMzAwLVx1MDAzZXZ1Yl9uYW1lKSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUxOC1cdFx0ZWxzZVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTk6XHRcdFx0dnViMzAwLVx1MDAzZXZ1Yl9uYW1lWzBdID0gMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTIwOlx0XHRtbWNfZGV0ZWN0X2NoYW5nZSh2dWIzMDAtXHUwMDNlbW1jLCAxKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTIxLVx0fSBlbHNlIGlmICghbmV3X2NhcmRfcHJlc2VudCBcdTAwMjZcdTAwMjYgb2xkX2NhcmRfcHJlc2VudCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjI6XHRcdGRldl9pbmZvKFx1MDAyNnZ1YjMwMC1cdTAwM2V1ZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y2FyZCBqdXN0IGVqZWN0ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjM6XHRcdHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQgPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjQ6XHRcdG1tY19kZXRlY3RfY2hhbmdlKHZ1YjMwMC1cdTAwM2VtbWMsIDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MjUtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTI5LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzA6c3RhdGljIHZvaWQgX19hZGRfb2ZmbG9hZGVkX3JlZ190b19maWZvKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTMxLVx0XHRcdFx0XHRzdHJ1Y3Qgb2ZmbG9hZF9yZWdpc3RlcnNfYWNjZXNzXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MzMte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzQ6XHR1OCByID0gdnViMzAwLVx1MDAzZWZuW2Z1bmNdLm9mZmxvYWRfcG9pbnQgJiM0MzsgdnViMzAwLVx1MDAzZWZuW2Z1bmNdLm9mZmxvYWRfY291bnQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUzNTpcdG1lbWNweShcdTAwMjZ2dWIzMDAtXHUwMDNlZm5bZnVuY10ucmVnW01BWFJFR01BU0sgXHUwMDI2IHJdLCByZWdpc3Rlcl9hY2Nlc3MsXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzNi1cdCAgICAgICBzaXplb2Yoc3RydWN0IG9mZmxvYWRfcmVnaXN0ZXJzX2FjY2VzcykpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Mzc6XHR2dWIzMDAtXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9jb3VudCAmIzQzOz0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTM4Olx0dnViMzAwLVx1MDAzZXRvdGFsX29mZmxvYWRfY291bnQgJiM0Mzs9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzOS19XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU0MC1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTQxOnN0YXRpYyB2b2lkIGFkZF9vZmZsb2FkZWRfcmVnKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTQyLVx0XHRcdCAgICAgIHN0cnVjdCBvZmZsb2FkX3JlZ2lzdGVyc19hY2Nlc3MgKnJlZ2lzdGVyX2FjY2Vzcylcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU0Ny1cdHU4IGZ1bmMgPSAoKDB4NzAgXHUwMDI2IHJlZ2lzdGVyX2FjY2Vzcy1cdTAwM2Vjb21tYW5kX2J5dGVbMF0pIFx1MDAzZVx1MDAzZSA0KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTQ4Olx0dTggcmVncyA9IHZ1YjMwMC1cdTAwM2VkeW5hbWljX3JlZ2lzdGVyX2NvdW50O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NDktXHR1OCBpID0gMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTUwOlx0d2hpbGUgKDAgXHUwMDNjIHJlZ3MtLSBcdTAwMjZcdTAwMjYgMSA9PSB2dWIzMDAtXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5hY3RpdmF0ZSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTE6XHRcdGlmICh2dWIzMDAtXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5mdW5jX251bSA9PSBmdW5jIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTI6XHRcdCAgICB2dWIzMDAtXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5zZGlvX3JlZyA9PSBSZWdpc3Rlcikge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTM6XHRcdFx0aWYgKHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnByZXBhcmVkID09IDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU1NDpcdFx0XHRcdHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnByZXBhcmVkID0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTU1Olx0XHRcdHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnJlc3BvbnNlID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTU2LVx0XHRcdFx0cmVnaXN0ZXJfYWNjZXNzLVx1MDAzZVJlc3BvbmRfQnl0ZVsyXTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTU3Olx0XHRcdHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnJlZ3ZhbHVlID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTU4LVx0XHRcdFx0cmVnaXN0ZXJfYWNjZXNzLVx1MDAzZVJlc3BvbmRfQnl0ZVszXTtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU2NC1cdH1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTY1Olx0X19hZGRfb2ZmbG9hZGVkX3JlZ190b19maWZvKHZ1YjMwMCwgcmVnaXN0ZXJfYWNjZXNzLCBmdW5jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY2LX1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY3LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Njg6c3RhdGljIHZvaWQgY2hlY2tfdnViMzAwX3BvcnRfc3RhdHVzKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY5LXtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTcwLVx0LypcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTcxOlx0ICogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX3BvbGx3b3JrX3RocmVhZCxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTcyOlx0ICogdnViMzAwX2RlYWR3b3JrX3RocmVhZCBvciB2dWIzMDBfY21uZHdvcmtfdGhyZWFkXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3My1cdCAqL1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTc1LVx0cmV0dmFsID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTc2Olx0XHR1c2JfY29udHJvbF9tc2codnViMzAwLVx1MDAzZXVkZXYsIHVzYl9yY3ZjdHJscGlwZSh2dWIzMDAtXHUwMDNldWRldiwgMCksXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3Ny1cdFx0XHRcdEdFVF9TWVNURU1fUE9SVF9TVEFUVVMsXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3OC1cdFx0XHRcdFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBfREVWSUNFLFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Nzk6XHRcdFx0XHQweDAwMDAsIDB4MDAwMCwgXHUwMDI2dnViMzAwLVx1MDAzZXN5c3RlbV9wb3J0X3N0YXR1cyxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTgwOlx0XHRcdFx0c2l6ZW9mKHZ1YjMwMC1cdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMpLCAxMDAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTgxOlx0aWYgKHNpemVvZih2dWIzMDAtXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzKSA9PSByZXR2YWwpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4MjpcdFx0bmV3X3N5c3RlbV9wb3J0X3N0YXR1cyh2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01ODMtfVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01ODQtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4NTpzdGF0aWMgdm9pZCBfX3Z1YjMwMF9pcnFwb2xsX3Jlc3BvbnNlKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTg2LXtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTg3Olx0LyogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX3BvbGx3b3JrX3RocmVhZCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1ODg6XHRpZiAodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoID09IDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU4OS1cdFx0cmV0dXJuO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01OTAtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5MTpcdHN3aXRjaCAodnViMzAwLVx1MDAzZXJlc3AuY29tbW9uLmhlYWRlcl90eXBlKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5Mi1cdGNhc2UgUkVTUE9OU0VfSU5URVJSVVBUOlxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTM6XHRcdG11dGV4X2xvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5NDpcdFx0aWYgKHZ1YjMwMC1cdTAwM2VpcnFfZW5hYmxlZClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTk1Olx0XHRcdG1tY19zaWduYWxfc2Rpb19pcnEodnViMzAwLVx1MDAzZW1tYyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5Ni1cdFx0ZWxzZVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTc6XHRcdFx0dnViMzAwLVx1MDAzZWlycXNfcXVldWVkICYjNDM7PSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTg6XHRcdHZ1YjMwMC1cdTAwM2VpcnFfZGlzYWJsZWQgPSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTk6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjAwLVx0XHRicmVhaztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjAxLVx0Y2FzZSBSRVNQT05TRV9FUlJPUjpcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjAyOlx0XHRpZiAodnViMzAwLVx1MDAzZXJlc3AuZXJyb3IuZXJyb3JfY29kZSA9PSBTRF9FUlJPUl9OT19ERVZJQ0UpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwMzpcdFx0XHRjaGVja192dWIzMDBfcG9ydF9zdGF0dXModnViMzAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA0LVx0XHRicmVhaztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA1LVx0Y2FzZSBSRVNQT05TRV9TVEFUVVM6XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwNjpcdFx0dnViMzAwLVx1MDAzZXN5c3RlbV9wb3J0X3N0YXR1cyA9IHZ1YjMwMC1cdTAwM2VyZXNwLnN0YXR1cztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjA3Olx0XHRuZXdfc3lzdGVtX3BvcnRfc3RhdHVzKHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwODpcdFx0aWYgKCF2dWIzMDAtXHUwMDNlY2FyZF9wcmVzZW50KVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MDk6XHRcdFx0dnViMzAwX3F1ZXVlX3BvbGxfd29yayh2dWIzMDAsIEhaIC8gNSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxMC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MTItXHR7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYxMzpcdFx0aW50IG9mZmxvYWRlZF9kYXRhX2xlbmd0aCA9IHZ1YjMwMC1cdTAwM2VyZXNwLmNvbW1vbi5oZWFkZXJfc2l6ZSAtIDM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxNC1cdFx0aW50IHJlZ2lzdGVyX2NvdW50ID0gb2ZmbG9hZGVkX2RhdGFfbGVuZ3RoIFx1MDAzZVx1MDAzZSAzO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjE2LVx0XHR3aGlsZSAocmVnaXN0ZXJfY291bnQtLSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MTc6XHRcdFx0YWRkX29mZmxvYWRlZF9yZWcodnViMzAwLCBcdTAwMjZ2dWIzMDAtXHUwMDNlcmVzcC5pcnEucmVnW3JpXSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxOC1cdFx0XHRyaSAmIzQzOz0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjE5LVx0XHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyMDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjIxOlx0XHRpZiAodnViMzAwLVx1MDAzZWlycV9lbmFibGVkKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MjI6XHRcdFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXHUwMDNlbW1jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjIzLVx0XHRlbHNlXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNDpcdFx0XHR2dWIzMDAtXHUwMDNlaXJxc19xdWV1ZWQgJiM0Mzs9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNTpcdFx0dnViMzAwLVx1MDAzZWlycV9kaXNhYmxlZCA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNjpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MjctXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjMwLVx0e1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MzE6XHRcdGludCBvZmZsb2FkZWRfZGF0YV9sZW5ndGggPSB2dWIzMDAtXHUwMDNlcmVzcC5jb21tb24uaGVhZGVyX3NpemUgLSAzO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MzItXHRcdGludCByZWdpc3Rlcl9jb3VudCA9IG9mZmxvYWRlZF9kYXRhX2xlbmd0aCBcdTAwM2VcdTAwM2UgMztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzNC1cdFx0d2hpbGUgKHJlZ2lzdGVyX2NvdW50LS0pIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjM1Olx0XHRcdGFkZF9vZmZsb2FkZWRfcmVnKHZ1YjMwMCwgXHUwMDI2dnViMzAwLVx1MDAzZXJlc3AuaXJxLnJlZ1tyaV0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MzYtXHRcdFx0cmkgJiM0Mzs9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzNy1cdFx0fVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Mzg6XHRcdG11dGV4X2xvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYzOTpcdFx0aWYgKHZ1YjMwMC1cdTAwM2VpcnFfZW5hYmxlZClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjQwOlx0XHRcdG1tY19zaWduYWxfc2Rpb19pcnEodnViMzAwLVx1MDAzZW1tYyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY0MS1cdFx0ZWxzZVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDI6XHRcdFx0dnViMzAwLVx1MDAzZWlycXNfcXVldWVkICYjNDM7PSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDM6XHRcdHZ1YjMwMC1cdTAwM2VpcnFfZGlzYWJsZWQgPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjQ1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY0Ny1cdGNhc2UgUkVTUE9OU0VfTk9fSU5URVJSVVBUOlxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDg6XHRcdHZ1YjMwMF9xdWV1ZV9wb2xsX3dvcmsodnViMzAwLCAxKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjQ5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY1NC1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjU1OnN0YXRpYyB2b2lkIF9fZG9fcG9sbChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY1Ni17XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY1NzpcdC8qIGNtZF9tdXRleCBpcyBoZWxkIGJ5IHZ1YjMwMF9wb2xsd29ya190aHJlYWQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjU4LVx0dW5zaWduZWQgbG9uZyBjb21tcmV0dmFsO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NTk6XHRtb2RfdGltZXIoXHUwMDI2dnViMzAwLVx1MDAzZWluYWN0aXZpdHlfdGltZXIsIGppZmZpZXMgJiM0MzsgSFopO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjA6XHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dnViMzAwLVx1MDAzZWlycXBvbGxfY29tcGxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjE6XHRzZW5kX2lycXBvbGwodnViMzAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjYyOlx0Y29tbXJldHZhbCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxcG9sbF9jb21wbGV0ZSxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjYzLVx0XHRcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDUwMCkpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjQ6XHRpZiAodnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NjUtXHRcdC8qIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjY2LVx0fSBlbHNlIGlmIChjb21tcmV0dmFsID09IDApIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjY3Olx0XHR2dWIzMDAtXHUwMDNldXNiX3RpbWVkX291dCA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2ODpcdFx0dXNiX2tpbGxfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Njk6XHRcdHVzYl9raWxsX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjcwLVx0fSBlbHNlIHsgLyogY29tbXJldHZhbCBcdTAwM2UgMCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NzE6XHRcdF9fdnViMzAwX2lycXBvbGxfcmVzcG9uc2UodnViMzAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjcyLVx0fVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjc3LSAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Nzg6c3RhdGljIHZvaWQgdnViMzAwX3BvbGx3b3JrX3RocmVhZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY3OS17XHRcdFx0XHQvKiBOT1QgaXJxICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MDpcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODE6XHRcdFx0ICAgICAgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwgcG9sbHdvcmsud29yayk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MjpcdGlmICghdnViMzAwLVx1MDAzZWludGVyZmFjZSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODM6XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg0LVx0XHRyZXR1cm47XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY4NS1cdH1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg2Olx0bXV0ZXhfbG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg3Olx0aWYgKHZ1YjMwMC1cdTAwM2VjbWQpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg4Olx0XHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgMSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4OTpcdH0gZWxzZSBpZiAoIXZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjkwLVx0XHQvKiBubyBuZWVkIHRvIGRvIGFueXRoaW5nICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5MTpcdH0gZWxzZSB7IC8qIHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjkyOlx0XHRtdXRleF9sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2OTM6XHRcdGlmICghdnViMzAwLVx1MDAzZWlycV9lbmFibGVkKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5NDpcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5NTpcdFx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlaXJxc19xdWV1ZWQpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk2Olx0XHRcdHZ1YjMwMC1cdTAwM2VpcnFzX3F1ZXVlZCAtPSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2OTc6XHRcdFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXHUwMDNlbW1jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk4Olx0XHRcdG1vZF90aW1lcihcdTAwMjZ2dWIzMDAtXHUwMDNlaW5hY3Rpdml0eV90aW1lciwgamlmZmllcyAmIzQzOyBIWik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5OTpcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwMDpcdFx0fSBlbHNlIHsgLyogTk9UIHZ1YjMwMC1cdTAwM2VpcnFzX3F1ZXVlZCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDE6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDI6XHRcdFx0X19kb19wb2xsKHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcwMy1cdFx0fVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDQtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwNTpcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzA2Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDctfVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDgtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwOTpzdGF0aWMgdm9pZCB2dWIzMDBfZGVhZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzEwLXtcdFx0XHRcdC8qIE5PVCBpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzExOlx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzEyOlx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwgZGVhZHdvcmspO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MTM6XHRpZiAoIXZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzE0Olx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxNS1cdFx0cmV0dXJuO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MTYtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxNzpcdG11dGV4X2xvY2soXHUwMDI2dnViMzAwLVx1MDAzZWNtZF9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxODpcdGlmICh2dWIzMDAtXHUwMDNlY21kKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxOS1cdFx0Lypcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcyNC1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcyNTpcdH0gZWxzZSBpZiAodnViMzAwLVx1MDAzZWNhcmRfcHJlc2VudCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MjY6XHRcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mjc6XHR9IGVsc2UgaWYgKHZ1YjMwMC1cdTAwM2VtbWMgXHUwMDI2XHUwMDI2IHZ1YjMwMC1cdTAwM2VtbWMtXHUwMDNlY2FyZCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MjgtXHRcdC8qXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MzQtXHR9IGVsc2Uge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MzU6XHRcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MzYtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjczNzpcdG1vZF90aW1lcihcdTAwMjZ2dWIzMDAtXHUwMDNlaW5hY3Rpdml0eV90aW1lciwgamlmZmllcyAmIzQzOyBIWik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjczODpcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzM5Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDAtfVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDEtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0MjpzdGF0aWMgdm9pZCB2dWIzMDBfaW5hY3Rpdml0eV90aW1lcl9leHBpcmVkKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDMte1x0XHRcdFx0Lyogc29mdGlycSAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDQ6XHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSB0aW1lcl9jb250YWluZXJfb2YodnViMzAwLCB0LFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDUtXHRcdFx0XHRcdFx0XHQgICAgaW5hY3Rpdml0eV90aW1lcik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NjpcdGlmICghdnViMzAwLVx1MDAzZWludGVyZmFjZSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDc6XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQ4Olx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlY21kKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0OTpcdFx0bW9kX3RpbWVyKFx1MDAyNnZ1YjMwMC1cdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICYjNDM7IEhaKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUxOlx0XHR2dWIzMDBfcXVldWVfZGVhZF93b3JrKHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc1MjpcdFx0bW9kX3RpbWVyKFx1MDAyNnZ1YjMwMC1cdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICYjNDM7IEhaKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUzLVx0fVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzU1LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NTY6c3RhdGljIGludCB2dWIzMDBfcmVzcG9uc2VfZXJyb3IodTggZXJyb3JfY29kZSlcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzU3LXtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTc5Mj1zdGF0aWMgdm9pZCBjb21tYW5kX3Jlc19jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03OTMte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Nzk0Olx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzk1LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzk2LVx0XHQvKiB3ZSBoYXZlIHRvIGxldCB0aGUgaW5pdGlhdG9yIGhhbmRsZSB0aGUgZXJyb3IgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Nzk3Olx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggPT0gMCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03OTgtXHRcdC8qXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDEtXHRcdCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MDI6XHR9IGVsc2UgaWYgKCF2dWIzMDAtXHUwMDNlZGF0YSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDMtXHRcdC8qIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29tbWFuZCAodHlwaWNhbGx5IENNRDUyKSBzdWNjZWVkZWQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODA0Olx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlcmVzcC5jb21tb24uaGVhZGVyX3R5cGUgIT0gMHgwMikge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDUtXHRcdC8qXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDgtXHRcdCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MDk6XHR9IGVsc2UgaWYgKHZ1YjMwMC1cdTAwM2V1cmIpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODEwOlx0XHR2dWIzMDAtXHUwMDNlY21kLVx1MDAzZWVycm9yID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODExOlx0XHRcdHZ1YjMwMF9yZXNwb25zZV9lcnJvcih2dWIzMDAtXHUwMDNlcmVzcC5lcnJvci5lcnJvcl9jb2RlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODEyOlx0XHR1c2JfdW5saW5rX3VyYih2dWIzMDAtXHUwMDNldXJiKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODEzLVx0fSBlbHNlIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE0Olx0XHR2dWIzMDAtXHUwMDNlY21kLVx1MDAzZWVycm9yID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE1Olx0XHRcdHZ1YjMwMF9yZXNwb25zZV9lcnJvcih2dWIzMDAtXHUwMDNlcmVzcC5lcnJvci5lcnJvcl9jb2RlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE2Olx0XHR1c2Jfc2dfY2FuY2VsKFx1MDAyNnZ1YjMwMC1cdTAwM2VzZ19yZXF1ZXN0KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODE3LVx0fVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MTg6XHRjb21wbGV0ZShcdTAwMjZ2dWIzMDAtXHUwMDNlY29tbWFuZF9jb21wbGV0ZSk7XHQvKiBnb3RfcmVzcG9uc2VfaW4gKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODE5LX1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTgyMT1zdGF0aWMgdm9pZCBjb21tYW5kX291dF9jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjIte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODIzOlx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODI0LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODI1Olx0XHRjb21wbGV0ZShcdTAwMjZ2dWIzMDAtXHUwMDNlY29tbWFuZF9jb21wbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTgyNi1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjgtXHRcdHVuc2lnbmVkIGludCBwaXBlID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODI5Olx0XHRcdHVzYl9yY3ZidWxrcGlwZSh2dWIzMDAtXHUwMDNldWRldiwgdnViMzAwLVx1MDAzZWNtbmRfcmVzX2VwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMwOlx0XHR1c2JfZmlsbF9idWxrX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiLCB2dWIzMDAtXHUwMDNldWRldiwgcGlwZSxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMxOlx0XHRcdFx0ICBcdTAwMjZ2dWIzMDAtXHUwMDNlcmVzcCwgc2l6ZW9mKHZ1YjMwMC1cdTAwM2VyZXNwKSxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMyOlx0XHRcdFx0ICBjb21tYW5kX3Jlc19jb21wbGV0ZWQsIHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgzMzpcdFx0dnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoID0gMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODM0Olx0XHRyZXQgPSB1c2Jfc3VibWl0X3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODM1LVx0XHRpZiAocmV0ID09IDApIHtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg0NC1cdFx0XHQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODQ1Olx0XHRcdGNvbXBsZXRlKFx1MDAyNnZ1YjMwMC1cdTAwM2Vjb21tYW5kX2NvbXBsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODQ2LVx0XHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NTItICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg1MzpzdGF0aWMgdm9pZCBzbm9vcF9ibG9ja19zaXplX2FuZF9idXNfd2lkdGgoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwLFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NTQtXHRcdFx0XHRcdCAgIHUzMiBjbWRfYXJnKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODU2LVx0aWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDIyMjAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NTc6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbMV0gPSAoY21kX2FyZyBcdTAwM2NcdTAwM2MgOCkgfCAoMHgwMEZGIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzFdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODU4LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwMjIwMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg1OTpcdFx0dnViMzAwLVx1MDAzZWZic1sxXSA9ICgweEZGIFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbMV0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjAtXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA0MjIwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODYxOlx0XHR2dWIzMDAtXHUwMDNlZmJzWzJdID0gKGNtZF9hcmcgXHUwMDNjXHUwMDNjIDgpIHwgKDB4MDBGRiBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1syXSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2Mi1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDQyMDAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NjM6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbMl0gPSAoMHhGRiBcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzJdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODY0LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwNjIyMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg2NTpcdFx0dnViMzAwLVx1MDAzZWZic1szXSA9IChjbWRfYXJnIFx1MDAzY1x1MDAzYyA4KSB8ICgweDAwRkYgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbM10pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjYtXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA2MjAwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODY3Olx0XHR2dWIzMDAtXHUwMDNlZmJzWzNdID0gKDB4RkYgXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1szXSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2OC1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDgyMjAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4Njk6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbNF0gPSAoY21kX2FyZyBcdTAwM2NcdTAwM2MgOCkgfCAoMHgwMEZGIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzRdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODcwLVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwODIwMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3MTpcdFx0dnViMzAwLVx1MDAzZWZic1s0XSA9ICgweEZGIFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbNF0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NzItXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBBMjIwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODczOlx0XHR2dWIzMDAtXHUwMDNlZmJzWzVdID0gKGNtZF9hcmcgXHUwMDNjXHUwMDNjIDgpIHwgKDB4MDBGRiBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1s1XSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg3NC1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEEyMDAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NzU6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbNV0gPSAoMHhGRiBcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzVdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODc2LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwQzIyMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3NzpcdFx0dnViMzAwLVx1MDAzZWZic1s2XSA9IChjbWRfYXJnIFx1MDAzY1x1MDAzYyA4KSB8ICgweDAwRkYgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbNl0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NzgtXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBDMjAwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODc5Olx0XHR2dWIzMDAtXHUwMDNlZmJzWzZdID0gKDB4RkYgXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1s2XSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4MC1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEUyMjAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4ODE6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbN10gPSAoY21kX2FyZyBcdTAwM2NcdTAwM2MgOCkgfCAoMHgwMEZGIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzddKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODgyLVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwRTIwMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4MzpcdFx0dnViMzAwLVx1MDAzZWZic1s3XSA9ICgweEZGIFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbN10pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODQtXHRlbHNlIGlmICgoMHhGQkZGRkUwMyBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDAwMEUwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODg1Olx0XHR2dWIzMDAtXHUwMDNlYnVzX3dpZHRoID0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODg2LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDMgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwMDBFMDIpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4NzpcdFx0dnViMzAwLVx1MDAzZWJ1c193aWR0aCA9IDQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4OC19XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4OS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODkwOnN0YXRpYyB2b2lkIHNlbmRfY29tbWFuZChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5MS17XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg5MjpcdC8qIGNtZF9tdXRleCBpcyBoZWxkIGJ5IHZ1YjMwMF9jbW5kd29ya190aHJlYWQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODkzOlx0c3RydWN0IG1tY19jb21tYW5kICpjbWQgPSB2dWIzMDAtXHUwMDNlY21kO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTQ6XHRzdHJ1Y3QgbW1jX2RhdGEgKmRhdGEgPSB2dWIzMDAtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODk1LVx0aW50IHJldHZhbDtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5Ny1cdHU4IHJlc3BvbnNlX3R5cGU7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg5ODpcdGlmICh2dWIzMDAtXHUwMDNlYXBwX3NwZWMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODk5LVx0XHRzd2l0Y2ggKGNtZC1cdTAwM2VvcGNvZGUpIHtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwMS1cdFx0XHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MDI6XHRcdFx0dnViMzAwLVx1MDAzZXJlc3BfbGVuID0gNjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTAzLVx0XHRcdGlmICgweDAwMDAwMDAwID09ICgweDAwMDAwMDAzIFx1MDAyNiBjbWQtXHUwMDNlYXJnKSlcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTA0Olx0XHRcdFx0dnViMzAwLVx1MDAzZWJ1c193aWR0aCA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwNS1cdFx0XHRlbHNlIGlmICgweDAwMDAwMDAyID09ICgweDAwMDAwMDAzIFx1MDAyNiBjbWQtXHUwMDNlYXJnKSlcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTA2Olx0XHRcdFx0dnViMzAwLVx1MDAzZWJ1c193aWR0aCA9IDQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwNy1cdFx0XHRlbHNlXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwODpcdFx0XHRcdGRldl9lcnIoXHUwMDI2dnViMzAwLVx1MDAzZXVkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDktXHRcdFx0XHRcdFwmIzM0O3VuZXhwZWN0ZWQgQUNNRDYgYnVzX3dpZHRoPSVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTEzLVx0XHRcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkxNDpcdFx0XHR2dWIzMDAtXHUwMDNlcmVzcF9sZW4gPSA2O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MTUtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MTctXHRcdFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTE4Olx0XHRcdHZ1YjMwMC1cdTAwM2VyZXNwX2xlbiA9IDY7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkxOS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkyMS1cdFx0XHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MjI6XHRcdFx0dnViMzAwLVx1MDAzZXJlc3BfbGVuID0gNjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTIzLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTI1LVx0XHRcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkyNjpcdFx0XHR2dWIzMDAtXHUwMDNlcmVzcF9sZW4gPSA2O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjktXHRcdFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTMwOlx0XHRcdHZ1YjMwMC1cdTAwM2VyZXNwX2xlbiA9IDY7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkzMS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkzMy1cdFx0XHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MzQ6XHRcdFx0dnViMzAwLVx1MDAzZXJlc3BfbGVuID0gNjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTM1LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTM3LVx0XHRcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkzODpcdFx0XHR2dWIzMDAtXHUwMDNlcmVzcF9sZW4gPSA2O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MzktXHRcdFx0YnJlYWs7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTk0MC1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTQxOlx0XHRcdHZ1YjMwMC1cdTAwM2VyZXNwX2xlbiA9IDA7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTk0Mi1cdFx0XHRjbWQtXHUwMDNlZXJyb3IgPSAtRUlOVkFMO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5NDM6XHRcdFx0Y29tcGxldGUoXHUwMDI2dnViMzAwLVx1MDAzZWNvbW1hbmRfY29tcGxldGUpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzk5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNESU8gQ2FyZCBFbXVsYXRpb24gdmlhIFVTQiBhbmQgU3l6a2FsbGVyKioKCk9rYXksIHNvIGB2dWIzMDBgIGlzIGEgVVNCLXRvLVNESU8gYnJpZGdlLCBnb3QgaXQuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHN5emthbGxlciwgd2l0aCBpdHMgVVNCIGdhZGdldCBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvdmhjaSksIG1pZ2h0IGJlIGFibGUgdG8gZW11bGF0ZSB0aGlzISBMZXQmIzM5O3MgdmVyaWZ5IGlmIGB2dWIzMDBgIGlzIGV2ZW4gZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3Mga2VybmVsIGNvbmZpZy4KCkhtbSwgdGhlIHByb21wdCBpcyB0aHJvd2luZyB1cCBzb21lIHJlZCBmbGFncywgdGFsa2luZyBhYm91dCBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGNhcmRzIG9yIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBCdXQgaWYgYHZ1YjMwMGAgaXMgbWFuYWdlYWJsZSB2aWEgVVNCLCB3ZSAqc2hvdWxkKiBiZSBhYmxlIHRvIGF0dGFjaCBhbiBTRElPIGRldmljZS4gVGhpcyBkZXZpY2UgYWN0cyBhcyBhbiBTRElPIGhvc3QgY29udHJvbGxlciB2aWEgVVNCLCB3aGljaCBtZWFucyB0aGF0IHN5emthbGxlciwgYWN0aW5nIGFzIHRoZSBVU0IgZGV2aWNlLCBjYW4gaW5qZWN0IFNESU8gZGV2aWNlcy4KClNvLCBsZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBhY3R1YWxseSAqdXNlcyogYHZ1YjMwMGAuIFJpZ2h0LCBzeXprYWxsZXIgZW11bGF0ZXMgdGhlIFVTQiBkZXZpY2UgKml0c2VsZiosIHNvIGl0IHdvdWxkIGJlIGVtdWxhdGluZyB0aGUgYHZ1YjMwMGAgZGV2aWNlLiBUaGUga2VybmVsIHRoZW4gbG9hZHMgdGhlIGB2dWIzMDBgIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGFuIE1NQyBob3N0LCBhbmQgc3l6a2FsbGVyIChhcyBgdnViMzAwYCkgY2FuIHRoZW4gZmVlZCBiYWNrIHJlc3BvbnNlcyB0byBNTUMgY29tbWFuZHMsIGVmZmVjdGl2ZWx5IGZha2luZyBhbiBTRElPIGNhcmQuIFRoaXMgaXMgcHJvbWlzaW5nLgoKVGhpbmtpbmcgZnVydGhlciwgaWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGFuIFNESU8gY2FyZCB0aHJvdWdoIHRoZSBgdnViMzAwYCByb3V0ZSwgdGhlbiB0aGF0IG9wZW5zIHRoZSBkb29yIHRvIHByb2JpbmcgYSBzcGVjaWZpYyBTRElPIGRyaXZlciwgc3VjaCBhcyBgcnRsODcyM2JzYC4gVGhhdCYjMzk7cyB0aGUga2V5OiBjYW4gd2UgZW11bGF0ZSAqdGhhdCogc3BlY2lmaWMgY2FyZD8gWWVzLCBieSBjYXJlZnVsbHkgY3JhZnRpbmcgdGhlIHJlc3BvbnNlcyB0byBTRElPIGVudW1lcmF0aW9uIGNvbW1hbmRzIChDTUQ1LCBDTUQ1MywgZXRjLikgd2l0aCB0aGUgY29ycmVjdCB2ZW5kb3IgYW5kIGRldmljZSBJRHMuCgpCdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBkbyB0aGlzPyBUaGUgVVNCIGZ1enplciBpcyByYW5kb207IGl0IGdlbmVyYXRlcyByYW5kb20gVVNCIHJlc3BvbnNlcy4gSXQgKm1pZ2h0KiBzYXRpc2Z5IHRoZSBNTUMgZW51bWVyYXRpb24sIGJ1dCBpdCYjMzk7cyB1bmxpa2VseSBmb3IgYSBjb21wbGljYXRlZCBwcm90b2NvbCBsaWtlIE1NQy9TRElPIGJ5IGFjY2lkZW50LiBJIHJlbWVtYmVyIHRoZSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el91c2JfY29udHJvbF9pb2Agc3lzY2FsbHMsIGJ1dCBkbyB3ZSBoYXZlIFNESU8gZGVzY3JpcHRpb25zPyBUaGF0JiMzOTtzIHRoZSBxdWVzdGlvbi4KCkxldCYjMzk7cyBjaGVjayBpZiB0aGUgYHJ0bDg3MjNic2AgaXMgcmVhY2hhYmxlLCB0aG91Z2guIFJpZ2h0LCBpdCYjMzk7cyBhIHN0YWdpbmcgZHJpdmVyLiBJcyBpdCBldmVuIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gTWlnaHQgYmUgbW9yZSB0cm91YmxlIHRoYW4gaXQmIzM5O3Mgd29ydGguIFRpbWUgdG8gY2hlY2sgdGhhdCBwYXRjaCBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oPTMyPXZvaWQgcnR3X2lwc19wd3JfZG93bihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaC0zMy1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmg6MzQ6aW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcik7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oLTM1LXZvaWQgcnR3X25kZXZfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYz03MjA9dTggcnR3X2ZyZWVfZHJ2X3N3KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc1NC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzU1OnN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzU2LXtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3Mi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzczOmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYy03NzQte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzc4LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYzo3Nzk6XHRyZXR1cm4gX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHBhZGFwdGVyLCBuYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzgwLX1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zMzc9c3RhdGljIGludCBydHdfZHJ2X2luaXQoXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzUzLVx0LyogZGV2X2FsbG9jX25hbWUgXHUwMDI2XHUwMDI2IHJlZ2lzdGVyX25ldGRldiAqL1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6MzU0Olx0c3RhdHVzID0gcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoaWYxKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTM1NS1cdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1Njg3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogODg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaDogUlRMODcyM0JTIGFuZCBTeXprYWxsZXIgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgUlRMODcyM0JTYCwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNic2AgZGlyZWN0b3J5LiAgVGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmaWxlczogYG9zX2ludGZzLmNgLCBgcnR3X2NtZC5jYCwgYHJ0d19yZWN2LmNgLCBhbmQgYHNkaW9faW50Zi5jYC4gIFRoZSBtb2RpZmljYXRpb25zIHRvIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaW4gYG9zX2ludGZzLmNgIGFyZSBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSByZW1vdmVkIHRoZSBjbGVhbnVwIGNvZGUgKGZyZWVpbmcgbmV0d29yayBkZXZpY2UgYW5kIGRyaXZlciBzcGVjaWZpYyBzdHJ1Y3R1cmVzKSBvbiBhIGByZWdpc3Rlcl9uZXRkZXZgIGZhaWx1cmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGZpeGluZyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSwgc2luY2UgdGhlIGZyZWUgZnVuY3Rpb25zIG1pZ2h0IGJlIGNhbGxlZCBlbHNld2hlcmUuICBHb29kIGNhdGNoLCB0aGF0JiMzOTtzIGEgY2xhc3NpYyBtZW1vcnkgbWFuYWdlbWVudCBwcm9ibGVtLgoKVGhlbiB0aGVyZSBhcmUgdGhlc2UgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IHdlcmUgY2hhbmdlZCBpbiB0aGUgYGMyaF93a19jYWxsYmFja2AgYW5kIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgZnVuY3Rpb25zLiAgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGZpeGVzLiBBZ2FpbiwgZ29vZCBjYXRjaC4gRmluYWxseSwgaW4gYHNkaW9faW50Zi5jYCwgdGhleSYjMzk7dmUgcmVwbGFjZWQgYGtmcmVlKHBhZGFwdGVyLSZndDtIYWxEYXRhKWAgd2l0aCBgcnR3X2hhbF9kYXRhX2RlaW5pdChwYWRhcHRlcilgLiAgTG9va3MgbGlrZSBhbm90aGVyIG1lbW9yeSBsZWFrIG9yIHBvdGVudGlhbCBjb3JydXB0aW9uIGZpeC4gT3ZlcmFsbCwgdGhlc2UgYXJlIGFsbCBmdW5jdGlvbmFsIGNoYW5nZXMgYW5kIHBvaW50IHRvd2FyZHMgYnVnIGZpeGVzIC0gY2xhc3NpYyBzdHVmZiB5b3UgZXhwZWN0IHRvIHNlZS4KCk5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGlzIHRoaXMgZHJpdmVyLCBgUlRMODcyM0JTYCwgd29ydGggZnV6emluZz8gQ2FuIGl0IGV2ZW4gYmUgcmVhY2hlZCB3aXRoIGEgdG9vbCBsaWtlIHN5emthbGxlcj8gIEkmIzM5O20gdGhpbmtpbmcsIGlmIHN5emthbGxlciBjYW4gZW11bGF0ZSBTRElPIHZpYSBhIFVTQiBnYWRnZXQgbGlrZSBgdnViMzAwYCwgdGhlbiBwb3RlbnRpYWxseSwgeWVzLiBCdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBlbXVsYXRlIFNESU8gdmlhIGB2dWIzMDBgPyAgSSBuZWVkIHRvIGNoZWNrIHN5emthbGxlciYjMzk7cyBjb25maWd1cmF0aW9uIGZvciB0aGF0LCBvciBpZiBpdCYjMzk7cyBnZW5lcmFsbHkgcG9zc2libGUgYXQgYWxsLgoKV2FpdCwgbG9va2luZyBhdCB0aGUgc3l6a2FsbGVyIHNldHVwLCBpdCBoYXMgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaS4gQnV0IHRoZSBgUlRMODcyM0JTYCBpcyBhIGZ1bGwgTUFDIGRyaXZlciwgbm90IG1hYzgwMjExIGJhc2VkLiAgSXQgdXNlcyBgY2ZnODAyMTFgIGJ1dCBpbXBsZW1lbnRzIGl0cyBvd24gTUFDLgoKTm93IEkmIzM5O20gdGhpbmtpbmcsIGNhbiB0aGlzIGNvZGUgcGF0aCBiZSByZWFjaGVkPyAgV2FpdCBhIG1pbnV0ZS4uLiBpZiB0aGlzIGJ1ZyB3YXMgZm91bmQgYnkgYHN5ei1jbHVzdGVyYCAoYXMgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCksIGl0IG1lYW5zIHN5emthbGxlciAqZGlkKiByZWFjaCBpdCEgIFRoZSBjb21taXQgbWVzc2FnZSBzYXlzOiBgQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCBhbmQgYHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld2AuICBUaGF0JiMzOTtzIGl0LiBTeXprYWxsZXIgZm91bmQgYSBjcmFzaCwgc28gdGhlIHBhdGNoIGlzIGJlaW5nIHRlc3RlZCBieSB0aGUgYHN5ei1jbHVzdGVyYC4gVGhpcyBtZWFucyBpdCBNVVNUIGJlIHJlYWNoYWJsZS4KCkJ1dCBob3cgZGlkIHN5emthbGxlciByZWFjaCBhbiBTRElPIGRyaXZlcj8gIElzIHRoZXJlIGEgc29mdHdhcmUgU0RJTyBob3N0IGNvbnRyb2xsZXIgdGhhdCBzeXprYWxsZXIgdXNlcywgb3Igc29tZSBvdGhlciB3YXkgdGhpcyBpcyBiZWluZyB0cmlnZ2VyZWQ/ICBJJiMzOTtkIG5lZWQgdG8gbG9vayBpbnRvIGhvdyBzeXprYWxsZXIgaXMgc2V0IHVwIHRvIGZpbmQgdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGl0IHVzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzMyNgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgJiMzNDtkdW1teSYjMzQ7KioKClJpZ2h0LCBzbyB0aGUgd29yZCAmIzM0O2R1bW15JiMzNDsganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBJbW1lZGlhdGVseSwgSSYjMzk7bSBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBpdHMgcG90ZW50aWFsIG1lYW5pbmdzIGluIHRoaXMgY29udGV4dC4gSXMgaXQgYmVpbmcgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIHZhcmlhYmxlPyBBIHRlc3QgY2FzZT8gUGVyaGFwcyBhIHdheSB0byBzaW1wbGlmeSBhbiBhcmd1bWVudCBvciBtb2RlbCBieSBpbnRlbnRpb25hbGx5IGlnbm9yaW5nIGNvbXBsZXhpdGllcz8gT3IgaXMgaXQgYmVpbmcgdXNlZCBkaXNwYXJhZ2luZ2x5LCBhcyBpbiwgYSAmIzM0O2R1bW15IHZhcmlhYmxlPyYjMzQ7IFRoZSBhbWJpZ3VpdHkgaGVyZSByZXF1aXJlcyBhIGJpdCBtb3JlIGluZm9ybWF0aW9uLiBXaGF04oCZcyB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gaW4gcXVlc3Rpb24/IEhvdyBjb21wbGV4IGlzIHRoZSBzeXN0ZW0gYmVpbmcgZGVzY3JpYmVkPyBXaGF0IGlzIHRoaXMgJiMzNDtkdW1teSYjMzQ7IHN1cHBvc2VkIHRvICpkbyo/IFdpdGhvdXQgY29udGV4dCwgJiMzNDtkdW1teSYjMzQ7IGNvdWxkIHJlcHJlc2VudCBhIGJyb2FkIHNwZWN0cnVtIG9mIHRoaW5ncy4gSXQmIzM5O3MgYSBsb2FkZWQgdGVybSwgaW5oZXJlbnRseSBjYXJyeWluZyBzb21lIGxldmVsIG9mIGFic3RyYWN0aW9uIG9yIHNpbXBsaWZpY2F0aW9uLCBidXQgdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGF0IGFic3RyYWN0aW9uIGlzIHdoYXQmIzM5O3MgY3J1Y2lhbC4gSSYjMzk7bGwgbmVlZCBtb3JlIGRldGFpbCB0byBldmFsdWF0ZSBpdHMgZWZmZWN0aXZlbmVzcyBvciBhcHByb3ByaWF0ZW5lc3MuIFRoaXMgdGhvdWdodCBuZWVkcyB1bnBhY2tpbmcgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jPTMwPXN0YXRpYyBpbnQgc2Rpb19nZXRfcGVuZGluZ19pcnFzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTggKnBlbmRpbmcpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ1LVx0ICAgICEoaG9zdC1cdTAwM2VjYXBzIFx1MDAyNiBNTUNfQ0FQX1NESU9fSVJRKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jOjQ2Olx0XHR1bnNpZ25lZCBjaGFyIGR1bW15O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ4LVx0XHQvKiBBIGZha2UgaW50ZXJydXB0IGNvdWxkIGJlIGNyZWF0ZWQgd2hlbiB3ZSBwb2xsIFNESU9fQ0NDUl9JTlR4XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmM6NDk6XHRcdCAqIHJlZ2lzdGVyIHdpdGggYSBNYXJ2ZWxsIFNEODc5NyBjYXJkLiBBIGR1bW15IENNRDUyIHJlYWQgdG9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy01MC1cdFx0ICogZnVuY3Rpb24gMCByZWdpc3RlciAweGZmIGNhbiBhdm9pZCB0aGlzLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTUxLVx0XHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYzo1MjpcdFx0bW1jX2lvX3J3X2RpcmVjdChjYXJkLCAwLCAwLCAweGZmLCAwLCBcdTAwMjZkdW1teSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMtNTMtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYz01Nz1zdGF0aWMgaW50IHRodW5kZXJfbW1jX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmMtMTM0LVx0XHQgKiBtbWNfb2ZfcGFyc2UgYW5kIGRldm0qIHJlcXVpcmUgb25lIGRldmljZSBwZXIgc2xvdC5cbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmM6MTM1Olx0XHQgKiBDcmVhdGUgYSBkdW1teSBkZXZpY2UgcGVyIHNsb3QgYW5kIHNldCB0aGUgbm9kZSBwb2ludGVyIHRvXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jLTEzNi1cdFx0ICogdGhlIHNsb3QuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdGhpcyBpcyB1c2luZ1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmM9NDUwPXN0YXRpYyB2b2lkIGxpdGV4X21tY19zZXRfaW9zKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX2lvcyAqaW9zKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmMtNDU1LVx0ICogVGhlIFNEIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgYXQgbGVhc3QgNzQgaWRsZSBjbG9ja3MgYmVmb3JlIENNRDAuXG5kcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5jOjQ1NjpcdCAqIFRoZXNlIGR1bW15IGN5Y2xlcyBpcyBnZW5lcmF0ZWQgYnkgd3JpdGluZyBMSVRFWF9QSFlfSU5JVElBTElaRS5cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmMtNDU3LVx0ICovXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmM9MjAxPXN0YXRpYyB2b2lkIG1tY19vbWFwX3NlbGVjdF9zbG90KHN0cnVjdCBtbWNfb21hcF9zbG90ICpzbG90LCBpbnQgY2xhaW1lZClcbi0tXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYy0yMzUtXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYzoyMzY6XHRcdC8qIERvaW5nIHRoZSBkdW1teSByZWFkIGhlcmUgc2VlbXMgdG8gd29yayBhcm91bmQgc29tZSBidWdcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNy1cdFx0ICogYXQgbGVhc3QgaW4gT01BUDI0eHggc2lsaWNvbiB3aGVyZSB0aGUgY29tbWFuZCB3b3VsZCBub3Rcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM9MjA4PXN0YXRpYyB2b2lkIHNkX3NlbmRfY21kX2dldF9yc3Aoc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDEtXHRcdCAqIFRoZSBjb250cm9sbGVyIG9mZmxvYWRzIHRoZSBsYXN0IGJ5dGUge0NSQy03LCBlbmQgYml0IDEmIzM5O2IxfVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jOjMwMjpcdFx0ICogb2YgcmVzcG9uc2UgdHlwZSBSMi4gQXNzaWduIGR1bW15IENSQywgMCwgYW5kIGVuZCBiaXQgdG8gdGhlXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmMtMzAzLVx0XHQgKiBieXRlKHB0clsxNl0sIGdvZXMgaW50byB0aGUgTFNCIG9mIHJlc3BbM10gbGF0ZXIpLlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYz0yODU9c3RhdGljIHZvaWQgc2Rfc2VuZF9jbWRfZ2V0X3JzcChzdHJ1Y3QgcnRzeF91c2Jfc2RtbWMgKmhvc3QsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jLTQyNS1cdFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSYjMzk7YjF9XG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmM6NDI2Olx0XHQgKiBvZiByZXNwb25zZSB0eXBlIFIyLiBBc3NpZ24gZHVtbXkgQ1JDLCAwLCBhbmQgZW5kIGJpdCB0byB0aGVcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYy00MjctXHRcdCAqIGJ5dGUocHRyWzE2XSwgZ29lcyBpbnRvIHRoZSBMU0Igb2YgcmVzcFszXSBsYXRlcikuXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2RoYy1pbXguYy0yMTQtXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jOjIxNTovKiB0aGUgY29udHJvbGxlciBoYXMgZHVtbXkgcGFkIGZvciBjbG9jayBsb29wYmFjayAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2RoYy1pbXguYy0yMTYtI2RlZmluZSBFU0RIQ19GTEFHX0RVTU1ZX1BBRFx0XHRCSVQoMTkpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jPTEwMT1zdGF0aWMgdTMyIHB4YXYxX2lycShzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwgdTMyIGludG1hc2spXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEwNi1cdGlmIChweGF2Ml9ob3N0LVx1MDAzZXNkaW9fbXJxIFx1MDAyNlx1MDAyNiAoaW50bWFzayBcdTAwMjYgU0RIQ0lfSU5UX0NNRF9NQVNLKSkge1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEwNzpcdFx0LyogVGhlIGR1bW15IENNRDAgZm9yIHRoZSBTRElPIHdvcmthcm91bmQganVzdCBjb21wbGV0ZWQgKi9cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMDgtXHRcdHNkaGNpX3dyaXRlbChob3N0LCBpbnRtYXNrIFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0ssIFNESENJX0lOVF9TVEFUVVMpO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYz0xMjM9c3RhdGljIHZvaWQgcHhhdjFfcmVxdWVzdF9kb25lKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTM2LVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEzNzpcdFx0LyogQ2xvY2sgaXMgbm93IHN0b3BwZWQsIHNvIHJlc3RhcnQgaXQgYnkgc2VuZGluZyBhIGR1bW15IENNRDAgKi9cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzgtXHRcdHB4YXYyX2hvc3QgPSBzZGhjaV9wbHRmbV9wcml2KHNkaGNpX3ByaXYoaG9zdCkpO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xNDktXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTUwOlx0XHQvKiBEb24mIzM5O3QgZmluaXNoIHRoaXMgcmVxdWVzdCB1bnRpbCB0aGUgZHVtbXkgQ01EMCBmaW5pc2hlcyAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTE1MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYz02NTM9c3RhdGljIGludCBzZGhjaV9wcmVfZG1hX3RyYW5zZmVyKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02ODktXHRcdFx0XHRcdCAgIG1tY19nZXRfZG1hX2RpcihkYXRhKSk7XG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmM6NjkwOlx0XHQvKiBKdXN0IGEgZHVtbXkgdmFsdWUgKi9cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02OTEtXHRcdHNnX2NvdW50ID0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkzNTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2OTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU0RJTyBEZXZpY2UgSW5qZWN0aW9uIHZpYSBVU0IgRW11bGF0aW9uOiBBIEZ1enppbmcgT3Bwb3J0dW5pdHkqKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEkgbm90aWNlZCB0aGUgYHZ1YjMwMGAsIGEgVVNCLXRvLVNESU8gYnJpZGdlLiBUaGUgd2hlZWxzIGFyZSB0dXJuaW5nIOKAkyBzeXprYWxsZXImIzM5O3MgZ290IGEgVVNCIGZ1enplciwgc3BlY2lmaWNhbGx5IGBkdW1teV9oY2RgLiBJZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBlbXVsYXRlIGEgYHZ1YjMwMGAgb3ZlciBVU0IsIHdlIGNvdWxkIHBvdGVudGlhbGx5IGluamVjdCBTRElPIGRldmljZXMuCgpJIGRvbiYjMzk7dCBuZWVkIHRvIGRpdmUgaW50byBzeXprYWxsZXImIzM5O3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaXMgd2hldGhlciB0aGlzIHBhdGggaXMgZXZlbiAqcG9zc2libGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIFFFTVUmIzM5O3MgVVNCIHN1cHBvcnQsIGFuZCB0aGF0IHN5emthbGxlciB1c2VzIHRoZSBgZHVtbXlfaGNkYCB0byBlbXVsYXRlIFVTQiwgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiBZZXMsIGl0IGlzISBXZSBjYW4gYWJzb2x1dGVseSByZWFjaCBTRElPIGRyaXZlcnMgYnkgZmFraW5nIGEgYHZ1YjMwMGAgVVNCIGRldmljZSB3aXRoIGFuIFNESU8gY2FyZCBhdHRhY2hlZC4KCkkgYnJpZWZseSBjb25zaWRlcmVkIG90aGVyIHBvdGVudGlhbCByb3V0ZXMsIGxpa2UgYENPTkZJR19NTUNfVEVTVGAgb3IgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW07IHRoZXkmIzM5O3JlIG5vdCByZWxldmFudC4gVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhlIFVTQiBjb25uZWN0aW9uIGFuZCB0aGUgYWJpbGl0eSB0byBlbXVsYXRlIGEgZGV2aWNlLgoKTm93LCBsZXQmIzM5O3Mgem9vbSBpbi4gSXMgYFJUTDg3MjNCU2AgZW5hYmxlZD8gQ2hlY2tpbmcgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ2AgY29uZmlybXMgaXQgZGVwZW5kcyBvbiBgV0xBTiAmYW1wOyZhbXA7IE1NQyAmYW1wOyZhbXA7IENGRzgwMjExYC4gSWYgd2UgZW5hYmxlIGBDT05GSUdfUlRMODcyM0JTYCwgd2UmIzM5O3JlIGdvb2QgdG8gZ28uCgpJcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBBYnNvbHV0ZWx5ISBUaGlzIGlzIGEgV2lGaSBkcml2ZXIuIFdpRmkgZHJpdmVycyBhcmUgbm90b3Jpb3VzIGZvciBwYXJzaW5nIGNvbXBsZXggbmV0d29yayBmcmFtZXMsIGVzcGVjaWFsbHkgbWFuYWdlbWVudCBmcmFtZXMuIEFuZCB0aGUgYmVhdXRpZnVsIHRoaW5nIGlzLCB3ZSBjYW4gaW5qZWN0IHRoZXNlIGZyYW1lcyBlaXRoZXIgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gIG9yIHRoZSBTRElPIGludGVyZmFjZSBpZiBzeXprYWxsZXIgaXMgZnV6emluZyBTRElPIHJlc3BvbnNlcy4KClRoZSBjbGluY2hlcj8gU3l6a2FsbGVyIGFscmVhZHkgZm91bmQgYSBidWcgaGVyZS4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emluZyBpcyB3b3J0aCBpdC4gSSYjMzk7bSBzZWVpbmcgZnVuY3Rpb25hbCBidWdzLCBzcGVjaWZpY2FsbHkgZG91YmxlIGZyZWVzIGFuZCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBmcm9tIHRoZSBwYXRjaCB0aGF0IGZpeGVzIHRoZSBidWcuIFRoaXMgaXMgZ3JlYXQsIHNvIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyBpZGVudGlmaWVkIGFyZToKLSAgIGBjMmhfd2tfY2FsbGJhY2tgIGluIGBydHdfY21kLmNgCi0gICBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIGluIGBydHdfcmVjdi5jYAotICAgYF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaW4gYG9zX2ludGZzLmNgCi0gICBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGluIGBvc19pbnRmcy5jYAotICAgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgCi0gICBgcnR3X2Rydl9pbml0YCBpbiBgc2Rpb19pbnRmLmNgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19kcnZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTI1PU1PRFVMRV9ERVZJQ0VfVEFCTEUoc2Rpbywgc2Rpb19pZHMpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjYtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzoyNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTI4LXN0YXRpYyB2b2lkIHJ0d19kZXZfcmVtb3ZlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTM3PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgcnRsODcyM2JzX3NkaW9fZHJpdmVyID0ge1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6Mzg6XHQucHJvYmUgPSBydHdfZHJ2X2luaXQsXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zOS1cdC5yZW1vdmUgPSBydHdfZGV2X3JlbW92ZSxcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zMDg9c3RhdGljIHZvaWQgcnR3X3NkaW9faWYxX2RlaW5pdChzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTMzNi0gKi9cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjMzNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTMzOC1cdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMTY3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTRElPIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBTRElPIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGBydHdfZHJ2X2luaXRgIGlzIHRoZSBrZXkgcHJvYmUgZnVuY3Rpb24gaGVyZS4gVGhhdCYjMzk7cyB3aGVyZSBpdCBhbGwgYmVnaW5zLCB0aGUgcG9pbnQgd2hlcmUgdGhlIGhhcmR3YXJlIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBkcml2ZXIga2lja3MgaW50byBnZWFyLiBJdCBtYWtlcyBzZW5zZSwgb2YgY291cnNlOyB0aGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCBmb3IgYW4gU0RJTyBkcml2ZXIuIEFuZCB0aGVuLCBkdXJpbmcgdGhhdCBwcm9iZSwgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBjYWxsZWQuIFNvLCB0aGUgbmV0d29yayBkZXZpY2UgaXMgYmVpbmcgcmVnaXN0ZXJlZCBhcyBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpJJiMzOTttIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGMyaF93a19jYWxsYmFja2AsIHdoaWNoIEkmIzM5O20gaW5mZXJyaW5nIGlzIGEgd29ya3F1ZXVlIGNhbGxiYWNrIGZ1bmN0aW9uLiBHaXZlbiB0aGUgbmFtaW5nLCBpdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gY29tbXVuaWNhdGluZyBjb21tYW5kL2RhdGEgZnJvbSB0aGUgaG9zdCB0byB0aGUgY2FyZCwgYnV0IGl0IGJlYXJzIGludmVzdGlnYXRpbmcgZnVydGhlciB0byBiZSBzdXJlLgoKTGFzdGx5LCBhbmQgdGhpcyBpcyB3aGF0JiMzOTtzIGNhdWdodCBteSBpbW1lZGlhdGUgYXR0ZW50aW9uLCB0aGVyZSYjMzk7cyBgcmVjdmZyYW1lX2Noa19kZWZyYWdgLiBUaGlzIGlzIGEgcHJldHR5IGNyaXRpY2FsIGZ1bmN0aW9uIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSBmcmFnbWVudGF0aW9uIGhhbmRsaW5nIGhhcHBlbnMsIHNvIG5vdyBJIG5lZWQgdG8gY2hlY2sgb3V0IHRoZSBjYWxsZXJzIGZvciBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIHRvIHNlZSB3aGVyZSBpbiB0aGUgcGFja2V0IHJlY2VwdGlvbiBwcm9jZXNzIGl0JiMzOTtzIGJlaW5nIGludm9rZWQuIFRoYXQgZ2l2ZXMgYSBzb2xpZCBzZW5zZSBvZiB0aGUgd2hvbGUgcGljdHVyZSBhbmQgYWxsb3dzIGZvciBhIG1vcmUgZm9jdXNlZCByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY3ZmcmFtZV9jaGtfZGVmcmFnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MTk0PXNpZ25lZCBpbnQgcnR3X2VucXVldWVfcmVjdmZyYW1lKHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2ZnJhbWUsIHN0cnVjdCBfX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDctLypcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwODogKiBjYWxsZXIgOiBkZWZyYWcgOyByZWN2ZnJhbWVfY2hrX2RlZnJhZyBpbiByZWN2X3RocmVhZCAgKHBhc3NpdmUpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDktICogcGZyYW1lcXVldWU6IGRlZnJhZ19xdWV1ZSA6IHdpbGwgYmUgYWNjZXNzZWQgaW4gcmVjdl90aHJlYWQgIChwYXNzaXZlKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTEwNDQ9c3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9kZWZyYWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMTExOS0vKiBjaGVjayBpZiBuZWVkIHRvIGRlZnJhZywgaWYgbmVlZGVkIHF1ZXVlIHRoZSBmcmFtZSB0byBkZWZyYWdfcSAqL1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MTEyMDpzdGF0aWMgdW5pb24gcmVjdl9mcmFtZSAqcmVjdmZyYW1lX2Noa19kZWZyYWcoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmVjdl9mcmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTExMjEte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTEyMTk9c3RhdGljIHNpZ25lZCBpbnQgdmFsaWRhdGVfcmVjdl9tZ250X2ZyYW1lKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZfZnJhbWUpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMTIyMi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjEyMjM6XHRwcmVjdl9mcmFtZSA9IHJlY3ZmcmFtZV9jaGtfZGVmcmFnKHBhZGFwdGVyLCBwcmVjdl9mcmFtZSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0xMjI0LVx0aWYgKCFwcmVjdl9mcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYz0yMDc5PXN0YXRpYyBpbnQgcmVjdl9mdW5jX3Bvc3RoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmZyYW1lKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTEtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMDkyOlx0cHJmcmFtZSA9IHJlY3ZmcmFtZV9jaGtfZGVmcmFnKHBhZGFwdGVyLCBwcmZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTMtXHRpZiAoIXByZnJhbWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjQ2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIHByb3RvY29sIGhhbmRsaW5nLCBhbmQgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBmcmFnbWVudGF0aW9uIGFuZCByZWFzc2VtYmx5OgoKKipBbmFseXppbmcgdGhlIFJlY2VpdmVyIFBhdGggYW5kIERlZnJhbWVudGF0aW9uIExvZ2ljKioKCkFscmlnaHQsIHNvIGByZWN2X2Z1bmNfcG9zdGhhbmRsZWAgYW5kIGB2YWxpZGF0ZV9yZWN2X21nbnRfZnJhbWVgIGJvdGggbGVhZCBpbnRvIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBub3QgdW5leHBlY3RlZCDigJMgYW55IHJlY2VpdmVyIGZ1bmN0aW9uIGxpa2VseSBuZWVkcyB0byBkZWFsIHdpdGggZGVmcmFnbWVudGF0aW9uLiBCdXQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250cm9sIGZsb3cuIExldCYjMzk7cyBzZWUgd2hvJiMzOTtzICphY3R1YWxseSogY2FsbGluZyBgcmVjdl9mdW5jX3Bvc3RoYW5kbGVgLiBJcyB0aGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCBvciBpcyBpdCBnZXR0aW5nIGNhbGxlZCBieSBzb21ldGhpbmcgZGVlcGVyPyBBcmUgdGhlcmUgbXVsdGlwbGUgcGF0aHMgdGhhdCBsZWFkIHRvIHRoZSBkZWZyYWdtZW50YXRpb24gbG9naWM/IEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBjbGFyaWZ5IHRoZSBvdmVyYWxsIHJlY2VpdmUgcHJvY2Vzcy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBJIG1ha2UgdG8gYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYCAtIEkgZG9uJiMzOTt0IHdhbnQgdG8gYnJlYWsgYW55dGhpbmcgZWxzZSEgR290dGEgbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWN2X2Z1bmNfcG9zdGhhbmRsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIwNjM9c3RhdGljIGludCByZWN2X2Z1bmNfcHJlaGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcmZyYW1lKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwNzgtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMDc5OnN0YXRpYyBpbnQgcmVjdl9mdW5jX3Bvc3RoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmZyYW1lKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA4MC17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI3LVx0XHR3aGlsZSAoKHBlbmRpbmdfZnJhbWUgPSBydHdfYWxsb2NfcmVjdmZyYW1lKFx1MDAyNnBhZGFwdGVyLVx1MDAzZXJlY3Zwcml2LnVjX3N3ZGVjX3BlbmRpbmdfcXVldWUpKSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxMjg6XHRcdFx0cmVjdl9mdW5jX3Bvc3RoYW5kbGUocGFkYXB0ZXIsIHBlbmRpbmdfZnJhbWUpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEyOS1cdH1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTUyLWRvX3Bvc3RoYW5kbGU6XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlx0XHRyZXQgPSByZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcmZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyOTgzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkFuYWx5emluZyB0aGUgQ29yZSBSZWNlaXZlIEZ1bmN0aW9uKioKCk9rYXksIHNvIGByZWN2X2Z1bmNgIGlzIHRoZSBoZWFydCBvZiBvdXIgcmVjZWl2ZSBsb2dpYy4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBvZiBlbnRyeSBmb3IgaW5jb21pbmcgZGF0YS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gaXRzIGlubmVyIHdvcmtpbmdzLCBJIG5lZWQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCYjMzk7cyAqZHJpdmluZyogaXQuIFdoZXJlIGFyZSB0aGUgc2lnbmFscyBjb21pbmcgZnJvbSB0aGF0IHRyaWdnZXIgYSBjYWxsIHRvIGByZWN2X2Z1bmNgPyBJIHNob3VsZCBzdGFydCBieSBtYXBwaW5nIG91dCBpdHMgY2FsbCBncmFwaCDigJMgdW5kZXJzdGFuZGluZyB3aG8mIzM5O3MgY2FsbGluZyBpdCBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgY29tcG9uZW50IGlzIGFjdHVhbGx5IHVzZWQuIExldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyB0aGUgY2FsbGVycyBvZiBgcmVjdl9mdW5jYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBzZW5zZSBvZiB0aGUgaW5wdXRzIGFuZCBjb250ZXh0cyBpdCBoYW5kbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWN2X2Z1bmMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYz0yMDI3PXN0YXRpYyBpbnQgcHJvY2Vzc19yZWN2X2luZGljYXRlcGt0cyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZnJhbWUpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA2Mi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwNjM6c3RhdGljIGludCByZWN2X2Z1bmNfcHJlaGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcmZyYW1lKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA2NC17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA3OC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwNzk6c3RhdGljIGludCByZWN2X2Z1bmNfcG9zdGhhbmRsZShzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZnJhbWUpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDgwLXtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTE0LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjExNTpzdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxMTYte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxMjctXHRcdHdoaWxlICgocGVuZGluZ19mcmFtZSA9IHJ0d19hbGxvY19yZWN2ZnJhbWUoXHUwMDI2cGFkYXB0ZXItXHUwMDNlcmVjdnByaXYudWNfc3dkZWNfcGVuZGluZ19xdWV1ZSkpKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjEyODpcdFx0XHRyZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcGVuZGluZ19mcmFtZSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI5LVx0fVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxMzE6XHRyZXQgPSByZWN2X2Z1bmNfcHJlaGFuZGxlKHBhZGFwdGVyLCByZnJhbWUpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMi1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTUyLWRvX3Bvc3RoYW5kbGU6XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlx0XHRyZXQgPSByZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcmZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXHR9XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjE2MD1zMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTY5LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE3MDpcdHJldCA9IHJlY3ZfZnVuYyhwYWRhcHRlciwgcHJlY3ZmcmFtZSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTcxLVx0aWYgKHJldCA9PSBfRkFJTClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQwMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIGBydHdfcmVjdl9lbnRyeWAgRnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBydHdfcmVjdl9lbnRyeWAgaXMgb3VyIGVudHJ5IHBvaW50LiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byBkZXRlcm1pbmUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBydHdfcmVjdl9lbnRyeWAuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGNvbnRleHQgYW5kIGhpZ2hsaWdodCB0aGUgcGFydHMgb2YgdGhlIHN5c3RlbSB0aGF0IGFyZSByZWx5aW5nIG9uIHRoaXMgZnVuY3Rpb24uIFRoaXMgd2lsbCBoZWxwIGZyYW1lIGl0cyBmdW5jdGlvbiBpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIFRpbWUgdG8gdHJhY2UgdGhvc2UgY2FsbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19yZWN2X2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTU5LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE2MDpzMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNjEte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaGFsL3J0bDg3MjNic19yZWN2LmM9MjE2PXN0YXRpYyB2b2lkIHJ0bDg3MjNic19yZWN2X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaGFsL3J0bDg3MjNic19yZWN2LmMtMzI2LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYzozMjc6XHRcdFx0XHRcdHJ0d19yZWN2X2VudHJ5KHByZWN2ZnJhbWUpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYy0zMjgtXHRcdFx0XHR9IGVsc2UgaWYgKHBhdHRyaWItXHUwMDNlcGt0X3JwdF90eXBlID09IEMySF9QQUNLRVQpIHtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X3JlY3YuaD0xNTU9c3RydWN0IHJlY3Zfc3RhdCB7XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2LmgtMTY2LS8qXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X3JlY3YuaDoxNjc6YWNjZXNzZXIgb2YgcmVjdl9wcml2OiBydHdfcmVjdl9lbnRyeShkaXNwYXRjaCAvIHBhc3NpdmUgbGV2ZWwpOyByZWN2X3RocmVhZChwYXNzaXZlKSA7IHJldHVybnBrdChkaXNwYXRjaClcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oLTE2OC07IGhhbHQocGFzc2l2ZSkgO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oPTM0Nj12b2lkIF9ydHdfZnJlZV9yZWN2X3ByaXYoc3RydWN0IHJlY3ZfcHJpdiAqcHJlY3Zwcml2KTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oOjM0NzpzMzIgIHJ0d19yZWN2X2VudHJ5KHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2X2ZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oLTM0OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ4MzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUmVjZWl2ZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgcmVjZWl2ZWQgcGFja2V0cyBhcmUgaGFuZGxlZCBpbiB0aGlzIGRyaXZlci4gSXQgbG9va3MgbGlrZSBgcnRsODcyM2JzX3JlY3ZfdGFza2xldGAgaXMgdGhlIGVudHJ5IHBvaW50LCB3aGljaCB0aGVuIGNhbGxzIGBydHdfcmVjdl9lbnRyeWAuIFNpbmNlIHRoaXMgYHJ0bDg3MjNic19yZWN2X3Rhc2tsZXRgIGlzIGhhcmR3YXJlLXNwZWNpZmljLCBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBvbiB0aGUgbW9yZSBnZW5lcmljIGZ1bmN0aW9uLCBgcnR3X3JlY3ZfZW50cnlgLCBmb3IgZnV6emluZy4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBsZXZlbCBvZiBhYnN0cmFjdGlvbiB0byB0YXJnZXQuIEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gY29uc3RydWN0IGFuZCBpbmplY3QgdmFyaW91cyBpbnB1dHMgYXQgdGhhdCBwb2ludC4KCkJ1dCB0aGVuLCBJIGFsc28gc2VlIHRoaXMgYGMyaF93a19jYWxsYmFja2AgZnVuY3Rpb24uIEkgc2hvdWxkIGNoZWNrIHdobyBjYWxscyAqaXQqIGp1c3QgdG8gZ2V0IGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWNlaXZlIHBhdGguIEdvdHRhIGludmVzdGlnYXRlIHRob3NlIGNhbGxlcnMgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXQsIG9yIHNvbWV0aGluZyB0aGF0IGludGVyYWN0cyB3aXRoIGBydHdfcmVjdl9lbnRyeWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2MyaF93a19jYWxsYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM9MTYzPWludCBydHdfaW5pdF9jbWRfcHJpdihzdHJ1Y3RcdGNtZF9wcml2ICpwY21kcHJpdilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE5OC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM6MTk5OnN0YXRpYyB2b2lkIGMyaF93a19jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0yMDAtaW50IHJ0d19pbml0X2V2dF9wcml2KHN0cnVjdCBldnRfcHJpdiAqcGV2dHByaXYpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0yMDUtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjIwNjpcdF9pbml0X3dvcmtpdGVtKFx1MDAyNnBldnRwcml2LVx1MDAzZWMyaF93aywgYzJoX3drX2NhbGxiYWNrLCBOVUxMKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMjA3LVx0cGV2dHByaXYtXHUwMDNlYzJoX3drX2FsaXZlID0gZmFsc2U7XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjYzPXU4IHJ0d19jMmhfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKmMyaF9ldnQpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0xNjk2LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYzoxNjk3OnN0YXRpYyB2b2lkIGMyaF93a19jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2OTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTY0NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBXb3JrIFF1ZXVlKioKClJpZ2h0LCBgcnR3X2MyaF93a19jbWRgIGlzIHRoZSBrZXkgdG8gc2NoZWR1bGluZyB0aGlzIHRhc2suIEl0JiMzOTtzIHRoZSBxdWV1ZSBpdHNlbGYuIFNvLCB0byByZWFsbHkgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGNvbW1hbmQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgKndobyogaXMgY2FsbGluZyBgcnR3X2MyaF93a19jbWRgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBpcy4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgdG8gd2hlcmUgdGhlIGRhdGEgaXMgY29taW5nIGZyb20gdG8gYmUgcHV0IGludG8gdGhlIHF1ZXVlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHVwc3RyZWFtIHNvdXJjZXMsIGFuZCB0aGUgaW50ZW5kZWQgcHVycG9zZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZsb3cuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHdfYzJoX3drX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM9MTYyOD11OCBydHdfYzJoX3BhY2tldF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqcGJ1ZiwgdTE2IGxlbmd0aClcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjItLyogb3IgZGVhZGxvY2sgd2lsbCBoYXBwZW4gYW5kIGNhdXNlIHNwZWNpYWwtc3lzdGVtc2VydmVyLWRpZWQgaW4gYW5kcm9pZCAqL1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYzoxNjYzOnU4IHJ0d19jMmhfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKmMyaF9ldnQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjQte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM9MTY5Nz1zdGF0aWMgdm9pZCBjMmhfd2tfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTczNy1cdFx0XHQvKiBFbnF1ZXVlIGludG8gY21kX3RocmVhZCBmb3Igb3RoZXJzICovXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE3Mzg6XHRcdFx0cnR3X2MyaF93a19jbWQoYWRhcHRlciwgYzJoX2V2dCk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE3MzktXHRcdH1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jPTcwOD12b2lkIHNkX2ludF9kcGMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03NTgtXHRcdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYzo3NTk6XHRcdFx0XHRcdHJ0d19jMmhfd2tfY21kKGFkYXB0ZXIsICh1OCAqKWMyaF9ldnQpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03NjAtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19jbWQuaD02MTE9ZXh0ZXJuIHU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmgtNjEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjUyMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgRnVuY3Rpb25zIGZvciBTRElPIERyaXZlciBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgU0RJTyBkcml2ZXIgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBrZXkgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoZSBjb3JlIGludGVycnVwdCBhbmQgaW5pdGlhbGl6YXRpb24gcGF0aHMuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBzZF9pbnRfZHBjYCBjYWxscyBgcnR3X2MyaF93a19jbWRgLiBOb3csIGBzZF9pbnRfZHBjYCBpcyBjbGVhcmx5IHRoZSBTRElPIGludGVycnVwdCBEZWZlcnJlZCBQcm9jZWR1cmUgQ2FsbCwgc28gdGhhdCYjMzk7cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZm9jdXNlZCBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgY2FsbGVycyBvZiBgcnR3X2Rydl9pbml0YC4gVGhhdCYjMzk7cyB0aGUgcHJvYmUgZnVuY3Rpb247IHNvIGl0JiMzOTtzIGNyaXRpY2FsIGZvciBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIEFscmlnaHQsIGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBmb2N1cyBzeW1ib2wgdG9vLgoKTm93IEkmIzM5O2xsIGNoZWNrIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgY2FsbGVycy4gQWgsIGl0JiMzOTtzIGNhbGxlZCBieSBgcnR3X2Rydl9pbml0YCwgdGhhdCBtYWtlcyBzZW5zZS4KCkdpdmVuIGFsbCBvZiB0aGlzLCB0aGUgY29yZSBmb2N1cyBzeW1ib2xzIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IGFyZToKKiAgIGBydHdfcmVjdl9lbnRyeWAKKiAgIGBzZF9pbnRfZHBjYAoqICAgYHJ0d19kcnZfaW5pdGAKCldhaXQsIGxldCYjMzk7cyB2ZXJpZnkgd2hlcmUgYHNkX2ludF9kcGNgIGV4aXN0cywgb2ggeWVhaCwgaXQmIzM5O3MgaW4gYGhhbC9zZGlvX29wcy5jYC4gT2theSwgYmVmb3JlIEkgZGlnIGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUuIEp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCBzZF9pbnRfZHBjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYz02OTM9c3RhdGljIHZvaWQgc2RfcnhoYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgcmVjdl9idWYgKnJlY3ZidWYpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03MDctXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jOjcwODp2b2lkIHNkX2ludF9kcGMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jLTcwOS17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3NkaW9faGFsLmg9MTA9dTggc2RfaW50X2lzcihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3NkaW9faGFsLmg6MTE6dm9pZCBzZF9pbnRfZHBjKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcik7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvc2Rpb19oYWwuaC0xMi12b2lkIHJ0d19zZXRfaGFsX29wcyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMyOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBGdW5jdGlvbiBBdHRyaWJ1dGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gc28gd2UmIzM5O3ZlIGdvdCBgc2RfaW50X2RwY2AuLi4geXVwLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBObyBoaWRkZW4gc3RhdGljIHNjb3BpbmcgdGhlcmUuIFRoYXTigJlzIGdvb2QgdG8gY29uZmlybSwgbW92ZXMgdXMgb24uCgpOb3csIHdoYXQgYWJvdXQgYHJ0d19yZWN2X2VudHJ5YD8gTmVlZCB0byBjaGVjayB0aGF0IG5leHQgdG8gZW5zdXJlIHdlIGFyZSBjb3ZlcmluZyBvdXIgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3MzMiBydHdfcmVjdl9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIxMTU9c3RhdGljIGludCByZWN2X2Z1bmMoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpyZnJhbWUpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjE1OS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxNjA6czMyIHJ0d19yZWN2X2VudHJ5KHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2ZnJhbWUpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTYxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2NjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOb24tU3RhdGljIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBoZXJlIGlzIHRoYXQgYHJ0d19yZWN2X2VudHJ5YCAqaXMqIG5vbi1zdGF0aWMuIEdvdCBpdC4gVGhhdCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzIOKAkyBpdCYjMzk7cyBsaWtlbHkgbWVhbnQgdG8gYmUgZXh0ZXJuYWxseSBjYWxsYWJsZSwgcGVyaGFwcyBwYXJ0IG9mIHNvbWUgQVBJIG9yIGludGVyZmFjZS4gSXTigJlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiB0cmFjaW5nIHRoZSBkYXRhIGZsb3cuCgpOb3csIHdoYXQgYWJvdXQgYHJ0d19kcnZfaW5pdGA/IEkmIzM5O20gY3VyaW91cyBpZiBpdCYjMzk7cyBhbHNvIG5vbi1zdGF0aWMuIFRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lJiMzOTtzIHNjb3BlIGNvdWxkIHNpZ25pZmljYW50bHkgaW1wYWN0IGhvdyB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgYmVoYXZlcywgc28gdW5kZXJzdGFuZGluZyBpdHMgYWNjZXNzaWJpbGl0eSBpcyBjcml0aWNhbCBpbiBpZGVudGlmeWluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gSXMgaXQgZGVjbGFyZWQgaW4gYSBoZWFkZXI/IElmIHNvLCBpcyBpdCB1c2VkIGluIG90aGVyIG1vZHVsZXM/IERvZXMgaXQgdGFrZSBwYXJhbWV0ZXJzIGZyb20gb3RoZXIgbW9kdWxlcz8gSXQgaXMgbXkgam9iIHRvIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHdfZHJ2X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0yNT1NT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIHNkaW9faWRzKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTI2LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6Mjc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZCk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yOC1zdGF0aWMgdm9pZCBydHdfZGV2X3JlbW92ZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKTtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zNz1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIHJ0bDg3MjNic19zZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjM4Olx0LnByb2JlID0gcnR3X2Rydl9pbml0LFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzktXHQucmVtb3ZlID0gcnR3X2Rldl9yZW1vdmUsXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MzA4PXN0YXRpYyB2b2lkIHJ0d19zZGlvX2lmMV9kZWluaXQoc3RydWN0IGFkYXB0ZXIgKmlmMSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zMzYtICovXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozMzc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zMzgtXHRzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODM3NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIGBydHdfZHJ2X2luaXRgIEZ1bmN0aW9uKioKCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgYHJ0d19kcnZfaW5pdGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUsIGZyb20gYSBtb2R1bGFyaXR5IGFuZCB0ZXN0YWJpbGl0eSBzdGFuZHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgbm9uLXN0YXRpYyB3cmFwcGVyIGZ1bmN0aW9uLCBhIHNvcnQgb2YgZmFjYWRlLCB0aGF0IGNhbGxzIGl0LiBUaGlzIHdvdWxkIGFsbG93IGV4dGVybmFsIGludGVyYWN0aW9uIHdpdGhvdXQgZGlyZWN0bHkgZXhwb3NpbmcgdGhlIHN0YXRpYyBmdW5jdGlvbi4KCkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiB0aGVyZSBpc24mIzM5O3QgYSB3cmFwcGVyLiBJdCBsb29rcyBsaWtlIGBydHdfZHJ2X2luaXRgIGlzLCBpbiBmYWN0LCB0aGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmLiBHaXZlbiB0aGF0IGl0JiMzOTtzIHN0YXRpYywgYW5kIHRoZXJlZm9yZSBpbnRlcm5hbCB0byB0aGlzIGNvbXBpbGF0aW9uIHVuaXQsIGl0IHNlZW1zIHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdGhpcywgdG8gcmVnaXN0ZXIgdGhlIG5ldHdvcmsgZGV2aWNlLCBpcyB0byB1c2UgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCB3aGljaCAqaXMqIG5vbi1zdGF0aWMgYW5kIGlzLCBpbiBmYWN0LCBjYWxsZWQgYnkgYHJ0d19kcnZfaW5pdGAuIFRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgcGF0aCB0byBnbyBkb3duLiBUaGlzIGVuc3VyZXMgd2UgZG9uJiMzOTt0IG5lZWQgdG8gZGlyZWN0bHkgY2FsbCBhIHN0YXRpYyBpbnRlcm5hbCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaD0zMj12b2lkIHJ0d19pcHNfcHdyX2Rvd24oc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmgtMzMtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oOjM0OmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaC0zNS12b2lkIHJ0d19uZGV2X2Rlc3RydWN0b3Ioc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM9NzU1PXN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3Mi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzczOmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYy03NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHVzZXIgaXMgYSBrbm93bGVkZ2VhYmxlIGNvbGxlYWd1ZToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEcml2ZXIgRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uICpydHdfZHJ2X3JlZ2lzdGVyX25ldGRldiogaXMgaW5kZWVkIGRlY2xhcmVkIGFzIG5vbi1zdGF0aWMuIE5vIHN1cnByaXNlcyB0aGVyZSwgdGhhdCYjMzk7cyB3aGF0IEkgd291bGQgZXhwZWN0IGZvciBhIGZ1bmN0aW9uIGRlc2lnbmVkIGZvciB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN1YnN5c3RlbSB0byBpbnRlcmZhY2Ugd2l0aC4gVGhhdCYjMzk7cyBhIHBvaW50IG5vdGVkLCBubyBmdXJ0aGVyIGludmVzdGlnYXRpb24gbmVlZGVkLiBOb3csIHdoYXQmIzM5O3MgbmV4dC4uLgoKTGV0IG1lIHRoaW5rLi4uIHdoYXQgYWJvdXQgdGhhdCAqcnR3X2MyaF93a19jbWQqIGZ1bmN0aW9uPyBJcyBpdCBhbHNvIG5vbi1zdGF0aWM/IE5vdywgSSBuZWVkIHRvIGNoZWNrIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgZHJpdmVyLiBUaGF0IG5hbWUgbG9va3MgbGlrZSBpdCBtaWdodCByZWxhdGUgdG8gc29tZXRoaW5nIHJlbGF0ZWQgdG8gY29tbWFuZCBhbmQgY29udHJvbCBidXQgbGV0JiMzOTtzIGRpZyBkZWVwZXIgdG8gYmUgY2VydGFpbi4gSSBrbm93IHRoZSBnZW5lcmFsIGNvZGUgbGF5b3V0LCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHF1aWNrbHkhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3U4IHJ0d19jMmhfd2tfY21kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjI4PXU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY2Mi0vKiBvciBkZWFkbG9jayB3aWxsIGhhcHBlbiBhbmQgY2F1c2Ugc3BlY2lhbC1zeXN0ZW1zZXJ2ZXItZGllZCBpbiBhbmRyb2lkICovXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE2NjM6dTggcnR3X2MyaF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqYzJoX2V2dClcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY2NC17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19jbWQuaD02MTE9ZXh0ZXJuIHU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmgtNjEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY0NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciBTeW1ib2wgVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgcnR3X2MyaF93a19jbWRgIGlzIGluZGVlZCBub3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgdmlzaWJsZSBvdXRzaWRlIG9mIGl0cyBjb21waWxhdGlvbiB1bml0LiBOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgd2UmIzM5O3JlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCB0aGUgY29yZSBmb2N1cyBzZWVtcyB0byBiZSBvbjoKCiogICBgcnR3X3JlY3ZfZW50cnlgCiogICBgc2RfaW50X2RwY2AKKiAgIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAKKiAgIGBydHdfYzJoX3drX2NtZGAKClRoZSBuZXh0IHN0ZXAgaW4gbXkgYW5hbHlzaXMgd291bGQgYmUgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfUlRMODcyM0JTYCBpcyBwcm9wZXJseSBzZXQuIEdpdmVuIHRoaXMgZm9jdXMsIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSBhbGwgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGNydWNpYWwgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMODcyM0JTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoyOmNvbmZpZyBSVEw4NzIzQlNcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzozOlx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4NzIzQlMgU0RJTyBXaXJlbGVzcyBMQU4gTklDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIFdMQU4gXHUwMDI2XHUwMDI2IE1NQyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctOS1cdGhlbHBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoxMDpcdFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgUlRMODcyM0JTIFNESU8gZHJpdmVycywgc3VjaCBhc1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTExLVx0dGhlIHdpZmkgZm91bmQgb24gdGhlIDFzdCBnZW4gSW50ZWwgQ29tcHV0ZSBTdGljaywgdGhlIENISVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAyNTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHB1dHRpbmcgdG9nZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpdCBsb29rcyBsaWtlIGl0IGhpbmdlcyBvbiBhIGZldyBrZXkgY29tcG9uZW50cy4gU3BlY2lmaWNhbGx5LCBgV0xBTmAsIGBNTUNgLCBhbmQgYENGRzgwMjExYCBhcmUgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB0aGluZ3MgdG8gd29yayBhcyBpbnRlbmRlZC4gVGhlcmVmb3JlLCB3aGVuIEkgZGVmaW5lIGBFbmFibGVDb25maWdzYCwgSSBuZWVkIHRvIGluY2x1ZGUgYFJUTDg3MjNCU2AgKHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgaXQsIG5hdHVyYWxseSksIGFsb25nIHdpdGggYFdMQU5gLCBgTU1DYCwgYW5kIGBDRkc4MDIxMWAgdG8gZW5zdXJlIHRob3NlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEFsc28sIHNpbmNlIGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIGBkcml2ZXJzL3N0YWdpbmdgLCBJIHNob3VsZCBpbmNsdWRlIGBTVEFHSU5HYCBhcyB3ZWxsLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgdGhvcm91Z2gsIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBTVEFHSU5HYCBpcyBzdHJpY3RseSByZXF1aXJlZC4gSXQmIzM5O3MgYmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cyB0aGFuIG1pc3MgYSBjcml0aWNhbCBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIFNUQUdJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvc3RhZ2luZy9LY29uZmlnOjI6bWVudWNvbmZpZyBTVEFHSU5HXG5kcml2ZXJzL3N0YWdpbmcvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtTdGFnaW5nIGRyaXZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkNvbmZpZ3VyYXRpb24gRGVjaXNpb24gTWFraW5nIGZvciBTRElPIEZ1enppbmcgdmlhIFVTQioqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBpcyBjbGVhcjogd2UgYWJzb2x1dGVseSBuZWVkIGBTVEFHSU5HYC4gTm8gcXVlc3Rpb24gdGhlcmUuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgZG8gd2UgKmFsc28qIG5lZWQgYE1NQ19WVUIzMDBgPyBJZiBvdXIgZ29hbCBpcyB0byBmdXp6IFNESU8gZGV2aWNlcyBjb25uZWN0ZWQgdGhyb3VnaCBVU0IsIHRoZW4geWVzLCBgTU1DX1ZVQjMwMGAgaXMgZXNzZW50aWFsLiBJdCYjMzk7cyB0aGUgZW5hYmxpbmcgZmFjdG9yIGZvciB0aGF0IHNwZWNpZmljIFVTQi1iYXNlZCBpbnRlcmZhY2UuCgpUaGVyZWZvcmUsIGxldCYjMzk7cyBpbmNsdWRlIGl0IGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gV2Ugd2FudCB0aGlzIGZ1bmN0aW9uYWxpdHkuCgpIb2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgcXVpY2tseSBjaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLiBSaWdodCwgYE1NQ19WVUIzMDBgIHJlbGllcyBvbiBib3RoIGBVU0JgIGFuZCBgTU1DYCBiZWluZyBlbmFibGVkLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBhbHNvIHRha2VuIGNhcmUgb2YgcHJvcGVybHkgZWxzZXdoZXJlIGluIHRoZSBjb25maWd1cmF0aW9uLCBvciB0aGlzIHdvbiYjMzk7dCB3b3JrLiBXZSBuZWVkIGEgY29tcGxldGUsIGNvaGVyZW50IGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTUNfVlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMS1cdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEwNTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgdGhpbmcmIzM5O3MgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBjaGFuZ2VzIG9yIGV2YWx1YXRpbmcgcGVyZm9ybWFuY2UsIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBpdCByZWxpZXMgb24uIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7d2hhdCBleHRlcm5hbCBsaWJyYXJpZXMsIHNlcnZpY2VzLCBvciBldmVuIHNwZWNpZmljIHZlcnNpb25zIG9mIHRoaW5ncyBkb2VzIHRoaXMgY29tcG9uZW50IGFic29sdXRlbHkgbmVlZCB0byBmdW5jdGlvbiBjb3JyZWN0bHk/JiMzNDsuIEkgY2FuJiMzOTt0IHN0YXJ0IHRyb3VibGVzaG9vdGluZyBpZiBJIGRvbiYjMzk7dCBrbm93IHRoZSBsYW5kc2NhcGUuIEkgbmVlZCB0byBtYXAgdGhlIHdob2xlIGVjb3N5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IG5vdCBqdXN0IHdoYXQgZGVwZW5kcyBvbiB3aGF0LCBidXQgYWxzbyB3aGljaCB2ZXJzaW9uIG9mIGVhY2ggSSYjMzk7bSB1c2luZywgc2luY2UgSSBoYXZlIGEgc3Ryb25nIGZlZWxpbmcgdGhhdCB0aGUgY29ycmVjdCBhbnN3ZXIgaGVyZSBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGltcG9ydGFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMTpcdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjItXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMy1cdGhlbHBcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjQ6XHQgIFRoaXMgc2VsZWN0cyBzdXBwb3J0IGZvciBFbGFuIERpZ2l0YWwgU3lzdGVtcyYjMzk7IFZVQjMwMCBjaGlwLlxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyNS1cbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjY6XHQgIFRoZSBWVUIzMDAgaXMgYSBVU0ItU0RJTyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGNoaXBcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjctXHQgIHRoYXQgZW5hYmxlcyB0aGUgaG9zdCBjb21wdXRlciB0byB1c2UgU0RJTy9TRC9NTUMgY2FyZHNcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTI5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkzMDpcdCAgVGhlIFZVQjMwMCBjaGlwIHdpbGwgYmUgZm91bmQgaW4gYm90aCBwaHlzaWNhbGx5IHNlcGFyYXRlXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTMxLVx0ICBVU0IgdG8gU0RJTy9TRC9NTUMgYWRhcHRlcnMgYW5kIGVtYmVkZGVkIG9uIHNvbWUgbW90aGVyYm9hcmRzLlxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzMi1cbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MzM6XHQgIFRoZSBWVUIzMDAgY2hpcCBzdXBwb3J0cyBTRCBhbmQgTU1DIG1lbW9yeSBjYXJkcyBpbiBhZGRpdGlvblxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNC1cdCAgdG8gc2luZ2xlIGFuZCBtdWx0aWZ1bmN0aW9uIFNESU8gY2FyZHMuXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNi1cdCAgU29tZSBTRElPIGNhcmRzIHdpbGwgbmVlZCBhIGZpcm13YXJlIGZpbGUgdG8gYmUgbG9hZGVkIGFuZFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkzNzpcdCAgc2VudCB0byBWVUIzMDAgY2hpcCBpbiBvcmRlciB0byBhY2hpZXZlIGJldHRlciBkYXRhIHRocm91Z2hwdXQuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTM4LVx0ICBEb3dubG9hZCB0aGVzZSBcJiMzNDtPZmZsb2FkIFBzZXVkb2NvZGVcJiMzNDsgZnJvbSBFbGFuIERpZ2l0YWwgU3lzdGVtcyYjMzk7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0MC1cdCAgYW5kIHB1dCB0aGVtIGluIC9saWIvZmlybXdhcmUuIE5vdGUgdGhhdCB3aXRob3V0IHRoZXNlIGFkZGl0aW9uYWxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDE6XHQgIGZpcm13YXJlIGZpbGVzIHRoZSBWVUIzMDAgY2hpcCB3aWxsIHN0aWxsIGZ1bmN0aW9uLCBidXQgbm90IGF0XG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQyLVx0ICB0aGUgYmVzdCBvYnRhaW5hYmxlIGRhdGEgcmF0ZS5cbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjk0NzpcdCAgSWYgeW91IGhhdmUgYSBjb21wdXRlciB3aXRoIGFuIGVtYmVkZGVkIFZVQjMwMCBjaGlwXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ4LVx0ICBvciBpZiB5b3UgaW50ZW5kIGNvbm5lY3RpbmcgYSBVU0IgYWRhcHRlciBiYXNlZCBvbiBhXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTQ5Olx0ICBWVUIzMDAgY2hpcCBzYXkgWSBvciBNIGhlcmUuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk1NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGtlcm5lbCBjb25maWcgb3B0aW9ucy4gVGhpcyB3aG9sZSB0aGluZyBoaW5nZXMgb24gYFVTQmAsIHNvIGBFbmFibGVDb25maWdzYCBuZWVkcyB0byBlbmNvbXBhc3MgZXZlcnl0aGluZyBuZWNlc3NhcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZzoKCiogICBgUlRMODcyM0JTYCDigJMgb2J2aW91c2x5LCB0aGUgdGFyZ2V0LgoqICAgYFdMQU5gIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4uCiogICBgTU1DYCDigJMgZXNzZW50aWFsIGZvciBtZW1vcnkgY2FyZCBhY2Nlc3MuCiogICBgQ0ZHODAyMTFgIOKAkyB0aGUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuCiogICBgU1RBR0lOR2Ag4oCTIGJlY2F1c2UsIHdlbGwsIGl0JiMzOTtzIHN0YWdpbmcuCiogICBgTU1DX1ZVQjMwMGAg4oCTIHRvIGd1YXJhbnRlZSBTRElPIGFjY2Vzc2liaWxpdHkgdmlhIFVTQjsgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBsaW5rIGhlcmUuCiogICBgVVNCYCDigJMgYmVjYXVzZSwgZXZlcnl0aGluZy4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiBgVVNCX0RVTU1ZX0hDRGA/IFJpZ2h0LCBTeXprYWxsZXIgdXNlcyBgZHVtbXlfaGNkYCBvciBgdmhjaV9oY2RgIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbi4gSXQgdXN1YWxseSBhY3RpdmF0ZXMgYFVTQl9EVU1NWV9IQ0RgIGFuZCBgVVNCX1JBV19HQURHRVRgIGJ5IGRlZmF1bHQuIFdlIHNob3VsZG4mIzM5O3QgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUgdGhlbSB1bmxlc3MgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgY2FsbHMgZm9yIHRoZW0sIGFuZCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXMgYWJvdXQgYFJUTDg3MjNCU2AuIFNvLCBmb2N1cyBvbiBgUlRMODcyM0JTYCwgaXRzIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMsIGFuZCBgTU1DX1ZVQjMwMGAgdG8gZW5zdXJlIFNESU8gZnVuY3Rpb25zIG92ZXIgVVNCLiBJIHN0aWxsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGRlcGVuZGVuY2llcyBsdXJraW5nIGZvciBgUlRMODcyM0JTYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc9Mj1jb25maWcgUlRMODcyM0JTXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBXTEFOIFx1MDAyNlx1MDAyNiBNTUMgXHUwMDI2XHUwMDI2IENGRzgwMjExXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc6NTpcdGRlcGVuZHMgb24gbVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI3MDEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jeSBEaWxlbW1hKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgd2hldGhlciBzb21ldGhpbmcgaXMgY29tcGlsZWQgc3RhdGljYWxseSBvciBhcyBhIG1vZHVsZSwgcmlnaHQ/IEkmIzM5O20gc2VlaW5nIHRoaXMgJiMzNDtkZXBlbmRzIG9uIG0mIzM0OyBmbGFnLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBzZXRzIG9mZiBhbGFybSBiZWxscy4gVGhhdCBtZWFucyBpdCAqaGFzKiB0byBiZSBhIG1vZHVsZS4gQW5kIHRoYXQmIzM5O3MgYSBwcm9ibGVtIGJlY2F1c2UgU3l6a2FsbGVyLCBpbiBpdHMgdXN1YWwgYXBwcm9hY2gsIGxpa2VzIHRvIGNvbXBpbGUgZXZlcnl0aGluZyBzdGF0aWNhbGx5IGludG8gdGhhdCBgdm1saW51eGAgaW1hZ2UsIHNldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYD15YC4gQnV0IGlmIHNvbWV0aGluZyAmIzM0O2RlcGVuZHMgb24gbSYjMzQ7LCBpdCAqY2FuJiMzOTt0KiBiZSBpbmNsdWRlZCBzdGF0aWNhbGx5LCBjYW4gaXQ/IEl0JiMzOTtzIGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gYmUgYSBtb2R1bGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhpcywgc28gbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayB0aGF0IGBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdgIGZpbGUuIFNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBSVEw4NzIzQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gV0xBTiBcdTAwMjZcdTAwMjYgTU1DIFx1MDAyNlx1MDAyNiBDRkc4MDIxMVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBtXG4gICA2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNcbiAgIDc6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcbiAgIDg6XHRcdHNlbGVjdCBDUllQVE9fTElCX1VUSUxTXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHRUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFJUTDg3MjNCUyBTRElPIGRyaXZlcnMsIHN1Y2ggYXNcbiAgMTE6XHRcdHRoZSB3aWZpIGZvdW5kIG9uIHRoZSAxc3QgZ2VuIEludGVsIENvbXB1dGUgU3RpY2ssIHRoZSBDSElQXG4gIDEyOlx0XHRhbmQgbWFueSBvdGhlciBJbnRlbCBBdG9tIGFuZCBBUk0gYmFzZWQgZGV2aWNlcy5cbiAgMTM6XHRcdElmIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCByODcyM2JzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzIxMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHI4NzIzYnMua28gTW9kdWxlIGFuZCBTeXprYWxsZXIgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIHRoaW5raW5nIHRocm91Z2ggaG93IHN5emthbGxlciBsaWtlbHkgdGVzdGVkIGl0LiBUaGUga2V5IGhlcmUgaXMgdGhhdCBgZGVwZW5kcyBvbiBtYCBtZWFucyBpdCYjMzk7cyBhIG1vZHVsZS4gTm93LCBzeXprYWxsZXIgKmNhbiogdGVzdCBtb2R1bGVzLCBidXQgaXQgdXN1YWxseSBmb2N1c2VzIG9uIGB2bWxpbnV4YC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtXZWxsLCBpdCAqZGVwZW5kcyBvbiBtKiwgc28gaXQgKmNhbiYjMzk7dCogYmUgYnVpbHQgc3RhdGljYWxseS4mIzM0OyBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgbW9kdWxlIHRlc3RpbmcgaWYgYENPTkZJR19NT0RVTEVTPXlgIGFuZCB0aGUgbW9kdWxlIGdldHMgbG9hZGVkLgoKVGhlIG5leHQgdGhpbmcgdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcywgJiMzNDtEb2VzIHN5emthbGxlciBhY3R1YWxseSBsb2FkIGByODcyM2JzLmtvYD8mIzM0OyBTeXprYWxsZXIgKmhhcyogdGhlIGFiaWxpdHkgdG8gbG9hZCBtb2R1bGVzLCBidXQgaXQmIzM5O3Mgbm90IGFsd2F5cyBhY3RpdmUuIFNvLCB0aGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggd2FzIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgIHRocm93cyBtZSBmb3IgYSBsb29wLiBJdCBtZWFucyBzeXprYWxsZXIgKmRpZCogdGVzdCBpdC4gSG93PyBEaWQgc3l6a2FsbGVyJiMzOTtzIGNvbmZpZyBoYXZlIGBDT05GSUdfUlRMODcyM0JTPW1gIGFuZCBsb2FkIGl0PyBPciBkaWQgdGhlIGtlcm5lbCB0cmVlIHRoYXQgc3l6a2FsbGVyIHdhcyB1c2luZyByZW1vdmUgdGhlIGBkZXBlbmRzIG9uIG1gIGxpbmU/CgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIHNhdyB0aGF0IGBkZXBlbmRzIG9uIG1gICppcyogc3RpbGwgdGhlcmUuIFRoZSBlYXNpZXN0IGFwcHJvYWNoIHRoZW4sIGlzIHRvIHNpbXBseSBsaXN0IGBSVEw4NzIzQlNgIGluIGBFbmFibGVDb25maWdzYC4gS2J1aWxkIHNob3VsZCBoYW5kbGUgdGhlIHJlc3QuIEkmIzM5O20gdGFraW5nIHRoZSBwcm9tcHQgc2VyaW91c2x5IGFuZCBub3QgYWRkaW5nIHRoZSBgQ09ORklHX2AgcHJlZml4LgoKU28sIGZvciB0aGUgYEVuYWJsZUNvbmZpZ3NgIG91dHB1dCwgSSYjMzk7bGwgbGlzdDoKLSBgUlRMODcyM0JTYAotIGBXTEFOYAotIGBNTUNgCi0gYENGRzgwMjExYAotIGBTVEFHSU5HYAotIGBNTUNfVlVCMzAwYAotIGBVU0JgCgpOb3cgbGV0JiMzOTtzIHF1aWNrbHkgcmV2aWV3IHRoZSBgRm9jdXNTeW1ib2xzYCB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgcmVsZXZhbnQ6Ci0gYHJ0d19yZWN2X2VudHJ5YAotIGBzZF9pbnRfZHBjYAotIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAKLSBgcnR3X2MyaF93a19jbWRgCgpPaCwgd2FpdCwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgLiBJIHNob3VsZCBjaGVjayBpZiBgcnR3X3NkaW9faWYxX2luaXRgIGlzIHN0YXRpYy4gSnVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3X3NkaW9faWYxX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0yMDk9c3RhdGljIHZvaWQgc2RfaW50Zl9zdG9wKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yMTctXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzoyMTg6c3RhdGljIHN0cnVjdCBhZGFwdGVyICpydHdfc2Rpb19pZjFfaW5pdChzdHJ1Y3QgZHZvYmpfcHJpdiAqZHZvYmosIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAgKnBkaWQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yMTkte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTMzNz1zdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zNDgtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozNDk6XHRpZjEgPSBydHdfc2Rpb19pZjFfaW5pdChkdm9iaiwgaWQpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzUwLVx0aWYgKCFpZjEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjA0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEtleSBTeW1ib2xzIGluIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBmb2N1c2luZyBvbiBob3cgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb2RlIGFuZCBpZGVudGlmeWluZyBrZXkgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgcnR3X2Rydl9pbml0YCBpcyBzdGF0aWMsIHdoaWNoIGluaXRpYWxseSBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGFzIGEgZm9jdXMuIEhvd2V2ZXIsIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaXMgbm9uLXN0YXRpYyBhbmQgaXMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLCBhbmQgY3JpdGljYWxseSwgaXQmIzM5O3MgYWxzbyBtb2RpZmllZCBieSB0aGUgcGF0Y2guIFRoYXQgbWFrZXMgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBhIGxpa2VseSBjYW5kaWRhdGUgdG8gZGVsdmUgaW50by4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYzJoX3drX2NhbGxiYWNrYCwgd2hpY2ggaXMgc3RhdGljLiBCdXQgaXQmIzM5O3MgY2FsbGVkIGJ5IGBydHdfYzJoX3drX2NtZGAsIGFuZCB0aGF0IG9uZSBpcyBub24tc3RhdGljLiBTbywgYHJ0d19jMmhfd2tfY21kYCBzZWVtcyBsaWtlIGEgZ29vZCBzeW1ib2wgdG8gdHJhY2ssIGdpdmVuIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzLgoKTmV4dCwgSSYjMzk7bSBsb29raW5nIGF0IGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AuIEl0JiMzOTtzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSB0aGUgc3RhdGljIGZ1bmN0aW9ucyBgcmVjdl9mdW5jX3Bvc3RoYW5kbGVgIGFuZCBgdmFsaWRhdGVfcmVjdl9tZ250X2ZyYW1lYCwgd2hpY2ggYXJlIGluIHR1cm4gY2FsbGVkIGJ5IGByZWN2X2Z1bmNgLiBUaGlzIGNoYWluIHVsdGltYXRlbHkgbGVhZHMgdG8gYHJ0d19yZWN2X2VudHJ5YCwgd2hpY2ggaXMgbm9uLXN0YXRpYy4gQmVjYXVzZSBvZiB0aGlzIGNoYWluIG9mIGNhbGxzLCBgcnR3X3JlY3ZfZW50cnlgIGFsc28gbWFrZXMgc2Vuc2UgYXMgYSBzeW1ib2wgdG8gaW52ZXN0aWdhdGUuCgpIYW5nIG9uLCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYHNkX2ludF9kcGNgIHF1ZXVlcyB0aGUgYGMyaF93a19jYWxsYmFja2AgdGhyb3VnaCBgcnR3X2MyaF93a19jbWRgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBjMmhfd2tfY2FsbGJhY2tgIGFuZCBgcnR3X2MyaF93a19jbWRgLiBHaXZlbiB0aGUgaW50ZXJydXB0IGNvbnRleHQsIGBzZF9pbnRfZHBjYCBpcyBjbGVhcmx5IGFub3RoZXIgdmFsdWFibGUgZm9jdXMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gY29uZmlybSBteSBpbml0aWFsIGFzc3VtcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zIHRvIGJlIGNlcnRhaW46IEkgc2VlIHRoYXQgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBpbmRlZWQgbm9uLXN0YXRpYyB3aXRoaW4gYG9zX2ludGZzLmNgLiBgcnR3X2MyaF93a19jbWRgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbCwgcmVzaWRpbmcgaW4gYHJ0d19jbWQuY2AuIGBydHdfcmVjdl9lbnRyeWAgaXMgY29uZmlybWVkIHRvIGJlIG5vbi1zdGF0aWMgaW4gYHJ0d19yZWN2LmNgLiBBbmQgZmluYWxseSwgYHNkX2ludF9kcGNgIGlzIHByZXNlbnQgaW4gYHNkaW9fb3BzLmNgLgoKV2l0aCB0aGlzIGNvbmZpcm1lZCwgSSYjMzk7bGwgZ28gYmFjayB0byB0aGUgcGF0Y2ggdG8gbG9vayBhdCBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBwYXRjaC4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXM6IGBjMmhfd2tfY2FsbGJhY2tgIChzdGF0aWMpIC0mZ3Q7IGBydHdfYzJoX3drX2NtZGAsIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgKHN0YXRpYykgLSZndDsgYHJ0d19yZWN2X2VudHJ5YCwgYF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgKHN0YXRpYykgLSZndDsgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCwgYW5kIGFsc28gYHJ0d19zZGlvX2lmMV9pbml0YCAoc3RhdGljKSAtJmd0OyBgcnR3X2Rydl9pbml0YCAoc3RhdGljKSAtJmd0OyBgcnRsODcyM2JzX3NkaW9fZHJpdmVyLnByb2JlYC4KCkxldCBtZSBhZGQgdGhhdCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYHJ0bDg3MjNic19zZGlvX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCBpbiBgcnR3X2Rydl9lbnRyeWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19kcnZfZW50cnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00Mzc9c3RhdGljIGludCBydHdfc2Rpb19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1MC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1MTpzdGF0aWMgaW50IF9faW5pdCBydHdfZHJ2X2VudHJ5KHZvaWQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTIte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1NC19XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzo0NTU6bW9kdWxlX2luaXQocnR3X2Rydl9lbnRyeSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MjE5CgkJCQkJCQlvdXRwdXQ6IDIyNgoJCQkJCQkJdGhvdWdodHM6IDU3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gVGFyZ2V0aW5nIHRoZSBSVEw4NzIzQlMgU0RJTyBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYHJ0d19kcnZfZW50cnlgIGlzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBvdXQuIFdlIG5lZWQgYSBnb29kIG5vbi1zdGF0aWMgZnVuY3Rpb24gZm9yIHRoZSBwcm9iZSBwYXRoLiBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIHNlZW1zIGxpa2UgdGhlIGJlc3QgYmV0LiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgY291bGQgYmUgYSBjYW5kaWRhdGU/IEhtbW0sIHdoYXQgYWJvdXQgYHJ0d19oYWxfZGF0YV9kZWluaXRgPyBUaGUgcGF0Y2ggZG9lcyBtZW50aW9uIGl0LiBCdXQgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGNvbnRhaW4gdGhlICptb2RpZmllZCogY29kZS4gUmlnaHQsIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gYHJ0d19zZGlvX2lmMV9pbml0YCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBEYW5nLCBgcnR3X2Rydl9pbml0YCBpcyBzdGF0aWMuCgpCdXQhIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgKmFsc28qIGdldHMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBXYWl0IGEgc2Vjb25k4oCmIGxvb2tpbmcgYXQgdGhlIGNhbGwgb3JkZXIgd2l0aGluIGBydHdfZHJ2X2luaXRgLCBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGlzIGNhbGxlZCAqYWZ0ZXIqIGBydHdfc2Rpb19pZjFfaW5pdGAuIFNvLCBmdXp6aW5nIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgbWlnaHQgbm90IGRpcmVjdGx5IHRyaWdnZXIgYHJ0d19zZGlvX2lmMV9pbml0YCBpbW1lZGlhdGVseS4gQnV0IHRoYXQmIzM5O3Mgb2theSwgc3l6a2FsbGVyIHdpbGwgc3RpbGwgYmUgYWJsZSB0byBoaXQgdGhlIHByb2JlIGZ1bmN0aW9uIGJ5IGluamVjdGluZyBTRElPIGRldmljZXMgYW5kIHNvIHdpbGwgdGVzdCBgcnR3X3NkaW9faWYxX2luaXRgLiBMaXN0aW5nIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgd2lsbCBndWlkZSB0aGUgZnV6emVyIHRvIHRoZSBwcm9iZSBwYXRoIHJlZ2FyZGxlc3MuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSByYXRpb25hbGUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgc2V2ZXJhbCBidWdzIOKAkyBtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcyDigJMgc3BlY2lmaWNhbGx5IGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBTRElPIGRldmljZSB2aWEgYSBVU0ItdG8tU0RJTyBicmlkZ2UgKGxpa2UgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFNvLCB0aGlzICppcyogcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBPa2F5LCB0aGUgcGxhbiBpczogYHJ0d19yZWN2X2VudHJ5YCAodG8gY292ZXIgYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYCksIGBydHdfYzJoX3drX2NtZGAgKGZvciBgYzJoX3drX2NhbGxiYWNrYCksIGFuZCBub3cgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCAoZm9yIGBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgKS4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgYHJ0d19jMmhfd2tfY21kYCBpcyBleHBvcnRlZCBvciBqdXN0IG5vbi1zdGF0aWMuIERvZXNuJiMzOTt0IG1hdHRlciwgc3l6a2FsbGVyIGhhbmRsZXMgbm9uLXN0YXRpYyBmdW5jdGlvbnMganVzdCBmaW5lLgoKRmluYWxseSwgYXJlIHRoZXJlIGFueSByZWxldmFudCBjb25maWdzPyBMZXQgbWUgc2Vl4oCmIFJUTDg3MjNCUywgV0xBTiwgTU1DLCBDRkc4MDIxMSwgU1RBR0lORywgTU1DX1ZVQjMwMCwgYW5kIFVTQi4gR290IGl0LgoKWWVhaCwgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBzb2xpZCBhbmQgYWNjdXJhdGUgcGxhbiBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRMODcyM0JTJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1NUQUdJTkcmIzM0OywKICAgICYjMzQ7TU1DX1ZVQjMwMCYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHdfcmVjdl9lbnRyeSYjMzQ7LAogICAgJiMzNDtydHdfYzJoX3drX2NtZCYjMzQ7LAogICAgJiMzNDtydHdfZHJ2X3JlZ2lzdGVyX25ldGRldiYjMzQ7LAogICAgJiMzNDtzZF9pbnRfZHBjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGJ1Z3MgKG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXB0ci1kZXJlZikgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gU0RJTyBkZXZpY2UgdmlhIGEgVVNCLXRvLVNESU8gYnJpZGdlIChlLmcuLCBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUTDg3MjNCUyYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtTVEFHSU5HJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X3JlY3ZfZW50cnkmIzM0OywKICAgICYjMzQ7cnR3X2MyaF93a19jbWQmIzM0OywKICAgICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAgICYjMzQ7c2RfaW50X2RwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBidWdzIChtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wdHItZGVyZWYpIGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAoZS5nLiwgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6MzMuNzM3MTgwOTIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMjE0NzU5NTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUTDg3MjNCU1wiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiTU1DXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiU1RBR0lOR1wiLFxuICAgIFwiTU1DX1ZVQjMwMFwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3X3JlY3ZfZW50cnlcIixcbiAgICBcInJ0d19jMmhfd2tfY21kXCIsXG4gICAgXCJydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICAgIFwic2RfaW50X2RwY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGJ1Z3MgKG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXB0ci1kZXJlZikgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gU0RJTyBkZXZpY2UgdmlhIGEgVVNCLXRvLVNESU8gYnJpZGdlIChlLmcuLCBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjE5OjMzLjczNzE4Nzk1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NzQwNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNToxOTozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xcbmluZGV4IGI5MzI2NzBmNWQ2M2EuLmU5YjExMzZkYmY2NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xcbisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmNcXG5AQCAtMTcxNiw3ICsxNzE2LDggQEAgc3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0XFx0XFx0a2ZyZWUoYzJoX2V2dCk7XFxuIFxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0fSBlbHNlXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBTcGVjaWFsIHBvaW50ZXIgdG8gdHJpZ2dlciBjMmhfZXZ0X2NsZWFyIG9ubHkgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuY1xcbmluZGV4IDg2YzVlMmM0ZTdkZGQuLmZmY2VlNDMxY2FmNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuY1xcbkBAIC0xMTQ2LDcgKzExNDYsMTAgQEAgc3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9jaGtfZGVmcmFnKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVcXG4gXFxuIFxcdFxcdGlmICh0eXBlICE9IFdJRklfREFUQV9UWVBFKSB7XFxuIFxcdFxcdFxcdHBzdGEgPSBydHdfZ2V0X2JjbWNfc3RhaW5mbyhwYWRhcHRlcik7XFxuLVxcdFxcdFxcdHBkZWZyYWdfcSA9IFxcdTAwMjZwc3RhLVxcdTAwM2VzdGFfcmVjdnByaXYuZGVmcmFnX3E7XFxuK1xcdFxcdFxcdGlmIChwc3RhKVxcbitcXHRcXHRcXHRcXHRwZGVmcmFnX3EgPSBcXHUwMDI2cHN0YS1cXHUwMDNlc3RhX3JlY3Zwcml2LmRlZnJhZ19xO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHBkZWZyYWdfcSA9IE5VTEw7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdHBkZWZyYWdfcSA9IE5VTEw7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcXG5pbmRleCBmMzExOTZmNTRiM2UwLi44NDYzM2E1MWUyZGI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXFxuQEAgLTc1NCw3ICs3NTQsNiBAQCB1OCBydHdfZnJlZV9kcnZfc3coc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxcbiBcXG4gc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxcbiB7XFxuLVxcdGludCByZXQgPSBfU1VDQ0VTUztcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKnBuZXRkZXYgPSBwYWRhcHRlci1cXHUwMDNlcG5ldGRldjtcXG4gXFxuIFxcdC8qIGFsbG9jIG5ldGRldiBuYW1lICovXFxuQEAgLTc2NSwxOSArNzY0LDEwIEBAIHN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcXG4gXFxuIFxcdC8qIFRlbGwgdGhlIG5ldHdvcmsgc3RhY2sgd2UgZXhpc3QgKi9cXG4gXFx0aWYgKHJlZ2lzdGVyX25ldGRldihwbmV0ZGV2KSAhPSAwKSB7XFxuLVxcdFxcdHJldCA9IF9GQUlMO1xcbi1cXHRcXHRnb3RvIGVycm9yX3JlZ2lzdGVyX25ldGRldjtcXG4rXFx0XFx0cmV0dXJuIF9GQUlMO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gcmV0O1xcbi1cXG4tZXJyb3JfcmVnaXN0ZXJfbmV0ZGV2Olxcbi1cXG4tXFx0cnR3X2ZyZWVfZHJ2X3N3KHBhZGFwdGVyKTtcXG4tXFxuLVxcdHJ0d19mcmVlX25ldGRldihwbmV0ZGV2KTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBfU1VDQ0VTUztcXG4gfVxcbiBcXG4gaW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICppZjEpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcXG5pbmRleCBjNDNhMDM5MWE1Y2E3Li5mN2VjMDkzMTBjZTk4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jXFxuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcXG5AQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWRhcHRlciAqcnR3X3NkaW9faWYxX2luaXQoc3RydWN0IGR2b2JqX3ByaXYgKmR2b2JqLCBjb25zdCBzdHJ1Y3RcXG4gXFxuIGZyZWVfaGFsX2RhdGE6XFxuIFxcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MgXFx1MDAyNlxcdTAwMjYgcGFkYXB0ZXItXFx1MDAzZUhhbERhdGEpXFxuLVxcdFxcdGtmcmVlKHBhZGFwdGVyLVxcdTAwM2VIYWxEYXRhKTtcXG4rXFx0XFx0cnR3X2hhbF9kYXRhX2RlaW5pdChwYWRhcHRlcik7XFxuIFxcbiBcXHRpZiAoc3RhdHVzICE9IF9TVUNDRVNTKSB7XFxuIFxcdFxcdHJ0d193ZGV2X3VucmVnaXN0ZXIocGFkYXB0ZXItXFx1MDAzZXJ0d193ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6MzQuMjg2OTAzODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxOTk2NjUwMjI5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRMODcyM0JTXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJTVEFHSU5HXCIsXG4gICAgXCJNTUNfVlVCMzAwXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHdfcmVjdl9lbnRyeVwiLFxuICAgIFwicnR3X2MyaF93a19jbWRcIixcbiAgICBcInJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2XCIsXG4gICAgXCJzZF9pbnRfZHBjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgYnVncyAobWVtb3J5IGxlYWtzLCBkb3VibGUgZnJlZXMsIG51bGwtcHRyLWRlcmVmKSBpbiB0aGUgUlRMODcyM0JTIFNESU8gV2lGaSBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBTRElPIGRldmljZSB2aWEgYSBVU0ItdG8tU0RJTyBicmlkZ2UgKGUuZy4sIFZVQjMwMCkgdXNpbmcgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIChkdW1teV9oY2QpLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyB0byB0aGUgbW9kaWZpZWQgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE1OjE5OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmNcbmluZGV4IGI5MzI2NzBmNWQ2M2EuLmU5YjExMzZkYmY2NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jXG5AQCAtMTcxNiw3ICsxNzE2LDggQEAgc3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHRcdFx0a2ZyZWUoYzJoX2V2dCk7XG4gXHRcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdFx0fVxuLVx0XHRcdH1cbitcdFx0XHR9IGVsc2VcbitcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4gXHRcdC8qIFNwZWNpYWwgcG9pbnRlciB0byB0cmlnZ2VyIGMyaF9ldnRfY2xlYXIgb25seSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcbmluZGV4IDg2YzVlMmM0ZTdkZGQuLmZmY2VlNDMxY2FmNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuY1xuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcbkBAIC0xMTQ2LDcgKzExNDYsMTAgQEAgc3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9jaGtfZGVmcmFnKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVcbiBcbiBcdFx0aWYgKHR5cGUgIT0gV0lGSV9EQVRBX1RZUEUpIHtcbiBcdFx0XHRwc3RhID0gcnR3X2dldF9iY21jX3N0YWluZm8ocGFkYXB0ZXIpO1xuLVx0XHRcdHBkZWZyYWdfcSA9IFx1MDAyNnBzdGEtXHUwMDNlc3RhX3JlY3Zwcml2LmRlZnJhZ19xO1xuK1x0XHRcdGlmIChwc3RhKVxuK1x0XHRcdFx0cGRlZnJhZ19xID0gXHUwMDI2cHN0YS1cdTAwM2VzdGFfcmVjdnByaXYuZGVmcmFnX3E7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0cGRlZnJhZ19xID0gTlVMTDtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRwZGVmcmFnX3EgPSBOVUxMO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcbmluZGV4IGYzMTE5NmY1NGIzZTAuLjg0NjMzYTUxZTJkYjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG5AQCAtNzU0LDcgKzc1NCw2IEBAIHU4IHJ0d19mcmVlX2Rydl9zdyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpXG4gXG4gc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxuIHtcbi1cdGludCByZXQgPSBfU1VDQ0VTUztcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpwbmV0ZGV2ID0gcGFkYXB0ZXItXHUwMDNlcG5ldGRldjtcbiBcbiBcdC8qIGFsbG9jIG5ldGRldiBuYW1lICovXG5AQCAtNzY1LDE5ICs3NjQsMTAgQEAgc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxuIFxuIFx0LyogVGVsbCB0aGUgbmV0d29yayBzdGFjayB3ZSBleGlzdCAqL1xuIFx0aWYgKHJlZ2lzdGVyX25ldGRldihwbmV0ZGV2KSAhPSAwKSB7XG4tXHRcdHJldCA9IF9GQUlMO1xuLVx0XHRnb3RvIGVycm9yX3JlZ2lzdGVyX25ldGRldjtcbitcdFx0cmV0dXJuIF9GQUlMO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHJldDtcbi1cbi1lcnJvcl9yZWdpc3Rlcl9uZXRkZXY6XG4tXG4tXHRydHdfZnJlZV9kcnZfc3cocGFkYXB0ZXIpO1xuLVxuLVx0cnR3X2ZyZWVfbmV0ZGV2KHBuZXRkZXYpO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBfU1VDQ0VTUztcbiB9XG4gXG4gaW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICppZjEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuY1xuaW5kZXggYzQzYTAzOTFhNWNhNy4uZjdlYzA5MzEwY2U5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuY1xuQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgc3RydWN0IGFkYXB0ZXIgKnJ0d19zZGlvX2lmMV9pbml0KHN0cnVjdCBkdm9ial9wcml2ICpkdm9iaiwgY29uc3Qgc3RydWN0XG4gXG4gZnJlZV9oYWxfZGF0YTpcbiBcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MgXHUwMDI2XHUwMDI2IHBhZGFwdGVyLVx1MDAzZUhhbERhdGEpXG4tXHRcdGtmcmVlKHBhZGFwdGVyLVx1MDAzZUhhbERhdGEpO1xuK1x0XHRydHdfaGFsX2RhdGFfZGVpbml0KHBhZGFwdGVyKTtcbiBcbiBcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MpIHtcbiBcdFx0cnR3X3dkZXZfdW5yZWdpc3RlcihwYWRhcHRlci1cdTAwM2VydHdfd2Rldik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTozNC4yODY5MDYwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MDI0MzI5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIHRoZSBSVEw4NzIzQlMgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB0byBgcnR3X2NtZC5jYCwgYHJ0d19yZWN2LmNgLCBgb3NfaW50ZnMuY2AsIGFuZCBgc2Rpb19pbnRmLmNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBhcyB0aGUgc3RhZ2luZyBkcml2ZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDg3MjNCUyBTRElPIFdpRmkgY2FyZC4gTXkgZmlyc3QgdGhvdWdodCBpcyBhYm91dCB0ZXN0aW5nIGFuZCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGlzLiBTaW5jZSBpdCdzIFNESU8sIG15IGluaXRpYWwgaW5jbGluYXRpb24gaXMgdG8gc2VlIGlmIEkgY2FuIHJ1biBpdCBpbiBRRU1VLiBCdXQsIHR5cGljYWwgUUVNVSBzZXR1cHMgZG9uJ3QgZWFzaWx5IGVtdWxhdGUgU0RJTyB3aXRob3V0IHNvbWUgc3BlY2lmaWMgU0RJTyBlbXVsYXRpb24gb3IgYSB2aXJ0dWFsIFNESU8gZGV2aWNlIHNldHVwLiBJIGtub3cgU0RJTyBkZXZpY2VzIGFyZW4ndCB1c3VhbGx5IGVhc2lseSBmdXp6YWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgd2l0aG91dCBhIG1vY2sgb3IgdmlydHVhbCBidXMgaW50ZXJmYWNlLlxuXG5UaGVuIGl0IGhpdHMgbWU6IHN5emthbGxlciBkb2Vzbid0IGhhdmUgU0RJTyBlbXVsYXRpb24gZWl0aGVyLiBTbywgSSBuZWVkIHRvIGNoZWNrIGJvdGggc3l6a2FsbGVyIGFuZCB0aGUga2VybmVsIGZvciBhbnkgZXhpc3RpbmcgU0RJTyBlbXVsYXRpb24gY2FwYWJpbGl0aWVzLCBqdXN0IHRvIGJlIHN1cmUuIEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIG9yIG5vdCBmdXp6aW5nIHRoZSBgUlRMODcyM0JTYCBkcml2ZXIgaXMgZXZlbiB3b3J0aCB0aGUgZWZmb3J0LiBJdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzbyBJIG5lZWQgdG8gYXNzZXNzIHRoZSBmZWFzaWJpbGl0eSBvZiBhY3R1YWxseSB0cmlnZ2VyaW5nIHRoaXMgY29kZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBpcyBhIHdvcnRod2hpbGUgdGFyZ2V0LiBTbywgSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NDIuOTg5MzQxMzk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDAzNjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVEw4NzIzQlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc6Mjpjb25maWcgUlRMODcyM0JTXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnOjM6XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcXFwiXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBXTEFOIFxcdTAwMjZcXHUwMDI2IE1NQyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTktXFx0aGVscFxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoxMDpcXHRUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFJUTDg3MjNCUyBTRElPIGRyaXZlcnMsIHN1Y2ggYXNcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctMTEtXFx0dGhlIHdpZmkgZm91bmQgb24gdGhlIDFzdCBnZW4gSW50ZWwgQ29tcHV0ZSBTdGljaywgdGhlIENISVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NDMuMDk5Mzg0NDAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NzA5NjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNESU8gRW11bGF0aW9uIENoYWxsZW5nZSoqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQuIFRoaXMgYm9pbHMgZG93biB0byBNTUMsIHNwZWNpZmljYWxseSB0aGUgU0QvTU1DL1NESU8gdmFyaWFudHMuIENhbiBRRU1VIGNvbnZpbmNpbmdseSBlbXVsYXRlIHRoZXNlPyBJIGtub3cgUUVNVSAqZG9lcyogaGF2ZSBTRCBjYXJkIGVtdWxhdGlvbiwgdGhhdCdzIGEga25vd24gcXVhbnRpdHkuIEJ1dCB3aGF0IGFib3V0IFNESU8/IFNESU8gaXMsIGZ1bmRhbWVudGFsbHksIGZvciBJL08gZGV2aWNlcyAtIHRoaW5ncyBsaWtlIFdpRmkuIEFuZCBJIHNlcmlvdXNseSBkb3VidCB0aGF0IFFFTVUgb2ZmZXJzIGEgZmFpdGhmdWwgZW11bGF0aW9uIG9mIHNvbWV0aGluZyBhcyBzcGVjaWZpYyBhcyBhbiBSVEw4NzIzQlMgU0RJTyBXaUZpIGNhcmQsIG9yIGFueSByZWFsLXdvcmxkIFNESU8gZGV2aWNlIGZvciB0aGF0IG1hdHRlci5cblxuV2hpY2ggc3VnZ2VzdHMgYSBtYWpvciBodXJkbGUuIElmIHRoYXQgZW11bGF0aW9uIGlzbid0IHRoZXJlLCBpdCBtYWtlcyByZWFjaGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCB0aGVzZSBkZXZpY2VzIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IsIGV2ZW4gbW9yZSBjb21tb24sIFFFTVUsIGNvbXBsZXRlbHkgaW1wb3NzaWJsZS4gV2UncmUgZWZmZWN0aXZlbHkgY3V0IG9mZiBmcm9tIG91ciB0YXJnZXQuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgc3l6a2FsbGVyIGRvY3VtZW50YXRpb24uIFN1cmVseSwgKnNvbWVvbmUqIGhhcyB0aG91Z2h0IGFib3V0IFNESU8gZnV6emluZyBpbiB0aGlzIGNvbnRleHQuXG5cbldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBmdXp6aW5nIGNhcGFiaWxpdGllcyBmb3IgVVNCLCBQQ0ksIHZoY2kgYW5kIG90aGVycywgSSBrbm93IHRoYXQuIEJ1dCBTRElPPyBUaGF0J3MgYSBkaWZmZXJlbnQgYW5pbWFsLiBMZXQgbWUgdHJ5IGEgcXVpY2sgc2VhcmNoIGZvciBhbnl0aGluZyBsaWtlIGBzeXpfc2Rpb2Agb3IgYSBzaW1pbGFyIHRlcm0uIEdvdHRhIHNlZSBpZiB3ZSd2ZSBnb3Qgc29tZSBleGlzdGluZyBmb3VuZGF0aW9uIHRvIGJ1aWxkIG9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NDcuODg2NDg0MTY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzU4NjI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjE5OjQ3Ljk0OTI1MjIwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjE2NjY4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIERyaXZlciBUYXNrKipcblxuT2theSwgc28gSSBjYW4ndCBqdXN0IGBncmVwYCB0aHJvdWdoIGBzeXMvYCBmb3IgdGhpcyBvbmU7IHRoYXQncyBub3QgZ29pbmcgdG8gY3V0IGl0LiBJIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIGdldCBhdCB0aGlzIG1vcmUgZWZmZWN0aXZlbHkuIEJ1dCwgbG9va2luZyBhdCB0aGUgcHJvbXB0LCBpdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgbGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUsIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuIEl0J3MgZXhwbGljaXRseSBzYXlpbmcgdGhhdCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUgdGhlc2UgZHJpdmVycyBkZXBlbmQgb24uIEl0IGFsc28gZmxhZ3MgY29kZSBwYXRocyB0aGF0IGFyZSBlbnRpcmVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgY2FsbHMgb3V0IHRoaW5ncyBsaWtlIHVzYiBnYWRnZXRzIGFuZCBtYWM4MDIxMV9od3NpbS5cblxuU2luY2UgdGhlIFJUTDg3MjNCUyBpcyBhbiBTRElPIFdpRmkgY2FyZCwgYW5kIEkga25vdyBvZiBubyBzb2Z0d2FyZSBlbXVsYXRpb24gd2l0aGluIFFFTVUgdGhhdCBjb3ZlcnMgaXQsIGl0ICpzaG91bGQqIGJlIHVucmVhY2hhYmxlLiBCdXQgd2FpdCwgSSBuZWVkIHRvIGJlIGNvbXBsZXRlbHkgc3VyZS4gSXMgdGhlcmUgKmFueSogcG9zc2liaWxpdHkgdGhhdCBpdCBjYW4gYmUgcmVhY2hlZCB0aHJvdWdoIHNvbWUgb3RoZXIgbWVjaGFuaXNtPyBNYXliZSBTRElPIGluamVjdGlvbj8gQmV0dGVyIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY29kZSBwYXRocyBpbiB0aGUga2VybmVsIGZvciBTRElPIGluamVjdGlvbi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2ggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTo1My40NzA5MjMwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYxMTk0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTAwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVxcdFxcdFxcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cXHRcXHRcXHRcXHQgICBtbWMubyBtbWNfb3BzLm8gc2QubyBzZF9vcHMubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZTo5OlxcdFxcdFxcdFxcdCAgIHNkaW8ubyBzZGlvX29wcy5vIHNkaW9fYnVzLm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MTA6XFx0XFx0XFx0XFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cXHRcXHRcXHRcXHQgICBzbG90LWdwaW8ubyByZWd1bGF0b3Iub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXFx0XFx0Kz0gbW1jX3Rlc3Qub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1NESU9fVUFSVClcXHRcXHQrPSBzZGlvX3VhcnQub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMjEtbW1jX2NvcmUtJChDT05GSUdfTU1DX0NSWVBUTylcXHQrPSBjcnlwdG8ub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcXFwiaG9zdC5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXFxcInNkaW9fY2lzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcXFwiYnVzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTU5PW1tY19idXNfdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjg5OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpIHx8IG1tY19jYXJkX3NkX2NvbWJvKGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cXHRcXHRyZXR2YWwgPSBhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJTRElPX0lEPSUwNFg6JTA0WFxcXCIsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjExMTpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9MjY0PXN0YXRpYyB2b2lkIG1tY19yZWxlYXNlX2NhcmQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjctXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYzoyNjg6XFx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjktXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oOjQ2OiAqIFRoZSB3b3JsZCBpcyBub3QgcGVyZmVjdCBhbmQgc3VwcGxpZXMgdXMgd2l0aCBicm9rZW4gbW1jL3NkaW8gZGV2aWNlcy5cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00Ny0gKiBGb3IgYXQgbGVhc3Qgc29tZSBvZiB0aGVzZSBidWdzIHdlIG5lZWQgYSB3b3JrLWFyb3VuZC5cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQxLSNpbmNsdWRlIFxcXCJob3N0LmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDI6I2luY2x1ZGUgXFxcInNkaW9fYnVzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDMtI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDYtI2luY2x1ZGUgXFxcInNkX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjQ3OiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjE2PXN0YXRpYyB2b2lkIF9fbW1jX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cXHQvKlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIyOTpcXHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMDpcXHQgKiBzZGlvIGRldmljZXMgd29uJ3Qgd29yayBwcm9wZXJseS5cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzEtXFx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMi1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XFx0aWYgKHNkaW9faXNfaW9fYnVzeShtcnEtXFx1MDAzZWNtZC1cXHUwMDNlb3Bjb2RlLCBtcnEtXFx1MDAzZWNtZC1cXHUwMDNlYXJnKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzNC1cXHQgICAgaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VjYXJkX2J1c3kpIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTY2MD12b2lkIG1tY19zZXRfZGF0YV90aW1lb3V0KHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjY2NzpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2OC1cXHRcXHRkYXRhLVxcdTAwM2V0aW1lb3V0X25zID0gMTAwMDAwMDAwMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMTQtXFx0LypcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTE1OlxcdCAqIHNkaW9fcmVzZXQgc2VuZHMgQ01ENTIgdG8gcmVzZXQgY2FyZC4gIFNpbmNlIHdlIGRvIG5vdCBrbm93XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cXHQgKiBpZiB0aGUgY2FyZCBpcyBiZWluZyByZS1pbml0aWFsaXplZCwganVzdCBzZW5kIGl0LiAgQ01ENTJcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTIxOlxcdFxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMi1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTM0OlxcdFxcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA0LVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9idXMoKTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yNDE4PXN0YXRpYyB2b2lkIF9fZXhpdCBtbWNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MjA6XFx0c2Rpb191bnJlZ2lzdGVyX2J1cygpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXFx0bW1jX3VucmVnaXN0ZXJfaG9zdF9jbGFzcygpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaDo4ODppbnQgbW1jX2F0dGFjaF9zZGlvKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmgtODktaW50IG1tY19hdHRhY2hfc2RfdWhzMihzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMjktI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjMwOiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTMxLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY3LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9IV19SRVNFVDtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwiY2FwLXNkaW8taXJxXFxcIikpXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY5LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9TRElPX0lSUTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozOTQ6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibm8tc2Rpb1xcXCIpKVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5NS1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9OT19TRElPO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NTEyPXN0cnVjdCBtbWNfaG9zdCAqbW1jX2FsbG9jX2hvc3QoaW50IGV4dHJhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmhvc3QtXFx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NTU5OlxcdElOSVRfV09SSyhcXHUwMDI2aG9zdC1cXHUwMDNlc2Rpb19pcnFfd29yaywgc2Rpb19pcnFfd29yayk7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNTYwLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZob3N0LVxcdTAwM2VyZXR1bmVfdGltZXIsIG1tY19yZXR1bmVfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NjEwPXN0YXRpYyBpbnQgbW1jX3ZhbGlkYXRlX2hvc3RfY2FwcyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE1OlxcdGlmIChjYXBzIFxcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcXHUwMDI2XFx1MDAyNiAhaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VlbmFibGVfc2Rpb19pcnEpIHtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTY6XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwibWlzc2luZyAtXFx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcXFxuXFxcIik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaD0xNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgbW1jX2V4dF9jc2RfZml4dXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE5MC1cXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTYtXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE4LVxcdFNESU9fRklYVVBfQ09NUEFUSUJMRShcXFwidGksd2wxMjUxXFxcIiwgd2wxMjUxX3F1aXJrLCAwKSxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcXFwiJXUuJXVcXFxcblxcXCIsIGNhcmQtXFx1MDAzZW1ham9yX3JldiwgY2FyZC1cXHUwMDNlbWlub3JfcmV2KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzQ5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NTA6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NTEtc3RhdGljIHNzaXplX3QgaW5mbyMjbnVtIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc2MT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjItXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY0OnNkaW9faW5mb19hdHRyKDIpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjU6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzY3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM6ICogIGxpbnV4L2RyaXZlcnMvbW1jL3NkaW8uY1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvbW1jLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvX2Z1bmMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW9faWRzLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcXFwic2QuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcXFwic2Rpb19idXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcXFwibW1jX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFxcXCJzZF9vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcXFwic2Rpb19vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcXFwic2Rpb19jaXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTM1PU1NQ19ERVZfQVRUUihyY2EsIFxcXCIweCUwNHhcXFxcblxcXCIsIGNhcmQtXFx1MDAzZXJjYSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzYtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTQ4PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTA6c2Rpb19pbmZvX2F0dHIoMSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTE6c2Rpb19pbmZvX2F0dHIoMik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTM6c2Rpb19pbmZvX2F0dHIoNCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTQtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTYtXFx0XFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYtfTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2OTpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHNkaW9fdHlwZSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcXHQuZ3JvdXBzID0gc2Rpb19zdGRfZ3JvdXBzLFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxLX07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM6c3RhdGljIGludCBzZGlvX3JlYWRfZmJyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAyLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzpzdGF0aWMgaW50IHNkaW9faW5pdF9mdW5jKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IGZuKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1LVxcdGludCByZXQ7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2OlxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMTpcXHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMi1cXHRpZiAoSVNfRVJSKGZ1bmMpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3LVxcdGlmICghKGNhcmQtXFx1MDAzZXF1aXJrcyBcXHUwMDI2IE1NQ19RVUlSS19OT05TVERfU0RJTykpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2ZicihmdW5jKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMjI6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMy1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcXHRjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbZm4gLSAxXSA9IGZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTM5LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0MDpcXHRzZGlvX3JlbW92ZV9mdW5jKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0NDpzdGF0aWMgaW50IHNkaW9fcmVhZF9jY2NyKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTMyIG9jcilcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTYzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE2NDpcXHRjYXJkLVxcdTAwM2VjY2NyLnNkaW9fdnNuID0gKGRhdGEgXFx1MDAyNiAweGYwKSBcXHUwMDNlXFx1MDAzZSA0O1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE2NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNjE6c3RhdGljIGludCBzZGlvX2VuYWJsZV93aWRlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjkzLSAqIG9mIHRoZSBjYXJkLiBUaGlzIG1heSBiZSByZXF1aXJlZCBvbiBjZXJ0YWluIHNldHVwcyBvZiBib2FyZHMsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCdzXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5NzpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV9jZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTMxNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNDg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNTEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzUyOlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1My1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2NS1vdXQ6XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2OlxcdHJldHVybiBzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjctfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3MDpzdGF0aWMgaW50IHNkaW9fZW5hYmxlXzRiaXRfYnVzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzczLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcXHRlcnIgPSBzZGlvX2VuYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3NS1cXHRpZiAoZXJyIFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc2LVxcdFxcdHJldHVybiBlcnI7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc3OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3OC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4Mi1cXHRcXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzgzOlxcdFxcdFxcdHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mjc6c3RhdGljIGludCBzZGlvX2VuYWJsZV9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0MzE6XFx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMjpcXHRpZiAocmV0IFxcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzMtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzNi1cXHRpZiAocmV0IFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDM3OlxcdFxcdG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCBmYWxzZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQ0MjpzdGF0aWMgdW5zaWduZWQgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2NS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2Ny17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDgyOnN0YXRpYyB2b2lkIHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODMte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTAzLVxcdFxcdGNhcmRfc3RyZW5ndGggXFx1MDAyNj0gfihTRElPX0RSSVZFX0RUU3hfTUFTS1xcdTAwM2NcXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDQ6XFx0XFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUwNS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTk6c3RhdGljIGludCBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTIwLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5Mi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1OTM6c3RhdGljIGludCBtbWNfc2Rpb19pbml0X3Voc19jYXJkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAwLVxcdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDE6XFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXFx0LyogU2V0IHRoZSBkcml2ZXIgc3RyZW5ndGggZm9yIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA2OlxcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDgtXFx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA5OlxcdGVyciA9IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYyNTpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9pbml0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MjYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzItXFx0ICogUmVzZXQgdGhlIGNhcmQgYnkgcGVyZm9ybWluZyB0aGUgc2FtZSBzdGVwcyB0aGF0IGFyZSB0YWtlbiBieVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcXHQgKiBtbWNfcmVzY2FuX3RyeV9mcmVxKCkgYW5kIG1tY19hdHRhY2hfc2RpbygpIGR1cmluZyBhIFxcXCJub3JtYWxcXFwiIHByb2JlLlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNC1cXHQgKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcXHQgKiBzZGlvX3Jlc2V0KCkgaXMgdGVjaG5pY2FsbHkgbm90IG5lZWRlZC4gSGF2aW5nIGp1c3QgcG93ZXJlZCB1cCB0aGVcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzYtXFx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ5LVxcdG1tY19nb19pZGxlKGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjU5LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbWNfY2FyZCAqb2xkY2FyZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDA6XFx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFxcdTAwMjZzZGlvX3R5cGUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcwMS1cXHRpZiAoSVNfRVJSKGNhcmQpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcXHRcXHRpZiAob2xkY2FyZCBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfc2RpbyhvbGRjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNy1cXHRcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI2LVxcdFxcdGhvc3QtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdF9jYXJkKGhvc3QsIGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcXHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fY2FyZF9pbml0X21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcyOC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTczOC1cXHQgKiBmYWlscyB0byBjaGVjayByb2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjczOTpcXHQgKiB0cnkgdG8gaW5pdCB1aHMgY2FyZC4gc2Rpb19yZWFkX2NjY3Igd2lsbCB0YWtlIG92ZXIgdGhpcyB0YXNrXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVxcdCAqIHRvIG1ha2Ugc3VyZSB3aGljaCBzcGVlZCBtb2RlIHNob3VsZCB3b3JrLlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVxcdFxcdGlmIChlcnIgPT0gLUVBR0FJTikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcXHRcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ2LVxcdFxcdFxcdHJldHJpZXMtLTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4MTU6XFx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTYtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVxcdFxcdGlmIChvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODI4LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgyOTpcXHRlcnIgPSBzZGlvX3JlYWRfY29tbW9uX2NpcyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NDQ6XFx0bW1jX2ZpeHVwX2RldmljZShjYXJkLCBzZGlvX2ZpeHVwX21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2MS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NjI6XFx0ZXJyID0gc2Rpb19kaXNhYmxlX2NkKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVxcdGlmICgob2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQpIFxcdTAwMjZcXHUwMDI2IGNhcmQtXFx1MDAzZXN3X2NhcHMuc2QzX2J1c19tb2RlKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5OlxcdFxcdGVyciA9IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzUtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODc2OlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3Ny1cXHRcXHRpZiAoZXJyIFxcdTAwM2UgMClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XFx0XFx0bW1jX3NldF9jbG9jayhob3N0LCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKGNhcmQpKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODktXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODkwOlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg5MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxNDpzdGF0aWMgaW50IG1tY19zZGlvX3JlaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxODpcXHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IsIE5VTEwpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyMjpcXHRyZXR1cm4gbW1jX3NkaW9faW5pdF9jYXJkKGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jciwgaG9zdC1cXHUwMDNlY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05Mjkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMjpcXHRmb3IgKGkgPSAwO2kgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzO2krKykge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMzpcXHRcXHRpZiAoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0OlxcdFxcdFxcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XFx0XFx0XFx0aG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldID0gTlVMTDtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ1LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk0NjpzdGF0aWMgaW50IG1tY19zZGlvX2FsaXZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk5NDpcXHRcXHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTk1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDA4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzOyBpKyspIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlxcdFxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMgPSBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxNDpcXHRcXHRpZiAoZnVuYyBcXHUwMDI2XFx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcXHUwMDI2XFx1MDAyNiBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxNS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG1vcHMgPSBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyLVxcdTAwM2VwbTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMzItXFx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDMzOlxcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVxcdG1tY19jbGFpbV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0Ny17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcXHRXQVJOX09OKGhvc3QtXFx1MDAzZXNkaW9faXJxcyBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTEtXFx0bW1jX2NhcmRfc2V0X3N1c3BlbmRlZChob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDUyOlxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmhvc3QtXFx1MDAzZXNkaW9faXJxX3dvcmspO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTY6XFx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXFx1MDAyNlxcdTAwMjYgbW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3OlxcdFxcdHNkaW9fZGlzYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDcxOnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTUtXFx0XFx0fVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwOTY6XFx0XFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NzpcXHR9IGVsc2UgaWYgKG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVxcdFxcdC8qXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAzLVxcdFxcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEwNDpcXHRcXHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTA1LVxcdFxcdG1tY19yZXR1bmVfcmVsZWFzZShob3N0KTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNDpcXHRpZiAoaG9zdC1cXHUwMDNlc2Rpb19pcnFzKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNS1cXHRcXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX1NESU9fSVJRX05PVEhSRUFEKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2OlxcdFxcdFxcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVxcdTAwM2VzZGlvX2lycV90aHJlYWQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTctXFx0XFx0ZWxzZSBpZiAoaG9zdC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExODpcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZob3N0LVxcdTAwM2VzZGlvX2lycV93b3JrKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEyODpzdGF0aWMgaW50IG1tY19zZGlvX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVxcdG1tY19wb3dlcl91cChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNDU6XFx0cmV0ID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cXHRtbWNfcmVsZWFzZV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTU3OnN0YXRpYyBpbnQgbW1jX3NkaW9faHdfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2NS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2OlxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2Y2FyZC1cXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFxcdTAwM2UgMSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNjctXFx0XFx0aWYgKG1tY19jYXJkX3JlbW92ZWQoY2FyZCkpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVxcdG1tY19wb3dlcl9jeWNsZShob3N0LCBjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XFx0cmV0dXJuIG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODEtfVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MzpzdGF0aWMgaW50IG1tY19zZGlvX3N3X3Jlc2V0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg0LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVxcdG1tY19zZXRfY2xvY2soaG9zdCwgaG9zdC1cXHUwMDNlZl9pbml0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4Ny1cXHRtbWNfZ29faWRsZShob3N0KTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTo1My44MDcwNDY1N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTQwMjA3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqU0RJTyBUZXN0aW5nIHdpdGggU3l6a2FsbGVyOiBBIFF1aWNrIENoZWNrKipcblxuSG1tLCByaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcywgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgU3l6a2FsbGVyIGFscmVhZHkgaGFzIHNvbWV0aGluZyBpbiBwbGFjZSBmb3IgU0RJTyBkZXZpY2UgdGVzdGluZy4gVGhhdCB3b3VsZCBzYXZlIGEgbG90IG9mIHJlaW52ZW50aW5nIHRoZSB3aGVlbCEgVGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBzdGFydCBpcyB0byBzZWUgaWYgdGhlcmUncyBhIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBTRElPLiBUaGF0IG5hbWluZyBjb252ZW50aW9uIGlzIHVzdWFsbHkgYSBnb29kIGluZGljYXRvciBvZiBidWlsdC1pbiBzdXBwb3J0LCByaWdodD8gTGV0IG1lIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEknbGwgbmVlZCB0byBsb29rIHRocm91Z2ggdGhlIHN5c2NhbGwgZGVmaW5pdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTczLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NTcuMDYxMDcxMzU4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODczMzA1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTo1Ny4xMjk4MTM0NDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU4NjA1Nzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbnN0cmFpbnRzIGFuZCBFeHBsb3JpbmcgQWx0ZXJuYXRpdmVzKipcblxuT2theSwgc28gSSBjYW4ndCBqdXN0IGBncmVwYCB0aGUgYHN5cy9gIGRpcmVjdG9yeTsgdGhhdCdzIG91dC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWdhaW5zdCB0aGF0IGJlY2F1c2UgaXQncyBzeXprYWxsZXItc3BlY2lmaWMgc3R1ZmYsIG5vdCBrZXJuZWwgY29kZS4gVGhleSBzYXkgdG8gdXNlIGB7ey50b29sUmVhZERlc2NyaXB0aW9ufX1gIGluc3RlYWQsIGJ1dCBJIGRvbid0IHNlZSB0aGF0IHRvb2wgYXZhaWxhYmxlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbnN0cnVjdGlvbnMuXG5cbkFscmlnaHQsIHRoZSBwcm9tcHQgaXMgbGlzdGluZyBzb21lIGV4cGxpY2l0IGV4Y2x1c2lvbnM6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBjb2RlLCB0aGluZ3MgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIGFuZCBjb2RlIHRoYXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBJdCBnaXZlcyBleGFtcGxlcyBsaWtlIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYC5cblxuTm93LCB0aGUgc3BlY2lmaWMgdGhpbmcgSSdtIGxvb2tpbmcgYXQsIHRoZSBSVEw4NzIzQlMsIGlzIGFuIFNESU8gV2lGaSBjYXJkLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3RhbmRhcmQgUUVNVSBvciBldmVuIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb2ZmZXIgYW55IFNESU8gZW11bGF0aW9uPyBObywgYG1hYzgwMjExX2h3c2ltYCBpcyBzcGVjaWZpY2FsbHkgZm9yIGVtdWxhdGluZyBtYWM4MDIxMSBoYXJkd2FyZSwgbm90IFNESU8uIEFuZCBJJ20gcHJldHR5IHN1cmUgc3RhbmRhcmQgUUVNVSBkb2Vzbid0IGRvIFNESU8gZWl0aGVyLiBTbyB0aGF0IGNvbmZpcm1zIHRoYXQgU0RJTyBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQsIGFuZCBJIGNhbm5vdCB1c2UgUUVNVSB0byBwcm9iZSBSVEw4NzIzQlMuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLiBNYXliZSwganVzdCBtYXliZSwgdGhpcyBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIGFuIGFsdGVybmF0ZSBwYXRoLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBiYWNrZG9vciB0byB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc4MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDowMy43MTU4NzM0OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NjM0NDM0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTE9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1Mi17XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDUzOlxcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2cnRsODcyM2JzX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDowNC4wMDIyMjMyMjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NDMwNzc5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlcidzIFJlYWNoYWJpbGl0eSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQncyB1c2luZyBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgZGVzaWduZWQgdG8gd29yayB3aXRoIFNESU8gZGV2aWNlcywgd2hpY2ggbWFrZXMgc2Vuc2UuIFRoZSBkcml2ZXIgYmluZHMgdG8gYW4gU0RJTyBkZXZpY2UsIG5hdHVyYWxseS4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgKndpdGhvdXQqIGFuIGFjdHVhbCBTRElPIGRldmljZSBwcmVzZW50LCB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBiZSBpbnZva2VkLiBBbmQgdGhhdOKAmXMgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uXG5cbkdpdmVuIHRoZSBjb250ZXh0LCBJIGtub3cgdGhhdCBRRU1VLCBhcyBpdCBzdGFuZHMsIGRvZXNuJ3QgZW11bGF0ZSB0aGUgUlRMODcyM0JTIFNESU8gZGV2aWNlLiBUaGlzIGltcGxpZXMgdGhhdCB0aGUgcHJvYmUgZnVuY3Rpb24sIGFuZCBjb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgZHJpdmVyLCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgUUVNVSBzZXR1cC4gSXQgYWxzbyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgYW55IGJ1ZyB0aGF0IG1heSBsaWUgd2l0aGluIHRoZSBjb2RlLiBUaGUgc2FtZSB3b3VsZCBiZSB0cnVlIGZvciBjbG91ZCBlbnZpcm9ubWVudHMsIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCBpcyBhbHNvIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvLCB0aGUgY2hhbmNlcyBvZiBleHBsb3JpbmcgdGhlIHRhcmdldCBjb2RlIGluIHRoZXNlIGVudmlyb25tZW50cyBhcmUgdmVyeSBzbGltLlxuXG5IbW0sIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBtYWtlcyBtZSB3b25kZXI6IERvZXMgdGhlIGtlcm5lbCwgZXNwZWNpYWxseSBmb3IgZnV6emluZyBwdXJwb3NlcywgaW5jb3Jwb3JhdGUgYW55IFNESU8gZHVtbXkgZHJpdmVyIG9yIHNvbWUga2luZCBvZiB3b3JrYXJvdW5kPyBNYXliZSBzb21ldGhpbmcgc3l6a2FsbGVyIG1pZ2h0IGJlIHVzaW5nIHRvIGluamVjdCBTRElPIG9wZXJhdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgaXMgYW4gU0RJTyBpbmplY3Rpb24gbWVjaGFuaXNtIHByZXNlbnQgaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIGJ5cGFzcyB0aGlzIHJlc3RyaWN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VhcmNoIGZvciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NjYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MDguOTk2NTM0MTQ1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI5ODE4MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNTAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU9Nz1tbWNfY29yZS15XFx0XFx0XFx0Oj0gY29yZS5vIGJ1cy5vIGhvc3QubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS04LVxcdFxcdFxcdFxcdCAgIG1tYy5vIG1tY19vcHMubyBzZC5vIHNkX29wcy5vIFxcXFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjk6XFx0XFx0XFx0XFx0ICAgc2Rpby5vIHNkaW9fb3BzLm8gc2Rpb19idXMubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToxMDpcXHRcXHRcXHRcXHQgICBzZGlvX2Npcy5vIHNkaW9faW8ubyBzZGlvX2lycS5vIHNkX3VoczIub1xcXFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlLTExLVxcdFxcdFxcdFxcdCAgIHNsb3QtZ3Bpby5vIHJlZ3VsYXRvci5vXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19NTUNfVEVTVClcXHRcXHQrPSBtbWNfdGVzdC5vXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfU0RJT19VQVJUKVxcdFxcdCs9IHNkaW9fdWFydC5vXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0yMS1tbWNfY29yZS0kKENPTkZJR19NTUNfQ1JZUFRPKVxcdCs9IGNyeXB0by5vXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2LSNpbmNsdWRlIFxcXCJob3N0LmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYzoyNzojaW5jbHVkZSBcXFwic2Rpb19jaXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI4LSNpbmNsdWRlIFxcXCJidXMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9NTk9bW1jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTg4LVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6ODk6XFx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkgfHwgbW1jX2NhcmRfc2RfY29tYm8oY2FyZCkpIHtcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTkwLVxcdFxcdHJldHZhbCA9IGFkZF91ZXZlbnRfdmFyKGVudiwgXFxcIlNESU9fSUQ9JTA0WDolMDRYXFxcIixcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEwLVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MTExOlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYz0yNjQ9c3RhdGljIHZvaWQgbW1jX3JlbGVhc2VfY2FyZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2Ny1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjI2ODpcXHRzZGlvX2ZyZWVfY29tbW9uX2NpcyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oLTQ1LS8qXFxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmg6NDY6ICogVGhlIHdvcmxkIGlzIG5vdCBwZXJmZWN0IGFuZCBzdXBwbGllcyB1cyB3aXRoIGJyb2tlbiBtbWMvc2RpbyBkZXZpY2VzLlxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oLTQ3LSAqIEZvciBhdCBsZWFzdCBzb21lIG9mIHRoZXNlIGJ1Z3Mgd2UgbmVlZCBhIHdvcmstYXJvdW5kLlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDEtI2luY2x1ZGUgXFxcImhvc3QuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0MjojaW5jbHVkZSBcXFwic2Rpb19idXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00My0jaW5jbHVkZSBcXFwicHdyc2VxLmhcXFwiXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00Ni0jaW5jbHVkZSBcXFwic2Rfb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDc6I2luY2x1ZGUgXFxcInNkaW9fb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMTY9c3RhdGljIHZvaWQgX19tbWNfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjI4LVxcdC8qXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjI5OlxcdCAqIEZvciBzZGlvIHJ3IGNvbW1hbmRzIHdlIG11c3Qgd2FpdCBmb3IgY2FyZCBidXN5IG90aGVyd2lzZSBzb21lXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMwOlxcdCAqIHNkaW8gZGV2aWNlcyB3b24ndCB3b3JrIHByb3Blcmx5LlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMS1cXHQgKiBBbmQgYnlwYXNzIEkvTyBhYm9ydCwgcmVzZXQgYW5kIGJ1cyBzdXNwZW5kIG9wZXJhdGlvbnMuXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMyLVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMzpcXHRpZiAoc2Rpb19pc19pb19idXN5KG1ycS1cXHUwMDNlY21kLVxcdTAwM2VvcGNvZGUsIG1ycS1cXHUwMDNlY21kLVxcdTAwM2VhcmcpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjM0LVxcdCAgICBob3N0LVxcdTAwM2VvcHMtXFx1MDAzZWNhcmRfYnVzeSkge1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9NjYwPXZvaWQgbW1jX3NldF9kYXRhX3RpbWVvdXQoc3RydWN0IG1tY19kYXRhICpkYXRhLCBjb25zdCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy02NjYtXFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NjY3OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY4LVxcdFxcdGRhdGEtXFx1MDAzZXRpbWVvdXRfbnMgPSAxMDAwMDAwMDAwO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjA5OT1zdGF0aWMgaW50IG1tY19yZXNjYW5fdHJ5X2ZyZXEoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1bnNpZ25lZCBmcmVxKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNC1cXHQvKlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMTU6XFx0ICogc2Rpb19yZXNldCBzZW5kcyBDTUQ1MiB0byByZXNldCBjYXJkLiAgU2luY2Ugd2UgZG8gbm90IGtub3dcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTE2LVxcdCAqIGlmIHRoZSBjYXJkIGlzIGJlaW5nIHJlLWluaXRpYWxpemVkLCBqdXN0IHNlbmQgaXQuICBDTUQ1Mlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMC1cXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX05PX1NESU8pKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMjE6XFx0XFx0c2Rpb19yZXNldChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIyLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzMy1cXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX05PX1NESU8pKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMzQ6XFx0XFx0aWYgKCFtbWNfYXR0YWNoX3NkaW8oaG9zdCkpXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzNS1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIzOTM9c3RhdGljIGludCBfX2luaXQgbW1jX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDQtXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQwNTpcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2J1cygpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTI0MTg9c3RhdGljIHZvaWQgX19leGl0IG1tY19leGl0KHZvaWQpXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQxOS17XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQyMDpcXHRzZGlvX3VucmVnaXN0ZXJfYnVzKCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQyMS1cXHRtbWNfdW5yZWdpc3Rlcl9ob3N0X2NsYXNzKCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaD04Nz1pbnQgbW1jX2F0dGFjaF9zZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oOjg4OmludCBtbWNfYXR0YWNoX3NkaW8oc3RydWN0IG1tY19ob3N0ICpob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaC04OS1pbnQgbW1jX2F0dGFjaF9zZF91aHMyKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0yOS0jaW5jbHVkZSBcXFwicHdyc2VxLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzA6I2luY2x1ZGUgXFxcInNkaW9fb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzEtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz0yNjU9aW50IG1tY19vZl9wYXJzZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjctXFx0XFx0aG9zdC1cXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX0hXX1JFU0VUO1xcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM2ODpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJjYXAtc2Rpby1pcnFcXFwiKSlcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjktXFx0XFx0aG9zdC1cXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX1NESU9fSVJRO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzkzLVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMyIHw9IE1NQ19DQVAyX0hTNDAwX0VTO1xcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM5NDpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJuby1zZGlvXFxcIikpXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzk1LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMyIHw9IE1NQ19DQVAyX05PX1NESU87XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz01MTI9c3RydWN0IG1tY19ob3N0ICptbWNfYWxsb2NfaG9zdChpbnQgZXh0cmEsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTU1OC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2aG9zdC1cXHUwMDNlZGV0ZWN0LCBtbWNfcmVzY2FuKTtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo1NTk6XFx0SU5JVF9XT1JLKFxcdTAwMjZob3N0LVxcdTAwM2VzZGlvX2lycV93b3JrLCBzZGlvX2lycV93b3JrKTtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NjAtXFx0dGltZXJfc2V0dXAoXFx1MDAyNmhvc3QtXFx1MDAzZXJldHVuZV90aW1lciwgbW1jX3JldHVuZV90aW1lciwgMCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz02MTA9c3RhdGljIGludCBtbWNfdmFsaWRhdGVfaG9zdF9jYXBzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTYxNC1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTU6XFx0aWYgKGNhcHMgXFx1MDAyNiBNTUNfQ0FQX1NESU9fSVJRIFxcdTAwMjZcXHUwMDI2ICFob3N0LVxcdTAwM2VvcHMtXFx1MDAzZWVuYWJsZV9zZGlvX2lycSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjYxNjpcXHRcXHRkZXZfd2FybihkZXYsIFxcXCJtaXNzaW5nIC1cXHUwMDNlZW5hYmxlX3NkaW9faXJxKCkgb3BzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvX2lkcy5oXFx1MDAzZVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTUtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oPTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBtbWNfZXh0X2NzZF9maXh1cHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTg4LVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTkwLVxcdFNESU9fRklYVVAoU0RJT19WRU5ET1JfSURfVElfV0wxMjUxLCBTRElPX0RFVklDRV9JRF9USV9XTDEyNTEsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTIxNi1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjIxNzpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2NhcmRfaW5pdF9tZXRob2RzW10gPSB7XFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTgtXFx0U0RJT19GSVhVUF9DT01QQVRJQkxFKFxcXCJ0aSx3bDEyNTFcXFwiLCB3bDEyNTFfcXVpcmssIDApLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc0OD1NTUNfREVWX0FUVFIocmV2aXNpb24sIFxcXCIldS4ldVxcXFxuXFxcIiwgY2FyZC1cXHUwMDNlbWFqb3JfcmV2LCBjYXJkLVxcdTAwM2VtaW5vcl9yZXYpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NDktXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc1MDojZGVmaW5lIHNkaW9faW5mb19hdHRyKG51bSlcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc1MS1zdGF0aWMgc3NpemVfdCBpbmZvIyNudW0jI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzYxPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc2Mi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzYzOnNkaW9faW5mb19hdHRyKDEpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjQ6c2Rpb19pbmZvX2F0dHIoMik7XFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NTpzZGlvX2luZm9fYXR0cigzKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY2OnNkaW9faW5mb19hdHRyKDQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjctXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yLS8qXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzogKiAgbGludXgvZHJpdmVycy9tbWMvc2Rpby5jXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9tbWMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW8uaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW9fZnVuYy5oXFx1MDAzZVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xOC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI0LSNpbmNsdWRlIFxcXCJzZC5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI1OiNpbmNsdWRlIFxcXCJzZGlvX2J1cy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2LSNpbmNsdWRlIFxcXCJtbWNfb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjctI2luY2x1ZGUgXFxcInNkX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI4OiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5OiNpbmNsdWRlIFxcXCJzZGlvX2Npcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTMwLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9MzU9TU1DX0RFVl9BVFRSKHJjYSwgXFxcIjB4JTA0eFxcXFxuXFxcIiwgY2FyZC1cXHUwMDNlcmNhKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzojZGVmaW5lIHNkaW9faW5mb19hdHRyKG51bSlcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzgtc3RhdGljIHNzaXplX3QgaW5mbyMjbnVtIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9NDg9c3RhdGljIERFVklDRV9BVFRSX1JPKGluZm8jI251bSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00OS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDpzZGlvX2luZm9fYXR0cigxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTpzZGlvX2luZm9fYXR0cigyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MjpzZGlvX2luZm9fYXR0cigzKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MzpzZGlvX2luZm9fYXR0cig0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01NC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1NTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqc2Rpb19zdGRfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01Ni1cXHRcXHUwMDI2ZGV2X2F0dHJfdmVuZG9yLmF0dHIsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02Ni19O1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY3OkFUVFJJQlVURV9HUk9VUFMoc2Rpb19zdGQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY4LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgc2Rpb190eXBlID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcwOlxcdC5ncm91cHMgPSBzZGlvX3N0ZF9ncm91cHMsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzEtfTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03Mi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MzpzdGF0aWMgaW50IHNkaW9fcmVhZF9mYnIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NC17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAzOnN0YXRpYyBpbnQgc2Rpb19pbml0X2Z1bmMoc3RydWN0IG1tY19jYXJkICpjYXJkLCB1bnNpZ25lZCBpbnQgZm4pXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUtXFx0aW50IHJldDtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDY6XFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDctXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExOlxcdGZ1bmMgPSBzZGlvX2FsbG9jX2Z1bmMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyLVxcdGlmIChJU19FUlIoZnVuYykpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTctXFx0aWYgKCEoY2FyZC1cXHUwMDNlcXVpcmtzIFxcdTAwMjYgTU1DX1FVSVJLX05PTlNURF9TRElPKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODpcXHRcXHRyZXQgPSBzZGlvX3JlYWRfZmJyKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEyMjpcXHRcXHRyZXQgPSBzZGlvX3JlYWRfZnVuY19jaXMoZnVuYyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzAtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTMxOlxcdGNhcmQtXFx1MDAzZXNkaW9fZnVuY1tmbiAtIDFdID0gZnVuYztcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzItXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzktXFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQwOlxcdHNkaW9fcmVtb3ZlX2Z1bmMoZnVuYyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQxLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQ0OnN0YXRpYyBpbnQgc2Rpb19yZWFkX2NjY3Ioc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgb2NyKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0NS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY0OlxcdGNhcmQtXFx1MDAzZWNjY3Iuc2Rpb192c24gPSAoZGF0YSBcXHUwMDI2IDB4ZjApIFxcdTAwM2VcXHUwMDNlIDQ7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTY1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI2MTpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX3dpZGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2Mi17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTMtICogb2YgdGhlIGNhcmQuIFRoaXMgbWF5IGJlIHJlcXVpcmVkIG9uIGNlcnRhaW4gc2V0dXBzIG9mIGJvYXJkcyxcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTQ6ICogY29udHJvbGxlcnMgYW5kIGVtYmVkZGVkIHNkaW8gZGV2aWNlIHdoaWNoIGRvIG5vdCBuZWVkIHRoZSBjYXJkJ3NcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTUtICogcHVsbC11cC4gQXMgYSByZXN1bHQsIGNhcmQgZGV0ZWN0aW9uIGlzIGRpc2FibGVkIGFuZCBwb3dlciBpcyBzYXZlZC5cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTYtICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk3OnN0YXRpYyBpbnQgc2Rpb19kaXNhYmxlX2NkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjMxODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV93aWRlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzQ3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM0ODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzQ5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1MS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNTI6XFx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzUzLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY1LW91dDpcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNjY6XFx0cmV0dXJuIHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2Ny19XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjktXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzcwOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3MS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc0OlxcdGVyciA9IHNkaW9fZW5hYmxlX3dpZGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc1LVxcdGlmIChlcnIgXFx1MDAzYz0gMClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzYtXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzc6XFx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzgyLVxcdFxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozODM6XFx0XFx0XFx0c2Rpb19kaXNhYmxlX3dpZGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzg0LVxcdFxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTYtICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzk3OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dpdGNoX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgaW50IGVuYWJsZSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDI2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQyNzpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00Mjgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDMwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMTpcXHRyZXQgPSBtbWNfc2Rpb19zd2l0Y2hfaHMoY2FyZCwgdHJ1ZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMyOlxcdGlmIChyZXQgXFx1MDAzYz0gMCB8fCBtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMy1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM2LVxcdGlmIChyZXQgXFx1MDAzYz0gMClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mzc6XFx0XFx0bW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIGZhbHNlKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDQyOnN0YXRpYyB1bnNpZ25lZCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDMte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQ2NjpzdGF0aWMgdW5zaWduZWQgY2hhciBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoaW50IGhvc3Rfc3RyZW5ndGgpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY3LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ4MS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0ODI6c3RhdGljIHZvaWQgc2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MDMtXFx0XFx0Y2FyZF9zdHJlbmd0aCBcXHUwMDI2PSB+KFNESU9fRFJJVkVfRFRTeF9NQVNLXFx1MDAzY1xcdTAwM2NTRElPX0RSSVZFX0RUU3hfU0hJRlQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUwNDpcXHRcXHRjYXJkX3N0cmVuZ3RoIHw9IGhvc3RfZHJpdmVfdG9fc2Rpb19kcml2ZShkcml2ZV9zdHJlbmd0aCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTA1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTE4LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOTpzdGF0aWMgaW50IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MjAte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTkyLSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjU5MzpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5NC17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDAtXFx0LyogU3dpdGNoIHRvIHdpZGVyIGJ1cyAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwMTpcXHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNS1cXHQvKiBTZXQgdGhlIGRyaXZlciBzdHJlbmd0aCBmb3IgdGhlIGNhcmQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDY6XFx0c2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwOC1cXHQvKiBTZXQgYnVzIHNwZWVkIG1vZGUgb2YgdGhlIGNhcmQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDk6XFx0ZXJyID0gc2Rpb19zZXRfYnVzX3NwZWVkX21vZGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjEwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MjQtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjI1OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX2luaXQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYyNi1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzMi1cXHQgKiBSZXNldCB0aGUgY2FyZCBieSBwZXJmb3JtaW5nIHRoZSBzYW1lIHN0ZXBzIHRoYXQgYXJlIHRha2VuIGJ5XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjMzOlxcdCAqIG1tY19yZXNjYW5fdHJ5X2ZyZXEoKSBhbmQgbW1jX2F0dGFjaF9zZGlvKCkgZHVyaW5nIGEgXFxcIm5vcm1hbFxcXCIgcHJvYmUuXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM0LVxcdCAqXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjM1OlxcdCAqIHNkaW9fcmVzZXQoKSBpcyB0ZWNobmljYWxseSBub3QgbmVlZGVkLiBIYXZpbmcganVzdCBwb3dlcmVkIHVwIHRoZVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNi1cXHQgKiBoYXJkd2FyZSwgaXQgc2hvdWxkIGFscmVhZHkgYmUgaW4gcmVzZXQgc3RhdGUuIEhvd2V2ZXIsIHNvbWVcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0Ny1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NDg6XFx0c2Rpb19yZXNldChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDktXFx0bW1jX2dvX2lkbGUoaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NTktICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjYwOnN0YXRpYyBpbnQgbW1jX3NkaW9faW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NjEtXFx0XFx0XFx0ICAgICAgc3RydWN0IG1tY19jYXJkICpvbGRjYXJkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjk5LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcwMDpcXHRjYXJkID0gbW1jX2FsbG9jX2NhcmQoaG9zdCwgXFx1MDAyNnNkaW9fdHlwZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzAxLVxcdGlmIChJU19FUlIoY2FyZCkpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTUtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzE2OlxcdFxcdGlmIChvbGRjYXJkIFxcdTAwMjZcXHUwMDI2ICFtbWNfY2FyZF9zZGlvKG9sZGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE3LVxcdFxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjYtXFx0XFx0aG9zdC1cXHUwMDNlb3BzLVxcdTAwM2Vpbml0X2NhcmQoaG9zdCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzI3OlxcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19jYXJkX2luaXRfbWV0aG9kcyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzM4LVxcdCAqIGZhaWxzIHRvIGNoZWNrIHJvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCwgIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM5OlxcdCAqIHRyeSB0byBpbml0IHVocyBjYXJkLiBzZGlvX3JlYWRfY2NjciB3aWxsIHRha2Ugb3ZlciB0aGlzIHRhc2tcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDAtXFx0ICogdG8gbWFrZSBzdXJlIHdoaWNoIHNwZWVkIG1vZGUgc2hvdWxkIHdvcmsuXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDQtXFx0XFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzQ1OlxcdFxcdFxcdG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIG9jcl9jYXJkLCBjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDYtXFx0XFx0XFx0cmV0cmllcy0tO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE0LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNTpcXHRlcnIgPSBzZGlvX3JlYWRfY2NjcihjYXJkLCBvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNi1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODE3OlxcdFxcdG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIG9jcl9jYXJkLCBjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTgtXFx0XFx0aWYgKG9jciBcXHUwMDI2IFI0XzE4Vl9QUkVTRU5UKSB7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MjgtXFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODI5OlxcdGVyciA9IHNkaW9fcmVhZF9jb21tb25fY2lzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODQzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg0NDpcXHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fZml4dXBfbWV0aG9kcyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODQ1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODYxLVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2MjpcXHRlcnIgPSBzZGlvX2Rpc2FibGVfY2QoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjgtXFx0aWYgKChvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkgXFx1MDAyNlxcdTAwMjYgY2FyZC1cXHUwMDNlc3dfY2Fwcy5zZDNfYnVzX21vZGUpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4Njk6XFx0XFx0ZXJyID0gbW1jX3NkaW9faW5pdF91aHNfY2FyZChjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzAtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3NS1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NzY6XFx0XFx0ZXJyID0gc2Rpb19lbmFibGVfaHMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODc3LVxcdFxcdGlmIChlcnIgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg4NTpcXHRcXHRtbWNfc2V0X2Nsb2NrKGhvc3QsIG1tY19zZGlvX2dldF9tYXhfY2xvY2soY2FyZCkpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4Ni1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4OS1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4OTA6XFx0XFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODkxLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE0OnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVpbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxNS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE4OlxcdHJldCA9IG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jciwgTlVMTCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTIyOlxcdHJldHVybiBtbWNfc2Rpb19pbml0X2NhcmQoaG9zdCwgaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlb2NyLCBob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjMtfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTI3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19yZW1vdmUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMyOlxcdGZvciAoaSA9IDA7aSBcXHUwMDNjIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZXNkaW9fZnVuY3M7aSsrKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMzOlxcdFxcdGlmIChob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV0pIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzQ6XFx0XFx0XFx0c2Rpb19yZW1vdmVfZnVuYyhob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV0pO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzNTpcXHRcXHRcXHRob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV0gPSBOVUxMO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkzNi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDUtICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fYWxpdmUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk0Ny17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NTctICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTU4OnN0YXRpYyB2b2lkIG1tY19zZGlvX2RldGVjdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk5My1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTk0OlxcdFxcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTUtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMDg6c3RhdGljIGludCBtbWNfc2Rpb19wcmVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDExLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZXNkaW9fZnVuY3M7IGkrKykge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTM6XFx0XFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYyA9IGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZXNkaW9fZnVuY1tpXTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDE0OlxcdFxcdGlmIChmdW5jIFxcdTAwMjZcXHUwMDI2IHNkaW9fZnVuY19wcmVzZW50KGZ1bmMpIFxcdTAwMjZcXHUwMDI2IGZ1bmMtXFx1MDAzZWRldi5kcml2ZXIpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDE1LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbW9wcyA9IGZ1bmMtXFx1MDAzZWRldi5kcml2ZXItXFx1MDAzZXBtO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAzMi1cXHQvKiBSZW1vdmUgdGhlIFNESU8gY2FyZCBhbmQgbGV0IGl0IGJlIHJlLWRldGVjdGVkIGxhdGVyIG9uLiAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzM6XFx0bW1jX3NkaW9fcmVtb3ZlKGhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMzQtXFx0bW1jX2NsYWltX2hvc3QoaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ1LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDY6c3RhdGljIGludCBtbWNfc2Rpb19zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ3LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ4OlxcdFdBUk5fT04oaG9zdC1cXHUwMDNlc2Rpb19pcnFzIFxcdTAwMjZcXHUwMDI2ICFtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ5LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1MS1cXHRtbWNfY2FyZF9zZXRfc3VzcGVuZGVkKGhvc3QtXFx1MDAzZWNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTI6XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2aG9zdC1cXHUwMDNlc2Rpb19pcnFfd29yayk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1My1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTUtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA1NjpcXHRpZiAobW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSBcXHUwMDI2XFx1MDAyNiBtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTc6XFx0XFx0c2Rpb19kaXNhYmxlXzRiaXRfYnVzKGhvc3QtXFx1MDAzZWNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDcwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNzE6c3RhdGljIGludCBtbWNfc2Rpb19yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNzIte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5NS1cXHRcXHR9XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NjpcXHRcXHRlcnIgPSBtbWNfc2Rpb19yZWluaXRfY2FyZChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDk3OlxcdH0gZWxzZSBpZiAobW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTgtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDMtXFx0XFx0bW1jX3JldHVuZV9ob2xkX25vdyhob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTA0OlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGhvc3QtXFx1MDAzZWNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDUtXFx0XFx0bW1jX3JldHVuZV9yZWxlYXNlKGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExMy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE0OlxcdGlmIChob3N0LVxcdTAwM2VzZGlvX2lycXMpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE1LVxcdFxcdGlmICghKGhvc3QtXFx1MDAzZWNhcHMyIFxcdTAwMjYgTU1DX0NBUDJfU0RJT19JUlFfTk9USFJFQUQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMTY6XFx0XFx0XFx0d2FrZV91cF9wcm9jZXNzKGhvc3QtXFx1MDAzZXNkaW9faXJxX3RocmVhZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNy1cXHRcXHRlbHNlIGlmIChob3N0LVxcdTAwM2VjYXBzIFxcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE4OlxcdFxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmhvc3QtXFx1MDAzZXNkaW9faXJxX3dvcmspO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTktXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyNy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTI4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTI5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMzctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEzODpzdGF0aWMgaW50IG1tY19zZGlvX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNDQtXFx0bW1jX3Bvd2VyX3VwKGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE0NTpcXHRyZXQgPSBtbWNfc2Rpb19yZWluaXRfY2FyZChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ2LVxcdG1tY19yZWxlYXNlX2hvc3QoaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTU2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNTc6c3RhdGljIGludCBtbWNfc2Rpb19od19yZXNldChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1OC17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY1LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNjY6XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzX3Byb2JlZCkgXFx1MDAzZSAxKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2Ny1cXHRcXHRpZiAobW1jX2NhcmRfcmVtb3ZlZChjYXJkKSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNzktXFx0bW1jX3Bvd2VyX2N5Y2xlKGhvc3QsIGNhcmQtXFx1MDAzZW9jcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MDpcXHRyZXR1cm4gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4MS19XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4Mi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgzOnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODQte1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODUtXFx0bW1jX3NldF9jbG9jayhob3N0LCBob3N0LVxcdTAwM2VmX2luaXQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODY6XFx0c2Rpb19yZXNldChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg3LVxcdG1tY19nb19pZGxlKGhvc3QpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjA5LjA5OTUyMDg5OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzY2NzgwMDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gRW11bGF0aW9uIFJvYWRibG9jayoqXG5cbk9rYXksIHNvIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9gIGNvZGUuLi4gaXQncyBsb29raW5nIGxpa2UgYSBkZWFkIGVuZCBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIFNESU8gZGV2aWNlcywgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGVpdGhlci4gVGhhdCBtZWFucyB0aG9zZSBzcGVjaWZpYyBjb2RlIHBhdGhzIGFyZSBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBHQ0Ugb3IgUUVNVSBzZXR1cHMuIEJ1dCwgaG9sZCBvbiBhIHNlY29uZCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBhIGNsZXZlciB3b3JrYXJvdW5kPyBJcyB0aGVyZSAqYW55KiB2aXJ0dWFsIFNESU8gaG9zdCBjb250cm9sbGVyIG91dCB0aGVyZSB0aGF0IEknbSBub3QgdGhpbmtpbmcgb2Y/IFRpbWUgdG8gd2lkZW4gdGhlIHNlYXJjaC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9tbWMvaG9zdC9gIGRpcmVjdG9yeSBhbmQgc2VlIGlmIGFueXRoaW5nIHBvcHMgdXAuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzU0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjEzLjQ2NjMwNDYyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYwNDY4NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnViMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY0MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnPTkyMD1jb25maWcgTU1DX1ZVQjMwMFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0NC1cXHQgIFRvIGNvbXBpbGUgdGhpcyBtbWMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBhcyBhIG1vZHVsZSxcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTQ1OlxcdCAgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB2dWIzMDAuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0Ni1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX01NQ19KWjQ3NDApXFx0Kz0gano0NzQwX21tYy5vXFxuZHJpdmVycy9tbWMvaG9zdC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTU1DX1ZVQjMwMClcXHQrPSB2dWIzMDAub1xcbmRyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGUtNjQtb2JqLSQoQ09ORklHX01NQ19VU0hDKVxcdFxcdCs9IHVzaGMub1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz0yNjA9TU9EVUxFX1BBUk1fREVTQyhmaXJtd2FyZV9yb21fd2FpdF9zdGF0ZXMsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI2NS0jZGVmaW5lIFZVQjMwMF9QUk9EVUNUX0lEXFx0MHgwMTJDXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyNjY6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHZ1YjMwMF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjY3LVxcdHtVU0JfREVWSUNFKEVMQU5fVkVORE9SX0lELCBWVUIzMDBfUFJPRFVDVF9JRCl9LFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yNzAtfTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgdnViMzAwX3RhYmxlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI3Mi1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9Mjg2PXN0cnVjdCBzZGlvX3JlZ2lzdGVyIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjk1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mjk2OnN0cnVjdCB2dWIzMDBfbW1jX2hvc3Qge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjk3LVxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2O1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNTQtXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNTU6I2RlZmluZSBrcmVmX3RvX3Z1YjMwMF9tbWNfaG9zdChkKSBjb250YWluZXJfb2YoZCwgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwga3JlZilcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM1Ni0jZGVmaW5lIFNFVF9UUkFOU0ZFUl9QU0VVRE9DT0RFXFx0XFx0MjFcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzY4LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MzY5OnN0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNzAte1xcdFxcdFxcdFxcdC8qIGtyZWYgY2FsbGJhY2sgLSBzb2Z0aXJxICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzE6XFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzI6XFx0c3RydWN0IG1tY19ob3N0ICptbWMgPSB2dWIzMDAtXFx1MDAzZW1tYztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM3My1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3NDpcXHR1c2JfZnJlZV91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX291dF91cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc1OlxcdHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3NjpcXHR1c2JfZnJlZV91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc3OlxcdHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiID0gTlVMTDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3ODpcXHR1c2JfcHV0X2Rldih2dWIzMDAtXFx1MDAzZXVkZXYpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzc5LVxcdG1tY19mcmVlX2hvc3QobW1jKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM4MC1cXHQvKlxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MzgxOlxcdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzgyLVxcdCAqIHdoaWNoIGlzIGNvbnRhaW5lZCBhdCB0aGUgZW5kIG9mIHN0cnVjdCBtbWNcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzg2OnN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9jbW5kX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg3LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4ODpcXHRrcmVmX2dldChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4OTpcXHRpZiAocXVldWVfd29yayhjbW5kd29ya3F1ZXVlLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VjbW5kd29yaykpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM5MC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDEtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDI6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDMtXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDUtXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDY6c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX3BvbGxfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsIGludCBkZWxheSlcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwNy17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDg6XFx0a3JlZl9nZXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDk6XFx0aWYgKHF1ZXVlX2RlbGF5ZWRfd29yayhwb2xsd29ya3F1ZXVlLCBcXHUwMDI2dnViMzAwLVxcdTAwM2Vwb2xsd29yaywgZGVsYXkpKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MTAtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDIxLVxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDIyOlxcdFxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDIzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDI1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDI2OnN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9kZWFkX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDI3LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyODpcXHRrcmVmX2dldChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyOTpcXHRpZiAocXVldWVfd29yayhkZWFkd29ya3F1ZXVlLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VkZWFkd29yaykpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQzMC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDEtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NDI6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDMtXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00NDY9c3RhdGljIHZvaWQgaXJxcG9sbF9yZXNfY29tcGxldGVkKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0Ny17XFx0XFx0XFx0XFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ0ODpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSAoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqKXVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0OS1cXHRpZiAodXJiLVxcdTAwM2VzdGF0dXMpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NTA6XFx0XFx0dnViMzAwLVxcdTAwM2V1c2JfdHJhbnNwb3J0X2ZhaWwgPSB1cmItXFx1MDAzZXN0YXR1cztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ1MTpcXHRjb21wbGV0ZShcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ1Mi19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQ1ND1zdGF0aWMgdm9pZCBpcnFwb2xsX291dF9jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDU1LXtcXHRcXHRcXHRcXHQvKiB1cmIgY29tcGxldGlvbiBoYW5kbGVyIC0gaGFyZGlycSAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU2OlxcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICopdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDU3LVxcdGlmICh1cmItXFx1MDAzZXN0YXR1cykge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU4OlxcdFxcdHZ1YjMwMC1cXHUwMDNldXNiX3RyYW5zcG9ydF9mYWlsID0gdXJiLVxcdTAwM2VzdGF0dXM7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NTk6XFx0XFx0Y29tcGxldGUoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlaXJxcG9sbF9jb21wbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NjAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NjMtXFx0XFx0dW5zaWduZWQgaW50IHBpcGUgPVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDY0OlxcdFxcdFxcdHVzYl9yY3ZidWxrcGlwZSh2dWIzMDAtXFx1MDAzZXVkZXYsIHZ1YjMwMC1cXHUwMDNlY21uZF9yZXNfZXApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDY1OlxcdFxcdHVzYl9maWxsX2J1bGtfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiLCB2dWIzMDAtXFx1MDAzZXVkZXYsIHBpcGUsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NjY6XFx0XFx0XFx0XFx0ICBcXHUwMDI2dnViMzAwLVxcdTAwM2VyZXNwLCBzaXplb2YodnViMzAwLVxcdTAwM2VyZXNwKSxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NzpcXHRcXHRcXHRcXHQgIGlycXBvbGxfcmVzX2NvbXBsZXRlZCwgdnViMzAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2ODpcXHRcXHR2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Njk6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmIsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDcwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3MTpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHJldDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3MjpcXHRcXHRcXHRjb21wbGV0ZShcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ3My1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ3Ny1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3ODpzdGF0aWMgdm9pZCBzZW5kX2lycXBvbGwoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDc5LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4MDpcXHQvKiBjbWRfbXV0ZXggaXMgaGVsZCBieSB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00ODEtXFx0aW50IHJldHZhbDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ4Mi1cXHRpbnQgdGltZW91dCA9IDB4RkZGRiBcXHUwMDI2ICgweDAwMDFGRkZGIC0gZmlybXdhcmVfaXJxcG9sbF90aW1lb3V0KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4MzpcXHR2dWIzMDAtXFx1MDAzZWNtbmQucG9sbC5oZWFkZXJfc2l6ZSA9IDIyO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg0OlxcdHZ1YjMwMC1cXHUwMDNlY21uZC5wb2xsLmhlYWRlcl90eXBlID0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NTpcXHR2dWIzMDAtXFx1MDAzZWNtbmQucG9sbC5wb3J0X251bWJlciA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODY6XFx0dnViMzAwLVxcdTAwM2VjbW5kLnBvbGwuY29tbWFuZF90eXBlID0gMjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NzpcXHR2dWIzMDAtXFx1MDAzZWNtbmQucG9sbC5wb2xsX3RpbWVvdXRfbHNiID0gMHhGRiBcXHUwMDI2ICh1bnNpZ25lZCl0aW1lb3V0O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg4OlxcdHZ1YjMwMC1cXHUwMDNlY21uZC5wb2xsLnBvbGxfdGltZW91dF9tc2IgPSAweEZGIFxcdTAwMjYgKHVuc2lnbmVkKSh0aW1lb3V0IFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg5OlxcdHVzYl9maWxsX2J1bGtfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9vdXRfdXJiLCB2dWIzMDAtXFx1MDAzZXVkZXYsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTA6XFx0XFx0XFx0ICB1c2Jfc25kYnVsa3BpcGUodnViMzAwLVxcdTAwM2V1ZGV2LCB2dWIzMDAtXFx1MDAzZWNtbmRfb3V0X2VwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkxOlxcdFxcdFxcdCAgLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VjbW5kLCBzaXplb2YodnViMzAwLVxcdTAwM2VjbW5kKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkyOlxcdFxcdFxcdCAgLCBpcnFwb2xsX291dF9jb21wbGV0ZWQsIHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTM6XFx0cmV0dmFsID0gdXNiX3N1Ym1pdF91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX291dF91cmIsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDk0LVxcdGlmICgwIFxcdTAwM2UgcmV0dmFsKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTU6XFx0XFx0dnViMzAwLVxcdTAwM2V1c2JfdHJhbnNwb3J0X2ZhaWwgPSByZXR2YWw7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTY6XFx0XFx0dnViMzAwX3F1ZXVlX3BvbGxfd29yayh2dWIzMDAsIDEpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDk3OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycXBvbGxfY29tcGxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDk4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTAzLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTA0OnN0YXRpYyB2b2lkIG5ld19zeXN0ZW1fcG9ydF9zdGF0dXMoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTA1LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwNjpcXHRpbnQgb2xkX2NhcmRfcHJlc2VudCA9IHZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTA3LVxcdGludCBuZXdfY2FyZF9wcmVzZW50ID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwODpcXHRcXHQoMHgwMDAxIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMucG9ydF9mbGFncykgPyAxIDogMDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwOTpcXHR2dWIzMDAtXFx1MDAzZXJlYWRfb25seSA9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTA6XFx0XFx0KDB4MDAxMCBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzLnBvcnRfZmxhZ3MpID8gMSA6IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTEtXFx0aWYgKG5ld19jYXJkX3ByZXNlbnQgXFx1MDAyNlxcdTAwMjYgIW9sZF9jYXJkX3ByZXNlbnQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUxMjpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2dnViMzAwLVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYsIFxcXCJjYXJkIGp1c3QgaW5zZXJ0ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTEzOlxcdFxcdHZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50ID0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUxNDpcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTUtXFx0XFx0aWYgKGRpc2FibGVfb2ZmbG9hZF9wcm9jZXNzaW5nKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE2OlxcdFxcdFxcdHN0cnNjcHkodnViMzAwLVxcdTAwM2V2dWJfbmFtZSwgXFxcIkVNUFRZIFByb2Nlc3NpbmcgRGlzYWJsZWRcXFwiLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE3OlxcdFxcdFxcdFxcdHNpemVvZih2dWIzMDAtXFx1MDAzZXZ1Yl9uYW1lKSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTgtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE5OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNldnViX25hbWVbMF0gPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTIwOlxcdFxcdG1tY19kZXRlY3RfY2hhbmdlKHZ1YjMwMC1cXHUwMDNlbW1jLCAxKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUyMS1cXHR9IGVsc2UgaWYgKCFuZXdfY2FyZF9wcmVzZW50IFxcdTAwMjZcXHUwMDI2IG9sZF9jYXJkX3ByZXNlbnQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUyMjpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2dnViMzAwLVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYsIFxcXCJjYXJkIGp1c3QgZWplY3RlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjM6XFx0XFx0dnViMzAwLVxcdTAwM2VjYXJkX3ByZXNlbnQgPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTI0OlxcdFxcdG1tY19kZXRlY3RfY2hhbmdlKHZ1YjMwMC1cXHUwMDNlbW1jLCAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUyNS1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MjktXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzA6c3RhdGljIHZvaWQgX19hZGRfb2ZmbG9hZGVkX3JlZ190b19maWZvKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzMS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgb2ZmbG9hZF9yZWdpc3RlcnNfYWNjZXNzXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzMy17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzQ6XFx0dTggciA9IHZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9wb2ludCArIHZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9jb3VudDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUzNTpcXHRtZW1jcHkoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ucmVnW01BWFJFR01BU0sgXFx1MDAyNiByXSwgcmVnaXN0ZXJfYWNjZXNzLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTM2LVxcdCAgICAgICBzaXplb2Yoc3RydWN0IG9mZmxvYWRfcmVnaXN0ZXJzX2FjY2VzcykpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTM3OlxcdHZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9jb3VudCArPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTM4OlxcdHZ1YjMwMC1cXHUwMDNldG90YWxfb2ZmbG9hZF9jb3VudCArPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTM5LX1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU0MC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU0MTpzdGF0aWMgdm9pZCBhZGRfb2ZmbG9hZGVkX3JlZyhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NDItXFx0XFx0XFx0ICAgICAgc3RydWN0IG9mZmxvYWRfcmVnaXN0ZXJzX2FjY2VzcyAqcmVnaXN0ZXJfYWNjZXNzKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NDctXFx0dTggZnVuYyA9ICgoMHg3MCBcXHUwMDI2IHJlZ2lzdGVyX2FjY2Vzcy1cXHUwMDNlY29tbWFuZF9ieXRlWzBdKSBcXHUwMDNlXFx1MDAzZSA0KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU0ODpcXHR1OCByZWdzID0gdnViMzAwLVxcdTAwM2VkeW5hbWljX3JlZ2lzdGVyX2NvdW50O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTQ5LVxcdHU4IGkgPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTUwOlxcdHdoaWxlICgwIFxcdTAwM2MgcmVncy0tIFxcdTAwMjZcXHUwMDI2IDEgPT0gdnViMzAwLVxcdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLmFjdGl2YXRlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTE6XFx0XFx0aWYgKHZ1YjMwMC1cXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5mdW5jX251bSA9PSBmdW5jIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTI6XFx0XFx0ICAgIHZ1YjMwMC1cXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5zZGlvX3JlZyA9PSBSZWdpc3Rlcikge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTUzOlxcdFxcdFxcdGlmICh2dWIzMDAtXFx1MDAzZXNkaW9fcmVnaXN0ZXJbaV0ucHJlcGFyZWQgPT0gMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU1NDpcXHRcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXNkaW9fcmVnaXN0ZXJbaV0ucHJlcGFyZWQgPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTU1OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5yZXNwb25zZSA9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NTYtXFx0XFx0XFx0XFx0cmVnaXN0ZXJfYWNjZXNzLVxcdTAwM2VSZXNwb25kX0J5dGVbMl07XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTc6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnJlZ3ZhbHVlID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU1OC1cXHRcXHRcXHRcXHRyZWdpc3Rlcl9hY2Nlc3MtXFx1MDAzZVJlc3BvbmRfQnl0ZVszXTtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY0LVxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU2NTpcXHRfX2FkZF9vZmZsb2FkZWRfcmVnX3RvX2ZpZm8odnViMzAwLCByZWdpc3Rlcl9hY2Nlc3MsIGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY2LX1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU2Ny1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU2ODpzdGF0aWMgdm9pZCBjaGVja192dWIzMDBfcG9ydF9zdGF0dXMoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY5LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3MC1cXHQvKlxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTcxOlxcdCAqIGNtZF9tdXRleCBpcyBoZWxkIGJ5IHZ1YjMwMF9wb2xsd29ya190aHJlYWQsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NzI6XFx0ICogdnViMzAwX2RlYWR3b3JrX3RocmVhZCBvciB2dWIzMDBfY21uZHdvcmtfdGhyZWFkXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NzMtXFx0ICovXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3NS1cXHRyZXR2YWwgPVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTc2OlxcdFxcdHVzYl9jb250cm9sX21zZyh2dWIzMDAtXFx1MDAzZXVkZXYsIHVzYl9yY3ZjdHJscGlwZSh2dWIzMDAtXFx1MDAzZXVkZXYsIDApLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTc3LVxcdFxcdFxcdFxcdEdFVF9TWVNURU1fUE9SVF9TVEFUVVMsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NzgtXFx0XFx0XFx0XFx0VVNCX0RJUl9JTiB8IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Nzk6XFx0XFx0XFx0XFx0MHgwMDAwLCAweDAwMDAsIFxcdTAwMjZ2dWIzMDAtXFx1MDAzZXN5c3RlbV9wb3J0X3N0YXR1cyxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4MDpcXHRcXHRcXHRcXHRzaXplb2YodnViMzAwLVxcdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMpLCAxMDAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4MTpcXHRpZiAoc2l6ZW9mKHZ1YjMwMC1cXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzKSA9PSByZXR2YWwpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1ODI6XFx0XFx0bmV3X3N5c3RlbV9wb3J0X3N0YXR1cyh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTgzLX1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU4NC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4NTpzdGF0aWMgdm9pZCBfX3Z1YjMwMF9pcnFwb2xsX3Jlc3BvbnNlKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU4Ni17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1ODc6XFx0LyogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX3BvbGx3b3JrX3RocmVhZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTg4OlxcdGlmICh2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCA9PSAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTg5LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5MC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5MTpcXHRzd2l0Y2ggKHZ1YjMwMC1cXHUwMDNlcmVzcC5jb21tb24uaGVhZGVyX3R5cGUpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5Mi1cXHRjYXNlIFJFU1BPTlNFX0lOVEVSUlVQVDpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5MzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTQ6XFx0XFx0aWYgKHZ1YjMwMC1cXHUwMDNlaXJxX2VuYWJsZWQpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTU6XFx0XFx0XFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXFx1MDAzZW1tYyk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01OTYtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTk3OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlaXJxc19xdWV1ZWQgKz0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5ODpcXHRcXHR2dWIzMDAtXFx1MDAzZWlycV9kaXNhYmxlZCA9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MDAtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MDEtXFx0Y2FzZSBSRVNQT05TRV9FUlJPUjpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwMjpcXHRcXHRpZiAodnViMzAwLVxcdTAwM2VyZXNwLmVycm9yLmVycm9yX2NvZGUgPT0gU0RfRVJST1JfTk9fREVWSUNFKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjAzOlxcdFxcdFxcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA1LVxcdGNhc2UgUkVTUE9OU0VfU1RBVFVTOlxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjA2OlxcdFxcdHZ1YjMwMC1cXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzID0gdnViMzAwLVxcdTAwM2VyZXNwLnN0YXR1cztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwNzpcXHRcXHRuZXdfc3lzdGVtX3BvcnRfc3RhdHVzKHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MDg6XFx0XFx0aWYgKCF2dWIzMDAtXFx1MDAzZWNhcmRfcHJlc2VudClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwOTpcXHRcXHRcXHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgSFogLyA1KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxMC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjEyLVxcdHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYxMzpcXHRcXHRpbnQgb2ZmbG9hZGVkX2RhdGFfbGVuZ3RoID0gdnViMzAwLVxcdTAwM2VyZXNwLmNvbW1vbi5oZWFkZXJfc2l6ZSAtIDM7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MTQtXFx0XFx0aW50IHJlZ2lzdGVyX2NvdW50ID0gb2ZmbG9hZGVkX2RhdGFfbGVuZ3RoIFxcdTAwM2VcXHUwMDNlIDM7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxNi1cXHRcXHR3aGlsZSAocmVnaXN0ZXJfY291bnQtLSkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjE3OlxcdFxcdFxcdGFkZF9vZmZsb2FkZWRfcmVnKHZ1YjMwMCwgXFx1MDAyNnZ1YjMwMC1cXHUwMDNlcmVzcC5pcnEucmVnW3JpXSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MTgtXFx0XFx0XFx0cmkgKz0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxOS1cXHRcXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MjA6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjIxOlxcdFxcdGlmICh2dWIzMDAtXFx1MDAzZWlycV9lbmFibGVkKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjIyOlxcdFxcdFxcdG1tY19zaWduYWxfc2Rpb19pcnEodnViMzAwLVxcdTAwM2VtbWMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjIzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNDpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZWlycXNfcXVldWVkICs9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MjU6XFx0XFx0dnViMzAwLVxcdTAwM2VpcnFfZGlzYWJsZWQgPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjI2OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjI3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MzAtXFx0e1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjMxOlxcdFxcdGludCBvZmZsb2FkZWRfZGF0YV9sZW5ndGggPSB2dWIzMDAtXFx1MDAzZXJlc3AuY29tbW9uLmhlYWRlcl9zaXplIC0gMztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzMi1cXHRcXHRpbnQgcmVnaXN0ZXJfY291bnQgPSBvZmZsb2FkZWRfZGF0YV9sZW5ndGggXFx1MDAzZVxcdTAwM2UgMztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjM0LVxcdFxcdHdoaWxlIChyZWdpc3Rlcl9jb3VudC0tKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MzU6XFx0XFx0XFx0YWRkX29mZmxvYWRlZF9yZWcodnViMzAwLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VyZXNwLmlycS5yZWdbcmldKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzNi1cXHRcXHRcXHRyaSArPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjM3LVxcdFxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYzODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Mzk6XFx0XFx0aWYgKHZ1YjMwMC1cXHUwMDNlaXJxX2VuYWJsZWQpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDA6XFx0XFx0XFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXFx1MDAzZW1tYyk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NDEtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjQyOlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlaXJxc19xdWV1ZWQgKz0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY0MzpcXHRcXHR2dWIzMDAtXFx1MDAzZWlycV9kaXNhYmxlZCA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NDUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY0Ny1cXHRjYXNlIFJFU1BPTlNFX05PX0lOVEVSUlVQVDpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY0ODpcXHRcXHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgMSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NDktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY1NC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY1NTpzdGF0aWMgdm9pZCBfX2RvX3BvbGwoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjU2LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY1NzpcXHQvKiBjbWRfbXV0ZXggaXMgaGVsZCBieSB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NTgtXFx0dW5zaWduZWQgbG9uZyBjb21tcmV0dmFsO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjU5OlxcdG1vZF90aW1lcihcXHUwMDI2dnViMzAwLVxcdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICsgSFopO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjYwOlxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2MTpcXHRzZW5kX2lycXBvbGwodnViMzAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2MjpcXHRjb21tcmV0dmFsID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycXBvbGxfY29tcGxldGUsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NjMtXFx0XFx0XFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjQ6XFx0aWYgKHZ1YjMwMC1cXHUwMDNldXNiX3RyYW5zcG9ydF9mYWlsKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NjUtXFx0XFx0Lyogbm8gbmVlZCB0byBkbyBhbnl0aGluZyAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjY2LVxcdH0gZWxzZSBpZiAoY29tbXJldHZhbCA9PSAwKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Njc6XFx0XFx0dnViMzAwLVxcdTAwM2V1c2JfdGltZWRfb3V0ID0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2ODpcXHRcXHR1c2Jfa2lsbF91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX291dF91cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjY5OlxcdFxcdHVzYl9raWxsX3VyYih2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NzAtXFx0fSBlbHNlIHsgLyogY29tbXJldHZhbCBcXHUwMDNlIDAgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY3MTpcXHRcXHRfX3Z1YjMwMF9pcnFwb2xsX3Jlc3BvbnNlKHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NzItXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NzctICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Nzg6c3RhdGljIHZvaWQgdnViMzAwX3BvbGx3b3JrX3RocmVhZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02Nzkte1xcdFxcdFxcdFxcdC8qIE5PVCBpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MDpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MTpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBwb2xsd29yay53b3JrKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MjpcXHRpZiAoIXZ1YjMwMC1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODM6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02ODQtXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg1LVxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4NjpcXHRtdXRleF9sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODc6XFx0aWYgKHZ1YjMwMC1cXHUwMDNlY21kKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODg6XFx0XFx0dnViMzAwX3F1ZXVlX3BvbGxfd29yayh2dWIzMDAsIDEpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg5OlxcdH0gZWxzZSBpZiAoIXZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50KSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02OTAtXFx0XFx0Lyogbm8gbmVlZCB0byBkbyBhbnl0aGluZyAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjkxOlxcdH0gZWxzZSB7IC8qIHZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2OTI6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjkzOlxcdFxcdGlmICghdnViMzAwLVxcdTAwM2VpcnFfZW5hYmxlZCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk0OlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk1OlxcdFxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VpcnFzX3F1ZXVlZCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk2OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlaXJxc19xdWV1ZWQgLT0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5NzpcXHRcXHRcXHRtbWNfc2lnbmFsX3NkaW9faXJxKHZ1YjMwMC1cXHUwMDNlbW1jKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5ODpcXHRcXHRcXHRtb2RfdGltZXIoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlaW5hY3Rpdml0eV90aW1lciwgamlmZmllcyArIEhaKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5OTpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlaXJxX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwMDpcXHRcXHR9IGVsc2UgeyAvKiBOT1QgdnViMzAwLVxcdTAwM2VpcnFzX3F1ZXVlZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzAxOlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzAyOlxcdFxcdFxcdF9fZG9fcG9sbCh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzAzLVxcdFxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcwNC1cXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDU6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDY6XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDctfVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzA4LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzA5OnN0YXRpYyB2b2lkIHZ1YjMwMF9kZWFkd29ya190aHJlYWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzEwLXtcXHRcXHRcXHRcXHQvKiBOT1QgaXJxICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MTE6XFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxMjpcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwgZGVhZHdvcmspO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzEzOlxcdGlmICghdnViMzAwLVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxNDpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxNS1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MTYtXFx0fVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzE3OlxcdG11dGV4X2xvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxODpcXHRpZiAodnViMzAwLVxcdTAwM2VjbWQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxOS1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MjQtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MjU6XFx0fSBlbHNlIGlmICh2dWIzMDAtXFx1MDAzZWNhcmRfcHJlc2VudCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzI2OlxcdFxcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzI3OlxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VtbWMgXFx1MDAyNlxcdTAwMjYgdnViMzAwLVxcdTAwM2VtbWMtXFx1MDAzZWNhcmQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcyOC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MzQtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjczNTpcXHRcXHRjaGVja192dWIzMDBfcG9ydF9zdGF0dXModnViMzAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTczNi1cXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mzc6XFx0bW9kX3RpbWVyKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWluYWN0aXZpdHlfdGltZXIsIGppZmZpZXMgKyBIWik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mzg6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mzk6XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDAtfVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzQxLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQyOnN0YXRpYyB2b2lkIHZ1YjMwMF9pbmFjdGl2aXR5X3RpbWVyX2V4cGlyZWQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDMte1xcdFxcdFxcdFxcdC8qIHNvZnRpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NDpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSB0aW1lcl9jb250YWluZXJfb2YodnViMzAwLCB0LFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzQ1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbmFjdGl2aXR5X3RpbWVyKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NjpcXHRpZiAoIXZ1YjMwMC1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDc6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDg6XFx0fSBlbHNlIGlmICh2dWIzMDAtXFx1MDAzZWNtZCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQ5OlxcdFxcdG1vZF90aW1lcihcXHUwMDI2dnViMzAwLVxcdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICsgSFopO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NTE6XFx0XFx0dnViMzAwX3F1ZXVlX2RlYWRfd29yayh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUyOlxcdFxcdG1vZF90aW1lcihcXHUwMDI2dnViMzAwLVxcdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICsgSFopO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzU1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzU2OnN0YXRpYyBpbnQgdnViMzAwX3Jlc3BvbnNlX2Vycm9yKHU4IGVycm9yX2NvZGUpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NTcte1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz03OTI9c3RhdGljIHZvaWQgY29tbWFuZF9yZXNfY29tcGxldGVkKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5My17XFx0XFx0XFx0XFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc5NDpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSAoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqKXVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5NS1cXHRpZiAodXJiLVxcdTAwM2VzdGF0dXMpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5Ni1cXHRcXHQvKiB3ZSBoYXZlIHRvIGxldCB0aGUgaW5pdGlhdG9yIGhhbmRsZSB0aGUgZXJyb3IgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc5NzpcXHR9IGVsc2UgaWYgKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoID09IDApIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5OC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDEtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MDI6XFx0fSBlbHNlIGlmICghdnViMzAwLVxcdTAwM2VkYXRhKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDMtXFx0XFx0LyogdGhpcyBtZWFucyB0aGF0IHRoZSBjb21tYW5kICh0eXBpY2FsbHkgQ01ENTIpIHN1Y2NlZWRlZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODA0OlxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VyZXNwLmNvbW1vbi5oZWFkZXJfdHlwZSAhPSAweDAyKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDUtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODA4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODA5OlxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2V1cmIpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgxMDpcXHRcXHR2dWIzMDAtXFx1MDAzZWNtZC1cXHUwMDNlZXJyb3IgPVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODExOlxcdFxcdFxcdHZ1YjMwMF9yZXNwb25zZV9lcnJvcih2dWIzMDAtXFx1MDAzZXJlc3AuZXJyb3IuZXJyb3JfY29kZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MTI6XFx0XFx0dXNiX3VubGlua191cmIodnViMzAwLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODEzLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MTQ6XFx0XFx0dnViMzAwLVxcdTAwM2VjbWQtXFx1MDAzZWVycm9yID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgxNTpcXHRcXHRcXHR2dWIzMDBfcmVzcG9uc2VfZXJyb3IodnViMzAwLVxcdTAwM2VyZXNwLmVycm9yLmVycm9yX2NvZGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE2OlxcdFxcdHVzYl9zZ19jYW5jZWwoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlc2dfcmVxdWVzdCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MTctXFx0fVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE4OlxcdGNvbXBsZXRlKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNvbW1hbmRfY29tcGxldGUpO1xcdC8qIGdvdF9yZXNwb25zZV9pbiAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODE5LX1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9ODIxPXN0YXRpYyB2b2lkIGNvbW1hbmRfb3V0X2NvbXBsZXRlZChzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjIte1xcdFxcdFxcdFxcdC8qIHVyYiBjb21wbGV0aW9uIGhhbmRsZXIgLSBoYXJkaXJxICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MjM6XFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjQtXFx0aWYgKHVyYi1cXHUwMDNlc3RhdHVzKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MjU6XFx0XFx0Y29tcGxldGUoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY29tbWFuZF9jb21wbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjYtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODI4LVxcdFxcdHVuc2lnbmVkIGludCBwaXBlID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgyOTpcXHRcXHRcXHR1c2JfcmN2YnVsa3BpcGUodnViMzAwLVxcdTAwM2V1ZGV2LCB2dWIzMDAtXFx1MDAzZWNtbmRfcmVzX2VwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgzMDpcXHRcXHR1c2JfZmlsbF9idWxrX3VyYih2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYiwgdnViMzAwLVxcdTAwM2V1ZGV2LCBwaXBlLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMxOlxcdFxcdFxcdFxcdCAgXFx1MDAyNnZ1YjMwMC1cXHUwMDNlcmVzcCwgc2l6ZW9mKHZ1YjMwMC1cXHUwMDNlcmVzcCksXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MzI6XFx0XFx0XFx0XFx0ICBjb21tYW5kX3Jlc19jb21wbGV0ZWQsIHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MzM6XFx0XFx0dnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODM0OlxcdFxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTgzNS1cXHRcXHRpZiAocmV0ID09IDApIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODQ0LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODQ1OlxcdFxcdFxcdGNvbXBsZXRlKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNvbW1hbmRfY29tcGxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODQ2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODUyLSAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODUzOnN0YXRpYyB2b2lkIHNub29wX2Jsb2NrX3NpemVfYW5kX2J1c193aWR0aChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NTQtXFx0XFx0XFx0XFx0XFx0ICAgdTMyIGNtZF9hcmcpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg1Ni1cXHRpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDIyMjAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODU3OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzFdID0gKGNtZF9hcmcgXFx1MDAzY1xcdTAwM2MgOCkgfCAoMHgwMEZGIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbMV0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODU4LVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDAyMjAwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg1OTpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1sxXSA9ICgweEZGIFxcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbMV0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODYwLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA0MjIwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg2MTpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1syXSA9IChjbWRfYXJnIFxcdTAwM2NcXHUwMDNjIDgpIHwgKDB4MDBGRiBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzJdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2Mi1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwNDIwMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NjM6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbMl0gPSAoMHhGRiBcXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzJdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2NC1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwNjIyMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NjU6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbM10gPSAoY21kX2FyZyBcXHUwMDNjXFx1MDAzYyA4KSB8ICgweDAwRkYgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1szXSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjYtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDYyMDAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODY3OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzNdID0gKDB4RkYgXFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1szXSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjgtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDgyMjAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODY5OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzRdID0gKGNtZF9hcmcgXFx1MDAzY1xcdTAwM2MgOCkgfCAoMHgwMEZGIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbNF0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODcwLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA4MjAwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3MTpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1s0XSA9ICgweEZGIFxcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbNF0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODcyLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBBMjIwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3MzpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1s1XSA9IChjbWRfYXJnIFxcdTAwM2NcXHUwMDNjIDgpIHwgKDB4MDBGRiBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzVdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg3NC1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwQTIwMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NzU6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbNV0gPSAoMHhGRiBcXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzVdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg3Ni1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwQzIyMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4Nzc6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbNl0gPSAoY21kX2FyZyBcXHUwMDNjXFx1MDAzYyA4KSB8ICgweDAwRkYgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1s2XSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NzgtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEMyMDAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODc5OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzZdID0gKDB4RkYgXFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1s2XSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODAtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEUyMjAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODgxOlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzddID0gKGNtZF9hcmcgXFx1MDAzY1xcdTAwM2MgOCkgfCAoMHgwMEZGIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbN10pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODgyLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBFMjAwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4MzpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1s3XSA9ICgweEZGIFxcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbN10pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODg0LVxcdGVsc2UgaWYgKCgweEZCRkZGRTAzIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDAwMEUwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4NTpcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODYtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDMgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDAwRTAyKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODg3OlxcdFxcdHZ1YjMwMC1cXHUwMDNlYnVzX3dpZHRoID0gNDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4OC19XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODktXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTA6c3RhdGljIHZvaWQgc2VuZF9jb21tYW5kKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5MS17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTI6XFx0LyogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX2NtbmR3b3JrX3RocmVhZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODkzOlxcdHN0cnVjdCBtbWNfY29tbWFuZCAqY21kID0gdnViMzAwLVxcdTAwM2VjbWQ7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTQ6XFx0c3RydWN0IG1tY19kYXRhICpkYXRhID0gdnViMzAwLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODk1LVxcdGludCByZXR2YWw7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5Ny1cXHR1OCByZXNwb25zZV90eXBlO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODk4OlxcdGlmICh2dWIzMDAtXFx1MDAzZWFwcF9zcGVjKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04OTktXFx0XFx0c3dpdGNoIChjbWQtXFx1MDAzZW9wY29kZSkge1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDEtXFx0XFx0XFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwMjpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gNjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwMy1cXHRcXHRcXHRpZiAoMHgwMDAwMDAwMCA9PSAoMHgwMDAwMDAwMyBcXHUwMDI2IGNtZC1cXHUwMDNlYXJnKSlcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwNDpcXHRcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDUtXFx0XFx0XFx0ZWxzZSBpZiAoMHgwMDAwMDAwMiA9PSAoMHgwMDAwMDAwMyBcXHUwMDI2IGNtZC1cXHUwMDNlYXJnKSlcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwNjpcXHRcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDQ7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDctXFx0XFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTA4OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnZ1YjMwMC1cXHUwMDNldWRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTA5LVxcdFxcdFxcdFxcdFxcdFxcXCJ1bmV4cGVjdGVkIEFDTUQ2IGJ1c193aWR0aD0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTEzLVxcdFxcdFxcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MTQ6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VyZXNwX2xlbiA9IDY7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MTUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkxNy1cXHRcXHRcXHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTE4OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlcmVzcF9sZW4gPSA2O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTE5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjEtXFx0XFx0XFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkyMjpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gNjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkyMy1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTI1LVxcdFxcdFxcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzM7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MjY6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VyZXNwX2xlbiA9IDY7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkyOS1cXHRcXHRcXHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTMwOlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlcmVzcF9sZW4gPSA2O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTMxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MzMtXFx0XFx0XFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkzNDpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gNjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkzNS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTM3LVxcdFxcdFxcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5Mzg6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VyZXNwX2xlbiA9IDY7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MzktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05NDAtXFx0XFx0ZGVmYXVsdDpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjk0MTpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gMDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTk0Mi1cXHRcXHRcXHRjbWQtXFx1MDAzZWVycm9yID0gLUVJTlZBTDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjk0MzpcXHRcXHRcXHRjb21wbGV0ZShcXHUwMDI2dnViMzAwLVxcdTAwM2Vjb21tYW5kX2NvbXBsZXRlKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MTMuNTUyMzU3MzE2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTg5ODE3ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gQ2FyZCBFbXVsYXRpb24gdmlhIFVTQiBhbmQgU3l6a2FsbGVyKipcblxuT2theSwgc28gYHZ1YjMwMGAgaXMgYSBVU0ItdG8tU0RJTyBicmlkZ2UsIGdvdCBpdC4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgc3l6a2FsbGVyLCB3aXRoIGl0cyBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgKGR1bW15X2hjZC92aGNpKSwgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlIHRoaXMhIExldCdzIHZlcmlmeSBpZiBgdnViMzAwYCBpcyBldmVuIGVuYWJsZWQgaW4gc3l6a2FsbGVyJ3Mga2VybmVsIGNvbmZpZy5cblxuSG1tLCB0aGUgcHJvbXB0IGlzIHRocm93aW5nIHVwIHNvbWUgcmVkIGZsYWdzLCB0YWxraW5nIGFib3V0IHNwZWNpZmljIFBDSWUgaGFyZHdhcmUgY2FyZHMgb3IgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEJ1dCBpZiBgdnViMzAwYCBpcyBtYW5hZ2VhYmxlIHZpYSBVU0IsIHdlICpzaG91bGQqIGJlIGFibGUgdG8gYXR0YWNoIGFuIFNESU8gZGV2aWNlLiBUaGlzIGRldmljZSBhY3RzIGFzIGFuIFNESU8gaG9zdCBjb250cm9sbGVyIHZpYSBVU0IsIHdoaWNoIG1lYW5zIHRoYXQgc3l6a2FsbGVyLCBhY3RpbmcgYXMgdGhlIFVTQiBkZXZpY2UsIGNhbiBpbmplY3QgU0RJTyBkZXZpY2VzLlxuXG5TbywgbGV0J3Mgc2VlIGlmIHN5emthbGxlciBhY3R1YWxseSAqdXNlcyogYHZ1YjMwMGAuIFJpZ2h0LCBzeXprYWxsZXIgZW11bGF0ZXMgdGhlIFVTQiBkZXZpY2UgKml0c2VsZiosIHNvIGl0IHdvdWxkIGJlIGVtdWxhdGluZyB0aGUgYHZ1YjMwMGAgZGV2aWNlLiBUaGUga2VybmVsIHRoZW4gbG9hZHMgdGhlIGB2dWIzMDBgIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGFuIE1NQyBob3N0LCBhbmQgc3l6a2FsbGVyIChhcyBgdnViMzAwYCkgY2FuIHRoZW4gZmVlZCBiYWNrIHJlc3BvbnNlcyB0byBNTUMgY29tbWFuZHMsIGVmZmVjdGl2ZWx5IGZha2luZyBhbiBTRElPIGNhcmQuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5UaGlua2luZyBmdXJ0aGVyLCBpZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYW4gU0RJTyBjYXJkIHRocm91Z2ggdGhlIGB2dWIzMDBgIHJvdXRlLCB0aGVuIHRoYXQgb3BlbnMgdGhlIGRvb3IgdG8gcHJvYmluZyBhIHNwZWNpZmljIFNESU8gZHJpdmVyLCBzdWNoIGFzIGBydGw4NzIzYnNgLiBUaGF0J3MgdGhlIGtleTogY2FuIHdlIGVtdWxhdGUgKnRoYXQqIHNwZWNpZmljIGNhcmQ/IFllcywgYnkgY2FyZWZ1bGx5IGNyYWZ0aW5nIHRoZSByZXNwb25zZXMgdG8gU0RJTyBlbnVtZXJhdGlvbiBjb21tYW5kcyAoQ01ENSwgQ01ENTMsIGV0Yy4pIHdpdGggdGhlIGNvcnJlY3QgdmVuZG9yIGFuZCBkZXZpY2UgSURzLlxuXG5CdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBkbyB0aGlzPyBUaGUgVVNCIGZ1enplciBpcyByYW5kb207IGl0IGdlbmVyYXRlcyByYW5kb20gVVNCIHJlc3BvbnNlcy4gSXQgKm1pZ2h0KiBzYXRpc2Z5IHRoZSBNTUMgZW51bWVyYXRpb24sIGJ1dCBpdCdzIHVubGlrZWx5IGZvciBhIGNvbXBsaWNhdGVkIHByb3RvY29sIGxpa2UgTU1DL1NESU8gYnkgYWNjaWRlbnQuIEkgcmVtZW1iZXIgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6X3VzYl9jb250cm9sX2lvYCBzeXNjYWxscywgYnV0IGRvIHdlIGhhdmUgU0RJTyBkZXNjcmlwdGlvbnM/IFRoYXQncyB0aGUgcXVlc3Rpb24uXG5cbkxldCdzIGNoZWNrIGlmIHRoZSBgcnRsODcyM2JzYCBpcyByZWFjaGFibGUsIHRob3VnaC4gUmlnaHQsIGl0J3MgYSBzdGFnaW5nIGRyaXZlci4gSXMgaXQgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IE1pZ2h0IGJlIG1vcmUgdHJvdWJsZSB0aGFuIGl0J3Mgd29ydGguIFRpbWUgdG8gY2hlY2sgdGhhdCBwYXRjaCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3OTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MjUuMTQyMTc5NzMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTk1MTExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oPTMyPXZvaWQgcnR3X2lwc19wd3JfZG93bihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmgtMzMtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaDozNDppbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oLTM1LXZvaWQgcnR3X25kZXZfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jPTcyMD11OCBydHdfZnJlZV9kcnZfc3coc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYy03NTQtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYzo3NTU6c3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzU2LXtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzcyLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzczOmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzc0LXtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzc4LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6Nzc5OlxcdHJldHVybiBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYocGFkYXB0ZXIsIG5hbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzgwLX1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTMzNz1zdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTM1My1cXHQvKiBkZXZfYWxsb2NfbmFtZSBcXHUwMDI2XFx1MDAyNiByZWdpc3Rlcl9uZXRkZXYgKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozNTQ6XFx0c3RhdHVzID0gcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoaWYxKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zNTUtXFx0aWYgKHN0YXR1cyAhPSBfU1VDQ0VTUylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MjUuMjE4MTQxMTA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzQzNzYyNjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaDogUlRMODcyM0JTIGFuZCBTeXprYWxsZXIgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYFJUTDg3MjNCU2AsIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnNgIGRpcmVjdG9yeS4gIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZmlsZXM6IGBvc19pbnRmcy5jYCwgYHJ0d19jbWQuY2AsIGBydHdfcmVjdi5jYCwgYW5kIGBzZGlvX2ludGYuY2AuICBUaGUgbW9kaWZpY2F0aW9ucyB0byBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGluIGBvc19pbnRmcy5jYCBhcmUgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSByZW1vdmVkIHRoZSBjbGVhbnVwIGNvZGUgKGZyZWVpbmcgbmV0d29yayBkZXZpY2UgYW5kIGRyaXZlciBzcGVjaWZpYyBzdHJ1Y3R1cmVzKSBvbiBhIGByZWdpc3Rlcl9uZXRkZXZgIGZhaWx1cmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGZpeGluZyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSwgc2luY2UgdGhlIGZyZWUgZnVuY3Rpb25zIG1pZ2h0IGJlIGNhbGxlZCBlbHNld2hlcmUuICBHb29kIGNhdGNoLCB0aGF0J3MgYSBjbGFzc2ljIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0uXG5cblRoZW4gdGhlcmUgYXJlIHRoZXNlIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgdGhhdCB3ZXJlIGNoYW5nZWQgaW4gdGhlIGBjMmhfd2tfY2FsbGJhY2tgIGFuZCBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIGZ1bmN0aW9ucy4gIE51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBmaXhlcy4gQWdhaW4sIGdvb2QgY2F0Y2guIEZpbmFsbHksIGluIGBzZGlvX2ludGYuY2AsIHRoZXkndmUgcmVwbGFjZWQgYGtmcmVlKHBhZGFwdGVyLVx1MDAzZUhhbERhdGEpYCB3aXRoIGBydHdfaGFsX2RhdGFfZGVpbml0KHBhZGFwdGVyKWAuICBMb29rcyBsaWtlIGFub3RoZXIgbWVtb3J5IGxlYWsgb3IgcG90ZW50aWFsIGNvcnJ1cHRpb24gZml4LiBPdmVyYWxsLCB0aGVzZSBhcmUgYWxsIGZ1bmN0aW9uYWwgY2hhbmdlcyBhbmQgcG9pbnQgdG93YXJkcyBidWcgZml4ZXMgLSBjbGFzc2ljIHN0dWZmIHlvdSBleHBlY3QgdG8gc2VlLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGlzIGRyaXZlciwgYFJUTDg3MjNCU2AsIHdvcnRoIGZ1enppbmc/IENhbiBpdCBldmVuIGJlIHJlYWNoZWQgd2l0aCBhIHRvb2wgbGlrZSBzeXprYWxsZXI/ICBJJ20gdGhpbmtpbmcsIGlmIHN5emthbGxlciBjYW4gZW11bGF0ZSBTRElPIHZpYSBhIFVTQiBnYWRnZXQgbGlrZSBgdnViMzAwYCwgdGhlbiBwb3RlbnRpYWxseSwgeWVzLiBCdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBlbXVsYXRlIFNESU8gdmlhIGB2dWIzMDBgPyAgSSBuZWVkIHRvIGNoZWNrIHN5emthbGxlcidzIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQsIG9yIGlmIGl0J3MgZ2VuZXJhbGx5IHBvc3NpYmxlIGF0IGFsbC5cblxuV2FpdCwgbG9va2luZyBhdCB0aGUgc3l6a2FsbGVyIHNldHVwLCBpdCBoYXMgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaS4gQnV0IHRoZSBgUlRMODcyM0JTYCBpcyBhIGZ1bGwgTUFDIGRyaXZlciwgbm90IG1hYzgwMjExIGJhc2VkLiAgSXQgdXNlcyBgY2ZnODAyMTFgIGJ1dCBpbXBsZW1lbnRzIGl0cyBvd24gTUFDLlxuXG5Ob3cgSSdtIHRoaW5raW5nLCBjYW4gdGhpcyBjb2RlIHBhdGggYmUgcmVhY2hlZD8gIFdhaXQgYSBtaW51dGUuLi4gaWYgdGhpcyBidWcgd2FzIGZvdW5kIGJ5IGBzeXotY2x1c3RlcmAgKGFzIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgKSwgaXQgbWVhbnMgc3l6a2FsbGVyICpkaWQqIHJlYWNoIGl0ISAgVGhlIGNvbW1pdCBtZXNzYWdlIHNheXM6IGBBdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCBhbmQgYHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld2AuICBUaGF0J3MgaXQuIFN5emthbGxlciBmb3VuZCBhIGNyYXNoLCBzbyB0aGUgcGF0Y2ggaXMgYmVpbmcgdGVzdGVkIGJ5IHRoZSBgc3l6LWNsdXN0ZXJgLiBUaGlzIG1lYW5zIGl0IE1VU1QgYmUgcmVhY2hhYmxlLlxuXG5CdXQgaG93IGRpZCBzeXprYWxsZXIgcmVhY2ggYW4gU0RJTyBkcml2ZXI/ICBJcyB0aGVyZSBhIHNvZnR3YXJlIFNESU8gaG9zdCBjb250cm9sbGVyIHRoYXQgc3l6a2FsbGVyIHVzZXMsIG9yIHNvbWUgb3RoZXIgd2F5IHRoaXMgaXMgYmVpbmcgdHJpZ2dlcmVkPyAgSSdkIG5lZWQgdG8gbG9vayBpbnRvIGhvdyBzeXprYWxsZXIgaXMgc2V0IHVwIHRvIGZpbmQgdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGl0IHVzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1Njg3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjM3LjU2MTkwODQwMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5Mjc4MDcyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjM3LjcwMTE5NDQ5M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTYwMDU0NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBcImR1bW15XCIqKlxuXG5SaWdodCwgc28gdGhlIHdvcmQgXCJkdW1teVwiIGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZC4gSW1tZWRpYXRlbHksIEknbSBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBpdHMgcG90ZW50aWFsIG1lYW5pbmdzIGluIHRoaXMgY29udGV4dC4gSXMgaXQgYmVpbmcgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIHZhcmlhYmxlPyBBIHRlc3QgY2FzZT8gUGVyaGFwcyBhIHdheSB0byBzaW1wbGlmeSBhbiBhcmd1bWVudCBvciBtb2RlbCBieSBpbnRlbnRpb25hbGx5IGlnbm9yaW5nIGNvbXBsZXhpdGllcz8gT3IgaXMgaXQgYmVpbmcgdXNlZCBkaXNwYXJhZ2luZ2x5LCBhcyBpbiwgYSBcImR1bW15IHZhcmlhYmxlP1wiIFRoZSBhbWJpZ3VpdHkgaGVyZSByZXF1aXJlcyBhIGJpdCBtb3JlIGluZm9ybWF0aW9uLiBXaGF04oCZcyB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gaW4gcXVlc3Rpb24/IEhvdyBjb21wbGV4IGlzIHRoZSBzeXN0ZW0gYmVpbmcgZGVzY3JpYmVkPyBXaGF0IGlzIHRoaXMgXCJkdW1teVwiIHN1cHBvc2VkIHRvICpkbyo/IFdpdGhvdXQgY29udGV4dCwgXCJkdW1teVwiIGNvdWxkIHJlcHJlc2VudCBhIGJyb2FkIHNwZWN0cnVtIG9mIHRoaW5ncy4gSXQncyBhIGxvYWRlZCB0ZXJtLCBpbmhlcmVudGx5IGNhcnJ5aW5nIHNvbWUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gb3Igc2ltcGxpZmljYXRpb24sIGJ1dCB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoYXQgYWJzdHJhY3Rpb24gaXMgd2hhdCdzIGNydWNpYWwuIEknbGwgbmVlZCBtb3JlIGRldGFpbCB0byBldmFsdWF0ZSBpdHMgZWZmZWN0aXZlbmVzcyBvciBhcHByb3ByaWF0ZW5lc3MuIFRoaXMgdGhvdWdodCBuZWVkcyB1bnBhY2tpbmcgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczMjYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjQxLjY2MTI1MzMxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU0NzE0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jPTMwPXN0YXRpYyBpbnQgc2Rpb19nZXRfcGVuZGluZ19pcnFzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTggKnBlbmRpbmcpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMtNDUtXFx0ICAgICEoaG9zdC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jOjQ2OlxcdFxcdHVuc2lnbmVkIGNoYXIgZHVtbXk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy00OC1cXHRcXHQvKiBBIGZha2UgaW50ZXJydXB0IGNvdWxkIGJlIGNyZWF0ZWQgd2hlbiB3ZSBwb2xsIFNESU9fQ0NDUl9JTlR4XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jOjQ5OlxcdFxcdCAqIHJlZ2lzdGVyIHdpdGggYSBNYXJ2ZWxsIFNEODc5NyBjYXJkLiBBIGR1bW15IENNRDUyIHJlYWQgdG9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMtNTAtXFx0XFx0ICogZnVuY3Rpb24gMCByZWdpc3RlciAweGZmIGNhbiBhdm9pZCB0aGlzLlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy01MS1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmM6NTI6XFx0XFx0bW1jX2lvX3J3X2RpcmVjdChjYXJkLCAwLCAwLCAweGZmLCAwLCBcXHUwMDI2ZHVtbXkpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy01My1cXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jPTU3PXN0YXRpYyBpbnQgdGh1bmRlcl9tbWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jLTEzNC1cXHRcXHQgKiBtbWNfb2ZfcGFyc2UgYW5kIGRldm0qIHJlcXVpcmUgb25lIGRldmljZSBwZXIgc2xvdC5cXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jOjEzNTpcXHRcXHQgKiBDcmVhdGUgYSBkdW1teSBkZXZpY2UgcGVyIHNsb3QgYW5kIHNldCB0aGUgbm9kZSBwb2ludGVyIHRvXFxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYy0xMzYtXFx0XFx0ICogdGhlIHNsb3QuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdGhpcyBpcyB1c2luZ1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYz00NTA9c3RhdGljIHZvaWQgbGl0ZXhfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5jLTQ1NS1cXHQgKiBUaGUgU0Qgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBhdCBsZWFzdCA3NCBpZGxlIGNsb2NrcyBiZWZvcmUgQ01EMC5cXG5kcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5jOjQ1NjpcXHQgKiBUaGVzZSBkdW1teSBjeWNsZXMgaXMgZ2VuZXJhdGVkIGJ5IHdyaXRpbmcgTElURVhfUEhZX0lOSVRJQUxJWkUuXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTctXFx0ICovXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYz0yMDE9c3RhdGljIHZvaWQgbW1jX29tYXBfc2VsZWN0X3Nsb3Qoc3RydWN0IG1tY19vbWFwX3Nsb3QgKnNsb3QsIGludCBjbGFpbWVkKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMtMjM1LVxcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jOjIzNjpcXHRcXHQvKiBEb2luZyB0aGUgZHVtbXkgcmVhZCBoZXJlIHNlZW1zIHRvIHdvcmsgYXJvdW5kIHNvbWUgYnVnXFxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMtMjM3LVxcdFxcdCAqIGF0IGxlYXN0IGluIE9NQVAyNHh4IHNpbGljb24gd2hlcmUgdGhlIGNvbW1hbmQgd291bGQgbm90XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM9MjA4PXN0YXRpYyB2b2lkIHNkX3NlbmRfY21kX2dldF9yc3Aoc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jLTMwMS1cXHRcXHQgKiBUaGUgY29udHJvbGxlciBvZmZsb2FkcyB0aGUgbGFzdCBieXRlIHtDUkMtNywgZW5kIGJpdCAxJ2IxfVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYzozMDI6XFx0XFx0ICogb2YgcmVzcG9uc2UgdHlwZSBSMi4gQXNzaWduIGR1bW15IENSQywgMCwgYW5kIGVuZCBiaXQgdG8gdGhlXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jLTMwMy1cXHRcXHQgKiBieXRlKHB0clsxNl0sIGdvZXMgaW50byB0aGUgTFNCIG9mIHJlc3BbM10gbGF0ZXIpLlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jPTI4NT1zdGF0aWMgdm9pZCBzZF9zZW5kX2NtZF9nZXRfcnNwKHN0cnVjdCBydHN4X3VzYl9zZG1tYyAqaG9zdCxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYy00MjUtXFx0XFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSdiMX1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmM6NDI2OlxcdFxcdCAqIG9mIHJlc3BvbnNlIHR5cGUgUjIuIEFzc2lnbiBkdW1teSBDUkMsIDAsIGFuZCBlbmQgYml0IHRvIHRoZVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYy00MjctXFx0XFx0ICogYnl0ZShwdHJbMTZdLCBnb2VzIGludG8gdGhlIExTQiBvZiByZXNwWzNdIGxhdGVyKS5cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmMtMjE0LVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmM6MjE1Oi8qIHRoZSBjb250cm9sbGVyIGhhcyBkdW1teSBwYWQgZm9yIGNsb2NrIGxvb3BiYWNrICovXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2RoYy1pbXguYy0yMTYtI2RlZmluZSBFU0RIQ19GTEFHX0RVTU1ZX1BBRFxcdFxcdEJJVCgxOSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYz0xMDE9c3RhdGljIHUzMiBweGF2MV9pcnEoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHUzMiBpbnRtYXNrKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEwNi1cXHRpZiAocHhhdjJfaG9zdC1cXHUwMDNlc2Rpb19tcnEgXFx1MDAyNlxcdTAwMjYgKGludG1hc2sgXFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0spKSB7XFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEwNzpcXHRcXHQvKiBUaGUgZHVtbXkgQ01EMCBmb3IgdGhlIFNESU8gd29ya2Fyb3VuZCBqdXN0IGNvbXBsZXRlZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMDgtXFx0XFx0c2RoY2lfd3JpdGVsKGhvc3QsIGludG1hc2sgXFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0ssIFNESENJX0lOVF9TVEFUVVMpO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jPTEyMz1zdGF0aWMgdm9pZCBweGF2MV9yZXF1ZXN0X2RvbmUoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEzNi1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTM3OlxcdFxcdC8qIENsb2NrIGlzIG5vdyBzdG9wcGVkLCBzbyByZXN0YXJ0IGl0IGJ5IHNlbmRpbmcgYSBkdW1teSBDTUQwICovXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEzOC1cXHRcXHRweGF2Ml9ob3N0ID0gc2RoY2lfcGx0Zm1fcHJpdihzZGhjaV9wcml2KGhvc3QpKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xNDktXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjE1MDpcXHRcXHQvKiBEb24ndCBmaW5pc2ggdGhpcyByZXF1ZXN0IHVudGlsIHRoZSBkdW1teSBDTUQwIGZpbmlzaGVzICovXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTE1MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmM9NjUzPXN0YXRpYyBpbnQgc2RoY2lfcHJlX2RtYV90cmFuc2ZlcihzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02ODktXFx0XFx0XFx0XFx0XFx0ICAgbW1jX2dldF9kbWFfZGlyKGRhdGEpKTtcXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmM6NjkwOlxcdFxcdC8qIEp1c3QgYSBkdW1teSB2YWx1ZSAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02OTEtXFx0XFx0c2dfY291bnQgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDo0MS43NTI4MDYwMzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0OTkwMTczMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0RJTyBEZXZpY2UgSW5qZWN0aW9uIHZpYSBVU0IgRW11bGF0aW9uOiBBIEZ1enppbmcgT3Bwb3J0dW5pdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHN0dW1ibGVkIHVwb24gc29tZXRoaW5nIGludGVyZXN0aW5nLiBJIG5vdGljZWQgdGhlIGB2dWIzMDBgLCBhIFVTQi10by1TRElPIGJyaWRnZS4gVGhlIHdoZWVscyBhcmUgdHVybmluZyDigJMgc3l6a2FsbGVyJ3MgZ290IGEgVVNCIGZ1enplciwgc3BlY2lmaWNhbGx5IGBkdW1teV9oY2RgLiBJZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBlbXVsYXRlIGEgYHZ1YjMwMGAgb3ZlciBVU0IsIHdlIGNvdWxkIHBvdGVudGlhbGx5IGluamVjdCBTRElPIGRldmljZXMuXG5cbkkgZG9uJ3QgbmVlZCB0byBkaXZlIGludG8gc3l6a2FsbGVyJ3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaXMgd2hldGhlciB0aGlzIHBhdGggaXMgZXZlbiAqcG9zc2libGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIFFFTVUncyBVU0Igc3VwcG9ydCwgYW5kIHRoYXQgc3l6a2FsbGVyIHVzZXMgdGhlIGBkdW1teV9oY2RgIHRvIGVtdWxhdGUgVVNCLCBpdCdzIHByZXR0eSBjbGVhcjogWWVzLCBpdCBpcyEgV2UgY2FuIGFic29sdXRlbHkgcmVhY2ggU0RJTyBkcml2ZXJzIGJ5IGZha2luZyBhIGB2dWIzMDBgIFVTQiBkZXZpY2Ugd2l0aCBhbiBTRElPIGNhcmQgYXR0YWNoZWQuXG5cbkkgYnJpZWZseSBjb25zaWRlcmVkIG90aGVyIHBvdGVudGlhbCByb3V0ZXMsIGxpa2UgYENPTkZJR19NTUNfVEVTVGAgb3IgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW07IHRoZXkncmUgbm90IHJlbGV2YW50LiBUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGUgVVNCIGNvbm5lY3Rpb24gYW5kIHRoZSBhYmlsaXR5IHRvIGVtdWxhdGUgYSBkZXZpY2UuXG5cbk5vdywgbGV0J3Mgem9vbSBpbi4gSXMgYFJUTDg3MjNCU2AgZW5hYmxlZD8gQ2hlY2tpbmcgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ2AgY29uZmlybXMgaXQgZGVwZW5kcyBvbiBgV0xBTiBcdTAwMjZcdTAwMjYgTU1DIFx1MDAyNlx1MDAyNiBDRkc4MDIxMWAuIElmIHdlIGVuYWJsZSBgQ09ORklHX1JUTDg3MjNCU2AsIHdlJ3JlIGdvb2QgdG8gZ28uXG5cbklzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkhIFRoaXMgaXMgYSBXaUZpIGRyaXZlci4gV2lGaSBkcml2ZXJzIGFyZSBub3RvcmlvdXMgZm9yIHBhcnNpbmcgY29tcGxleCBuZXR3b3JrIGZyYW1lcywgZXNwZWNpYWxseSBtYW5hZ2VtZW50IGZyYW1lcy4gQW5kIHRoZSBiZWF1dGlmdWwgdGhpbmcgaXMsIHdlIGNhbiBpbmplY3QgdGhlc2UgZnJhbWVzIGVpdGhlciB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAgb3IgdGhlIFNESU8gaW50ZXJmYWNlIGlmIHN5emthbGxlciBpcyBmdXp6aW5nIFNESU8gcmVzcG9uc2VzLlxuXG5UaGUgY2xpbmNoZXI/IFN5emthbGxlciBhbHJlYWR5IGZvdW5kIGEgYnVnIGhlcmUuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3IgdGhhdCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIGZ1enppbmcgaXMgd29ydGggaXQuIEknbSBzZWVpbmcgZnVuY3Rpb25hbCBidWdzLCBzcGVjaWZpY2FsbHkgZG91YmxlIGZyZWVzIGFuZCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBmcm9tIHRoZSBwYXRjaCB0aGF0IGZpeGVzIHRoZSBidWcuIFRoaXMgaXMgZ3JlYXQsIHNvIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIHRhcmdldCBkdXJpbmcgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgaWRlbnRpZmllZCBhcmU6XG4tICAgYGMyaF93a19jYWxsYmFja2AgaW4gYHJ0d19jbWQuY2Bcbi0gICBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIGluIGBydHdfcmVjdi5jYFxuLSAgIGBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGluIGBvc19pbnRmcy5jYFxuLSAgIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaW4gYG9zX2ludGZzLmNgXG4tICAgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgXG4tICAgYHJ0d19kcnZfaW5pdGAgaW4gYHNkaW9faW50Zi5jYFxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM1MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDo1NC4yNTE4MjcyNzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTczMTY0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfZHJ2X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MjU9TU9EVUxFX0RFVklDRV9UQUJMRShzZGlvLCBzZGlvX2lkcyk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjYtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6Mjc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZCk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjgtc3RhdGljIHZvaWQgcnR3X2Rldl9yZW1vdmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyk7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zNz1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIHJ0bDg3MjNic19zZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozODpcXHQucHJvYmUgPSBydHdfZHJ2X2luaXQsXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzktXFx0LnJlbW92ZSA9IHJ0d19kZXZfcmVtb3ZlLFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MzA4PXN0YXRpYyB2b2lkIHJ0d19zZGlvX2lmMV9kZWluaXQoc3RydWN0IGFkYXB0ZXIgKmlmMSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTMzNi0gKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozMzc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzM4LVxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjU0LjYwNzU2Nzk4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTcyODY1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0RJTyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFNESU8gZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgcnR3X2Rydl9pbml0YCBpcyB0aGUga2V5IHByb2JlIGZ1bmN0aW9uIGhlcmUuIFRoYXQncyB3aGVyZSBpdCBhbGwgYmVnaW5zLCB0aGUgcG9pbnQgd2hlcmUgdGhlIGhhcmR3YXJlIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBkcml2ZXIga2lja3MgaW50byBnZWFyLiBJdCBtYWtlcyBzZW5zZSwgb2YgY291cnNlOyB0aGF0J3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50IGZvciBhbiBTRElPIGRyaXZlci4gQW5kIHRoZW4sIGR1cmluZyB0aGF0IHByb2JlLCBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGlzIGNhbGxlZC4gU28sIHRoZSBuZXR3b3JrIGRldmljZSBpcyBiZWluZyByZWdpc3RlcmVkIGFzIHBhcnQgb2YgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS5cblxuSSdtIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGMyaF93a19jYWxsYmFja2AsIHdoaWNoIEknbSBpbmZlcnJpbmcgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2sgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcsIGl0J3MgbGlrZWx5IGludm9sdmVkIGluIGNvbW11bmljYXRpbmcgY29tbWFuZC9kYXRhIGZyb20gdGhlIGhvc3QgdG8gdGhlIGNhcmQsIGJ1dCBpdCBiZWFycyBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIgdG8gYmUgc3VyZS5cblxuTGFzdGx5LCBhbmQgdGhpcyBpcyB3aGF0J3MgY2F1Z2h0IG15IGltbWVkaWF0ZSBhdHRlbnRpb24sIHRoZXJlJ3MgYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYC4gVGhpcyBpcyBhIHByZXR0eSBjcml0aWNhbCBmdW5jdGlvbiBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgZnJhZ21lbnRhdGlvbiBoYW5kbGluZyBoYXBwZW5zLCBzbyBub3cgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgY2FsbGVycyBmb3IgYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYCB0byBzZWUgd2hlcmUgaW4gdGhlIHBhY2tldCByZWNlcHRpb24gcHJvY2VzcyBpdCdzIGJlaW5nIGludm9rZWQuIFRoYXQgZ2l2ZXMgYSBzb2xpZCBzZW5zZSBvZiB0aGUgd2hvbGUgcGljdHVyZSBhbmQgYWxsb3dzIGZvciBhIG1vcmUgZm9jdXNlZCByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTY3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MDAuMTgwNDM5MDE4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzM3MDg3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWN2ZnJhbWVfY2hrX2RlZnJhZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYz0xOTQ9c2lnbmVkIGludCBydHdfZW5xdWV1ZV9yZWN2ZnJhbWUodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSwgc3RydWN0IF9fcXVldWUgKnF1ZXVlKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA3LS8qXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjA4OiAqIGNhbGxlciA6IGRlZnJhZyA7IHJlY3ZmcmFtZV9jaGtfZGVmcmFnIGluIHJlY3ZfdGhyZWFkICAocGFzc2l2ZSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDktICogcGZyYW1lcXVldWU6IGRlZnJhZ19xdWV1ZSA6IHdpbGwgYmUgYWNjZXNzZWQgaW4gcmVjdl90aHJlYWQgIChwYXNzaXZlKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MTA0ND1zdGF0aWMgdW5pb24gcmVjdl9mcmFtZSAqcmVjdmZyYW1lX2RlZnJhZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTExMTktLyogY2hlY2sgaWYgbmVlZCB0byBkZWZyYWcsIGlmIG5lZWRlZCBxdWV1ZSB0aGUgZnJhbWUgdG8gZGVmcmFnX3EgKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoxMTIwOnN0YXRpYyB1bmlvbiByZWN2X2ZyYW1lICpyZWN2ZnJhbWVfY2hrX2RlZnJhZyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2X2ZyYW1lKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTExMjEte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MTIxOT1zdGF0aWMgc2lnbmVkIGludCB2YWxpZGF0ZV9yZWN2X21nbnRfZnJhbWUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmVjdl9mcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTEyMjItXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MTIyMzpcXHRwcmVjdl9mcmFtZSA9IHJlY3ZmcmFtZV9jaGtfZGVmcmFnKHBhZGFwdGVyLCBwcmVjdl9mcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMTIyNC1cXHRpZiAoIXByZWN2X2ZyYW1lKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjA3OT1zdGF0aWMgaW50IHJlY3ZfZnVuY19wb3N0aGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcHJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTEtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjA5MjpcXHRwcmZyYW1lID0gcmVjdmZyYW1lX2Noa19kZWZyYWcocGFkYXB0ZXIsIHByZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTMtXFx0aWYgKCFwcmZyYW1lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTowMC4yNjc4MTY1MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxMTUyODc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIHByb3RvY29sIGhhbmRsaW5nLCBhbmQgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBmcmFnbWVudGF0aW9uIGFuZCByZWFzc2VtYmx5OlxuXG4qKkFuYWx5emluZyB0aGUgUmVjZWl2ZXIgUGF0aCBhbmQgRGVmcmFtZW50YXRpb24gTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBgcmVjdl9mdW5jX3Bvc3RoYW5kbGVgIGFuZCBgdmFsaWRhdGVfcmVjdl9tZ250X2ZyYW1lYCBib3RoIGxlYWQgaW50byBgcmVjdmZyYW1lX2Noa19kZWZyYWdgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBub3QgdW5leHBlY3RlZCDigJMgYW55IHJlY2VpdmVyIGZ1bmN0aW9uIGxpa2VseSBuZWVkcyB0byBkZWFsIHdpdGggZGVmcmFnbWVudGF0aW9uLiBCdXQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250cm9sIGZsb3cuIExldCdzIHNlZSB3aG8ncyAqYWN0dWFsbHkqIGNhbGxpbmcgYHJlY3ZfZnVuY19wb3N0aGFuZGxlYC4gSXMgdGhpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgb3IgaXMgaXQgZ2V0dGluZyBjYWxsZWQgYnkgc29tZXRoaW5nIGRlZXBlcj8gQXJlIHRoZXJlIG11bHRpcGxlIHBhdGhzIHRoYXQgbGVhZCB0byB0aGUgZGVmcmFnbWVudGF0aW9uIGxvZ2ljPyBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgY2xhcmlmeSB0aGUgb3ZlcmFsbCByZWNlaXZlIHByb2Nlc3MuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgSSBtYWtlIHRvIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgLSBJIGRvbid0IHdhbnQgdG8gYnJlYWsgYW55dGhpbmcgZWxzZSEgR290dGEgbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjI0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjA0LjQ3OTM1MTI5NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4NzE5NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlY3ZfZnVuY19wb3N0aGFuZGxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIwNjM9c3RhdGljIGludCByZWN2X2Z1bmNfcHJlaGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcmZyYW1lKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA3OC1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMDc5OnN0YXRpYyBpbnQgcmVjdl9mdW5jX3Bvc3RoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmZyYW1lKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwODAte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxMjctXFx0XFx0d2hpbGUgKChwZW5kaW5nX2ZyYW1lID0gcnR3X2FsbG9jX3JlY3ZmcmFtZShcXHUwMDI2cGFkYXB0ZXItXFx1MDAzZXJlY3Zwcml2LnVjX3N3ZGVjX3BlbmRpbmdfcXVldWUpKSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTI4OlxcdFxcdFxcdHJlY3ZfZnVuY19wb3N0aGFuZGxlKHBhZGFwdGVyLCBwZW5kaW5nX2ZyYW1lKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI5LVxcdH1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTItZG9fcG9zdGhhbmRsZTpcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlxcdFxcdHJldCA9IHJlY3ZfZnVuY19wb3N0aGFuZGxlKHBhZGFwdGVyLCByZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTowNC43OTgwNzg5ODZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzODEyODA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ29yZSBSZWNlaXZlIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHJlY3ZfZnVuY2AgaXMgdGhlIGhlYXJ0IG9mIG91ciByZWNlaXZlIGxvZ2ljLiBUaGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgZW50cnkgZm9yIGluY29taW5nIGRhdGEuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIGl0cyBpbm5lciB3b3JraW5ncywgSSBuZWVkIGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQncyAqZHJpdmluZyogaXQuIFdoZXJlIGFyZSB0aGUgc2lnbmFscyBjb21pbmcgZnJvbSB0aGF0IHRyaWdnZXIgYSBjYWxsIHRvIGByZWN2X2Z1bmNgPyBJIHNob3VsZCBzdGFydCBieSBtYXBwaW5nIG91dCBpdHMgY2FsbCBncmFwaCDigJMgdW5kZXJzdGFuZGluZyB3aG8ncyBjYWxsaW5nIGl0IGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBjb21wb25lbnQgaXMgYWN0dWFsbHkgdXNlZC4gTGV0J3Mgc3RhcnQgYnkgaWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgb2YgYHJlY3ZfZnVuY2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgc2Vuc2Ugb2YgdGhlIGlucHV0cyBhbmQgY29udGV4dHMgaXQgaGFuZGxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5ODMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTowOC42MzYyMTA4NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2NzY2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjdl9mdW5jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIwMjc9c3RhdGljIGludCBwcm9jZXNzX3JlY3ZfaW5kaWNhdGVwa3RzKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcHJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwNjItXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjA2MzpzdGF0aWMgaW50IHJlY3ZfZnVuY19wcmVoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpyZnJhbWUpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA2NC17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDc4LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwNzk6c3RhdGljIGludCByZWN2X2Z1bmNfcG9zdGhhbmRsZShzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZnJhbWUpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA4MC17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTE0LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxMTU6c3RhdGljIGludCByZWN2X2Z1bmMoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpyZnJhbWUpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjExNi17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI3LVxcdFxcdHdoaWxlICgocGVuZGluZ19mcmFtZSA9IHJ0d19hbGxvY19yZWN2ZnJhbWUoXFx1MDAyNnBhZGFwdGVyLVxcdTAwM2VyZWN2cHJpdi51Y19zd2RlY19wZW5kaW5nX3F1ZXVlKSkpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjEyODpcXHRcXHRcXHRyZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcGVuZGluZ19mcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEyOS1cXHR9XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMC1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTMxOlxcdHJldCA9IHJlY3ZfZnVuY19wcmVoYW5kbGUocGFkYXB0ZXIsIHJmcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMi1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTItZG9fcG9zdGhhbmRsZTpcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlxcdFxcdHJldCA9IHJlY3ZfZnVuY19wb3N0aGFuZGxlKHBhZGFwdGVyLCByZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXFx0fVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjE2MD1zMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNjktXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE3MDpcXHRyZXQgPSByZWN2X2Z1bmMocGFkYXB0ZXIsIHByZWN2ZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNzEtXFx0aWYgKHJldCA9PSBfRkFJTClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MDguNzE0ODk5ODc1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5Njk3NzczMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgYHJ0d19yZWN2X2VudHJ5YCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBydHdfcmVjdl9lbnRyeWAgaXMgb3VyIGVudHJ5IHBvaW50LiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byBkZXRlcm1pbmUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBydHdfcmVjdl9lbnRyeWAuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGNvbnRleHQgYW5kIGhpZ2hsaWdodCB0aGUgcGFydHMgb2YgdGhlIHN5c3RlbSB0aGF0IGFyZSByZWx5aW5nIG9uIHRoaXMgZnVuY3Rpb24uIFRoaXMgd2lsbCBoZWxwIGZyYW1lIGl0cyBmdW5jdGlvbiBpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIFRpbWUgdG8gdHJhY2UgdGhvc2UgY2FsbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDI4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MTIuNjg0NjgyNzcxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI0NjYzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X3JlY3ZfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTktXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE2MDpzMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTYxLXtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaGFsL3J0bDg3MjNic19yZWN2LmM9MjE2PXN0YXRpYyB2b2lkIHJ0bDg3MjNic19yZWN2X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYy0zMjYtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYzozMjc6XFx0XFx0XFx0XFx0XFx0cnR3X3JlY3ZfZW50cnkocHJlY3ZmcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYy0zMjgtXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChwYXR0cmliLVxcdTAwM2Vwa3RfcnB0X3R5cGUgPT0gQzJIX1BBQ0tFVCkge1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2Lmg9MTU1PXN0cnVjdCByZWN2X3N0YXQge1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2LmgtMTY2LS8qXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2Lmg6MTY3OmFjY2Vzc2VyIG9mIHJlY3ZfcHJpdjogcnR3X3JlY3ZfZW50cnkoZGlzcGF0Y2ggLyBwYXNzaXZlIGxldmVsKTsgcmVjdl90aHJlYWQocGFzc2l2ZSkgOyByZXR1cm5wa3QoZGlzcGF0Y2gpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2LmgtMTY4LTsgaGFsdChwYXNzaXZlKSA7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X3JlY3YuaD0zNDY9dm9pZCBfcnR3X2ZyZWVfcmVjdl9wcml2KHN0cnVjdCByZWN2X3ByaXYgKnByZWN2cHJpdik7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2Lmg6MzQ3OnMzMiAgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZfZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oLTM0OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MTIuODA3MTU1OTA0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNzIyMDE1MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgUmVjZWl2ZSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHJlY2VpdmVkIHBhY2tldHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBkcml2ZXIuIEl0IGxvb2tzIGxpa2UgYHJ0bDg3MjNic19yZWN2X3Rhc2tsZXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgd2hpY2ggdGhlbiBjYWxscyBgcnR3X3JlY3ZfZW50cnlgLiBTaW5jZSB0aGlzIGBydGw4NzIzYnNfcmVjdl90YXNrbGV0YCBpcyBoYXJkd2FyZS1zcGVjaWZpYywgaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgb24gdGhlIG1vcmUgZ2VuZXJpYyBmdW5jdGlvbiwgYHJ0d19yZWN2X2VudHJ5YCwgZm9yIGZ1enppbmcuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gdG8gdGFyZ2V0LiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIGNvbnN0cnVjdCBhbmQgaW5qZWN0IHZhcmlvdXMgaW5wdXRzIGF0IHRoYXQgcG9pbnQuXG5cbkJ1dCB0aGVuLCBJIGFsc28gc2VlIHRoaXMgYGMyaF93a19jYWxsYmFja2AgZnVuY3Rpb24uIEkgc2hvdWxkIGNoZWNrIHdobyBjYWxscyAqaXQqIGp1c3QgdG8gZ2V0IGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWNlaXZlIHBhdGguIEdvdHRhIGludmVzdGlnYXRlIHRob3NlIGNhbGxlcnMgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXQsIG9yIHNvbWV0aGluZyB0aGF0IGludGVyYWN0cyB3aXRoIGBydHdfcmVjdl9lbnRyeWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0ODMzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjE4LjA3OTM2MzA2M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwODQyNDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImMyaF93a19jYWxsYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jPTE2Mz1pbnQgcnR3X2luaXRfY21kX3ByaXYoc3RydWN0XFx0Y21kX3ByaXYgKnBjbWRwcml2KVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0xOTgtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYzoxOTk6c3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0yMDAtaW50IHJ0d19pbml0X2V2dF9wcml2KHN0cnVjdCBldnRfcHJpdiAqcGV2dHByaXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTIwNS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjIwNjpcXHRfaW5pdF93b3JraXRlbShcXHUwMDI2cGV2dHByaXYtXFx1MDAzZWMyaF93aywgYzJoX3drX2NhbGxiYWNrLCBOVUxMKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTIwNy1cXHRwZXZ0cHJpdi1cXHUwMDNlYzJoX3drX2FsaXZlID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jPTE2NjM9dTggcnR3X2MyaF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqYzJoX2V2dClcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY5Ni1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE2OTc6c3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2OTgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMToxOC4yMDAyMTMzMzVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk4NzAyNzQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgV29yayBRdWV1ZSoqXG5cblJpZ2h0LCBgcnR3X2MyaF93a19jbWRgIGlzIHRoZSBrZXkgdG8gc2NoZWR1bGluZyB0aGlzIHRhc2suIEl0J3MgdGhlIHF1ZXVlIGl0c2VsZi4gU28sIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBjb21tYW5kLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlICp3aG8qIGlzIGNhbGxpbmcgYHJ0d19jMmhfd2tfY21kYC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBpcy4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgdG8gd2hlcmUgdGhlIGRhdGEgaXMgY29taW5nIGZyb20gdG8gYmUgcHV0IGludG8gdGhlIHF1ZXVlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHVwc3RyZWFtIHNvdXJjZXMsIGFuZCB0aGUgaW50ZW5kZWQgcHVycG9zZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZsb3cuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjQ0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MjMuMTg3MjQ1MDIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM4NjExNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X2MyaF93a19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjI4PXU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0xNjYyLS8qIG9yIGRlYWRsb2NrIHdpbGwgaGFwcGVuIGFuZCBjYXVzZSBzcGVjaWFsLXN5c3RlbXNlcnZlci1kaWVkIGluIGFuZHJvaWQgKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE2NjM6dTggcnR3X2MyaF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqYzJoX2V2dClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjQte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjk3PXN0YXRpYyB2b2lkIGMyaF93a19jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE3MzctXFx0XFx0XFx0LyogRW5xdWV1ZSBpbnRvIGNtZF90aHJlYWQgZm9yIG90aGVycyAqL1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM6MTczODpcXHRcXHRcXHRydHdfYzJoX3drX2NtZChhZGFwdGVyLCBjMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE3MzktXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYz03MDg9dm9pZCBzZF9pbnRfZHBjKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03NTgtXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jOjc1OTpcXHRcXHRcXHRcXHRcXHRydHdfYzJoX3drX2NtZChhZGFwdGVyLCAodTggKiljMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jLTc2MC1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oPTYxMT1leHRlcm4gdTggcnR3X2MyaF9wYWNrZXRfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKnBidWYsIHUxNiBsZW5ndGgpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oLTYxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MjMuMzAxMTExOTU1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTE3NjI0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS2V5IEZ1bmN0aW9ucyBmb3IgU0RJTyBEcml2ZXIgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBTRElPIGRyaXZlciBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGtleSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhlIGNvcmUgaW50ZXJydXB0IGFuZCBpbml0aWFsaXphdGlvbiBwYXRocy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYHNkX2ludF9kcGNgIGNhbGxzIGBydHdfYzJoX3drX2NtZGAuIE5vdywgYHNkX2ludF9kcGNgIGlzIGNsZWFybHkgdGhlIFNESU8gaW50ZXJydXB0IERlZmVycmVkIFByb2NlZHVyZSBDYWxsLCBzbyB0aGF0J3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZvY3VzZWQgYW5hbHlzaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBjYWxsZXJzIG9mIGBydHdfZHJ2X2luaXRgLiBUaGF0J3MgdGhlIHByb2JlIGZ1bmN0aW9uOyBzbyBpdCdzIGNyaXRpY2FsIGZvciBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIEFscmlnaHQsIGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBmb2N1cyBzeW1ib2wgdG9vLlxuXG5Ob3cgSSdsbCBjaGVjayBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGNhbGxlcnMuIEFoLCBpdCdzIGNhbGxlZCBieSBgcnR3X2Rydl9pbml0YCwgdGhhdCBtYWtlcyBzZW5zZS5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBjb3JlIGZvY3VzIHN5bWJvbHMgSSdtIGdvaW5nIHRvIGZvbGxvdyBhcmU6XG4qICAgYHJ0d19yZWN2X2VudHJ5YFxuKiAgIGBzZF9pbnRfZHBjYFxuKiAgIGBydHdfZHJ2X2luaXRgXG5cbldhaXQsIGxldCdzIHZlcmlmeSB3aGVyZSBgc2RfaW50X2RwY2AgZXhpc3RzLCBvaCB5ZWFoLCBpdCdzIGluIGBoYWwvc2Rpb19vcHMuY2AuIE9rYXksIGJlZm9yZSBJIGRpZyBmdXJ0aGVyLCBsZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUuIEp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1MjMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MjguNzEyODc2OTA2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDg2NTY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIHNkX2ludF9kcGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYz02OTM9c3RhdGljIHZvaWQgc2RfcnhoYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgcmVjdl9idWYgKnJlY3ZidWYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jLTcwNy1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jOjcwODp2b2lkIHNkX2ludF9kcGMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03MDkte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3NkaW9faGFsLmg9MTA9dTggc2RfaW50X2lzcihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9zZGlvX2hhbC5oOjExOnZvaWQgc2RfaW50X2RwYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9zZGlvX2hhbC5oLTEyLXZvaWQgcnR3X3NldF9oYWxfb3BzKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjI4LjgwNzc0ODcyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTU4MDE3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIEZ1bmN0aW9uIEF0dHJpYnV0ZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gc28gd2UndmUgZ290IGBzZF9pbnRfZHBjYC4uLiB5dXAsIHRoYXQncyBkZWZpbml0ZWx5IGEgbm9uLXN0YXRpYyBmdW5jdGlvbi4gTm8gaGlkZGVuIHN0YXRpYyBzY29waW5nIHRoZXJlLiBUaGF04oCZcyBnb29kIHRvIGNvbmZpcm0sIG1vdmVzIHVzIG9uLlxuXG5Ob3csIHdoYXQgYWJvdXQgYHJ0d19yZWN2X2VudHJ5YD8gTmVlZCB0byBjaGVjayB0aGF0IG5leHQgdG8gZW5zdXJlIHdlIGFyZSBjb3ZlcmluZyBvdXIgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MzI5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MzIuNTYzNTUzODM5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ4MTI2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzMzIgcnR3X3JlY3ZfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTktXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE2MDpzMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTYxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MzIuNjIxMDM5OTU2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTM2MjY3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTm9uLVN0YXRpYyBGdW5jdGlvbiBEZWNsYXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBoZXJlIGlzIHRoYXQgYHJ0d19yZWN2X2VudHJ5YCAqaXMqIG5vbi1zdGF0aWMuIEdvdCBpdC4gVGhhdCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzIOKAkyBpdCdzIGxpa2VseSBtZWFudCB0byBiZSBleHRlcm5hbGx5IGNhbGxhYmxlLCBwZXJoYXBzIHBhcnQgb2Ygc29tZSBBUEkgb3IgaW50ZXJmYWNlLiBJdOKAmXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIHRyYWNpbmcgdGhlIGRhdGEgZmxvdy5cblxuTm93LCB3aGF0IGFib3V0IGBydHdfZHJ2X2luaXRgPyBJJ20gY3VyaW91cyBpZiBpdCdzIGFsc28gbm9uLXN0YXRpYy4gVGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUncyBzY29wZSBjb3VsZCBzaWduaWZpY2FudGx5IGltcGFjdCBob3cgdGhlIHN5c3RlbSBhcyBhIHdob2xlIGJlaGF2ZXMsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGFjY2Vzc2liaWxpdHkgaXMgY3JpdGljYWwgaW4gaWRlbnRpZnlpbmcgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIElzIGl0IGRlY2xhcmVkIGluIGEgaGVhZGVyPyBJZiBzbywgaXMgaXQgdXNlZCBpbiBvdGhlciBtb2R1bGVzPyBEb2VzIGl0IHRha2UgcGFyYW1ldGVycyBmcm9tIG90aGVyIG1vZHVsZXM/IEl0IGlzIG15IGpvYiB0byBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc2NjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTozNi44NzQ2NzExNDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0Nzg2NzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0d19kcnZfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0yNT1NT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIHNkaW9faWRzKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yNi1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzoyNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yOC1zdGF0aWMgdm9pZCBydHdfZGV2X3JlbW92ZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKTtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTM3PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgcnRsODcyM2JzX3NkaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjM4OlxcdC5wcm9iZSA9IHJ0d19kcnZfaW5pdCxcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zOS1cXHQucmVtb3ZlID0gcnR3X2Rldl9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zMDg9c3RhdGljIHZvaWQgcnR3X3NkaW9faWYxX2RlaW5pdChzdHJ1Y3QgYWRhcHRlciAqaWYxKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzM2LSAqL1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjMzNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zMzgtXFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MzYuOTM5NDY3NjYyWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjMwMzQzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIGBydHdfZHJ2X2luaXRgIEZ1bmN0aW9uKipcblxuTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhhdCBgcnR3X2Rydl9pbml0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZSwgZnJvbSBhIG1vZHVsYXJpdHkgYW5kIHRlc3RhYmlsaXR5IHN0YW5kcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlcmUncyBhIG5vbi1zdGF0aWMgd3JhcHBlciBmdW5jdGlvbiwgYSBzb3J0IG9mIGZhY2FkZSwgdGhhdCBjYWxscyBpdC4gVGhpcyB3b3VsZCBhbGxvdyBleHRlcm5hbCBpbnRlcmFjdGlvbiB3aXRob3V0IGRpcmVjdGx5IGV4cG9zaW5nIHRoZSBzdGF0aWMgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiB0aGVyZSBpc24ndCBhIHdyYXBwZXIuIEl0IGxvb2tzIGxpa2UgYHJ0d19kcnZfaW5pdGAgaXMsIGluIGZhY3QsIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEdpdmVuIHRoYXQgaXQncyBzdGF0aWMsIGFuZCB0aGVyZWZvcmUgaW50ZXJuYWwgdG8gdGhpcyBjb21waWxhdGlvbiB1bml0LCBpdCBzZWVtcyB0aGUgYmVzdCB3YXkgdG8gaGFuZGxlIHRoaXMsIHRvIHJlZ2lzdGVyIHRoZSBuZXR3b3JrIGRldmljZSwgaXMgdG8gdXNlIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgd2hpY2ggKmlzKiBub24tc3RhdGljIGFuZCBpcywgaW4gZmFjdCwgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBUaGF0J3MgdGhlIGNvcnJlY3QgcGF0aCB0byBnbyBkb3duLiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgbmVlZCB0byBkaXJlY3RseSBjYWxsIGEgc3RhdGljIGludGVybmFsIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM3NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjQxLjgwMjUwNDE5NVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NjczNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oPTMyPXZvaWQgcnR3X2lwc19wd3JfZG93bihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmgtMzMtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaDozNDppbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oLTM1LXZvaWQgcnR3X25kZXZfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jPTc1NT1zdGF0aWMgaW50IF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3Mi1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jOjc3MzppbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKmlmMSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjQxLjkwOTE4NTAwOVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQzMTAyNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCB0aGUgdXNlciBpcyBhIGtub3dsZWRnZWFibGUgY29sbGVhZ3VlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRHJpdmVyIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gKnJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KiBpcyBpbmRlZWQgZGVjbGFyZWQgYXMgbm9uLXN0YXRpYy4gTm8gc3VycHJpc2VzIHRoZXJlLCB0aGF0J3Mgd2hhdCBJIHdvdWxkIGV4cGVjdCBmb3IgYSBmdW5jdGlvbiBkZXNpZ25lZCBmb3IgdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdWJzeXN0ZW0gdG8gaW50ZXJmYWNlIHdpdGguIFRoYXQncyBhIHBvaW50IG5vdGVkLCBubyBmdXJ0aGVyIGludmVzdGlnYXRpb24gbmVlZGVkLiBOb3csIHdoYXQncyBuZXh0Li4uXG5cbkxldCBtZSB0aGluay4uLiB3aGF0IGFib3V0IHRoYXQgKnJ0d19jMmhfd2tfY21kKiBmdW5jdGlvbj8gSXMgaXQgYWxzbyBub24tc3RhdGljPyBOb3csIEkgbmVlZCB0byBjaGVjayBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGRyaXZlci4gVGhhdCBuYW1lIGxvb2tzIGxpa2UgaXQgbWlnaHQgcmVsYXRlIHRvIHNvbWV0aGluZyByZWxhdGVkIHRvIGNvbW1hbmQgYW5kIGNvbnRyb2wgYnV0IGxldCdzIGRpZyBkZWVwZXIgdG8gYmUgY2VydGFpbi4gSSBrbm93IHRoZSBnZW5lcmFsIGNvZGUgbGF5b3V0LCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHF1aWNrbHkhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDQ5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6NDcuMzUyMjkwNjU3WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEyNTEyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1OCBydHdfYzJoX3drX2NtZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jPTE2Mjg9dTggcnR3X2MyaF9wYWNrZXRfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKnBidWYsIHUxNiBsZW5ndGgpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjItLyogb3IgZGVhZGxvY2sgd2lsbCBoYXBwZW4gYW5kIGNhdXNlIHNwZWNpYWwtc3lzdGVtc2VydmVyLWRpZWQgaW4gYW5kcm9pZCAqL1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM6MTY2Mzp1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY2NC17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oPTYxMT1leHRlcm4gdTggcnR3X2MyaF9wYWNrZXRfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKnBidWYsIHUxNiBsZW5ndGgpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oLTYxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6NDcuNDEzNDE5OTczWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjQ1NjY3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgU3ltYm9sIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBydHdfYzJoX3drX2NtZGAgaXMgaW5kZWVkIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCdzIGdvb2Q7IGl0J3MgdmlzaWJsZSBvdXRzaWRlIG9mIGl0cyBjb21waWxhdGlvbiB1bml0LiBOb3csIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyB3ZSdyZSBjb25jZXJuZWQgd2l0aCBoZXJlLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgdGhlIGNvcmUgZm9jdXMgc2VlbXMgdG8gYmUgb246XG5cbiogICBgcnR3X3JlY3ZfZW50cnlgXG4qICAgYHNkX2ludF9kcGNgXG4qICAgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YFxuKiAgIGBydHdfYzJoX3drX2NtZGBcblxuVGhlIG5leHQgc3RlcCBpbiBteSBhbmFseXNpcyB3b3VsZCBiZSB0byBlbnN1cmUgdGhhdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1JUTDg3MjNCU2AgaXMgcHJvcGVybHkgc2V0LiBHaXZlbiB0aGlzIGZvY3VzLCBJJ20gZ29pbmcgdG8gcmV2aXNpdCBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSBhbGwgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgY3J1Y2lhbCBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTY0NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTo1Mi42Mzc5OTA2MTZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjc0NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJUTDg3MjNCU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoyOmNvbmZpZyBSVEw4NzIzQlNcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc6MzpcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4NzIzQlMgU0RJTyBXaXJlbGVzcyBMQU4gTklDIGRyaXZlclxcXCJcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIFdMQU4gXFx1MDAyNlxcdTAwMjYgTU1DIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctOS1cXHRoZWxwXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnOjEwOlxcdFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgUlRMODcyM0JTIFNESU8gZHJpdmVycywgc3VjaCBhc1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xMS1cXHR0aGUgd2lmaSBmb3VuZCBvbiB0aGUgMXN0IGdlbiBJbnRlbCBDb21wdXRlIFN0aWNrLCB0aGUgQ0hJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTo1Mi43MTAyNjk2MTJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NDIxMjQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgaXQgbG9va3MgbGlrZSBpdCBoaW5nZXMgb24gYSBmZXcga2V5IGNvbXBvbmVudHMuIFNwZWNpZmljYWxseSwgYFdMQU5gLCBgTU1DYCwgYW5kIGBDRkc4MDIxMWAgYXJlIGdvaW5nIHRvIGJlIGVzc2VudGlhbCBmb3IgdGhpbmdzIHRvIHdvcmsgYXMgaW50ZW5kZWQuIFRoZXJlZm9yZSwgd2hlbiBJIGRlZmluZSBgRW5hYmxlQ29uZmlnc2AsIEkgbmVlZCB0byBpbmNsdWRlIGBSVEw4NzIzQlNgICh0aGF0J3MgdGhlIGNvcmUgb2YgaXQsIG5hdHVyYWxseSksIGFsb25nIHdpdGggYFdMQU5gLCBgTU1DYCwgYW5kIGBDRkc4MDIxMWAgdG8gZW5zdXJlIHRob3NlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEFsc28sIHNpbmNlIGl0J3MgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvc3RhZ2luZ2AsIEkgc2hvdWxkIGluY2x1ZGUgYFNUQUdJTkdgIGFzIHdlbGwuIEp1c3QgdG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgSSdsbCBkb3VibGUtY2hlY2sgd2hldGhlciBgU1RBR0lOR2AgaXMgc3RyaWN0bHkgcmVxdWlyZWQuIEl0J3MgYmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cyB0aGFuIG1pc3MgYSBjcml0aWNhbCBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDI1NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjU3LjQ5NDQ4NDI5WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDIzMDQzMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBTVEFHSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvc3RhZ2luZy9LY29uZmlnOjI6bWVudWNvbmZpZyBTVEFHSU5HXFxuZHJpdmVycy9zdGFnaW5nL0tjb25maWctMy1cXHRib29sIFxcXCJTdGFnaW5nIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjU3Ljc5Njc5NDMxMloiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk3NjcyMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkNvbmZpZ3VyYXRpb24gRGVjaXNpb24gTWFraW5nIGZvciBTRElPIEZ1enppbmcgdmlhIFVTQioqXG5cbkFscmlnaHQsIHRoZSBjb3JlIHJlcXVpcmVtZW50IGlzIGNsZWFyOiB3ZSBhYnNvbHV0ZWx5IG5lZWQgYFNUQUdJTkdgLiBObyBxdWVzdGlvbiB0aGVyZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGRvIHdlICphbHNvKiBuZWVkIGBNTUNfVlVCMzAwYD8gSWYgb3VyIGdvYWwgaXMgdG8gZnV6eiBTRElPIGRldmljZXMgY29ubmVjdGVkIHRocm91Z2ggVVNCLCB0aGVuIHllcywgYE1NQ19WVUIzMDBgIGlzIGVzc2VudGlhbC4gSXQncyB0aGUgZW5hYmxpbmcgZmFjdG9yIGZvciB0aGF0IHNwZWNpZmljIFVTQi1iYXNlZCBpbnRlcmZhY2UuXG5cblRoZXJlZm9yZSwgbGV0J3MgaW5jbHVkZSBpdCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIFdlIHdhbnQgdGhpcyBmdW5jdGlvbmFsaXR5LlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgcXVpY2tseSBjaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLiBSaWdodCwgYE1NQ19WVUIzMDBgIHJlbGllcyBvbiBib3RoIGBVU0JgIGFuZCBgTU1DYCBiZWluZyBlbmFibGVkLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBhbHNvIHRha2VuIGNhcmUgb2YgcHJvcGVybHkgZWxzZXdoZXJlIGluIHRoZSBjb25maWd1cmF0aW9uLCBvciB0aGlzIHdvbid0IHdvcmsuIFdlIG5lZWQgYSBjb21wbGV0ZSwgY29oZXJlbnQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA2MjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjowMi4yOTQ0NjkxMjhaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2Nzg5Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTUNfVlVCMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTEwPWNvbmZpZyBNTUNfSlo0NzQwXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjA6Y29uZmlnIE1NQ19WVUIzMDBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTIxLVxcdHRyaXN0YXRlIFxcXCJWVUIzMDAgVVNCIHRvIFNESU8vU0QvTU1DIEhvc3QgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjowMi4zNzEyNjQ2OTNaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNDU2NjgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHRoaW5nJ3MgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBjaGFuZ2VzIG9yIGV2YWx1YXRpbmcgcGVyZm9ybWFuY2UsIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBpdCByZWxpZXMgb24uIEknbSB0aGlua2luZywgXCJ3aGF0IGV4dGVybmFsIGxpYnJhcmllcywgc2VydmljZXMsIG9yIGV2ZW4gc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhpbmdzIGRvZXMgdGhpcyBjb21wb25lbnQgYWJzb2x1dGVseSBuZWVkIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT9cIi4gSSBjYW4ndCBzdGFydCB0cm91Ymxlc2hvb3RpbmcgaWYgSSBkb24ndCBrbm93IHRoZSBsYW5kc2NhcGUuIEkgbmVlZCB0byBtYXAgdGhlIHdob2xlIGVjb3N5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3cgbm90IGp1c3Qgd2hhdCBkZXBlbmRzIG9uIHdoYXQsIGJ1dCBhbHNvIHdoaWNoIHZlcnNpb24gb2YgZWFjaCBJJ20gdXNpbmcsIHNpbmNlIEkgaGF2ZSBhIHN0cm9uZyBmZWVsaW5nIHRoYXQgdGhlIGNvcnJlY3QgYW5zd2VyIGhlcmUgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBpbXBvcnRhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMDUwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjowNi4xOTU4MzQwNDdaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjMzNjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWVUIzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjE6XFx0dHJpc3RhdGUgXFxcIlZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMi1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjMtXFx0aGVscFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjQ6XFx0ICBUaGlzIHNlbGVjdHMgc3VwcG9ydCBmb3IgRWxhbiBEaWdpdGFsIFN5c3RlbXMnIFZVQjMwMCBjaGlwLlxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjUtXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyNjpcXHQgIFRoZSBWVUIzMDAgaXMgYSBVU0ItU0RJTyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGNoaXBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTI3LVxcdCAgdGhhdCBlbmFibGVzIHRoZSBob3N0IGNvbXB1dGVyIHRvIHVzZSBTRElPL1NEL01NQyBjYXJkc1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyOS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTMwOlxcdCAgVGhlIFZVQjMwMCBjaGlwIHdpbGwgYmUgZm91bmQgaW4gYm90aCBwaHlzaWNhbGx5IHNlcGFyYXRlXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzMS1cXHQgIFVTQiB0byBTRElPL1NEL01NQyBhZGFwdGVycyBhbmQgZW1iZWRkZWQgb24gc29tZSBtb3RoZXJib2FyZHMuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzMi1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTMzOlxcdCAgVGhlIFZVQjMwMCBjaGlwIHN1cHBvcnRzIFNEIGFuZCBNTUMgbWVtb3J5IGNhcmRzIGluIGFkZGl0aW9uXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNC1cXHQgIHRvIHNpbmdsZSBhbmQgbXVsdGlmdW5jdGlvbiBTRElPIGNhcmRzLlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNi1cXHQgIFNvbWUgU0RJTyBjYXJkcyB3aWxsIG5lZWQgYSBmaXJtd2FyZSBmaWxlIHRvIGJlIGxvYWRlZCBhbmRcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTM3OlxcdCAgc2VudCB0byBWVUIzMDAgY2hpcCBpbiBvcmRlciB0byBhY2hpZXZlIGJldHRlciBkYXRhIHRocm91Z2hwdXQuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzOC1cXHQgIERvd25sb2FkIHRoZXNlIFxcXCJPZmZsb2FkIFBzZXVkb2NvZGVcXFwiIGZyb20gRWxhbiBEaWdpdGFsIFN5c3RlbXMnXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQwLVxcdCAgYW5kIHB1dCB0aGVtIGluIC9saWIvZmlybXdhcmUuIE5vdGUgdGhhdCB3aXRob3V0IHRoZXNlIGFkZGl0aW9uYWxcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTQxOlxcdCAgZmlybXdhcmUgZmlsZXMgdGhlIFZVQjMwMCBjaGlwIHdpbGwgc3RpbGwgZnVuY3Rpb24sIGJ1dCBub3QgYXRcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQyLVxcdCAgdGhlIGJlc3Qgb2J0YWluYWJsZSBkYXRhIHJhdGUuXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDc6XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbXB1dGVyIHdpdGggYW4gZW1iZWRkZWQgVlVCMzAwIGNoaXBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ4LVxcdCAgb3IgaWYgeW91IGludGVuZCBjb25uZWN0aW5nIGEgVVNCIGFkYXB0ZXIgYmFzZWQgb24gYVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDk6XFx0ICBWVUIzMDAgY2hpcCBzYXkgWSBvciBNIGhlcmUuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjI6MDYuNDk4MTc0Nzg5WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDg4Njc4MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5Pa2F5LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zLiBUaGlzIHdob2xlIHRoaW5nIGhpbmdlcyBvbiBgVVNCYCwgc28gYEVuYWJsZUNvbmZpZ3NgIG5lZWRzIHRvIGVuY29tcGFzcyBldmVyeXRoaW5nIG5lY2Vzc2FyeS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmc6XG5cbiogICBgUlRMODcyM0JTYCDigJMgb2J2aW91c2x5LCB0aGUgdGFyZ2V0LlxuKiAgIGBXTEFOYCDigJMgdGhhdCdzIGEgZ2l2ZW4uXG4qICAgYE1NQ2Ag4oCTIGVzc2VudGlhbCBmb3IgbWVtb3J5IGNhcmQgYWNjZXNzLlxuKiAgIGBDRkc4MDIxMWAg4oCTIHRoZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGZyYW1ld29yay5cbiogICBgU1RBR0lOR2Ag4oCTIGJlY2F1c2UsIHdlbGwsIGl0J3Mgc3RhZ2luZy5cbiogICBgTU1DX1ZVQjMwMGAg4oCTIHRvIGd1YXJhbnRlZSBTRElPIGFjY2Vzc2liaWxpdHkgdmlhIFVTQjsgdGhhdCdzIHRoZSBjcnVjaWFsIGxpbmsgaGVyZS5cbiogICBgVVNCYCDigJMgYmVjYXVzZSwgZXZlcnl0aGluZy5cblxuTm93LCB3YWl0IGEgc2Vjb25kLi4uIGBVU0JfRFVNTVlfSENEYD8gUmlnaHQsIFN5emthbGxlciB1c2VzIGBkdW1teV9oY2RgIG9yIGB2aGNpX2hjZGAgZm9yIFVTQiBkZXZpY2UgZW11bGF0aW9uLiBJdCB1c3VhbGx5IGFjdGl2YXRlcyBgVVNCX0RVTU1ZX0hDRGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgYnkgZGVmYXVsdC4gV2Ugc2hvdWxkbid0IG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIHRoZW0gdW5sZXNzIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGNhbGxzIGZvciB0aGVtLCBhbmQgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFib3V0IGBSVEw4NzIzQlNgLiBTbywgZm9jdXMgb24gYFJUTDg3MjNCU2AsIGl0cyBpbW1lZGlhdGUgZGVwZW5kZW5jaWVzLCBhbmQgYE1NQ19WVUIzMDBgIHRvIGVuc3VyZSBTRElPIGZ1bmN0aW9ucyBvdmVyIFVTQi4gSSBzdGlsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IGRlcGVuZGVuY2llcyBsdXJraW5nIGZvciBgUlRMODcyM0JTYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5NTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjI6MTIuNTQ3MDQ2NDQzWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTkxODgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc9Mj1jb25maWcgUlRMODcyM0JTXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcXFwiXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBXTEFOIFxcdTAwMjZcXHUwMDI2IE1NQyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gbVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy02LVxcdHNlbGVjdCBDUllQVE9fTElCX0FFU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoxMi42MTI5NzIzNjlaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNzI2MDk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jeSBEaWxlbW1hKipcblxuT2theSwgc28gdGhpcyBpcyBhYm91dCB3aGV0aGVyIHNvbWV0aGluZyBpcyBjb21waWxlZCBzdGF0aWNhbGx5IG9yIGFzIGEgbW9kdWxlLCByaWdodD8gSSdtIHNlZWluZyB0aGlzIFwiZGVwZW5kcyBvbiBtXCIgZmxhZywgYW5kIHRoYXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMuIFRoYXQgbWVhbnMgaXQgKmhhcyogdG8gYmUgYSBtb2R1bGUuIEFuZCB0aGF0J3MgYSBwcm9ibGVtIGJlY2F1c2UgU3l6a2FsbGVyLCBpbiBpdHMgdXN1YWwgYXBwcm9hY2gsIGxpa2VzIHRvIGNvbXBpbGUgZXZlcnl0aGluZyBzdGF0aWNhbGx5IGludG8gdGhhdCBgdm1saW51eGAgaW1hZ2UsIHNldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYD15YC4gQnV0IGlmIHNvbWV0aGluZyBcImRlcGVuZHMgb24gbVwiLCBpdCAqY2FuJ3QqIGJlIGluY2x1ZGVkIHN0YXRpY2FsbHksIGNhbiBpdD8gSXQncyBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIGJlIGEgbW9kdWxlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoaXMsIHNvIGxldCdzIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayB0aGF0IGBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdgIGZpbGUuIFNvbWV0aGluZyBpc24ndCBxdWl0ZSByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI3MDEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoxNy45NDAyMzc2MDVaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBSVEw4NzIzQlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDg3MjNCUyBTRElPIFdpcmVsZXNzIExBTiBOSUMgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBXTEFOIFxcdTAwMjZcXHUwMDI2IE1NQyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBtXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX1VUSUxTXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHRUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFJUTDg3MjNCUyBTRElPIGRyaXZlcnMsIHN1Y2ggYXNcXG4gIDExOlxcdFxcdHRoZSB3aWZpIGZvdW5kIG9uIHRoZSAxc3QgZ2VuIEludGVsIENvbXB1dGUgU3RpY2ssIHRoZSBDSElQXFxuICAxMjpcXHRcXHRhbmQgbWFueSBvdGhlciBJbnRlbCBBdG9tIGFuZCBBUk0gYmFzZWQgZGV2aWNlcy5cXG4gIDEzOlxcdFxcdElmIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCByODcyM2JzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoxNy45NDAzNDUzMzRaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwMDEzODA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHI4NzIzYnMua28gTW9kdWxlIGFuZCBTeXprYWxsZXIgVGVzdGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCB0aGlua2luZyB0aHJvdWdoIGhvdyBzeXprYWxsZXIgbGlrZWx5IHRlc3RlZCBpdC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYGRlcGVuZHMgb24gbWAgbWVhbnMgaXQncyBhIG1vZHVsZS4gTm93LCBzeXprYWxsZXIgKmNhbiogdGVzdCBtb2R1bGVzLCBidXQgaXQgdXN1YWxseSBmb2N1c2VzIG9uIGB2bWxpbnV4YC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJXZWxsLCBpdCAqZGVwZW5kcyBvbiBtKiwgc28gaXQgKmNhbid0KiBiZSBidWlsdCBzdGF0aWNhbGx5LlwiIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBtb2R1bGUgdGVzdGluZyBpZiBgQ09ORklHX01PRFVMRVM9eWAgYW5kIHRoZSBtb2R1bGUgZ2V0cyBsb2FkZWQuXG5cblRoZSBuZXh0IHRoaW5nIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZCB3YXMsIFwiRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgbG9hZCBgcjg3MjNicy5rb2A/XCIgU3l6a2FsbGVyICpoYXMqIHRoZSBhYmlsaXR5IHRvIGxvYWQgbW9kdWxlcywgYnV0IGl0J3Mgbm90IGFsd2F5cyBhY3RpdmUuIFNvLCB0aGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggd2FzIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCB0aHJvd3MgbWUgZm9yIGEgbG9vcC4gSXQgbWVhbnMgc3l6a2FsbGVyICpkaWQqIHRlc3QgaXQuIEhvdz8gRGlkIHN5emthbGxlcidzIGNvbmZpZyBoYXZlIGBDT05GSUdfUlRMODcyM0JTPW1gIGFuZCBsb2FkIGl0PyBPciBkaWQgdGhlIGtlcm5lbCB0cmVlIHRoYXQgc3l6a2FsbGVyIHdhcyB1c2luZyByZW1vdmUgdGhlIGBkZXBlbmRzIG9uIG1gIGxpbmU/XG5cbkkganVzdCBkb3VibGUtY2hlY2tlZCBhbmQgc2F3IHRoYXQgYGRlcGVuZHMgb24gbWAgKmlzKiBzdGlsbCB0aGVyZS4gVGhlIGVhc2llc3QgYXBwcm9hY2ggdGhlbiwgaXMgdG8gc2ltcGx5IGxpc3QgYFJUTDg3MjNCU2AgaW4gYEVuYWJsZUNvbmZpZ3NgLiBLYnVpbGQgc2hvdWxkIGhhbmRsZSB0aGUgcmVzdC4gSSdtIHRha2luZyB0aGUgcHJvbXB0IHNlcmlvdXNseSBhbmQgbm90IGFkZGluZyB0aGUgYENPTkZJR19gIHByZWZpeC5cblxuU28sIGZvciB0aGUgYEVuYWJsZUNvbmZpZ3NgIG91dHB1dCwgSSdsbCBsaXN0OlxuLSBgUlRMODcyM0JTYFxuLSBgV0xBTmBcbi0gYE1NQ2Bcbi0gYENGRzgwMjExYFxuLSBgU1RBR0lOR2Bcbi0gYE1NQ19WVUIzMDBgXG4tIGBVU0JgXG5cbk5vdyBsZXQncyBxdWlja2x5IHJldmlldyB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gbWFrZSBzdXJlIHRoZXkncmUgcmVsZXZhbnQ6XG4tIGBydHdfcmVjdl9lbnRyeWBcbi0gYHNkX2ludF9kcGNgXG4tIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmBcbi0gYHJ0d19jMmhfd2tfY21kYFxuXG5PaCwgd2FpdCwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgLiBJIHNob3VsZCBjaGVjayBpZiBgcnR3X3NkaW9faWYxX2luaXRgIGlzIHN0YXRpYy4gSnVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMyMTEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoyNi42NDA0ODYzMjFaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTk5NDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0d19zZGlvX2lmMV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTIwOT1zdGF0aWMgdm9pZCBzZF9pbnRmX3N0b3Aoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjE3LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjIxODpzdGF0aWMgc3RydWN0IGFkYXB0ZXIgKnJ0d19zZGlvX2lmMV9pbml0KHN0cnVjdCBkdm9ial9wcml2ICpkdm9iaiwgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICAqcGRpZClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yMTkte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MzM3PXN0YXRpYyBpbnQgcnR3X2Rydl9pbml0KFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzQ4LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjM0OTpcXHRpZjEgPSBydHdfc2Rpb19pZjFfaW5pdChkdm9iaiwgaWQpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTM1MC1cXHRpZiAoIWlmMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjI6MjYuNzE1NjkxMTk2WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjY2OTEyNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklkZW50aWZ5aW5nIEtleSBTeW1ib2xzIGluIHRoZSBDb2RlYmFzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgZm9jdXNpbmcgb24gaG93IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29kZSBhbmQgaWRlbnRpZnlpbmcga2V5IGVudHJ5IHBvaW50cy4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYHJ0d19kcnZfaW5pdGAgaXMgc3RhdGljLCB3aGljaCBpbml0aWFsbHkgbWFrZXMgaXQgbGVzcyBpbnRlcmVzdGluZyBhcyBhIGZvY3VzLiBIb3dldmVyLCBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGlzIG5vbi1zdGF0aWMgYW5kIGlzIGNhbGxlZCBieSBgcnR3X2Rydl9pbml0YCwgYW5kIGNyaXRpY2FsbHksIGl0J3MgYWxzbyBtb2RpZmllZCBieSB0aGUgcGF0Y2guIFRoYXQgbWFrZXMgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBhIGxpa2VseSBjYW5kaWRhdGUgdG8gZGVsdmUgaW50by5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgYGMyaF93a19jYWxsYmFja2AsIHdoaWNoIGlzIHN0YXRpYy4gQnV0IGl0J3MgY2FsbGVkIGJ5IGBydHdfYzJoX3drX2NtZGAsIGFuZCB0aGF0IG9uZSBpcyBub24tc3RhdGljLiBTbywgYHJ0d19jMmhfd2tfY21kYCBzZWVtcyBsaWtlIGEgZ29vZCBzeW1ib2wgdG8gdHJhY2ssIGdpdmVuIHRoZSBwYXRjaCdzIGNoYW5nZXMuXG5cbk5leHQsIEknbSBsb29raW5nIGF0IGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AuIEl0J3Mgc3RhdGljLCBidXQgaXQncyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBmdW5jdGlvbnMgYHJlY3ZfZnVuY19wb3N0aGFuZGxlYCBhbmQgYHZhbGlkYXRlX3JlY3ZfbWdudF9mcmFtZWAsIHdoaWNoIGFyZSBpbiB0dXJuIGNhbGxlZCBieSBgcmVjdl9mdW5jYC4gVGhpcyBjaGFpbiB1bHRpbWF0ZWx5IGxlYWRzIHRvIGBydHdfcmVjdl9lbnRyeWAsIHdoaWNoIGlzIG5vbi1zdGF0aWMuIEJlY2F1c2Ugb2YgdGhpcyBjaGFpbiBvZiBjYWxscywgYHJ0d19yZWN2X2VudHJ5YCBhbHNvIG1ha2VzIHNlbnNlIGFzIGEgc3ltYm9sIHRvIGludmVzdGlnYXRlLlxuXG5IYW5nIG9uLCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYHNkX2ludF9kcGNgIHF1ZXVlcyB0aGUgYGMyaF93a19jYWxsYmFja2AgdGhyb3VnaCBgcnR3X2MyaF93a19jbWRgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBjMmhfd2tfY2FsbGJhY2tgIGFuZCBgcnR3X2MyaF93a19jbWRgLiBHaXZlbiB0aGUgaW50ZXJydXB0IGNvbnRleHQsIGBzZF9pbnRfZHBjYCBpcyBjbGVhcmx5IGFub3RoZXIgdmFsdWFibGUgZm9jdXMuXG5cbkFscmlnaHQsIGxldCdzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zIHRvIGJlIGNlcnRhaW46IEkgc2VlIHRoYXQgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBpbmRlZWQgbm9uLXN0YXRpYyB3aXRoaW4gYG9zX2ludGZzLmNgLiBgcnR3X2MyaF93a19jbWRgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbCwgcmVzaWRpbmcgaW4gYHJ0d19jbWQuY2AuIGBydHdfcmVjdl9lbnRyeWAgaXMgY29uZmlybWVkIHRvIGJlIG5vbi1zdGF0aWMgaW4gYHJ0d19yZWN2LmNgLiBBbmQgZmluYWxseSwgYHNkX2ludF9kcGNgIGlzIHByZXNlbnQgaW4gYHNkaW9fb3BzLmNgLlxuXG5XaXRoIHRoaXMgY29uZmlybWVkLCBJJ2xsIGdvIGJhY2sgdG8gdGhlIHBhdGNoIHRvIGxvb2sgYXQgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgcGF0Y2guIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzOiBgYzJoX3drX2NhbGxiYWNrYCAoc3RhdGljKSAtXHUwMDNlIGBydHdfYzJoX3drX2NtZGAsIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgKHN0YXRpYykgLVx1MDAzZSBgcnR3X3JlY3ZfZW50cnlgLCBgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCAoc3RhdGljKSAtXHUwMDNlIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAsIGFuZCBhbHNvIGBydHdfc2Rpb19pZjFfaW5pdGAgKHN0YXRpYykgLVx1MDAzZSBgcnR3X2Rydl9pbml0YCAoc3RhdGljKSAtXHUwMDNlIGBydGw4NzIzYnNfc2Rpb19kcml2ZXIucHJvYmVgLlxuXG5MZXQgbWUgYWRkIHRoYXQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIGBydGw4NzIzYnNfc2Rpb19kcml2ZXJgIGlzIHJlZ2lzdGVyZWQgaW4gYHJ0d19kcnZfZW50cnlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDYwNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjozNy4zODI2MDcwNTdaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTI5Mzk3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfZHJ2X2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTQzNz1zdGF0aWMgaW50IHJ0d19zZGlvX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTAtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDUxOnN0YXRpYyBpbnQgX19pbml0IHJ0d19kcnZfZW50cnkodm9pZClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTIte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU0LX1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzo0NTU6bW9kdWxlX2luaXQocnR3X2Rydl9lbnRyeSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjozNy41MDE5MDU5OFoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjMxMTYwOTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gVGFyZ2V0aW5nIHRoZSBSVEw4NzIzQlMgU0RJTyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBydHdfZHJ2X2VudHJ5YCBpcyBzdGF0aWMsIHNvIHRoYXQncyBvdXQuIFdlIG5lZWQgYSBnb29kIG5vbi1zdGF0aWMgZnVuY3Rpb24gZm9yIHRoZSBwcm9iZSBwYXRoLiBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIHNlZW1zIGxpa2UgdGhlIGJlc3QgYmV0LiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgY291bGQgYmUgYSBjYW5kaWRhdGU/IEhtbW0sIHdoYXQgYWJvdXQgYHJ0d19oYWxfZGF0YV9kZWluaXRgPyBUaGUgcGF0Y2ggZG9lcyBtZW50aW9uIGl0LiBCdXQgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGNvbnRhaW4gdGhlICptb2RpZmllZCogY29kZS4gUmlnaHQsIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gYHJ0d19zZGlvX2lmMV9pbml0YCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBEYW5nLCBgcnR3X2Rydl9pbml0YCBpcyBzdGF0aWMuXG5cbkJ1dCEgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCAqYWxzbyogZ2V0cyBjYWxsZWQgYnkgYHJ0d19kcnZfaW5pdGAuIFdhaXQgYSBzZWNvbmTigKYgbG9va2luZyBhdCB0aGUgY2FsbCBvcmRlciB3aXRoaW4gYHJ0d19kcnZfaW5pdGAsIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaXMgY2FsbGVkICphZnRlciogYHJ0d19zZGlvX2lmMV9pbml0YC4gU28sIGZ1enppbmcgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBtaWdodCBub3QgZGlyZWN0bHkgdHJpZ2dlciBgcnR3X3NkaW9faWYxX2luaXRgIGltbWVkaWF0ZWx5LiBCdXQgdGhhdCdzIG9rYXksIHN5emthbGxlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gaGl0IHRoZSBwcm9iZSBmdW5jdGlvbiBieSBpbmplY3RpbmcgU0RJTyBkZXZpY2VzIGFuZCBzbyB3aWxsIHRlc3QgYHJ0d19zZGlvX2lmMV9pbml0YC4gTGlzdGluZyBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIHdpbGwgZ3VpZGUgdGhlIGZ1enplciB0byB0aGUgcHJvYmUgcGF0aCByZWdhcmRsZXNzLlxuXG5MZXQncyByZXZpZXcgdGhlIHJhdGlvbmFsZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBzZXZlcmFsIGJ1Z3Mg4oCTIG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzIOKAkyBzcGVjaWZpY2FsbHkgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAobGlrZSBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gU28sIHRoaXMgKmlzKiByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIE9rYXksIHRoZSBwbGFuIGlzOiBgcnR3X3JlY3ZfZW50cnlgICh0byBjb3ZlciBgcmVjdmZyYW1lX2Noa19kZWZyYWdgKSwgYHJ0d19jMmhfd2tfY21kYCAoZm9yIGBjMmhfd2tfY2FsbGJhY2tgKSwgYW5kIG5vdyBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIChmb3IgYF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmApLlxuXG5Ob3csIGxldCdzIHF1aWNrbHkgY2hlY2sgaWYgYHJ0d19jMmhfd2tfY21kYCBpcyBleHBvcnRlZCBvciBqdXN0IG5vbi1zdGF0aWMuIERvZXNuJ3QgbWF0dGVyLCBzeXprYWxsZXIgaGFuZGxlcyBub24tc3RhdGljIGZ1bmN0aW9ucyBqdXN0IGZpbmUuXG5cbkZpbmFsbHksIGFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgY29uZmlncz8gTGV0IG1lIHNlZeKApiBSVEw4NzIzQlMsIFdMQU4sIE1NQywgQ0ZHODAyMTEsIFNUQUdJTkcsIE1NQ19WVUIzMDAsIGFuZCBVU0IuIEdvdCBpdC5cblxuWWVhaCwgSSB0aGluayBJJ3ZlIGdvdCBhIHNvbGlkIGFuZCBhY2N1cmF0ZSBwbGFuIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjE5LCJPdXRwdXRUb2tlbnMiOjIyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjo1My44MTM1MTgyNzlaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg0MDM0NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUTDg3MjNCU1wiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiTU1DXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiU1RBR0lOR1wiLFxuICAgIFwiTU1DX1ZVQjMwMFwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3X3JlY3ZfZW50cnlcIixcbiAgICBcInJ0d19jMmhfd2tfY21kXCIsXG4gICAgXCJydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICAgIFwic2RfaW50X2RwY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGJ1Z3MgKG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXB0ci1kZXJlZikgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gU0RJTyBkZXZpY2UgdmlhIGEgVVNCLXRvLVNESU8gYnJpZGdlIChlLmcuLCBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRMODcyM0JTXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJTVEFHSU5HXCIsXG4gICAgXCJNTUNfVlVCMzAwXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHdfcmVjdl9lbnRyeVwiLFxuICAgIFwicnR3X2MyaF93a19jbWRcIixcbiAgICBcInJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2XCIsXG4gICAgXCJzZF9pbnRfZHBjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgYnVncyAobWVtb3J5IGxlYWtzLCBkb3VibGUgZnJlZXMsIG51bGwtcHRyLWRlcmVmKSBpbiB0aGUgUlRMODcyM0JTIFNESU8gV2lGaSBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBTRElPIGRldmljZSB2aWEgYSBVU0ItdG8tU0RJTyBicmlkZ2UgKGUuZy4sIFZVQjMwMCkgdXNpbmcgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIChkdW1teV9oY2QpLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyB0byB0aGUgbW9kaWZpZWQgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qftm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 14:59:30 +0000 UTC FinishedAt: 2026-07-31 15:22:55 +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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTL8723BS", "WLAN", "MMC", "CFG80211", "STAGING", "MMC_VUB300", "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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTL8723BS", "WLAN", "MMC", "CFG80211", "STAGING", "MMC_VUB300", "USB" ], "series_id": "b59a5ffe-2dcf-430a-934f-d1712c02e13e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw_recv_entry", "rtw_c2h_wk_cmd", "rtw_drv_register_netdev", "sd_int_dpc" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUTDg3MjNCUyYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtTVEFHSU5HJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X3JlY3ZfZW50cnkmIzM0OywKICAgICYjMzQ7cnR3X2MyaF93a19jbWQmIzM0OywKICAgICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAgICYjMzQ7c2RfaW50X2RwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBidWdzIChtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wdHItZGVyZWYpIGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAoZS5nLiwgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE1OjE5OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jXG5pbmRleCBiOTMyNjcwZjVkNjNhLi5lOWIxMTM2ZGJmNjY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xuQEAgLTE3MTYsNyAmIzQzOzE3MTYsOCBAQCBzdGF0aWMgdm9pZCBjMmhfd2tfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdFx0XHRrZnJlZShjMmhfZXZ0KTtcbiBcdFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0XHR9XG4tXHRcdFx0fVxuJiM0MztcdFx0XHR9IGVsc2VcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuIFx0XHQvKiBTcGVjaWFsIHBvaW50ZXIgdG8gdHJpZ2dlciBjMmhfZXZ0X2NsZWFyIG9ubHkgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jXG5pbmRleCA4NmM1ZTJjNGU3ZGRkLi5mZmNlZTQzMWNhZjU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jXG5AQCAtMTE0Niw3ICYjNDM7MTE0NiwxMCBAQCBzdGF0aWMgdW5pb24gcmVjdl9mcmFtZSAqcmVjdmZyYW1lX2Noa19kZWZyYWcoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZVxuIFxuIFx0XHRpZiAodHlwZSAhPSBXSUZJX0RBVEFfVFlQRSkge1xuIFx0XHRcdHBzdGEgPSBydHdfZ2V0X2JjbWNfc3RhaW5mbyhwYWRhcHRlcik7XG4tXHRcdFx0cGRlZnJhZ19xID0gXHUwMDI2cHN0YS1cdTAwM2VzdGFfcmVjdnByaXYuZGVmcmFnX3E7XG4mIzQzO1x0XHRcdGlmIChwc3RhKVxuJiM0MztcdFx0XHRcdHBkZWZyYWdfcSA9IFx1MDAyNnBzdGEtXHUwMDNlc3RhX3JlY3Zwcml2LmRlZnJhZ19xO1xuJiM0MztcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0cGRlZnJhZ19xID0gTlVMTDtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRwZGVmcmFnX3EgPSBOVUxMO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcbmluZGV4IGYzMTE5NmY1NGIzZTAuLjg0NjMzYTUxZTJkYjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG5AQCAtNzU0LDcgJiM0Mzs3NTQsNiBAQCB1OCBydHdfZnJlZV9kcnZfc3coc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxuIFxuIHN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcbiB7XG4tXHRpbnQgcmV0ID0gX1NVQ0NFU1M7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqcG5ldGRldiA9IHBhZGFwdGVyLVx1MDAzZXBuZXRkZXY7XG4gXG4gXHQvKiBhbGxvYyBuZXRkZXYgbmFtZSAqL1xuQEAgLTc2NSwxOSAmIzQzOzc2NCwxMCBAQCBzdGF0aWMgaW50IF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGNoYXIgKm5hbWUpXG4gXG4gXHQvKiBUZWxsIHRoZSBuZXR3b3JrIHN0YWNrIHdlIGV4aXN0ICovXG4gXHRpZiAocmVnaXN0ZXJfbmV0ZGV2KHBuZXRkZXYpICE9IDApIHtcbi1cdFx0cmV0ID0gX0ZBSUw7XG4tXHRcdGdvdG8gZXJyb3JfcmVnaXN0ZXJfbmV0ZGV2O1xuJiM0MztcdFx0cmV0dXJuIF9GQUlMO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHJldDtcbi1cbi1lcnJvcl9yZWdpc3Rlcl9uZXRkZXY6XG4tXG4tXHRydHdfZnJlZV9kcnZfc3cocGFkYXB0ZXIpO1xuLVxuLVx0cnR3X2ZyZWVfbmV0ZGV2KHBuZXRkZXYpO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gX1NVQ0NFU1M7XG4gfVxuIFxuIGludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcbmluZGV4IGM0M2EwMzkxYTVjYTcuLmY3ZWMwOTMxMGNlOTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcbkBAIC0yODYsNyAmIzQzOzI4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWRhcHRlciAqcnR3X3NkaW9faWYxX2luaXQoc3RydWN0IGR2b2JqX3ByaXYgKmR2b2JqLCBjb25zdCBzdHJ1Y3RcbiBcbiBmcmVlX2hhbF9kYXRhOlxuIFx0aWYgKHN0YXR1cyAhPSBfU1VDQ0VTUyBcdTAwMjZcdTAwMjYgcGFkYXB0ZXItXHUwMDNlSGFsRGF0YSlcbi1cdFx0a2ZyZWUocGFkYXB0ZXItXHUwMDNlSGFsRGF0YSk7XG4mIzQzO1x0XHRydHdfaGFsX2RhdGFfZGVpbml0KHBhZGFwdGVyKTtcbiBcbiBcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MpIHtcbiBcdFx0cnR3X3dkZXZfdW5yZWdpc3RlcihwYWRhcHRlci1cdTAwM2VydHdfd2Rldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUTDg3MjNCUyYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtTVEFHSU5HJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X3JlY3ZfZW50cnkmIzM0OywKICAgICYjMzQ7cnR3X2MyaF93a19jbWQmIzM0OywKICAgICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAgICYjMzQ7c2RfaW50X2RwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBidWdzIChtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wdHItZGVyZWYpIGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAoZS5nLiwgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDE1OjE5OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMKaW5kZXggYjkzMjY3MGY1ZDYzYS4uZTliMTEzNmRiZjY2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jCkBAIC0xNzE2LDcgJiM0MzsxNzE2LDggQEAgc3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCQkJa2ZyZWUoYzJoX2V2dCk7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KLQkJCX0KJiM0MzsJCQl9IGVsc2UKJiM0MzsJCQkJY29udGludWU7CiAJCX0KIAogCQkvKiBTcGVjaWFsIHBvaW50ZXIgdG8gdHJpZ2dlciBjMmhfZXZ0X2NsZWFyIG9ubHkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMKaW5kZXggODZjNWUyYzRlN2RkZC4uZmZjZWU0MzFjYWY1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMKQEAgLTExNDYsNyAmIzQzOzExNDYsMTAgQEAgc3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9jaGtfZGVmcmFnKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmUKIAogCQlpZiAodHlwZSAhPSBXSUZJX0RBVEFfVFlQRSkgewogCQkJcHN0YSA9IHJ0d19nZXRfYmNtY19zdGFpbmZvKHBhZGFwdGVyKTsKLQkJCXBkZWZyYWdfcSA9ICZhbXA7cHN0YS0mZ3Q7c3RhX3JlY3Zwcml2LmRlZnJhZ19xOwomIzQzOwkJCWlmIChwc3RhKQomIzQzOwkJCQlwZGVmcmFnX3EgPSAmYW1wO3BzdGEtJmd0O3N0YV9yZWN2cHJpdi5kZWZyYWdfcTsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCXBkZWZyYWdfcSA9IE5VTEw7CiAJCX0gZWxzZSB7CiAJCQlwZGVmcmFnX3EgPSBOVUxMOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYwppbmRleCBmMzExOTZmNTRiM2UwLi44NDYzM2E1MWUyZGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMKQEAgLTc1NCw3ICYjNDM7NzU0LDYgQEAgdTggcnR3X2ZyZWVfZHJ2X3N3KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcikKIAogc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKQogewotCWludCByZXQgPSBfU1VDQ0VTUzsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqcG5ldGRldiA9IHBhZGFwdGVyLSZndDtwbmV0ZGV2OwogCiAJLyogYWxsb2MgbmV0ZGV2IG5hbWUgKi8KQEAgLTc2NSwxOSAmIzQzOzc2NCwxMCBAQCBzdGF0aWMgaW50IF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGNoYXIgKm5hbWUpCiAKIAkvKiBUZWxsIHRoZSBuZXR3b3JrIHN0YWNrIHdlIGV4aXN0ICovCiAJaWYgKHJlZ2lzdGVyX25ldGRldihwbmV0ZGV2KSAhPSAwKSB7Ci0JCXJldCA9IF9GQUlMOwotCQlnb3RvIGVycm9yX3JlZ2lzdGVyX25ldGRldjsKJiM0MzsJCXJldHVybiBfRkFJTDsKIAl9CiAKLQlyZXR1cm4gcmV0OwotCi1lcnJvcl9yZWdpc3Rlcl9uZXRkZXY6Ci0KLQlydHdfZnJlZV9kcnZfc3cocGFkYXB0ZXIpOwotCi0JcnR3X2ZyZWVfbmV0ZGV2KHBuZXRkZXYpOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIF9TVUNDRVNTOwogfQogCiBpbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKmlmMSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMKaW5kZXggYzQzYTAzOTFhNWNhNy4uZjdlYzA5MzEwY2U5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMKQEAgLTI4Niw3ICYjNDM7Mjg2LDcgQEAgc3RhdGljIHN0cnVjdCBhZGFwdGVyICpydHdfc2Rpb19pZjFfaW5pdChzdHJ1Y3QgZHZvYmpfcHJpdiAqZHZvYmosIGNvbnN0IHN0cnVjdAogCiBmcmVlX2hhbF9kYXRhOgogCWlmIChzdGF0dXMgIT0gX1NVQ0NFU1MgJmFtcDsmYW1wOyBwYWRhcHRlci0mZ3Q7SGFsRGF0YSkKLQkJa2ZyZWUocGFkYXB0ZXItJmd0O0hhbERhdGEpOwomIzQzOwkJcnR3X2hhbF9kYXRhX2RlaW5pdChwYWRhcHRlcik7CiAKIAlpZiAoc3RhdHVzICE9IF9TVUNDRVNTKSB7CiAJCXJ0d193ZGV2X3VucmVnaXN0ZXIocGFkYXB0ZXItJmd0O3J0d193ZGV2KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgdGhlIFJUTDg3MjNCUyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IHRvIGBydHdfY21kLmNgLCBgcnR3X3JlY3YuY2AsIGBvc19pbnRmcy5jYCwgYW5kIGBzZGlvX2ludGYuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIHRoZSBzdGFnaW5nIGRyaXZlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lGaSBjYXJkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFib3V0IHRlc3RpbmcgYW5kIGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMuIFNpbmNlIGl0JiMzOTtzIFNESU8sIG15IGluaXRpYWwgaW5jbGluYXRpb24gaXMgdG8gc2VlIGlmIEkgY2FuIHJ1biBpdCBpbiBRRU1VLiBCdXQsIHR5cGljYWwgUUVNVSBzZXR1cHMgZG9uJiMzOTt0IGVhc2lseSBlbXVsYXRlIFNESU8gd2l0aG91dCBzb21lIHNwZWNpZmljIFNESU8gZW11bGF0aW9uIG9yIGEgdmlydHVhbCBTRElPIGRldmljZSBzZXR1cC4gSSBrbm93IFNESU8gZGV2aWNlcyBhcmVuJiMzOTt0IHVzdWFsbHkgZWFzaWx5IGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB3aXRob3V0IGEgbW9jayBvciB2aXJ0dWFsIGJ1cyBpbnRlcmZhY2UuCgpUaGVuIGl0IGhpdHMgbWU6IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIFNESU8gZW11bGF0aW9uIGVpdGhlci4gU28sIEkgbmVlZCB0byBjaGVjayBib3RoIHN5emthbGxlciBhbmQgdGhlIGtlcm5lbCBmb3IgYW55IGV4aXN0aW5nIFNESU8gZW11bGF0aW9uIGNhcGFiaWxpdGllcywganVzdCB0byBiZSBzdXJlLiBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciBvciBub3QgZnV6emluZyB0aGUgYFJUTDg3MjNCU2AgZHJpdmVyIGlzIGV2ZW4gd29ydGggdGhlIGVmZm9ydC4gSXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIHNvIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGZlYXNpYmlsaXR5IG9mIGFjdHVhbGx5IHRyaWdnZXJpbmcgdGhpcyBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzIGEgd29ydGh3aGlsZSB0YXJnZXQuIFNvLCBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ2AgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMODcyM0JTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoyOmNvbmZpZyBSVEw4NzIzQlNcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzozOlx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4NzIzQlMgU0RJTyBXaXJlbGVzcyBMQU4gTklDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIFdMQU4gXHUwMDI2XHUwMDI2IE1NQyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctOS1cdGhlbHBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoxMDpcdFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgUlRMODcyM0JTIFNESU8gZHJpdmVycywgc3VjaCBhc1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTExLVx0dGhlIHdpZmkgZm91bmQgb24gdGhlIDFzdCBnZW4gSW50ZWwgQ29tcHV0ZSBTdGljaywgdGhlIENISVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTcwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU0RJTyBFbXVsYXRpb24gQ2hhbGxlbmdlKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZC4gVGhpcyBib2lscyBkb3duIHRvIE1NQywgc3BlY2lmaWNhbGx5IHRoZSBTRC9NTUMvU0RJTyB2YXJpYW50cy4gQ2FuIFFFTVUgY29udmluY2luZ2x5IGVtdWxhdGUgdGhlc2U/IEkga25vdyBRRU1VICpkb2VzKiBoYXZlIFNEIGNhcmQgZW11bGF0aW9uLCB0aGF0JiMzOTtzIGEga25vd24gcXVhbnRpdHkuIEJ1dCB3aGF0IGFib3V0IFNESU8/IFNESU8gaXMsIGZ1bmRhbWVudGFsbHksIGZvciBJL08gZGV2aWNlcyAtIHRoaW5ncyBsaWtlIFdpRmkuIEFuZCBJIHNlcmlvdXNseSBkb3VidCB0aGF0IFFFTVUgb2ZmZXJzIGEgZmFpdGhmdWwgZW11bGF0aW9uIG9mIHNvbWV0aGluZyBhcyBzcGVjaWZpYyBhcyBhbiBSVEw4NzIzQlMgU0RJTyBXaUZpIGNhcmQsIG9yIGFueSByZWFsLXdvcmxkIFNESU8gZGV2aWNlIGZvciB0aGF0IG1hdHRlci4KCldoaWNoIHN1Z2dlc3RzIGEgbWFqb3IgaHVyZGxlLiBJZiB0aGF0IGVtdWxhdGlvbiBpc24mIzM5O3QgdGhlcmUsIGl0IG1ha2VzIHJlYWNoaW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZXNlIGRldmljZXMgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciwgZXZlbiBtb3JlIGNvbW1vbiwgUUVNVSwgY29tcGxldGVseSBpbXBvc3NpYmxlLiBXZSYjMzk7cmUgZWZmZWN0aXZlbHkgY3V0IG9mZiBmcm9tIG91ciB0YXJnZXQuCgpMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbi4gU3VyZWx5LCAqc29tZW9uZSogaGFzIHRob3VnaHQgYWJvdXQgU0RJTyBmdXp6aW5nIGluIHRoaXMgY29udGV4dC4KCldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBmdXp6aW5nIGNhcGFiaWxpdGllcyBmb3IgVVNCLCBQQ0ksIHZoY2kgYW5kIG90aGVycywgSSBrbm93IHRoYXQuIEJ1dCBTRElPPyBUaGF0JiMzOTtzIGEgZGlmZmVyZW50IGFuaW1hbC4gTGV0IG1lIHRyeSBhIHF1aWNrIHNlYXJjaCBmb3IgYW55dGhpbmcgbGlrZSBgc3l6X3NkaW9gIG9yIGEgc2ltaWxhciB0ZXJtLiBHb3R0YSBzZWUgaWYgd2UmIzM5O3ZlIGdvdCBzb21lIGV4aXN0aW5nIGZvdW5kYXRpb24gdG8gYnVpbGQgb24gaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDUyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYSBEcml2ZXIgVGFzayoqCgpPa2F5LCBzbyBJIGNhbiYjMzk7dCBqdXN0IGBncmVwYCB0aHJvdWdoIGBzeXMvYCBmb3IgdGhpcyBvbmU7IHRoYXQmIzM5O3Mgbm90IGdvaW5nIHRvIGN1dCBpdC4gSSBuZWVkIHRvIHVzZSBgcmVhZC1maWxlYCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBnZXQgYXQgdGhpcyBtb3JlIGVmZmVjdGl2ZWx5LiBCdXQsIGxvb2tpbmcgYXQgdGhlIHByb21wdCwgaXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIGxpa2UgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbmQgYW1kZ3B1LCB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLiBJdCYjMzk7cyBleHBsaWNpdGx5IHNheWluZyB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUgdGhlc2UgZHJpdmVycyBkZXBlbmQgb24uIEl0IGFsc28gZmxhZ3MgY29kZSBwYXRocyB0aGF0IGFyZSBlbnRpcmVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgY2FsbHMgb3V0IHRoaW5ncyBsaWtlIHVzYiBnYWRnZXRzIGFuZCBtYWM4MDIxMV9od3NpbS4KClNpbmNlIHRoZSBSVEw4NzIzQlMgaXMgYW4gU0RJTyBXaUZpIGNhcmQsIGFuZCBJIGtub3cgb2Ygbm8gc29mdHdhcmUgZW11bGF0aW9uIHdpdGhpbiBRRU1VIHRoYXQgY292ZXJzIGl0LCBpdCAqc2hvdWxkKiBiZSB1bnJlYWNoYWJsZS4gQnV0IHdhaXQsIEkgbmVlZCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuIElzIHRoZXJlICphbnkqIHBvc3NpYmlsaXR5IHRoYXQgaXQgY2FuIGJlIHJlYWNoZWQgdGhyb3VnaCBzb21lIG90aGVyIG1lY2hhbmlzbT8gTWF5YmUgU0RJTyBpbmplY3Rpb24/IEJldHRlciB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGNvZGUgcGF0aHMgaW4gdGhlIGtlcm5lbCBmb3IgU0RJTyBpbmplY3Rpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHRob3JvdWdoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDEwMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT03PW1tY19jb3JlLXlcdFx0XHQ6PSBjb3JlLm8gYnVzLm8gaG9zdC5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlLTgtXHRcdFx0XHQgICBtbWMubyBtbWNfb3BzLm8gc2QubyBzZF9vcHMubyBcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZTo5Olx0XHRcdFx0ICAgc2Rpby5vIHNkaW9fb3BzLm8gc2Rpb19idXMubyBcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToxMDpcdFx0XHRcdCAgIHNkaW9fY2lzLm8gc2Rpb19pby5vIHNkaW9faXJxLm8gc2RfdWhzMi5vXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMTEtXHRcdFx0XHQgICBzbG90LWdwaW8ubyByZWd1bGF0b3Iub1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX01NQ19URVNUKVx0XHQmIzQzOz0gbW1jX3Rlc3Qub1xuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfU0RJT19VQVJUKVx0XHQmIzQzOz0gc2Rpb191YXJ0Lm9cbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMjEtbW1jX2NvcmUtJChDT05GSUdfTU1DX0NSWVBUTylcdCYjNDM7PSBjcnlwdG8ub1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMjYtI2luY2x1ZGUgXCYjMzQ7aG9zdC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjI3OiNpbmNsdWRlIFwmIzM0O3NkaW9fY2lzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMjgtI2luY2x1ZGUgXCYjMzQ7YnVzLmhcJiMzNDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTU5PW1tY19idXNfdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtODgtXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjg5Olx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkgfHwgbW1jX2NhcmRfc2RfY29tYm8oY2FyZCkpIHtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtOTAtXHRcdHJldHZhbCA9IGFkZF91ZXZlbnRfdmFyKGVudiwgXCYjMzQ7U0RJT19JRD0lMDRYOiUwNFhcJiMzNDssXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0xMTAtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MTExOlx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYz0yNjQ9c3RhdGljIHZvaWQgbW1jX3JlbGVhc2VfY2FyZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjctXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjI2ODpcdHNkaW9fZnJlZV9jb21tb25fY2lzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjktXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmgtNDUtLypcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oOjQ2OiAqIFRoZSB3b3JsZCBpcyBub3QgcGVyZmVjdCBhbmQgc3VwcGxpZXMgdXMgd2l0aCBicm9rZW4gbW1jL3NkaW8gZGV2aWNlcy5cbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oLTQ3LSAqIEZvciBhdCBsZWFzdCBzb21lIG9mIHRoZXNlIGJ1Z3Mgd2UgbmVlZCBhIHdvcmstYXJvdW5kLlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQxLSNpbmNsdWRlIFwmIzM0O2hvc3QuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDI6I2luY2x1ZGUgXCYjMzQ7c2Rpb19idXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDMtI2luY2x1ZGUgXCYjMzQ7cHdyc2VxLmhcJiMzNDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00Ni0jaW5jbHVkZSBcJiMzNDtzZF9vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDc6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjE2PXN0YXRpYyB2b2lkIF9fbW1jX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMjgtXHQvKlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjI5Olx0ICogRm9yIHNkaW8gcncgY29tbWFuZHMgd2UgbXVzdCB3YWl0IGZvciBjYXJkIGJ1c3kgb3RoZXJ3aXNlIHNvbWVcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMDpcdCAqIHNkaW8gZGV2aWNlcyB3b24mIzM5O3Qgd29yayBwcm9wZXJseS5cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMS1cdCAqIEFuZCBieXBhc3MgSS9PIGFib3J0LCByZXNldCBhbmQgYnVzIHN1c3BlbmQgb3BlcmF0aW9ucy5cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMi1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMzOlx0aWYgKHNkaW9faXNfaW9fYnVzeShtcnEtXHUwMDNlY21kLVx1MDAzZW9wY29kZSwgbXJxLVx1MDAzZWNtZC1cdTAwM2VhcmcpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjM0LVx0ICAgIGhvc3QtXHUwMDNlb3BzLVx1MDAzZWNhcmRfYnVzeSkge1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTY2MD12b2lkIG1tY19zZXRfZGF0YV90aW1lb3V0KHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IG1tY19jYXJkICpjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2Ni1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NjY3Olx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpIHtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2OC1cdFx0ZGF0YS1cdTAwM2V0aW1lb3V0X25zID0gMTAwMDAwMDAwMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMDk5PXN0YXRpYyBpbnQgbW1jX3Jlc2Nhbl90cnlfZnJlcShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHVuc2lnbmVkIGZyZXEpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNC1cdC8qXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTE1Olx0ICogc2Rpb19yZXNldCBzZW5kcyBDTUQ1MiB0byByZXNldCBjYXJkLiAgU2luY2Ugd2UgZG8gbm90IGtub3dcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMTYtXHQgKiBpZiB0aGUgY2FyZCBpcyBiZWluZyByZS1pbml0aWFsaXplZCwganVzdCBzZW5kIGl0LiAgQ01ENTJcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIwLVx0aWYgKCEoaG9zdC1cdTAwM2VjYXBzMiBcdTAwMjYgTU1DX0NBUDJfTk9fU0RJTykpXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTIxOlx0XHRzZGlvX3Jlc2V0KGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMi1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTMzLVx0aWYgKCEoaG9zdC1cdTAwM2VjYXBzMiBcdTAwMjYgTU1DX0NBUDJfTk9fU0RJTykpXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTM0Olx0XHRpZiAoIW1tY19hdHRhY2hfc2Rpbyhob3N0KSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzUtXHRcdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjM5Mz1zdGF0aWMgaW50IF9faW5pdCBtbWNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDQtXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyNDA1Olx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9idXMoKTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTI0MTg9c3RhdGljIHZvaWQgX19leGl0IG1tY19leGl0KHZvaWQpXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDE5LXtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MjA6XHRzZGlvX3VucmVnaXN0ZXJfYnVzKCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDIxLVx0bW1jX3VucmVnaXN0ZXJfaG9zdF9jbGFzcygpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oPTg3PWludCBtbWNfYXR0YWNoX3NkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaDo4ODppbnQgbW1jX2F0dGFjaF9zZGlvKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaC04OS1pbnQgbW1jX2F0dGFjaF9zZF91aHMyKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMjktI2luY2x1ZGUgXCYjMzQ7cHdyc2VxLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjMwOiNpbmNsdWRlIFwmIzM0O3NkaW9fb3BzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTMxLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jPTI2NT1pbnQgbW1jX29mX3BhcnNlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjctXHRcdGhvc3QtXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX0hXX1JFU0VUO1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzY4Olx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDtjYXAtc2Rpby1pcnFcJiMzNDspKVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY5LVx0XHRob3N0LVx1MDAzZWNhcHMgfD0gTU1DX0NBUF9TRElPX0lSUTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zOTMtXHRcdGhvc3QtXHUwMDNlY2FwczIgfD0gTU1DX0NBUDJfSFM0MDBfRVM7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozOTQ6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O25vLXNkaW9cJiMzNDspKVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzk1LVx0XHRob3N0LVx1MDAzZWNhcHMyIHw9IE1NQ19DQVAyX05PX1NESU87XG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NTEyPXN0cnVjdCBtbWNfaG9zdCAqbW1jX2FsbG9jX2hvc3QoaW50IGV4dHJhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNTU4LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2aG9zdC1cdTAwM2VkZXRlY3QsIG1tY19yZXNjYW4pO1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NTU5Olx0SU5JVF9XT1JLKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yaywgc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NjAtXHR0aW1lcl9zZXR1cChcdTAwMjZob3N0LVx1MDAzZXJldHVuZV90aW1lciwgbW1jX3JldHVuZV90aW1lciwgMCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NjEwPXN0YXRpYyBpbnQgbW1jX3ZhbGlkYXRlX2hvc3RfY2FwcyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE0LVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE1Olx0aWYgKGNhcHMgXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEgXHUwMDI2XHUwMDI2ICFob3N0LVx1MDAzZW9wcy1cdTAwM2VlbmFibGVfc2Rpb19pcnEpIHtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjYxNjpcdFx0ZGV2X3dhcm4oZGV2LCBcJiMzNDttaXNzaW5nIC1cdTAwM2VlbmFibGVfc2Rpb19pcnEoKSBvcHNcXG5cJiMzNDspO1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTQ6I2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL3NkaW9faWRzLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaD0xNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgbW1jX2V4dF9jc2RfZml4dXBzW10gPSB7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xODgtXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTkwLVx0U0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9USV9XTDEyNTEsIFNESU9fREVWSUNFX0lEX1RJX1dMMTI1MSxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTIxNi1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MjE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fY2FyZF9pbml0X21ldGhvZHNbXSA9IHtcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE4LVx0U0RJT19GSVhVUF9DT01QQVRJQkxFKFwmIzM0O3RpLHdsMTI1MVwmIzM0Oywgd2wxMjUxX3F1aXJrLCAwKSxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzQ4PU1NQ19ERVZfQVRUUihyZXZpc2lvbiwgXCYjMzQ7JXUuJXVcXG5cJiMzNDssIGNhcmQtXHUwMDNlbWFqb3JfcmV2LCBjYXJkLVx1MDAzZW1pbm9yX3Jldik7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzQ5LVxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc1MDojZGVmaW5lIHNkaW9faW5mb19hdHRyKG51bSlcdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc1MS1zdGF0aWMgc3NpemVfdCBpbmZvIyNudW0jI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc2MT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc2Mi1cbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjM6c2Rpb19pbmZvX2F0dHIoMSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY0OnNkaW9faW5mb19hdHRyKDIpO1xuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NTpzZGlvX2luZm9fYXR0cigzKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjY6c2Rpb19pbmZvX2F0dHIoNCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzY3LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTItLypcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM6ICogIGxpbnV4L2RyaXZlcnMvbW1jL3NkaW8uY1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNC0gKlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9tbWMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL3NkaW8uaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY6I2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL3NkaW9fZnVuYy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNzojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjQtI2luY2x1ZGUgXCYjMzQ7c2QuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MjU6I2luY2x1ZGUgXCYjMzQ7c2Rpb19idXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYtI2luY2x1ZGUgXCYjMzQ7bW1jX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNy0jaW5jbHVkZSBcJiMzNDtzZF9vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjg6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk6I2luY2x1ZGUgXCYjMzQ7c2Rpb19jaXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzAtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9MzU9TU1DX0RFVl9BVFRSKHJjYSwgXCYjMzQ7MHglMDR4XFxuXCYjMzQ7LCBjYXJkLVx1MDAzZXJjYSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNi1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3OiNkZWZpbmUgc2Rpb19pbmZvX2F0dHIobnVtKVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOC1zdGF0aWMgc3NpemVfdCBpbmZvIyNudW0jI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcdFxcXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9NDg9c3RhdGljIERFVklDRV9BVFRSX1JPKGluZm8jI251bSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ5LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTA6c2Rpb19pbmZvX2F0dHIoMSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTpzZGlvX2luZm9fYXR0cigyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUyOnNkaW9faW5mb19hdHRyKDMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTM6c2Rpb19pbmZvX2F0dHIoNCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01NC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjU1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpzZGlvX3N0ZF9hdHRyc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTYtXHRcdTAwMjZkZXZfYXR0cl92ZW5kb3IuYXR0cixcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02Ni19O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Njc6QVRUUklCVVRFX0dST1VQUyhzZGlvX3N0ZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgc2Rpb190eXBlID0ge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzA6XHQuZ3JvdXBzID0gc2Rpb19zdGRfZ3JvdXBzLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzEtfTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcyLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM6c3RhdGljIGludCBzZGlvX3JlYWRfZmJyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAyLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAzOnN0YXRpYyBpbnQgc2Rpb19pbml0X2Z1bmMoc3RydWN0IG1tY19jYXJkICpjYXJkLCB1bnNpZ25lZCBpbnQgZm4pXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1LVx0aW50IHJldDtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNjpcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmM7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDctXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExOlx0ZnVuYyA9IHNkaW9fYWxsb2NfZnVuYyhjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMi1cdGlmIChJU19FUlIoZnVuYykpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3LVx0aWYgKCEoY2FyZC1cdTAwM2VxdWlya3MgXHUwMDI2IE1NQ19RVUlSS19OT05TVERfU0RJTykpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODpcdFx0cmV0ID0gc2Rpb19yZWFkX2ZicihmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExOS1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMjEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMjI6XHRcdHJldCA9IHNkaW9fcmVhZF9mdW5jX2NpcyhmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMy1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMzE6XHRjYXJkLVx1MDAzZXNkaW9fZnVuY1tmbiAtIDFdID0gZnVuYztcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzMi1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzktXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0MDpcdHNkaW9fcmVtb3ZlX2Z1bmMoZnVuYyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDEtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0NDpzdGF0aWMgaW50IHNkaW9fcmVhZF9jY2NyKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTMyIG9jcilcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0NS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTYzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY0Olx0Y2FyZC1cdTAwM2VjY2NyLnNkaW9fdnNuID0gKGRhdGEgXHUwMDI2IDB4ZjApIFx1MDAzZVx1MDAzZSA0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTY1LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI2MTpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX3dpZGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYyLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTMtICogb2YgdGhlIGNhcmQuIFRoaXMgbWF5IGJlIHJlcXVpcmVkIG9uIGNlcnRhaW4gc2V0dXBzIG9mIGJvYXJkcyxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5NDogKiBjb250cm9sbGVycyBhbmQgZW1iZWRkZWQgc2RpbyBkZXZpY2Ugd2hpY2ggZG8gbm90IG5lZWQgdGhlIGNhcmQmIzM5O3NcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5NS0gKiBwdWxsLXVwLiBBcyBhIHJlc3VsdCwgY2FyZCBkZXRlY3Rpb24gaXMgZGlzYWJsZWQgYW5kIHBvd2VyIGlzIHNhdmVkLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk2LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk3OnN0YXRpYyBpbnQgc2Rpb19kaXNhYmxlX2NkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5OC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzE4OnN0YXRpYyBpbnQgc2Rpb19kaXNhYmxlX3dpZGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNDctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNDg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzQ5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNTEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNTI6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1My1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY1LW91dDpcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM2NjpcdHJldHVybiBzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2Ny19XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY5LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzcwOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzcxLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzQ6XHRlcnIgPSBzZGlvX2VuYWJsZV93aWRlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc1LVx0aWYgKGVyciBcdTAwM2M9IDApXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzYtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzc6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3OC1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzgyLVx0XHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozODM6XHRcdFx0c2Rpb19kaXNhYmxlX3dpZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zODQtXHRcdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozOTc6c3RhdGljIGludCBtbWNfc2Rpb19zd2l0Y2hfaHMoc3RydWN0IG1tY19jYXJkICpjYXJkLCBpbnQgZW5hYmxlKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MjYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mjc6c3RhdGljIGludCBzZGlvX2VuYWJsZV9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00Mjgte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMTpcdHJldCA9IG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCB0cnVlKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMjpcdGlmIChyZXQgXHUwMDNjPSAwIHx8IG1tY19jYXJkX3NkaW8oY2FyZCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzMtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM2LVx0aWYgKHJldCBcdTAwM2M9IDApXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mzc6XHRcdG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCBmYWxzZSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDQyOnN0YXRpYyB1bnNpZ25lZCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ0My17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY1LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDY2OnN0YXRpYyB1bnNpZ25lZCBjaGFyIGhvc3RfZHJpdmVfdG9fc2Rpb19kcml2ZShpbnQgaG9zdF9zdHJlbmd0aClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2Ny17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDgxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDgyOnN0YXRpYyB2b2lkIHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ4My17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTAzLVx0XHRjYXJkX3N0cmVuZ3RoIFx1MDAyNj0gfihTRElPX0RSSVZFX0RUU3hfTUFTS1x1MDAzY1x1MDAzY1NESU9fRFJJVkVfRFRTeF9TSElGVCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDQ6XHRcdGNhcmRfc3RyZW5ndGggfD0gaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGRyaXZlX3N0cmVuZ3RoKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUwNS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MTgtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTk6c3RhdGljIGludCBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MjAte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5Mi0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjU5MzpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTk0LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDAtXHQvKiBTd2l0Y2ggdG8gd2lkZXIgYnVzICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDE6XHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA1LVx0LyogU2V0IHRoZSBkcml2ZXIgc3RyZW5ndGggZm9yIHRoZSBjYXJkICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDY6XHRzZGlvX3NlbGVjdF9kcml2ZXJfdHlwZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwOC1cdC8qIFNldCBidXMgc3BlZWQgbW9kZSBvZiB0aGUgY2FyZCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA5Olx0ZXJyID0gc2Rpb19zZXRfYnVzX3NwZWVkX21vZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MTAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYyNC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYyNTpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9pbml0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYyNi1cdFx0XHQgICAgIHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzItXHQgKiBSZXNldCB0aGUgY2FyZCBieSBwZXJmb3JtaW5nIHRoZSBzYW1lIHN0ZXBzIHRoYXQgYXJlIHRha2VuIGJ5XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MzM6XHQgKiBtbWNfcmVzY2FuX3RyeV9mcmVxKCkgYW5kIG1tY19hdHRhY2hfc2RpbygpIGR1cmluZyBhIFwmIzM0O25vcm1hbFwmIzM0OyBwcm9iZS5cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNC1cdCAqXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MzU6XHQgKiBzZGlvX3Jlc2V0KCkgaXMgdGVjaG5pY2FsbHkgbm90IG5lZWRlZC4gSGF2aW5nIGp1c3QgcG93ZXJlZCB1cCB0aGVcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNi1cdCAqIGhhcmR3YXJlLCBpdCBzaG91bGQgYWxyZWFkeSBiZSBpbiByZXNldCBzdGF0ZS4gSG93ZXZlciwgc29tZVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0Ny1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY0ODpcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDktXHRtbWNfZ29faWRsZShob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NTktICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NjA6c3RhdGljIGludCBtbWNfc2Rpb19pbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYxLVx0XHRcdCAgICAgIHN0cnVjdCBtbWNfY2FyZCAqb2xkY2FyZClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OTktXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcwMDpcdGNhcmQgPSBtbWNfYWxsb2NfY2FyZChob3N0LCBcdTAwMjZzZGlvX3R5cGUpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzAxLVx0aWYgKElTX0VSUihjYXJkKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MTY6XHRcdGlmIChvbGRjYXJkIFx1MDAyNlx1MDAyNiAhbW1jX2NhcmRfc2RpbyhvbGRjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE3LVx0XHRcdGVyciA9IC1FTk9FTlQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI2LVx0XHRob3N0LVx1MDAzZW9wcy1cdTAwM2Vpbml0X2NhcmQoaG9zdCwgY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3Mjc6XHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fY2FyZF9pbml0X21ldGhvZHMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI4LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTczOC1cdCAqIGZhaWxzIHRvIGNoZWNrIHJvY3IgXHUwMDI2IFI0XzE4Vl9QUkVTRU5ULCAgYnV0IHdlIHN0aWxsIG5lZWQgdG9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjczOTpcdCAqIHRyeSB0byBpbml0IHVocyBjYXJkLiBzZGlvX3JlYWRfY2NjciB3aWxsIHRha2Ugb3ZlciB0aGlzIHRhc2tcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0MC1cdCAqIHRvIG1ha2Ugc3VyZSB3aGljaCBzcGVlZCBtb2RlIHNob3VsZCB3b3JrLlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0NC1cdFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3NDU6XHRcdFx0bW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgb2NyX2NhcmQsIGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ2LVx0XHRcdHJldHJpZXMtLTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTQtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNTpcdGVyciA9IHNkaW9fcmVhZF9jY2NyKGNhcmQsIG9jcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTYtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4MTc6XHRcdG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIG9jcl9jYXJkLCBjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxOC1cdFx0aWYgKG9jciBcdTAwMjYgUjRfMThWX1BSRVNFTlQpIHtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MjgtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgyOTpcdGVyciA9IHNkaW9fcmVhZF9jb21tb25fY2lzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODMwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NDMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NDQ6XHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fZml4dXBfbWV0aG9kcyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NDUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODYxLVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NjI6XHRlcnIgPSBzZGlvX2Rpc2FibGVfY2QoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2OC1cdGlmICgob2NyIFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkgXHUwMDI2XHUwMDI2IGNhcmQtXHUwMDNlc3dfY2Fwcy5zZDNfYnVzX21vZGUpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2OTpcdFx0ZXJyID0gbW1jX3NkaW9faW5pdF91aHNfY2FyZChjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3MC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzUtXHRcdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODc2Olx0XHRlcnIgPSBzZGlvX2VuYWJsZV9ocyhjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3Ny1cdFx0aWYgKGVyciBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODQtXHRcdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODg1Olx0XHRtbWNfc2V0X2Nsb2NrKGhvc3QsIG1tY19zZGlvX2dldF9tYXhfY2xvY2soY2FyZCkpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg2LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4OS1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4OTA6XHRcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODkxLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxMy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxNDpzdGF0aWMgaW50IG1tY19zZGlvX3JlaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxNS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE4Olx0cmV0ID0gbW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZW9jciwgTlVMTCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyMjpcdHJldHVybiBtbWNfc2Rpb19pbml0X2NhcmQoaG9zdCwgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZW9jciwgaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyMy19XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTI3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTI4OnN0YXRpYyB2b2lkIG1tY19zZGlvX3JlbW92ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05Mjkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkzMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMjpcdGZvciAoaSA9IDA7aSBcdTAwM2MgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY3M7aSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMzpcdFx0aWYgKGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV0pIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzNDpcdFx0XHRzZGlvX3JlbW92ZV9mdW5jKGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV0pO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM1Olx0XHRcdGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV0gPSBOVUxMO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTM2LVx0XHR9XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ1LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fYWxpdmUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ3LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NTctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5NTg6c3RhdGljIHZvaWQgbW1jX3NkaW9fZGV0ZWN0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1OS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTkzLVx0aWYgKGVycikge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTk0Olx0XHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwNy0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMDg6c3RhdGljIGludCBtbWNfc2Rpb19wcmVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDExLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxMjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxMzpcdFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYyA9IGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VzZGlvX2Z1bmNbaV07XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDE0Olx0XHRpZiAoZnVuYyBcdTAwMjZcdTAwMjYgc2Rpb19mdW5jX3ByZXNlbnQoZnVuYykgXHUwMDI2XHUwMDI2IGZ1bmMtXHUwMDNlZGV2LmRyaXZlcikge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxNS1cdFx0XHRjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG1vcHMgPSBmdW5jLVx1MDAzZWRldi5kcml2ZXItXHUwMDNlcG07XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAzMi1cdC8qIFJlbW92ZSB0aGUgU0RJTyBjYXJkIGFuZCBsZXQgaXQgYmUgcmUtZGV0ZWN0ZWQgbGF0ZXIgb24uICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDMzOlx0bW1jX3NkaW9fcmVtb3ZlKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAzNC1cdG1tY19jbGFpbV9ob3N0KGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDUtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ3LXtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDg6XHRXQVJOX09OKGhvc3QtXHUwMDNlc2Rpb19pcnFzIFx1MDAyNlx1MDAyNiAhbW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ5LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTEtXHRtbWNfY2FyZF9zZXRfc3VzcGVuZGVkKGhvc3QtXHUwMDNlY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDUyOlx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZob3N0LVx1MDAzZXNkaW9faXJxX3dvcmspO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1My1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU1LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA1NjpcdGlmIChtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpIFx1MDAyNlx1MDAyNiBtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA1NzpcdFx0c2Rpb19kaXNhYmxlXzRiaXRfYnVzKGhvc3QtXHUwMDNlY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU4LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNzAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDcxOnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNzIte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTUtXHRcdH1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwOTY6XHRcdGVyciA9IG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NzpcdH0gZWxzZSBpZiAobW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5OC1cdFx0Lypcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAzLVx0XHRtbWNfcmV0dW5lX2hvbGRfbm93KGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEwNDpcdFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDUtXHRcdG1tY19yZXR1bmVfcmVsZWFzZShob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTEzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNDpcdGlmIChob3N0LVx1MDAzZXNkaW9faXJxcykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNS1cdFx0aWYgKCEoaG9zdC1cdTAwM2VjYXBzMiBcdTAwMjYgTU1DX0NBUDJfU0RJT19JUlFfTk9USFJFQUQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNjpcdFx0XHR3YWtlX3VwX3Byb2Nlc3MoaG9zdC1cdTAwM2VzZGlvX2lycV90aHJlYWQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNy1cdFx0ZWxzZSBpZiAoaG9zdC1cdTAwM2VjYXBzIFx1MDAyNiBNTUNfQ0FQX1NESU9fSVJRKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExODpcdFx0XHRzY2hlZHVsZV93b3JrKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE5LVx0fVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTI4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMzctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTM4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcnVudGltZV9yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0NC1cdG1tY19wb3dlcl91cChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNDU6XHRyZXQgPSBtbWNfc2Rpb19yZWluaXRfY2FyZChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNDYtXHRtbWNfcmVsZWFzZV9ob3N0KGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTU3OnN0YXRpYyBpbnQgbW1jX3NkaW9faHdfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1OC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2NS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE2NjpcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjYXJkLVx1MDAzZXNkaW9fZnVuY3NfcHJvYmVkKSBcdTAwM2UgMSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2Ny1cdFx0aWYgKG1tY19jYXJkX3JlbW92ZWQoY2FyZCkpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3OS1cdG1tY19wb3dlcl9jeWNsZShob3N0LCBjYXJkLVx1MDAzZW9jcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgwOlx0cmV0dXJuIG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4MS19XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTgyLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MzpzdGF0aWMgaW50IG1tY19zZGlvX3N3X3Jlc2V0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODQte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4NS1cdG1tY19zZXRfY2xvY2soaG9zdCwgaG9zdC1cdTAwM2VmX2luaXQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4NjpcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg3LVx0bW1jX2dvX2lkbGUoaG9zdCk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqU0RJTyBUZXN0aW5nIHdpdGggU3l6a2FsbGVyOiBBIFF1aWNrIENoZWNrKioKCkhtbSwgcmlnaHQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIFN5emthbGxlciBhbHJlYWR5IGhhcyBzb21ldGhpbmcgaW4gcGxhY2UgZm9yIFNESU8gZGV2aWNlIHRlc3RpbmcuIFRoYXQgd291bGQgc2F2ZSBhIGxvdCBvZiByZWludmVudGluZyB0aGUgd2hlZWwhIFRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gc3RhcnQgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgYHN5el9gIHBzZXVkby1zeXNjYWxsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIFNESU8uIFRoYXQgbmFtaW5nIGNvbnZlbnRpb24gaXMgdXN1YWxseSBhIGdvb2QgaW5kaWNhdG9yIG9mIGJ1aWx0LWluIHN1cHBvcnQsIHJpZ2h0PyBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIHRocm91Z2ggdGhlIHN5c2NhbGwgZGVmaW5pdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTc4MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbnN0cmFpbnRzIGFuZCBFeHBsb3JpbmcgQWx0ZXJuYXRpdmVzKioKCk9rYXksIHNvIEkgY2FuJiMzOTt0IGp1c3QgYGdyZXBgIHRoZSBgc3lzL2AgZGlyZWN0b3J5OyB0aGF0JiMzOTtzIG91dC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWdhaW5zdCB0aGF0IGJlY2F1c2UgaXQmIzM5O3Mgc3l6a2FsbGVyLXNwZWNpZmljIHN0dWZmLCBub3Qga2VybmVsIGNvZGUuIFRoZXkgc2F5IHRvIHVzZSBge3sudG9vbFJlYWREZXNjcmlwdGlvbn19YCBpbnN0ZWFkLCBidXQgSSBkb24mIzM5O3Qgc2VlIHRoYXQgdG9vbCBhdmFpbGFibGUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluc3RydWN0aW9ucy4KCkFscmlnaHQsIHRoZSBwcm9tcHQgaXMgbGlzdGluZyBzb21lIGV4cGxpY2l0IGV4Y2x1c2lvbnM6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBjb2RlLCB0aGluZ3MgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIGFuZCBjb2RlIHRoYXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSXQgZ2l2ZXMgZXhhbXBsZXMgbGlrZSBgdXNiIGdhZGdldGAgYW5kIGBtYWM4MDIxMV9od3NpbWAuCgpOb3csIHRoZSBzcGVjaWZpYyB0aGluZyBJJiMzOTttIGxvb2tpbmcgYXQsIHRoZSBSVEw4NzIzQlMsIGlzIGFuIFNESU8gV2lGaSBjYXJkLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3RhbmRhcmQgUUVNVSBvciBldmVuIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb2ZmZXIgYW55IFNESU8gZW11bGF0aW9uPyBObywgYG1hYzgwMjExX2h3c2ltYCBpcyBzcGVjaWZpY2FsbHkgZm9yIGVtdWxhdGluZyBtYWM4MDIxMSBoYXJkd2FyZSwgbm90IFNESU8uIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZG8gU0RJTyBlaXRoZXIuIFNvIHRoYXQgY29uZmlybXMgdGhhdCBTRElPIGRldmljZXMgYXJlIG5vdCBlbXVsYXRlZCwgYW5kIEkgY2Fubm90IHVzZSBRRU1VIHRvIHByb2JlIFJUTDg3MjNCUy4KCkJ1dCB3YWl0LCBob2xkIG9uLiBNYXliZSwganVzdCBtYXliZSwgdGhpcyBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIGFuIGFsdGVybmF0ZSBwYXRoLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBiYWNrZG9vciB0byB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZGlvX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTQ1MT1zdGF0aWMgaW50IF9faW5pdCBydHdfZHJ2X2VudHJ5KHZvaWQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTIte1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDUzOlx0cmV0dXJuIHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnJ0bDg3MjNic19zZGlvX2RyaXZlcik7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY2NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciYjMzk7cyBSZWFjaGFiaWxpdHkgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQmIzM5O3MgdXNpbmcgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBkZXNpZ25lZCB0byB3b3JrIHdpdGggU0RJTyBkZXZpY2VzLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhlIGRyaXZlciBiaW5kcyB0byBhbiBTRElPIGRldmljZSwgbmF0dXJhbGx5LiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCAqd2l0aG91dCogYW4gYWN0dWFsIFNESU8gZGV2aWNlIHByZXNlbnQsIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBiZSBpbnZva2VkLiBBbmQgdGhhdOKAmXMgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uCgpHaXZlbiB0aGUgY29udGV4dCwgSSBrbm93IHRoYXQgUUVNVSwgYXMgaXQgc3RhbmRzLCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBSVEw4NzIzQlMgU0RJTyBkZXZpY2UuIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiwgYW5kIGNvbnNlcXVlbnRseSwgdGhlIGNvcmUgbG9naWMgb2YgdGhpcyBkcml2ZXIsIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBRRU1VIHNldHVwLiBJdCBhbHNvIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdHJpZ2dlciBhbnkgYnVnIHRoYXQgbWF5IGxpZSB3aXRoaW4gdGhlIGNvZGUuIFRoZSBzYW1lIHdvdWxkIGJlIHRydWUgZm9yIGNsb3VkIGVudmlyb25tZW50cywgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoIGlzIGFsc28gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28sIHRoZSBjaGFuY2VzIG9mIGV4cGxvcmluZyB0aGUgdGFyZ2V0IGNvZGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzIGFyZSB2ZXJ5IHNsaW0uCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBtYWtlcyBtZSB3b25kZXI6IERvZXMgdGhlIGtlcm5lbCwgZXNwZWNpYWxseSBmb3IgZnV6emluZyBwdXJwb3NlcywgaW5jb3Jwb3JhdGUgYW55IFNESU8gZHVtbXkgZHJpdmVyIG9yIHNvbWUga2luZCBvZiB3b3JrYXJvdW5kPyBNYXliZSBzb21ldGhpbmcgc3l6a2FsbGVyIG1pZ2h0IGJlIHVzaW5nIHRvIGluamVjdCBTRElPIG9wZXJhdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgaXMgYW4gU0RJTyBpbmplY3Rpb24gbWVjaGFuaXNtIHByZXNlbnQgaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIGJ5cGFzcyB0aGlzIHJlc3RyaWN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VhcmNoIGZvciBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMjUwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVx0XHRcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cdFx0XHRcdCAgIG1tYy5vIG1tY19vcHMubyBzZC5vIHNkX29wcy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjk6XHRcdFx0XHQgICBzZGlvLm8gc2Rpb19vcHMubyBzZGlvX2J1cy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjEwOlx0XHRcdFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cdFx0XHRcdCAgIHNsb3QtZ3Bpby5vIHJlZ3VsYXRvci5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXHRcdCYjNDM7PSBtbWNfdGVzdC5vXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19TRElPX1VBUlQpXHRcdCYjNDM7PSBzZGlvX3VhcnQub1xuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0yMS1tbWNfY29yZS0kKENPTkZJR19NTUNfQ1JZUFRPKVx0JiM0Mzs9IGNyeXB0by5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcJiMzNDtob3N0LmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXCYjMzQ7c2Rpb19jaXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcJiMzNDtidXMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9NTk9bW1jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6ODk6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSB8fCBtbWNfY2FyZF9zZF9jb21ibyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cdFx0cmV0dmFsID0gYWRkX3VldmVudF92YXIoZW52LCBcJiMzNDtTRElPX0lEPSUwNFg6JTA0WFwmIzM0Oyxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9idXMuYzoxMTE6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTI2ND1zdGF0aWMgdm9pZCBtbWNfcmVsZWFzZV9jYXJkKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2Ny1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MjY4Olx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2OS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmg6NDY6ICogVGhlIHdvcmxkIGlzIG5vdCBwZXJmZWN0IGFuZCBzdXBwbGllcyB1cyB3aXRoIGJyb2tlbiBtbWMvc2RpbyBkZXZpY2VzLlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmgtNDctICogRm9yIGF0IGxlYXN0IHNvbWUgb2YgdGhlc2UgYnVncyB3ZSBuZWVkIGEgd29yay1hcm91bmQuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDEtI2luY2x1ZGUgXCYjMzQ7aG9zdC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0MjojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00My0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ2LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0NzojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00OC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMTY9c3RhdGljIHZvaWQgX19tbWNfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cdC8qXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMjk6XHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMwOlx0ICogc2RpbyBkZXZpY2VzIHdvbiYjMzk7dCB3b3JrIHByb3Blcmx5LlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMxLVx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMyLVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XHRpZiAoc2Rpb19pc19pb19idXN5KG1ycS1cdTAwM2VjbWQtXHUwMDNlb3Bjb2RlLCBtcnEtXHUwMDNlY21kLVx1MDAzZWFyZykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzQtXHQgICAgaG9zdC1cdTAwM2VvcHMtXHUwMDNlY2FyZF9idXN5KSB7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9NjYwPXZvaWQgbW1jX3NldF9kYXRhX3RpbWVvdXQoc3RydWN0IG1tY19kYXRhICpkYXRhLCBjb25zdCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo2Njc6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY4LVx0XHRkYXRhLVx1MDAzZXRpbWVvdXRfbnMgPSAxMDAwMDAwMDAwO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTE0LVx0LypcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMTU6XHQgKiBzZGlvX3Jlc2V0IHNlbmRzIENNRDUyIHRvIHJlc2V0IGNhcmQuICBTaW5jZSB3ZSBkbyBub3Qga25vd1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cdCAqIGlmIHRoZSBjYXJkIGlzIGJlaW5nIHJlLWluaXRpYWxpemVkLCBqdXN0IHNlbmQgaXQuICBDTUQ1MlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMjE6XHRcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMzQ6XHRcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzNS1cdFx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNC1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2J1cygpO1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjQxOD1zdGF0aWMgdm9pZCBfX2V4aXQgbW1jX2V4aXQodm9pZClcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQyMDpcdHNkaW9fdW5yZWdpc3Rlcl9idXMoKTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXHRtbWNfdW5yZWdpc3Rlcl9ob3N0X2NsYXNzKCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oOjg4OmludCBtbWNfYXR0YWNoX3NkaW8oc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oLTg5LWludCBtbWNfYXR0YWNoX3NkX3VoczIoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0yOS0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzA6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzEtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM2Ny1cdFx0aG9zdC1cdTAwM2VjYXBzIHw9IE1NQ19DQVBfSFdfUkVTRVQ7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O2NhcC1zZGlvLWlycVwmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjktXHRcdGhvc3QtXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX1NESU9fSVJRO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cdFx0aG9zdC1cdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM5NDpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7bm8tc2Rpb1wmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zOTUtXHRcdGhvc3QtXHUwMDNlY2FwczIgfD0gTU1DX0NBUDJfTk9fU0RJTztcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz01MTI9c3RydWN0IG1tY19ob3N0ICptbWNfYWxsb2NfaG9zdChpbnQgZXh0cmEsIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZob3N0LVx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo1NTk6XHRJTklUX1dPUksoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrLCBzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTU2MC1cdHRpbWVyX3NldHVwKFx1MDAyNmhvc3QtXHUwMDNlcmV0dW5lX3RpbWVyLCBtbWNfcmV0dW5lX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz02MTA9c3RhdGljIGludCBtbWNfdmFsaWRhdGVfaG9zdF9jYXBzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTU6XHRpZiAoY2FwcyBcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcdTAwMjZcdTAwMjYgIWhvc3QtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZV9zZGlvX2lycSkge1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE2Olx0XHRkZXZfd2FybihkZXYsIFwmIzM0O21pc3NpbmcgLVx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcblwmIzM0Oyk7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xNS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oPTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBtbWNfZXh0X2NzZF9maXh1cHNbXSA9IHtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xOTAtXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE2LVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTgtXHRTRElPX0ZJWFVQX0NPTVBBVElCTEUoXCYjMzQ7dGksd2wxMjUxXCYjMzQ7LCB3bDEyNTFfcXVpcmssIDApLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcJiMzNDsldS4ldVxcblwmIzM0OywgY2FyZC1cdTAwM2VtYWpvcl9yZXYsIGNhcmQtXHUwMDNlbWlub3JfcmV2KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NDktXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzUwOiNkZWZpbmUgc2Rpb19pbmZvX2F0dHIobnVtKVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzUxLXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzYxPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzYyLVxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjQ6c2Rpb19pbmZvX2F0dHIoMik7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY1OnNkaW9faW5mb19hdHRyKDMpO1xuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjctXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzogKiAgbGludXgvZHJpdmVycy9tbWMvc2Rpby5jXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00LSAqXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL21tYy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpby5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19mdW5jLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvX2lkcy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcJiMzNDtzZC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcJiMzNDttbWNfb3BzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcJiMzNDtzZGlvX2Npcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz0zNT1NTUNfREVWX0FUVFIocmNhLCBcJiMzNDsweCUwNHhcXG5cJiMzNDssIGNhcmQtXHUwMDNlcmNhKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz00OD1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOnNkaW9faW5mb19hdHRyKDIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MzpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01Ni1cdFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY2LX07XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY4LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSBzZGlvX3R5cGUgPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcdC5ncm91cHMgPSBzZGlvX3N0ZF9ncm91cHMsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MS19O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MzpzdGF0aWMgaW50IHNkaW9fcmVhZF9mYnIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDM6c3RhdGljIGludCBzZGlvX2luaXRfZnVuYyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBmbilcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUtXHRpbnQgcmV0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2Olx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNy1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE6XHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyLVx0aWYgKElTX0VSUihmdW5jKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTctXHRpZiAoIShjYXJkLVx1MDAzZXF1aXJrcyBcdTAwMjYgTU1DX1FVSVJLX05PTlNURF9TRElPKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4Olx0XHRyZXQgPSBzZGlvX3JlYWRfZmJyKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEyMjpcdFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzMC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcdGNhcmQtXHUwMDNlc2Rpb19mdW5jW2ZuIC0gMV0gPSBmdW5jO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzOS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQwOlx0c2Rpb19yZW1vdmVfZnVuYyhmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQ0OnN0YXRpYyBpbnQgc2Rpb19yZWFkX2NjY3Ioc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgb2NyKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQ1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjQ6XHRjYXJkLVx1MDAzZWNjY3Iuc2Rpb192c24gPSAoZGF0YSBcdTAwMjYgMHhmMCkgXHUwMDNlXHUwMDNlIDQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MjYxOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5My0gKiBvZiB0aGUgY2FyZC4gVGhpcyBtYXkgYmUgcmVxdWlyZWQgb24gY2VydGFpbiBzZXR1cHMgb2YgYm9hcmRzLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCYjMzk7c1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTc6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfY2Qoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM0ODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1MS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM1MjpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzUzLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjUtb3V0OlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2Olx0cmV0dXJuIHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY3LX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzA6c3RhdGljIGludCBzZGlvX2VuYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcdGVyciA9IHNkaW9fZW5hYmxlX3dpZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzUtXHRpZiAoZXJyIFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3Ni1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NzpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc4LVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zODItXHRcdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM4MzpcdFx0XHRzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cdFx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM5Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTgte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQyNzpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyOC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDMwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMxOlx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMyOlx0aWYgKHJldCBcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMy1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzYtXHRpZiAocmV0IFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzNzpcdFx0bW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIGZhbHNlKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NDI6c3RhdGljIHVuc2lnbmVkIG1tY19zZGlvX2dldF9tYXhfY2xvY2soc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NjUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY3LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0ODI6c3RhdGljIHZvaWQgc2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDgzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MDMtXHRcdGNhcmRfc3RyZW5ndGggXHUwMDI2PSB+KFNESU9fRFJJVkVfRFRTeF9NQVNLXHUwMDNjXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUwNDpcdFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTA1LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOTpzdGF0aWMgaW50IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUyMC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTkyLSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTkzOnN0YXRpYyBpbnQgbW1jX3NkaW9faW5pdF91aHNfY2FyZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwMC1cdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwMTpcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXHQvKiBTZXQgdGhlIGRyaXZlciBzdHJlbmd0aCBmb3IgdGhlIGNhcmQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwNjpcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA4LVx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDk6XHRlcnIgPSBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjI1OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX2luaXQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI2LVx0XHRcdCAgICAgc3RydWN0IG1tY19jYXJkICpjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzMi1cdCAqIFJlc2V0IHRoZSBjYXJkIGJ5IHBlcmZvcm1pbmcgdGhlIHNhbWUgc3RlcHMgdGhhdCBhcmUgdGFrZW4gYnlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcdCAqIG1tY19yZXNjYW5fdHJ5X2ZyZXEoKSBhbmQgbW1jX2F0dGFjaF9zZGlvKCkgZHVyaW5nIGEgXCYjMzQ7bm9ybWFsXCYjMzQ7IHByb2JlLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM0LVx0ICpcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcdCAqIHNkaW9fcmVzZXQoKSBpcyB0ZWNobmljYWxseSBub3QgbmVlZGVkLiBIYXZpbmcganVzdCBwb3dlcmVkIHVwIHRoZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM2LVx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0OS1cdG1tY19nb19pZGxlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY1OS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NjEtXHRcdFx0ICAgICAgc3RydWN0IG1tY19jYXJkICpvbGRjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzAwOlx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFx1MDAyNnNkaW9fdHlwZSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MDEtXHRpZiAoSVNfRVJSKGNhcmQpKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcdFx0aWYgKG9sZGNhcmQgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9zZGlvKG9sZGNhcmQpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTctXHRcdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjYtXHRcdGhvc3QtXHUwMDNlb3BzLVx1MDAzZWluaXRfY2FyZChob3N0LCBjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19jYXJkX2luaXRfbWV0aG9kcyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzM4LVx0ICogZmFpbHMgdG8gY2hlY2sgcm9jciBcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM5Olx0ICogdHJ5IHRvIGluaXQgdWhzIGNhcmQuIHNkaW9fcmVhZF9jY2NyIHdpbGwgdGFrZSBvdmVyIHRoaXMgdGFza1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVx0ICogdG8gbWFrZSBzdXJlIHdoaWNoIHNwZWVkIG1vZGUgc2hvdWxkIHdvcmsuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVx0XHRpZiAoZXJyID09IC1FQUdBSU4pIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcdFx0XHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDYtXHRcdFx0cmV0cmllcy0tO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODE1Olx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNi1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcdFx0bW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgb2NyX2NhcmQsIGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVx0XHRpZiAob2NyIFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgyOC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODI5Olx0ZXJyID0gc2Rpb19yZWFkX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg0NDpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19maXh1cF9tZXRob2RzKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjEtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2MjpcdGVyciA9IHNkaW9fZGlzYWJsZV9jZChjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVx0aWYgKChvY3IgXHUwMDI2IFI0XzE4Vl9QUkVTRU5UKSBcdTAwMjZcdTAwMjYgY2FyZC1cdTAwM2Vzd19jYXBzLnNkM19idXNfbW9kZSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5Olx0XHRlcnIgPSBtbWNfc2Rpb19pbml0X3Voc19jYXJkKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3NS1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NzY6XHRcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODc3LVx0XHRpZiAoZXJyIFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XHRcdG1tY19zZXRfY2xvY2soaG9zdCwgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhjYXJkKSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg5LVx0XHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg5MDpcdFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04OTEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE0OnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVpbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MTg6XHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBOVUxMKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTIyOlx0cmV0dXJuIG1tY19zZGlvX2luaXRfY2FyZChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMyOlx0Zm9yIChpID0gMDtpIFx1MDAzYyBob3N0LVx1MDAzZWNhcmQtXHUwMDNlc2Rpb19mdW5jcztpJiM0MzsmIzQzOykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMzOlx0XHRpZiAoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0Olx0XHRcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XHRcdFx0aG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSA9IE5VTEw7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXHRcdH1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDUtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5NDY6c3RhdGljIGludCBtbWNfc2Rpb19hbGl2ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1Ny0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5OTQ6XHRcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk5NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAwODpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMTEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY3M7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlx0XHRzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jID0gaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTQ6XHRcdGlmIChmdW5jIFx1MDAyNlx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcdTAwMjZcdTAwMjYgZnVuYy1cdTAwM2VkZXYuZHJpdmVyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDE1LVx0XHRcdGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbW9wcyA9IGZ1bmMtXHUwMDNlZGV2LmRyaXZlci1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDMyLVx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzM6XHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVx0bW1jX2NsYWltX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDY6c3RhdGljIGludCBtbWNfc2Rpb19zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDcte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcdFdBUk5fT04oaG9zdC1cdTAwM2VzZGlvX2lycXMgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDktXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1MS1cdG1tY19jYXJkX3NldF9zdXNwZW5kZWQoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTI6XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU2Olx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXHUwMDI2XHUwMDI2IG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3Olx0XHRzZGlvX2Rpc2FibGVfNGJpdF9idXMoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNzE6c3RhdGljIGludCBtbWNfc2Rpb19yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5NS1cdFx0fVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NjpcdFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDk3Olx0fSBlbHNlIGlmIChtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDMtXHRcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTA0Olx0XHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwNS1cdFx0bW1jX3JldHVuZV9yZWxlYXNlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE0Olx0aWYgKGhvc3QtXHUwMDNlc2Rpb19pcnFzKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE1LVx0XHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9TRElPX0lSUV9OT1RIUkVBRCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2Olx0XHRcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVx1MDAzZXNkaW9faXJxX3RocmVhZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE3LVx0XHRlbHNlIGlmIChob3N0LVx1MDAzZWNhcHMgXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE4Olx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTktXHR9XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMjg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVx0bW1jX3Bvd2VyX3VwKGhvc3QsIGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VvY3IpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE0NTpcdHJldCA9IG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cdG1tY19yZWxlYXNlX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNTc6c3RhdGljIGludCBtbWNfc2Rpb19od19yZXNldChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTU4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY1LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2Olx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNhcmQtXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFx1MDAzZSAxKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY3LVx0XHRpZiAobW1jX2NhcmRfcmVtb3ZlZChjYXJkKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVx0bW1jX3Bvd2VyX2N5Y2xlKGhvc3QsIGNhcmQtXHUwMDNlb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XHRyZXR1cm4gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTgxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgzOnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4NC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVx0bW1jX3NldF9jbG9jayhob3N0LCBob3N0LVx1MDAzZWZfaW5pdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODctXHRtbWNfZ29faWRsZShob3N0KTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3NTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU0RJTyBFbXVsYXRpb24gUm9hZGJsb2NrKioKCk9rYXksIHNvIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9gIGNvZGUuLi4gaXQmIzM5O3MgbG9va2luZyBsaWtlIGEgZGVhZCBlbmQgaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgU0RJTyBkZXZpY2VzLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBlaXRoZXIuIFRoYXQgbWVhbnMgdGhvc2Ugc3BlY2lmaWMgY29kZSBwYXRocyBhcmUgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUgc2V0dXBzLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGFzc3VtcHRpb24uIE1heWJlIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcsIGEgY2xldmVyIHdvcmthcm91bmQ/IElzIHRoZXJlICphbnkqIHZpcnR1YWwgU0RJTyBob3N0IGNvbnRyb2xsZXIgb3V0IHRoZXJlIHRoYXQgSSYjMzk7bSBub3QgdGhpbmtpbmcgb2Y/IFRpbWUgdG8gd2lkZW4gdGhlIHNlYXJjaC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbW1jL2hvc3QvYCBkaXJlY3RvcnkgYW5kIHNlZSBpZiBhbnl0aGluZyBwb3BzIHVwLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z1YjMwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjQwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTIwPWNvbmZpZyBNTUNfVlVCMzAwXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0NC1cdCAgVG8gY29tcGlsZSB0aGlzIG1tYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFzIGEgbW9kdWxlLFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjk0NTpcdCAgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB2dWIzMDAuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX01NQ19KWjQ3NDApXHQmIzQzOz0gano0NzQwX21tYy5vXG5kcml2ZXJzL21tYy9ob3N0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19NTUNfVlVCMzAwKVx0JiM0Mzs9IHZ1YjMwMC5vXG5kcml2ZXJzL21tYy9ob3N0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19NTUNfVVNIQylcdFx0JiM0Mzs9IHVzaGMub1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjYwPU1PRFVMRV9QQVJNX0RFU0MoZmlybXdhcmVfcm9tX3dhaXRfc3RhdGVzLFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjY1LSNkZWZpbmUgVlVCMzAwX1BST0RVQ1RfSURcdDB4MDEyQ1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyNjY6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHZ1YjMwMF90YWJsZVtdID0ge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yNjctXHR7VVNCX0RFVklDRShFTEFOX1ZFTkRPUl9JRCwgVlVCMzAwX1BST0RVQ1RfSUQpfSxcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI3MC19O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHZ1YjMwMF90YWJsZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI3Mi1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTI4Nj1zdHJ1Y3Qgc2Rpb19yZWdpc3RlciB7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yOTUtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjI5NjpzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjk3LVx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNTQtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM1NTojZGVmaW5lIGtyZWZfdG9fdnViMzAwX21tY19ob3N0KGQpIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBrcmVmKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNTYtI2RlZmluZSBTRVRfVFJBTlNGRVJfUFNFVURPQ09ERVx0XHQyMVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzY4LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNjk6c3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzcwLXtcdFx0XHRcdC8qIGtyZWYgY2FsbGJhY2sgLSBzb2Z0aXJxICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3MTpcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IGtyZWZfdG9fdnViMzAwX21tY19ob3N0KGtyZWYpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzI6XHRzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IHZ1YjMwMC1cdTAwM2VtbWM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM3My1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc0Olx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzU6XHR2dWIzMDAtXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc2Olx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX3Jlc191cmIpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzc6XHR2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiID0gTlVMTDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc4Olx0dXNiX3B1dF9kZXYodnViMzAwLVx1MDAzZXVkZXYpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNzktXHRtbWNfZnJlZV9ob3N0KG1tYyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM4MC1cdC8qXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4MTpcdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zODItXHQgKiB3aGljaCBpcyBjb250YWluZWQgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QgbW1jXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zODUtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4NjpzdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfY21uZF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg3LXtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzg4Olx0a3JlZl9nZXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozODk6XHRpZiAocXVldWVfd29yayhjbW5kd29ya3F1ZXVlLCBcdTAwMjZ2dWIzMDAtXHUwMDNlY21uZHdvcmspKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM5MC1cdFx0Lypcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwMS1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwMjpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDMtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDUtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwNjpzdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfcG9sbF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCwgaW50IGRlbGF5KVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDcte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDg6XHRrcmVmX2dldChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwOTpcdGlmIChxdWV1ZV9kZWxheWVkX3dvcmsocG9sbHdvcmtxdWV1ZSwgXHUwMDI2dnViMzAwLVx1MDAzZXBvbGx3b3JrLCBkZWxheSkpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDEwLVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDIxLVx0XHQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDIyOlx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQyMy1cdH1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQyNS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDI2OnN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9kZWFkX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00Mjcte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Mjg6XHRrcmVmX2dldChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyOTpcdGlmIChxdWV1ZV93b3JrKGRlYWR3b3JrcXVldWUsIFx1MDAyNnZ1YjMwMC1cdTAwM2VkZWFkd29yaykpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDMwLVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDQxLVx0XHQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDQyOlx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0My1cdH1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQ0Nj1zdGF0aWMgdm9pZCBpcnFwb2xsX3Jlc19jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDcte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDQ4Olx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDQ5LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ1MDpcdFx0dnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHVyYi1cdTAwM2VzdGF0dXM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ1MTpcdGNvbXBsZXRlKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDUyLX1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQ1ND1zdGF0aWMgdm9pZCBpcnFwb2xsX291dF9jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NTUte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU2Olx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDU3LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU4Olx0XHR2dWIzMDAtXHUwMDNldXNiX3RyYW5zcG9ydF9mYWlsID0gdXJiLVx1MDAzZXN0YXR1cztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU5Olx0XHRjb21wbGV0ZShcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxcG9sbF9jb21wbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ2MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDYzLVx0XHR1bnNpZ25lZCBpbnQgcGlwZSA9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NDpcdFx0XHR1c2JfcmN2YnVsa3BpcGUodnViMzAwLVx1MDAzZXVkZXYsIHZ1YjMwMC1cdTAwM2VjbW5kX3Jlc19lcCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NTpcdFx0dXNiX2ZpbGxfYnVsa191cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYiwgdnViMzAwLVx1MDAzZXVkZXYsIHBpcGUsXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NjpcdFx0XHRcdCAgXHUwMDI2dnViMzAwLVx1MDAzZXJlc3AsIHNpemVvZih2dWIzMDAtXHUwMDNlcmVzcCksXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NzpcdFx0XHRcdCAgaXJxcG9sbF9yZXNfY29tcGxldGVkLCB2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Njg6XHRcdHZ1YjMwMC1cdTAwM2Vjb21tYW5kX3Jlc191cmItXHUwMDNlYWN0dWFsX2xlbmd0aCA9IDA7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2OTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ3MC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NzE6XHRcdFx0dnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHJldDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDcyOlx0XHRcdGNvbXBsZXRlKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDczLVx0XHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NzctXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3ODpzdGF0aWMgdm9pZCBzZW5kX2lycXBvbGwoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00Nzkte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODA6XHQvKiBjbWRfbXV0ZXggaXMgaGVsZCBieSB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ4MS1cdGludCByZXR2YWw7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ4Mi1cdGludCB0aW1lb3V0ID0gMHhGRkZGIFx1MDAyNiAoMHgwMDAxRkZGRiAtIGZpcm13YXJlX2lycXBvbGxfdGltZW91dCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4MzpcdHZ1YjMwMC1cdTAwM2VjbW5kLnBvbGwuaGVhZGVyX3NpemUgPSAyMjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg0Olx0dnViMzAwLVx1MDAzZWNtbmQucG9sbC5oZWFkZXJfdHlwZSA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NTpcdHZ1YjMwMC1cdTAwM2VjbW5kLnBvbGwucG9ydF9udW1iZXIgPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODY6XHR2dWIzMDAtXHUwMDNlY21uZC5wb2xsLmNvbW1hbmRfdHlwZSA9IDI7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NzpcdHZ1YjMwMC1cdTAwM2VjbW5kLnBvbGwucG9sbF90aW1lb3V0X2xzYiA9IDB4RkYgXHUwMDI2ICh1bnNpZ25lZCl0aW1lb3V0O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODg6XHR2dWIzMDAtXHUwMDNlY21uZC5wb2xsLnBvbGxfdGltZW91dF9tc2IgPSAweEZGIFx1MDAyNiAodW5zaWduZWQpKHRpbWVvdXQgXHUwMDNlXHUwMDNlIDgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODk6XHR1c2JfZmlsbF9idWxrX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9vdXRfdXJiLCB2dWIzMDAtXHUwMDNldWRldixcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkwOlx0XHRcdCAgdXNiX3NuZGJ1bGtwaXBlKHZ1YjMwMC1cdTAwM2V1ZGV2LCB2dWIzMDAtXHUwMDNlY21uZF9vdXRfZXApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5MTpcdFx0XHQgICwgXHUwMDI2dnViMzAwLVx1MDAzZWNtbmQsIHNpemVvZih2dWIzMDAtXHUwMDNlY21uZClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkyOlx0XHRcdCAgLCBpcnFwb2xsX291dF9jb21wbGV0ZWQsIHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5MzpcdHJldHZhbCA9IHVzYl9zdWJtaXRfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00OTQtXHRpZiAoMCBcdTAwM2UgcmV0dmFsKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5NTpcdFx0dnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHJldHZhbDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDk2Olx0XHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgMSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ5NzpcdFx0Y29tcGxldGUoXHUwMDI2dnViMzAwLVx1MDAzZWlycXBvbGxfY29tcGxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00OTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUwMy1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTA0OnN0YXRpYyB2b2lkIG5ld19zeXN0ZW1fcG9ydF9zdGF0dXMoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MDUte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MDY6XHRpbnQgb2xkX2NhcmRfcHJlc2VudCA9IHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUwNy1cdGludCBuZXdfY2FyZF9wcmVzZW50ID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTA4Olx0XHQoMHgwMDAxIFx1MDAyNiB2dWIzMDAtXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzLnBvcnRfZmxhZ3MpID8gMSA6IDA7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwOTpcdHZ1YjMwMC1cdTAwM2VyZWFkX29ubHkgPVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTA6XHRcdCgweDAwMTAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMucG9ydF9mbGFncykgPyAxIDogMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTExLVx0aWYgKG5ld19jYXJkX3ByZXNlbnQgXHUwMDI2XHUwMDI2ICFvbGRfY2FyZF9wcmVzZW50KSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUxMjpcdFx0ZGV2X2luZm8oXHUwMDI2dnViMzAwLVx1MDAzZXVkZXYtXHUwMDNlZGV2LCBcJiMzNDtjYXJkIGp1c3QgaW5zZXJ0ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTM6XHRcdHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQgPSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTQ6XHRcdHZ1YjMwMC1cdTAwM2VidXNfd2lkdGggPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTUtXHRcdGlmIChkaXNhYmxlX29mZmxvYWRfcHJvY2Vzc2luZylcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE2Olx0XHRcdHN0cnNjcHkodnViMzAwLVx1MDAzZXZ1Yl9uYW1lLCBcJiMzNDtFTVBUWSBQcm9jZXNzaW5nIERpc2FibGVkXCYjMzQ7LFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTc6XHRcdFx0XHRzaXplb2YodnViMzAwLVx1MDAzZXZ1Yl9uYW1lKSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUxOC1cdFx0ZWxzZVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTk6XHRcdFx0dnViMzAwLVx1MDAzZXZ1Yl9uYW1lWzBdID0gMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTIwOlx0XHRtbWNfZGV0ZWN0X2NoYW5nZSh2dWIzMDAtXHUwMDNlbW1jLCAxKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTIxLVx0fSBlbHNlIGlmICghbmV3X2NhcmRfcHJlc2VudCBcdTAwMjZcdTAwMjYgb2xkX2NhcmRfcHJlc2VudCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjI6XHRcdGRldl9pbmZvKFx1MDAyNnZ1YjMwMC1cdTAwM2V1ZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y2FyZCBqdXN0IGVqZWN0ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjM6XHRcdHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQgPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjQ6XHRcdG1tY19kZXRlY3RfY2hhbmdlKHZ1YjMwMC1cdTAwM2VtbWMsIDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MjUtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTI5LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzA6c3RhdGljIHZvaWQgX19hZGRfb2ZmbG9hZGVkX3JlZ190b19maWZvKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTMxLVx0XHRcdFx0XHRzdHJ1Y3Qgb2ZmbG9hZF9yZWdpc3RlcnNfYWNjZXNzXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MzMte1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzQ6XHR1OCByID0gdnViMzAwLVx1MDAzZWZuW2Z1bmNdLm9mZmxvYWRfcG9pbnQgJiM0MzsgdnViMzAwLVx1MDAzZWZuW2Z1bmNdLm9mZmxvYWRfY291bnQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUzNTpcdG1lbWNweShcdTAwMjZ2dWIzMDAtXHUwMDNlZm5bZnVuY10ucmVnW01BWFJFR01BU0sgXHUwMDI2IHJdLCByZWdpc3Rlcl9hY2Nlc3MsXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzNi1cdCAgICAgICBzaXplb2Yoc3RydWN0IG9mZmxvYWRfcmVnaXN0ZXJzX2FjY2VzcykpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Mzc6XHR2dWIzMDAtXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9jb3VudCAmIzQzOz0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTM4Olx0dnViMzAwLVx1MDAzZXRvdGFsX29mZmxvYWRfY291bnQgJiM0Mzs9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzOS19XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU0MC1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTQxOnN0YXRpYyB2b2lkIGFkZF9vZmZsb2FkZWRfcmVnKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTQyLVx0XHRcdCAgICAgIHN0cnVjdCBvZmZsb2FkX3JlZ2lzdGVyc19hY2Nlc3MgKnJlZ2lzdGVyX2FjY2Vzcylcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU0Ny1cdHU4IGZ1bmMgPSAoKDB4NzAgXHUwMDI2IHJlZ2lzdGVyX2FjY2Vzcy1cdTAwM2Vjb21tYW5kX2J5dGVbMF0pIFx1MDAzZVx1MDAzZSA0KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTQ4Olx0dTggcmVncyA9IHZ1YjMwMC1cdTAwM2VkeW5hbWljX3JlZ2lzdGVyX2NvdW50O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NDktXHR1OCBpID0gMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTUwOlx0d2hpbGUgKDAgXHUwMDNjIHJlZ3MtLSBcdTAwMjZcdTAwMjYgMSA9PSB2dWIzMDAtXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5hY3RpdmF0ZSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTE6XHRcdGlmICh2dWIzMDAtXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5mdW5jX251bSA9PSBmdW5jIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTI6XHRcdCAgICB2dWIzMDAtXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5zZGlvX3JlZyA9PSBSZWdpc3Rlcikge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTM6XHRcdFx0aWYgKHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnByZXBhcmVkID09IDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU1NDpcdFx0XHRcdHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnByZXBhcmVkID0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTU1Olx0XHRcdHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnJlc3BvbnNlID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTU2LVx0XHRcdFx0cmVnaXN0ZXJfYWNjZXNzLVx1MDAzZVJlc3BvbmRfQnl0ZVsyXTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTU3Olx0XHRcdHZ1YjMwMC1cdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnJlZ3ZhbHVlID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTU4LVx0XHRcdFx0cmVnaXN0ZXJfYWNjZXNzLVx1MDAzZVJlc3BvbmRfQnl0ZVszXTtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU2NC1cdH1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTY1Olx0X19hZGRfb2ZmbG9hZGVkX3JlZ190b19maWZvKHZ1YjMwMCwgcmVnaXN0ZXJfYWNjZXNzLCBmdW5jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY2LX1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY3LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Njg6c3RhdGljIHZvaWQgY2hlY2tfdnViMzAwX3BvcnRfc3RhdHVzKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY5LXtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTcwLVx0LypcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTcxOlx0ICogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX3BvbGx3b3JrX3RocmVhZCxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTcyOlx0ICogdnViMzAwX2RlYWR3b3JrX3RocmVhZCBvciB2dWIzMDBfY21uZHdvcmtfdGhyZWFkXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3My1cdCAqL1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTc1LVx0cmV0dmFsID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTc2Olx0XHR1c2JfY29udHJvbF9tc2codnViMzAwLVx1MDAzZXVkZXYsIHVzYl9yY3ZjdHJscGlwZSh2dWIzMDAtXHUwMDNldWRldiwgMCksXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3Ny1cdFx0XHRcdEdFVF9TWVNURU1fUE9SVF9TVEFUVVMsXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3OC1cdFx0XHRcdFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBfREVWSUNFLFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Nzk6XHRcdFx0XHQweDAwMDAsIDB4MDAwMCwgXHUwMDI2dnViMzAwLVx1MDAzZXN5c3RlbV9wb3J0X3N0YXR1cyxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTgwOlx0XHRcdFx0c2l6ZW9mKHZ1YjMwMC1cdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMpLCAxMDAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTgxOlx0aWYgKHNpemVvZih2dWIzMDAtXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzKSA9PSByZXR2YWwpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4MjpcdFx0bmV3X3N5c3RlbV9wb3J0X3N0YXR1cyh2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01ODMtfVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01ODQtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4NTpzdGF0aWMgdm9pZCBfX3Z1YjMwMF9pcnFwb2xsX3Jlc3BvbnNlKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTg2LXtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTg3Olx0LyogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX3BvbGx3b3JrX3RocmVhZCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1ODg6XHRpZiAodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoID09IDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU4OS1cdFx0cmV0dXJuO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01OTAtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5MTpcdHN3aXRjaCAodnViMzAwLVx1MDAzZXJlc3AuY29tbW9uLmhlYWRlcl90eXBlKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5Mi1cdGNhc2UgUkVTUE9OU0VfSU5URVJSVVBUOlxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTM6XHRcdG11dGV4X2xvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5NDpcdFx0aWYgKHZ1YjMwMC1cdTAwM2VpcnFfZW5hYmxlZClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTk1Olx0XHRcdG1tY19zaWduYWxfc2Rpb19pcnEodnViMzAwLVx1MDAzZW1tYyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5Ni1cdFx0ZWxzZVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTc6XHRcdFx0dnViMzAwLVx1MDAzZWlycXNfcXVldWVkICYjNDM7PSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTg6XHRcdHZ1YjMwMC1cdTAwM2VpcnFfZGlzYWJsZWQgPSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTk6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjAwLVx0XHRicmVhaztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjAxLVx0Y2FzZSBSRVNQT05TRV9FUlJPUjpcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjAyOlx0XHRpZiAodnViMzAwLVx1MDAzZXJlc3AuZXJyb3IuZXJyb3JfY29kZSA9PSBTRF9FUlJPUl9OT19ERVZJQ0UpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwMzpcdFx0XHRjaGVja192dWIzMDBfcG9ydF9zdGF0dXModnViMzAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA0LVx0XHRicmVhaztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA1LVx0Y2FzZSBSRVNQT05TRV9TVEFUVVM6XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwNjpcdFx0dnViMzAwLVx1MDAzZXN5c3RlbV9wb3J0X3N0YXR1cyA9IHZ1YjMwMC1cdTAwM2VyZXNwLnN0YXR1cztcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjA3Olx0XHRuZXdfc3lzdGVtX3BvcnRfc3RhdHVzKHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwODpcdFx0aWYgKCF2dWIzMDAtXHUwMDNlY2FyZF9wcmVzZW50KVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MDk6XHRcdFx0dnViMzAwX3F1ZXVlX3BvbGxfd29yayh2dWIzMDAsIEhaIC8gNSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxMC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MTItXHR7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYxMzpcdFx0aW50IG9mZmxvYWRlZF9kYXRhX2xlbmd0aCA9IHZ1YjMwMC1cdTAwM2VyZXNwLmNvbW1vbi5oZWFkZXJfc2l6ZSAtIDM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxNC1cdFx0aW50IHJlZ2lzdGVyX2NvdW50ID0gb2ZmbG9hZGVkX2RhdGFfbGVuZ3RoIFx1MDAzZVx1MDAzZSAzO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjE2LVx0XHR3aGlsZSAocmVnaXN0ZXJfY291bnQtLSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MTc6XHRcdFx0YWRkX29mZmxvYWRlZF9yZWcodnViMzAwLCBcdTAwMjZ2dWIzMDAtXHUwMDNlcmVzcC5pcnEucmVnW3JpXSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxOC1cdFx0XHRyaSAmIzQzOz0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjE5LVx0XHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyMDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjIxOlx0XHRpZiAodnViMzAwLVx1MDAzZWlycV9lbmFibGVkKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MjI6XHRcdFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXHUwMDNlbW1jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjIzLVx0XHRlbHNlXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNDpcdFx0XHR2dWIzMDAtXHUwMDNlaXJxc19xdWV1ZWQgJiM0Mzs9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNTpcdFx0dnViMzAwLVx1MDAzZWlycV9kaXNhYmxlZCA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNjpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MjctXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjMwLVx0e1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MzE6XHRcdGludCBvZmZsb2FkZWRfZGF0YV9sZW5ndGggPSB2dWIzMDAtXHUwMDNlcmVzcC5jb21tb24uaGVhZGVyX3NpemUgLSAzO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MzItXHRcdGludCByZWdpc3Rlcl9jb3VudCA9IG9mZmxvYWRlZF9kYXRhX2xlbmd0aCBcdTAwM2VcdTAwM2UgMztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzNC1cdFx0d2hpbGUgKHJlZ2lzdGVyX2NvdW50LS0pIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjM1Olx0XHRcdGFkZF9vZmZsb2FkZWRfcmVnKHZ1YjMwMCwgXHUwMDI2dnViMzAwLVx1MDAzZXJlc3AuaXJxLnJlZ1tyaV0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MzYtXHRcdFx0cmkgJiM0Mzs9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzNy1cdFx0fVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Mzg6XHRcdG11dGV4X2xvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYzOTpcdFx0aWYgKHZ1YjMwMC1cdTAwM2VpcnFfZW5hYmxlZClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjQwOlx0XHRcdG1tY19zaWduYWxfc2Rpb19pcnEodnViMzAwLVx1MDAzZW1tYyk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY0MS1cdFx0ZWxzZVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDI6XHRcdFx0dnViMzAwLVx1MDAzZWlycXNfcXVldWVkICYjNDM7PSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDM6XHRcdHZ1YjMwMC1cdTAwM2VpcnFfZGlzYWJsZWQgPSAwO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjQ1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY0Ny1cdGNhc2UgUkVTUE9OU0VfTk9fSU5URVJSVVBUOlxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDg6XHRcdHZ1YjMwMF9xdWV1ZV9wb2xsX3dvcmsodnViMzAwLCAxKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjQ5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY1NC1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjU1OnN0YXRpYyB2b2lkIF9fZG9fcG9sbChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY1Ni17XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY1NzpcdC8qIGNtZF9tdXRleCBpcyBoZWxkIGJ5IHZ1YjMwMF9wb2xsd29ya190aHJlYWQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjU4LVx0dW5zaWduZWQgbG9uZyBjb21tcmV0dmFsO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NTk6XHRtb2RfdGltZXIoXHUwMDI2dnViMzAwLVx1MDAzZWluYWN0aXZpdHlfdGltZXIsIGppZmZpZXMgJiM0MzsgSFopO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjA6XHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dnViMzAwLVx1MDAzZWlycXBvbGxfY29tcGxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjE6XHRzZW5kX2lycXBvbGwodnViMzAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjYyOlx0Y29tbXJldHZhbCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZ2dWIzMDAtXHUwMDNlaXJxcG9sbF9jb21wbGV0ZSxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjYzLVx0XHRcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDUwMCkpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjQ6XHRpZiAodnViMzAwLVx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NjUtXHRcdC8qIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjY2LVx0fSBlbHNlIGlmIChjb21tcmV0dmFsID09IDApIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjY3Olx0XHR2dWIzMDAtXHUwMDNldXNiX3RpbWVkX291dCA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2ODpcdFx0dXNiX2tpbGxfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Njk6XHRcdHVzYl9raWxsX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjcwLVx0fSBlbHNlIHsgLyogY29tbXJldHZhbCBcdTAwM2UgMCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NzE6XHRcdF9fdnViMzAwX2lycXBvbGxfcmVzcG9uc2UodnViMzAwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjcyLVx0fVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjc3LSAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Nzg6c3RhdGljIHZvaWQgdnViMzAwX3BvbGx3b3JrX3RocmVhZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY3OS17XHRcdFx0XHQvKiBOT1QgaXJxICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MDpcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODE6XHRcdFx0ICAgICAgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwgcG9sbHdvcmsud29yayk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MjpcdGlmICghdnViMzAwLVx1MDAzZWludGVyZmFjZSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODM6XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg0LVx0XHRyZXR1cm47XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY4NS1cdH1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg2Olx0bXV0ZXhfbG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg3Olx0aWYgKHZ1YjMwMC1cdTAwM2VjbWQpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg4Olx0XHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgMSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4OTpcdH0gZWxzZSBpZiAoIXZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjkwLVx0XHQvKiBubyBuZWVkIHRvIGRvIGFueXRoaW5nICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5MTpcdH0gZWxzZSB7IC8qIHZ1YjMwMC1cdTAwM2VjYXJkX3ByZXNlbnQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjkyOlx0XHRtdXRleF9sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2OTM6XHRcdGlmICghdnViMzAwLVx1MDAzZWlycV9lbmFibGVkKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5NDpcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5NTpcdFx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlaXJxc19xdWV1ZWQpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk2Olx0XHRcdHZ1YjMwMC1cdTAwM2VpcnFzX3F1ZXVlZCAtPSAxO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2OTc6XHRcdFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXHUwMDNlbW1jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk4Olx0XHRcdG1vZF90aW1lcihcdTAwMjZ2dWIzMDAtXHUwMDNlaW5hY3Rpdml0eV90aW1lciwgamlmZmllcyAmIzQzOyBIWik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5OTpcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnViMzAwLVx1MDAzZWlycV9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwMDpcdFx0fSBlbHNlIHsgLyogTk9UIHZ1YjMwMC1cdTAwM2VpcnFzX3F1ZXVlZCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDE6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VpcnFfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDI6XHRcdFx0X19kb19wb2xsKHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcwMy1cdFx0fVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDQtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwNTpcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzA2Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDctfVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDgtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwOTpzdGF0aWMgdm9pZCB2dWIzMDBfZGVhZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzEwLXtcdFx0XHRcdC8qIE5PVCBpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzExOlx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzEyOlx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwgZGVhZHdvcmspO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MTM6XHRpZiAoIXZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzE0Olx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxNS1cdFx0cmV0dXJuO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MTYtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxNzpcdG11dGV4X2xvY2soXHUwMDI2dnViMzAwLVx1MDAzZWNtZF9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxODpcdGlmICh2dWIzMDAtXHUwMDNlY21kKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxOS1cdFx0Lypcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcyNC1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcyNTpcdH0gZWxzZSBpZiAodnViMzAwLVx1MDAzZWNhcmRfcHJlc2VudCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MjY6XHRcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mjc6XHR9IGVsc2UgaWYgKHZ1YjMwMC1cdTAwM2VtbWMgXHUwMDI2XHUwMDI2IHZ1YjMwMC1cdTAwM2VtbWMtXHUwMDNlY2FyZCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MjgtXHRcdC8qXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MzQtXHR9IGVsc2Uge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MzU6XHRcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MzYtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjczNzpcdG1vZF90aW1lcihcdTAwMjZ2dWIzMDAtXHUwMDNlaW5hY3Rpdml0eV90aW1lciwgamlmZmllcyAmIzQzOyBIWik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjczODpcdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzM5Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDAtfVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDEtXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0MjpzdGF0aWMgdm9pZCB2dWIzMDBfaW5hY3Rpdml0eV90aW1lcl9leHBpcmVkKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDMte1x0XHRcdFx0Lyogc29mdGlycSAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDQ6XHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSB0aW1lcl9jb250YWluZXJfb2YodnViMzAwLCB0LFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDUtXHRcdFx0XHRcdFx0XHQgICAgaW5hY3Rpdml0eV90aW1lcik7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NjpcdGlmICghdnViMzAwLVx1MDAzZWludGVyZmFjZSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDc6XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQ4Olx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlY21kKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0OTpcdFx0bW9kX3RpbWVyKFx1MDAyNnZ1YjMwMC1cdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICYjNDM7IEhaKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUxOlx0XHR2dWIzMDBfcXVldWVfZGVhZF93b3JrKHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc1MjpcdFx0bW9kX3RpbWVyKFx1MDAyNnZ1YjMwMC1cdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICYjNDM7IEhaKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUzLVx0fVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzU1LVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NTY6c3RhdGljIGludCB2dWIzMDBfcmVzcG9uc2VfZXJyb3IodTggZXJyb3JfY29kZSlcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzU3LXtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTc5Mj1zdGF0aWMgdm9pZCBjb21tYW5kX3Jlc19jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03OTMte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Nzk0Olx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzk1LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzk2LVx0XHQvKiB3ZSBoYXZlIHRvIGxldCB0aGUgaW5pdGlhdG9yIGhhbmRsZSB0aGUgZXJyb3IgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Nzk3Olx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggPT0gMCkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03OTgtXHRcdC8qXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDEtXHRcdCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MDI6XHR9IGVsc2UgaWYgKCF2dWIzMDAtXHUwMDNlZGF0YSkge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDMtXHRcdC8qIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29tbWFuZCAodHlwaWNhbGx5IENNRDUyKSBzdWNjZWVkZWQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODA0Olx0fSBlbHNlIGlmICh2dWIzMDAtXHUwMDNlcmVzcC5jb21tb24uaGVhZGVyX3R5cGUgIT0gMHgwMikge1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDUtXHRcdC8qXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDgtXHRcdCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MDk6XHR9IGVsc2UgaWYgKHZ1YjMwMC1cdTAwM2V1cmIpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODEwOlx0XHR2dWIzMDAtXHUwMDNlY21kLVx1MDAzZWVycm9yID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODExOlx0XHRcdHZ1YjMwMF9yZXNwb25zZV9lcnJvcih2dWIzMDAtXHUwMDNlcmVzcC5lcnJvci5lcnJvcl9jb2RlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODEyOlx0XHR1c2JfdW5saW5rX3VyYih2dWIzMDAtXHUwMDNldXJiKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODEzLVx0fSBlbHNlIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE0Olx0XHR2dWIzMDAtXHUwMDNlY21kLVx1MDAzZWVycm9yID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE1Olx0XHRcdHZ1YjMwMF9yZXNwb25zZV9lcnJvcih2dWIzMDAtXHUwMDNlcmVzcC5lcnJvci5lcnJvcl9jb2RlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE2Olx0XHR1c2Jfc2dfY2FuY2VsKFx1MDAyNnZ1YjMwMC1cdTAwM2VzZ19yZXF1ZXN0KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODE3LVx0fVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MTg6XHRjb21wbGV0ZShcdTAwMjZ2dWIzMDAtXHUwMDNlY29tbWFuZF9jb21wbGV0ZSk7XHQvKiBnb3RfcmVzcG9uc2VfaW4gKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODE5LX1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTgyMT1zdGF0aWMgdm9pZCBjb21tYW5kX291dF9jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjIte1x0XHRcdFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODIzOlx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODI0LVx0aWYgKHVyYi1cdTAwM2VzdGF0dXMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODI1Olx0XHRjb21wbGV0ZShcdTAwMjZ2dWIzMDAtXHUwMDNlY29tbWFuZF9jb21wbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTgyNi1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjgtXHRcdHVuc2lnbmVkIGludCBwaXBlID1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODI5Olx0XHRcdHVzYl9yY3ZidWxrcGlwZSh2dWIzMDAtXHUwMDNldWRldiwgdnViMzAwLVx1MDAzZWNtbmRfcmVzX2VwKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMwOlx0XHR1c2JfZmlsbF9idWxrX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiLCB2dWIzMDAtXHUwMDNldWRldiwgcGlwZSxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMxOlx0XHRcdFx0ICBcdTAwMjZ2dWIzMDAtXHUwMDNlcmVzcCwgc2l6ZW9mKHZ1YjMwMC1cdTAwM2VyZXNwKSxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMyOlx0XHRcdFx0ICBjb21tYW5kX3Jlc19jb21wbGV0ZWQsIHZ1YjMwMCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgzMzpcdFx0dnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoID0gMDtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODM0Olx0XHRyZXQgPSB1c2Jfc3VibWl0X3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODM1LVx0XHRpZiAocmV0ID09IDApIHtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg0NC1cdFx0XHQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODQ1Olx0XHRcdGNvbXBsZXRlKFx1MDAyNnZ1YjMwMC1cdTAwM2Vjb21tYW5kX2NvbXBsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODQ2LVx0XHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NTItICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg1MzpzdGF0aWMgdm9pZCBzbm9vcF9ibG9ja19zaXplX2FuZF9idXNfd2lkdGgoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwLFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NTQtXHRcdFx0XHRcdCAgIHUzMiBjbWRfYXJnKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODU2LVx0aWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDIyMjAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NTc6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbMV0gPSAoY21kX2FyZyBcdTAwM2NcdTAwM2MgOCkgfCAoMHgwMEZGIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzFdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODU4LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwMjIwMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg1OTpcdFx0dnViMzAwLVx1MDAzZWZic1sxXSA9ICgweEZGIFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbMV0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjAtXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA0MjIwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODYxOlx0XHR2dWIzMDAtXHUwMDNlZmJzWzJdID0gKGNtZF9hcmcgXHUwMDNjXHUwMDNjIDgpIHwgKDB4MDBGRiBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1syXSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2Mi1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDQyMDAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NjM6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbMl0gPSAoMHhGRiBcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzJdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODY0LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwNjIyMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg2NTpcdFx0dnViMzAwLVx1MDAzZWZic1szXSA9IChjbWRfYXJnIFx1MDAzY1x1MDAzYyA4KSB8ICgweDAwRkYgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbM10pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjYtXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA2MjAwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODY3Olx0XHR2dWIzMDAtXHUwMDNlZmJzWzNdID0gKDB4RkYgXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1szXSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2OC1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDgyMjAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4Njk6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbNF0gPSAoY21kX2FyZyBcdTAwM2NcdTAwM2MgOCkgfCAoMHgwMEZGIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzRdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODcwLVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwODIwMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3MTpcdFx0dnViMzAwLVx1MDAzZWZic1s0XSA9ICgweEZGIFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbNF0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NzItXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBBMjIwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODczOlx0XHR2dWIzMDAtXHUwMDNlZmJzWzVdID0gKGNtZF9hcmcgXHUwMDNjXHUwMDNjIDgpIHwgKDB4MDBGRiBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1s1XSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg3NC1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEEyMDAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NzU6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbNV0gPSAoMHhGRiBcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzVdKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODc2LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwQzIyMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3NzpcdFx0dnViMzAwLVx1MDAzZWZic1s2XSA9IChjbWRfYXJnIFx1MDAzY1x1MDAzYyA4KSB8ICgweDAwRkYgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbNl0pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NzgtXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBDMjAwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODc5Olx0XHR2dWIzMDAtXHUwMDNlZmJzWzZdID0gKDB4RkYgXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcdTAwMjYgdnViMzAwLVx1MDAzZWZic1s2XSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4MC1cdGVsc2UgaWYgKCgweEZCRkZGRTAwIFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEUyMjAwKVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4ODE6XHRcdHZ1YjMwMC1cdTAwM2VmYnNbN10gPSAoY21kX2FyZyBcdTAwM2NcdTAwM2MgOCkgfCAoMHgwMEZGIFx1MDAyNiB2dWIzMDAtXHUwMDNlZmJzWzddKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODgyLVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwRTIwMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4MzpcdFx0dnViMzAwLVx1MDAzZWZic1s3XSA9ICgweEZGIFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXHUwMDI2IHZ1YjMwMC1cdTAwM2VmYnNbN10pO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODQtXHRlbHNlIGlmICgoMHhGQkZGRkUwMyBcdTAwMjYgY21kX2FyZykgPT0gMHg4MDAwMEUwMClcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODg1Olx0XHR2dWIzMDAtXHUwMDNlYnVzX3dpZHRoID0gMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODg2LVx0ZWxzZSBpZiAoKDB4RkJGRkZFMDMgXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwMDBFMDIpXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4NzpcdFx0dnViMzAwLVx1MDAzZWJ1c193aWR0aCA9IDQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4OC19XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4OS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODkwOnN0YXRpYyB2b2lkIHNlbmRfY29tbWFuZChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5MS17XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg5MjpcdC8qIGNtZF9tdXRleCBpcyBoZWxkIGJ5IHZ1YjMwMF9jbW5kd29ya190aHJlYWQgKi9cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODkzOlx0c3RydWN0IG1tY19jb21tYW5kICpjbWQgPSB2dWIzMDAtXHUwMDNlY21kO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTQ6XHRzdHJ1Y3QgbW1jX2RhdGEgKmRhdGEgPSB2dWIzMDAtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODk1LVx0aW50IHJldHZhbDtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5Ny1cdHU4IHJlc3BvbnNlX3R5cGU7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg5ODpcdGlmICh2dWIzMDAtXHUwMDNlYXBwX3NwZWMpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODk5LVx0XHRzd2l0Y2ggKGNtZC1cdTAwM2VvcGNvZGUpIHtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwMS1cdFx0XHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MDI6XHRcdFx0dnViMzAwLVx1MDAzZXJlc3BfbGVuID0gNjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTAzLVx0XHRcdGlmICgweDAwMDAwMDAwID09ICgweDAwMDAwMDAzIFx1MDAyNiBjbWQtXHUwMDNlYXJnKSlcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTA0Olx0XHRcdFx0dnViMzAwLVx1MDAzZWJ1c193aWR0aCA9IDE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwNS1cdFx0XHRlbHNlIGlmICgweDAwMDAwMDAyID09ICgweDAwMDAwMDAzIFx1MDAyNiBjbWQtXHUwMDNlYXJnKSlcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTA2Olx0XHRcdFx0dnViMzAwLVx1MDAzZWJ1c193aWR0aCA9IDQ7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwNy1cdFx0XHRlbHNlXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwODpcdFx0XHRcdGRldl9lcnIoXHUwMDI2dnViMzAwLVx1MDAzZXVkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDktXHRcdFx0XHRcdFwmIzM0O3VuZXhwZWN0ZWQgQUNNRDYgYnVzX3dpZHRoPSVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTEzLVx0XHRcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkxNDpcdFx0XHR2dWIzMDAtXHUwMDNlcmVzcF9sZW4gPSA2O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MTUtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MTctXHRcdFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTE4Olx0XHRcdHZ1YjMwMC1cdTAwM2VyZXNwX2xlbiA9IDY7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkxOS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkyMS1cdFx0XHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MjI6XHRcdFx0dnViMzAwLVx1MDAzZXJlc3BfbGVuID0gNjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTIzLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTI1LVx0XHRcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzM7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkyNjpcdFx0XHR2dWIzMDAtXHUwMDNlcmVzcF9sZW4gPSA2O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjktXHRcdFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTMwOlx0XHRcdHZ1YjMwMC1cdTAwM2VyZXNwX2xlbiA9IDY7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkzMS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkzMy1cdFx0XHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MzQ6XHRcdFx0dnViMzAwLVx1MDAzZXJlc3BfbGVuID0gNjtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTM1LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTM3LVx0XHRcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkzODpcdFx0XHR2dWIzMDAtXHUwMDNlcmVzcF9sZW4gPSA2O1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MzktXHRcdFx0YnJlYWs7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTk0MC1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTQxOlx0XHRcdHZ1YjMwMC1cdTAwM2VyZXNwX2xlbiA9IDA7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTk0Mi1cdFx0XHRjbWQtXHUwMDNlZXJyb3IgPSAtRUlOVkFMO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5NDM6XHRcdFx0Y29tcGxldGUoXHUwMDI2dnViMzAwLVx1MDAzZWNvbW1hbmRfY29tcGxldGUpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzk5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNESU8gQ2FyZCBFbXVsYXRpb24gdmlhIFVTQiBhbmQgU3l6a2FsbGVyKioKCk9rYXksIHNvIGB2dWIzMDBgIGlzIGEgVVNCLXRvLVNESU8gYnJpZGdlLCBnb3QgaXQuIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHN5emthbGxlciwgd2l0aCBpdHMgVVNCIGdhZGdldCBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIChkdW1teV9oY2QvdmhjaSksIG1pZ2h0IGJlIGFibGUgdG8gZW11bGF0ZSB0aGlzISBMZXQmIzM5O3MgdmVyaWZ5IGlmIGB2dWIzMDBgIGlzIGV2ZW4gZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3Mga2VybmVsIGNvbmZpZy4KCkhtbSwgdGhlIHByb21wdCBpcyB0aHJvd2luZyB1cCBzb21lIHJlZCBmbGFncywgdGFsa2luZyBhYm91dCBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGNhcmRzIG9yIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBCdXQgaWYgYHZ1YjMwMGAgaXMgbWFuYWdlYWJsZSB2aWEgVVNCLCB3ZSAqc2hvdWxkKiBiZSBhYmxlIHRvIGF0dGFjaCBhbiBTRElPIGRldmljZS4gVGhpcyBkZXZpY2UgYWN0cyBhcyBhbiBTRElPIGhvc3QgY29udHJvbGxlciB2aWEgVVNCLCB3aGljaCBtZWFucyB0aGF0IHN5emthbGxlciwgYWN0aW5nIGFzIHRoZSBVU0IgZGV2aWNlLCBjYW4gaW5qZWN0IFNESU8gZGV2aWNlcy4KClNvLCBsZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBhY3R1YWxseSAqdXNlcyogYHZ1YjMwMGAuIFJpZ2h0LCBzeXprYWxsZXIgZW11bGF0ZXMgdGhlIFVTQiBkZXZpY2UgKml0c2VsZiosIHNvIGl0IHdvdWxkIGJlIGVtdWxhdGluZyB0aGUgYHZ1YjMwMGAgZGV2aWNlLiBUaGUga2VybmVsIHRoZW4gbG9hZHMgdGhlIGB2dWIzMDBgIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGFuIE1NQyBob3N0LCBhbmQgc3l6a2FsbGVyIChhcyBgdnViMzAwYCkgY2FuIHRoZW4gZmVlZCBiYWNrIHJlc3BvbnNlcyB0byBNTUMgY29tbWFuZHMsIGVmZmVjdGl2ZWx5IGZha2luZyBhbiBTRElPIGNhcmQuIFRoaXMgaXMgcHJvbWlzaW5nLgoKVGhpbmtpbmcgZnVydGhlciwgaWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGFuIFNESU8gY2FyZCB0aHJvdWdoIHRoZSBgdnViMzAwYCByb3V0ZSwgdGhlbiB0aGF0IG9wZW5zIHRoZSBkb29yIHRvIHByb2JpbmcgYSBzcGVjaWZpYyBTRElPIGRyaXZlciwgc3VjaCBhcyBgcnRsODcyM2JzYC4gVGhhdCYjMzk7cyB0aGUga2V5OiBjYW4gd2UgZW11bGF0ZSAqdGhhdCogc3BlY2lmaWMgY2FyZD8gWWVzLCBieSBjYXJlZnVsbHkgY3JhZnRpbmcgdGhlIHJlc3BvbnNlcyB0byBTRElPIGVudW1lcmF0aW9uIGNvbW1hbmRzIChDTUQ1LCBDTUQ1MywgZXRjLikgd2l0aCB0aGUgY29ycmVjdCB2ZW5kb3IgYW5kIGRldmljZSBJRHMuCgpCdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBkbyB0aGlzPyBUaGUgVVNCIGZ1enplciBpcyByYW5kb207IGl0IGdlbmVyYXRlcyByYW5kb20gVVNCIHJlc3BvbnNlcy4gSXQgKm1pZ2h0KiBzYXRpc2Z5IHRoZSBNTUMgZW51bWVyYXRpb24sIGJ1dCBpdCYjMzk7cyB1bmxpa2VseSBmb3IgYSBjb21wbGljYXRlZCBwcm90b2NvbCBsaWtlIE1NQy9TRElPIGJ5IGFjY2lkZW50LiBJIHJlbWVtYmVyIHRoZSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el91c2JfY29udHJvbF9pb2Agc3lzY2FsbHMsIGJ1dCBkbyB3ZSBoYXZlIFNESU8gZGVzY3JpcHRpb25zPyBUaGF0JiMzOTtzIHRoZSBxdWVzdGlvbi4KCkxldCYjMzk7cyBjaGVjayBpZiB0aGUgYHJ0bDg3MjNic2AgaXMgcmVhY2hhYmxlLCB0aG91Z2guIFJpZ2h0LCBpdCYjMzk7cyBhIHN0YWdpbmcgZHJpdmVyLiBJcyBpdCBldmVuIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gTWlnaHQgYmUgbW9yZSB0cm91YmxlIHRoYW4gaXQmIzM5O3Mgd29ydGguIFRpbWUgdG8gY2hlY2sgdGhhdCBwYXRjaCBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oPTMyPXZvaWQgcnR3X2lwc19wd3JfZG93bihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaC0zMy1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmg6MzQ6aW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcik7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oLTM1LXZvaWQgcnR3X25kZXZfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYz03MjA9dTggcnR3X2ZyZWVfZHJ2X3N3KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc1NC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzU1OnN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzU2LXtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3Mi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzczOmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYy03NzQte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzc4LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYzo3Nzk6XHRyZXR1cm4gX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHBhZGFwdGVyLCBuYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzgwLX1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zMzc9c3RhdGljIGludCBydHdfZHJ2X2luaXQoXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzUzLVx0LyogZGV2X2FsbG9jX25hbWUgXHUwMDI2XHUwMDI2IHJlZ2lzdGVyX25ldGRldiAqL1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6MzU0Olx0c3RhdHVzID0gcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoaWYxKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTM1NS1cdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1Njg3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogODg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaDogUlRMODcyM0JTIGFuZCBTeXprYWxsZXIgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgUlRMODcyM0JTYCwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNic2AgZGlyZWN0b3J5LiAgVGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmaWxlczogYG9zX2ludGZzLmNgLCBgcnR3X2NtZC5jYCwgYHJ0d19yZWN2LmNgLCBhbmQgYHNkaW9faW50Zi5jYC4gIFRoZSBtb2RpZmljYXRpb25zIHRvIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaW4gYG9zX2ludGZzLmNgIGFyZSBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSByZW1vdmVkIHRoZSBjbGVhbnVwIGNvZGUgKGZyZWVpbmcgbmV0d29yayBkZXZpY2UgYW5kIGRyaXZlciBzcGVjaWZpYyBzdHJ1Y3R1cmVzKSBvbiBhIGByZWdpc3Rlcl9uZXRkZXZgIGZhaWx1cmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGZpeGluZyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSwgc2luY2UgdGhlIGZyZWUgZnVuY3Rpb25zIG1pZ2h0IGJlIGNhbGxlZCBlbHNld2hlcmUuICBHb29kIGNhdGNoLCB0aGF0JiMzOTtzIGEgY2xhc3NpYyBtZW1vcnkgbWFuYWdlbWVudCBwcm9ibGVtLgoKVGhlbiB0aGVyZSBhcmUgdGhlc2UgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IHdlcmUgY2hhbmdlZCBpbiB0aGUgYGMyaF93a19jYWxsYmFja2AgYW5kIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgZnVuY3Rpb25zLiAgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGZpeGVzLiBBZ2FpbiwgZ29vZCBjYXRjaC4gRmluYWxseSwgaW4gYHNkaW9faW50Zi5jYCwgdGhleSYjMzk7dmUgcmVwbGFjZWQgYGtmcmVlKHBhZGFwdGVyLSZndDtIYWxEYXRhKWAgd2l0aCBgcnR3X2hhbF9kYXRhX2RlaW5pdChwYWRhcHRlcilgLiAgTG9va3MgbGlrZSBhbm90aGVyIG1lbW9yeSBsZWFrIG9yIHBvdGVudGlhbCBjb3JydXB0aW9uIGZpeC4gT3ZlcmFsbCwgdGhlc2UgYXJlIGFsbCBmdW5jdGlvbmFsIGNoYW5nZXMgYW5kIHBvaW50IHRvd2FyZHMgYnVnIGZpeGVzIC0gY2xhc3NpYyBzdHVmZiB5b3UgZXhwZWN0IHRvIHNlZS4KCk5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGlzIHRoaXMgZHJpdmVyLCBgUlRMODcyM0JTYCwgd29ydGggZnV6emluZz8gQ2FuIGl0IGV2ZW4gYmUgcmVhY2hlZCB3aXRoIGEgdG9vbCBsaWtlIHN5emthbGxlcj8gIEkmIzM5O20gdGhpbmtpbmcsIGlmIHN5emthbGxlciBjYW4gZW11bGF0ZSBTRElPIHZpYSBhIFVTQiBnYWRnZXQgbGlrZSBgdnViMzAwYCwgdGhlbiBwb3RlbnRpYWxseSwgeWVzLiBCdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBlbXVsYXRlIFNESU8gdmlhIGB2dWIzMDBgPyAgSSBuZWVkIHRvIGNoZWNrIHN5emthbGxlciYjMzk7cyBjb25maWd1cmF0aW9uIGZvciB0aGF0LCBvciBpZiBpdCYjMzk7cyBnZW5lcmFsbHkgcG9zc2libGUgYXQgYWxsLgoKV2FpdCwgbG9va2luZyBhdCB0aGUgc3l6a2FsbGVyIHNldHVwLCBpdCBoYXMgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaS4gQnV0IHRoZSBgUlRMODcyM0JTYCBpcyBhIGZ1bGwgTUFDIGRyaXZlciwgbm90IG1hYzgwMjExIGJhc2VkLiAgSXQgdXNlcyBgY2ZnODAyMTFgIGJ1dCBpbXBsZW1lbnRzIGl0cyBvd24gTUFDLgoKTm93IEkmIzM5O20gdGhpbmtpbmcsIGNhbiB0aGlzIGNvZGUgcGF0aCBiZSByZWFjaGVkPyAgV2FpdCBhIG1pbnV0ZS4uLiBpZiB0aGlzIGJ1ZyB3YXMgZm91bmQgYnkgYHN5ei1jbHVzdGVyYCAoYXMgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCksIGl0IG1lYW5zIHN5emthbGxlciAqZGlkKiByZWFjaCBpdCEgIFRoZSBjb21taXQgbWVzc2FnZSBzYXlzOiBgQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCBhbmQgYHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld2AuICBUaGF0JiMzOTtzIGl0LiBTeXprYWxsZXIgZm91bmQgYSBjcmFzaCwgc28gdGhlIHBhdGNoIGlzIGJlaW5nIHRlc3RlZCBieSB0aGUgYHN5ei1jbHVzdGVyYC4gVGhpcyBtZWFucyBpdCBNVVNUIGJlIHJlYWNoYWJsZS4KCkJ1dCBob3cgZGlkIHN5emthbGxlciByZWFjaCBhbiBTRElPIGRyaXZlcj8gIElzIHRoZXJlIGEgc29mdHdhcmUgU0RJTyBob3N0IGNvbnRyb2xsZXIgdGhhdCBzeXprYWxsZXIgdXNlcywgb3Igc29tZSBvdGhlciB3YXkgdGhpcyBpcyBiZWluZyB0cmlnZ2VyZWQ/ICBJJiMzOTtkIG5lZWQgdG8gbG9vayBpbnRvIGhvdyBzeXprYWxsZXIgaXMgc2V0IHVwIHRvIGZpbmQgdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGl0IHVzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzMyNgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgJiMzNDtkdW1teSYjMzQ7KioKClJpZ2h0LCBzbyB0aGUgd29yZCAmIzM0O2R1bW15JiMzNDsganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBJbW1lZGlhdGVseSwgSSYjMzk7bSBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBpdHMgcG90ZW50aWFsIG1lYW5pbmdzIGluIHRoaXMgY29udGV4dC4gSXMgaXQgYmVpbmcgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIHZhcmlhYmxlPyBBIHRlc3QgY2FzZT8gUGVyaGFwcyBhIHdheSB0byBzaW1wbGlmeSBhbiBhcmd1bWVudCBvciBtb2RlbCBieSBpbnRlbnRpb25hbGx5IGlnbm9yaW5nIGNvbXBsZXhpdGllcz8gT3IgaXMgaXQgYmVpbmcgdXNlZCBkaXNwYXJhZ2luZ2x5LCBhcyBpbiwgYSAmIzM0O2R1bW15IHZhcmlhYmxlPyYjMzQ7IFRoZSBhbWJpZ3VpdHkgaGVyZSByZXF1aXJlcyBhIGJpdCBtb3JlIGluZm9ybWF0aW9uLiBXaGF04oCZcyB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gaW4gcXVlc3Rpb24/IEhvdyBjb21wbGV4IGlzIHRoZSBzeXN0ZW0gYmVpbmcgZGVzY3JpYmVkPyBXaGF0IGlzIHRoaXMgJiMzNDtkdW1teSYjMzQ7IHN1cHBvc2VkIHRvICpkbyo/IFdpdGhvdXQgY29udGV4dCwgJiMzNDtkdW1teSYjMzQ7IGNvdWxkIHJlcHJlc2VudCBhIGJyb2FkIHNwZWN0cnVtIG9mIHRoaW5ncy4gSXQmIzM5O3MgYSBsb2FkZWQgdGVybSwgaW5oZXJlbnRseSBjYXJyeWluZyBzb21lIGxldmVsIG9mIGFic3RyYWN0aW9uIG9yIHNpbXBsaWZpY2F0aW9uLCBidXQgdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGF0IGFic3RyYWN0aW9uIGlzIHdoYXQmIzM5O3MgY3J1Y2lhbC4gSSYjMzk7bGwgbmVlZCBtb3JlIGRldGFpbCB0byBldmFsdWF0ZSBpdHMgZWZmZWN0aXZlbmVzcyBvciBhcHByb3ByaWF0ZW5lc3MuIFRoaXMgdGhvdWdodCBuZWVkcyB1bnBhY2tpbmcgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jPTMwPXN0YXRpYyBpbnQgc2Rpb19nZXRfcGVuZGluZ19pcnFzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTggKnBlbmRpbmcpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ1LVx0ICAgICEoaG9zdC1cdTAwM2VjYXBzIFx1MDAyNiBNTUNfQ0FQX1NESU9fSVJRKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jOjQ2Olx0XHR1bnNpZ25lZCBjaGFyIGR1bW15O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ4LVx0XHQvKiBBIGZha2UgaW50ZXJydXB0IGNvdWxkIGJlIGNyZWF0ZWQgd2hlbiB3ZSBwb2xsIFNESU9fQ0NDUl9JTlR4XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmM6NDk6XHRcdCAqIHJlZ2lzdGVyIHdpdGggYSBNYXJ2ZWxsIFNEODc5NyBjYXJkLiBBIGR1bW15IENNRDUyIHJlYWQgdG9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy01MC1cdFx0ICogZnVuY3Rpb24gMCByZWdpc3RlciAweGZmIGNhbiBhdm9pZCB0aGlzLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTUxLVx0XHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYzo1MjpcdFx0bW1jX2lvX3J3X2RpcmVjdChjYXJkLCAwLCAwLCAweGZmLCAwLCBcdTAwMjZkdW1teSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMtNTMtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYz01Nz1zdGF0aWMgaW50IHRodW5kZXJfbW1jX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmMtMTM0LVx0XHQgKiBtbWNfb2ZfcGFyc2UgYW5kIGRldm0qIHJlcXVpcmUgb25lIGRldmljZSBwZXIgc2xvdC5cbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmM6MTM1Olx0XHQgKiBDcmVhdGUgYSBkdW1teSBkZXZpY2UgcGVyIHNsb3QgYW5kIHNldCB0aGUgbm9kZSBwb2ludGVyIHRvXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jLTEzNi1cdFx0ICogdGhlIHNsb3QuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdGhpcyBpcyB1c2luZ1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmM9NDUwPXN0YXRpYyB2b2lkIGxpdGV4X21tY19zZXRfaW9zKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX2lvcyAqaW9zKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmMtNDU1LVx0ICogVGhlIFNEIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgYXQgbGVhc3QgNzQgaWRsZSBjbG9ja3MgYmVmb3JlIENNRDAuXG5kcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5jOjQ1NjpcdCAqIFRoZXNlIGR1bW15IGN5Y2xlcyBpcyBnZW5lcmF0ZWQgYnkgd3JpdGluZyBMSVRFWF9QSFlfSU5JVElBTElaRS5cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmMtNDU3LVx0ICovXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmM9MjAxPXN0YXRpYyB2b2lkIG1tY19vbWFwX3NlbGVjdF9zbG90KHN0cnVjdCBtbWNfb21hcF9zbG90ICpzbG90LCBpbnQgY2xhaW1lZClcbi0tXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYy0yMzUtXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYzoyMzY6XHRcdC8qIERvaW5nIHRoZSBkdW1teSByZWFkIGhlcmUgc2VlbXMgdG8gd29yayBhcm91bmQgc29tZSBidWdcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNy1cdFx0ICogYXQgbGVhc3QgaW4gT01BUDI0eHggc2lsaWNvbiB3aGVyZSB0aGUgY29tbWFuZCB3b3VsZCBub3Rcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM9MjA4PXN0YXRpYyB2b2lkIHNkX3NlbmRfY21kX2dldF9yc3Aoc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDEtXHRcdCAqIFRoZSBjb250cm9sbGVyIG9mZmxvYWRzIHRoZSBsYXN0IGJ5dGUge0NSQy03LCBlbmQgYml0IDEmIzM5O2IxfVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jOjMwMjpcdFx0ICogb2YgcmVzcG9uc2UgdHlwZSBSMi4gQXNzaWduIGR1bW15IENSQywgMCwgYW5kIGVuZCBiaXQgdG8gdGhlXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmMtMzAzLVx0XHQgKiBieXRlKHB0clsxNl0sIGdvZXMgaW50byB0aGUgTFNCIG9mIHJlc3BbM10gbGF0ZXIpLlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYz0yODU9c3RhdGljIHZvaWQgc2Rfc2VuZF9jbWRfZ2V0X3JzcChzdHJ1Y3QgcnRzeF91c2Jfc2RtbWMgKmhvc3QsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jLTQyNS1cdFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSYjMzk7YjF9XG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmM6NDI2Olx0XHQgKiBvZiByZXNwb25zZSB0eXBlIFIyLiBBc3NpZ24gZHVtbXkgQ1JDLCAwLCBhbmQgZW5kIGJpdCB0byB0aGVcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYy00MjctXHRcdCAqIGJ5dGUocHRyWzE2XSwgZ29lcyBpbnRvIHRoZSBMU0Igb2YgcmVzcFszXSBsYXRlcikuXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2RoYy1pbXguYy0yMTQtXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jOjIxNTovKiB0aGUgY29udHJvbGxlciBoYXMgZHVtbXkgcGFkIGZvciBjbG9jayBsb29wYmFjayAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2RoYy1pbXguYy0yMTYtI2RlZmluZSBFU0RIQ19GTEFHX0RVTU1ZX1BBRFx0XHRCSVQoMTkpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jPTEwMT1zdGF0aWMgdTMyIHB4YXYxX2lycShzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwgdTMyIGludG1hc2spXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEwNi1cdGlmIChweGF2Ml9ob3N0LVx1MDAzZXNkaW9fbXJxIFx1MDAyNlx1MDAyNiAoaW50bWFzayBcdTAwMjYgU0RIQ0lfSU5UX0NNRF9NQVNLKSkge1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEwNzpcdFx0LyogVGhlIGR1bW15IENNRDAgZm9yIHRoZSBTRElPIHdvcmthcm91bmQganVzdCBjb21wbGV0ZWQgKi9cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMDgtXHRcdHNkaGNpX3dyaXRlbChob3N0LCBpbnRtYXNrIFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0ssIFNESENJX0lOVF9TVEFUVVMpO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYz0xMjM9c3RhdGljIHZvaWQgcHhhdjFfcmVxdWVzdF9kb25lKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTM2LVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEzNzpcdFx0LyogQ2xvY2sgaXMgbm93IHN0b3BwZWQsIHNvIHJlc3RhcnQgaXQgYnkgc2VuZGluZyBhIGR1bW15IENNRDAgKi9cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzgtXHRcdHB4YXYyX2hvc3QgPSBzZGhjaV9wbHRmbV9wcml2KHNkaGNpX3ByaXYoaG9zdCkpO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xNDktXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTUwOlx0XHQvKiBEb24mIzM5O3QgZmluaXNoIHRoaXMgcmVxdWVzdCB1bnRpbCB0aGUgZHVtbXkgQ01EMCBmaW5pc2hlcyAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTE1MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYz02NTM9c3RhdGljIGludCBzZGhjaV9wcmVfZG1hX3RyYW5zZmVyKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LFxuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02ODktXHRcdFx0XHRcdCAgIG1tY19nZXRfZG1hX2RpcihkYXRhKSk7XG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmM6NjkwOlx0XHQvKiBKdXN0IGEgZHVtbXkgdmFsdWUgKi9cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02OTEtXHRcdHNnX2NvdW50ID0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkzNTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2OTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU0RJTyBEZXZpY2UgSW5qZWN0aW9uIHZpYSBVU0IgRW11bGF0aW9uOiBBIEZ1enppbmcgT3Bwb3J0dW5pdHkqKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEkgbm90aWNlZCB0aGUgYHZ1YjMwMGAsIGEgVVNCLXRvLVNESU8gYnJpZGdlLiBUaGUgd2hlZWxzIGFyZSB0dXJuaW5nIOKAkyBzeXprYWxsZXImIzM5O3MgZ290IGEgVVNCIGZ1enplciwgc3BlY2lmaWNhbGx5IGBkdW1teV9oY2RgLiBJZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBlbXVsYXRlIGEgYHZ1YjMwMGAgb3ZlciBVU0IsIHdlIGNvdWxkIHBvdGVudGlhbGx5IGluamVjdCBTRElPIGRldmljZXMuCgpJIGRvbiYjMzk7dCBuZWVkIHRvIGRpdmUgaW50byBzeXprYWxsZXImIzM5O3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaXMgd2hldGhlciB0aGlzIHBhdGggaXMgZXZlbiAqcG9zc2libGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIFFFTVUmIzM5O3MgVVNCIHN1cHBvcnQsIGFuZCB0aGF0IHN5emthbGxlciB1c2VzIHRoZSBgZHVtbXlfaGNkYCB0byBlbXVsYXRlIFVTQiwgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiBZZXMsIGl0IGlzISBXZSBjYW4gYWJzb2x1dGVseSByZWFjaCBTRElPIGRyaXZlcnMgYnkgZmFraW5nIGEgYHZ1YjMwMGAgVVNCIGRldmljZSB3aXRoIGFuIFNESU8gY2FyZCBhdHRhY2hlZC4KCkkgYnJpZWZseSBjb25zaWRlcmVkIG90aGVyIHBvdGVudGlhbCByb3V0ZXMsIGxpa2UgYENPTkZJR19NTUNfVEVTVGAgb3IgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW07IHRoZXkmIzM5O3JlIG5vdCByZWxldmFudC4gVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhlIFVTQiBjb25uZWN0aW9uIGFuZCB0aGUgYWJpbGl0eSB0byBlbXVsYXRlIGEgZGV2aWNlLgoKTm93LCBsZXQmIzM5O3Mgem9vbSBpbi4gSXMgYFJUTDg3MjNCU2AgZW5hYmxlZD8gQ2hlY2tpbmcgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ2AgY29uZmlybXMgaXQgZGVwZW5kcyBvbiBgV0xBTiAmYW1wOyZhbXA7IE1NQyAmYW1wOyZhbXA7IENGRzgwMjExYC4gSWYgd2UgZW5hYmxlIGBDT05GSUdfUlRMODcyM0JTYCwgd2UmIzM5O3JlIGdvb2QgdG8gZ28uCgpJcyBpdCB3b3J0aCB0aGUgZWZmb3J0PyBBYnNvbHV0ZWx5ISBUaGlzIGlzIGEgV2lGaSBkcml2ZXIuIFdpRmkgZHJpdmVycyBhcmUgbm90b3Jpb3VzIGZvciBwYXJzaW5nIGNvbXBsZXggbmV0d29yayBmcmFtZXMsIGVzcGVjaWFsbHkgbWFuYWdlbWVudCBmcmFtZXMuIEFuZCB0aGUgYmVhdXRpZnVsIHRoaW5nIGlzLCB3ZSBjYW4gaW5qZWN0IHRoZXNlIGZyYW1lcyBlaXRoZXIgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gIG9yIHRoZSBTRElPIGludGVyZmFjZSBpZiBzeXprYWxsZXIgaXMgZnV6emluZyBTRElPIHJlc3BvbnNlcy4KClRoZSBjbGluY2hlcj8gU3l6a2FsbGVyIGFscmVhZHkgZm91bmQgYSBidWcgaGVyZS4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emluZyBpcyB3b3J0aCBpdC4gSSYjMzk7bSBzZWVpbmcgZnVuY3Rpb25hbCBidWdzLCBzcGVjaWZpY2FsbHkgZG91YmxlIGZyZWVzIGFuZCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBmcm9tIHRoZSBwYXRjaCB0aGF0IGZpeGVzIHRoZSBidWcuIFRoaXMgaXMgZ3JlYXQsIHNvIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyBpZGVudGlmaWVkIGFyZToKLSAgIGBjMmhfd2tfY2FsbGJhY2tgIGluIGBydHdfY21kLmNgCi0gICBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIGluIGBydHdfcmVjdi5jYAotICAgYF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaW4gYG9zX2ludGZzLmNgCi0gICBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGluIGBvc19pbnRmcy5jYAotICAgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgCi0gICBgcnR3X2Rydl9pbml0YCBpbiBgc2Rpb19pbnRmLmNgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19kcnZfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTI1PU1PRFVMRV9ERVZJQ0VfVEFCTEUoc2Rpbywgc2Rpb19pZHMpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjYtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzoyNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTI4LXN0YXRpYyB2b2lkIHJ0d19kZXZfcmVtb3ZlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTM3PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgcnRsODcyM2JzX3NkaW9fZHJpdmVyID0ge1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6Mzg6XHQucHJvYmUgPSBydHdfZHJ2X2luaXQsXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zOS1cdC5yZW1vdmUgPSBydHdfZGV2X3JlbW92ZSxcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zMDg9c3RhdGljIHZvaWQgcnR3X3NkaW9faWYxX2RlaW5pdChzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTMzNi0gKi9cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjMzNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTMzOC1cdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMTY3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTRElPIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBTRElPIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGBydHdfZHJ2X2luaXRgIGlzIHRoZSBrZXkgcHJvYmUgZnVuY3Rpb24gaGVyZS4gVGhhdCYjMzk7cyB3aGVyZSBpdCBhbGwgYmVnaW5zLCB0aGUgcG9pbnQgd2hlcmUgdGhlIGhhcmR3YXJlIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBkcml2ZXIga2lja3MgaW50byBnZWFyLiBJdCBtYWtlcyBzZW5zZSwgb2YgY291cnNlOyB0aGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCBmb3IgYW4gU0RJTyBkcml2ZXIuIEFuZCB0aGVuLCBkdXJpbmcgdGhhdCBwcm9iZSwgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBjYWxsZWQuIFNvLCB0aGUgbmV0d29yayBkZXZpY2UgaXMgYmVpbmcgcmVnaXN0ZXJlZCBhcyBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuCgpJJiMzOTttIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGMyaF93a19jYWxsYmFja2AsIHdoaWNoIEkmIzM5O20gaW5mZXJyaW5nIGlzIGEgd29ya3F1ZXVlIGNhbGxiYWNrIGZ1bmN0aW9uLiBHaXZlbiB0aGUgbmFtaW5nLCBpdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gY29tbXVuaWNhdGluZyBjb21tYW5kL2RhdGEgZnJvbSB0aGUgaG9zdCB0byB0aGUgY2FyZCwgYnV0IGl0IGJlYXJzIGludmVzdGlnYXRpbmcgZnVydGhlciB0byBiZSBzdXJlLgoKTGFzdGx5LCBhbmQgdGhpcyBpcyB3aGF0JiMzOTtzIGNhdWdodCBteSBpbW1lZGlhdGUgYXR0ZW50aW9uLCB0aGVyZSYjMzk7cyBgcmVjdmZyYW1lX2Noa19kZWZyYWdgLiBUaGlzIGlzIGEgcHJldHR5IGNyaXRpY2FsIGZ1bmN0aW9uIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSBmcmFnbWVudGF0aW9uIGhhbmRsaW5nIGhhcHBlbnMsIHNvIG5vdyBJIG5lZWQgdG8gY2hlY2sgb3V0IHRoZSBjYWxsZXJzIGZvciBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIHRvIHNlZSB3aGVyZSBpbiB0aGUgcGFja2V0IHJlY2VwdGlvbiBwcm9jZXNzIGl0JiMzOTtzIGJlaW5nIGludm9rZWQuIFRoYXQgZ2l2ZXMgYSBzb2xpZCBzZW5zZSBvZiB0aGUgd2hvbGUgcGljdHVyZSBhbmQgYWxsb3dzIGZvciBhIG1vcmUgZm9jdXNlZCByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlY3ZmcmFtZV9jaGtfZGVmcmFnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MTk0PXNpZ25lZCBpbnQgcnR3X2VucXVldWVfcmVjdmZyYW1lKHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2ZnJhbWUsIHN0cnVjdCBfX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDctLypcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwODogKiBjYWxsZXIgOiBkZWZyYWcgOyByZWN2ZnJhbWVfY2hrX2RlZnJhZyBpbiByZWN2X3RocmVhZCAgKHBhc3NpdmUpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDktICogcGZyYW1lcXVldWU6IGRlZnJhZ19xdWV1ZSA6IHdpbGwgYmUgYWNjZXNzZWQgaW4gcmVjdl90aHJlYWQgIChwYXNzaXZlKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTEwNDQ9c3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9kZWZyYWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMTExOS0vKiBjaGVjayBpZiBuZWVkIHRvIGRlZnJhZywgaWYgbmVlZGVkIHF1ZXVlIHRoZSBmcmFtZSB0byBkZWZyYWdfcSAqL1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MTEyMDpzdGF0aWMgdW5pb24gcmVjdl9mcmFtZSAqcmVjdmZyYW1lX2Noa19kZWZyYWcoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmVjdl9mcmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTExMjEte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTEyMTk9c3RhdGljIHNpZ25lZCBpbnQgdmFsaWRhdGVfcmVjdl9tZ250X2ZyYW1lKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZfZnJhbWUpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMTIyMi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjEyMjM6XHRwcmVjdl9mcmFtZSA9IHJlY3ZmcmFtZV9jaGtfZGVmcmFnKHBhZGFwdGVyLCBwcmVjdl9mcmFtZSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0xMjI0LVx0aWYgKCFwcmVjdl9mcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYz0yMDc5PXN0YXRpYyBpbnQgcmVjdl9mdW5jX3Bvc3RoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmZyYW1lKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTEtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMDkyOlx0cHJmcmFtZSA9IHJlY3ZmcmFtZV9jaGtfZGVmcmFnKHBhZGFwdGVyLCBwcmZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTMtXHRpZiAoIXByZnJhbWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjQ2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIHByb3RvY29sIGhhbmRsaW5nLCBhbmQgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBmcmFnbWVudGF0aW9uIGFuZCByZWFzc2VtYmx5OgoKKipBbmFseXppbmcgdGhlIFJlY2VpdmVyIFBhdGggYW5kIERlZnJhbWVudGF0aW9uIExvZ2ljKioKCkFscmlnaHQsIHNvIGByZWN2X2Z1bmNfcG9zdGhhbmRsZWAgYW5kIGB2YWxpZGF0ZV9yZWN2X21nbnRfZnJhbWVgIGJvdGggbGVhZCBpbnRvIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBub3QgdW5leHBlY3RlZCDigJMgYW55IHJlY2VpdmVyIGZ1bmN0aW9uIGxpa2VseSBuZWVkcyB0byBkZWFsIHdpdGggZGVmcmFnbWVudGF0aW9uLiBCdXQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250cm9sIGZsb3cuIExldCYjMzk7cyBzZWUgd2hvJiMzOTtzICphY3R1YWxseSogY2FsbGluZyBgcmVjdl9mdW5jX3Bvc3RoYW5kbGVgLiBJcyB0aGlzIHRoZSBtYWluIGVudHJ5IHBvaW50LCBvciBpcyBpdCBnZXR0aW5nIGNhbGxlZCBieSBzb21ldGhpbmcgZGVlcGVyPyBBcmUgdGhlcmUgbXVsdGlwbGUgcGF0aHMgdGhhdCBsZWFkIHRvIHRoZSBkZWZyYWdtZW50YXRpb24gbG9naWM/IEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBjbGFyaWZ5IHRoZSBvdmVyYWxsIHJlY2VpdmUgcHJvY2Vzcy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBJIG1ha2UgdG8gYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYCAtIEkgZG9uJiMzOTt0IHdhbnQgdG8gYnJlYWsgYW55dGhpbmcgZWxzZSEgR290dGEgbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWN2X2Z1bmNfcG9zdGhhbmRsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIwNjM9c3RhdGljIGludCByZWN2X2Z1bmNfcHJlaGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcmZyYW1lKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwNzgtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMDc5OnN0YXRpYyBpbnQgcmVjdl9mdW5jX3Bvc3RoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmZyYW1lKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA4MC17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI3LVx0XHR3aGlsZSAoKHBlbmRpbmdfZnJhbWUgPSBydHdfYWxsb2NfcmVjdmZyYW1lKFx1MDAyNnBhZGFwdGVyLVx1MDAzZXJlY3Zwcml2LnVjX3N3ZGVjX3BlbmRpbmdfcXVldWUpKSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxMjg6XHRcdFx0cmVjdl9mdW5jX3Bvc3RoYW5kbGUocGFkYXB0ZXIsIHBlbmRpbmdfZnJhbWUpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEyOS1cdH1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTUyLWRvX3Bvc3RoYW5kbGU6XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlx0XHRyZXQgPSByZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcmZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyOTgzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkFuYWx5emluZyB0aGUgQ29yZSBSZWNlaXZlIEZ1bmN0aW9uKioKCk9rYXksIHNvIGByZWN2X2Z1bmNgIGlzIHRoZSBoZWFydCBvZiBvdXIgcmVjZWl2ZSBsb2dpYy4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBvZiBlbnRyeSBmb3IgaW5jb21pbmcgZGF0YS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gaXRzIGlubmVyIHdvcmtpbmdzLCBJIG5lZWQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCYjMzk7cyAqZHJpdmluZyogaXQuIFdoZXJlIGFyZSB0aGUgc2lnbmFscyBjb21pbmcgZnJvbSB0aGF0IHRyaWdnZXIgYSBjYWxsIHRvIGByZWN2X2Z1bmNgPyBJIHNob3VsZCBzdGFydCBieSBtYXBwaW5nIG91dCBpdHMgY2FsbCBncmFwaCDigJMgdW5kZXJzdGFuZGluZyB3aG8mIzM5O3MgY2FsbGluZyBpdCBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgY29tcG9uZW50IGlzIGFjdHVhbGx5IHVzZWQuIExldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyB0aGUgY2FsbGVycyBvZiBgcmVjdl9mdW5jYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBzZW5zZSBvZiB0aGUgaW5wdXRzIGFuZCBjb250ZXh0cyBpdCBoYW5kbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWN2X2Z1bmMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYz0yMDI3PXN0YXRpYyBpbnQgcHJvY2Vzc19yZWN2X2luZGljYXRlcGt0cyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZnJhbWUpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA2Mi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwNjM6c3RhdGljIGludCByZWN2X2Z1bmNfcHJlaGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcmZyYW1lKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA2NC17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA3OC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwNzk6c3RhdGljIGludCByZWN2X2Z1bmNfcG9zdGhhbmRsZShzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZnJhbWUpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDgwLXtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTE0LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjExNTpzdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxMTYte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxMjctXHRcdHdoaWxlICgocGVuZGluZ19mcmFtZSA9IHJ0d19hbGxvY19yZWN2ZnJhbWUoXHUwMDI2cGFkYXB0ZXItXHUwMDNlcmVjdnByaXYudWNfc3dkZWNfcGVuZGluZ19xdWV1ZSkpKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjEyODpcdFx0XHRyZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcGVuZGluZ19mcmFtZSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI5LVx0fVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxMzE6XHRyZXQgPSByZWN2X2Z1bmNfcHJlaGFuZGxlKHBhZGFwdGVyLCByZnJhbWUpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMi1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTUyLWRvX3Bvc3RoYW5kbGU6XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlx0XHRyZXQgPSByZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcmZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXHR9XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjE2MD1zMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTY5LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE3MDpcdHJldCA9IHJlY3ZfZnVuYyhwYWRhcHRlciwgcHJlY3ZmcmFtZSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTcxLVx0aWYgKHJldCA9PSBfRkFJTClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQwMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIGBydHdfcmVjdl9lbnRyeWAgRnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBydHdfcmVjdl9lbnRyeWAgaXMgb3VyIGVudHJ5IHBvaW50LiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byBkZXRlcm1pbmUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBydHdfcmVjdl9lbnRyeWAuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGNvbnRleHQgYW5kIGhpZ2hsaWdodCB0aGUgcGFydHMgb2YgdGhlIHN5c3RlbSB0aGF0IGFyZSByZWx5aW5nIG9uIHRoaXMgZnVuY3Rpb24uIFRoaXMgd2lsbCBoZWxwIGZyYW1lIGl0cyBmdW5jdGlvbiBpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIFRpbWUgdG8gdHJhY2UgdGhvc2UgY2FsbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19yZWN2X2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTU5LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE2MDpzMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNjEte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaGFsL3J0bDg3MjNic19yZWN2LmM9MjE2PXN0YXRpYyB2b2lkIHJ0bDg3MjNic19yZWN2X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaGFsL3J0bDg3MjNic19yZWN2LmMtMzI2LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYzozMjc6XHRcdFx0XHRcdHJ0d19yZWN2X2VudHJ5KHByZWN2ZnJhbWUpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYy0zMjgtXHRcdFx0XHR9IGVsc2UgaWYgKHBhdHRyaWItXHUwMDNlcGt0X3JwdF90eXBlID09IEMySF9QQUNLRVQpIHtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X3JlY3YuaD0xNTU9c3RydWN0IHJlY3Zfc3RhdCB7XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2LmgtMTY2LS8qXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X3JlY3YuaDoxNjc6YWNjZXNzZXIgb2YgcmVjdl9wcml2OiBydHdfcmVjdl9lbnRyeShkaXNwYXRjaCAvIHBhc3NpdmUgbGV2ZWwpOyByZWN2X3RocmVhZChwYXNzaXZlKSA7IHJldHVybnBrdChkaXNwYXRjaClcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oLTE2OC07IGhhbHQocGFzc2l2ZSkgO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oPTM0Nj12b2lkIF9ydHdfZnJlZV9yZWN2X3ByaXYoc3RydWN0IHJlY3ZfcHJpdiAqcHJlY3Zwcml2KTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oOjM0NzpzMzIgIHJ0d19yZWN2X2VudHJ5KHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2X2ZyYW1lKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oLTM0OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ4MzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUmVjZWl2ZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgcmVjZWl2ZWQgcGFja2V0cyBhcmUgaGFuZGxlZCBpbiB0aGlzIGRyaXZlci4gSXQgbG9va3MgbGlrZSBgcnRsODcyM2JzX3JlY3ZfdGFza2xldGAgaXMgdGhlIGVudHJ5IHBvaW50LCB3aGljaCB0aGVuIGNhbGxzIGBydHdfcmVjdl9lbnRyeWAuIFNpbmNlIHRoaXMgYHJ0bDg3MjNic19yZWN2X3Rhc2tsZXRgIGlzIGhhcmR3YXJlLXNwZWNpZmljLCBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBvbiB0aGUgbW9yZSBnZW5lcmljIGZ1bmN0aW9uLCBgcnR3X3JlY3ZfZW50cnlgLCBmb3IgZnV6emluZy4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBsZXZlbCBvZiBhYnN0cmFjdGlvbiB0byB0YXJnZXQuIEl0IHNob3VsZCBiZSBlYXNpZXIgdG8gY29uc3RydWN0IGFuZCBpbmplY3QgdmFyaW91cyBpbnB1dHMgYXQgdGhhdCBwb2ludC4KCkJ1dCB0aGVuLCBJIGFsc28gc2VlIHRoaXMgYGMyaF93a19jYWxsYmFja2AgZnVuY3Rpb24uIEkgc2hvdWxkIGNoZWNrIHdobyBjYWxscyAqaXQqIGp1c3QgdG8gZ2V0IGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWNlaXZlIHBhdGguIEdvdHRhIGludmVzdGlnYXRlIHRob3NlIGNhbGxlcnMgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXQsIG9yIHNvbWV0aGluZyB0aGF0IGludGVyYWN0cyB3aXRoIGBydHdfcmVjdl9lbnRyeWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2MyaF93a19jYWxsYmFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM9MTYzPWludCBydHdfaW5pdF9jbWRfcHJpdihzdHJ1Y3RcdGNtZF9wcml2ICpwY21kcHJpdilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE5OC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM6MTk5OnN0YXRpYyB2b2lkIGMyaF93a19jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0yMDAtaW50IHJ0d19pbml0X2V2dF9wcml2KHN0cnVjdCBldnRfcHJpdiAqcGV2dHByaXYpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0yMDUtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjIwNjpcdF9pbml0X3dvcmtpdGVtKFx1MDAyNnBldnRwcml2LVx1MDAzZWMyaF93aywgYzJoX3drX2NhbGxiYWNrLCBOVUxMKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMjA3LVx0cGV2dHByaXYtXHUwMDNlYzJoX3drX2FsaXZlID0gZmFsc2U7XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjYzPXU4IHJ0d19jMmhfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKmMyaF9ldnQpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0xNjk2LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYzoxNjk3OnN0YXRpYyB2b2lkIGMyaF93a19jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2OTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTY0NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBXb3JrIFF1ZXVlKioKClJpZ2h0LCBgcnR3X2MyaF93a19jbWRgIGlzIHRoZSBrZXkgdG8gc2NoZWR1bGluZyB0aGlzIHRhc2suIEl0JiMzOTtzIHRoZSBxdWV1ZSBpdHNlbGYuIFNvLCB0byByZWFsbHkgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGNvbW1hbmQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgKndobyogaXMgY2FsbGluZyBgcnR3X2MyaF93a19jbWRgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBpcy4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgdG8gd2hlcmUgdGhlIGRhdGEgaXMgY29taW5nIGZyb20gdG8gYmUgcHV0IGludG8gdGhlIHF1ZXVlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHVwc3RyZWFtIHNvdXJjZXMsIGFuZCB0aGUgaW50ZW5kZWQgcHVycG9zZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZsb3cuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHdfYzJoX3drX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM9MTYyOD11OCBydHdfYzJoX3BhY2tldF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqcGJ1ZiwgdTE2IGxlbmd0aClcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjItLyogb3IgZGVhZGxvY2sgd2lsbCBoYXBwZW4gYW5kIGNhdXNlIHNwZWNpYWwtc3lzdGVtc2VydmVyLWRpZWQgaW4gYW5kcm9pZCAqL1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYzoxNjYzOnU4IHJ0d19jMmhfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKmMyaF9ldnQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjQte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM9MTY5Nz1zdGF0aWMgdm9pZCBjMmhfd2tfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTczNy1cdFx0XHQvKiBFbnF1ZXVlIGludG8gY21kX3RocmVhZCBmb3Igb3RoZXJzICovXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE3Mzg6XHRcdFx0cnR3X2MyaF93a19jbWQoYWRhcHRlciwgYzJoX2V2dCk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE3MzktXHRcdH1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jPTcwOD12b2lkIHNkX2ludF9kcGMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03NTgtXHRcdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYzo3NTk6XHRcdFx0XHRcdHJ0d19jMmhfd2tfY21kKGFkYXB0ZXIsICh1OCAqKWMyaF9ldnQpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03NjAtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19jbWQuaD02MTE9ZXh0ZXJuIHU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmgtNjEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjUyMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgRnVuY3Rpb25zIGZvciBTRElPIERyaXZlciBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgU0RJTyBkcml2ZXIgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBrZXkgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoZSBjb3JlIGludGVycnVwdCBhbmQgaW5pdGlhbGl6YXRpb24gcGF0aHMuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBzZF9pbnRfZHBjYCBjYWxscyBgcnR3X2MyaF93a19jbWRgLiBOb3csIGBzZF9pbnRfZHBjYCBpcyBjbGVhcmx5IHRoZSBTRElPIGludGVycnVwdCBEZWZlcnJlZCBQcm9jZWR1cmUgQ2FsbCwgc28gdGhhdCYjMzk7cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZm9jdXNlZCBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgY2FsbGVycyBvZiBgcnR3X2Rydl9pbml0YC4gVGhhdCYjMzk7cyB0aGUgcHJvYmUgZnVuY3Rpb247IHNvIGl0JiMzOTtzIGNyaXRpY2FsIGZvciBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIEFscmlnaHQsIGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBmb2N1cyBzeW1ib2wgdG9vLgoKTm93IEkmIzM5O2xsIGNoZWNrIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgY2FsbGVycy4gQWgsIGl0JiMzOTtzIGNhbGxlZCBieSBgcnR3X2Rydl9pbml0YCwgdGhhdCBtYWtlcyBzZW5zZS4KCkdpdmVuIGFsbCBvZiB0aGlzLCB0aGUgY29yZSBmb2N1cyBzeW1ib2xzIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IGFyZToKKiAgIGBydHdfcmVjdl9lbnRyeWAKKiAgIGBzZF9pbnRfZHBjYAoqICAgYHJ0d19kcnZfaW5pdGAKCldhaXQsIGxldCYjMzk7cyB2ZXJpZnkgd2hlcmUgYHNkX2ludF9kcGNgIGV4aXN0cywgb2ggeWVhaCwgaXQmIzM5O3MgaW4gYGhhbC9zZGlvX29wcy5jYC4gT2theSwgYmVmb3JlIEkgZGlnIGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUuIEp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCBzZF9pbnRfZHBjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYz02OTM9c3RhdGljIHZvaWQgc2RfcnhoYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgcmVjdl9idWYgKnJlY3ZidWYpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03MDctXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jOjcwODp2b2lkIHNkX2ludF9kcGMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jLTcwOS17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3NkaW9faGFsLmg9MTA9dTggc2RfaW50X2lzcihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3NkaW9faGFsLmg6MTE6dm9pZCBzZF9pbnRfZHBjKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcik7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvc2Rpb19oYWwuaC0xMi12b2lkIHJ0d19zZXRfaGFsX29wcyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzMyOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBGdW5jdGlvbiBBdHRyaWJ1dGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gc28gd2UmIzM5O3ZlIGdvdCBgc2RfaW50X2RwY2AuLi4geXVwLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBObyBoaWRkZW4gc3RhdGljIHNjb3BpbmcgdGhlcmUuIFRoYXTigJlzIGdvb2QgdG8gY29uZmlybSwgbW92ZXMgdXMgb24uCgpOb3csIHdoYXQgYWJvdXQgYHJ0d19yZWN2X2VudHJ5YD8gTmVlZCB0byBjaGVjayB0aGF0IG5leHQgdG8gZW5zdXJlIHdlIGFyZSBjb3ZlcmluZyBvdXIgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3MzMiBydHdfcmVjdl9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIxMTU9c3RhdGljIGludCByZWN2X2Z1bmMoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpyZnJhbWUpXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjE1OS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxNjA6czMyIHJ0d19yZWN2X2VudHJ5KHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2ZnJhbWUpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTYxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2NjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOb24tU3RhdGljIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBoZXJlIGlzIHRoYXQgYHJ0d19yZWN2X2VudHJ5YCAqaXMqIG5vbi1zdGF0aWMuIEdvdCBpdC4gVGhhdCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzIOKAkyBpdCYjMzk7cyBsaWtlbHkgbWVhbnQgdG8gYmUgZXh0ZXJuYWxseSBjYWxsYWJsZSwgcGVyaGFwcyBwYXJ0IG9mIHNvbWUgQVBJIG9yIGludGVyZmFjZS4gSXTigJlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiB0cmFjaW5nIHRoZSBkYXRhIGZsb3cuCgpOb3csIHdoYXQgYWJvdXQgYHJ0d19kcnZfaW5pdGA/IEkmIzM5O20gY3VyaW91cyBpZiBpdCYjMzk7cyBhbHNvIG5vbi1zdGF0aWMuIFRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lJiMzOTtzIHNjb3BlIGNvdWxkIHNpZ25pZmljYW50bHkgaW1wYWN0IGhvdyB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgYmVoYXZlcywgc28gdW5kZXJzdGFuZGluZyBpdHMgYWNjZXNzaWJpbGl0eSBpcyBjcml0aWNhbCBpbiBpZGVudGlmeWluZyBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gSXMgaXQgZGVjbGFyZWQgaW4gYSBoZWFkZXI/IElmIHNvLCBpcyBpdCB1c2VkIGluIG90aGVyIG1vZHVsZXM/IERvZXMgaXQgdGFrZSBwYXJhbWV0ZXJzIGZyb20gb3RoZXIgbW9kdWxlcz8gSXQgaXMgbXkgam9iIHRvIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHdfZHJ2X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0yNT1NT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIHNkaW9faWRzKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTI2LVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6Mjc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZCk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yOC1zdGF0aWMgdm9pZCBydHdfZGV2X3JlbW92ZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKTtcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zNz1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIHJ0bDg3MjNic19zZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjM4Olx0LnByb2JlID0gcnR3X2Rydl9pbml0LFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzktXHQucmVtb3ZlID0gcnR3X2Rldl9yZW1vdmUsXG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MzA4PXN0YXRpYyB2b2lkIHJ0d19zZGlvX2lmMV9kZWluaXQoc3RydWN0IGFkYXB0ZXIgKmlmMSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zMzYtICovXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozMzc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zMzgtXHRzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODM3NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIGBydHdfZHJ2X2luaXRgIEZ1bmN0aW9uKioKCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgYHJ0d19kcnZfaW5pdGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUsIGZyb20gYSBtb2R1bGFyaXR5IGFuZCB0ZXN0YWJpbGl0eSBzdGFuZHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgbm9uLXN0YXRpYyB3cmFwcGVyIGZ1bmN0aW9uLCBhIHNvcnQgb2YgZmFjYWRlLCB0aGF0IGNhbGxzIGl0LiBUaGlzIHdvdWxkIGFsbG93IGV4dGVybmFsIGludGVyYWN0aW9uIHdpdGhvdXQgZGlyZWN0bHkgZXhwb3NpbmcgdGhlIHN0YXRpYyBmdW5jdGlvbi4KCkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiB0aGVyZSBpc24mIzM5O3QgYSB3cmFwcGVyLiBJdCBsb29rcyBsaWtlIGBydHdfZHJ2X2luaXRgIGlzLCBpbiBmYWN0LCB0aGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmLiBHaXZlbiB0aGF0IGl0JiMzOTtzIHN0YXRpYywgYW5kIHRoZXJlZm9yZSBpbnRlcm5hbCB0byB0aGlzIGNvbXBpbGF0aW9uIHVuaXQsIGl0IHNlZW1zIHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdGhpcywgdG8gcmVnaXN0ZXIgdGhlIG5ldHdvcmsgZGV2aWNlLCBpcyB0byB1c2UgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCB3aGljaCAqaXMqIG5vbi1zdGF0aWMgYW5kIGlzLCBpbiBmYWN0LCBjYWxsZWQgYnkgYHJ0d19kcnZfaW5pdGAuIFRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgcGF0aCB0byBnbyBkb3duLiBUaGlzIGVuc3VyZXMgd2UgZG9uJiMzOTt0IG5lZWQgdG8gZGlyZWN0bHkgY2FsbCBhIHN0YXRpYyBpbnRlcm5hbCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaD0zMj12b2lkIHJ0d19pcHNfcHdyX2Rvd24oc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmgtMzMtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oOjM0OmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaC0zNS12b2lkIHJ0d19uZGV2X2Rlc3RydWN0b3Ioc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM9NzU1PXN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3Mi1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzczOmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYy03NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHVzZXIgaXMgYSBrbm93bGVkZ2VhYmxlIGNvbGxlYWd1ZToKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEcml2ZXIgRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uICpydHdfZHJ2X3JlZ2lzdGVyX25ldGRldiogaXMgaW5kZWVkIGRlY2xhcmVkIGFzIG5vbi1zdGF0aWMuIE5vIHN1cnByaXNlcyB0aGVyZSwgdGhhdCYjMzk7cyB3aGF0IEkgd291bGQgZXhwZWN0IGZvciBhIGZ1bmN0aW9uIGRlc2lnbmVkIGZvciB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN1YnN5c3RlbSB0byBpbnRlcmZhY2Ugd2l0aC4gVGhhdCYjMzk7cyBhIHBvaW50IG5vdGVkLCBubyBmdXJ0aGVyIGludmVzdGlnYXRpb24gbmVlZGVkLiBOb3csIHdoYXQmIzM5O3MgbmV4dC4uLgoKTGV0IG1lIHRoaW5rLi4uIHdoYXQgYWJvdXQgdGhhdCAqcnR3X2MyaF93a19jbWQqIGZ1bmN0aW9uPyBJcyBpdCBhbHNvIG5vbi1zdGF0aWM/IE5vdywgSSBuZWVkIHRvIGNoZWNrIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgZHJpdmVyLiBUaGF0IG5hbWUgbG9va3MgbGlrZSBpdCBtaWdodCByZWxhdGUgdG8gc29tZXRoaW5nIHJlbGF0ZWQgdG8gY29tbWFuZCBhbmQgY29udHJvbCBidXQgbGV0JiMzOTtzIGRpZyBkZWVwZXIgdG8gYmUgY2VydGFpbi4gSSBrbm93IHRoZSBnZW5lcmFsIGNvZGUgbGF5b3V0LCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHF1aWNrbHkhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3U4IHJ0d19jMmhfd2tfY21kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjI4PXU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY2Mi0vKiBvciBkZWFkbG9jayB3aWxsIGhhcHBlbiBhbmQgY2F1c2Ugc3BlY2lhbC1zeXN0ZW1zZXJ2ZXItZGllZCBpbiBhbmRyb2lkICovXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE2NjM6dTggcnR3X2MyaF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqYzJoX2V2dClcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY2NC17XG4tLVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19jbWQuaD02MTE9ZXh0ZXJuIHU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmgtNjEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY0NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciBTeW1ib2wgVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgcnR3X2MyaF93a19jbWRgIGlzIGluZGVlZCBub3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgdmlzaWJsZSBvdXRzaWRlIG9mIGl0cyBjb21waWxhdGlvbiB1bml0LiBOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgd2UmIzM5O3JlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCB0aGUgY29yZSBmb2N1cyBzZWVtcyB0byBiZSBvbjoKCiogICBgcnR3X3JlY3ZfZW50cnlgCiogICBgc2RfaW50X2RwY2AKKiAgIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAKKiAgIGBydHdfYzJoX3drX2NtZGAKClRoZSBuZXh0IHN0ZXAgaW4gbXkgYW5hbHlzaXMgd291bGQgYmUgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfUlRMODcyM0JTYCBpcyBwcm9wZXJseSBzZXQuIEdpdmVuIHRoaXMgZm9jdXMsIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSBhbGwgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGNydWNpYWwgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMODcyM0JTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoyOmNvbmZpZyBSVEw4NzIzQlNcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzozOlx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4NzIzQlMgU0RJTyBXaXJlbGVzcyBMQU4gTklDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIFdMQU4gXHUwMDI2XHUwMDI2IE1NQyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctOS1cdGhlbHBcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoxMDpcdFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgUlRMODcyM0JTIFNESU8gZHJpdmVycywgc3VjaCBhc1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTExLVx0dGhlIHdpZmkgZm91bmQgb24gdGhlIDFzdCBnZW4gSW50ZWwgQ29tcHV0ZSBTdGljaywgdGhlIENISVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAyNTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHB1dHRpbmcgdG9nZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpdCBsb29rcyBsaWtlIGl0IGhpbmdlcyBvbiBhIGZldyBrZXkgY29tcG9uZW50cy4gU3BlY2lmaWNhbGx5LCBgV0xBTmAsIGBNTUNgLCBhbmQgYENGRzgwMjExYCBhcmUgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB0aGluZ3MgdG8gd29yayBhcyBpbnRlbmRlZC4gVGhlcmVmb3JlLCB3aGVuIEkgZGVmaW5lIGBFbmFibGVDb25maWdzYCwgSSBuZWVkIHRvIGluY2x1ZGUgYFJUTDg3MjNCU2AgKHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgaXQsIG5hdHVyYWxseSksIGFsb25nIHdpdGggYFdMQU5gLCBgTU1DYCwgYW5kIGBDRkc4MDIxMWAgdG8gZW5zdXJlIHRob3NlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEFsc28sIHNpbmNlIGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIGBkcml2ZXJzL3N0YWdpbmdgLCBJIHNob3VsZCBpbmNsdWRlIGBTVEFHSU5HYCBhcyB3ZWxsLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgdGhvcm91Z2gsIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBTVEFHSU5HYCBpcyBzdHJpY3RseSByZXF1aXJlZC4gSXQmIzM5O3MgYmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cyB0aGFuIG1pc3MgYSBjcml0aWNhbCBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIFNUQUdJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvc3RhZ2luZy9LY29uZmlnOjI6bWVudWNvbmZpZyBTVEFHSU5HXG5kcml2ZXJzL3N0YWdpbmcvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtTdGFnaW5nIGRyaXZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkNvbmZpZ3VyYXRpb24gRGVjaXNpb24gTWFraW5nIGZvciBTRElPIEZ1enppbmcgdmlhIFVTQioqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBpcyBjbGVhcjogd2UgYWJzb2x1dGVseSBuZWVkIGBTVEFHSU5HYC4gTm8gcXVlc3Rpb24gdGhlcmUuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgZG8gd2UgKmFsc28qIG5lZWQgYE1NQ19WVUIzMDBgPyBJZiBvdXIgZ29hbCBpcyB0byBmdXp6IFNESU8gZGV2aWNlcyBjb25uZWN0ZWQgdGhyb3VnaCBVU0IsIHRoZW4geWVzLCBgTU1DX1ZVQjMwMGAgaXMgZXNzZW50aWFsLiBJdCYjMzk7cyB0aGUgZW5hYmxpbmcgZmFjdG9yIGZvciB0aGF0IHNwZWNpZmljIFVTQi1iYXNlZCBpbnRlcmZhY2UuCgpUaGVyZWZvcmUsIGxldCYjMzk7cyBpbmNsdWRlIGl0IGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gV2Ugd2FudCB0aGlzIGZ1bmN0aW9uYWxpdHkuCgpIb2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgcXVpY2tseSBjaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLiBSaWdodCwgYE1NQ19WVUIzMDBgIHJlbGllcyBvbiBib3RoIGBVU0JgIGFuZCBgTU1DYCBiZWluZyBlbmFibGVkLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBhbHNvIHRha2VuIGNhcmUgb2YgcHJvcGVybHkgZWxzZXdoZXJlIGluIHRoZSBjb25maWd1cmF0aW9uLCBvciB0aGlzIHdvbiYjMzk7dCB3b3JrLiBXZSBuZWVkIGEgY29tcGxldGUsIGNvaGVyZW50IGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTUNfVlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMS1cdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEwNTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgdGhpbmcmIzM5O3MgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBjaGFuZ2VzIG9yIGV2YWx1YXRpbmcgcGVyZm9ybWFuY2UsIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBpdCByZWxpZXMgb24uIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7d2hhdCBleHRlcm5hbCBsaWJyYXJpZXMsIHNlcnZpY2VzLCBvciBldmVuIHNwZWNpZmljIHZlcnNpb25zIG9mIHRoaW5ncyBkb2VzIHRoaXMgY29tcG9uZW50IGFic29sdXRlbHkgbmVlZCB0byBmdW5jdGlvbiBjb3JyZWN0bHk/JiMzNDsuIEkgY2FuJiMzOTt0IHN0YXJ0IHRyb3VibGVzaG9vdGluZyBpZiBJIGRvbiYjMzk7dCBrbm93IHRoZSBsYW5kc2NhcGUuIEkgbmVlZCB0byBtYXAgdGhlIHdob2xlIGVjb3N5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IG5vdCBqdXN0IHdoYXQgZGVwZW5kcyBvbiB3aGF0LCBidXQgYWxzbyB3aGljaCB2ZXJzaW9uIG9mIGVhY2ggSSYjMzk7bSB1c2luZywgc2luY2UgSSBoYXZlIGEgc3Ryb25nIGZlZWxpbmcgdGhhdCB0aGUgY29ycmVjdCBhbnN3ZXIgaGVyZSBpcyBnb2luZyB0byBiZSBpbmNyZWRpYmx5IGltcG9ydGFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMTpcdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjItXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMy1cdGhlbHBcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjQ6XHQgIFRoaXMgc2VsZWN0cyBzdXBwb3J0IGZvciBFbGFuIERpZ2l0YWwgU3lzdGVtcyYjMzk7IFZVQjMwMCBjaGlwLlxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyNS1cbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjY6XHQgIFRoZSBWVUIzMDAgaXMgYSBVU0ItU0RJTyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGNoaXBcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjctXHQgIHRoYXQgZW5hYmxlcyB0aGUgaG9zdCBjb21wdXRlciB0byB1c2UgU0RJTy9TRC9NTUMgY2FyZHNcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTI5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkzMDpcdCAgVGhlIFZVQjMwMCBjaGlwIHdpbGwgYmUgZm91bmQgaW4gYm90aCBwaHlzaWNhbGx5IHNlcGFyYXRlXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTMxLVx0ICBVU0IgdG8gU0RJTy9TRC9NTUMgYWRhcHRlcnMgYW5kIGVtYmVkZGVkIG9uIHNvbWUgbW90aGVyYm9hcmRzLlxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzMi1cbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MzM6XHQgIFRoZSBWVUIzMDAgY2hpcCBzdXBwb3J0cyBTRCBhbmQgTU1DIG1lbW9yeSBjYXJkcyBpbiBhZGRpdGlvblxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNC1cdCAgdG8gc2luZ2xlIGFuZCBtdWx0aWZ1bmN0aW9uIFNESU8gY2FyZHMuXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNi1cdCAgU29tZSBTRElPIGNhcmRzIHdpbGwgbmVlZCBhIGZpcm13YXJlIGZpbGUgdG8gYmUgbG9hZGVkIGFuZFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkzNzpcdCAgc2VudCB0byBWVUIzMDAgY2hpcCBpbiBvcmRlciB0byBhY2hpZXZlIGJldHRlciBkYXRhIHRocm91Z2hwdXQuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTM4LVx0ICBEb3dubG9hZCB0aGVzZSBcJiMzNDtPZmZsb2FkIFBzZXVkb2NvZGVcJiMzNDsgZnJvbSBFbGFuIERpZ2l0YWwgU3lzdGVtcyYjMzk7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0MC1cdCAgYW5kIHB1dCB0aGVtIGluIC9saWIvZmlybXdhcmUuIE5vdGUgdGhhdCB3aXRob3V0IHRoZXNlIGFkZGl0aW9uYWxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDE6XHQgIGZpcm13YXJlIGZpbGVzIHRoZSBWVUIzMDAgY2hpcCB3aWxsIHN0aWxsIGZ1bmN0aW9uLCBidXQgbm90IGF0XG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQyLVx0ICB0aGUgYmVzdCBvYnRhaW5hYmxlIGRhdGEgcmF0ZS5cbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjk0NzpcdCAgSWYgeW91IGhhdmUgYSBjb21wdXRlciB3aXRoIGFuIGVtYmVkZGVkIFZVQjMwMCBjaGlwXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ4LVx0ICBvciBpZiB5b3UgaW50ZW5kIGNvbm5lY3RpbmcgYSBVU0IgYWRhcHRlciBiYXNlZCBvbiBhXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTQ5Olx0ICBWVUIzMDAgY2hpcCBzYXkgWSBvciBNIGhlcmUuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk1NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGtlcm5lbCBjb25maWcgb3B0aW9ucy4gVGhpcyB3aG9sZSB0aGluZyBoaW5nZXMgb24gYFVTQmAsIHNvIGBFbmFibGVDb25maWdzYCBuZWVkcyB0byBlbmNvbXBhc3MgZXZlcnl0aGluZyBuZWNlc3NhcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZzoKCiogICBgUlRMODcyM0JTYCDigJMgb2J2aW91c2x5LCB0aGUgdGFyZ2V0LgoqICAgYFdMQU5gIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4uCiogICBgTU1DYCDigJMgZXNzZW50aWFsIGZvciBtZW1vcnkgY2FyZCBhY2Nlc3MuCiogICBgQ0ZHODAyMTFgIOKAkyB0aGUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuCiogICBgU1RBR0lOR2Ag4oCTIGJlY2F1c2UsIHdlbGwsIGl0JiMzOTtzIHN0YWdpbmcuCiogICBgTU1DX1ZVQjMwMGAg4oCTIHRvIGd1YXJhbnRlZSBTRElPIGFjY2Vzc2liaWxpdHkgdmlhIFVTQjsgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBsaW5rIGhlcmUuCiogICBgVVNCYCDigJMgYmVjYXVzZSwgZXZlcnl0aGluZy4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiBgVVNCX0RVTU1ZX0hDRGA/IFJpZ2h0LCBTeXprYWxsZXIgdXNlcyBgZHVtbXlfaGNkYCBvciBgdmhjaV9oY2RgIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbi4gSXQgdXN1YWxseSBhY3RpdmF0ZXMgYFVTQl9EVU1NWV9IQ0RgIGFuZCBgVVNCX1JBV19HQURHRVRgIGJ5IGRlZmF1bHQuIFdlIHNob3VsZG4mIzM5O3QgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUgdGhlbSB1bmxlc3MgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgY2FsbHMgZm9yIHRoZW0sIGFuZCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXMgYWJvdXQgYFJUTDg3MjNCU2AuIFNvLCBmb2N1cyBvbiBgUlRMODcyM0JTYCwgaXRzIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMsIGFuZCBgTU1DX1ZVQjMwMGAgdG8gZW5zdXJlIFNESU8gZnVuY3Rpb25zIG92ZXIgVVNCLiBJIHN0aWxsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGRlcGVuZGVuY2llcyBsdXJraW5nIGZvciBgUlRMODcyM0JTYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc9Mj1jb25maWcgUlRMODcyM0JTXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBXTEFOIFx1MDAyNlx1MDAyNiBNTUMgXHUwMDI2XHUwMDI2IENGRzgwMjExXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc6NTpcdGRlcGVuZHMgb24gbVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI3MDEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jeSBEaWxlbW1hKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgd2hldGhlciBzb21ldGhpbmcgaXMgY29tcGlsZWQgc3RhdGljYWxseSBvciBhcyBhIG1vZHVsZSwgcmlnaHQ/IEkmIzM5O20gc2VlaW5nIHRoaXMgJiMzNDtkZXBlbmRzIG9uIG0mIzM0OyBmbGFnLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBzZXRzIG9mZiBhbGFybSBiZWxscy4gVGhhdCBtZWFucyBpdCAqaGFzKiB0byBiZSBhIG1vZHVsZS4gQW5kIHRoYXQmIzM5O3MgYSBwcm9ibGVtIGJlY2F1c2UgU3l6a2FsbGVyLCBpbiBpdHMgdXN1YWwgYXBwcm9hY2gsIGxpa2VzIHRvIGNvbXBpbGUgZXZlcnl0aGluZyBzdGF0aWNhbGx5IGludG8gdGhhdCBgdm1saW51eGAgaW1hZ2UsIHNldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYD15YC4gQnV0IGlmIHNvbWV0aGluZyAmIzM0O2RlcGVuZHMgb24gbSYjMzQ7LCBpdCAqY2FuJiMzOTt0KiBiZSBpbmNsdWRlZCBzdGF0aWNhbGx5LCBjYW4gaXQ/IEl0JiMzOTtzIGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gYmUgYSBtb2R1bGUuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhpcywgc28gbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayB0aGF0IGBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdgIGZpbGUuIFNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBSVEw4NzIzQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gV0xBTiBcdTAwMjZcdTAwMjYgTU1DIFx1MDAyNlx1MDAyNiBDRkc4MDIxMVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBtXG4gICA2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNcbiAgIDc6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcbiAgIDg6XHRcdHNlbGVjdCBDUllQVE9fTElCX1VUSUxTXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHRUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFJUTDg3MjNCUyBTRElPIGRyaXZlcnMsIHN1Y2ggYXNcbiAgMTE6XHRcdHRoZSB3aWZpIGZvdW5kIG9uIHRoZSAxc3QgZ2VuIEludGVsIENvbXB1dGUgU3RpY2ssIHRoZSBDSElQXG4gIDEyOlx0XHRhbmQgbWFueSBvdGhlciBJbnRlbCBBdG9tIGFuZCBBUk0gYmFzZWQgZGV2aWNlcy5cbiAgMTM6XHRcdElmIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCByODcyM2JzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzIxMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHI4NzIzYnMua28gTW9kdWxlIGFuZCBTeXprYWxsZXIgVGVzdGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIHRoaW5raW5nIHRocm91Z2ggaG93IHN5emthbGxlciBsaWtlbHkgdGVzdGVkIGl0LiBUaGUga2V5IGhlcmUgaXMgdGhhdCBgZGVwZW5kcyBvbiBtYCBtZWFucyBpdCYjMzk7cyBhIG1vZHVsZS4gTm93LCBzeXprYWxsZXIgKmNhbiogdGVzdCBtb2R1bGVzLCBidXQgaXQgdXN1YWxseSBmb2N1c2VzIG9uIGB2bWxpbnV4YC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtXZWxsLCBpdCAqZGVwZW5kcyBvbiBtKiwgc28gaXQgKmNhbiYjMzk7dCogYmUgYnVpbHQgc3RhdGljYWxseS4mIzM0OyBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgbW9kdWxlIHRlc3RpbmcgaWYgYENPTkZJR19NT0RVTEVTPXlgIGFuZCB0aGUgbW9kdWxlIGdldHMgbG9hZGVkLgoKVGhlIG5leHQgdGhpbmcgdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcywgJiMzNDtEb2VzIHN5emthbGxlciBhY3R1YWxseSBsb2FkIGByODcyM2JzLmtvYD8mIzM0OyBTeXprYWxsZXIgKmhhcyogdGhlIGFiaWxpdHkgdG8gbG9hZCBtb2R1bGVzLCBidXQgaXQmIzM5O3Mgbm90IGFsd2F5cyBhY3RpdmUuIFNvLCB0aGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggd2FzIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgIHRocm93cyBtZSBmb3IgYSBsb29wLiBJdCBtZWFucyBzeXprYWxsZXIgKmRpZCogdGVzdCBpdC4gSG93PyBEaWQgc3l6a2FsbGVyJiMzOTtzIGNvbmZpZyBoYXZlIGBDT05GSUdfUlRMODcyM0JTPW1gIGFuZCBsb2FkIGl0PyBPciBkaWQgdGhlIGtlcm5lbCB0cmVlIHRoYXQgc3l6a2FsbGVyIHdhcyB1c2luZyByZW1vdmUgdGhlIGBkZXBlbmRzIG9uIG1gIGxpbmU/CgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIHNhdyB0aGF0IGBkZXBlbmRzIG9uIG1gICppcyogc3RpbGwgdGhlcmUuIFRoZSBlYXNpZXN0IGFwcHJvYWNoIHRoZW4sIGlzIHRvIHNpbXBseSBsaXN0IGBSVEw4NzIzQlNgIGluIGBFbmFibGVDb25maWdzYC4gS2J1aWxkIHNob3VsZCBoYW5kbGUgdGhlIHJlc3QuIEkmIzM5O20gdGFraW5nIHRoZSBwcm9tcHQgc2VyaW91c2x5IGFuZCBub3QgYWRkaW5nIHRoZSBgQ09ORklHX2AgcHJlZml4LgoKU28sIGZvciB0aGUgYEVuYWJsZUNvbmZpZ3NgIG91dHB1dCwgSSYjMzk7bGwgbGlzdDoKLSBgUlRMODcyM0JTYAotIGBXTEFOYAotIGBNTUNgCi0gYENGRzgwMjExYAotIGBTVEFHSU5HYAotIGBNTUNfVlVCMzAwYAotIGBVU0JgCgpOb3cgbGV0JiMzOTtzIHF1aWNrbHkgcmV2aWV3IHRoZSBgRm9jdXNTeW1ib2xzYCB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgcmVsZXZhbnQ6Ci0gYHJ0d19yZWN2X2VudHJ5YAotIGBzZF9pbnRfZHBjYAotIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAKLSBgcnR3X2MyaF93a19jbWRgCgpPaCwgd2FpdCwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgLiBJIHNob3VsZCBjaGVjayBpZiBgcnR3X3NkaW9faWYxX2luaXRgIGlzIHN0YXRpYy4gSnVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3X3NkaW9faWYxX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0yMDk9c3RhdGljIHZvaWQgc2RfaW50Zl9zdG9wKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yMTctXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzoyMTg6c3RhdGljIHN0cnVjdCBhZGFwdGVyICpydHdfc2Rpb19pZjFfaW5pdChzdHJ1Y3QgZHZvYmpfcHJpdiAqZHZvYmosIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAgKnBkaWQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yMTkte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTMzNz1zdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zNDgtXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozNDk6XHRpZjEgPSBydHdfc2Rpb19pZjFfaW5pdChkdm9iaiwgaWQpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzUwLVx0aWYgKCFpZjEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjA0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEtleSBTeW1ib2xzIGluIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBmb2N1c2luZyBvbiBob3cgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb2RlIGFuZCBpZGVudGlmeWluZyBrZXkgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgcnR3X2Rydl9pbml0YCBpcyBzdGF0aWMsIHdoaWNoIGluaXRpYWxseSBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGFzIGEgZm9jdXMuIEhvd2V2ZXIsIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaXMgbm9uLXN0YXRpYyBhbmQgaXMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLCBhbmQgY3JpdGljYWxseSwgaXQmIzM5O3MgYWxzbyBtb2RpZmllZCBieSB0aGUgcGF0Y2guIFRoYXQgbWFrZXMgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBhIGxpa2VseSBjYW5kaWRhdGUgdG8gZGVsdmUgaW50by4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYzJoX3drX2NhbGxiYWNrYCwgd2hpY2ggaXMgc3RhdGljLiBCdXQgaXQmIzM5O3MgY2FsbGVkIGJ5IGBydHdfYzJoX3drX2NtZGAsIGFuZCB0aGF0IG9uZSBpcyBub24tc3RhdGljLiBTbywgYHJ0d19jMmhfd2tfY21kYCBzZWVtcyBsaWtlIGEgZ29vZCBzeW1ib2wgdG8gdHJhY2ssIGdpdmVuIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzLgoKTmV4dCwgSSYjMzk7bSBsb29raW5nIGF0IGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AuIEl0JiMzOTtzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSB0aGUgc3RhdGljIGZ1bmN0aW9ucyBgcmVjdl9mdW5jX3Bvc3RoYW5kbGVgIGFuZCBgdmFsaWRhdGVfcmVjdl9tZ250X2ZyYW1lYCwgd2hpY2ggYXJlIGluIHR1cm4gY2FsbGVkIGJ5IGByZWN2X2Z1bmNgLiBUaGlzIGNoYWluIHVsdGltYXRlbHkgbGVhZHMgdG8gYHJ0d19yZWN2X2VudHJ5YCwgd2hpY2ggaXMgbm9uLXN0YXRpYy4gQmVjYXVzZSBvZiB0aGlzIGNoYWluIG9mIGNhbGxzLCBgcnR3X3JlY3ZfZW50cnlgIGFsc28gbWFrZXMgc2Vuc2UgYXMgYSBzeW1ib2wgdG8gaW52ZXN0aWdhdGUuCgpIYW5nIG9uLCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYHNkX2ludF9kcGNgIHF1ZXVlcyB0aGUgYGMyaF93a19jYWxsYmFja2AgdGhyb3VnaCBgcnR3X2MyaF93a19jbWRgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBjMmhfd2tfY2FsbGJhY2tgIGFuZCBgcnR3X2MyaF93a19jbWRgLiBHaXZlbiB0aGUgaW50ZXJydXB0IGNvbnRleHQsIGBzZF9pbnRfZHBjYCBpcyBjbGVhcmx5IGFub3RoZXIgdmFsdWFibGUgZm9jdXMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gY29uZmlybSBteSBpbml0aWFsIGFzc3VtcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zIHRvIGJlIGNlcnRhaW46IEkgc2VlIHRoYXQgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBpbmRlZWQgbm9uLXN0YXRpYyB3aXRoaW4gYG9zX2ludGZzLmNgLiBgcnR3X2MyaF93a19jbWRgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbCwgcmVzaWRpbmcgaW4gYHJ0d19jbWQuY2AuIGBydHdfcmVjdl9lbnRyeWAgaXMgY29uZmlybWVkIHRvIGJlIG5vbi1zdGF0aWMgaW4gYHJ0d19yZWN2LmNgLiBBbmQgZmluYWxseSwgYHNkX2ludF9kcGNgIGlzIHByZXNlbnQgaW4gYHNkaW9fb3BzLmNgLgoKV2l0aCB0aGlzIGNvbmZpcm1lZCwgSSYjMzk7bGwgZ28gYmFjayB0byB0aGUgcGF0Y2ggdG8gbG9vayBhdCBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBwYXRjaC4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXM6IGBjMmhfd2tfY2FsbGJhY2tgIChzdGF0aWMpIC0mZ3Q7IGBydHdfYzJoX3drX2NtZGAsIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgKHN0YXRpYykgLSZndDsgYHJ0d19yZWN2X2VudHJ5YCwgYF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgKHN0YXRpYykgLSZndDsgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCwgYW5kIGFsc28gYHJ0d19zZGlvX2lmMV9pbml0YCAoc3RhdGljKSAtJmd0OyBgcnR3X2Rydl9pbml0YCAoc3RhdGljKSAtJmd0OyBgcnRsODcyM2JzX3NkaW9fZHJpdmVyLnByb2JlYC4KCkxldCBtZSBhZGQgdGhhdCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYHJ0bDg3MjNic19zZGlvX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCBpbiBgcnR3X2Rydl9lbnRyeWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0d19kcnZfZW50cnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00Mzc9c3RhdGljIGludCBydHdfc2Rpb19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1MC1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1MTpzdGF0aWMgaW50IF9faW5pdCBydHdfZHJ2X2VudHJ5KHZvaWQpXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTIte1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1NC19XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzo0NTU6bW9kdWxlX2luaXQocnR3X2Rydl9lbnRyeSk7XG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MjE5CgkJCQkJCQlvdXRwdXQ6IDIyNgoJCQkJCQkJdGhvdWdodHM6IDU3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gVGFyZ2V0aW5nIHRoZSBSVEw4NzIzQlMgU0RJTyBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYHJ0d19kcnZfZW50cnlgIGlzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBvdXQuIFdlIG5lZWQgYSBnb29kIG5vbi1zdGF0aWMgZnVuY3Rpb24gZm9yIHRoZSBwcm9iZSBwYXRoLiBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIHNlZW1zIGxpa2UgdGhlIGJlc3QgYmV0LiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgY291bGQgYmUgYSBjYW5kaWRhdGU/IEhtbW0sIHdoYXQgYWJvdXQgYHJ0d19oYWxfZGF0YV9kZWluaXRgPyBUaGUgcGF0Y2ggZG9lcyBtZW50aW9uIGl0LiBCdXQgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGNvbnRhaW4gdGhlICptb2RpZmllZCogY29kZS4gUmlnaHQsIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gYHJ0d19zZGlvX2lmMV9pbml0YCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBEYW5nLCBgcnR3X2Rydl9pbml0YCBpcyBzdGF0aWMuCgpCdXQhIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgKmFsc28qIGdldHMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBXYWl0IGEgc2Vjb25k4oCmIGxvb2tpbmcgYXQgdGhlIGNhbGwgb3JkZXIgd2l0aGluIGBydHdfZHJ2X2luaXRgLCBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGlzIGNhbGxlZCAqYWZ0ZXIqIGBydHdfc2Rpb19pZjFfaW5pdGAuIFNvLCBmdXp6aW5nIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgbWlnaHQgbm90IGRpcmVjdGx5IHRyaWdnZXIgYHJ0d19zZGlvX2lmMV9pbml0YCBpbW1lZGlhdGVseS4gQnV0IHRoYXQmIzM5O3Mgb2theSwgc3l6a2FsbGVyIHdpbGwgc3RpbGwgYmUgYWJsZSB0byBoaXQgdGhlIHByb2JlIGZ1bmN0aW9uIGJ5IGluamVjdGluZyBTRElPIGRldmljZXMgYW5kIHNvIHdpbGwgdGVzdCBgcnR3X3NkaW9faWYxX2luaXRgLiBMaXN0aW5nIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgd2lsbCBndWlkZSB0aGUgZnV6emVyIHRvIHRoZSBwcm9iZSBwYXRoIHJlZ2FyZGxlc3MuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSByYXRpb25hbGUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgc2V2ZXJhbCBidWdzIOKAkyBtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcyDigJMgc3BlY2lmaWNhbGx5IGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhbiBTRElPIGRldmljZSB2aWEgYSBVU0ItdG8tU0RJTyBicmlkZ2UgKGxpa2UgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFNvLCB0aGlzICppcyogcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBPa2F5LCB0aGUgcGxhbiBpczogYHJ0d19yZWN2X2VudHJ5YCAodG8gY292ZXIgYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYCksIGBydHdfYzJoX3drX2NtZGAgKGZvciBgYzJoX3drX2NhbGxiYWNrYCksIGFuZCBub3cgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCAoZm9yIGBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgKS4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgYHJ0d19jMmhfd2tfY21kYCBpcyBleHBvcnRlZCBvciBqdXN0IG5vbi1zdGF0aWMuIERvZXNuJiMzOTt0IG1hdHRlciwgc3l6a2FsbGVyIGhhbmRsZXMgbm9uLXN0YXRpYyBmdW5jdGlvbnMganVzdCBmaW5lLgoKRmluYWxseSwgYXJlIHRoZXJlIGFueSByZWxldmFudCBjb25maWdzPyBMZXQgbWUgc2Vl4oCmIFJUTDg3MjNCUywgV0xBTiwgTU1DLCBDRkc4MDIxMSwgU1RBR0lORywgTU1DX1ZVQjMwMCwgYW5kIFVTQi4gR290IGl0LgoKWWVhaCwgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBzb2xpZCBhbmQgYWNjdXJhdGUgcGxhbiBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRMODcyM0JTJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1NUQUdJTkcmIzM0OywKICAgICYjMzQ7TU1DX1ZVQjMwMCYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHdfcmVjdl9lbnRyeSYjMzQ7LAogICAgJiMzNDtydHdfYzJoX3drX2NtZCYjMzQ7LAogICAgJiMzNDtydHdfZHJ2X3JlZ2lzdGVyX25ldGRldiYjMzQ7LAogICAgJiMzNDtzZF9pbnRfZHBjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGJ1Z3MgKG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXB0ci1kZXJlZikgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gU0RJTyBkZXZpY2UgdmlhIGEgVVNCLXRvLVNESU8gYnJpZGdlIChlLmcuLCBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUTDg3MjNCUyYjMzQ7LAogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtTVEFHSU5HJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3X3JlY3ZfZW50cnkmIzM0OywKICAgICYjMzQ7cnR3X2MyaF93a19jbWQmIzM0OywKICAgICYjMzQ7cnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYmIzM0OywKICAgICYjMzQ7c2RfaW50X2RwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBidWdzIChtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlcywgbnVsbC1wdHItZGVyZWYpIGluIHRoZSBSVEw4NzIzQlMgU0RJTyBXaUZpIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAoZS5nLiwgVlVCMzAwKSB1c2luZyB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsgKGR1bW15X2hjZCkuIFRoZXJlZm9yZSwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiBUaGUgZm9jdXMgc3ltYm9scyBhcmUgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHRvIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6MzMuNzM3MTgwOTIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMjE0NzU5NTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUTDg3MjNCU1wiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiTU1DXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiU1RBR0lOR1wiLFxuICAgIFwiTU1DX1ZVQjMwMFwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3X3JlY3ZfZW50cnlcIixcbiAgICBcInJ0d19jMmhfd2tfY21kXCIsXG4gICAgXCJydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICAgIFwic2RfaW50X2RwY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGJ1Z3MgKG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXB0ci1kZXJlZikgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gU0RJTyBkZXZpY2UgdmlhIGEgVVNCLXRvLVNESU8gYnJpZGdlIChlLmcuLCBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjE5OjMzLjczNzE4Nzk1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NzQwNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNToxOTozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xcbmluZGV4IGI5MzI2NzBmNWQ2M2EuLmU5YjExMzZkYmY2NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuY1xcbisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmNcXG5AQCAtMTcxNiw3ICsxNzE2LDggQEAgc3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0XFx0XFx0a2ZyZWUoYzJoX2V2dCk7XFxuIFxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0fSBlbHNlXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBTcGVjaWFsIHBvaW50ZXIgdG8gdHJpZ2dlciBjMmhfZXZ0X2NsZWFyIG9ubHkgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuY1xcbmluZGV4IDg2YzVlMmM0ZTdkZGQuLmZmY2VlNDMxY2FmNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuY1xcbkBAIC0xMTQ2LDcgKzExNDYsMTAgQEAgc3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9jaGtfZGVmcmFnKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVcXG4gXFxuIFxcdFxcdGlmICh0eXBlICE9IFdJRklfREFUQV9UWVBFKSB7XFxuIFxcdFxcdFxcdHBzdGEgPSBydHdfZ2V0X2JjbWNfc3RhaW5mbyhwYWRhcHRlcik7XFxuLVxcdFxcdFxcdHBkZWZyYWdfcSA9IFxcdTAwMjZwc3RhLVxcdTAwM2VzdGFfcmVjdnByaXYuZGVmcmFnX3E7XFxuK1xcdFxcdFxcdGlmIChwc3RhKVxcbitcXHRcXHRcXHRcXHRwZGVmcmFnX3EgPSBcXHUwMDI2cHN0YS1cXHUwMDNlc3RhX3JlY3Zwcml2LmRlZnJhZ19xO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHBkZWZyYWdfcSA9IE5VTEw7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdHBkZWZyYWdfcSA9IE5VTEw7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcXG5pbmRleCBmMzExOTZmNTRiM2UwLi44NDYzM2E1MWUyZGI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXFxuQEAgLTc1NCw3ICs3NTQsNiBAQCB1OCBydHdfZnJlZV9kcnZfc3coc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxcbiBcXG4gc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxcbiB7XFxuLVxcdGludCByZXQgPSBfU1VDQ0VTUztcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKnBuZXRkZXYgPSBwYWRhcHRlci1cXHUwMDNlcG5ldGRldjtcXG4gXFxuIFxcdC8qIGFsbG9jIG5ldGRldiBuYW1lICovXFxuQEAgLTc2NSwxOSArNzY0LDEwIEBAIHN0YXRpYyBpbnQgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgY2hhciAqbmFtZSlcXG4gXFxuIFxcdC8qIFRlbGwgdGhlIG5ldHdvcmsgc3RhY2sgd2UgZXhpc3QgKi9cXG4gXFx0aWYgKHJlZ2lzdGVyX25ldGRldihwbmV0ZGV2KSAhPSAwKSB7XFxuLVxcdFxcdHJldCA9IF9GQUlMO1xcbi1cXHRcXHRnb3RvIGVycm9yX3JlZ2lzdGVyX25ldGRldjtcXG4rXFx0XFx0cmV0dXJuIF9GQUlMO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gcmV0O1xcbi1cXG4tZXJyb3JfcmVnaXN0ZXJfbmV0ZGV2Olxcbi1cXG4tXFx0cnR3X2ZyZWVfZHJ2X3N3KHBhZGFwdGVyKTtcXG4tXFxuLVxcdHJ0d19mcmVlX25ldGRldihwbmV0ZGV2KTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBfU1VDQ0VTUztcXG4gfVxcbiBcXG4gaW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICppZjEpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcXG5pbmRleCBjNDNhMDM5MWE1Y2E3Li5mN2VjMDkzMTBjZTk4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jXFxuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmNcXG5AQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWRhcHRlciAqcnR3X3NkaW9faWYxX2luaXQoc3RydWN0IGR2b2JqX3ByaXYgKmR2b2JqLCBjb25zdCBzdHJ1Y3RcXG4gXFxuIGZyZWVfaGFsX2RhdGE6XFxuIFxcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MgXFx1MDAyNlxcdTAwMjYgcGFkYXB0ZXItXFx1MDAzZUhhbERhdGEpXFxuLVxcdFxcdGtmcmVlKHBhZGFwdGVyLVxcdTAwM2VIYWxEYXRhKTtcXG4rXFx0XFx0cnR3X2hhbF9kYXRhX2RlaW5pdChwYWRhcHRlcik7XFxuIFxcbiBcXHRpZiAoc3RhdHVzICE9IF9TVUNDRVNTKSB7XFxuIFxcdFxcdHJ0d193ZGV2X3VucmVnaXN0ZXIocGFkYXB0ZXItXFx1MDAzZXJ0d193ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6MzQuMjg2OTAzODNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxOTk2NjUwMjI5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRMODcyM0JTXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJTVEFHSU5HXCIsXG4gICAgXCJNTUNfVlVCMzAwXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHdfcmVjdl9lbnRyeVwiLFxuICAgIFwicnR3X2MyaF93a19jbWRcIixcbiAgICBcInJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2XCIsXG4gICAgXCJzZF9pbnRfZHBjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgYnVncyAobWVtb3J5IGxlYWtzLCBkb3VibGUgZnJlZXMsIG51bGwtcHRyLWRlcmVmKSBpbiB0aGUgUlRMODcyM0JTIFNESU8gV2lGaSBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBTRElPIGRldmljZSB2aWEgYSBVU0ItdG8tU0RJTyBicmlkZ2UgKGUuZy4sIFZVQjMwMCkgdXNpbmcgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIChkdW1teV9oY2QpLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyB0byB0aGUgbW9kaWZpZWQgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzlhOTkzZjBmOTY0NjA3ZGRlM2Q0NTE2NzI0ZmEzYjk1YzU1ZTBjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE1OjE5OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmNcbmluZGV4IGI5MzI2NzBmNWQ2M2EuLmU5YjExMzZkYmY2NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jXG5AQCAtMTcxNiw3ICsxNzE2LDggQEAgc3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHRcdFx0a2ZyZWUoYzJoX2V2dCk7XG4gXHRcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdFx0fVxuLVx0XHRcdH1cbitcdFx0XHR9IGVsc2VcbitcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4gXHRcdC8qIFNwZWNpYWwgcG9pbnRlciB0byB0cmlnZ2VyIGMyaF9ldnRfY2xlYXIgb25seSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcbmluZGV4IDg2YzVlMmM0ZTdkZGQuLmZmY2VlNDMxY2FmNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuY1xuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmNcbkBAIC0xMTQ2LDcgKzExNDYsMTAgQEAgc3RhdGljIHVuaW9uIHJlY3ZfZnJhbWUgKnJlY3ZmcmFtZV9jaGtfZGVmcmFnKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVcbiBcbiBcdFx0aWYgKHR5cGUgIT0gV0lGSV9EQVRBX1RZUEUpIHtcbiBcdFx0XHRwc3RhID0gcnR3X2dldF9iY21jX3N0YWluZm8ocGFkYXB0ZXIpO1xuLVx0XHRcdHBkZWZyYWdfcSA9IFx1MDAyNnBzdGEtXHUwMDNlc3RhX3JlY3Zwcml2LmRlZnJhZ19xO1xuK1x0XHRcdGlmIChwc3RhKVxuK1x0XHRcdFx0cGRlZnJhZ19xID0gXHUwMDI2cHN0YS1cdTAwM2VzdGFfcmVjdnByaXYuZGVmcmFnX3E7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0cGRlZnJhZ19xID0gTlVMTDtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRwZGVmcmFnX3EgPSBOVUxMO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmNcbmluZGV4IGYzMTE5NmY1NGIzZTAuLjg0NjMzYTUxZTJkYjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jXG5AQCAtNzU0LDcgKzc1NCw2IEBAIHU4IHJ0d19mcmVlX2Rydl9zdyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpXG4gXG4gc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxuIHtcbi1cdGludCByZXQgPSBfU1VDQ0VTUztcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpwbmV0ZGV2ID0gcGFkYXB0ZXItXHUwMDNlcG5ldGRldjtcbiBcbiBcdC8qIGFsbG9jIG5ldGRldiBuYW1lICovXG5AQCAtNzY1LDE5ICs3NjQsMTAgQEAgc3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxuIFxuIFx0LyogVGVsbCB0aGUgbmV0d29yayBzdGFjayB3ZSBleGlzdCAqL1xuIFx0aWYgKHJlZ2lzdGVyX25ldGRldihwbmV0ZGV2KSAhPSAwKSB7XG4tXHRcdHJldCA9IF9GQUlMO1xuLVx0XHRnb3RvIGVycm9yX3JlZ2lzdGVyX25ldGRldjtcbitcdFx0cmV0dXJuIF9GQUlMO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHJldDtcbi1cbi1lcnJvcl9yZWdpc3Rlcl9uZXRkZXY6XG4tXG4tXHRydHdfZnJlZV9kcnZfc3cocGFkYXB0ZXIpO1xuLVxuLVx0cnR3X2ZyZWVfbmV0ZGV2KHBuZXRkZXYpO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBfU1VDQ0VTUztcbiB9XG4gXG4gaW50IHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBhZGFwdGVyICppZjEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuY1xuaW5kZXggYzQzYTAzOTFhNWNhNy4uZjdlYzA5MzEwY2U5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jXG4rKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuY1xuQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgc3RydWN0IGFkYXB0ZXIgKnJ0d19zZGlvX2lmMV9pbml0KHN0cnVjdCBkdm9ial9wcml2ICpkdm9iaiwgY29uc3Qgc3RydWN0XG4gXG4gZnJlZV9oYWxfZGF0YTpcbiBcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MgXHUwMDI2XHUwMDI2IHBhZGFwdGVyLVx1MDAzZUhhbERhdGEpXG4tXHRcdGtmcmVlKHBhZGFwdGVyLVx1MDAzZUhhbERhdGEpO1xuK1x0XHRydHdfaGFsX2RhdGFfZGVpbml0KHBhZGFwdGVyKTtcbiBcbiBcdGlmIChzdGF0dXMgIT0gX1NVQ0NFU1MpIHtcbiBcdFx0cnR3X3dkZXZfdW5yZWdpc3RlcihwYWRhcHRlci1cdTAwM2VydHdfd2Rldik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTozNC4yODY5MDYwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MDI0MzI5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIHRoZSBSVEw4NzIzQlMgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB0byBgcnR3X2NtZC5jYCwgYHJ0d19yZWN2LmNgLCBgb3NfaW50ZnMuY2AsIGFuZCBgc2Rpb19pbnRmLmNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBhcyB0aGUgc3RhZ2luZyBkcml2ZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDg3MjNCUyBTRElPIFdpRmkgY2FyZC4gTXkgZmlyc3QgdGhvdWdodCBpcyBhYm91dCB0ZXN0aW5nIGFuZCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGlzLiBTaW5jZSBpdCdzIFNESU8sIG15IGluaXRpYWwgaW5jbGluYXRpb24gaXMgdG8gc2VlIGlmIEkgY2FuIHJ1biBpdCBpbiBRRU1VLiBCdXQsIHR5cGljYWwgUUVNVSBzZXR1cHMgZG9uJ3QgZWFzaWx5IGVtdWxhdGUgU0RJTyB3aXRob3V0IHNvbWUgc3BlY2lmaWMgU0RJTyBlbXVsYXRpb24gb3IgYSB2aXJ0dWFsIFNESU8gZGV2aWNlIHNldHVwLiBJIGtub3cgU0RJTyBkZXZpY2VzIGFyZW4ndCB1c3VhbGx5IGVhc2lseSBmdXp6YWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgd2l0aG91dCBhIG1vY2sgb3IgdmlydHVhbCBidXMgaW50ZXJmYWNlLlxuXG5UaGVuIGl0IGhpdHMgbWU6IHN5emthbGxlciBkb2Vzbid0IGhhdmUgU0RJTyBlbXVsYXRpb24gZWl0aGVyLiBTbywgSSBuZWVkIHRvIGNoZWNrIGJvdGggc3l6a2FsbGVyIGFuZCB0aGUga2VybmVsIGZvciBhbnkgZXhpc3RpbmcgU0RJTyBlbXVsYXRpb24gY2FwYWJpbGl0aWVzLCBqdXN0IHRvIGJlIHN1cmUuIEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIG9yIG5vdCBmdXp6aW5nIHRoZSBgUlRMODcyM0JTYCBkcml2ZXIgaXMgZXZlbiB3b3J0aCB0aGUgZWZmb3J0LiBJdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzbyBJIG5lZWQgdG8gYXNzZXNzIHRoZSBmZWFzaWJpbGl0eSBvZiBhY3R1YWxseSB0cmlnZ2VyaW5nIHRoaXMgY29kZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBpcyBhIHdvcnRod2hpbGUgdGFyZ2V0LiBTbywgSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NDIuOTg5MzQxMzk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDAzNjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVEw4NzIzQlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc6Mjpjb25maWcgUlRMODcyM0JTXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnOjM6XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcXFwiXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBXTEFOIFxcdTAwMjZcXHUwMDI2IE1NQyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTktXFx0aGVscFxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoxMDpcXHRUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFJUTDg3MjNCUyBTRElPIGRyaXZlcnMsIHN1Y2ggYXNcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctMTEtXFx0dGhlIHdpZmkgZm91bmQgb24gdGhlIDFzdCBnZW4gSW50ZWwgQ29tcHV0ZSBTdGljaywgdGhlIENISVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NDMuMDk5Mzg0NDAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NzA5NjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNESU8gRW11bGF0aW9uIENoYWxsZW5nZSoqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQuIFRoaXMgYm9pbHMgZG93biB0byBNTUMsIHNwZWNpZmljYWxseSB0aGUgU0QvTU1DL1NESU8gdmFyaWFudHMuIENhbiBRRU1VIGNvbnZpbmNpbmdseSBlbXVsYXRlIHRoZXNlPyBJIGtub3cgUUVNVSAqZG9lcyogaGF2ZSBTRCBjYXJkIGVtdWxhdGlvbiwgdGhhdCdzIGEga25vd24gcXVhbnRpdHkuIEJ1dCB3aGF0IGFib3V0IFNESU8/IFNESU8gaXMsIGZ1bmRhbWVudGFsbHksIGZvciBJL08gZGV2aWNlcyAtIHRoaW5ncyBsaWtlIFdpRmkuIEFuZCBJIHNlcmlvdXNseSBkb3VidCB0aGF0IFFFTVUgb2ZmZXJzIGEgZmFpdGhmdWwgZW11bGF0aW9uIG9mIHNvbWV0aGluZyBhcyBzcGVjaWZpYyBhcyBhbiBSVEw4NzIzQlMgU0RJTyBXaUZpIGNhcmQsIG9yIGFueSByZWFsLXdvcmxkIFNESU8gZGV2aWNlIGZvciB0aGF0IG1hdHRlci5cblxuV2hpY2ggc3VnZ2VzdHMgYSBtYWpvciBodXJkbGUuIElmIHRoYXQgZW11bGF0aW9uIGlzbid0IHRoZXJlLCBpdCBtYWtlcyByZWFjaGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCB0aGVzZSBkZXZpY2VzIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IsIGV2ZW4gbW9yZSBjb21tb24sIFFFTVUsIGNvbXBsZXRlbHkgaW1wb3NzaWJsZS4gV2UncmUgZWZmZWN0aXZlbHkgY3V0IG9mZiBmcm9tIG91ciB0YXJnZXQuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIOKAkyBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgc3l6a2FsbGVyIGRvY3VtZW50YXRpb24uIFN1cmVseSwgKnNvbWVvbmUqIGhhcyB0aG91Z2h0IGFib3V0IFNESU8gZnV6emluZyBpbiB0aGlzIGNvbnRleHQuXG5cbldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBmdXp6aW5nIGNhcGFiaWxpdGllcyBmb3IgVVNCLCBQQ0ksIHZoY2kgYW5kIG90aGVycywgSSBrbm93IHRoYXQuIEJ1dCBTRElPPyBUaGF0J3MgYSBkaWZmZXJlbnQgYW5pbWFsLiBMZXQgbWUgdHJ5IGEgcXVpY2sgc2VhcmNoIGZvciBhbnl0aGluZyBsaWtlIGBzeXpfc2Rpb2Agb3IgYSBzaW1pbGFyIHRlcm0uIEdvdHRhIHNlZSBpZiB3ZSd2ZSBnb3Qgc29tZSBleGlzdGluZyBmb3VuZGF0aW9uIHRvIGJ1aWxkIG9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NDcuODg2NDg0MTY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzU4NjI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjE5OjQ3Ljk0OTI1MjIwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjE2NjY4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIERyaXZlciBUYXNrKipcblxuT2theSwgc28gSSBjYW4ndCBqdXN0IGBncmVwYCB0aHJvdWdoIGBzeXMvYCBmb3IgdGhpcyBvbmU7IHRoYXQncyBub3QgZ29pbmcgdG8gY3V0IGl0LiBJIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIGdldCBhdCB0aGlzIG1vcmUgZWZmZWN0aXZlbHkuIEJ1dCwgbG9va2luZyBhdCB0aGUgcHJvbXB0LCBpdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgbGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUsIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuIEl0J3MgZXhwbGljaXRseSBzYXlpbmcgdGhhdCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUgdGhlc2UgZHJpdmVycyBkZXBlbmQgb24uIEl0IGFsc28gZmxhZ3MgY29kZSBwYXRocyB0aGF0IGFyZSBlbnRpcmVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgY2FsbHMgb3V0IHRoaW5ncyBsaWtlIHVzYiBnYWRnZXRzIGFuZCBtYWM4MDIxMV9od3NpbS5cblxuU2luY2UgdGhlIFJUTDg3MjNCUyBpcyBhbiBTRElPIFdpRmkgY2FyZCwgYW5kIEkga25vdyBvZiBubyBzb2Z0d2FyZSBlbXVsYXRpb24gd2l0aGluIFFFTVUgdGhhdCBjb3ZlcnMgaXQsIGl0ICpzaG91bGQqIGJlIHVucmVhY2hhYmxlLiBCdXQgd2FpdCwgSSBuZWVkIHRvIGJlIGNvbXBsZXRlbHkgc3VyZS4gSXMgdGhlcmUgKmFueSogcG9zc2liaWxpdHkgdGhhdCBpdCBjYW4gYmUgcmVhY2hlZCB0aHJvdWdoIHNvbWUgb3RoZXIgbWVjaGFuaXNtPyBNYXliZSBTRElPIGluamVjdGlvbj8gQmV0dGVyIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY29kZSBwYXRocyBpbiB0aGUga2VybmVsIGZvciBTRElPIGluamVjdGlvbi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2ggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTo1My40NzA5MjMwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYxMTk0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTAwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVxcdFxcdFxcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cXHRcXHRcXHRcXHQgICBtbWMubyBtbWNfb3BzLm8gc2QubyBzZF9vcHMubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZTo5OlxcdFxcdFxcdFxcdCAgIHNkaW8ubyBzZGlvX29wcy5vIHNkaW9fYnVzLm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MTA6XFx0XFx0XFx0XFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cXHRcXHRcXHRcXHQgICBzbG90LWdwaW8ubyByZWd1bGF0b3Iub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXFx0XFx0Kz0gbW1jX3Rlc3Qub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1NESU9fVUFSVClcXHRcXHQrPSBzZGlvX3VhcnQub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMjEtbW1jX2NvcmUtJChDT05GSUdfTU1DX0NSWVBUTylcXHQrPSBjcnlwdG8ub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcXFwiaG9zdC5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXFxcInNkaW9fY2lzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcXFwiYnVzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTU5PW1tY19idXNfdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjg5OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpIHx8IG1tY19jYXJkX3NkX2NvbWJvKGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cXHRcXHRyZXR2YWwgPSBhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJTRElPX0lEPSUwNFg6JTA0WFxcXCIsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjExMTpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9MjY0PXN0YXRpYyB2b2lkIG1tY19yZWxlYXNlX2NhcmQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjctXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYzoyNjg6XFx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjktXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oOjQ2OiAqIFRoZSB3b3JsZCBpcyBub3QgcGVyZmVjdCBhbmQgc3VwcGxpZXMgdXMgd2l0aCBicm9rZW4gbW1jL3NkaW8gZGV2aWNlcy5cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00Ny0gKiBGb3IgYXQgbGVhc3Qgc29tZSBvZiB0aGVzZSBidWdzIHdlIG5lZWQgYSB3b3JrLWFyb3VuZC5cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQxLSNpbmNsdWRlIFxcXCJob3N0LmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDI6I2luY2x1ZGUgXFxcInNkaW9fYnVzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDMtI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDYtI2luY2x1ZGUgXFxcInNkX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjQ3OiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjE2PXN0YXRpYyB2b2lkIF9fbW1jX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cXHQvKlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIyOTpcXHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMDpcXHQgKiBzZGlvIGRldmljZXMgd29uJ3Qgd29yayBwcm9wZXJseS5cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzEtXFx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMi1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XFx0aWYgKHNkaW9faXNfaW9fYnVzeShtcnEtXFx1MDAzZWNtZC1cXHUwMDNlb3Bjb2RlLCBtcnEtXFx1MDAzZWNtZC1cXHUwMDNlYXJnKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzNC1cXHQgICAgaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VjYXJkX2J1c3kpIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTY2MD12b2lkIG1tY19zZXRfZGF0YV90aW1lb3V0KHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjY2NzpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2OC1cXHRcXHRkYXRhLVxcdTAwM2V0aW1lb3V0X25zID0gMTAwMDAwMDAwMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMTQtXFx0LypcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTE1OlxcdCAqIHNkaW9fcmVzZXQgc2VuZHMgQ01ENTIgdG8gcmVzZXQgY2FyZC4gIFNpbmNlIHdlIGRvIG5vdCBrbm93XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cXHQgKiBpZiB0aGUgY2FyZCBpcyBiZWluZyByZS1pbml0aWFsaXplZCwganVzdCBzZW5kIGl0LiAgQ01ENTJcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTIxOlxcdFxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMi1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTM0OlxcdFxcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA0LVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9idXMoKTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yNDE4PXN0YXRpYyB2b2lkIF9fZXhpdCBtbWNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MjA6XFx0c2Rpb191bnJlZ2lzdGVyX2J1cygpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXFx0bW1jX3VucmVnaXN0ZXJfaG9zdF9jbGFzcygpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaDo4ODppbnQgbW1jX2F0dGFjaF9zZGlvKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmgtODktaW50IG1tY19hdHRhY2hfc2RfdWhzMihzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMjktI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjMwOiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTMxLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY3LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9IV19SRVNFVDtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwiY2FwLXNkaW8taXJxXFxcIikpXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY5LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9TRElPX0lSUTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozOTQ6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibm8tc2Rpb1xcXCIpKVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5NS1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9OT19TRElPO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NTEyPXN0cnVjdCBtbWNfaG9zdCAqbW1jX2FsbG9jX2hvc3QoaW50IGV4dHJhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmhvc3QtXFx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NTU5OlxcdElOSVRfV09SSyhcXHUwMDI2aG9zdC1cXHUwMDNlc2Rpb19pcnFfd29yaywgc2Rpb19pcnFfd29yayk7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNTYwLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZob3N0LVxcdTAwM2VyZXR1bmVfdGltZXIsIG1tY19yZXR1bmVfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NjEwPXN0YXRpYyBpbnQgbW1jX3ZhbGlkYXRlX2hvc3RfY2FwcyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE1OlxcdGlmIChjYXBzIFxcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcXHUwMDI2XFx1MDAyNiAhaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VlbmFibGVfc2Rpb19pcnEpIHtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTY6XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwibWlzc2luZyAtXFx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcXFxuXFxcIik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaD0xNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgbW1jX2V4dF9jc2RfZml4dXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE5MC1cXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTYtXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE4LVxcdFNESU9fRklYVVBfQ09NUEFUSUJMRShcXFwidGksd2wxMjUxXFxcIiwgd2wxMjUxX3F1aXJrLCAwKSxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcXFwiJXUuJXVcXFxcblxcXCIsIGNhcmQtXFx1MDAzZW1ham9yX3JldiwgY2FyZC1cXHUwMDNlbWlub3JfcmV2KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzQ5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NTA6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NTEtc3RhdGljIHNzaXplX3QgaW5mbyMjbnVtIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc2MT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjItXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY0OnNkaW9faW5mb19hdHRyKDIpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjU6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzY3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM6ICogIGxpbnV4L2RyaXZlcnMvbW1jL3NkaW8uY1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvbW1jLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvX2Z1bmMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW9faWRzLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcXFwic2QuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcXFwic2Rpb19idXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcXFwibW1jX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFxcXCJzZF9vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcXFwic2Rpb19vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcXFwic2Rpb19jaXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTM1PU1NQ19ERVZfQVRUUihyY2EsIFxcXCIweCUwNHhcXFxcblxcXCIsIGNhcmQtXFx1MDAzZXJjYSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzYtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTQ4PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTA6c2Rpb19pbmZvX2F0dHIoMSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTE6c2Rpb19pbmZvX2F0dHIoMik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTM6c2Rpb19pbmZvX2F0dHIoNCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTQtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTYtXFx0XFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYtfTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2OTpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHNkaW9fdHlwZSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcXHQuZ3JvdXBzID0gc2Rpb19zdGRfZ3JvdXBzLFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxLX07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM6c3RhdGljIGludCBzZGlvX3JlYWRfZmJyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAyLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzpzdGF0aWMgaW50IHNkaW9faW5pdF9mdW5jKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IGZuKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1LVxcdGludCByZXQ7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2OlxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMTpcXHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMi1cXHRpZiAoSVNfRVJSKGZ1bmMpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3LVxcdGlmICghKGNhcmQtXFx1MDAzZXF1aXJrcyBcXHUwMDI2IE1NQ19RVUlSS19OT05TVERfU0RJTykpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2ZicihmdW5jKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMjI6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMy1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcXHRjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbZm4gLSAxXSA9IGZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTM5LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0MDpcXHRzZGlvX3JlbW92ZV9mdW5jKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0NDpzdGF0aWMgaW50IHNkaW9fcmVhZF9jY2NyKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTMyIG9jcilcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTYzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE2NDpcXHRjYXJkLVxcdTAwM2VjY2NyLnNkaW9fdnNuID0gKGRhdGEgXFx1MDAyNiAweGYwKSBcXHUwMDNlXFx1MDAzZSA0O1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE2NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNjE6c3RhdGljIGludCBzZGlvX2VuYWJsZV93aWRlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjkzLSAqIG9mIHRoZSBjYXJkLiBUaGlzIG1heSBiZSByZXF1aXJlZCBvbiBjZXJ0YWluIHNldHVwcyBvZiBib2FyZHMsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCdzXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5NzpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV9jZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTMxNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNDg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNTEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzUyOlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1My1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2NS1vdXQ6XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2OlxcdHJldHVybiBzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjctfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3MDpzdGF0aWMgaW50IHNkaW9fZW5hYmxlXzRiaXRfYnVzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzczLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcXHRlcnIgPSBzZGlvX2VuYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3NS1cXHRpZiAoZXJyIFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc2LVxcdFxcdHJldHVybiBlcnI7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc3OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3OC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4Mi1cXHRcXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzgzOlxcdFxcdFxcdHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mjc6c3RhdGljIGludCBzZGlvX2VuYWJsZV9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0MzE6XFx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMjpcXHRpZiAocmV0IFxcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzMtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzNi1cXHRpZiAocmV0IFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDM3OlxcdFxcdG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCBmYWxzZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQ0MjpzdGF0aWMgdW5zaWduZWQgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2NS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2Ny17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDgyOnN0YXRpYyB2b2lkIHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODMte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTAzLVxcdFxcdGNhcmRfc3RyZW5ndGggXFx1MDAyNj0gfihTRElPX0RSSVZFX0RUU3hfTUFTS1xcdTAwM2NcXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDQ6XFx0XFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUwNS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTk6c3RhdGljIGludCBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTIwLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5Mi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1OTM6c3RhdGljIGludCBtbWNfc2Rpb19pbml0X3Voc19jYXJkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAwLVxcdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDE6XFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXFx0LyogU2V0IHRoZSBkcml2ZXIgc3RyZW5ndGggZm9yIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA2OlxcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDgtXFx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA5OlxcdGVyciA9IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYyNTpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9pbml0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MjYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzItXFx0ICogUmVzZXQgdGhlIGNhcmQgYnkgcGVyZm9ybWluZyB0aGUgc2FtZSBzdGVwcyB0aGF0IGFyZSB0YWtlbiBieVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcXHQgKiBtbWNfcmVzY2FuX3RyeV9mcmVxKCkgYW5kIG1tY19hdHRhY2hfc2RpbygpIGR1cmluZyBhIFxcXCJub3JtYWxcXFwiIHByb2JlLlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNC1cXHQgKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcXHQgKiBzZGlvX3Jlc2V0KCkgaXMgdGVjaG5pY2FsbHkgbm90IG5lZWRlZC4gSGF2aW5nIGp1c3QgcG93ZXJlZCB1cCB0aGVcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzYtXFx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ5LVxcdG1tY19nb19pZGxlKGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjU5LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbWNfY2FyZCAqb2xkY2FyZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDA6XFx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFxcdTAwMjZzZGlvX3R5cGUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcwMS1cXHRpZiAoSVNfRVJSKGNhcmQpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcXHRcXHRpZiAob2xkY2FyZCBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfc2RpbyhvbGRjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNy1cXHRcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI2LVxcdFxcdGhvc3QtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdF9jYXJkKGhvc3QsIGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcXHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fY2FyZF9pbml0X21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcyOC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTczOC1cXHQgKiBmYWlscyB0byBjaGVjayByb2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjczOTpcXHQgKiB0cnkgdG8gaW5pdCB1aHMgY2FyZC4gc2Rpb19yZWFkX2NjY3Igd2lsbCB0YWtlIG92ZXIgdGhpcyB0YXNrXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVxcdCAqIHRvIG1ha2Ugc3VyZSB3aGljaCBzcGVlZCBtb2RlIHNob3VsZCB3b3JrLlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVxcdFxcdGlmIChlcnIgPT0gLUVBR0FJTikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcXHRcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ2LVxcdFxcdFxcdHJldHJpZXMtLTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4MTU6XFx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTYtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVxcdFxcdGlmIChvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODI4LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgyOTpcXHRlcnIgPSBzZGlvX3JlYWRfY29tbW9uX2NpcyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NDQ6XFx0bW1jX2ZpeHVwX2RldmljZShjYXJkLCBzZGlvX2ZpeHVwX21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2MS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NjI6XFx0ZXJyID0gc2Rpb19kaXNhYmxlX2NkKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVxcdGlmICgob2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQpIFxcdTAwMjZcXHUwMDI2IGNhcmQtXFx1MDAzZXN3X2NhcHMuc2QzX2J1c19tb2RlKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5OlxcdFxcdGVyciA9IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzUtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODc2OlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3Ny1cXHRcXHRpZiAoZXJyIFxcdTAwM2UgMClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XFx0XFx0bW1jX3NldF9jbG9jayhob3N0LCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKGNhcmQpKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODktXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODkwOlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg5MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxNDpzdGF0aWMgaW50IG1tY19zZGlvX3JlaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxODpcXHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IsIE5VTEwpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyMjpcXHRyZXR1cm4gbW1jX3NkaW9faW5pdF9jYXJkKGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jciwgaG9zdC1cXHUwMDNlY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05Mjkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMjpcXHRmb3IgKGkgPSAwO2kgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzO2krKykge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMzpcXHRcXHRpZiAoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0OlxcdFxcdFxcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XFx0XFx0XFx0aG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldID0gTlVMTDtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ1LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk0NjpzdGF0aWMgaW50IG1tY19zZGlvX2FsaXZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk5NDpcXHRcXHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTk1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDA4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzOyBpKyspIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlxcdFxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMgPSBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxNDpcXHRcXHRpZiAoZnVuYyBcXHUwMDI2XFx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcXHUwMDI2XFx1MDAyNiBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxNS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG1vcHMgPSBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyLVxcdTAwM2VwbTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMzItXFx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDMzOlxcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVxcdG1tY19jbGFpbV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0Ny17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcXHRXQVJOX09OKGhvc3QtXFx1MDAzZXNkaW9faXJxcyBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTEtXFx0bW1jX2NhcmRfc2V0X3N1c3BlbmRlZChob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDUyOlxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmhvc3QtXFx1MDAzZXNkaW9faXJxX3dvcmspO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTY6XFx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXFx1MDAyNlxcdTAwMjYgbW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3OlxcdFxcdHNkaW9fZGlzYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDcxOnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTUtXFx0XFx0fVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwOTY6XFx0XFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NzpcXHR9IGVsc2UgaWYgKG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVxcdFxcdC8qXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAzLVxcdFxcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEwNDpcXHRcXHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTA1LVxcdFxcdG1tY19yZXR1bmVfcmVsZWFzZShob3N0KTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNDpcXHRpZiAoaG9zdC1cXHUwMDNlc2Rpb19pcnFzKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNS1cXHRcXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX1NESU9fSVJRX05PVEhSRUFEKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2OlxcdFxcdFxcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVxcdTAwM2VzZGlvX2lycV90aHJlYWQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTctXFx0XFx0ZWxzZSBpZiAoaG9zdC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExODpcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZob3N0LVxcdTAwM2VzZGlvX2lycV93b3JrKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEyODpzdGF0aWMgaW50IG1tY19zZGlvX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVxcdG1tY19wb3dlcl91cChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNDU6XFx0cmV0ID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cXHRtbWNfcmVsZWFzZV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTU3OnN0YXRpYyBpbnQgbW1jX3NkaW9faHdfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2NS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2OlxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2Y2FyZC1cXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFxcdTAwM2UgMSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNjctXFx0XFx0aWYgKG1tY19jYXJkX3JlbW92ZWQoY2FyZCkpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVxcdG1tY19wb3dlcl9jeWNsZShob3N0LCBjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XFx0cmV0dXJuIG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODEtfVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MzpzdGF0aWMgaW50IG1tY19zZGlvX3N3X3Jlc2V0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg0LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVxcdG1tY19zZXRfY2xvY2soaG9zdCwgaG9zdC1cXHUwMDNlZl9pbml0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4Ny1cXHRtbWNfZ29faWRsZShob3N0KTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTo1My44MDcwNDY1N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTQwMjA3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqU0RJTyBUZXN0aW5nIHdpdGggU3l6a2FsbGVyOiBBIFF1aWNrIENoZWNrKipcblxuSG1tLCByaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcywgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgU3l6a2FsbGVyIGFscmVhZHkgaGFzIHNvbWV0aGluZyBpbiBwbGFjZSBmb3IgU0RJTyBkZXZpY2UgdGVzdGluZy4gVGhhdCB3b3VsZCBzYXZlIGEgbG90IG9mIHJlaW52ZW50aW5nIHRoZSB3aGVlbCEgVGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBzdGFydCBpcyB0byBzZWUgaWYgdGhlcmUncyBhIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBTRElPLiBUaGF0IG5hbWluZyBjb252ZW50aW9uIGlzIHVzdWFsbHkgYSBnb29kIGluZGljYXRvciBvZiBidWlsdC1pbiBzdXBwb3J0LCByaWdodD8gTGV0IG1lIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEknbGwgbmVlZCB0byBsb29rIHRocm91Z2ggdGhlIHN5c2NhbGwgZGVmaW5pdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTczLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MTk6NTcuMDYxMDcxMzU4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODczMzA1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToxOTo1Ny4xMjk4MTM0NDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU4NjA1Nzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbnN0cmFpbnRzIGFuZCBFeHBsb3JpbmcgQWx0ZXJuYXRpdmVzKipcblxuT2theSwgc28gSSBjYW4ndCBqdXN0IGBncmVwYCB0aGUgYHN5cy9gIGRpcmVjdG9yeTsgdGhhdCdzIG91dC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWdhaW5zdCB0aGF0IGJlY2F1c2UgaXQncyBzeXprYWxsZXItc3BlY2lmaWMgc3R1ZmYsIG5vdCBrZXJuZWwgY29kZS4gVGhleSBzYXkgdG8gdXNlIGB7ey50b29sUmVhZERlc2NyaXB0aW9ufX1gIGluc3RlYWQsIGJ1dCBJIGRvbid0IHNlZSB0aGF0IHRvb2wgYXZhaWxhYmxlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbnN0cnVjdGlvbnMuXG5cbkFscmlnaHQsIHRoZSBwcm9tcHQgaXMgbGlzdGluZyBzb21lIGV4cGxpY2l0IGV4Y2x1c2lvbnM6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBjb2RlLCB0aGluZ3MgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIGFuZCBjb2RlIHRoYXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBJdCBnaXZlcyBleGFtcGxlcyBsaWtlIGB1c2IgZ2FkZ2V0YCBhbmQgYG1hYzgwMjExX2h3c2ltYC5cblxuTm93LCB0aGUgc3BlY2lmaWMgdGhpbmcgSSdtIGxvb2tpbmcgYXQsIHRoZSBSVEw4NzIzQlMsIGlzIGFuIFNESU8gV2lGaSBjYXJkLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3RhbmRhcmQgUUVNVSBvciBldmVuIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb2ZmZXIgYW55IFNESU8gZW11bGF0aW9uPyBObywgYG1hYzgwMjExX2h3c2ltYCBpcyBzcGVjaWZpY2FsbHkgZm9yIGVtdWxhdGluZyBtYWM4MDIxMSBoYXJkd2FyZSwgbm90IFNESU8uIEFuZCBJJ20gcHJldHR5IHN1cmUgc3RhbmRhcmQgUUVNVSBkb2Vzbid0IGRvIFNESU8gZWl0aGVyLiBTbyB0aGF0IGNvbmZpcm1zIHRoYXQgU0RJTyBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQsIGFuZCBJIGNhbm5vdCB1c2UgUUVNVSB0byBwcm9iZSBSVEw4NzIzQlMuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLiBNYXliZSwganVzdCBtYXliZSwgdGhpcyBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIGFuIGFsdGVybmF0ZSBwYXRoLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBiYWNrZG9vciB0byB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc4MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDowMy43MTU4NzM0OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NjM0NDM0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTE9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1Mi17XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDUzOlxcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2cnRsODcyM2JzX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDowNC4wMDIyMjMyMjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NDMwNzc5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlcidzIFJlYWNoYWJpbGl0eSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQncyB1c2luZyBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgZGVzaWduZWQgdG8gd29yayB3aXRoIFNESU8gZGV2aWNlcywgd2hpY2ggbWFrZXMgc2Vuc2UuIFRoZSBkcml2ZXIgYmluZHMgdG8gYW4gU0RJTyBkZXZpY2UsIG5hdHVyYWxseS4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgKndpdGhvdXQqIGFuIGFjdHVhbCBTRElPIGRldmljZSBwcmVzZW50LCB0aGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBuZXZlciBiZSBpbnZva2VkLiBBbmQgdGhhdOKAmXMgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uXG5cbkdpdmVuIHRoZSBjb250ZXh0LCBJIGtub3cgdGhhdCBRRU1VLCBhcyBpdCBzdGFuZHMsIGRvZXNuJ3QgZW11bGF0ZSB0aGUgUlRMODcyM0JTIFNESU8gZGV2aWNlLiBUaGlzIGltcGxpZXMgdGhhdCB0aGUgcHJvYmUgZnVuY3Rpb24sIGFuZCBjb25zZXF1ZW50bHksIHRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgZHJpdmVyLCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgUUVNVSBzZXR1cC4gSXQgYWxzbyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgYW55IGJ1ZyB0aGF0IG1heSBsaWUgd2l0aGluIHRoZSBjb2RlLiBUaGUgc2FtZSB3b3VsZCBiZSB0cnVlIGZvciBjbG91ZCBlbnZpcm9ubWVudHMsIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCBpcyBhbHNvIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvLCB0aGUgY2hhbmNlcyBvZiBleHBsb3JpbmcgdGhlIHRhcmdldCBjb2RlIGluIHRoZXNlIGVudmlyb25tZW50cyBhcmUgdmVyeSBzbGltLlxuXG5IbW0sIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBtYWtlcyBtZSB3b25kZXI6IERvZXMgdGhlIGtlcm5lbCwgZXNwZWNpYWxseSBmb3IgZnV6emluZyBwdXJwb3NlcywgaW5jb3Jwb3JhdGUgYW55IFNESU8gZHVtbXkgZHJpdmVyIG9yIHNvbWUga2luZCBvZiB3b3JrYXJvdW5kPyBNYXliZSBzb21ldGhpbmcgc3l6a2FsbGVyIG1pZ2h0IGJlIHVzaW5nIHRvIGluamVjdCBTRElPIG9wZXJhdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgaXMgYW4gU0RJTyBpbmplY3Rpb24gbWVjaGFuaXNtIHByZXNlbnQgaW4gdGhlIGtlcm5lbCB0aGF0IGNvdWxkIGJ5cGFzcyB0aGlzIHJlc3RyaWN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgc2VhcmNoIGZvciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NjYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MDguOTk2NTM0MTQ1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI5ODE4MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNTAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU9Nz1tbWNfY29yZS15XFx0XFx0XFx0Oj0gY29yZS5vIGJ1cy5vIGhvc3QubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS04LVxcdFxcdFxcdFxcdCAgIG1tYy5vIG1tY19vcHMubyBzZC5vIHNkX29wcy5vIFxcXFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjk6XFx0XFx0XFx0XFx0ICAgc2Rpby5vIHNkaW9fb3BzLm8gc2Rpb19idXMubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToxMDpcXHRcXHRcXHRcXHQgICBzZGlvX2Npcy5vIHNkaW9faW8ubyBzZGlvX2lycS5vIHNkX3VoczIub1xcXFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlLTExLVxcdFxcdFxcdFxcdCAgIHNsb3QtZ3Bpby5vIHJlZ3VsYXRvci5vXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19NTUNfVEVTVClcXHRcXHQrPSBtbWNfdGVzdC5vXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfU0RJT19VQVJUKVxcdFxcdCs9IHNkaW9fdWFydC5vXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0yMS1tbWNfY29yZS0kKENPTkZJR19NTUNfQ1JZUFRPKVxcdCs9IGNyeXB0by5vXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2LSNpbmNsdWRlIFxcXCJob3N0LmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYzoyNzojaW5jbHVkZSBcXFwic2Rpb19jaXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI4LSNpbmNsdWRlIFxcXCJidXMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9NTk9bW1jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTg4LVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6ODk6XFx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkgfHwgbW1jX2NhcmRfc2RfY29tYm8oY2FyZCkpIHtcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTkwLVxcdFxcdHJldHZhbCA9IGFkZF91ZXZlbnRfdmFyKGVudiwgXFxcIlNESU9fSUQ9JTA0WDolMDRYXFxcIixcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEwLVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MTExOlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYz0yNjQ9c3RhdGljIHZvaWQgbW1jX3JlbGVhc2VfY2FyZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2Ny1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjI2ODpcXHRzZGlvX2ZyZWVfY29tbW9uX2NpcyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oLTQ1LS8qXFxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmg6NDY6ICogVGhlIHdvcmxkIGlzIG5vdCBwZXJmZWN0IGFuZCBzdXBwbGllcyB1cyB3aXRoIGJyb2tlbiBtbWMvc2RpbyBkZXZpY2VzLlxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oLTQ3LSAqIEZvciBhdCBsZWFzdCBzb21lIG9mIHRoZXNlIGJ1Z3Mgd2UgbmVlZCBhIHdvcmstYXJvdW5kLlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDEtI2luY2x1ZGUgXFxcImhvc3QuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0MjojaW5jbHVkZSBcXFwic2Rpb19idXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00My0jaW5jbHVkZSBcXFwicHdyc2VxLmhcXFwiXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00Ni0jaW5jbHVkZSBcXFwic2Rfb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDc6I2luY2x1ZGUgXFxcInNkaW9fb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMTY9c3RhdGljIHZvaWQgX19tbWNfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjI4LVxcdC8qXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjI5OlxcdCAqIEZvciBzZGlvIHJ3IGNvbW1hbmRzIHdlIG11c3Qgd2FpdCBmb3IgY2FyZCBidXN5IG90aGVyd2lzZSBzb21lXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMwOlxcdCAqIHNkaW8gZGV2aWNlcyB3b24ndCB3b3JrIHByb3Blcmx5LlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMS1cXHQgKiBBbmQgYnlwYXNzIEkvTyBhYm9ydCwgcmVzZXQgYW5kIGJ1cyBzdXNwZW5kIG9wZXJhdGlvbnMuXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMyLVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMzpcXHRpZiAoc2Rpb19pc19pb19idXN5KG1ycS1cXHUwMDNlY21kLVxcdTAwM2VvcGNvZGUsIG1ycS1cXHUwMDNlY21kLVxcdTAwM2VhcmcpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjM0LVxcdCAgICBob3N0LVxcdTAwM2VvcHMtXFx1MDAzZWNhcmRfYnVzeSkge1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9NjYwPXZvaWQgbW1jX3NldF9kYXRhX3RpbWVvdXQoc3RydWN0IG1tY19kYXRhICpkYXRhLCBjb25zdCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy02NjYtXFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NjY3OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY4LVxcdFxcdGRhdGEtXFx1MDAzZXRpbWVvdXRfbnMgPSAxMDAwMDAwMDAwO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjA5OT1zdGF0aWMgaW50IG1tY19yZXNjYW5fdHJ5X2ZyZXEoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1bnNpZ25lZCBmcmVxKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNC1cXHQvKlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMTU6XFx0ICogc2Rpb19yZXNldCBzZW5kcyBDTUQ1MiB0byByZXNldCBjYXJkLiAgU2luY2Ugd2UgZG8gbm90IGtub3dcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTE2LVxcdCAqIGlmIHRoZSBjYXJkIGlzIGJlaW5nIHJlLWluaXRpYWxpemVkLCBqdXN0IHNlbmQgaXQuICBDTUQ1Mlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMC1cXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX05PX1NESU8pKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMjE6XFx0XFx0c2Rpb19yZXNldChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIyLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzMy1cXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX05PX1NESU8pKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMzQ6XFx0XFx0aWYgKCFtbWNfYXR0YWNoX3NkaW8oaG9zdCkpXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzNS1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIzOTM9c3RhdGljIGludCBfX2luaXQgbW1jX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDQtXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQwNTpcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2J1cygpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MDYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTI0MTg9c3RhdGljIHZvaWQgX19leGl0IG1tY19leGl0KHZvaWQpXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQxOS17XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQyMDpcXHRzZGlvX3VucmVnaXN0ZXJfYnVzKCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQyMS1cXHRtbWNfdW5yZWdpc3Rlcl9ob3N0X2NsYXNzKCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaD04Nz1pbnQgbW1jX2F0dGFjaF9zZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oOjg4OmludCBtbWNfYXR0YWNoX3NkaW8oc3RydWN0IG1tY19ob3N0ICpob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaC04OS1pbnQgbW1jX2F0dGFjaF9zZF91aHMyKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0yOS0jaW5jbHVkZSBcXFwicHdyc2VxLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzA6I2luY2x1ZGUgXFxcInNkaW9fb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzEtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz0yNjU9aW50IG1tY19vZl9wYXJzZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjctXFx0XFx0aG9zdC1cXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX0hXX1JFU0VUO1xcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM2ODpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJjYXAtc2Rpby1pcnFcXFwiKSlcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjktXFx0XFx0aG9zdC1cXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX1NESU9fSVJRO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzkzLVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMyIHw9IE1NQ19DQVAyX0hTNDAwX0VTO1xcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM5NDpcXHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFxcXCJuby1zZGlvXFxcIikpXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzk1LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMyIHw9IE1NQ19DQVAyX05PX1NESU87XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz01MTI9c3RydWN0IG1tY19ob3N0ICptbWNfYWxsb2NfaG9zdChpbnQgZXh0cmEsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTU1OC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2aG9zdC1cXHUwMDNlZGV0ZWN0LCBtbWNfcmVzY2FuKTtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo1NTk6XFx0SU5JVF9XT1JLKFxcdTAwMjZob3N0LVxcdTAwM2VzZGlvX2lycV93b3JrLCBzZGlvX2lycV93b3JrKTtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NjAtXFx0dGltZXJfc2V0dXAoXFx1MDAyNmhvc3QtXFx1MDAzZXJldHVuZV90aW1lciwgbW1jX3JldHVuZV90aW1lciwgMCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz02MTA9c3RhdGljIGludCBtbWNfdmFsaWRhdGVfaG9zdF9jYXBzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTYxNC1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTU6XFx0aWYgKGNhcHMgXFx1MDAyNiBNTUNfQ0FQX1NESU9fSVJRIFxcdTAwMjZcXHUwMDI2ICFob3N0LVxcdTAwM2VvcHMtXFx1MDAzZWVuYWJsZV9zZGlvX2lycSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjYxNjpcXHRcXHRkZXZfd2FybihkZXYsIFxcXCJtaXNzaW5nIC1cXHUwMDNlZW5hYmxlX3NkaW9faXJxKCkgb3BzXFxcXG5cXFwiKTtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvX2lkcy5oXFx1MDAzZVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTUtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oPTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBtbWNfZXh0X2NzZF9maXh1cHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTg4LVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTkwLVxcdFNESU9fRklYVVAoU0RJT19WRU5ET1JfSURfVElfV0wxMjUxLCBTRElPX0RFVklDRV9JRF9USV9XTDEyNTEsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTIxNi1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjIxNzpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2NhcmRfaW5pdF9tZXRob2RzW10gPSB7XFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTgtXFx0U0RJT19GSVhVUF9DT01QQVRJQkxFKFxcXCJ0aSx3bDEyNTFcXFwiLCB3bDEyNTFfcXVpcmssIDApLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc0OD1NTUNfREVWX0FUVFIocmV2aXNpb24sIFxcXCIldS4ldVxcXFxuXFxcIiwgY2FyZC1cXHUwMDNlbWFqb3JfcmV2LCBjYXJkLVxcdTAwM2VtaW5vcl9yZXYpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NDktXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc1MDojZGVmaW5lIHNkaW9faW5mb19hdHRyKG51bSlcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc1MS1zdGF0aWMgc3NpemVfdCBpbmZvIyNudW0jI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzYxPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jLTc2Mi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzYzOnNkaW9faW5mb19hdHRyKDEpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjQ6c2Rpb19pbmZvX2F0dHIoMik7XFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NTpzZGlvX2luZm9fYXR0cigzKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY2OnNkaW9faW5mb19hdHRyKDQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjctXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yLS8qXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzogKiAgbGludXgvZHJpdmVycy9tbWMvc2Rpby5jXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9tbWMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW8uaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW9fZnVuYy5oXFx1MDAzZVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xOC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI0LSNpbmNsdWRlIFxcXCJzZC5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI1OiNpbmNsdWRlIFxcXCJzZGlvX2J1cy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2LSNpbmNsdWRlIFxcXCJtbWNfb3BzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjctI2luY2x1ZGUgXFxcInNkX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI4OiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5OiNpbmNsdWRlIFxcXCJzZGlvX2Npcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTMwLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9MzU9TU1DX0RFVl9BVFRSKHJjYSwgXFxcIjB4JTA0eFxcXFxuXFxcIiwgY2FyZC1cXHUwMDNlcmNhKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzojZGVmaW5lIHNkaW9faW5mb19hdHRyKG51bSlcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzgtc3RhdGljIHNzaXplX3QgaW5mbyMjbnVtIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM9NDg9c3RhdGljIERFVklDRV9BVFRSX1JPKGluZm8jI251bSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00OS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDpzZGlvX2luZm9fYXR0cigxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTpzZGlvX2luZm9fYXR0cigyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MjpzZGlvX2luZm9fYXR0cigzKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MzpzZGlvX2luZm9fYXR0cig0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01NC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1NTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqc2Rpb19zdGRfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01Ni1cXHRcXHUwMDI2ZGV2X2F0dHJfdmVuZG9yLmF0dHIsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02Ni19O1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY3OkFUVFJJQlVURV9HUk9VUFMoc2Rpb19zdGQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY4LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgc2Rpb190eXBlID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcwOlxcdC5ncm91cHMgPSBzZGlvX3N0ZF9ncm91cHMsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzEtfTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03Mi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MzpzdGF0aWMgaW50IHNkaW9fcmVhZF9mYnIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NC17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAzOnN0YXRpYyBpbnQgc2Rpb19pbml0X2Z1bmMoc3RydWN0IG1tY19jYXJkICpjYXJkLCB1bnNpZ25lZCBpbnQgZm4pXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUtXFx0aW50IHJldDtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDY6XFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDctXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExOlxcdGZ1bmMgPSBzZGlvX2FsbG9jX2Z1bmMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyLVxcdGlmIChJU19FUlIoZnVuYykpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTctXFx0aWYgKCEoY2FyZC1cXHUwMDNlcXVpcmtzIFxcdTAwMjYgTU1DX1FVSVJLX05PTlNURF9TRElPKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODpcXHRcXHRyZXQgPSBzZGlvX3JlYWRfZmJyKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExOS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEyMjpcXHRcXHRyZXQgPSBzZGlvX3JlYWRfZnVuY19jaXMoZnVuYyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzAtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTMxOlxcdGNhcmQtXFx1MDAzZXNkaW9fZnVuY1tmbiAtIDFdID0gZnVuYztcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzItXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMzktXFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQwOlxcdHNkaW9fcmVtb3ZlX2Z1bmMoZnVuYyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQxLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQ0OnN0YXRpYyBpbnQgc2Rpb19yZWFkX2NjY3Ioc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgb2NyKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0NS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY0OlxcdGNhcmQtXFx1MDAzZWNjY3Iuc2Rpb192c24gPSAoZGF0YSBcXHUwMDI2IDB4ZjApIFxcdTAwM2VcXHUwMDNlIDQ7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTY1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI2MTpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX3dpZGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2Mi17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTMtICogb2YgdGhlIGNhcmQuIFRoaXMgbWF5IGJlIHJlcXVpcmVkIG9uIGNlcnRhaW4gc2V0dXBzIG9mIGJvYXJkcyxcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTQ6ICogY29udHJvbGxlcnMgYW5kIGVtYmVkZGVkIHNkaW8gZGV2aWNlIHdoaWNoIGRvIG5vdCBuZWVkIHRoZSBjYXJkJ3NcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTUtICogcHVsbC11cC4gQXMgYSByZXN1bHQsIGNhcmQgZGV0ZWN0aW9uIGlzIGRpc2FibGVkIGFuZCBwb3dlciBpcyBzYXZlZC5cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTYtICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk3OnN0YXRpYyBpbnQgc2Rpb19kaXNhYmxlX2NkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjMxODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV93aWRlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzQ3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM0ODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzQ5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1MS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNTI6XFx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzUzLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY1LW91dDpcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNjY6XFx0cmV0dXJuIHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2Ny19XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjktXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzcwOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3MS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc0OlxcdGVyciA9IHNkaW9fZW5hYmxlX3dpZGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc1LVxcdGlmIChlcnIgXFx1MDAzYz0gMClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzYtXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzc6XFx0aWYgKG1tY19jYXJkX3NkaW8oY2FyZCkpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzgyLVxcdFxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozODM6XFx0XFx0XFx0c2Rpb19kaXNhYmxlX3dpZGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzg0LVxcdFxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTYtICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzk3OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dpdGNoX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgaW50IGVuYWJsZSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDI2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQyNzpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00Mjgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDMwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMTpcXHRyZXQgPSBtbWNfc2Rpb19zd2l0Y2hfaHMoY2FyZCwgdHJ1ZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMyOlxcdGlmIChyZXQgXFx1MDAzYz0gMCB8fCBtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMy1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM2LVxcdGlmIChyZXQgXFx1MDAzYz0gMClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mzc6XFx0XFx0bW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIGZhbHNlKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDQyOnN0YXRpYyB1bnNpZ25lZCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDMte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQ2NjpzdGF0aWMgdW5zaWduZWQgY2hhciBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoaW50IGhvc3Rfc3RyZW5ndGgpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY3LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ4MS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0ODI6c3RhdGljIHZvaWQgc2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MDMtXFx0XFx0Y2FyZF9zdHJlbmd0aCBcXHUwMDI2PSB+KFNESU9fRFJJVkVfRFRTeF9NQVNLXFx1MDAzY1xcdTAwM2NTRElPX0RSSVZFX0RUU3hfU0hJRlQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUwNDpcXHRcXHRjYXJkX3N0cmVuZ3RoIHw9IGhvc3RfZHJpdmVfdG9fc2Rpb19kcml2ZShkcml2ZV9zdHJlbmd0aCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTA1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTE4LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOTpzdGF0aWMgaW50IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MjAte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTkyLSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjU5MzpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5NC17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDAtXFx0LyogU3dpdGNoIHRvIHdpZGVyIGJ1cyAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwMTpcXHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNS1cXHQvKiBTZXQgdGhlIGRyaXZlciBzdHJlbmd0aCBmb3IgdGhlIGNhcmQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDY6XFx0c2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwOC1cXHQvKiBTZXQgYnVzIHNwZWVkIG1vZGUgb2YgdGhlIGNhcmQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDk6XFx0ZXJyID0gc2Rpb19zZXRfYnVzX3NwZWVkX21vZGUoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjEwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MjQtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjI1OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX2luaXQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYyNi1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzMi1cXHQgKiBSZXNldCB0aGUgY2FyZCBieSBwZXJmb3JtaW5nIHRoZSBzYW1lIHN0ZXBzIHRoYXQgYXJlIHRha2VuIGJ5XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjMzOlxcdCAqIG1tY19yZXNjYW5fdHJ5X2ZyZXEoKSBhbmQgbW1jX2F0dGFjaF9zZGlvKCkgZHVyaW5nIGEgXFxcIm5vcm1hbFxcXCIgcHJvYmUuXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM0LVxcdCAqXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjM1OlxcdCAqIHNkaW9fcmVzZXQoKSBpcyB0ZWNobmljYWxseSBub3QgbmVlZGVkLiBIYXZpbmcganVzdCBwb3dlcmVkIHVwIHRoZVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNi1cXHQgKiBoYXJkd2FyZSwgaXQgc2hvdWxkIGFscmVhZHkgYmUgaW4gcmVzZXQgc3RhdGUuIEhvd2V2ZXIsIHNvbWVcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0Ny1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NDg6XFx0c2Rpb19yZXNldChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDktXFx0bW1jX2dvX2lkbGUoaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NTktICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjYwOnN0YXRpYyBpbnQgbW1jX3NkaW9faW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NjEtXFx0XFx0XFx0ICAgICAgc3RydWN0IG1tY19jYXJkICpvbGRjYXJkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjk5LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcwMDpcXHRjYXJkID0gbW1jX2FsbG9jX2NhcmQoaG9zdCwgXFx1MDAyNnNkaW9fdHlwZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzAxLVxcdGlmIChJU19FUlIoY2FyZCkpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTUtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzE2OlxcdFxcdGlmIChvbGRjYXJkIFxcdTAwMjZcXHUwMDI2ICFtbWNfY2FyZF9zZGlvKG9sZGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE3LVxcdFxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjYtXFx0XFx0aG9zdC1cXHUwMDNlb3BzLVxcdTAwM2Vpbml0X2NhcmQoaG9zdCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzI3OlxcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19jYXJkX2luaXRfbWV0aG9kcyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzM4LVxcdCAqIGZhaWxzIHRvIGNoZWNrIHJvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCwgIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM5OlxcdCAqIHRyeSB0byBpbml0IHVocyBjYXJkLiBzZGlvX3JlYWRfY2NjciB3aWxsIHRha2Ugb3ZlciB0aGlzIHRhc2tcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDAtXFx0ICogdG8gbWFrZSBzdXJlIHdoaWNoIHNwZWVkIG1vZGUgc2hvdWxkIHdvcmsuXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDQtXFx0XFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzQ1OlxcdFxcdFxcdG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIG9jcl9jYXJkLCBjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDYtXFx0XFx0XFx0cmV0cmllcy0tO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE0LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNTpcXHRlcnIgPSBzZGlvX3JlYWRfY2NjcihjYXJkLCBvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNi1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODE3OlxcdFxcdG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIG9jcl9jYXJkLCBjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTgtXFx0XFx0aWYgKG9jciBcXHUwMDI2IFI0XzE4Vl9QUkVTRU5UKSB7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MjgtXFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODI5OlxcdGVyciA9IHNkaW9fcmVhZF9jb21tb25fY2lzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODQzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg0NDpcXHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fZml4dXBfbWV0aG9kcyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODQ1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODYxLVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2MjpcXHRlcnIgPSBzZGlvX2Rpc2FibGVfY2QoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjgtXFx0aWYgKChvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkgXFx1MDAyNlxcdTAwMjYgY2FyZC1cXHUwMDNlc3dfY2Fwcy5zZDNfYnVzX21vZGUpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4Njk6XFx0XFx0ZXJyID0gbW1jX3NkaW9faW5pdF91aHNfY2FyZChjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzAtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3NS1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NzY6XFx0XFx0ZXJyID0gc2Rpb19lbmFibGVfaHMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODc3LVxcdFxcdGlmIChlcnIgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg4NTpcXHRcXHRtbWNfc2V0X2Nsb2NrKGhvc3QsIG1tY19zZGlvX2dldF9tYXhfY2xvY2soY2FyZCkpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4Ni1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4OS1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4OTA6XFx0XFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODkxLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE0OnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVpbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxNS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE4OlxcdHJldCA9IG1tY19zZGlvX3ByZV9pbml0KGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jciwgTlVMTCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTIyOlxcdHJldHVybiBtbWNfc2Rpb19pbml0X2NhcmQoaG9zdCwgaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlb2NyLCBob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjMtfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTI3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19yZW1vdmUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMyOlxcdGZvciAoaSA9IDA7aSBcXHUwMDNjIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZXNkaW9fZnVuY3M7aSsrKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMzOlxcdFxcdGlmIChob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV0pIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzQ6XFx0XFx0XFx0c2Rpb19yZW1vdmVfZnVuYyhob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV0pO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzNTpcXHRcXHRcXHRob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV0gPSBOVUxMO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkzNi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDUtICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fYWxpdmUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk0Ny17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NTctICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTU4OnN0YXRpYyB2b2lkIG1tY19zZGlvX2RldGVjdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk5My1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTk0OlxcdFxcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTUtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMDg6c3RhdGljIGludCBtbWNfc2Rpb19wcmVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDExLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZXNkaW9fZnVuY3M7IGkrKykge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTM6XFx0XFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYyA9IGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZXNkaW9fZnVuY1tpXTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDE0OlxcdFxcdGlmIChmdW5jIFxcdTAwMjZcXHUwMDI2IHNkaW9fZnVuY19wcmVzZW50KGZ1bmMpIFxcdTAwMjZcXHUwMDI2IGZ1bmMtXFx1MDAzZWRldi5kcml2ZXIpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDE1LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbW9wcyA9IGZ1bmMtXFx1MDAzZWRldi5kcml2ZXItXFx1MDAzZXBtO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAzMi1cXHQvKiBSZW1vdmUgdGhlIFNESU8gY2FyZCBhbmQgbGV0IGl0IGJlIHJlLWRldGVjdGVkIGxhdGVyIG9uLiAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzM6XFx0bW1jX3NkaW9fcmVtb3ZlKGhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMzQtXFx0bW1jX2NsYWltX2hvc3QoaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ1LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDY6c3RhdGljIGludCBtbWNfc2Rpb19zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ3LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ4OlxcdFdBUk5fT04oaG9zdC1cXHUwMDNlc2Rpb19pcnFzIFxcdTAwMjZcXHUwMDI2ICFtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDQ5LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1MS1cXHRtbWNfY2FyZF9zZXRfc3VzcGVuZGVkKGhvc3QtXFx1MDAzZWNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTI6XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2aG9zdC1cXHUwMDNlc2Rpb19pcnFfd29yayk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1My1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTUtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA1NjpcXHRpZiAobW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSBcXHUwMDI2XFx1MDAyNiBtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTc6XFx0XFx0c2Rpb19kaXNhYmxlXzRiaXRfYnVzKGhvc3QtXFx1MDAzZWNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDcwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNzE6c3RhdGljIGludCBtbWNfc2Rpb19yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNzIte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5NS1cXHRcXHR9XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NjpcXHRcXHRlcnIgPSBtbWNfc2Rpb19yZWluaXRfY2FyZChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDk3OlxcdH0gZWxzZSBpZiAobW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTgtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDMtXFx0XFx0bW1jX3JldHVuZV9ob2xkX25vdyhob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTA0OlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGhvc3QtXFx1MDAzZWNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDUtXFx0XFx0bW1jX3JldHVuZV9yZWxlYXNlKGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExMy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE0OlxcdGlmIChob3N0LVxcdTAwM2VzZGlvX2lycXMpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE1LVxcdFxcdGlmICghKGhvc3QtXFx1MDAzZWNhcHMyIFxcdTAwMjYgTU1DX0NBUDJfU0RJT19JUlFfTk9USFJFQUQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMTY6XFx0XFx0XFx0d2FrZV91cF9wcm9jZXNzKGhvc3QtXFx1MDAzZXNkaW9faXJxX3RocmVhZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNy1cXHRcXHRlbHNlIGlmIChob3N0LVxcdTAwM2VjYXBzIFxcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE4OlxcdFxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNmhvc3QtXFx1MDAzZXNkaW9faXJxX3dvcmspO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTktXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyNy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTI4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTI5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMzctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEzODpzdGF0aWMgaW50IG1tY19zZGlvX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNDQtXFx0bW1jX3Bvd2VyX3VwKGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE0NTpcXHRyZXQgPSBtbWNfc2Rpb19yZWluaXRfY2FyZChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ2LVxcdG1tY19yZWxlYXNlX2hvc3QoaG9zdCk7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTU2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNTc6c3RhdGljIGludCBtbWNfc2Rpb19od19yZXNldChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1OC17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY1LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNjY6XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzX3Byb2JlZCkgXFx1MDAzZSAxKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2Ny1cXHRcXHRpZiAobW1jX2NhcmRfcmVtb3ZlZChjYXJkKSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNzktXFx0bW1jX3Bvd2VyX2N5Y2xlKGhvc3QsIGNhcmQtXFx1MDAzZW9jcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MDpcXHRyZXR1cm4gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4MS19XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4Mi1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgzOnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODQte1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODUtXFx0bW1jX3NldF9jbG9jayhob3N0LCBob3N0LVxcdTAwM2VmX2luaXQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODY6XFx0c2Rpb19yZXNldChob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg3LVxcdG1tY19nb19pZGxlKGhvc3QpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjA5LjA5OTUyMDg5OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzY2NzgwMDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gRW11bGF0aW9uIFJvYWRibG9jayoqXG5cbk9rYXksIHNvIHRoZSBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9gIGNvZGUuLi4gaXQncyBsb29raW5nIGxpa2UgYSBkZWFkIGVuZCBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIFNESU8gZGV2aWNlcywgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGVpdGhlci4gVGhhdCBtZWFucyB0aG9zZSBzcGVjaWZpYyBjb2RlIHBhdGhzIGFyZSBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBHQ0Ugb3IgUUVNVSBzZXR1cHMuIEJ1dCwgaG9sZCBvbiBhIHNlY29uZCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBhIGNsZXZlciB3b3JrYXJvdW5kPyBJcyB0aGVyZSAqYW55KiB2aXJ0dWFsIFNESU8gaG9zdCBjb250cm9sbGVyIG91dCB0aGVyZSB0aGF0IEknbSBub3QgdGhpbmtpbmcgb2Y/IFRpbWUgdG8gd2lkZW4gdGhlIHNlYXJjaC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9tbWMvaG9zdC9gIGRpcmVjdG9yeSBhbmQgc2VlIGlmIGFueXRoaW5nIHBvcHMgdXAuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzU0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjEzLjQ2NjMwNDYyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYwNDY4NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnViMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY0MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnPTkyMD1jb25maWcgTU1DX1ZVQjMwMFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0NC1cXHQgIFRvIGNvbXBpbGUgdGhpcyBtbWMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBhcyBhIG1vZHVsZSxcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTQ1OlxcdCAgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB2dWIzMDAuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0Ni1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX01NQ19KWjQ3NDApXFx0Kz0gano0NzQwX21tYy5vXFxuZHJpdmVycy9tbWMvaG9zdC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTU1DX1ZVQjMwMClcXHQrPSB2dWIzMDAub1xcbmRyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGUtNjQtb2JqLSQoQ09ORklHX01NQ19VU0hDKVxcdFxcdCs9IHVzaGMub1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz0yNjA9TU9EVUxFX1BBUk1fREVTQyhmaXJtd2FyZV9yb21fd2FpdF9zdGF0ZXMsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI2NS0jZGVmaW5lIFZVQjMwMF9QUk9EVUNUX0lEXFx0MHgwMTJDXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyNjY6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHZ1YjMwMF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjY3LVxcdHtVU0JfREVWSUNFKEVMQU5fVkVORE9SX0lELCBWVUIzMDBfUFJPRFVDVF9JRCl9LFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yNzAtfTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjI3MTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgdnViMzAwX3RhYmxlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTI3Mi1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9Mjg2PXN0cnVjdCBzZGlvX3JlZ2lzdGVyIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjk1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mjk2OnN0cnVjdCB2dWIzMDBfbW1jX2hvc3Qge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjk3LVxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2O1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNTQtXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNTU6I2RlZmluZSBrcmVmX3RvX3Z1YjMwMF9tbWNfaG9zdChkKSBjb250YWluZXJfb2YoZCwgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwga3JlZilcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM1Ni0jZGVmaW5lIFNFVF9UUkFOU0ZFUl9QU0VVRE9DT0RFXFx0XFx0MjFcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzY4LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MzY5OnN0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zNzAte1xcdFxcdFxcdFxcdC8qIGtyZWYgY2FsbGJhY2sgLSBzb2Z0aXJxICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzE6XFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozNzI6XFx0c3RydWN0IG1tY19ob3N0ICptbWMgPSB2dWIzMDAtXFx1MDAzZW1tYztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM3My1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3NDpcXHR1c2JfZnJlZV91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX291dF91cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc1OlxcdHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3NjpcXHR1c2JfZnJlZV91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzc3OlxcdHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiID0gTlVMTDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM3ODpcXHR1c2JfcHV0X2Rldih2dWIzMDAtXFx1MDAzZXVkZXYpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzc5LVxcdG1tY19mcmVlX2hvc3QobW1jKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM4MC1cXHQvKlxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MzgxOlxcdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzgyLVxcdCAqIHdoaWNoIGlzIGNvbnRhaW5lZCBhdCB0aGUgZW5kIG9mIHN0cnVjdCBtbWNcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Mzg2OnN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9jbW5kX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg3LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4ODpcXHRrcmVmX2dldChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjM4OTpcXHRpZiAocXVldWVfd29yayhjbW5kd29ya3F1ZXVlLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VjbW5kd29yaykpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTM5MC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDEtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDI6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDMtXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDUtXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDY6c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX3BvbGxfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsIGludCBkZWxheSlcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwNy17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDg6XFx0a3JlZl9nZXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0MDk6XFx0aWYgKHF1ZXVlX2RlbGF5ZWRfd29yayhwb2xsd29ya3F1ZXVlLCBcXHUwMDI2dnViMzAwLVxcdTAwM2Vwb2xsd29yaywgZGVsYXkpKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MTAtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDIxLVxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDIyOlxcdFxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDIzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDI1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDI2OnN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9kZWFkX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDI3LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyODpcXHRrcmVmX2dldChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyOTpcXHRpZiAocXVldWVfd29yayhkZWFkd29ya3F1ZXVlLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VkZWFkd29yaykpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQzMC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDEtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NDI6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDMtXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00NDY9c3RhdGljIHZvaWQgaXJxcG9sbF9yZXNfY29tcGxldGVkKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0Ny17XFx0XFx0XFx0XFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ0ODpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSAoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqKXVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0OS1cXHRpZiAodXJiLVxcdTAwM2VzdGF0dXMpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NTA6XFx0XFx0dnViMzAwLVxcdTAwM2V1c2JfdHJhbnNwb3J0X2ZhaWwgPSB1cmItXFx1MDAzZXN0YXR1cztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ1MTpcXHRjb21wbGV0ZShcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ1Mi19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQ1ND1zdGF0aWMgdm9pZCBpcnFwb2xsX291dF9jb21wbGV0ZWQoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDU1LXtcXHRcXHRcXHRcXHQvKiB1cmIgY29tcGxldGlvbiBoYW5kbGVyIC0gaGFyZGlycSAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU2OlxcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICopdXJiLVxcdTAwM2Vjb250ZXh0O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDU3LVxcdGlmICh1cmItXFx1MDAzZXN0YXR1cykge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDU4OlxcdFxcdHZ1YjMwMC1cXHUwMDNldXNiX3RyYW5zcG9ydF9mYWlsID0gdXJiLVxcdTAwM2VzdGF0dXM7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NTk6XFx0XFx0Y29tcGxldGUoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlaXJxcG9sbF9jb21wbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NjAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NjMtXFx0XFx0dW5zaWduZWQgaW50IHBpcGUgPVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDY0OlxcdFxcdFxcdHVzYl9yY3ZidWxrcGlwZSh2dWIzMDAtXFx1MDAzZXVkZXYsIHZ1YjMwMC1cXHUwMDNlY21uZF9yZXNfZXApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDY1OlxcdFxcdHVzYl9maWxsX2J1bGtfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiLCB2dWIzMDAtXFx1MDAzZXVkZXYsIHBpcGUsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NjY6XFx0XFx0XFx0XFx0ICBcXHUwMDI2dnViMzAwLVxcdTAwM2VyZXNwLCBzaXplb2YodnViMzAwLVxcdTAwM2VyZXNwKSxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2NzpcXHRcXHRcXHRcXHQgIGlycXBvbGxfcmVzX2NvbXBsZXRlZCwgdnViMzAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ2ODpcXHRcXHR2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Njk6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmIsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDcwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3MTpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXVzYl90cmFuc3BvcnRfZmFpbCA9IHJldDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3MjpcXHRcXHRcXHRjb21wbGV0ZShcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ3My1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ3Ny1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ3ODpzdGF0aWMgdm9pZCBzZW5kX2lycXBvbGwoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDc5LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4MDpcXHQvKiBjbWRfbXV0ZXggaXMgaGVsZCBieSB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00ODEtXFx0aW50IHJldHZhbDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ4Mi1cXHRpbnQgdGltZW91dCA9IDB4RkZGRiBcXHUwMDI2ICgweDAwMDFGRkZGIC0gZmlybXdhcmVfaXJxcG9sbF90aW1lb3V0KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4MzpcXHR2dWIzMDAtXFx1MDAzZWNtbmQucG9sbC5oZWFkZXJfc2l6ZSA9IDIyO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg0OlxcdHZ1YjMwMC1cXHUwMDNlY21uZC5wb2xsLmhlYWRlcl90eXBlID0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NTpcXHR2dWIzMDAtXFx1MDAzZWNtbmQucG9sbC5wb3J0X251bWJlciA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0ODY6XFx0dnViMzAwLVxcdTAwM2VjbW5kLnBvbGwuY29tbWFuZF90eXBlID0gMjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ4NzpcXHR2dWIzMDAtXFx1MDAzZWNtbmQucG9sbC5wb2xsX3RpbWVvdXRfbHNiID0gMHhGRiBcXHUwMDI2ICh1bnNpZ25lZCl0aW1lb3V0O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg4OlxcdHZ1YjMwMC1cXHUwMDNlY21uZC5wb2xsLnBvbGxfdGltZW91dF9tc2IgPSAweEZGIFxcdTAwMjYgKHVuc2lnbmVkKSh0aW1lb3V0IFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDg5OlxcdHVzYl9maWxsX2J1bGtfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9vdXRfdXJiLCB2dWIzMDAtXFx1MDAzZXVkZXYsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTA6XFx0XFx0XFx0ICB1c2Jfc25kYnVsa3BpcGUodnViMzAwLVxcdTAwM2V1ZGV2LCB2dWIzMDAtXFx1MDAzZWNtbmRfb3V0X2VwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkxOlxcdFxcdFxcdCAgLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VjbW5kLCBzaXplb2YodnViMzAwLVxcdTAwM2VjbW5kKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDkyOlxcdFxcdFxcdCAgLCBpcnFwb2xsX291dF9jb21wbGV0ZWQsIHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTM6XFx0cmV0dmFsID0gdXNiX3N1Ym1pdF91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX291dF91cmIsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDk0LVxcdGlmICgwIFxcdTAwM2UgcmV0dmFsKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTU6XFx0XFx0dnViMzAwLVxcdTAwM2V1c2JfdHJhbnNwb3J0X2ZhaWwgPSByZXR2YWw7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0OTY6XFx0XFx0dnViMzAwX3F1ZXVlX3BvbGxfd29yayh2dWIzMDAsIDEpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NDk3OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycXBvbGxfY29tcGxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDk4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTAzLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTA0OnN0YXRpYyB2b2lkIG5ld19zeXN0ZW1fcG9ydF9zdGF0dXMoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTA1LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwNjpcXHRpbnQgb2xkX2NhcmRfcHJlc2VudCA9IHZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTA3LVxcdGludCBuZXdfY2FyZF9wcmVzZW50ID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwODpcXHRcXHQoMHgwMDAxIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMucG9ydF9mbGFncykgPyAxIDogMDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUwOTpcXHR2dWIzMDAtXFx1MDAzZXJlYWRfb25seSA9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MTA6XFx0XFx0KDB4MDAxMCBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzLnBvcnRfZmxhZ3MpID8gMSA6IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTEtXFx0aWYgKG5ld19jYXJkX3ByZXNlbnQgXFx1MDAyNlxcdTAwMjYgIW9sZF9jYXJkX3ByZXNlbnQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUxMjpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2dnViMzAwLVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYsIFxcXCJjYXJkIGp1c3QgaW5zZXJ0ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTEzOlxcdFxcdHZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50ID0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUxNDpcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTUtXFx0XFx0aWYgKGRpc2FibGVfb2ZmbG9hZF9wcm9jZXNzaW5nKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE2OlxcdFxcdFxcdHN0cnNjcHkodnViMzAwLVxcdTAwM2V2dWJfbmFtZSwgXFxcIkVNUFRZIFByb2Nlc3NpbmcgRGlzYWJsZWRcXFwiLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE3OlxcdFxcdFxcdFxcdHNpemVvZih2dWIzMDAtXFx1MDAzZXZ1Yl9uYW1lKSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MTgtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTE5OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNldnViX25hbWVbMF0gPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTIwOlxcdFxcdG1tY19kZXRlY3RfY2hhbmdlKHZ1YjMwMC1cXHUwMDNlbW1jLCAxKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUyMS1cXHR9IGVsc2UgaWYgKCFuZXdfY2FyZF9wcmVzZW50IFxcdTAwMjZcXHUwMDI2IG9sZF9jYXJkX3ByZXNlbnQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUyMjpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2dnViMzAwLVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYsIFxcXCJjYXJkIGp1c3QgZWplY3RlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MjM6XFx0XFx0dnViMzAwLVxcdTAwM2VjYXJkX3ByZXNlbnQgPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTI0OlxcdFxcdG1tY19kZXRlY3RfY2hhbmdlKHZ1YjMwMC1cXHUwMDNlbW1jLCAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUyNS1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01MjktXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzA6c3RhdGljIHZvaWQgX19hZGRfb2ZmbG9hZGVkX3JlZ190b19maWZvKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzMS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgb2ZmbG9hZF9yZWdpc3RlcnNfYWNjZXNzXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTUzMy17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1MzQ6XFx0dTggciA9IHZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9wb2ludCArIHZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9jb3VudDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjUzNTpcXHRtZW1jcHkoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ucmVnW01BWFJFR01BU0sgXFx1MDAyNiByXSwgcmVnaXN0ZXJfYWNjZXNzLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTM2LVxcdCAgICAgICBzaXplb2Yoc3RydWN0IG9mZmxvYWRfcmVnaXN0ZXJzX2FjY2VzcykpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTM3OlxcdHZ1YjMwMC1cXHUwMDNlZm5bZnVuY10ub2ZmbG9hZF9jb3VudCArPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTM4OlxcdHZ1YjMwMC1cXHUwMDNldG90YWxfb2ZmbG9hZF9jb3VudCArPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTM5LX1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU0MC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU0MTpzdGF0aWMgdm9pZCBhZGRfb2ZmbG9hZGVkX3JlZyhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NDItXFx0XFx0XFx0ICAgICAgc3RydWN0IG9mZmxvYWRfcmVnaXN0ZXJzX2FjY2VzcyAqcmVnaXN0ZXJfYWNjZXNzKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NDctXFx0dTggZnVuYyA9ICgoMHg3MCBcXHUwMDI2IHJlZ2lzdGVyX2FjY2Vzcy1cXHUwMDNlY29tbWFuZF9ieXRlWzBdKSBcXHUwMDNlXFx1MDAzZSA0KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU0ODpcXHR1OCByZWdzID0gdnViMzAwLVxcdTAwM2VkeW5hbWljX3JlZ2lzdGVyX2NvdW50O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTQ5LVxcdHU4IGkgPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTUwOlxcdHdoaWxlICgwIFxcdTAwM2MgcmVncy0tIFxcdTAwMjZcXHUwMDI2IDEgPT0gdnViMzAwLVxcdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLmFjdGl2YXRlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTE6XFx0XFx0aWYgKHZ1YjMwMC1cXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5mdW5jX251bSA9PSBmdW5jIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTI6XFx0XFx0ICAgIHZ1YjMwMC1cXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5zZGlvX3JlZyA9PSBSZWdpc3Rlcikge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTUzOlxcdFxcdFxcdGlmICh2dWIzMDAtXFx1MDAzZXNkaW9fcmVnaXN0ZXJbaV0ucHJlcGFyZWQgPT0gMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU1NDpcXHRcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXNkaW9fcmVnaXN0ZXJbaV0ucHJlcGFyZWQgPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTU1OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlc2Rpb19yZWdpc3RlcltpXS5yZXNwb25zZSA9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NTYtXFx0XFx0XFx0XFx0cmVnaXN0ZXJfYWNjZXNzLVxcdTAwM2VSZXNwb25kX0J5dGVbMl07XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NTc6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VzZGlvX3JlZ2lzdGVyW2ldLnJlZ3ZhbHVlID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU1OC1cXHRcXHRcXHRcXHRyZWdpc3Rlcl9hY2Nlc3MtXFx1MDAzZVJlc3BvbmRfQnl0ZVszXTtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY0LVxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU2NTpcXHRfX2FkZF9vZmZsb2FkZWRfcmVnX3RvX2ZpZm8odnViMzAwLCByZWdpc3Rlcl9hY2Nlc3MsIGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY2LX1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU2Ny1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU2ODpzdGF0aWMgdm9pZCBjaGVja192dWIzMDBfcG9ydF9zdGF0dXMoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTY5LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3MC1cXHQvKlxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTcxOlxcdCAqIGNtZF9tdXRleCBpcyBoZWxkIGJ5IHZ1YjMwMF9wb2xsd29ya190aHJlYWQsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1NzI6XFx0ICogdnViMzAwX2RlYWR3b3JrX3RocmVhZCBvciB2dWIzMDBfY21uZHdvcmtfdGhyZWFkXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NzMtXFx0ICovXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU3NS1cXHRyZXR2YWwgPVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTc2OlxcdFxcdHVzYl9jb250cm9sX21zZyh2dWIzMDAtXFx1MDAzZXVkZXYsIHVzYl9yY3ZjdHJscGlwZSh2dWIzMDAtXFx1MDAzZXVkZXYsIDApLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTc3LVxcdFxcdFxcdFxcdEdFVF9TWVNURU1fUE9SVF9TVEFUVVMsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01NzgtXFx0XFx0XFx0XFx0VVNCX0RJUl9JTiB8IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1Nzk6XFx0XFx0XFx0XFx0MHgwMDAwLCAweDAwMDAsIFxcdTAwMjZ2dWIzMDAtXFx1MDAzZXN5c3RlbV9wb3J0X3N0YXR1cyxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4MDpcXHRcXHRcXHRcXHRzaXplb2YodnViMzAwLVxcdTAwM2VzeXN0ZW1fcG9ydF9zdGF0dXMpLCAxMDAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4MTpcXHRpZiAoc2l6ZW9mKHZ1YjMwMC1cXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzKSA9PSByZXR2YWwpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1ODI6XFx0XFx0bmV3X3N5c3RlbV9wb3J0X3N0YXR1cyh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTgzLX1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU4NC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU4NTpzdGF0aWMgdm9pZCBfX3Z1YjMwMF9pcnFwb2xsX3Jlc3BvbnNlKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU4Ni17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1ODc6XFx0LyogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX3BvbGx3b3JrX3RocmVhZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTg4OlxcdGlmICh2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCA9PSAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNTg5LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5MC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5MTpcXHRzd2l0Y2ggKHZ1YjMwMC1cXHUwMDNlcmVzcC5jb21tb24uaGVhZGVyX3R5cGUpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTU5Mi1cXHRjYXNlIFJFU1BPTlNFX0lOVEVSUlVQVDpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5MzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTQ6XFx0XFx0aWYgKHZ1YjMwMC1cXHUwMDNlaXJxX2VuYWJsZWQpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTU6XFx0XFx0XFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXFx1MDAzZW1tYyk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy01OTYtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NTk3OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlaXJxc19xdWV1ZWQgKz0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjU5ODpcXHRcXHR2dWIzMDAtXFx1MDAzZWlycV9kaXNhYmxlZCA9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo1OTk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MDAtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MDEtXFx0Y2FzZSBSRVNQT05TRV9FUlJPUjpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwMjpcXHRcXHRpZiAodnViMzAwLVxcdTAwM2VyZXNwLmVycm9yLmVycm9yX2NvZGUgPT0gU0RfRVJST1JfTk9fREVWSUNFKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjAzOlxcdFxcdFxcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjA1LVxcdGNhc2UgUkVTUE9OU0VfU1RBVFVTOlxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjA2OlxcdFxcdHZ1YjMwMC1cXHUwMDNlc3lzdGVtX3BvcnRfc3RhdHVzID0gdnViMzAwLVxcdTAwM2VyZXNwLnN0YXR1cztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwNzpcXHRcXHRuZXdfc3lzdGVtX3BvcnRfc3RhdHVzKHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MDg6XFx0XFx0aWYgKCF2dWIzMDAtXFx1MDAzZWNhcmRfcHJlc2VudClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYwOTpcXHRcXHRcXHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgSFogLyA1KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxMC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjEyLVxcdHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYxMzpcXHRcXHRpbnQgb2ZmbG9hZGVkX2RhdGFfbGVuZ3RoID0gdnViMzAwLVxcdTAwM2VyZXNwLmNvbW1vbi5oZWFkZXJfc2l6ZSAtIDM7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MTQtXFx0XFx0aW50IHJlZ2lzdGVyX2NvdW50ID0gb2ZmbG9hZGVkX2RhdGFfbGVuZ3RoIFxcdTAwM2VcXHUwMDNlIDM7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxNi1cXHRcXHR3aGlsZSAocmVnaXN0ZXJfY291bnQtLSkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjE3OlxcdFxcdFxcdGFkZF9vZmZsb2FkZWRfcmVnKHZ1YjMwMCwgXFx1MDAyNnZ1YjMwMC1cXHUwMDNlcmVzcC5pcnEucmVnW3JpXSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MTgtXFx0XFx0XFx0cmkgKz0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYxOS1cXHRcXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MjA6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjIxOlxcdFxcdGlmICh2dWIzMDAtXFx1MDAzZWlycV9lbmFibGVkKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjIyOlxcdFxcdFxcdG1tY19zaWduYWxfc2Rpb19pcnEodnViMzAwLVxcdTAwM2VtbWMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjIzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYyNDpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZWlycXNfcXVldWVkICs9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MjU6XFx0XFx0dnViMzAwLVxcdTAwM2VpcnFfZGlzYWJsZWQgPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjI2OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjI3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02MzAtXFx0e1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjMxOlxcdFxcdGludCBvZmZsb2FkZWRfZGF0YV9sZW5ndGggPSB2dWIzMDAtXFx1MDAzZXJlc3AuY29tbW9uLmhlYWRlcl9zaXplIC0gMztcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzMi1cXHRcXHRpbnQgcmVnaXN0ZXJfY291bnQgPSBvZmZsb2FkZWRfZGF0YV9sZW5ndGggXFx1MDAzZVxcdTAwM2UgMztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjM0LVxcdFxcdHdoaWxlIChyZWdpc3Rlcl9jb3VudC0tKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2MzU6XFx0XFx0XFx0YWRkX29mZmxvYWRlZF9yZWcodnViMzAwLCBcXHUwMDI2dnViMzAwLVxcdTAwM2VyZXNwLmlycS5yZWdbcmldKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTYzNi1cXHRcXHRcXHRyaSArPSAxO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjM3LVxcdFxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjYzODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Mzk6XFx0XFx0aWYgKHZ1YjMwMC1cXHUwMDNlaXJxX2VuYWJsZWQpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDA6XFx0XFx0XFx0bW1jX3NpZ25hbF9zZGlvX2lycSh2dWIzMDAtXFx1MDAzZW1tYyk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NDEtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjQyOlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlaXJxc19xdWV1ZWQgKz0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY0MzpcXHRcXHR2dWIzMDAtXFx1MDAzZWlycV9kaXNhYmxlZCA9IDA7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NDQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycV9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NDUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY0Ny1cXHRjYXNlIFJFU1BPTlNFX05PX0lOVEVSUlVQVDpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY0ODpcXHRcXHR2dWIzMDBfcXVldWVfcG9sbF93b3JrKHZ1YjMwMCwgMSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NDktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY1NC1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY1NTpzdGF0aWMgdm9pZCBfX2RvX3BvbGwoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjU2LXtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY1NzpcXHQvKiBjbWRfbXV0ZXggaXMgaGVsZCBieSB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NTgtXFx0dW5zaWduZWQgbG9uZyBjb21tcmV0dmFsO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjU5OlxcdG1vZF90aW1lcihcXHUwMDI2dnViMzAwLVxcdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICsgSFopO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjYwOlxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFwb2xsX2NvbXBsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2MTpcXHRzZW5kX2lycXBvbGwodnViMzAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2MjpcXHRjb21tcmV0dmFsID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWlycXBvbGxfY29tcGxldGUsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NjMtXFx0XFx0XFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2NjQ6XFx0aWYgKHZ1YjMwMC1cXHUwMDNldXNiX3RyYW5zcG9ydF9mYWlsKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NjUtXFx0XFx0Lyogbm8gbmVlZCB0byBkbyBhbnl0aGluZyAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjY2LVxcdH0gZWxzZSBpZiAoY29tbXJldHZhbCA9PSAwKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Njc6XFx0XFx0dnViMzAwLVxcdTAwM2V1c2JfdGltZWRfb3V0ID0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY2ODpcXHRcXHR1c2Jfa2lsbF91cmIodnViMzAwLVxcdTAwM2Vjb21tYW5kX291dF91cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjY5OlxcdFxcdHVzYl9raWxsX3VyYih2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NzAtXFx0fSBlbHNlIHsgLyogY29tbXJldHZhbCBcXHUwMDNlIDAgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY3MTpcXHRcXHRfX3Z1YjMwMF9pcnFwb2xsX3Jlc3BvbnNlKHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NzItXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02NzctICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2Nzg6c3RhdGljIHZvaWQgdnViMzAwX3BvbGx3b3JrX3RocmVhZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02Nzkte1xcdFxcdFxcdFxcdC8qIE5PVCBpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MDpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MTpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBwb2xsd29yay53b3JrKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4MjpcXHRpZiAoIXZ1YjMwMC1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODM6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02ODQtXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg1LVxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4NjpcXHRtdXRleF9sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODc6XFx0aWYgKHZ1YjMwMC1cXHUwMDNlY21kKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2ODg6XFx0XFx0dnViMzAwX3F1ZXVlX3BvbGxfd29yayh2dWIzMDAsIDEpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njg5OlxcdH0gZWxzZSBpZiAoIXZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50KSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02OTAtXFx0XFx0Lyogbm8gbmVlZCB0byBkbyBhbnl0aGluZyAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjkxOlxcdH0gZWxzZSB7IC8qIHZ1YjMwMC1cXHUwMDNlY2FyZF9wcmVzZW50ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo2OTI6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NjkzOlxcdFxcdGlmICghdnViMzAwLVxcdTAwM2VpcnFfZW5hYmxlZCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk0OlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk1OlxcdFxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VpcnFzX3F1ZXVlZCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6Njk2OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlaXJxc19xdWV1ZWQgLT0gMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5NzpcXHRcXHRcXHRtbWNfc2lnbmFsX3NkaW9faXJxKHZ1YjMwMC1cXHUwMDNlbW1jKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5ODpcXHRcXHRcXHRtb2RfdGltZXIoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlaW5hY3Rpdml0eV90aW1lciwgamlmZmllcyArIEhaKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY5OTpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlaXJxX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcwMDpcXHRcXHR9IGVsc2UgeyAvKiBOT1QgdnViMzAwLVxcdTAwM2VpcnFzX3F1ZXVlZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzAxOlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VpcnFfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzAyOlxcdFxcdFxcdF9fZG9fcG9sbCh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzAzLVxcdFxcdH1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcwNC1cXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDU6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MDY6XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MDctfVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzA4LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzA5OnN0YXRpYyB2b2lkIHZ1YjMwMF9kZWFkd29ya190aHJlYWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzEwLXtcXHRcXHRcXHRcXHQvKiBOT1QgaXJxICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MTE6XFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxMjpcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCwgZGVhZHdvcmspO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzEzOlxcdGlmICghdnViMzAwLVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxNDpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxNS1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MTYtXFx0fVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzE3OlxcdG11dGV4X2xvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxODpcXHRpZiAodnViMzAwLVxcdTAwM2VjbWQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxOS1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MjQtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3MjU6XFx0fSBlbHNlIGlmICh2dWIzMDAtXFx1MDAzZWNhcmRfcHJlc2VudCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzI2OlxcdFxcdGNoZWNrX3Z1YjMwMF9wb3J0X3N0YXR1cyh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzI3OlxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VtbWMgXFx1MDAyNlxcdTAwMjYgdnViMzAwLVxcdTAwM2VtbWMtXFx1MDAzZWNhcmQpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcyOC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MzQtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjczNTpcXHRcXHRjaGVja192dWIzMDBfcG9ydF9zdGF0dXModnViMzAwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTczNi1cXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mzc6XFx0bW9kX3RpbWVyKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWluYWN0aXZpdHlfdGltZXIsIGppZmZpZXMgKyBIWik7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mzg6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3Mzk6XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDAtfVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzQxLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQyOnN0YXRpYyB2b2lkIHZ1YjMwMF9pbmFjdGl2aXR5X3RpbWVyX2V4cGlyZWQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDMte1xcdFxcdFxcdFxcdC8qIHNvZnRpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NDpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSB0aW1lcl9jb250YWluZXJfb2YodnViMzAwLCB0LFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzQ1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbmFjdGl2aXR5X3RpbWVyKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NjpcXHRpZiAoIXZ1YjMwMC1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDc6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NDg6XFx0fSBlbHNlIGlmICh2dWIzMDAtXFx1MDAzZWNtZCkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQ5OlxcdFxcdG1vZF90aW1lcihcXHUwMDI2dnViMzAwLVxcdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICsgSFopO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo3NTE6XFx0XFx0dnViMzAwX3F1ZXVlX2RlYWRfd29yayh2dWIzMDApO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUyOlxcdFxcdG1vZF90aW1lcihcXHUwMDI2dnViMzAwLVxcdTAwM2VpbmFjdGl2aXR5X3RpbWVyLCBqaWZmaWVzICsgSFopO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzU1LVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzU2OnN0YXRpYyBpbnQgdnViMzAwX3Jlc3BvbnNlX2Vycm9yKHU4IGVycm9yX2NvZGUpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NTcte1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz03OTI9c3RhdGljIHZvaWQgY29tbWFuZF9yZXNfY29tcGxldGVkKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5My17XFx0XFx0XFx0XFx0LyogdXJiIGNvbXBsZXRpb24gaGFuZGxlciAtIGhhcmRpcnEgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc5NDpcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSAoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqKXVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5NS1cXHRpZiAodXJiLVxcdTAwM2VzdGF0dXMpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5Ni1cXHRcXHQvKiB3ZSBoYXZlIHRvIGxldCB0aGUgaW5pdGlhdG9yIGhhbmRsZSB0aGUgZXJyb3IgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc5NzpcXHR9IGVsc2UgaWYgKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoID09IDApIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc5OC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDEtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MDI6XFx0fSBlbHNlIGlmICghdnViMzAwLVxcdTAwM2VkYXRhKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDMtXFx0XFx0LyogdGhpcyBtZWFucyB0aGF0IHRoZSBjb21tYW5kICh0eXBpY2FsbHkgQ01ENTIpIHN1Y2NlZWRlZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODA0OlxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VyZXNwLmNvbW1vbi5oZWFkZXJfdHlwZSAhPSAweDAyKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MDUtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODA4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODA5OlxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2V1cmIpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgxMDpcXHRcXHR2dWIzMDAtXFx1MDAzZWNtZC1cXHUwMDNlZXJyb3IgPVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODExOlxcdFxcdFxcdHZ1YjMwMF9yZXNwb25zZV9lcnJvcih2dWIzMDAtXFx1MDAzZXJlc3AuZXJyb3IuZXJyb3JfY29kZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MTI6XFx0XFx0dXNiX3VubGlua191cmIodnViMzAwLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODEzLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MTQ6XFx0XFx0dnViMzAwLVxcdTAwM2VjbWQtXFx1MDAzZWVycm9yID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgxNTpcXHRcXHRcXHR2dWIzMDBfcmVzcG9uc2VfZXJyb3IodnViMzAwLVxcdTAwM2VyZXNwLmVycm9yLmVycm9yX2NvZGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE2OlxcdFxcdHVzYl9zZ19jYW5jZWwoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlc2dfcmVxdWVzdCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MTctXFx0fVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODE4OlxcdGNvbXBsZXRlKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNvbW1hbmRfY29tcGxldGUpO1xcdC8qIGdvdF9yZXNwb25zZV9pbiAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODE5LX1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9ODIxPXN0YXRpYyB2b2lkIGNvbW1hbmRfb3V0X2NvbXBsZXRlZChzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjIte1xcdFxcdFxcdFxcdC8qIHVyYiBjb21wbGV0aW9uIGhhbmRsZXIgLSBoYXJkaXJxICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MjM6XFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0gKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKil1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjQtXFx0aWYgKHVyYi1cXHUwMDNlc3RhdHVzKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MjU6XFx0XFx0Y29tcGxldGUoXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY29tbWFuZF9jb21wbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04MjYtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODI4LVxcdFxcdHVuc2lnbmVkIGludCBwaXBlID1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgyOTpcXHRcXHRcXHR1c2JfcmN2YnVsa3BpcGUodnViMzAwLVxcdTAwM2V1ZGV2LCB2dWIzMDAtXFx1MDAzZWNtbmRfcmVzX2VwKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjgzMDpcXHRcXHR1c2JfZmlsbF9idWxrX3VyYih2dWIzMDAtXFx1MDAzZWNvbW1hbmRfcmVzX3VyYiwgdnViMzAwLVxcdTAwM2V1ZGV2LCBwaXBlLFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODMxOlxcdFxcdFxcdFxcdCAgXFx1MDAyNnZ1YjMwMC1cXHUwMDNlcmVzcCwgc2l6ZW9mKHZ1YjMwMC1cXHUwMDNlcmVzcCksXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MzI6XFx0XFx0XFx0XFx0ICBjb21tYW5kX3Jlc19jb21wbGV0ZWQsIHZ1YjMwMCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4MzM6XFx0XFx0dnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggPSAwO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODM0OlxcdFxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTgzNS1cXHRcXHRpZiAocmV0ID09IDApIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODQ0LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODQ1OlxcdFxcdFxcdGNvbXBsZXRlKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNvbW1hbmRfY29tcGxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODQ2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODUyLSAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODUzOnN0YXRpYyB2b2lkIHNub29wX2Jsb2NrX3NpemVfYW5kX2J1c193aWR0aChzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NTQtXFx0XFx0XFx0XFx0XFx0ICAgdTMyIGNtZF9hcmcpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg1Ni1cXHRpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDIyMjAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODU3OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzFdID0gKGNtZF9hcmcgXFx1MDAzY1xcdTAwM2MgOCkgfCAoMHgwMEZGIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbMV0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODU4LVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDAyMjAwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg1OTpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1sxXSA9ICgweEZGIFxcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbMV0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODYwLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA0MjIwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg2MTpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1syXSA9IChjbWRfYXJnIFxcdTAwM2NcXHUwMDNjIDgpIHwgKDB4MDBGRiBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzJdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2Mi1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwNDIwMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NjM6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbMl0gPSAoMHhGRiBcXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzJdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg2NC1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwNjIyMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NjU6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbM10gPSAoY21kX2FyZyBcXHUwMDNjXFx1MDAzYyA4KSB8ICgweDAwRkYgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1szXSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjYtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDYyMDAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODY3OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzNdID0gKDB4RkYgXFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1szXSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NjgtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDgyMjAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODY5OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzRdID0gKGNtZF9hcmcgXFx1MDAzY1xcdTAwM2MgOCkgfCAoMHgwMEZGIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbNF0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODcwLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDA4MjAwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3MTpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1s0XSA9ICgweEZGIFxcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbNF0pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODcyLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBBMjIwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg3MzpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1s1XSA9IChjbWRfYXJnIFxcdTAwM2NcXHUwMDNjIDgpIHwgKDB4MDBGRiBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzVdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg3NC1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwQTIwMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4NzU6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbNV0gPSAoMHhGRiBcXHUwMDI2IGNtZF9hcmcpIHwgKDB4RkYwMCBcXHUwMDI2IHZ1YjMwMC1cXHUwMDNlZmJzWzVdKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg3Ni1cXHRlbHNlIGlmICgoMHhGQkZGRkUwMCBcXHUwMDI2IGNtZF9hcmcpID09IDB4ODAwQzIyMDApXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4Nzc6XFx0XFx0dnViMzAwLVxcdTAwM2VmYnNbNl0gPSAoY21kX2FyZyBcXHUwMDNjXFx1MDAzYyA4KSB8ICgweDAwRkYgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1s2XSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04NzgtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEMyMDAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODc5OlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzZdID0gKDB4RkYgXFx1MDAyNiBjbWRfYXJnKSB8ICgweEZGMDAgXFx1MDAyNiB2dWIzMDAtXFx1MDAzZWZic1s2XSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODAtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDAgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMEUyMjAwKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODgxOlxcdFxcdHZ1YjMwMC1cXHUwMDNlZmJzWzddID0gKGNtZF9hcmcgXFx1MDAzY1xcdTAwM2MgOCkgfCAoMHgwMEZGIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbN10pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODgyLVxcdGVsc2UgaWYgKCgweEZCRkZGRTAwIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDBFMjAwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4MzpcXHRcXHR2dWIzMDAtXFx1MDAzZWZic1s3XSA9ICgweEZGIFxcdTAwMjYgY21kX2FyZykgfCAoMHhGRjAwIFxcdTAwMjYgdnViMzAwLVxcdTAwM2VmYnNbN10pO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODg0LVxcdGVsc2UgaWYgKCgweEZCRkZGRTAzIFxcdTAwMjYgY21kX2FyZykgPT0gMHg4MDAwMEUwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjg4NTpcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODYtXFx0ZWxzZSBpZiAoKDB4RkJGRkZFMDMgXFx1MDAyNiBjbWRfYXJnKSA9PSAweDgwMDAwRTAyKVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODg3OlxcdFxcdHZ1YjMwMC1cXHUwMDNlYnVzX3dpZHRoID0gNDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg4OC19XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04ODktXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTA6c3RhdGljIHZvaWQgc2VuZF9jb21tYW5kKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5MS17XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTI6XFx0LyogY21kX211dGV4IGlzIGhlbGQgYnkgdnViMzAwX2NtbmR3b3JrX3RocmVhZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODkzOlxcdHN0cnVjdCBtbWNfY29tbWFuZCAqY21kID0gdnViMzAwLVxcdTAwM2VjbWQ7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo4OTQ6XFx0c3RydWN0IG1tY19kYXRhICpkYXRhID0gdnViMzAwLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtODk1LVxcdGludCByZXR2YWw7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTg5Ny1cXHR1OCByZXNwb25zZV90eXBlO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6ODk4OlxcdGlmICh2dWIzMDAtXFx1MDAzZWFwcF9zcGVjKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy04OTktXFx0XFx0c3dpdGNoIChjbWQtXFx1MDAzZW9wY29kZSkge1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDEtXFx0XFx0XFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwMjpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gNjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkwMy1cXHRcXHRcXHRpZiAoMHgwMDAwMDAwMCA9PSAoMHgwMDAwMDAwMyBcXHUwMDI2IGNtZC1cXHUwMDNlYXJnKSlcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwNDpcXHRcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDUtXFx0XFx0XFx0ZWxzZSBpZiAoMHgwMDAwMDAwMiA9PSAoMHgwMDAwMDAwMyBcXHUwMDI2IGNtZC1cXHUwMDNlYXJnKSlcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkwNjpcXHRcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZWJ1c193aWR0aCA9IDQ7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MDctXFx0XFx0XFx0ZWxzZVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTA4OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnZ1YjMwMC1cXHUwMDNldWRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTA5LVxcdFxcdFxcdFxcdFxcdFxcXCJ1bmV4cGVjdGVkIEFDTUQ2IGJ1c193aWR0aD0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTEzLVxcdFxcdFxcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MTQ6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VyZXNwX2xlbiA9IDY7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MTUtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkxNy1cXHRcXHRcXHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTE4OlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlcmVzcF9sZW4gPSA2O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTE5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjEtXFx0XFx0XFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkyMjpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gNjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkyMy1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTI1LVxcdFxcdFxcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzM7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5MjY6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VyZXNwX2xlbiA9IDY7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MjctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkyOS1cXHRcXHRcXHRyZXNwb25zZV90eXBlID0gU0RSVF8xO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6OTMwOlxcdFxcdFxcdHZ1YjMwMC1cXHUwMDNlcmVzcF9sZW4gPSA2O1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTMxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MzMtXFx0XFx0XFx0cmVzcG9uc2VfdHlwZSA9IFNEUlRfMTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjkzNDpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gNjtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTkzNS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtOTM3LVxcdFxcdFxcdHJlc3BvbnNlX3R5cGUgPSBTRFJUXzE7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo5Mzg6XFx0XFx0XFx0dnViMzAwLVxcdTAwM2VyZXNwX2xlbiA9IDY7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05MzktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy05NDAtXFx0XFx0ZGVmYXVsdDpcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjk0MTpcXHRcXHRcXHR2dWIzMDAtXFx1MDAzZXJlc3BfbGVuID0gMDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTk0Mi1cXHRcXHRcXHRjbWQtXFx1MDAzZWVycm9yID0gLUVJTlZBTDtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjk0MzpcXHRcXHRcXHRjb21wbGV0ZShcXHUwMDI2dnViMzAwLVxcdTAwM2Vjb21tYW5kX2NvbXBsZXRlKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MTMuNTUyMzU3MzE2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTg5ODE3ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gQ2FyZCBFbXVsYXRpb24gdmlhIFVTQiBhbmQgU3l6a2FsbGVyKipcblxuT2theSwgc28gYHZ1YjMwMGAgaXMgYSBVU0ItdG8tU0RJTyBicmlkZ2UsIGdvdCBpdC4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgc3l6a2FsbGVyLCB3aXRoIGl0cyBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgKGR1bW15X2hjZC92aGNpKSwgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlIHRoaXMhIExldCdzIHZlcmlmeSBpZiBgdnViMzAwYCBpcyBldmVuIGVuYWJsZWQgaW4gc3l6a2FsbGVyJ3Mga2VybmVsIGNvbmZpZy5cblxuSG1tLCB0aGUgcHJvbXB0IGlzIHRocm93aW5nIHVwIHNvbWUgcmVkIGZsYWdzLCB0YWxraW5nIGFib3V0IHNwZWNpZmljIFBDSWUgaGFyZHdhcmUgY2FyZHMgb3IgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEJ1dCBpZiBgdnViMzAwYCBpcyBtYW5hZ2VhYmxlIHZpYSBVU0IsIHdlICpzaG91bGQqIGJlIGFibGUgdG8gYXR0YWNoIGFuIFNESU8gZGV2aWNlLiBUaGlzIGRldmljZSBhY3RzIGFzIGFuIFNESU8gaG9zdCBjb250cm9sbGVyIHZpYSBVU0IsIHdoaWNoIG1lYW5zIHRoYXQgc3l6a2FsbGVyLCBhY3RpbmcgYXMgdGhlIFVTQiBkZXZpY2UsIGNhbiBpbmplY3QgU0RJTyBkZXZpY2VzLlxuXG5TbywgbGV0J3Mgc2VlIGlmIHN5emthbGxlciBhY3R1YWxseSAqdXNlcyogYHZ1YjMwMGAuIFJpZ2h0LCBzeXprYWxsZXIgZW11bGF0ZXMgdGhlIFVTQiBkZXZpY2UgKml0c2VsZiosIHNvIGl0IHdvdWxkIGJlIGVtdWxhdGluZyB0aGUgYHZ1YjMwMGAgZGV2aWNlLiBUaGUga2VybmVsIHRoZW4gbG9hZHMgdGhlIGB2dWIzMDBgIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGFuIE1NQyBob3N0LCBhbmQgc3l6a2FsbGVyIChhcyBgdnViMzAwYCkgY2FuIHRoZW4gZmVlZCBiYWNrIHJlc3BvbnNlcyB0byBNTUMgY29tbWFuZHMsIGVmZmVjdGl2ZWx5IGZha2luZyBhbiBTRElPIGNhcmQuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5UaGlua2luZyBmdXJ0aGVyLCBpZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYW4gU0RJTyBjYXJkIHRocm91Z2ggdGhlIGB2dWIzMDBgIHJvdXRlLCB0aGVuIHRoYXQgb3BlbnMgdGhlIGRvb3IgdG8gcHJvYmluZyBhIHNwZWNpZmljIFNESU8gZHJpdmVyLCBzdWNoIGFzIGBydGw4NzIzYnNgLiBUaGF0J3MgdGhlIGtleTogY2FuIHdlIGVtdWxhdGUgKnRoYXQqIHNwZWNpZmljIGNhcmQ/IFllcywgYnkgY2FyZWZ1bGx5IGNyYWZ0aW5nIHRoZSByZXNwb25zZXMgdG8gU0RJTyBlbnVtZXJhdGlvbiBjb21tYW5kcyAoQ01ENSwgQ01ENTMsIGV0Yy4pIHdpdGggdGhlIGNvcnJlY3QgdmVuZG9yIGFuZCBkZXZpY2UgSURzLlxuXG5CdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBkbyB0aGlzPyBUaGUgVVNCIGZ1enplciBpcyByYW5kb207IGl0IGdlbmVyYXRlcyByYW5kb20gVVNCIHJlc3BvbnNlcy4gSXQgKm1pZ2h0KiBzYXRpc2Z5IHRoZSBNTUMgZW51bWVyYXRpb24sIGJ1dCBpdCdzIHVubGlrZWx5IGZvciBhIGNvbXBsaWNhdGVkIHByb3RvY29sIGxpa2UgTU1DL1NESU8gYnkgYWNjaWRlbnQuIEkgcmVtZW1iZXIgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6X3VzYl9jb250cm9sX2lvYCBzeXNjYWxscywgYnV0IGRvIHdlIGhhdmUgU0RJTyBkZXNjcmlwdGlvbnM/IFRoYXQncyB0aGUgcXVlc3Rpb24uXG5cbkxldCdzIGNoZWNrIGlmIHRoZSBgcnRsODcyM2JzYCBpcyByZWFjaGFibGUsIHRob3VnaC4gUmlnaHQsIGl0J3MgYSBzdGFnaW5nIGRyaXZlci4gSXMgaXQgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IE1pZ2h0IGJlIG1vcmUgdHJvdWJsZSB0aGFuIGl0J3Mgd29ydGguIFRpbWUgdG8gY2hlY2sgdGhhdCBwYXRjaCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3OTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MjUuMTQyMTc5NzMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTk1MTExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oPTMyPXZvaWQgcnR3X2lwc19wd3JfZG93bihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmgtMzMtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaDozNDppbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oLTM1LXZvaWQgcnR3X25kZXZfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jPTcyMD11OCBydHdfZnJlZV9kcnZfc3coc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYy03NTQtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvb3NfaW50ZnMuYzo3NTU6c3RhdGljIGludCBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCBjaGFyICpuYW1lKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzU2LXtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzcyLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6NzczOmludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqaWYxKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzc0LXtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzc4LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmM6Nzc5OlxcdHJldHVybiBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYocGFkYXB0ZXIsIG5hbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL29zX2ludGZzLmMtNzgwLX1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTMzNz1zdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTM1My1cXHQvKiBkZXZfYWxsb2NfbmFtZSBcXHUwMDI2XFx1MDAyNiByZWdpc3Rlcl9uZXRkZXYgKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozNTQ6XFx0c3RhdHVzID0gcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoaWYxKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zNTUtXFx0aWYgKHN0YXR1cyAhPSBfU1VDQ0VTUylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjA6MjUuMjE4MTQxMTA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzQzNzYyNjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaDogUlRMODcyM0JTIGFuZCBTeXprYWxsZXIgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYFJUTDg3MjNCU2AsIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnNgIGRpcmVjdG9yeS4gIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZmlsZXM6IGBvc19pbnRmcy5jYCwgYHJ0d19jbWQuY2AsIGBydHdfcmVjdi5jYCwgYW5kIGBzZGlvX2ludGYuY2AuICBUaGUgbW9kaWZpY2F0aW9ucyB0byBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGluIGBvc19pbnRmcy5jYCBhcmUgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSByZW1vdmVkIHRoZSBjbGVhbnVwIGNvZGUgKGZyZWVpbmcgbmV0d29yayBkZXZpY2UgYW5kIGRyaXZlciBzcGVjaWZpYyBzdHJ1Y3R1cmVzKSBvbiBhIGByZWdpc3Rlcl9uZXRkZXZgIGZhaWx1cmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGZpeGluZyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSwgc2luY2UgdGhlIGZyZWUgZnVuY3Rpb25zIG1pZ2h0IGJlIGNhbGxlZCBlbHNld2hlcmUuICBHb29kIGNhdGNoLCB0aGF0J3MgYSBjbGFzc2ljIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0uXG5cblRoZW4gdGhlcmUgYXJlIHRoZXNlIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgdGhhdCB3ZXJlIGNoYW5nZWQgaW4gdGhlIGBjMmhfd2tfY2FsbGJhY2tgIGFuZCBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIGZ1bmN0aW9ucy4gIE51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBmaXhlcy4gQWdhaW4sIGdvb2QgY2F0Y2guIEZpbmFsbHksIGluIGBzZGlvX2ludGYuY2AsIHRoZXkndmUgcmVwbGFjZWQgYGtmcmVlKHBhZGFwdGVyLVx1MDAzZUhhbERhdGEpYCB3aXRoIGBydHdfaGFsX2RhdGFfZGVpbml0KHBhZGFwdGVyKWAuICBMb29rcyBsaWtlIGFub3RoZXIgbWVtb3J5IGxlYWsgb3IgcG90ZW50aWFsIGNvcnJ1cHRpb24gZml4LiBPdmVyYWxsLCB0aGVzZSBhcmUgYWxsIGZ1bmN0aW9uYWwgY2hhbmdlcyBhbmQgcG9pbnQgdG93YXJkcyBidWcgZml4ZXMgLSBjbGFzc2ljIHN0dWZmIHlvdSBleHBlY3QgdG8gc2VlLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGlzIGRyaXZlciwgYFJUTDg3MjNCU2AsIHdvcnRoIGZ1enppbmc/IENhbiBpdCBldmVuIGJlIHJlYWNoZWQgd2l0aCBhIHRvb2wgbGlrZSBzeXprYWxsZXI/ICBJJ20gdGhpbmtpbmcsIGlmIHN5emthbGxlciBjYW4gZW11bGF0ZSBTRElPIHZpYSBhIFVTQiBnYWRnZXQgbGlrZSBgdnViMzAwYCwgdGhlbiBwb3RlbnRpYWxseSwgeWVzLiBCdXQgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBlbXVsYXRlIFNESU8gdmlhIGB2dWIzMDBgPyAgSSBuZWVkIHRvIGNoZWNrIHN5emthbGxlcidzIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQsIG9yIGlmIGl0J3MgZ2VuZXJhbGx5IHBvc3NpYmxlIGF0IGFsbC5cblxuV2FpdCwgbG9va2luZyBhdCB0aGUgc3l6a2FsbGVyIHNldHVwLCBpdCBoYXMgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaS4gQnV0IHRoZSBgUlRMODcyM0JTYCBpcyBhIGZ1bGwgTUFDIGRyaXZlciwgbm90IG1hYzgwMjExIGJhc2VkLiAgSXQgdXNlcyBgY2ZnODAyMTFgIGJ1dCBpbXBsZW1lbnRzIGl0cyBvd24gTUFDLlxuXG5Ob3cgSSdtIHRoaW5raW5nLCBjYW4gdGhpcyBjb2RlIHBhdGggYmUgcmVhY2hlZD8gIFdhaXQgYSBtaW51dGUuLi4gaWYgdGhpcyBidWcgd2FzIGZvdW5kIGJ5IGBzeXotY2x1c3RlcmAgKGFzIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgKSwgaXQgbWVhbnMgc3l6a2FsbGVyICpkaWQqIHJlYWNoIGl0ISAgVGhlIGNvbW1pdCBtZXNzYWdlIHNheXM6IGBBdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCBhbmQgYHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld2AuICBUaGF0J3MgaXQuIFN5emthbGxlciBmb3VuZCBhIGNyYXNoLCBzbyB0aGUgcGF0Y2ggaXMgYmVpbmcgdGVzdGVkIGJ5IHRoZSBgc3l6LWNsdXN0ZXJgLiBUaGlzIG1lYW5zIGl0IE1VU1QgYmUgcmVhY2hhYmxlLlxuXG5CdXQgaG93IGRpZCBzeXprYWxsZXIgcmVhY2ggYW4gU0RJTyBkcml2ZXI/ICBJcyB0aGVyZSBhIHNvZnR3YXJlIFNESU8gaG9zdCBjb250cm9sbGVyIHRoYXQgc3l6a2FsbGVyIHVzZXMsIG9yIHNvbWUgb3RoZXIgd2F5IHRoaXMgaXMgYmVpbmcgdHJpZ2dlcmVkPyAgSSdkIG5lZWQgdG8gbG9vayBpbnRvIGhvdyBzeXprYWxsZXIgaXMgc2V0IHVwIHRvIGZpbmQgdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGl0IHVzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1Njg3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjM3LjU2MTkwODQwMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5Mjc4MDcyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjM3LjcwMTE5NDQ5M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTYwMDU0NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBcImR1bW15XCIqKlxuXG5SaWdodCwgc28gdGhlIHdvcmQgXCJkdW1teVwiIGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZC4gSW1tZWRpYXRlbHksIEknbSBhbHJlYWR5IHNpZnRpbmcgdGhyb3VnaCBpdHMgcG90ZW50aWFsIG1lYW5pbmdzIGluIHRoaXMgY29udGV4dC4gSXMgaXQgYmVpbmcgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIHZhcmlhYmxlPyBBIHRlc3QgY2FzZT8gUGVyaGFwcyBhIHdheSB0byBzaW1wbGlmeSBhbiBhcmd1bWVudCBvciBtb2RlbCBieSBpbnRlbnRpb25hbGx5IGlnbm9yaW5nIGNvbXBsZXhpdGllcz8gT3IgaXMgaXQgYmVpbmcgdXNlZCBkaXNwYXJhZ2luZ2x5LCBhcyBpbiwgYSBcImR1bW15IHZhcmlhYmxlP1wiIFRoZSBhbWJpZ3VpdHkgaGVyZSByZXF1aXJlcyBhIGJpdCBtb3JlIGluZm9ybWF0aW9uLiBXaGF04oCZcyB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gaW4gcXVlc3Rpb24/IEhvdyBjb21wbGV4IGlzIHRoZSBzeXN0ZW0gYmVpbmcgZGVzY3JpYmVkPyBXaGF0IGlzIHRoaXMgXCJkdW1teVwiIHN1cHBvc2VkIHRvICpkbyo/IFdpdGhvdXQgY29udGV4dCwgXCJkdW1teVwiIGNvdWxkIHJlcHJlc2VudCBhIGJyb2FkIHNwZWN0cnVtIG9mIHRoaW5ncy4gSXQncyBhIGxvYWRlZCB0ZXJtLCBpbmhlcmVudGx5IGNhcnJ5aW5nIHNvbWUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gb3Igc2ltcGxpZmljYXRpb24sIGJ1dCB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoYXQgYWJzdHJhY3Rpb24gaXMgd2hhdCdzIGNydWNpYWwuIEknbGwgbmVlZCBtb3JlIGRldGFpbCB0byBldmFsdWF0ZSBpdHMgZWZmZWN0aXZlbmVzcyBvciBhcHByb3ByaWF0ZW5lc3MuIFRoaXMgdGhvdWdodCBuZWVkcyB1bnBhY2tpbmcgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczMjYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjQxLjY2MTI1MzMxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU0NzE0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jPTMwPXN0YXRpYyBpbnQgc2Rpb19nZXRfcGVuZGluZ19pcnFzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTggKnBlbmRpbmcpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMtNDUtXFx0ICAgICEoaG9zdC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jOjQ2OlxcdFxcdHVuc2lnbmVkIGNoYXIgZHVtbXk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jLTQ3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy00OC1cXHRcXHQvKiBBIGZha2UgaW50ZXJydXB0IGNvdWxkIGJlIGNyZWF0ZWQgd2hlbiB3ZSBwb2xsIFNESU9fQ0NDUl9JTlR4XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jOjQ5OlxcdFxcdCAqIHJlZ2lzdGVyIHdpdGggYSBNYXJ2ZWxsIFNEODc5NyBjYXJkLiBBIGR1bW15IENNRDUyIHJlYWQgdG9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMtNTAtXFx0XFx0ICogZnVuY3Rpb24gMCByZWdpc3RlciAweGZmIGNhbiBhdm9pZCB0aGlzLlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy01MS1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmM6NTI6XFx0XFx0bW1jX2lvX3J3X2RpcmVjdChjYXJkLCAwLCAwLCAweGZmLCAwLCBcXHUwMDI2ZHVtbXkpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYy01My1cXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jPTU3PXN0YXRpYyBpbnQgdGh1bmRlcl9tbWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jLTEzNC1cXHRcXHQgKiBtbWNfb2ZfcGFyc2UgYW5kIGRldm0qIHJlcXVpcmUgb25lIGRldmljZSBwZXIgc2xvdC5cXG5kcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jOjEzNTpcXHRcXHQgKiBDcmVhdGUgYSBkdW1teSBkZXZpY2UgcGVyIHNsb3QgYW5kIHNldCB0aGUgbm9kZSBwb2ludGVyIHRvXFxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYy0xMzYtXFx0XFx0ICogdGhlIHNsb3QuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdGhpcyBpcyB1c2luZ1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYz00NTA9c3RhdGljIHZvaWQgbGl0ZXhfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5jLTQ1NS1cXHQgKiBUaGUgU0Qgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBhdCBsZWFzdCA3NCBpZGxlIGNsb2NrcyBiZWZvcmUgQ01EMC5cXG5kcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5jOjQ1NjpcXHQgKiBUaGVzZSBkdW1teSBjeWNsZXMgaXMgZ2VuZXJhdGVkIGJ5IHdyaXRpbmcgTElURVhfUEhZX0lOSVRJQUxJWkUuXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTctXFx0ICovXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYz0yMDE9c3RhdGljIHZvaWQgbW1jX29tYXBfc2VsZWN0X3Nsb3Qoc3RydWN0IG1tY19vbWFwX3Nsb3QgKnNsb3QsIGludCBjbGFpbWVkKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMtMjM1LVxcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jOjIzNjpcXHRcXHQvKiBEb2luZyB0aGUgZHVtbXkgcmVhZCBoZXJlIHNlZW1zIHRvIHdvcmsgYXJvdW5kIHNvbWUgYnVnXFxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMtMjM3LVxcdFxcdCAqIGF0IGxlYXN0IGluIE9NQVAyNHh4IHNpbGljb24gd2hlcmUgdGhlIGNvbW1hbmQgd291bGQgbm90XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM9MjA4PXN0YXRpYyB2b2lkIHNkX3NlbmRfY21kX2dldF9yc3Aoc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jLTMwMS1cXHRcXHQgKiBUaGUgY29udHJvbGxlciBvZmZsb2FkcyB0aGUgbGFzdCBieXRlIHtDUkMtNywgZW5kIGJpdCAxJ2IxfVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYzozMDI6XFx0XFx0ICogb2YgcmVzcG9uc2UgdHlwZSBSMi4gQXNzaWduIGR1bW15IENSQywgMCwgYW5kIGVuZCBiaXQgdG8gdGhlXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jLTMwMy1cXHRcXHQgKiBieXRlKHB0clsxNl0sIGdvZXMgaW50byB0aGUgTFNCIG9mIHJlc3BbM10gbGF0ZXIpLlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jPTI4NT1zdGF0aWMgdm9pZCBzZF9zZW5kX2NtZF9nZXRfcnNwKHN0cnVjdCBydHN4X3VzYl9zZG1tYyAqaG9zdCxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYy00MjUtXFx0XFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSdiMX1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmM6NDI2OlxcdFxcdCAqIG9mIHJlc3BvbnNlIHR5cGUgUjIuIEFzc2lnbiBkdW1teSBDUkMsIDAsIGFuZCBlbmQgYml0IHRvIHRoZVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYy00MjctXFx0XFx0ICogYnl0ZShwdHJbMTZdLCBnb2VzIGludG8gdGhlIExTQiBvZiByZXNwWzNdIGxhdGVyKS5cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmMtMjE0LVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmM6MjE1Oi8qIHRoZSBjb250cm9sbGVyIGhhcyBkdW1teSBwYWQgZm9yIGNsb2NrIGxvb3BiYWNrICovXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2RoYy1pbXguYy0yMTYtI2RlZmluZSBFU0RIQ19GTEFHX0RVTU1ZX1BBRFxcdFxcdEJJVCgxOSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYz0xMDE9c3RhdGljIHUzMiBweGF2MV9pcnEoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHUzMiBpbnRtYXNrKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEwNi1cXHRpZiAocHhhdjJfaG9zdC1cXHUwMDNlc2Rpb19tcnEgXFx1MDAyNlxcdTAwMjYgKGludG1hc2sgXFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0spKSB7XFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEwNzpcXHRcXHQvKiBUaGUgZHVtbXkgQ01EMCBmb3IgdGhlIFNESU8gd29ya2Fyb3VuZCBqdXN0IGNvbXBsZXRlZCAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMDgtXFx0XFx0c2RoY2lfd3JpdGVsKGhvc3QsIGludG1hc2sgXFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0ssIFNESENJX0lOVF9TVEFUVVMpO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jPTEyMz1zdGF0aWMgdm9pZCBweGF2MV9yZXF1ZXN0X2RvbmUoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEzNi1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTM3OlxcdFxcdC8qIENsb2NrIGlzIG5vdyBzdG9wcGVkLCBzbyByZXN0YXJ0IGl0IGJ5IHNlbmRpbmcgYSBkdW1teSBDTUQwICovXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEzOC1cXHRcXHRweGF2Ml9ob3N0ID0gc2RoY2lfcGx0Zm1fcHJpdihzZGhjaV9wcml2KGhvc3QpKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xNDktXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjE1MDpcXHRcXHQvKiBEb24ndCBmaW5pc2ggdGhpcyByZXF1ZXN0IHVudGlsIHRoZSBkdW1teSBDTUQwIGZpbmlzaGVzICovXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTE1MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmM9NjUzPXN0YXRpYyBpbnQgc2RoY2lfcHJlX2RtYV90cmFuc2ZlcihzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02ODktXFx0XFx0XFx0XFx0XFx0ICAgbW1jX2dldF9kbWFfZGlyKGRhdGEpKTtcXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmM6NjkwOlxcdFxcdC8qIEp1c3QgYSBkdW1teSB2YWx1ZSAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYy02OTEtXFx0XFx0c2dfY291bnQgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDo0MS43NTI4MDYwMzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0OTkwMTczMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0RJTyBEZXZpY2UgSW5qZWN0aW9uIHZpYSBVU0IgRW11bGF0aW9uOiBBIEZ1enppbmcgT3Bwb3J0dW5pdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHN0dW1ibGVkIHVwb24gc29tZXRoaW5nIGludGVyZXN0aW5nLiBJIG5vdGljZWQgdGhlIGB2dWIzMDBgLCBhIFVTQi10by1TRElPIGJyaWRnZS4gVGhlIHdoZWVscyBhcmUgdHVybmluZyDigJMgc3l6a2FsbGVyJ3MgZ290IGEgVVNCIGZ1enplciwgc3BlY2lmaWNhbGx5IGBkdW1teV9oY2RgLiBJZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBlbXVsYXRlIGEgYHZ1YjMwMGAgb3ZlciBVU0IsIHdlIGNvdWxkIHBvdGVudGlhbGx5IGluamVjdCBTRElPIGRldmljZXMuXG5cbkkgZG9uJ3QgbmVlZCB0byBkaXZlIGludG8gc3l6a2FsbGVyJ3Mgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByaWdodCBub3cuIFdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaXMgd2hldGhlciB0aGlzIHBhdGggaXMgZXZlbiAqcG9zc2libGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENvbnNpZGVyaW5nIFFFTVUncyBVU0Igc3VwcG9ydCwgYW5kIHRoYXQgc3l6a2FsbGVyIHVzZXMgdGhlIGBkdW1teV9oY2RgIHRvIGVtdWxhdGUgVVNCLCBpdCdzIHByZXR0eSBjbGVhcjogWWVzLCBpdCBpcyEgV2UgY2FuIGFic29sdXRlbHkgcmVhY2ggU0RJTyBkcml2ZXJzIGJ5IGZha2luZyBhIGB2dWIzMDBgIFVTQiBkZXZpY2Ugd2l0aCBhbiBTRElPIGNhcmQgYXR0YWNoZWQuXG5cbkkgYnJpZWZseSBjb25zaWRlcmVkIG90aGVyIHBvdGVudGlhbCByb3V0ZXMsIGxpa2UgYENPTkZJR19NTUNfVEVTVGAgb3IgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHF1aWNrbHkgZGlzbWlzc2VkIHRoZW07IHRoZXkncmUgbm90IHJlbGV2YW50LiBUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGUgVVNCIGNvbm5lY3Rpb24gYW5kIHRoZSBhYmlsaXR5IHRvIGVtdWxhdGUgYSBkZXZpY2UuXG5cbk5vdywgbGV0J3Mgem9vbSBpbi4gSXMgYFJUTDg3MjNCU2AgZW5hYmxlZD8gQ2hlY2tpbmcgYGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ2AgY29uZmlybXMgaXQgZGVwZW5kcyBvbiBgV0xBTiBcdTAwMjZcdTAwMjYgTU1DIFx1MDAyNlx1MDAyNiBDRkc4MDIxMWAuIElmIHdlIGVuYWJsZSBgQ09ORklHX1JUTDg3MjNCU2AsIHdlJ3JlIGdvb2QgdG8gZ28uXG5cbklzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkhIFRoaXMgaXMgYSBXaUZpIGRyaXZlci4gV2lGaSBkcml2ZXJzIGFyZSBub3RvcmlvdXMgZm9yIHBhcnNpbmcgY29tcGxleCBuZXR3b3JrIGZyYW1lcywgZXNwZWNpYWxseSBtYW5hZ2VtZW50IGZyYW1lcy4gQW5kIHRoZSBiZWF1dGlmdWwgdGhpbmcgaXMsIHdlIGNhbiBpbmplY3QgdGhlc2UgZnJhbWVzIGVpdGhlciB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAgb3IgdGhlIFNESU8gaW50ZXJmYWNlIGlmIHN5emthbGxlciBpcyBmdXp6aW5nIFNESU8gcmVzcG9uc2VzLlxuXG5UaGUgY2xpbmNoZXI/IFN5emthbGxlciBhbHJlYWR5IGZvdW5kIGEgYnVnIGhlcmUuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3IgdGhhdCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIGZ1enppbmcgaXMgd29ydGggaXQuIEknbSBzZWVpbmcgZnVuY3Rpb25hbCBidWdzLCBzcGVjaWZpY2FsbHkgZG91YmxlIGZyZWVzIGFuZCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBmcm9tIHRoZSBwYXRjaCB0aGF0IGZpeGVzIHRoZSBidWcuIFRoaXMgaXMgZ3JlYXQsIHNvIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIHRhcmdldCBkdXJpbmcgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgaWRlbnRpZmllZCBhcmU6XG4tICAgYGMyaF93a19jYWxsYmFja2AgaW4gYHJ0d19jbWQuY2Bcbi0gICBgcmVjdmZyYW1lX2Noa19kZWZyYWdgIGluIGBydHdfcmVjdi5jYFxuLSAgIGBfcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGluIGBvc19pbnRmcy5jYFxuLSAgIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaW4gYG9zX2ludGZzLmNgXG4tICAgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgXG4tICAgYHJ0d19kcnZfaW5pdGAgaW4gYHNkaW9faW50Zi5jYFxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM1MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMDo1NC4yNTE4MjcyNzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTczMTY0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfZHJ2X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MjU9TU9EVUxFX0RFVklDRV9UQUJMRShzZGlvLCBzZGlvX2lkcyk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjYtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6Mjc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZCk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjgtc3RhdGljIHZvaWQgcnR3X2Rldl9yZW1vdmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyk7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zNz1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIHJ0bDg3MjNic19zZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozODpcXHQucHJvYmUgPSBydHdfZHJ2X2luaXQsXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzktXFx0LnJlbW92ZSA9IHJ0d19kZXZfcmVtb3ZlLFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MzA4PXN0YXRpYyB2b2lkIHJ0d19zZGlvX2lmMV9kZWluaXQoc3RydWN0IGFkYXB0ZXIgKmlmMSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTMzNi0gKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzozMzc6c3RhdGljIGludCBydHdfZHJ2X2luaXQoXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzM4LVxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIwOjU0LjYwNzU2Nzk4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTcyODY1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0RJTyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFNESU8gZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBgcnR3X2Rydl9pbml0YCBpcyB0aGUga2V5IHByb2JlIGZ1bmN0aW9uIGhlcmUuIFRoYXQncyB3aGVyZSBpdCBhbGwgYmVnaW5zLCB0aGUgcG9pbnQgd2hlcmUgdGhlIGhhcmR3YXJlIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBkcml2ZXIga2lja3MgaW50byBnZWFyLiBJdCBtYWtlcyBzZW5zZSwgb2YgY291cnNlOyB0aGF0J3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50IGZvciBhbiBTRElPIGRyaXZlci4gQW5kIHRoZW4sIGR1cmluZyB0aGF0IHByb2JlLCBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGlzIGNhbGxlZC4gU28sIHRoZSBuZXR3b3JrIGRldmljZSBpcyBiZWluZyByZWdpc3RlcmVkIGFzIHBhcnQgb2YgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS5cblxuSSdtIGFsc28gc2VlaW5nIHJlZmVyZW5jZXMgdG8gYGMyaF93a19jYWxsYmFja2AsIHdoaWNoIEknbSBpbmZlcnJpbmcgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2sgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcsIGl0J3MgbGlrZWx5IGludm9sdmVkIGluIGNvbW11bmljYXRpbmcgY29tbWFuZC9kYXRhIGZyb20gdGhlIGhvc3QgdG8gdGhlIGNhcmQsIGJ1dCBpdCBiZWFycyBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIgdG8gYmUgc3VyZS5cblxuTGFzdGx5LCBhbmQgdGhpcyBpcyB3aGF0J3MgY2F1Z2h0IG15IGltbWVkaWF0ZSBhdHRlbnRpb24sIHRoZXJlJ3MgYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYC4gVGhpcyBpcyBhIHByZXR0eSBjcml0aWNhbCBmdW5jdGlvbiBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgZnJhZ21lbnRhdGlvbiBoYW5kbGluZyBoYXBwZW5zLCBzbyBub3cgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgY2FsbGVycyBmb3IgYHJlY3ZmcmFtZV9jaGtfZGVmcmFnYCB0byBzZWUgd2hlcmUgaW4gdGhlIHBhY2tldCByZWNlcHRpb24gcHJvY2VzcyBpdCdzIGJlaW5nIGludm9rZWQuIFRoYXQgZ2l2ZXMgYSBzb2xpZCBzZW5zZSBvZiB0aGUgd2hvbGUgcGljdHVyZSBhbmQgYWxsb3dzIGZvciBhIG1vcmUgZm9jdXNlZCByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTY3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MDAuMTgwNDM5MDE4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzM3MDg3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWN2ZnJhbWVfY2hrX2RlZnJhZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYz0xOTQ9c2lnbmVkIGludCBydHdfZW5xdWV1ZV9yZWN2ZnJhbWUodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSwgc3RydWN0IF9fcXVldWUgKnF1ZXVlKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA3LS8qXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjA4OiAqIGNhbGxlciA6IGRlZnJhZyA7IHJlY3ZmcmFtZV9jaGtfZGVmcmFnIGluIHJlY3ZfdGhyZWFkICAocGFzc2l2ZSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDktICogcGZyYW1lcXVldWU6IGRlZnJhZ19xdWV1ZSA6IHdpbGwgYmUgYWNjZXNzZWQgaW4gcmVjdl90aHJlYWQgIChwYXNzaXZlKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MTA0ND1zdGF0aWMgdW5pb24gcmVjdl9mcmFtZSAqcmVjdmZyYW1lX2RlZnJhZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTExMTktLyogY2hlY2sgaWYgbmVlZCB0byBkZWZyYWcsIGlmIG5lZWRlZCBxdWV1ZSB0aGUgZnJhbWUgdG8gZGVmcmFnX3EgKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoxMTIwOnN0YXRpYyB1bmlvbiByZWN2X2ZyYW1lICpyZWN2ZnJhbWVfY2hrX2RlZnJhZyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2X2ZyYW1lKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTExMjEte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MTIxOT1zdGF0aWMgc2lnbmVkIGludCB2YWxpZGF0ZV9yZWN2X21nbnRfZnJhbWUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmVjdl9mcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTEyMjItXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MTIyMzpcXHRwcmVjdl9mcmFtZSA9IHJlY3ZmcmFtZV9jaGtfZGVmcmFnKHBhZGFwdGVyLCBwcmVjdl9mcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMTIyNC1cXHRpZiAoIXByZWN2X2ZyYW1lKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjA3OT1zdGF0aWMgaW50IHJlY3ZfZnVuY19wb3N0aGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcHJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTEtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjA5MjpcXHRwcmZyYW1lID0gcmVjdmZyYW1lX2Noa19kZWZyYWcocGFkYXB0ZXIsIHByZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwOTMtXFx0aWYgKCFwcmZyYW1lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTowMC4yNjc4MTY1MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxMTUyODc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIHByb3RvY29sIGhhbmRsaW5nLCBhbmQgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBmcmFnbWVudGF0aW9uIGFuZCByZWFzc2VtYmx5OlxuXG4qKkFuYWx5emluZyB0aGUgUmVjZWl2ZXIgUGF0aCBhbmQgRGVmcmFtZW50YXRpb24gTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBgcmVjdl9mdW5jX3Bvc3RoYW5kbGVgIGFuZCBgdmFsaWRhdGVfcmVjdl9tZ250X2ZyYW1lYCBib3RoIGxlYWQgaW50byBgcmVjdmZyYW1lX2Noa19kZWZyYWdgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBub3QgdW5leHBlY3RlZCDigJMgYW55IHJlY2VpdmVyIGZ1bmN0aW9uIGxpa2VseSBuZWVkcyB0byBkZWFsIHdpdGggZGVmcmFnbWVudGF0aW9uLiBCdXQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250cm9sIGZsb3cuIExldCdzIHNlZSB3aG8ncyAqYWN0dWFsbHkqIGNhbGxpbmcgYHJlY3ZfZnVuY19wb3N0aGFuZGxlYC4gSXMgdGhpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgb3IgaXMgaXQgZ2V0dGluZyBjYWxsZWQgYnkgc29tZXRoaW5nIGRlZXBlcj8gQXJlIHRoZXJlIG11bHRpcGxlIHBhdGhzIHRoYXQgbGVhZCB0byB0aGUgZGVmcmFnbWVudGF0aW9uIGxvZ2ljPyBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgY2xhcmlmeSB0aGUgb3ZlcmFsbCByZWNlaXZlIHByb2Nlc3MuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgSSBtYWtlIHRvIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgLSBJIGRvbid0IHdhbnQgdG8gYnJlYWsgYW55dGhpbmcgZWxzZSEgR290dGEgbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjI0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjA0LjQ3OTM1MTI5NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4NzE5NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlY3ZfZnVuY19wb3N0aGFuZGxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIwNjM9c3RhdGljIGludCByZWN2X2Z1bmNfcHJlaGFuZGxlKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcmZyYW1lKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA3OC1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMDc5OnN0YXRpYyBpbnQgcmVjdl9mdW5jX3Bvc3RoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpwcmZyYW1lKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwODAte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxMjctXFx0XFx0d2hpbGUgKChwZW5kaW5nX2ZyYW1lID0gcnR3X2FsbG9jX3JlY3ZmcmFtZShcXHUwMDI2cGFkYXB0ZXItXFx1MDAzZXJlY3Zwcml2LnVjX3N3ZGVjX3BlbmRpbmdfcXVldWUpKSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTI4OlxcdFxcdFxcdHJlY3ZfZnVuY19wb3N0aGFuZGxlKHBhZGFwdGVyLCBwZW5kaW5nX2ZyYW1lKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI5LVxcdH1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTItZG9fcG9zdGhhbmRsZTpcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlxcdFxcdHJldCA9IHJlY3ZfZnVuY19wb3N0aGFuZGxlKHBhZGFwdGVyLCByZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTowNC43OTgwNzg5ODZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzODEyODA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ29yZSBSZWNlaXZlIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHJlY3ZfZnVuY2AgaXMgdGhlIGhlYXJ0IG9mIG91ciByZWNlaXZlIGxvZ2ljLiBUaGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgZW50cnkgZm9yIGluY29taW5nIGRhdGEuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIGl0cyBpbm5lciB3b3JraW5ncywgSSBuZWVkIGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQncyAqZHJpdmluZyogaXQuIFdoZXJlIGFyZSB0aGUgc2lnbmFscyBjb21pbmcgZnJvbSB0aGF0IHRyaWdnZXIgYSBjYWxsIHRvIGByZWN2X2Z1bmNgPyBJIHNob3VsZCBzdGFydCBieSBtYXBwaW5nIG91dCBpdHMgY2FsbCBncmFwaCDigJMgdW5kZXJzdGFuZGluZyB3aG8ncyBjYWxsaW5nIGl0IGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBjb21wb25lbnQgaXMgYWN0dWFsbHkgdXNlZC4gTGV0J3Mgc3RhcnQgYnkgaWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgb2YgYHJlY3ZfZnVuY2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgc2Vuc2Ugb2YgdGhlIGlucHV0cyBhbmQgY29udGV4dHMgaXQgaGFuZGxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5ODMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTowOC42MzYyMTA4NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2NzY2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjdl9mdW5jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jPTIwMjc9c3RhdGljIGludCBwcm9jZXNzX3JlY3ZfaW5kaWNhdGVwa3RzKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdW5pb24gcmVjdl9mcmFtZSAqcHJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIwNjItXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjA2MzpzdGF0aWMgaW50IHJlY3ZfZnVuY19wcmVoYW5kbGUoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpyZnJhbWUpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA2NC17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMDc4LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIwNzk6c3RhdGljIGludCByZWN2X2Z1bmNfcG9zdGhhbmRsZShzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnByZnJhbWUpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjA4MC17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTE0LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jOjIxMTU6c3RhdGljIGludCByZWN2X2Z1bmMoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1bmlvbiByZWN2X2ZyYW1lICpyZnJhbWUpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjExNi17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTI3LVxcdFxcdHdoaWxlICgocGVuZGluZ19mcmFtZSA9IHJ0d19hbGxvY19yZWN2ZnJhbWUoXFx1MDAyNnBhZGFwdGVyLVxcdTAwM2VyZWN2cHJpdi51Y19zd2RlY19wZW5kaW5nX3F1ZXVlKSkpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjEyODpcXHRcXHRcXHRyZWN2X2Z1bmNfcG9zdGhhbmRsZShwYWRhcHRlciwgcGVuZGluZ19mcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEyOS1cXHR9XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMC1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTMxOlxcdHJldCA9IHJlY3ZfZnVuY19wcmVoYW5kbGUocGFkYXB0ZXIsIHJmcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmMtMjEzMi1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTItZG9fcG9zdGhhbmRsZTpcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYzoyMTUzOlxcdFxcdHJldCA9IHJlY3ZfZnVuY19wb3N0aGFuZGxlKHBhZGFwdGVyLCByZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTQtXFx0fVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjE2MD1zMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNjktXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE3MDpcXHRyZXQgPSByZWN2X2Z1bmMocGFkYXB0ZXIsIHByZWN2ZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNzEtXFx0aWYgKHJldCA9PSBfRkFJTClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MDguNzE0ODk5ODc1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5Njk3NzczMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgYHJ0d19yZWN2X2VudHJ5YCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBydHdfcmVjdl9lbnRyeWAgaXMgb3VyIGVudHJ5IHBvaW50LiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byBkZXRlcm1pbmUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBydHdfcmVjdl9lbnRyeWAuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGNvbnRleHQgYW5kIGhpZ2hsaWdodCB0aGUgcGFydHMgb2YgdGhlIHN5c3RlbSB0aGF0IGFyZSByZWx5aW5nIG9uIHRoaXMgZnVuY3Rpb24uIFRoaXMgd2lsbCBoZWxwIGZyYW1lIGl0cyBmdW5jdGlvbiBpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIFRpbWUgdG8gdHJhY2UgdGhvc2UgY2FsbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDI4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MTIuNjg0NjgyNzcxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI0NjYzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X3JlY3ZfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTktXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE2MDpzMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTYxLXtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaGFsL3J0bDg3MjNic19yZWN2LmM9MjE2PXN0YXRpYyB2b2lkIHJ0bDg3MjNic19yZWN2X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYy0zMjYtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYzozMjc6XFx0XFx0XFx0XFx0XFx0cnR3X3JlY3ZfZW50cnkocHJlY3ZmcmFtZSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvcnRsODcyM2JzX3JlY3YuYy0zMjgtXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChwYXR0cmliLVxcdTAwM2Vwa3RfcnB0X3R5cGUgPT0gQzJIX1BBQ0tFVCkge1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2Lmg9MTU1PXN0cnVjdCByZWN2X3N0YXQge1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2LmgtMTY2LS8qXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2Lmg6MTY3OmFjY2Vzc2VyIG9mIHJlY3ZfcHJpdjogcnR3X3JlY3ZfZW50cnkoZGlzcGF0Y2ggLyBwYXNzaXZlIGxldmVsKTsgcmVjdl90aHJlYWQocGFzc2l2ZSkgOyByZXR1cm5wa3QoZGlzcGF0Y2gpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2LmgtMTY4LTsgaGFsdChwYXNzaXZlKSA7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X3JlY3YuaD0zNDY9dm9pZCBfcnR3X2ZyZWVfcmVjdl9wcml2KHN0cnVjdCByZWN2X3ByaXYgKnByZWN2cHJpdik7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3J0d19yZWN2Lmg6MzQ3OnMzMiAgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZfZnJhbWUpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oLTM0OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MTIuODA3MTU1OTA0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNzIyMDE1MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgUmVjZWl2ZSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHJlY2VpdmVkIHBhY2tldHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBkcml2ZXIuIEl0IGxvb2tzIGxpa2UgYHJ0bDg3MjNic19yZWN2X3Rhc2tsZXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgd2hpY2ggdGhlbiBjYWxscyBgcnR3X3JlY3ZfZW50cnlgLiBTaW5jZSB0aGlzIGBydGw4NzIzYnNfcmVjdl90YXNrbGV0YCBpcyBoYXJkd2FyZS1zcGVjaWZpYywgaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgb24gdGhlIG1vcmUgZ2VuZXJpYyBmdW5jdGlvbiwgYHJ0d19yZWN2X2VudHJ5YCwgZm9yIGZ1enppbmcuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gdG8gdGFyZ2V0LiBJdCBzaG91bGQgYmUgZWFzaWVyIHRvIGNvbnN0cnVjdCBhbmQgaW5qZWN0IHZhcmlvdXMgaW5wdXRzIGF0IHRoYXQgcG9pbnQuXG5cbkJ1dCB0aGVuLCBJIGFsc28gc2VlIHRoaXMgYGMyaF93a19jYWxsYmFja2AgZnVuY3Rpb24uIEkgc2hvdWxkIGNoZWNrIHdobyBjYWxscyAqaXQqIGp1c3QgdG8gZ2V0IGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWNlaXZlIHBhdGguIEdvdHRhIGludmVzdGlnYXRlIHRob3NlIGNhbGxlcnMgdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXQsIG9yIHNvbWV0aGluZyB0aGF0IGludGVyYWN0cyB3aXRoIGBydHdfcmVjdl9lbnRyeWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0ODMzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjE4LjA3OTM2MzA2M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwODQyNDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImMyaF93a19jYWxsYmFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jPTE2Mz1pbnQgcnR3X2luaXRfY21kX3ByaXYoc3RydWN0XFx0Y21kX3ByaXYgKnBjbWRwcml2KVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0xOTgtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYzoxOTk6c3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0yMDAtaW50IHJ0d19pbml0X2V2dF9wcml2KHN0cnVjdCBldnRfcHJpdiAqcGV2dHByaXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTIwNS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjIwNjpcXHRfaW5pdF93b3JraXRlbShcXHUwMDI2cGV2dHByaXYtXFx1MDAzZWMyaF93aywgYzJoX3drX2NhbGxiYWNrLCBOVUxMKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTIwNy1cXHRwZXZ0cHJpdi1cXHUwMDNlYzJoX3drX2FsaXZlID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jPTE2NjM9dTggcnR3X2MyaF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqYzJoX2V2dClcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY5Ni1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE2OTc6c3RhdGljIHZvaWQgYzJoX3drX2NhbGxiYWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2OTgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMToxOC4yMDAyMTMzMzVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk4NzAyNzQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgV29yayBRdWV1ZSoqXG5cblJpZ2h0LCBgcnR3X2MyaF93a19jbWRgIGlzIHRoZSBrZXkgdG8gc2NoZWR1bGluZyB0aGlzIHRhc2suIEl0J3MgdGhlIHF1ZXVlIGl0c2VsZi4gU28sIHRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBjb21tYW5kLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlICp3aG8qIGlzIGNhbGxpbmcgYHJ0d19jMmhfd2tfY21kYC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBpcy4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgdG8gd2hlcmUgdGhlIGRhdGEgaXMgY29taW5nIGZyb20gdG8gYmUgcHV0IGludG8gdGhlIHF1ZXVlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHVwc3RyZWFtIHNvdXJjZXMsIGFuZCB0aGUgaW50ZW5kZWQgcHVycG9zZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZsb3cuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjQ0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MjMuMTg3MjQ1MDIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM4NjExNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3X2MyaF93a19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjI4PXU4IHJ0d19jMmhfcGFja2V0X3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwYnVmLCB1MTYgbGVuZ3RoKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYy0xNjYyLS8qIG9yIGRlYWRsb2NrIHdpbGwgaGFwcGVuIGFuZCBjYXVzZSBzcGVjaWFsLXN5c3RlbXNlcnZlci1kaWVkIGluIGFuZHJvaWQgKi9cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jOjE2NjM6dTggcnR3X2MyaF93a19jbWQoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqYzJoX2V2dClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjQte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19jbWQuYz0xNjk3PXN0YXRpYyB2b2lkIGMyaF93a19jYWxsYmFjayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE3MzctXFx0XFx0XFx0LyogRW5xdWV1ZSBpbnRvIGNtZF90aHJlYWQgZm9yIG90aGVycyAqL1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM6MTczODpcXHRcXHRcXHRydHdfYzJoX3drX2NtZChhZGFwdGVyLCBjMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE3MzktXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYz03MDg9dm9pZCBzZF9pbnRfZHBjKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03NTgtXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jOjc1OTpcXHRcXHRcXHRcXHRcXHRydHdfYzJoX3drX2NtZChhZGFwdGVyLCAodTggKiljMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jLTc2MC1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oPTYxMT1leHRlcm4gdTggcnR3X2MyaF9wYWNrZXRfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKnBidWYsIHUxNiBsZW5ndGgpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oLTYxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MjMuMzAxMTExOTU1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTE3NjI0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS2V5IEZ1bmN0aW9ucyBmb3IgU0RJTyBEcml2ZXIgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBTRElPIGRyaXZlciBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGtleSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgdGhlIGNvcmUgaW50ZXJydXB0IGFuZCBpbml0aWFsaXphdGlvbiBwYXRocy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYHNkX2ludF9kcGNgIGNhbGxzIGBydHdfYzJoX3drX2NtZGAuIE5vdywgYHNkX2ludF9kcGNgIGlzIGNsZWFybHkgdGhlIFNESU8gaW50ZXJydXB0IERlZmVycmVkIFByb2NlZHVyZSBDYWxsLCBzbyB0aGF0J3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZvY3VzZWQgYW5hbHlzaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBjYWxsZXJzIG9mIGBydHdfZHJ2X2luaXRgLiBUaGF0J3MgdGhlIHByb2JlIGZ1bmN0aW9uOyBzbyBpdCdzIGNyaXRpY2FsIGZvciBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIEFscmlnaHQsIGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBmb2N1cyBzeW1ib2wgdG9vLlxuXG5Ob3cgSSdsbCBjaGVjayBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGNhbGxlcnMuIEFoLCBpdCdzIGNhbGxlZCBieSBgcnR3X2Rydl9pbml0YCwgdGhhdCBtYWtlcyBzZW5zZS5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBjb3JlIGZvY3VzIHN5bWJvbHMgSSdtIGdvaW5nIHRvIGZvbGxvdyBhcmU6XG4qICAgYHJ0d19yZWN2X2VudHJ5YFxuKiAgIGBzZF9pbnRfZHBjYFxuKiAgIGBydHdfZHJ2X2luaXRgXG5cbldhaXQsIGxldCdzIHZlcmlmeSB3aGVyZSBgc2RfaW50X2RwY2AgZXhpc3RzLCBvaCB5ZWFoLCBpdCdzIGluIGBoYWwvc2Rpb19vcHMuY2AuIE9rYXksIGJlZm9yZSBJIGRpZyBmdXJ0aGVyLCBsZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUuIEp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1MjMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MjguNzEyODc2OTA2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDg2NTY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIHNkX2ludF9kcGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYz02OTM9c3RhdGljIHZvaWQgc2RfcnhoYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgcmVjdl9idWYgKnJlY3ZidWYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jLTcwNy1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2hhbC9zZGlvX29wcy5jOjcwODp2b2lkIHNkX2ludF9kcGMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9oYWwvc2Rpb19vcHMuYy03MDkte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3NkaW9faGFsLmg9MTA9dTggc2RfaW50X2lzcihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9zZGlvX2hhbC5oOjExOnZvaWQgc2RfaW50X2RwYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9zZGlvX2hhbC5oLTEyLXZvaWQgcnR3X3NldF9oYWxfb3BzKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjI4LjgwNzc0ODcyWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTU4MDE3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIEZ1bmN0aW9uIEF0dHJpYnV0ZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gc28gd2UndmUgZ290IGBzZF9pbnRfZHBjYC4uLiB5dXAsIHRoYXQncyBkZWZpbml0ZWx5IGEgbm9uLXN0YXRpYyBmdW5jdGlvbi4gTm8gaGlkZGVuIHN0YXRpYyBzY29waW5nIHRoZXJlLiBUaGF04oCZcyBnb29kIHRvIGNvbmZpcm0sIG1vdmVzIHVzIG9uLlxuXG5Ob3csIHdoYXQgYWJvdXQgYHJ0d19yZWN2X2VudHJ5YD8gTmVlZCB0byBjaGVjayB0aGF0IG5leHQgdG8gZW5zdXJlIHdlIGFyZSBjb3ZlcmluZyBvdXIgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MzI5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MzIuNTYzNTUzODM5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzQ4MTI2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzMzIgcnR3X3JlY3ZfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM9MjExNT1zdGF0aWMgaW50IHJlY3ZfZnVuYyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuaW9uIHJlY3ZfZnJhbWUgKnJmcmFtZSlcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcmVjdi5jLTIxNTktXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19yZWN2LmM6MjE2MDpzMzIgcnR3X3JlY3ZfZW50cnkodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3JlY3YuYy0yMTYxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MzIuNjIxMDM5OTU2WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTM2MjY3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTm9uLVN0YXRpYyBGdW5jdGlvbiBEZWNsYXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBoZXJlIGlzIHRoYXQgYHJ0d19yZWN2X2VudHJ5YCAqaXMqIG5vbi1zdGF0aWMuIEdvdCBpdC4gVGhhdCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzIOKAkyBpdCdzIGxpa2VseSBtZWFudCB0byBiZSBleHRlcm5hbGx5IGNhbGxhYmxlLCBwZXJoYXBzIHBhcnQgb2Ygc29tZSBBUEkgb3IgaW50ZXJmYWNlLiBJdOKAmXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIHRyYWNpbmcgdGhlIGRhdGEgZmxvdy5cblxuTm93LCB3aGF0IGFib3V0IGBydHdfZHJ2X2luaXRgPyBJJ20gY3VyaW91cyBpZiBpdCdzIGFsc28gbm9uLXN0YXRpYy4gVGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUncyBzY29wZSBjb3VsZCBzaWduaWZpY2FudGx5IGltcGFjdCBob3cgdGhlIHN5c3RlbSBhcyBhIHdob2xlIGJlaGF2ZXMsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIGFjY2Vzc2liaWxpdHkgaXMgY3JpdGljYWwgaW4gaWRlbnRpZnlpbmcgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIElzIGl0IGRlY2xhcmVkIGluIGEgaGVhZGVyPyBJZiBzbywgaXMgaXQgdXNlZCBpbiBvdGhlciBtb2R1bGVzPyBEb2VzIGl0IHRha2UgcGFyYW1ldGVycyBmcm9tIG90aGVyIG1vZHVsZXM/IEl0IGlzIG15IGpvYiB0byBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc2NjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTozNi44NzQ2NzExNDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0Nzg2NzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0d19kcnZfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0yNT1NT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIHNkaW9faWRzKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yNi1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzoyNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yOC1zdGF0aWMgdm9pZCBydHdfZGV2X3JlbW92ZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKTtcXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTM3PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgcnRsODcyM2JzX3NkaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjM4OlxcdC5wcm9iZSA9IHJ0d19kcnZfaW5pdCxcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zOS1cXHQucmVtb3ZlID0gcnR3X2Rldl9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz0zMDg9c3RhdGljIHZvaWQgcnR3X3NkaW9faWYxX2RlaW5pdChzdHJ1Y3QgYWRhcHRlciAqaWYxKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzM2LSAqL1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjMzNzpzdGF0aWMgaW50IHJ0d19kcnZfaW5pdChcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0zMzgtXFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6MzYuOTM5NDY3NjYyWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjMwMzQzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIGBydHdfZHJ2X2luaXRgIEZ1bmN0aW9uKipcblxuTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhhdCBgcnR3X2Rydl9pbml0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZSwgZnJvbSBhIG1vZHVsYXJpdHkgYW5kIHRlc3RhYmlsaXR5IHN0YW5kcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlcmUncyBhIG5vbi1zdGF0aWMgd3JhcHBlciBmdW5jdGlvbiwgYSBzb3J0IG9mIGZhY2FkZSwgdGhhdCBjYWxscyBpdC4gVGhpcyB3b3VsZCBhbGxvdyBleHRlcm5hbCBpbnRlcmFjdGlvbiB3aXRob3V0IGRpcmVjdGx5IGV4cG9zaW5nIHRoZSBzdGF0aWMgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiB0aGVyZSBpc24ndCBhIHdyYXBwZXIuIEl0IGxvb2tzIGxpa2UgYHJ0d19kcnZfaW5pdGAgaXMsIGluIGZhY3QsIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEdpdmVuIHRoYXQgaXQncyBzdGF0aWMsIGFuZCB0aGVyZWZvcmUgaW50ZXJuYWwgdG8gdGhpcyBjb21waWxhdGlvbiB1bml0LCBpdCBzZWVtcyB0aGUgYmVzdCB3YXkgdG8gaGFuZGxlIHRoaXMsIHRvIHJlZ2lzdGVyIHRoZSBuZXR3b3JrIGRldmljZSwgaXMgdG8gdXNlIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgd2hpY2ggKmlzKiBub24tc3RhdGljIGFuZCBpcywgaW4gZmFjdCwgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBUaGF0J3MgdGhlIGNvcnJlY3QgcGF0aCB0byBnbyBkb3duLiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgbmVlZCB0byBkaXJlY3RseSBjYWxsIGEgc3RhdGljIGludGVybmFsIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM3NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjQxLjgwMjUwNDE5NVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NjczNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oPTMyPXZvaWQgcnR3X2lwc19wd3JfZG93bihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9pbnRmLmgtMzMtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX2ludGYuaDozNDppbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvb3NkZXBfaW50Zi5oLTM1LXZvaWQgcnR3X25kZXZfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jPTc1NT1zdGF0aWMgaW50IF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3Mi1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jOjc3MzppbnQgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXYoc3RydWN0IGFkYXB0ZXIgKmlmMSlcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9vc19pbnRmcy5jLTc3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjQxLjkwOTE4NTAwOVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQzMTAyNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCB0aGUgdXNlciBpcyBhIGtub3dsZWRnZWFibGUgY29sbGVhZ3VlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRHJpdmVyIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gKnJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2KiBpcyBpbmRlZWQgZGVjbGFyZWQgYXMgbm9uLXN0YXRpYy4gTm8gc3VycHJpc2VzIHRoZXJlLCB0aGF0J3Mgd2hhdCBJIHdvdWxkIGV4cGVjdCBmb3IgYSBmdW5jdGlvbiBkZXNpZ25lZCBmb3IgdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdWJzeXN0ZW0gdG8gaW50ZXJmYWNlIHdpdGguIFRoYXQncyBhIHBvaW50IG5vdGVkLCBubyBmdXJ0aGVyIGludmVzdGlnYXRpb24gbmVlZGVkLiBOb3csIHdoYXQncyBuZXh0Li4uXG5cbkxldCBtZSB0aGluay4uLiB3aGF0IGFib3V0IHRoYXQgKnJ0d19jMmhfd2tfY21kKiBmdW5jdGlvbj8gSXMgaXQgYWxzbyBub24tc3RhdGljPyBOb3csIEkgbmVlZCB0byBjaGVjayBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGRyaXZlci4gVGhhdCBuYW1lIGxvb2tzIGxpa2UgaXQgbWlnaHQgcmVsYXRlIHRvIHNvbWV0aGluZyByZWxhdGVkIHRvIGNvbW1hbmQgYW5kIGNvbnRyb2wgYnV0IGxldCdzIGRpZyBkZWVwZXIgdG8gYmUgY2VydGFpbi4gSSBrbm93IHRoZSBnZW5lcmFsIGNvZGUgbGF5b3V0LCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHF1aWNrbHkhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDQ5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6NDcuMzUyMjkwNjU3WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEyNTEyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1OCBydHdfYzJoX3drX2NtZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jPTE2Mjg9dTggcnR3X2MyaF9wYWNrZXRfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKnBidWYsIHUxNiBsZW5ndGgpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X2NtZC5jLTE2NjItLyogb3IgZGVhZGxvY2sgd2lsbCBoYXBwZW4gYW5kIGNhdXNlIHNwZWNpYWwtc3lzdGVtc2VydmVyLWRpZWQgaW4gYW5kcm9pZCAqL1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmM6MTY2Mzp1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfY21kLmMtMTY2NC17XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oPTYxMT1leHRlcm4gdTggcnR3X2MyaF9wYWNrZXRfd2tfY21kKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggKnBidWYsIHUxNiBsZW5ndGgpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfY21kLmg6NjEyOmV4dGVybiB1OCBydHdfYzJoX3drX2NtZChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpjMmhfZXZ0KTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X2NtZC5oLTYxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjE6NDcuNDEzNDE5OTczWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjQ1NjY3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgU3ltYm9sIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBydHdfYzJoX3drX2NtZGAgaXMgaW5kZWVkIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCdzIGdvb2Q7IGl0J3MgdmlzaWJsZSBvdXRzaWRlIG9mIGl0cyBjb21waWxhdGlvbiB1bml0LiBOb3csIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyB3ZSdyZSBjb25jZXJuZWQgd2l0aCBoZXJlLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgdGhlIGNvcmUgZm9jdXMgc2VlbXMgdG8gYmUgb246XG5cbiogICBgcnR3X3JlY3ZfZW50cnlgXG4qICAgYHNkX2ludF9kcGNgXG4qICAgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YFxuKiAgIGBydHdfYzJoX3drX2NtZGBcblxuVGhlIG5leHQgc3RlcCBpbiBteSBhbmFseXNpcyB3b3VsZCBiZSB0byBlbnN1cmUgdGhhdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1JUTDg3MjNCU2AgaXMgcHJvcGVybHkgc2V0LiBHaXZlbiB0aGlzIGZvY3VzLCBJJ20gZ29pbmcgdG8gcmV2aXNpdCBgZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnYCB0byBjb25maXJtIGFueSBkZXBlbmRlbmNpZXMgYW5kIGVuc3VyZSBhbGwgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgY3J1Y2lhbCBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTY0NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTo1Mi42Mzc5OTA2MTZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjc0NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJUTDg3MjNCU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzoyOmNvbmZpZyBSVEw4NzIzQlNcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc6MzpcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4NzIzQlMgU0RJTyBXaXJlbGVzcyBMQU4gTklDIGRyaXZlclxcXCJcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIFdMQU4gXFx1MDAyNlxcdTAwMjYgTU1DIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWctOS1cXHRoZWxwXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnOjEwOlxcdFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgUlRMODcyM0JTIFNESU8gZHJpdmVycywgc3VjaCBhc1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy0xMS1cXHR0aGUgd2lmaSBmb3VuZCBvbiB0aGUgMXN0IGdlbiBJbnRlbCBDb21wdXRlIFN0aWNrLCB0aGUgQ0hJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMTo1Mi43MTAyNjk2MTJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NDIxMjQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgaXQgbG9va3MgbGlrZSBpdCBoaW5nZXMgb24gYSBmZXcga2V5IGNvbXBvbmVudHMuIFNwZWNpZmljYWxseSwgYFdMQU5gLCBgTU1DYCwgYW5kIGBDRkc4MDIxMWAgYXJlIGdvaW5nIHRvIGJlIGVzc2VudGlhbCBmb3IgdGhpbmdzIHRvIHdvcmsgYXMgaW50ZW5kZWQuIFRoZXJlZm9yZSwgd2hlbiBJIGRlZmluZSBgRW5hYmxlQ29uZmlnc2AsIEkgbmVlZCB0byBpbmNsdWRlIGBSVEw4NzIzQlNgICh0aGF0J3MgdGhlIGNvcmUgb2YgaXQsIG5hdHVyYWxseSksIGFsb25nIHdpdGggYFdMQU5gLCBgTU1DYCwgYW5kIGBDRkc4MDIxMWAgdG8gZW5zdXJlIHRob3NlIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEFsc28sIHNpbmNlIGl0J3MgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvc3RhZ2luZ2AsIEkgc2hvdWxkIGluY2x1ZGUgYFNUQUdJTkdgIGFzIHdlbGwuIEp1c3QgdG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgSSdsbCBkb3VibGUtY2hlY2sgd2hldGhlciBgU1RBR0lOR2AgaXMgc3RyaWN0bHkgcmVxdWlyZWQuIEl0J3MgYmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cyB0aGFuIG1pc3MgYSBjcml0aWNhbCBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDI1NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjU3LjQ5NDQ4NDI5WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDIzMDQzMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBTVEFHSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvc3RhZ2luZy9LY29uZmlnOjI6bWVudWNvbmZpZyBTVEFHSU5HXFxuZHJpdmVycy9zdGFnaW5nL0tjb25maWctMy1cXHRib29sIFxcXCJTdGFnaW5nIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE1OjIxOjU3Ljc5Njc5NDMxMloiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk3NjcyMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkNvbmZpZ3VyYXRpb24gRGVjaXNpb24gTWFraW5nIGZvciBTRElPIEZ1enppbmcgdmlhIFVTQioqXG5cbkFscmlnaHQsIHRoZSBjb3JlIHJlcXVpcmVtZW50IGlzIGNsZWFyOiB3ZSBhYnNvbHV0ZWx5IG5lZWQgYFNUQUdJTkdgLiBObyBxdWVzdGlvbiB0aGVyZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGRvIHdlICphbHNvKiBuZWVkIGBNTUNfVlVCMzAwYD8gSWYgb3VyIGdvYWwgaXMgdG8gZnV6eiBTRElPIGRldmljZXMgY29ubmVjdGVkIHRocm91Z2ggVVNCLCB0aGVuIHllcywgYE1NQ19WVUIzMDBgIGlzIGVzc2VudGlhbC4gSXQncyB0aGUgZW5hYmxpbmcgZmFjdG9yIGZvciB0aGF0IHNwZWNpZmljIFVTQi1iYXNlZCBpbnRlcmZhY2UuXG5cblRoZXJlZm9yZSwgbGV0J3MgaW5jbHVkZSBpdCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIFdlIHdhbnQgdGhpcyBmdW5jdGlvbmFsaXR5LlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIGp1c3QgcXVpY2tseSBjaGVja2luZyB0aGUgZGVwZW5kZW5jaWVzLiBSaWdodCwgYE1NQ19WVUIzMDBgIHJlbGllcyBvbiBib3RoIGBVU0JgIGFuZCBgTU1DYCBiZWluZyBlbmFibGVkLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBhbHNvIHRha2VuIGNhcmUgb2YgcHJvcGVybHkgZWxzZXdoZXJlIGluIHRoZSBjb25maWd1cmF0aW9uLCBvciB0aGlzIHdvbid0IHdvcmsuIFdlIG5lZWQgYSBjb21wbGV0ZSwgY29oZXJlbnQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA2MjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjowMi4yOTQ0NjkxMjhaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2Nzg5Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTUNfVlVCMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTEwPWNvbmZpZyBNTUNfSlo0NzQwXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjA6Y29uZmlnIE1NQ19WVUIzMDBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTIxLVxcdHRyaXN0YXRlIFxcXCJWVUIzMDAgVVNCIHRvIFNESU8vU0QvTU1DIEhvc3QgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjowMi4zNzEyNjQ2OTNaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNDU2NjgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHRoaW5nJ3MgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBjaGFuZ2VzIG9yIGV2YWx1YXRpbmcgcGVyZm9ybWFuY2UsIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBpdCByZWxpZXMgb24uIEknbSB0aGlua2luZywgXCJ3aGF0IGV4dGVybmFsIGxpYnJhcmllcywgc2VydmljZXMsIG9yIGV2ZW4gc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhpbmdzIGRvZXMgdGhpcyBjb21wb25lbnQgYWJzb2x1dGVseSBuZWVkIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT9cIi4gSSBjYW4ndCBzdGFydCB0cm91Ymxlc2hvb3RpbmcgaWYgSSBkb24ndCBrbm93IHRoZSBsYW5kc2NhcGUuIEkgbmVlZCB0byBtYXAgdGhlIHdob2xlIGVjb3N5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3cgbm90IGp1c3Qgd2hhdCBkZXBlbmRzIG9uIHdoYXQsIGJ1dCBhbHNvIHdoaWNoIHZlcnNpb24gb2YgZWFjaCBJJ20gdXNpbmcsIHNpbmNlIEkgaGF2ZSBhIHN0cm9uZyBmZWVsaW5nIHRoYXQgdGhlIGNvcnJlY3QgYW5zd2VyIGhlcmUgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBpbXBvcnRhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMDUwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjowNi4xOTU4MzQwNDdaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjMzNjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWVUIzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjE6XFx0dHJpc3RhdGUgXFxcIlZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMi1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjMtXFx0aGVscFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjQ6XFx0ICBUaGlzIHNlbGVjdHMgc3VwcG9ydCBmb3IgRWxhbiBEaWdpdGFsIFN5c3RlbXMnIFZVQjMwMCBjaGlwLlxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjUtXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyNjpcXHQgIFRoZSBWVUIzMDAgaXMgYSBVU0ItU0RJTyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGNoaXBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTI3LVxcdCAgdGhhdCBlbmFibGVzIHRoZSBob3N0IGNvbXB1dGVyIHRvIHVzZSBTRElPL1NEL01NQyBjYXJkc1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyOS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTMwOlxcdCAgVGhlIFZVQjMwMCBjaGlwIHdpbGwgYmUgZm91bmQgaW4gYm90aCBwaHlzaWNhbGx5IHNlcGFyYXRlXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzMS1cXHQgIFVTQiB0byBTRElPL1NEL01NQyBhZGFwdGVycyBhbmQgZW1iZWRkZWQgb24gc29tZSBtb3RoZXJib2FyZHMuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzMi1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTMzOlxcdCAgVGhlIFZVQjMwMCBjaGlwIHN1cHBvcnRzIFNEIGFuZCBNTUMgbWVtb3J5IGNhcmRzIGluIGFkZGl0aW9uXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNC1cXHQgIHRvIHNpbmdsZSBhbmQgbXVsdGlmdW5jdGlvbiBTRElPIGNhcmRzLlxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzNi1cXHQgIFNvbWUgU0RJTyBjYXJkcyB3aWxsIG5lZWQgYSBmaXJtd2FyZSBmaWxlIHRvIGJlIGxvYWRlZCBhbmRcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTM3OlxcdCAgc2VudCB0byBWVUIzMDAgY2hpcCBpbiBvcmRlciB0byBhY2hpZXZlIGJldHRlciBkYXRhIHRocm91Z2hwdXQuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkzOC1cXHQgIERvd25sb2FkIHRoZXNlIFxcXCJPZmZsb2FkIFBzZXVkb2NvZGVcXFwiIGZyb20gRWxhbiBEaWdpdGFsIFN5c3RlbXMnXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQwLVxcdCAgYW5kIHB1dCB0aGVtIGluIC9saWIvZmlybXdhcmUuIE5vdGUgdGhhdCB3aXRob3V0IHRoZXNlIGFkZGl0aW9uYWxcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTQxOlxcdCAgZmlybXdhcmUgZmlsZXMgdGhlIFZVQjMwMCBjaGlwIHdpbGwgc3RpbGwgZnVuY3Rpb24sIGJ1dCBub3QgYXRcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQyLVxcdCAgdGhlIGJlc3Qgb2J0YWluYWJsZSBkYXRhIHJhdGUuXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDc6XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbXB1dGVyIHdpdGggYW4gZW1iZWRkZWQgVlVCMzAwIGNoaXBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ4LVxcdCAgb3IgaWYgeW91IGludGVuZCBjb25uZWN0aW5nIGEgVVNCIGFkYXB0ZXIgYmFzZWQgb24gYVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDk6XFx0ICBWVUIzMDAgY2hpcCBzYXkgWSBvciBNIGhlcmUuXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjI6MDYuNDk4MTc0Nzg5WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDg4Njc4MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5Pa2F5LCBsZXQncyBuYWlsIGRvd24gdGhlc2Uga2VybmVsIGNvbmZpZyBvcHRpb25zLiBUaGlzIHdob2xlIHRoaW5nIGhpbmdlcyBvbiBgVVNCYCwgc28gYEVuYWJsZUNvbmZpZ3NgIG5lZWRzIHRvIGVuY29tcGFzcyBldmVyeXRoaW5nIG5lY2Vzc2FyeS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmc6XG5cbiogICBgUlRMODcyM0JTYCDigJMgb2J2aW91c2x5LCB0aGUgdGFyZ2V0LlxuKiAgIGBXTEFOYCDigJMgdGhhdCdzIGEgZ2l2ZW4uXG4qICAgYE1NQ2Ag4oCTIGVzc2VudGlhbCBmb3IgbWVtb3J5IGNhcmQgYWNjZXNzLlxuKiAgIGBDRkc4MDIxMWAg4oCTIHRoZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIGZyYW1ld29yay5cbiogICBgU1RBR0lOR2Ag4oCTIGJlY2F1c2UsIHdlbGwsIGl0J3Mgc3RhZ2luZy5cbiogICBgTU1DX1ZVQjMwMGAg4oCTIHRvIGd1YXJhbnRlZSBTRElPIGFjY2Vzc2liaWxpdHkgdmlhIFVTQjsgdGhhdCdzIHRoZSBjcnVjaWFsIGxpbmsgaGVyZS5cbiogICBgVVNCYCDigJMgYmVjYXVzZSwgZXZlcnl0aGluZy5cblxuTm93LCB3YWl0IGEgc2Vjb25kLi4uIGBVU0JfRFVNTVlfSENEYD8gUmlnaHQsIFN5emthbGxlciB1c2VzIGBkdW1teV9oY2RgIG9yIGB2aGNpX2hjZGAgZm9yIFVTQiBkZXZpY2UgZW11bGF0aW9uLiBJdCB1c3VhbGx5IGFjdGl2YXRlcyBgVVNCX0RVTU1ZX0hDRGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgYnkgZGVmYXVsdC4gV2Ugc2hvdWxkbid0IG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIHRoZW0gdW5sZXNzIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGNhbGxzIGZvciB0aGVtLCBhbmQgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFib3V0IGBSVEw4NzIzQlNgLiBTbywgZm9jdXMgb24gYFJUTDg3MjNCU2AsIGl0cyBpbW1lZGlhdGUgZGVwZW5kZW5jaWVzLCBhbmQgYE1NQ19WVUIzMDBgIHRvIGVuc3VyZSBTRElPIGZ1bmN0aW9ucyBvdmVyIFVTQi4gSSBzdGlsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IGRlcGVuZGVuY2llcyBsdXJraW5nIGZvciBgUlRMODcyM0JTYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5NTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjI6MTIuNTQ3MDQ2NDQzWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTkxODgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWc9Mj1jb25maWcgUlRMODcyM0JTXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODcyM0JTIFNESU8gV2lyZWxlc3MgTEFOIE5JQyBkcml2ZXJcXFwiXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBXTEFOIFxcdTAwMjZcXHUwMDI2IE1NQyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gbVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZy02LVxcdHNlbGVjdCBDUllQVE9fTElCX0FFU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoxMi42MTI5NzIzNjlaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNzI2MDk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jeSBEaWxlbW1hKipcblxuT2theSwgc28gdGhpcyBpcyBhYm91dCB3aGV0aGVyIHNvbWV0aGluZyBpcyBjb21waWxlZCBzdGF0aWNhbGx5IG9yIGFzIGEgbW9kdWxlLCByaWdodD8gSSdtIHNlZWluZyB0aGlzIFwiZGVwZW5kcyBvbiBtXCIgZmxhZywgYW5kIHRoYXQgaW1tZWRpYXRlbHkgc2V0cyBvZmYgYWxhcm0gYmVsbHMuIFRoYXQgbWVhbnMgaXQgKmhhcyogdG8gYmUgYSBtb2R1bGUuIEFuZCB0aGF0J3MgYSBwcm9ibGVtIGJlY2F1c2UgU3l6a2FsbGVyLCBpbiBpdHMgdXN1YWwgYXBwcm9hY2gsIGxpa2VzIHRvIGNvbXBpbGUgZXZlcnl0aGluZyBzdGF0aWNhbGx5IGludG8gdGhhdCBgdm1saW51eGAgaW1hZ2UsIHNldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYD15YC4gQnV0IGlmIHNvbWV0aGluZyBcImRlcGVuZHMgb24gbVwiLCBpdCAqY2FuJ3QqIGJlIGluY2x1ZGVkIHN0YXRpY2FsbHksIGNhbiBpdD8gSXQncyBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIGJlIGEgbW9kdWxlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoaXMsIHNvIGxldCdzIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayB0aGF0IGBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL0tjb25maWdgIGZpbGUuIFNvbWV0aGluZyBpc24ndCBxdWl0ZSByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI3MDEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoxNy45NDAyMzc2MDVaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBSVEw4NzIzQlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDg3MjNCUyBTRElPIFdpcmVsZXNzIExBTiBOSUMgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBXTEFOIFxcdTAwMjZcXHUwMDI2IE1NQyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBtXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX1VUSUxTXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHRUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFJUTDg3MjNCUyBTRElPIGRyaXZlcnMsIHN1Y2ggYXNcXG4gIDExOlxcdFxcdHRoZSB3aWZpIGZvdW5kIG9uIHRoZSAxc3QgZ2VuIEludGVsIENvbXB1dGUgU3RpY2ssIHRoZSBDSElQXFxuICAxMjpcXHRcXHRhbmQgbWFueSBvdGhlciBJbnRlbCBBdG9tIGFuZCBBUk0gYmFzZWQgZGV2aWNlcy5cXG4gIDEzOlxcdFxcdElmIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCByODcyM2JzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoxNy45NDAzNDUzMzRaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwMDEzODA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHI4NzIzYnMua28gTW9kdWxlIGFuZCBTeXprYWxsZXIgVGVzdGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCB0aGlua2luZyB0aHJvdWdoIGhvdyBzeXprYWxsZXIgbGlrZWx5IHRlc3RlZCBpdC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYGRlcGVuZHMgb24gbWAgbWVhbnMgaXQncyBhIG1vZHVsZS4gTm93LCBzeXprYWxsZXIgKmNhbiogdGVzdCBtb2R1bGVzLCBidXQgaXQgdXN1YWxseSBmb2N1c2VzIG9uIGB2bWxpbnV4YC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJXZWxsLCBpdCAqZGVwZW5kcyBvbiBtKiwgc28gaXQgKmNhbid0KiBiZSBidWlsdCBzdGF0aWNhbGx5LlwiIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBtb2R1bGUgdGVzdGluZyBpZiBgQ09ORklHX01PRFVMRVM9eWAgYW5kIHRoZSBtb2R1bGUgZ2V0cyBsb2FkZWQuXG5cblRoZSBuZXh0IHRoaW5nIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZCB3YXMsIFwiRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgbG9hZCBgcjg3MjNicy5rb2A/XCIgU3l6a2FsbGVyICpoYXMqIHRoZSBhYmlsaXR5IHRvIGxvYWQgbW9kdWxlcywgYnV0IGl0J3Mgbm90IGFsd2F5cyBhY3RpdmUuIFNvLCB0aGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggd2FzIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCB0aHJvd3MgbWUgZm9yIGEgbG9vcC4gSXQgbWVhbnMgc3l6a2FsbGVyICpkaWQqIHRlc3QgaXQuIEhvdz8gRGlkIHN5emthbGxlcidzIGNvbmZpZyBoYXZlIGBDT05GSUdfUlRMODcyM0JTPW1gIGFuZCBsb2FkIGl0PyBPciBkaWQgdGhlIGtlcm5lbCB0cmVlIHRoYXQgc3l6a2FsbGVyIHdhcyB1c2luZyByZW1vdmUgdGhlIGBkZXBlbmRzIG9uIG1gIGxpbmU/XG5cbkkganVzdCBkb3VibGUtY2hlY2tlZCBhbmQgc2F3IHRoYXQgYGRlcGVuZHMgb24gbWAgKmlzKiBzdGlsbCB0aGVyZS4gVGhlIGVhc2llc3QgYXBwcm9hY2ggdGhlbiwgaXMgdG8gc2ltcGx5IGxpc3QgYFJUTDg3MjNCU2AgaW4gYEVuYWJsZUNvbmZpZ3NgLiBLYnVpbGQgc2hvdWxkIGhhbmRsZSB0aGUgcmVzdC4gSSdtIHRha2luZyB0aGUgcHJvbXB0IHNlcmlvdXNseSBhbmQgbm90IGFkZGluZyB0aGUgYENPTkZJR19gIHByZWZpeC5cblxuU28sIGZvciB0aGUgYEVuYWJsZUNvbmZpZ3NgIG91dHB1dCwgSSdsbCBsaXN0OlxuLSBgUlRMODcyM0JTYFxuLSBgV0xBTmBcbi0gYE1NQ2Bcbi0gYENGRzgwMjExYFxuLSBgU1RBR0lOR2Bcbi0gYE1NQ19WVUIzMDBgXG4tIGBVU0JgXG5cbk5vdyBsZXQncyBxdWlja2x5IHJldmlldyB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gbWFrZSBzdXJlIHRoZXkncmUgcmVsZXZhbnQ6XG4tIGBydHdfcmVjdl9lbnRyeWBcbi0gYHNkX2ludF9kcGNgXG4tIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmBcbi0gYHJ0d19jMmhfd2tfY21kYFxuXG5PaCwgd2FpdCwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYHJ0d19zZGlvX2lmMV9pbml0YCBpbiBgc2Rpb19pbnRmLmNgLiBJIHNob3VsZCBjaGVjayBpZiBgcnR3X3NkaW9faWYxX2luaXRgIGlzIHN0YXRpYy4gSnVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMyMTEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjoyNi42NDA0ODYzMjFaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTk5NDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0d19zZGlvX2lmMV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTIwOT1zdGF0aWMgdm9pZCBzZF9pbnRmX3N0b3Aoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMjE3LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjIxODpzdGF0aWMgc3RydWN0IGFkYXB0ZXIgKnJ0d19zZGlvX2lmMV9pbml0KHN0cnVjdCBkdm9ial9wcml2ICpkdm9iaiwgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICAqcGRpZClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy0yMTkte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9MzM3PXN0YXRpYyBpbnQgcnR3X2Rydl9pbml0KFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtMzQ4LVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjM0OTpcXHRpZjEgPSBydHdfc2Rpb19pZjFfaW5pdChkdm9iaiwgaWQpO1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTM1MC1cXHRpZiAoIWlmMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTU6MjI6MjYuNzE1NjkxMTk2WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjY2OTEyNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklkZW50aWZ5aW5nIEtleSBTeW1ib2xzIGluIHRoZSBDb2RlYmFzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgZm9jdXNpbmcgb24gaG93IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29kZSBhbmQgaWRlbnRpZnlpbmcga2V5IGVudHJ5IHBvaW50cy4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYHJ0d19kcnZfaW5pdGAgaXMgc3RhdGljLCB3aGljaCBpbml0aWFsbHkgbWFrZXMgaXQgbGVzcyBpbnRlcmVzdGluZyBhcyBhIGZvY3VzLiBIb3dldmVyLCBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIGlzIG5vbi1zdGF0aWMgYW5kIGlzIGNhbGxlZCBieSBgcnR3X2Rydl9pbml0YCwgYW5kIGNyaXRpY2FsbHksIGl0J3MgYWxzbyBtb2RpZmllZCBieSB0aGUgcGF0Y2guIFRoYXQgbWFrZXMgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBhIGxpa2VseSBjYW5kaWRhdGUgdG8gZGVsdmUgaW50by5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgYGMyaF93a19jYWxsYmFja2AsIHdoaWNoIGlzIHN0YXRpYy4gQnV0IGl0J3MgY2FsbGVkIGJ5IGBydHdfYzJoX3drX2NtZGAsIGFuZCB0aGF0IG9uZSBpcyBub24tc3RhdGljLiBTbywgYHJ0d19jMmhfd2tfY21kYCBzZWVtcyBsaWtlIGEgZ29vZCBzeW1ib2wgdG8gdHJhY2ssIGdpdmVuIHRoZSBwYXRjaCdzIGNoYW5nZXMuXG5cbk5leHQsIEknbSBsb29raW5nIGF0IGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AuIEl0J3Mgc3RhdGljLCBidXQgaXQncyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBmdW5jdGlvbnMgYHJlY3ZfZnVuY19wb3N0aGFuZGxlYCBhbmQgYHZhbGlkYXRlX3JlY3ZfbWdudF9mcmFtZWAsIHdoaWNoIGFyZSBpbiB0dXJuIGNhbGxlZCBieSBgcmVjdl9mdW5jYC4gVGhpcyBjaGFpbiB1bHRpbWF0ZWx5IGxlYWRzIHRvIGBydHdfcmVjdl9lbnRyeWAsIHdoaWNoIGlzIG5vbi1zdGF0aWMuIEJlY2F1c2Ugb2YgdGhpcyBjaGFpbiBvZiBjYWxscywgYHJ0d19yZWN2X2VudHJ5YCBhbHNvIG1ha2VzIHNlbnNlIGFzIGEgc3ltYm9sIHRvIGludmVzdGlnYXRlLlxuXG5IYW5nIG9uLCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYHNkX2ludF9kcGNgIHF1ZXVlcyB0aGUgYGMyaF93a19jYWxsYmFja2AgdGhyb3VnaCBgcnR3X2MyaF93a19jbWRgLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBjMmhfd2tfY2FsbGJhY2tgIGFuZCBgcnR3X2MyaF93a19jbWRgLiBHaXZlbiB0aGUgaW50ZXJydXB0IGNvbnRleHQsIGBzZF9pbnRfZHBjYCBpcyBjbGVhcmx5IGFub3RoZXIgdmFsdWFibGUgZm9jdXMuXG5cbkFscmlnaHQsIGxldCdzIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiB0aGVzZSBrZXkgZnVuY3Rpb25zIHRvIGJlIGNlcnRhaW46IEkgc2VlIHRoYXQgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBpcyBpbmRlZWQgbm9uLXN0YXRpYyB3aXRoaW4gYG9zX2ludGZzLmNgLiBgcnR3X2MyaF93a19jbWRgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbCwgcmVzaWRpbmcgaW4gYHJ0d19jbWQuY2AuIGBydHdfcmVjdl9lbnRyeWAgaXMgY29uZmlybWVkIHRvIGJlIG5vbi1zdGF0aWMgaW4gYHJ0d19yZWN2LmNgLiBBbmQgZmluYWxseSwgYHNkX2ludF9kcGNgIGlzIHByZXNlbnQgaW4gYHNkaW9fb3BzLmNgLlxuXG5XaXRoIHRoaXMgY29uZmlybWVkLCBJJ2xsIGdvIGJhY2sgdG8gdGhlIHBhdGNoIHRvIGxvb2sgYXQgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgcGF0Y2guIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzOiBgYzJoX3drX2NhbGxiYWNrYCAoc3RhdGljKSAtXHUwMDNlIGBydHdfYzJoX3drX2NtZGAsIGByZWN2ZnJhbWVfY2hrX2RlZnJhZ2AgKHN0YXRpYykgLVx1MDAzZSBgcnR3X3JlY3ZfZW50cnlgLCBgX3J0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCAoc3RhdGljKSAtXHUwMDNlIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAsIGFuZCBhbHNvIGBydHdfc2Rpb19pZjFfaW5pdGAgKHN0YXRpYykgLVx1MDAzZSBgcnR3X2Rydl9pbml0YCAoc3RhdGljKSAtXHUwMDNlIGBydGw4NzIzYnNfc2Rpb19kcml2ZXIucHJvYmVgLlxuXG5MZXQgbWUgYWRkIHRoYXQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIGBydGw4NzIzYnNfc2Rpb19kcml2ZXJgIGlzIHJlZ2lzdGVyZWQgaW4gYHJ0d19kcnZfZW50cnlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDYwNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjozNy4zODI2MDcwNTdaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTI5Mzk3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHdfZHJ2X2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jPTQzNz1zdGF0aWMgaW50IHJ0d19zZGlvX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTAtXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDUxOnN0YXRpYyBpbnQgX19pbml0IHJ0d19kcnZfZW50cnkodm9pZClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTIte1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU0LX1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYzo0NTU6bW9kdWxlX2luaXQocnR3X2Rydl9lbnRyeSk7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjozNy41MDE5MDU5OFoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjMxMTYwOTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gVGFyZ2V0aW5nIHRoZSBSVEw4NzIzQlMgU0RJTyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBydHdfZHJ2X2VudHJ5YCBpcyBzdGF0aWMsIHNvIHRoYXQncyBvdXQuIFdlIG5lZWQgYSBnb29kIG5vbi1zdGF0aWMgZnVuY3Rpb24gZm9yIHRoZSBwcm9iZSBwYXRoLiBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIHNlZW1zIGxpa2UgdGhlIGJlc3QgYmV0LiBJcyB0aGVyZSBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgY291bGQgYmUgYSBjYW5kaWRhdGU/IEhtbW0sIHdoYXQgYWJvdXQgYHJ0d19oYWxfZGF0YV9kZWluaXRgPyBUaGUgcGF0Y2ggZG9lcyBtZW50aW9uIGl0LiBCdXQgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGNvbnRhaW4gdGhlICptb2RpZmllZCogY29kZS4gUmlnaHQsIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gYHJ0d19zZGlvX2lmMV9pbml0YCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBydHdfZHJ2X2luaXRgLiBEYW5nLCBgcnR3X2Rydl9pbml0YCBpcyBzdGF0aWMuXG5cbkJ1dCEgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCAqYWxzbyogZ2V0cyBjYWxsZWQgYnkgYHJ0d19kcnZfaW5pdGAuIFdhaXQgYSBzZWNvbmTigKYgbG9va2luZyBhdCB0aGUgY2FsbCBvcmRlciB3aXRoaW4gYHJ0d19kcnZfaW5pdGAsIGBydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmAgaXMgY2FsbGVkICphZnRlciogYHJ0d19zZGlvX2lmMV9pbml0YC4gU28sIGZ1enppbmcgYHJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2YCBtaWdodCBub3QgZGlyZWN0bHkgdHJpZ2dlciBgcnR3X3NkaW9faWYxX2luaXRgIGltbWVkaWF0ZWx5LiBCdXQgdGhhdCdzIG9rYXksIHN5emthbGxlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gaGl0IHRoZSBwcm9iZSBmdW5jdGlvbiBieSBpbmplY3RpbmcgU0RJTyBkZXZpY2VzIGFuZCBzbyB3aWxsIHRlc3QgYHJ0d19zZGlvX2lmMV9pbml0YC4gTGlzdGluZyBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIHdpbGwgZ3VpZGUgdGhlIGZ1enplciB0byB0aGUgcHJvYmUgcGF0aCByZWdhcmRsZXNzLlxuXG5MZXQncyByZXZpZXcgdGhlIHJhdGlvbmFsZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBzZXZlcmFsIGJ1Z3Mg4oCTIG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzIOKAkyBzcGVjaWZpY2FsbHkgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGFuIFNESU8gZGV2aWNlIHZpYSBhIFVTQi10by1TRElPIGJyaWRnZSAobGlrZSBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gU28sIHRoaXMgKmlzKiByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIE9rYXksIHRoZSBwbGFuIGlzOiBgcnR3X3JlY3ZfZW50cnlgICh0byBjb3ZlciBgcmVjdmZyYW1lX2Noa19kZWZyYWdgKSwgYHJ0d19jMmhfd2tfY21kYCAoZm9yIGBjMmhfd2tfY2FsbGJhY2tgKSwgYW5kIG5vdyBgcnR3X2Rydl9yZWdpc3Rlcl9uZXRkZXZgIChmb3IgYF9ydHdfZHJ2X3JlZ2lzdGVyX25ldGRldmApLlxuXG5Ob3csIGxldCdzIHF1aWNrbHkgY2hlY2sgaWYgYHJ0d19jMmhfd2tfY21kYCBpcyBleHBvcnRlZCBvciBqdXN0IG5vbi1zdGF0aWMuIERvZXNuJ3QgbWF0dGVyLCBzeXprYWxsZXIgaGFuZGxlcyBub24tc3RhdGljIGZ1bmN0aW9ucyBqdXN0IGZpbmUuXG5cbkZpbmFsbHksIGFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgY29uZmlncz8gTGV0IG1lIHNlZeKApiBSVEw4NzIzQlMsIFdMQU4sIE1NQywgQ0ZHODAyMTEsIFNUQUdJTkcsIE1NQ19WVUIzMDAsIGFuZCBVU0IuIEdvdCBpdC5cblxuWWVhaCwgSSB0aGluayBJJ3ZlIGdvdCBhIHNvbGlkIGFuZCBhY2N1cmF0ZSBwbGFuIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjE5LCJPdXRwdXRUb2tlbnMiOjIyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNToyMjo1My44MTM1MTgyNzlaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg0MDM0NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUTDg3MjNCU1wiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiTU1DXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiU1RBR0lOR1wiLFxuICAgIFwiTU1DX1ZVQjMwMFwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3X3JlY3ZfZW50cnlcIixcbiAgICBcInJ0d19jMmhfd2tfY21kXCIsXG4gICAgXCJydHdfZHJ2X3JlZ2lzdGVyX25ldGRldlwiLFxuICAgIFwic2RfaW50X2RwY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGJ1Z3MgKG1lbW9yeSBsZWFrcywgZG91YmxlIGZyZWVzLCBudWxsLXB0ci1kZXJlZikgaW4gdGhlIFJUTDg3MjNCUyBTRElPIFdpRmkgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBieSBlbXVsYXRpbmcgYW4gU0RJTyBkZXZpY2UgdmlhIGEgVVNCLXRvLVNESU8gYnJpZGdlIChlLmcuLCBWVUIzMDApIHVzaW5nIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yayAoZHVtbXlfaGNkKS4gVGhlcmVmb3JlLCB0aGUgY29kZSBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgdG8gdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRMODcyM0JTXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJTVEFHSU5HXCIsXG4gICAgXCJNTUNfVlVCMzAwXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHdfcmVjdl9lbnRyeVwiLFxuICAgIFwicnR3X2MyaF93a19jbWRcIixcbiAgICBcInJ0d19kcnZfcmVnaXN0ZXJfbmV0ZGV2XCIsXG4gICAgXCJzZF9pbnRfZHBjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgYnVncyAobWVtb3J5IGxlYWtzLCBkb3VibGUgZnJlZXMsIG51bGwtcHRyLWRlcmVmKSBpbiB0aGUgUlRMODcyM0JTIFNESU8gV2lGaSBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJ5IGVtdWxhdGluZyBhbiBTRElPIGRldmljZSB2aWEgYSBVU0ItdG8tU0RJTyBicmlkZ2UgKGUuZy4sIFZVQjMwMCkgdXNpbmcgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIChkdW1teV9oY2QpLiBUaGVyZWZvcmUsIHRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50cyB0byB0aGUgbW9kaWZpZWQgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qftm[1] Phase: Succeeded StartedAt: 2026-07-31 15:23:05 +0000 UTC FinishedAt: 2026-07-31 15:23:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 15:23:05 +0000 UTC FinishedAt: 2026-07-31 15:23:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2] Phase: Running StartedAt: 2026-07-31 15:23:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-07-31 15:23:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:23:05 +0000 UTC FinishedAt: 2026-07-31 15:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:23:05 +0000 UTC FinishedAt: 2026-07-31 15:23:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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-workflow8qftm/series-workflow8qftm-convert-artifact-2480444437/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:23:15 +0000 UTC FinishedAt: 2026-07-31 15:42:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:23:15 +0000 UTC FinishedAt: 2026-07-31 15:42:47 +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:*c9894912-d723-43e4-832c-9a612fa6f122,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-workflow8qftm/series-workflow8qftm-convert-artifact-2480444437/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": "02351db2-524c-4508-bb36-8553bfa3b21a", "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-workflow8qftm/series-workflow8qftm-build-action-3432574075/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:23:15 +0000 UTC FinishedAt: 2026-07-31 15:42:37 +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:*c9894912-d723-43e4-832c-9a612fa6f122,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-workflow8qftm/series-workflow8qftm-convert-artifact-2480444437/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": "02351db2-524c-4508-bb36-8553bfa3b21a", "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-workflow8qftm/series-workflow8qftm-build-action-3432574075/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:42:47 +0000 UTC FinishedAt: 2026-07-31 15:42:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:42:47 +0000 UTC FinishedAt: 2026-07-31 15:42:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:42:47 +0000 UTC FinishedAt: 2026-07-31 15:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:42:47 +0000 UTC FinishedAt: 2026-07-31 15:43:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-workflow8qftm/series-workflow8qftm-convert-artifact-4236291312/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:43:11 +0000 UTC FinishedAt: 2026-07-31 15:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:43:11 +0000 UTC FinishedAt: 2026-07-31 15:44:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*02351db2-524c-4508-bb36-8553bfa3b21a,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-workflow8qftm/series-workflow8qftm-build-action-3432574075/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-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:45:08 +0000 UTC FinishedAt: 2026-07-31 15:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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-07-31 15:45:08 +0000 UTC FinishedAt: 2026-07-31 15:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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: Running StartedAt: 2026-07-31 15:45:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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: Running StartedAt: 2026-07-31 15:45:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*c9894912-d723-43e4-832c-9a612fa6f122,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-workflow8qftm/series-workflow8qftm-convert-artifact-4236291312/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8qftm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","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":["rtw_recv_entry","rtw_c2h_wk_cmd","rtw_drv_register_netdev","sd_int_dpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTL8723BS","WLAN","MMC","CFG80211","STAGING","MMC_VUB300","USB"],"series_id":"b59a5ffe-2dcf-430a-934f-d1712c02e13e","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: Running StartedAt: 2026-07-31 15:45:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*c9894912-d723-43e4-832c-9a612fa6f122,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-workflow8qftm/series-workflow8qftm-convert-artifact-4236291312/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,}