Name: series-workflow5c5sj Phase: Succeeded StartedAt: 2026-07-15 21:49:43 +0000 UTC FinishedAt: 2026-07-15 23:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[0] Phase: Succeeded StartedAt: 2026-07-15 21:49:43 +0000 UTC FinishedAt: 2026-07-15 22:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 21:49:43 +0000 UTC FinishedAt: 2026-07-15 22:14:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7915E", "NET_MEDIATEK_SOC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7915E", "NET_MEDIATEK_SOC" ], "series_id": "58b19bc2-d550-450a-a7d1-4eb620a5b266" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7915_net_fill_forward_path", "mt76_wed_init_rx_buf" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MjRiNmVkOWQxMWU5OWY5ZjUwYzhiN2Q5ZjIzYzIwYWIyODAxY2E5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjI6MTA6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jXG5pbmRleCA1MTY0M2E0OGVkMTUxNS4uMDQ0YjU5MmVmZTI4NDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY1xuQEAgLTE3NDMsNyAmIzQzOzE3NDMsNyBAQCBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cGF0aC1cdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cdTAwM2V3ZG1hX2lkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEuYnNzID0gbXZpZi1cdTAwM2VtdDc2LmlkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEud2NpZCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPyBtc3RhLVx1MDAzZXdjaWQuaWR4IDogMHgzZmY7XG4tXHRwYXRoLVx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5ICE9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4mIzQzO1x0cGF0aC1cdTAwM2VtdGtfd2RtYS5xdWV1ZSA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWJhbmRfaWR4O1xuIFxuIFx0Y3R4LVx1MDAzZWRldiA9IE5VTEw7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcbmluZGV4IGVkNjU3ZDk1MmRlMjQ0Li5mMjEwYTBjNTdkODExOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcbkBAIC0zMywxMCAmIzQzOzMzLDE1IEBAIHUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXG4ge1xuIFx0c3RydWN0IG10a193ZWRfYm1fZGVzYyAqZGVzYyA9IHdlZC1cdTAwM2VyeF9idWZfcmluZy5kZXNjO1xuIFx0c3RydWN0IG10NzZfZGV2ICpkZXYgPSBtdDc2X3dlZF90b19kZXYod2VkKTtcbi1cdHN0cnVjdCBtdDc2X3F1ZXVlICpxID0gXHUwMDI2ZGV2LVx1MDAzZXFfcnhbTVRfUlhRX01BSU5dO1xuIFx0c3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCA9IE5VTEw7XG4mIzQzO1x0c3RydWN0IG10NzZfcXVldWUgKnE7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHRpZiAod2VkLVx1MDAzZXZlcnNpb24gPT0gMiBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXBoeS5iYW5kX2lkeClcbiYjNDM7XHRcdHEgPSBcdTAwMjZkZXYtXHUwMDNlcV9yeFtNVF9SWFFfQkFORDFdO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHEgPSBcdTAwMjZkZXYtXHUwMDNlcV9yeFtNVF9SWFFfTUFJTl07XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2l6ZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZG1hX2FkZHJfdCBhZGRyO1xuIFx0XHR1MzIgb2Zmc2V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkyNGI2ZWQ5ZDExZTk5ZjlmNTBjOGI3ZDlmMjNjMjBhYjI4MDFjYTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAyMjoxMDoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYwppbmRleCA1MTY0M2E0OGVkMTUxNS4uMDQ0YjU5MmVmZTI4NDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMKQEAgLTE3NDMsNyAmIzQzOzE3NDMsNyBAQCBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXBhdGgtJmd0O210a193ZG1hLndkbWFfaWR4ID0gd2VkLSZndDt3ZG1hX2lkeDsKIAlwYXRoLSZndDttdGtfd2RtYS5ic3MgPSBtdmlmLSZndDttdDc2LmlkeDsKIAlwYXRoLSZndDttdGtfd2RtYS53Y2lkID0gaXNfbXQ3OTE1KCZhbXA7ZGV2LSZndDttdDc2KSA/IG1zdGEtJmd0O3djaWQuaWR4IDogMHgzZmY7Ci0JcGF0aC0mZ3Q7bXRrX3dkbWEucXVldWUgPSBwaHkgIT0gJmFtcDtkZXYtJmd0O3BoeTsKJiM0MzsJcGF0aC0mZ3Q7bXRrX3dkbWEucXVldWUgPSBwaHktJmd0O210NzYtJmd0O2JhbmRfaWR4OwogCiAJY3R4LSZndDtkZXYgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYwppbmRleCBlZDY1N2Q5NTJkZTI0NC4uZjIxMGEwYzU3ZDgxMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYwpAQCAtMzMsMTAgJiM0MzszMywxNSBAQCB1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKQogewogCXN0cnVjdCBtdGtfd2VkX2JtX2Rlc2MgKmRlc2MgPSB3ZWQtJmd0O3J4X2J1Zl9yaW5nLmRlc2M7CiAJc3RydWN0IG10NzZfZGV2ICpkZXYgPSBtdDc2X3dlZF90b19kZXYod2VkKTsKLQlzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSA9ICZhbXA7ZGV2LSZndDtxX3J4W01UX1JYUV9NQUlOXTsKIAlzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0ID0gTlVMTDsKJiM0MzsJc3RydWN0IG10NzZfcXVldWUgKnE7CiAJaW50IGk7CiAKJiM0MzsJaWYgKHdlZC0mZ3Q7dmVyc2lvbiA9PSAyICZhbXA7JmFtcDsgZGV2LSZndDtwaHkuYmFuZF9pZHgpCiYjNDM7CQlxID0gJmFtcDtkZXYtJmd0O3FfcnhbTVRfUlhRX0JBTkQxXTsKJiM0MzsJZWxzZQomIzQzOwkJcSA9ICZhbXA7ZGV2LSZndDtxX3J4W01UX1JYUV9NQUlOXTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgc2l6ZTsgaSYjNDM7JiM0MzspIHsKIAkJZG1hX2FkZHJfdCBhZGRyOwogCQl1MzIgb2Zmc2V0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lZGlhVGVrIE1UNzYgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNgLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIHNwZWNpZmljYWxseSwgdGhlIGBxdWV1ZWAgYXNzaWdubWVudCB3aXRoaW4gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCB0aGUgcXVldWUgc2VsZWN0aW9uIGluIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIFRoaXMgaXMgYSBNZWRpYVRlayBNVDc2IHdpcmVsZXNzIGRyaXZlciwgc28gbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHZhbGlkYXRlIHRoaXMgY2hhbmdlLgoKRmlyc3QsIEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdGVzdCBlbnZpcm9ubWVudC4gQ2FuIHRoaXMgYmUgZWFzaWx5IHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSB1c3VhbGx5IGFtZW5hYmxlIHRvIHRlc3Rpbmcgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCB0aGUgTVQ3Ni4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIGV2ZW4gZnV6eiB0aGlzIGRyaXZlcj8gSGFyZHdhcmUtc3BlY2lmaWMgc3R1ZmYgaXMgdHJpY2t5IHVubGVzcyBpdCYjMzk7cyBVU0ItYmFzZWQgb3Igd2UmIzM5O3ZlIGdvdCBzb21lIHNlcmlvdXMgZW11bGF0aW9uIGluIHBsYXkuIEl0JiMzOTtzIG9mdGVuIGRpZmZpY3VsdCB0byBnZXQgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSBvbiB0aGlzIGtpbmQgb2YgY2hhbmdlLgoKU28gSSBuZWVkIHRvIGNvbmZpcm0gaG93IHRoZSBNVDc2IGlzIGNvbm5lY3RlZC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jYCBzZWVtcyBzcGVjaWZpYyB0byB0aGUgTVQ3OTE1LiBSaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIFVTQiBvciBQQ0llLiBJIG5lZWQgdG8gZ3JlcCBmb3IgTVQ3OTE1IHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1Njg5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NDc9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0ODpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQ5LXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00ND1vYmotJChDT05GSUdfTVQ3NjE1X0NPTU1PTikgJiM0Mzs9IG10NzYxNS9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01UNzkxNUUpICYjNDM7PSBtdDc5MTUvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19NVDc5MjFfQ09NTU9OKSAmIzQzOz0gbXQ3OTIxL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTY9c3RhdGljIGlubGluZSBib29sIGlzX210NzY2MyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIyMTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ3Olx0XHQvKiBtdDc5MTUgV0Egb25seSBjb3VudHMgV0VEIHBhdGggKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ4Olx0XHRpZiAoaXNfbXQ3OTE1KGRldikgXHUwMDI2XHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy01NDktXHRcdFx0d2NpZC1cdTAwM2VzdGF0cy50eF9wYWNrZXRzJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTEwMzk9aW50IG10NzZfY29ubmFjMl9tYWNfZmlsbF9yeF9yYXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtMTA1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6MTA1NTpcdGlmICghaXNfbXQ3OTE1KGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtMTA1Ni1cdFx0c3RiYyA9IEZJRUxEX0dFVChNVF9QUlhWX0hUX1NUQkMsIHYwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTMwOT1zdHJ1Y3Qgc3RhX3JlY192aHQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMzE0LVx0X19sZTE2IHZodF90eF9tY3NfbWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDozMTU6XHQvKiBtdDc5MTUgLSBtdDc5MjEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMzE2LVx0dTggcnRzX2J3X3NpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTE1RSkgJiM0Mzs9IG10NzkxNWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjU6bXQ3OTE1ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTYtXHQgICAgIGRlYnVnZnMubyBtbWlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo4Om10NzkxNWUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjk6bXQ3OTE1ZS0kKENPTkZJR19NVDc5OFhfV01BQykgJiM0Mzs9IHNvYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZToxMDptdDc5MTVlLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTEyPU1PRFVMRV9QQVJNX0RFU0MoY29yZWR1bXBfbWVtZHVtcCwgXCYjMzQ7T3B0aW9uYWwgYWJpbGl0eSB0byBkdW1wIGZpcm13YXJlIG1lbW9yeVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10NzkxNV9tZW1fcmVnaW9uc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNS1cdHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMjpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10NzkxNl9tZW1fcmVnaW9uc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMy1cdHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo1NTpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10Nzk4eF9tZW1fcmVnaW9uc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy01Ni1cdHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo4ODpjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg5Om10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXHRjYXNlIDB4NzkxNTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTM6XHRcdCpudW0gPSBBUlJBWV9TSVpFKG10NzkxNV9tZW1fcmVnaW9ucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjk0Olx0XHRyZXR1cm4gXHUwMDI2bXQ3OTE1X21lbV9yZWdpb25zWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05NS1cdGNhc2UgMHg3OTgxOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMDc6c3RhdGljIGludCBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9zaXplKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEwOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwOTpcdGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqbWVtX3JlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEwLVx0c2l6ZV90IHNpemUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMTQ6XHRtZW1fcmVnaW9uID0gbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KGRldiwgXHUwMDI2bnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTE1LVx0aWYgKCFtZW1fcmVnaW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTIzLVx0LyogcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGhlYWRlcnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTI0Olx0c2l6ZSAmIzQzOz0gbnVtICogc2l6ZW9mKHN0cnVjdCBtdDc5MTVfbWVtX2hkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEyNS1cdC8qIG1ha2Ugc3VyZSBpdCBpcyBhbGlnbmVkIDQgYnl0ZXMgZm9yIGRlYnVnIG1lc3NhZ2UgcHJpbnQgb3V0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEzMTpzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMzOlx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE0Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDQ6bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE0NS1cdFx0XHQgYm9vbCAqZXhjZXB0aW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUwLVx0c3RhdGUgPSAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfRldfQVNTRVJUX1NUQVQsIEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNTE6XHRjb3VudCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNTItXHRcdCh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19FWENFUFRfQ09VTlQsIEdFTk1BU0soMTUsIDgpKSA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0xNjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTY3Om10NzkxNV9jb3JlZHVtcF9md190cmFjZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNjgtXHRcdFx0IGJvb2wgZXhjZXB0aW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNzU6XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE3Ni1cdCAgICAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgYmFzZSwgR0VOTUFTSyg3LCAwKSkgOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTgwLVx0aXJxID0gbXQ3Nl9ycihkZXYsIGJhc2UgJiM0MzsgMHg4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTgxOlx0biA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODItXHQgICAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIGlycSkgOiBGSUVMRF9HRVQoR0VOTUFTSygyMywgMTYpLCBpcnEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTg1LVx0c2NoID0gbXQ3Nl9ycihkZXYsIE1UX0ZXX1NDSEVEX0lORk8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODY6XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4Ny1cdCAgICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgc2NoKSA6IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgc2NoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5My1cdFx0Lyogc2NoZWQgdHJhY2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTk0Olx0XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5NS1cdFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgc2NoKSA6IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBzY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjAxLVx0XHRmb3IgKHkgPSBkdW1wLVx1MDAzZXNjaGVkX2luZm9faWR4LCBpID0gMDsgaSBcdTAwM2MgbjsgaSYjNDM7JiM0MzssIHkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIwMjpcdFx0XHRtdDc5MTVfbWVtY3B5X2Zyb21pbyhkZXYsIGR1bXAtXHUwMDNlc2NoZWQsIGJhc2UgJiM0MzsgMHhjICYjNDM7IHkgKiAxMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjAzLVx0XHRcdFx0XHQgICAgIHNpemVvZihkdW1wLVx1MDAzZXNjaGVkKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDctXHRcdC8qIGlycSB0cmFjZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMDg6XHRcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjA5LVx0XHQgICAgRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBpcnEpIDogRklFTERfR0VUKEdFTk1BU0soNywgMCksIGlycSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMTUtXHRcdGZvciAoeSA9IGR1bXAtXHUwMDNlaXJxX2luZm9faWR4LCBpID0gMDsgaSBcdTAwM2MgbjsgaSYjNDM7JiM0MzssIHkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIxNjpcdFx0XHRtdDc5MTVfbWVtY3B5X2Zyb21pbyhkZXYsIGR1bXAtXHUwMDNlaXJxLCBiYXNlICYjNDM7IDB4NCAmIzQzOyB5ICogMTYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxNy1cdFx0XHRcdFx0ICAgICBzaXplb2YoZHVtcC1cdTAwM2VpcnEpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTIyMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMjQ6bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YWNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIyNS1cdFx0XHQgYm9vbCBleGNlcHRpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yNDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ1Om10NzkxNV9jb3JlZHVtcF9md190YXNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI0Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI0NzpcdHUzMiBvZmZzID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/IDB4ZTAgOiAweDE3MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MjY4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI2OTptdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyODA6XHRcdGlkeCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yODEtXHRcdCAgICAgICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19DSVJRX0lEWCwgR0VOTUFTSygzMSwgMTYpKSA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwMjpzdGF0aWMgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNDpcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cdTAwM2Vjb3JlZHVtcC5jcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDU6XHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDY6XHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSAqZHVtcF9tZW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwNy1cdHNpemVfdCBsZW4sIHNvZmFyID0gMCwgaGRyX2xlbiA9IHNpemVvZigqZHVtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMyNzpcdGR1bXAgPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqKShidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMjgtXHRkdW1wLVx1MDAzZWxlbiA9IGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQxOlx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YXRlKGRldiwgZHVtcCwgXHUwMDI2ZXhjZXB0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQyOlx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3RyYWNlKGRldiwgZHVtcCwgZXhjZXB0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQzOlx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soZGV2LCBkdW1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ0Olx0bXQ3OTE1X2NvcmVkdW1wX2Z3X2NvbnRleHQoZGV2LCBkdW1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ1Olx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YWNrKGRldiwgZHVtcCwgZXhjZXB0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDctXHQvKiBnYXRoZXIgbWVtb3J5IGNvbnRlbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ4Olx0ZHVtcF9tZW0gPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0gKikoYnVmICYjNDM7IHNvZmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ5LVx0ZHVtcF9tZW0tXHUwMDNlbGVuID0gY3Jhc2hfZGF0YS1cdTAwM2VtZW1kdW1wX2J1Zl9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM1OTppbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNjE6XHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MzpcdGR1bXAgPSBtdDc5MTVfY29yZWR1bXBfYnVpbGQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzY0LVx0aWYgKCFkdW1wKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM3NDppbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM3NjpcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzc3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg0LVx0aWYgKGNvcmVkdW1wX21lbWR1bXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzg1Olx0XHRjcmFzaF9kYXRhLVx1MDAzZW1lbWR1bXBfYnVmX2xlbiA9IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX3NpemUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg2LVx0XHRpZiAoIWNyYXNoX2RhdGEtXHUwMDNlbWVtZHVtcF9idWZfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo0MDA6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy00MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6NzojaW5jbHVkZSBcJiMzNDttdDc5MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaD05PXN0cnVjdCB0cmFjZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTQ6c3RydWN0IG10NzkxNV9jb3JlZHVtcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTE1LVx0Y2hhciBtYWdpY1sxNl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC03OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODA6c3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04MS1cdHUzMiBsZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODU6c3RydWN0IG10NzkxNV9tZW1faGRyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODYtXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6OTE6c3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOTItXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAwOmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMTptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDI6c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDM6aW50IG10NzkxNV9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwNDppbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDU6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMTA6bXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiAqbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMTU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTI1OnN0YXRpYyBpbmxpbmUgaW50IG10NzkxNV9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMzA6c3RhdGljIGlubGluZSB2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQtI2luY2x1ZGUgXHUwMDNjbGludXgvcmVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU6I2luY2x1ZGUgXCYjMzQ7bXQ3OTE1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02LSNpbmNsdWRlIFwmIzM0O2VlcHJvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjptdDc5MTVfaW1wbGljaXRfdHhiZl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MzE6XHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfdHhiZihkZXYsIE1UX0JGX1RZUEVfVVBEQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zMi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTM0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozNTptdDc5MTVfaW1wbGljaXRfdHhiZl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM3Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10NzkxNV9pbXBsaWNpdF90eGJmX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NTpcdFx0XHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NDg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0OTptdDc5MTVfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwLVx0XHRcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MjpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU0LVx0Ym9vbCBiYW5kID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg1LVx0Y2FzZSBTRVJfUVVFUlk6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODY6XHRcdHJldCA9IG10NzkxNV9tY3Vfc2V0X3NlcihkZXYsIDAsIDAsIGJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTMtXHRjYXNlIFNFUl9TRVRfUkVDT1ZFUl9MM19CRjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5NDpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgU0VSX0VOQUJMRSwgQklUKHZhbCksIGJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgU0VSX1JFQ09WRVIsIHZhbCwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMDMtXHRcdG10NzZfc2V0KGRldiwgTVRfV0ZETUEwX01DVV9IT1NUX0lOVF9FTkEsIE1UX01DVV9DTURfV0RUX01BU0spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEwNDpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTA1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMDgtXHRcdGRldi1cdTAwM2VyZWNvdmVyeS5zdGF0ZSB8PSBNVF9NQ1VfQ01EX1dEVF9NQVNLO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEwOTpcdFx0bXQ3OTE1X3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTEwLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI0PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI1Om10NzkxNV9zeXNfcmVjb3ZlcnlfZ2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI2LVx0XHRcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI4Olx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyOTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEzMC1cdGNoYXIgKmJ1ZmY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbXQ3OTE1X3N5c19yZWNvdmVyeV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA1Olx0LndyaXRlID0gbXQ3OTE1X3N5c19yZWNvdmVyeV9zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA2Olx0LnJlYWQgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMDctXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIxMjptdDc5MTVfcmFkYXJfdHJpZ2dlcih2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIxNS0jZGVmaW5lIFJBREFSX0JBQ0tHUk9VTkRcdDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMTY6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMTc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTgtXHRpbnQgcmRkX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIyODpcdHJkZF9pZHggPSBtdDc5MTVfZ2V0X3JkZF9pZHgocGh5LCB2YWwgPT0gUkFEQVJfQkFDS0dST1VORCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI5LVx0aWYgKHJkZF9pZHggXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjM4PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JhZGFyX3RyaWdnZXIsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM5Olx0XHRcdCBtdDc5MTVfcmFkYXJfdHJpZ2dlciwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQyOm10NzkxNV9tdXJ1X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ0Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0Ni1cdGRldi1cdTAwM2VtdXJ1X2RlYnVnID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0NzpcdG10NzkxNV9tY3VfbXVydV9kZWJ1Z19zZXQoZGV2LCBkZXYtXHUwMDNlbXVydV9kZWJ1Zyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yNTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MzptdDc5MTVfbXVydV9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjU0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfbXVydV9kZWJ1ZywgbXQ3OTE1X211cnVfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI2MzpcdFx0XHQgbXQ3OTE1X211cnVfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjY1OnN0YXRpYyBpbnQgbXQ3OTE1X211cnVfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjY2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjc6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI2ODpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI2OS1cdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGxfbm9uX2hlX3R5cGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI5MjpcdHJldCA9IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19nZXQocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1MTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X211cnVfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00NTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1NDptdDc5MTVfcmRkX21vbml0b3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDU2Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1Ny1cdHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZiA9IFx1MDAyNmRldi1cdTAwM2VyZGQyX2NoYW5kZWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NjM6XHRpZiAoIW10NzkxNV9lZXByb21faGFzX2JhY2tncm91bmRfcmFkYXIoZGV2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2NC1cdFx0c2VxX3B1dHMocywgXCYjMzQ7bm8gYmFja2dyb3VuZCByYWRhciBjYXBhYmlsaXR5XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTA1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MDY6bXQ3OTE1X2Z3X2RlYnVnX3dtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTA4Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTA5LVx0ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MzA6XHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NDA6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfZGJnX2N0cmwoZGV2LCBkZWJ1ZywgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NDEtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU1OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTYwOm10NzkxNV9md19kZWJ1Z193bV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjI6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1Njk6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfd20sIG10NzkxNV9md19kZWJ1Z193bV9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTcwOlx0XHRcdCBtdDc5MTVfZndfZGVidWdfd21fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTcyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NzM6bXQ3OTE1X2Z3X2RlYnVnX3dhX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU3NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTc1Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc2LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4MDpcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIGRldi1cdTAwM2Vmdy5kZWJ1Z193YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4NDpcdHJldCA9IG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChTRVQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4NS1cdFx0XHRcdE1DVV9XQV9QQVJBTV9QRE1BX1JYLCAhIWRldi1cdTAwM2Vmdy5kZWJ1Z193YSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU5Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTk0Om10NzkxNV9md19kZWJ1Z193YV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTk1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1OTY6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MDM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfd2EsIG10NzkxNV9md19kZWJ1Z193YV9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjA0Olx0XHRcdCBtdDc5MTVfZndfZGVidWdfd2Ffc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTYzMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjMxOm10NzkxNV9md19kZWJ1Z19iaW5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM2LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Mzc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NDk6XHRyZXR1cm4gbXQ3OTE1X2Z3X2RlYnVnX3dtX3NldChkZXYsIGRldi1cdTAwM2Vmdy5kZWJ1Z193bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjUwLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjUyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTM6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjU0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5MTVfZndfZGVidWdfYmluX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjM6XHRcdFx0IG10NzkxNV9md19kZWJ1Z19iaW5fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjY1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjY6bXQ3OTE1X2Z3X3V0aWxfd21fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Njg6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd20pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02ODY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NzptdDc5MTVfZndfdXRpbF93YV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4OTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTMtXHRpZiAoZGV2LVx1MDAzZWZ3LmRlYnVnX3dhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY5NDpcdFx0cmV0dXJuIG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChRVUVSWSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjk1LVx0XHRcdFx0XHQgTUNVX1dBX1BBUkFNX0NQVV9VVElMLCAwLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjcwMDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd2EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTcwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03MDI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3MDM6bXQ3OTE1X2FtcGR1X3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MDQtXHRcdFx0ICAgc3RydWN0IHNlcV9maWxlICpmaWxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTcwNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzA2Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA3LVx0Ym9vbCBleHRfcGh5ID0gcGh5ICE9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTczMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjczNDptdDc5MTVfdHhiZl9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03ODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4MTptdDc5MTVfdHhfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzgyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODM6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4NDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc4NS1cdHN0cnVjdCBtdDc2X21pYl9zdGF0cyAqbWliID0gXHUwMDI2cGh5LVx1MDAzZW1pYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc5MDpcdG10NzkxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzkxOlx0bXQ3OTE1X21hY191cGRhdGVfc3RhdHMocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3OTI6XHRtdDc5MTVfdHhiZl9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODExOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfdHhfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz04MTM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTQ6bXQ3OTE1X2h3X3F1ZXVlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB1MzIgc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTUtXHRcdCAgICAgY29uc3Qgc3RydWN0IGh3X3F1ZXVlX21hcCAqbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODE3Olx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTg6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTktXHR1MzIgaSwgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz04NDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDU6bXQ3OTE1X3N0YV9od19xdWV1ZV9yZWFkKHZvaWQgKmRhdGEsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDc6XHRzdHJ1Y3QgbXQ3OTE1X3N0YSAqbXN0YSA9IChzdHJ1Y3QgbXQ3OTE1X3N0YSAqKXN0YS1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDg6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gbXN0YS1cdTAwM2V2aWYtXHUwMDNlcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04NDktXHRzdHJ1Y3Qgc2VxX2ZpbGUgKnMgPSBkYXRhO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJ1ZyBGaXggZm9yIHRoZSBNVDc5MTVFIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBDT05GSUdfTVQ3OTE1RWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoZSBtYWtlZmlsZSBmcmFnbWVudCBjb25maXJtcyBpdCwgYG10NzkxNWUteSA6PSBwY2kubyAuLi5gLCB5ZXAsIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gVGhlbiBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMgd2l0aCBQQ0kgZHJpdmVycy4gTm9ybWFsbHksIEkmIzM5O2QgZXhwZWN0IGZ1enppbmcgdG8gaGFwcGVuIHZpYSBgc3l6X3BjaV8uLi5gIHBzZXVkby1zeXNjYWxscyBvciB3aGVuIGl0JiMzOTtzIGxvYWRlZCB3aXRoIGEgdmlydHVhbCBkZXZpY2UuIEhvd2V2ZXIsIGEgZ2VuZXJpYywgb3V0LW9mLXRoZS1ib3ggUENJIGZ1enplciBpbiBzeXprYWxsZXIgaXNuJiMzOTt0IHRoZSBub3JtLCB1bmxlc3MgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IHN1cHBvcnRlZCBvciBsZXZlcmFnZXMgdGhlIG5ldGxpbmsvbWFjODAyMTEgaW50ZXJmYWNlLgoKVGhlIGtleSBjbHVlIGlzIHRoZSBwYXRjaCBhdXRob3I6IGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gVGhpcyBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIHN5emthbGxlciBmb3VuZCBhIGJ1ZyBoZXJlLiBFaXRoZXIgdGhlIHBhdGNoIGlzIGZpeGluZyBhIGRpc2NvdmVyZWQgaXNzdWUsIG9yIGl0JiMzOTtzIGEgdGVzdCBwYXRjaC4gSWYgc3l6a2FsbGVyIGZvdW5kIHRoZSBidWcsIGl0IG1lYW5zIGl0JiMzOTtzIHJlYWNoYWJsZSBpbiBzeXprYWxsZXImIzM5O3MgZW52aXJvbm1lbnQsIHdoaWNoIGlzIGEgYmlnIGRlYWwhCgpJJiMzOTtsbCByZS1leGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBjaGFuZ2VzIGludm9sdmUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGluIGBtYWluLmNgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGluIGB3ZWQuY2AuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTVQ3OTE1RWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3MgY29uZmlndXJhdGlvbiwgYXMgdGhhdCB3b3VsZCBjb25maXJtIHRoaXMgaXMgYmVpbmcgdGVzdGVkIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgUENJIGZ1enppbmcuIEl0IHVzZXMgYHZoY2lgIGZvciBVU0IsIGJ1dCBQQ0kmIzM5O3Mgb2Z0ZW4gaGFuZGxlZCBieSBgc3l6X3BjaV8uLi5gIG9yIGJ5IHVzaW5nIHRoZSBzb2Z0d2FyZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgd2FpdCwgYG10NzZgIGhhcyBgbWFjODAyMTFgIHN1cHBvcnQhIFRoaXMgaXMgaW1wb3J0YW50LiBDb3VsZCB0aGlzIGJlIHRyaWdnZXJlZCB1c2luZyBgbWFjODAyMTFgIG5ldGxpbmsgY29tbWFuZHMsIGV2ZW4gd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gTWF5YmUgdGhlIGRyaXZlciBpcyBwcm9iZWQgdmlhIGEgZmFrZSBQQ0kgZGV2aWNlLiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgaGFzIGJlZW4gaW1wcm92aW5nLCBzbyB0aGF0JiMzOTtzIHBvc3NpYmxlLgoKVGhlIG5leHQgY3JpdGljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgaXMgcmVhY2hhYmxlIGZyb20gc3l6a2FsbGVyLCB3aGljaCBzaG91bGQgZ2l2ZSBpbnNpZ2h0IGludG8gaG93IHRoaXMgYnVnIHdhcyB0cmlnZ2VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzIyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxNzIzOm10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTcyNC1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NjU9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgxOS0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTgyMDpcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjEtXHQubmV0X3NldHVwX3RjID0gbXQ3Nl93ZWRfbmV0X3NldHVwX3RjLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTc5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBkaXN0aWxsZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIE1UNzkxNSBXaS1GaSBEcml2ZXIgLSBBIFdFRC1TcGVjaWZpYyBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgY29kZSByZWZlcmVuY2UsIGAubmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCwgd2l0aGluIHRoZSBgbXQ3OTE1X29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhpcyBpcyBhIGxpa2VseSBwb2ludCBmb3IgV0VEIChXaS1GaSBvZmZsb2FkIEVuZ2luZSBEcml2ZXIpIGludGVyYWN0aW9uLiYjMzQ7IFRoaXMgaXNuJiMzOTt0IHN1cnByaXNpbmcsIGdpdmVuIHRoZSBhcmNoaXRlY3R1cmUuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiB0aGlzIG1hbm5lciBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHBhY2tldCBmbG93IHRocm91Z2ggdGhpcyBzZWN0aW9uIGlzIGNvbnRpbmdlbnQgdXBvbiB0aGUgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlndXJhdGlvbiBvcHRpb24gYmVpbmcgZW5hYmxlZC4KClRoZSBuZXh0IG9idmlvdXMgdGhpbmcgdG8gY2hlY2sgaXMsIHdoYXQgaW5pdGlhbGlzYXRpb24gc3RlcHMgcmVsYXRlIHRvIHRoYXQgY29kZSBzZWN0aW9uPyBUaGF0IHRha2VzIG1lIHN0cmFpZ2h0IHRvIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIEkmIzM5O2xsIGRlbHZlIGludG8gdGhhdCB0byBjb25maXJtIHRoZSBwYXRoIHRha2VuLCBjb25maXJtIHRoYXQgaW5pdGlhbGlzYXRpb24gaXMgY29ycmVjdGx5IHBlcmZvcm1lZCBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIHJlY2VpdmUgYnVmZmVyIGlzIGhhbmRsZWQgaW4gdGhlIGNvbnRleHQgb2YgV0VELiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfd2VkX2luaXRfcnhfYnVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI0ND1pbnQgbXQ3Nl93ZWRfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNDctI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI0ODp1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNDktaW50IG10NzZfd2VkX29mZmxvYWRfZW5hYmxlKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyNTA9aW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGJvb2wgcmVzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI1MS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI1MjpzdGF0aWMgaW5saW5lIHUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE1LVx0d2VkLVx1MDAzZXdsYW4ub2ZmbG9hZF9kaXNhYmxlID0gbXQ3Nl93ZWRfb2ZmbG9hZF9kaXNhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjcxNjpcdHdlZC1cdTAwM2V3bGFuLmluaXRfcnhfYnVmID0gbXQ3Nl93ZWRfaW5pdF9yeF9idWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE3LVx0d2VkLVx1MDAzZXdsYW4ucmVsZWFzZV9yeF9idWYgPSBtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9NDU2PWludCBtdDc5OTZfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjAzLVx0d2VkLVx1MDAzZXdsYW4uaW5pdF9idWYgPSBtdDc5OTZfd2VkX2luaXRfYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjYwNDpcdHdlZC1cdTAwM2V3bGFuLmluaXRfcnhfYnVmID0gbXQ3Nl93ZWRfaW5pdF9yeF9idWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjA1LVx0d2VkLVx1MDAzZXdsYW4ucmVsZWFzZV9yeF9idWYgPSBtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTI5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZfd2VkX3JlbGVhc2VfcnhfYnVmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMxLSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MzI6dTMyIG10NzZfd2VkX2luaXRfcnhfYnVmKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkLCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtODMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYzo4NDpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9pbml0X3J4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTU5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdFRCBPZmZsb2FkIFBhdGNoIGZvciBNZWRpYVRlayBTb0NzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggcGVydGFpbnMgdG8gV2lyZWxlc3MgRXRoZXJuZXQgRGlzcGF0Y2hlciAoV0VEKSBvZmZsb2FkIG9uIE1lZGlhVGVrIFN5c3RlbS1vbi1DaGlwcy4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIEkgZXZlbiByZWFjaCB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVHlwaWNhbGx5LCBQQ0kgZGV2aWNlcyBsaWtlIHRoZSBNVDc5MTUgYXJlIGVpdGhlciBhYnNlbnQgaW4gUUVNVS9HQ0UsIG9yIHRoZXkgcmVxdWlyZSBwYXNzLXRocm91Z2ggb3IgZW11bGF0aW9uLiBQZXJoYXBzIGBzeXprYWxsZXJgJiMzOTtzIGBzeXpfcGNpXy4uLmAgY2FsbHMgY291bGQgcHJvYmUgdGhlIGRyaXZlciwgYXNzdW1pbmcgdGhlIFBDSSBJRCBpcyBhIG1hdGNoLgoKV2FpdCwgZG9lcyBgc3l6a2FsbGVyYCBzcGVjaWZpY2FsbHkgdGVzdCBNZWRpYVRlayBXaS1GaSBkcml2ZXJzPyBUaGlzIHBhdGNoIGlzIGZyb20gYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBhIGBzeXprYWxsZXJgLWRpc2NvdmVyZWQgYnVnIGFuZCBpdHMgY29ycmVzcG9uZGluZyBmaXguIEludGVyZXN0aW5nLgoKSG9sZCBvbiBhIHNlY29uZCwgSSByZWNhbGwgdGhhdCBgc3l6a2FsbGVyYCBkb2VzIGhhdmUgV2ktRmkgZHJpdmVyIHRlc3RpbmcgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQmIzM5O3MgYSAqc29mdHdhcmUqIHNpbXVsYXRvciwgaXNuJiMzOTt0IGl0PyBGb3IgKmhhcmR3YXJlKiBkcml2ZXJzLCBJIHRoaW5rIGBzeXprYWxsZXJgIG9mZmVycyBhIFVTQiBmdXp6ZXIgKGR1bW15X2hjZCkgYW5kIGEgUENJIGZ1enplci4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYENPTkZJR19NVDc5MTVFYCBpcyBhIFBDSSBkcml2ZXIuIFllcywgaXQgbG9va3MgbGlrZSBpdCBpczogYG10NzkxNWUteSA6PSBwY2kubyAuLi5gLiBHb29kLiBOb3csIGxldCBtZSBzZWUgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdG8gcmVhY2ggdGhlIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gcmVxdWlyZSBgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYC4gVGltZSB0byBkZWx2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIHByZXNlbmNlIGFuZCBzZXR1cCBvZiBgTkVUX01FRElBVEVLX1NPQ19XRURgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfTUVESUFURUtfU09DX1dFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9OTc0PW10NzZfZG1hX3J4X3Byb2Nlc3Moc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTgzLVx0aWYgKChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19XRURfUlJPX0VOKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5ODQ6XHQgICAgKElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTg1LVx0ICAgICBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjQ5OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI0ND1pbnQgbXQ3Nl93ZWRfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNDYtXHRcdFx0ICB2b2lkICp0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI0NzojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ4LXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyNjI9c3RhdGljIGlubGluZSBpbnQgbXQ3Nl93ZWRfZG1hX3NldHVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNjc6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjkxPXN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzZfZGV2ICptdDc2X3dlZF90b19kZXYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyOTM6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI5NC1cdGlmICh3ZWQtXHUwMDNld2xhbi5oaWYyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI5NS1cdFx0cmV0dXJuIGNvbnRhaW5lcl9vZih3ZWQsIHN0cnVjdCBtdDc2X2RldiwgbW1pby53ZWRfaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjk2OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyOTctXHRyZXR1cm4gY29udGFpbmVyX29mKHdlZCwgc3RydWN0IG10NzZfZGV2LCBtbWlvLndlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE2NzM9bXQ3OTE1X3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MjE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MjItc3RhdGljIGludFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzY1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MTgtXHQuc2V0X3JhZGFyX2JhY2tncm91bmQgPSBtdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTgxOTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyMC1cdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTE3Nzc9aW50IG10NzkxNV9tY3Vfd2VkX2VuYWJsZV9yeF9zdGF0cyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTc3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoxNzc5OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTE3ODAtXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz01NjU9c3RhdGljIHUzMiBtdDc5MTVfcm13KHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTMyIG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo1ODA6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU4MS1zdGF0aWMgdm9pZCBtdDc5MTVfbW1pb193ZWRfdXBkYXRlX3J4X3N0YXRzKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz02MzM9aW50IG10NzkxNV9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjYzNjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNjM3LVx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9ODI1PXN0YXRpYyB2b2lkIG10Nzk5Nl9ycm9faHdfaW5pdF92MyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODMzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzQtXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXHUwMDI2XHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDYtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ3OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjk5ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTk5LVx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAwNS1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMDY6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwMDctXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jPTIzODE9bXQ3OTk2X25ldF9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNC1cdHBhdGgtXHUwMDNlZGV2ID0gY3R4LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDE1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDE2LVx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yNTEwPWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10Nzk5Nl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1NjQtXHQubmV0X2ZpbGxfZm9yd2FyZF9wYXRoID0gbXQ3OTk2X25ldF9maWxsX2ZvcndhcmRfcGF0aCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTY1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTY2LVx0Lm5ldF9zZXR1cF90YyA9IG10NzZfd2VkX25ldF9zZXR1cF90Yyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9NDEwPXN0YXRpYyB1MzIgbXQ3OTk2X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6NDI1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00MjYtc3RhdGljIGludCBtdDc5OTZfbW1pb193ZWRfcmVzZXQoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQ1Nj1pbnQgbXQ3OTk2X21taW9fd2VkX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ1OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6NDU5OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00NjAtXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz04NjA9aW50IG10NzZfdG9rZW5fY29uc3VtZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqKnB0eHdpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODc4OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04NzktXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTkxMj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjkyODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI5LVx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYzozMTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMyLXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0xNjc9RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl93ZWRfZG1hX3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MTY4OiNlbmRpZiAvKkNPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDIzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1lZGlhVGVrIFdFRCBPZmZsb2FkKioKCk9rYXksIHNvIHRoaXMgYnVnIHJlcXVpcmVzIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBldmVuIGZ1enogdGhpcz8gVGhlIE1lZGlhVGVrIFdFRCBvZmZsb2FkIGlzIGEgaGFyZHdhcmUgdGhpbmcgb24gTWVkaWFUZWsgU29DcywgYW5kIFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZSB0aG9zZSBkaXJlY3RseS4gQnV0IHdhaXQsIFN5emthbGxlciAqZm91bmQqIHRoZSBidWcuIEhvdz8gTWF5YmUgaXQmIzM5O3MgcnVubmluZyBvbiBhIHJlYWwgTWVkaWFUZWsgU29DPyBTeXprYWxsZXIgKmNhbiogYmUgcnVuIG9uIHJlYWwgaGFyZHdhcmUsIGxpa2UgQW5kcm9pZCBkZXZpY2VzIG9yIHJvdXRlcnMsIGFmdGVyIGFsbC4gT3IgcGVyaGFwcyB0aGUgZHJpdmVyIGlzIGJlaW5nIGNvbXBpbGVkIGFuZCBwcm9iZWQgdGhyb3VnaCBhIHZpcnR1YWwgUENJIGRldmljZSwgbWFraW5nIHRoZSBjb2RlIGFjY2Vzc2libGUuCgpUaGlua2luZyBhYm91dCBpdCwgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHNldCB1cCBhIGZvcndhcmQgcGF0aCwgbGlrZSBmb3IgYSBicmlkZ2Ugb3Igcm91dGluZyBvZmZsb2FkLiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBzZWVtcyB0byBnZXQgY2FsbGVkIGJ5IGBuZnRfZndkX2R1cF9uZXRkZXZfb2ZmbG9hZGAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFNvLCBpZiBTeXprYWxsZXIgY2FuIGNyZWF0ZSBhIHZpcnR1YWwgUENJIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MTVlYCwgdGhhdCBjb3VsZCB0cmlnZ2VyIGl0LgoKSGFuZyBvbi4uLiBTeXprYWxsZXIgaGFzIHRob3NlIGBzeXpfcGNpXy4uLmAgcHNldWRvLXN5c2NhbGxzIHRvIGluamVjdCBQQ0kgZGV2aWNlcy4gQnV0LCBkb2VzIGl0IG5lZWQgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgdG8gbWFrZSB0aGF0IHdvcms/IFRoYXQmIzM5O3MgdGhlIGtleS4gSSBzaG91bGQgY2hlY2sgaWYgdGhhdCBjb25maWcgaXMgZW5hYmxlZCBpbiB0aGUgU3l6a2FsbGVyIGJ1aWxkLiBJdCYjMzk7cyBhIGNvbmZpZyBvcHRpb24sIHJpZ2h0PyBUbyBmdXp6IHRoaXMgcHJvcGVybHksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTVQ3OTE1RWAgYW5kIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgIGFyZSBib3RoIGVuYWJsZWQuIExldCBtZSBjaGVjayB3aGF0IHRoYXQgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9NRURJQVRFS19TT0NfV0VEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OTYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkV4YW1pbmluZyBDb25kaXRpb25hbCBDb21waWxhdGlvbiBmb3IgdGhlIE1UNzkxNUUgRHJpdmVyKioKClJpZ2h0LCBzbyB0aGlzIHNlZW1zIHRvIGJlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc2NlbmFyaW8gZm9yIHRoZSBNVDc5MTVFIGRyaXZlciBjb2RlLiBJJiMzOTttIGltbWVkaWF0ZWx5IG5vdGljaW5nIGEgZGVwZW5kZW5jeSBvbiBlaXRoZXIgYEFSQ0hfTUVESUFURUtgIGJlaW5nIGRlZmluZWQsIG9yLCBjcml0aWNhbGx5LCBgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyB0aGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGluIGEgY291cGxlIG9mIHdheXMuIFRoZSB0eXBpY2FsIHBhdGggaXMgbGlrZWx5IHRpZWQgdG8gdGhlIE1lZGlhdGVrIGFyY2hpdGVjdHVyZSwgYXMgeW91JiMzOTtkIGV4cGVjdC4gSG93ZXZlciwgdGhlIG1lbnRpb24gb2YgYENPTVBJTEVfVEVTVGAgc3VnZ2VzdHMgdGhhdCB0aGVyZSYjMzk7cyBhIG1lY2hhbmlzbSB0byBmb3JjZSB0aGUgaW5jbHVzaW9uIG9mIHRoZSBkcml2ZXIsIHByb2JhYmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9yIGZvciBhIGJyb2FkZXIgYnVpbGQgY29uZmlndXJhdGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBtaWdodCBub3QgYmUgZXhwbGljaXRseSBNZWRpYXRlaywgYnV0IHdlIHN0aWxsIHdhbnQgdG8gYnVpbGQgaXQgYW5kIGV4YW1pbmUgaXRzIGNvbXBpbGVkIG91dHB1dC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIGBDT05GSUdfTVQ3OTE1RWAgaXMgYW4gb3B0aW9uIHRoYXQgY2FuIGJlIGRpc2FibGVkLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhhdCBvcHRpb24gaW4gbXkgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MTVFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6Mjpjb25maWcgTVQ3OTE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODMwOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDcyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZ1bG5lcmFiaWxpdHkgaW4gTVQ3OTE1IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCBjZW50ZXJzIGFyb3VuZCB0aGUgTWVkaWFUZWsgTVQ3OTE1IGRyaXZlciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIE1BQzgwMjExIGFuZCBQQ0kgc3Vic3lzdGVtcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgTVQ3OTE1RWAgYW5kIGBORVRfTUVESUFURUtfU09DX1dFRGAgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBJbml0aWFsbHksIHRoZSBjb2RlIGRldGVybWluZWQgdGhlIHF1ZXVlIGJhc2VkIG9uIHdoZXRoZXIgYHBoeWAgd2FzIHRoZSBzYW1lIGFzIGAmYW1wO2Rldi0mZ3Q7cGh5YC4gTm93LCBpdCYjMzk7cyBjaGFuZ2VkIHRvIHVzZSBgcGh5LSZndDttdDc2LSZndDtiYW5kX2lkeGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHRoaXMgc2VlbXMgbGlrZSBhIG1vcmUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHF1ZXVlIHNlbGVjdGlvbi4mIzM0OyBgcGh5YCBpcyBhIHBvaW50ZXIgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LCBhbmQsIGNyaXRpY2FsbHksIGl0JiMzOTtzIGRlcml2ZWQgZnJvbSBgdmlmLSZndDtkcnZfcHJpdmAuICBJIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlIOKAkyBpZiBgcGh5LSZndDttdDc2YCBpcyBOVUxMLCB0aGlzIGNvdWxkIGJlIGEgY3Jhc2guICBIb3dldmVyLCBnaXZlbiB0aGUgZHJpdmVyJiMzOTtzIHN0cnVjdHVyZSwgYHBoeS0mZ3Q7bXQ3NmAgaXMgKnByb2JhYmx5KiBpbml0aWFsaXplZCBwcm9wZXJseS4gVGhlIG9yaWdpbmFsIGNvbXBhcmlzb24gYHBoeSAhPSAmYW1wO2Rldi0mZ3Q7cGh5YCBsb29rcyBsaWtlIGEgYnVnLgoKVGhlbiBJIHNlZSB0aGUgbW9kaWZpY2F0aW9uIGluIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAsIGFuZCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgYnJhbmNoZXMgYmFzZWQgb24gYHdlZC0mZ3Q7dmVyc2lvbmAgYW5kIGBkZXYtJmd0O3BoeS5iYW5kX2lkeGAuICBXZSBoYXZlIGEgY29uZGl0aW9uYWwgYXNzaWdubWVudCBvZiB0aGUgcXVldWU6IGVpdGhlciBgJmFtcDtkZXYtJmd0O3FfcnhbTVRfUlhRX0JBTkQxXWAgb3IgYCZhbXA7ZGV2LSZndDtxX3J4W01UX1JYUV9NQUlOXWAuIFRoaXMgc2VlbXMgcmVhY2hhYmxlLgoKTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gIFN5emthbGxlciBpcyB0aGUga2V5IHRvIHRoaXMsIEkgdGhpbmssIHBhcnRpY3VsYXJseSBpZiBpdCYjMzk7cyBmdXp6aW5nIFBDSSBkZXZpY2VzLiAgSWYgU3l6a2FsbGVyIGNhbiBwcm9iZSB0aGUgZHJpdmVyLCBpdCB3aWxsIGNhbGwgdGhlc2UgZnVuY3Rpb25zLiBHaXZlbiB0aGF0IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBjYWxsZWQgYnkgdGhlIG5ldHdvcmsgc3RhY2ssIGlmIHRoZSBkcml2ZXIgaXMgc3VjY2Vzc2Z1bGx5IHByb2JlZCwgYSBuZXRkZXYgaXMgcmVnaXN0ZXJlZCBhbmQgdGhlbiB0aGUgbmV0d29yayBzdGFjayBjYWxscyBgbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gIFN5emthbGxlciBjYW4gdXNlIGBzeXpfcGNpXy4uLmAgY2FsbHMgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcy4gSSYjMzk7bSB3b25kZXJpbmcgdGhvdWdoIGlmIHRoZSBkcml2ZXIgY2FuIGJlIHN1Y2Nlc3NmdWxseSBwcm9iZWQgd2l0aG91dCByZWFsIGhhcmR3YXJlLiBVc3VhbGx5LCBtb3JlIGNvbXBsZXggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gb2Z0ZW4gZmFpbHMgdW5sZXNzIHRoZSBlbXVsYXRvciBoYW5kbGVzIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLiBJIG5lZWQgdG8gY2hlY2sgYG10NzkxNV9wY2lfcHJvYmVgIHRvIGtub3cgZm9yIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz04ND1zdGF0aWMgaW50IG10NzkxNV9wY2lfaGlmMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDM6c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTA0LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MjIxPXN0cnVjdCBwY2lfZHJpdmVyIG10NzkxNV9oaWZfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyMy1cdC5pZF90YWJsZVx0PSBtdDc5MTVfaGlmX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNDpcdC5wcm9iZVx0XHQ9IG10NzkxNV9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjUtXHQucmVtb3ZlXHRcdD0gbXQ3OTE1X2hpZl9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MjI4PXN0cnVjdCBwY2lfZHJpdmVyIG10NzkxNV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cdC5pZF90YWJsZVx0PSBtdDc5MTVfcGNpX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzMTpcdC5wcm9iZVx0XHQ9IG10NzkxNV9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzItXHQucmVtb3ZlXHRcdD0gbXQ3OTE1X3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTkzCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbXQ3OTE1X3BjaV9wcm9iZWAqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHdoYXQgdGhlIGBtdDc5MTVfcGNpX3Byb2JlYCBmdW5jdGlvbiBpcyBkb2luZy4gSSYjMzk7bSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIFBDSSBkZXZpY2UuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgZ2V0cyByZXNvdXJjZSBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSB0aGUgQkFScywgaW50ZXJydXB0cywgYW5kIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRhdGEgaXQgZ3JhYnMgZnJvbSB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkgZXhwZWN0IHRoZXJlJiMzOTtsbCBiZSBzb21lIGRldmljZS1zcGVjaWZpYyBzZXR1cCBoZXJlLCBwcm9iYWJseSBkZWFsaW5nIHdpdGggdGhlIE1lZGlhVGVrJiMzOTtzIGludGVybmFsIHJlZ2lzdGVycyBhbmQgcG9zc2libHkgYW55IGZpcm13YXJlIGxvYWRpbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCwgZXJyb3IgY29uZGl0aW9ucywgYW5kIGludGVycnVwdCByZWdpc3RyYXRpb24uIFRoZSBgcHJvYmVgIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50LCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgaXQgc2V0cyB1cCB0aGUgYmFzaWMgZGV2aWNlIHN0cnVjdHVyZSwgYWxsb2NhdGVzIG1lbW9yeSwgYW5kIGNvbmZpZ3VyZXMgdGhlIGhhcmR3YXJlIHNvIHRoYXQgdGhlIGRyaXZlciBpcyByZWFkeSB0byBnby4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYXMgd2VsbDsgaG93IGl0IGdyYWNlZnVsbHkgY2xlYW5zIHVwIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIGlzIGNydWNpYWwuIEZpbmFsbHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGlzIHByb2JlIHJvdXRpbmUgY29ubmVjdHMgdG8gb3RoZXIgcGllY2VzIG9mIHRoZSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcGFydHMgdGhhdCBoYW5kbGUgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGFuZCBkYXRhIHRyYW5zbWlzc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMzpcdHN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMDQ6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEwNTpcdHtcbiAxMDY6XHRcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYyID0gTlVMTDtcbiAxMDc6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXY7XG4gMTA4Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTA5Olx0XHRpbnQgaXJxO1xuIDExMDpcdFx0aW50IHJldDtcbiAxMTE6XHRcbiAxMTI6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAxMTM6XHRcdGlmIChyZXQpXG4gMTE0Olx0XHRcdHJldHVybiByZXQ7XG4gMTE1Olx0XG4gMTE2Olx0XHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XG4gMTE3Olx0XHRpZiAocmV0KVxuIDExODpcdFx0XHRyZXR1cm4gcmV0O1xuIDExOTpcdFxuIDEyMDpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMTIxOlx0XG4gMTIyOlx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIDEyMzpcdFx0aWYgKHJldClcbiAxMjQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMjU6XHRcbiAxMjY6XHRcdG10NzZfcGNpX2Rpc2FibGVfYXNwbShwZGV2KTtcbiAxMjc6XHRcbiAxMjg6XHRcdGlmIChpZC1cdTAwM2VkZXZpY2UgPT0gMHg3OTE2IHx8IGlkLVx1MDAzZWRldmljZSA9PSAweDc5MGEpXG4gMTI5Olx0XHRcdHJldHVybiBtdDc5MTVfcGNpX2hpZjJfcHJvYmUocGRldik7XG4gMTMwOlx0XG4gMTMxOlx0XHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcbiAxMzI6XHRcdFx0XHRcdGlkLVx1MDAzZWRldmljZSk7XG4gMTMzOlx0XHRpZiAoSVNfRVJSKGRldikpXG4gMTM0Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldik7XG4gMTM1Olx0XG4gMTM2Olx0XHRtZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gMTM3Olx0XHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcbiAxMzg6XHRcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcbiAxMzk6XHRcbiAxNDA6XHRcdHJldCA9IG10NzkxNV9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgdHJ1ZSwgXHUwMDI2aXJxKTtcbiAxNDE6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMTQyOlx0XHRcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjtcbiAxNDM6XHRcbiAxNDQ6XHRcdGlmICghcmV0KSB7XG4gMTQ1Olx0XHRcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcbiAxNDY6XHRcbiAxNDc6XHRcdFx0cmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIDEsIFBDSV9JUlFfQUxMX1RZUEVTKTtcbiAxNDg6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxNDk6XHRcdFx0XHRnb3RvIGZyZWVfZGV2aWNlO1xuIDE1MDpcdFxuIDE1MTpcdFx0XHRpcnEgPSBwZGV2LVx1MDAzZWlycTtcbiAxNTI6XHRcdH1cbiAxNTM6XHRcbiAxNTQ6XHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxuIDE1NTpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4gMTU2Olx0XHRpZiAocmV0KVxuIDE1NzpcdFx0XHRnb3RvIGZyZWVfd2VkX29yX2lycV92ZWN0b3I7XG4gMTU4Olx0XG4gMTU5Olx0XHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgdG50ZXJydXB0IGVuYWJsZSAqL1xuIDE2MDpcdFx0bXQ3Nl93cihkZXYsIE1UX1BDSUVfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xuIDE2MTpcdFxuIDE2MjpcdFx0aWYgKGhpZjIpIHtcbiAxNjM6XHRcdFx0ZGV2LVx1MDAzZWhpZjIgPSBoaWYyO1xuIDE2NDpcdFxuIDE2NTpcdFx0XHRtdDc2X3dyKGRldiwgTVRfSU5UMV9NQVNLX0NTUiwgMCk7XG4gMTY2Olx0XHRcdC8qIG1hc3RlciBzd2l0Y2ggb2YgUENJZSB0bnRlcnJ1cHQgZW5hYmxlICovXG4gMTY3Olx0XHRcdGlmIChpc19tdDc5MTUobWRldikpXG4gMTY4Olx0XHRcdFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcbiAxNjk6XHRcdFx0ZWxzZVxuIDE3MDpcdFx0XHRcdG10NzZfd3IoZGV2LCBNVF9QQ0lFMV9NQUNfSU5UX0VOQUJMRV9NVDc5MTYsIDB4ZmYpO1xuIDE3MTpcdFxuIDE3MjpcdFx0XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBkZXYtXHUwMDNlaGlmMi1cdTAwM2VpcnEsXG4gMTczOlx0XHRcdFx0XHQgICAgICAgbXQ3OTE1X2lycV9oYW5kbGVyLCBJUlFGX1NIQVJFRCxcbiAxNzQ6XHRcdFx0XHRcdCAgICAgICBLQlVJTERfTU9ETkFNRSBcJiMzNDstaGlmXCYjMzQ7LCBkZXYpO1xuIDE3NTpcdFx0XHRpZiAocmV0KVxuIDE3NjpcdFx0XHRcdGdvdG8gZnJlZV9oaWYyO1xuIDE3NzpcdFx0fVxuIDE3ODpcdFxuIDE3OTpcdFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuIDE4MDpcdFx0aWYgKHJldClcbiAxODE6XHRcdFx0Z290byBmcmVlX2hpZjJfaXJxO1xuIDE4MjpcdFxuIDE4MzpcdFx0cmV0dXJuIDA7XG4gMTg0Olx0XG4gMTg1Olx0ZnJlZV9oaWYyX2lycTpcbiAxODY6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbiAxODc6XHRcdFx0ZGV2bV9mcmVlX2lycShtZGV2LVx1MDAzZWRldiwgZGV2LVx1MDAzZWhpZjItXHUwMDNlaXJxLCBkZXYpO1xuIDE4ODpcdGZyZWVfaGlmMjpcbiAxODk6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbiAxOTA6XHRcdFx0cHV0X2RldmljZShkZXYtXHUwMDNlaGlmMi1cdTAwM2VkZXYpO1xuIDE5MTpcdFx0ZGV2bV9mcmVlX2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBkZXYpO1xuIDE5MjpcdGZyZWVfd2VkX29yX2lycV92ZWN0b3I6XG4gMTkzOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuIDE5NDpcdFx0XHRtdGtfd2VkX2RldmljZV9kZXRhY2goXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCk7XG4gMTk1Olx0XHRlbHNlXG4gMTk2Olx0XHRcdHBjaV9mcmVlX2lycV92ZWN0b3JzKHBkZXYpO1xuIDE5NzpcdGZyZWVfZGV2aWNlOlxuIDE5ODpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMTk5Olx0XG4gMjAwOlx0XHRyZXR1cm4gcmV0O1xuIDIwMTpcdH1cbiAyMDI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNjIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGF0IGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gYG10NzkxNV9wY2lfcHJvYmVgIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSXQmIzM5O3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgc28gdGhhdCBtYWtlcyBzZW5zZSBhcyB0aGUgZW50cnkgZm9yIHRoZSBQQ0kgZGV2aWNlLiBJdCYjMzk7cyBjYWxsaW5nIGBtdDc5MTVfbW1pb19wcm9iZWAgZmlyc3QuIFJpZ2h0LCBgbW1pb19wcm9iZWAgcHJvYmFibHkgZGVhbHMgd2l0aCB0aGUgbWVtb3J5LW1hcHBlZCBJL08gaW5pdGlhbGl6YXRpb24sIHNldHRpbmcgdXAgdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gTWFrZXMgc2Vuc2UuIFRoZW4sIHRoZSBmbG93IGp1bXBzIGludG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiAgVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiBub3cuIFRoYXQgZnVuY3Rpb24gbXVzdCBiZSB3aGVyZSB0aGUgZHJpdmVyIGZpbmFsaXplcyBpdHMgc2V0dXAsIHJlZ2lzdGVycyB0aGUgZGV2aWNlIHdpdGggdGhlIHN5c3RlbSwgYW5kIHByb2JhYmx5IG1ha2VzIGl0IGF2YWlsYWJsZSB0byB0aGUgbmV0d29ya2luZyBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSB0aGF0IHJlZ2lzdHJhdGlvbiB0byBzZWUgdGhlIGFjdHVhbCBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjA5PXN0YXRpYyB2b2lkIG10NzkxNV9zdG9wX2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIyMDppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQzMz11MzIgbXQ3OTE1X3dlZF9pbml0X2J1Zih2b2lkICpwdHIsIGRtYV9hZGRyX3QgcGh5cywgaW50IHRva2VuX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQzNTppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQzNi12b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0xMDM9c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3OTpcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNjQ6XHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjY1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNTQKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlIENhbGwqKgoKT2theSwgc28gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGhhcyBiZWVuIHRyaWdnZXJlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hlcmU/JiMzNDsgSSBzZWUgdGhhdCBgbXQ3OTh4X3dtYWNfcHJvYmVgIGFsc28gdXNlcyBpdC4gSW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgYG10Nzk4eF93bWFjX3Byb2JlYCBpcyB0aGF0IHBsYXRmb3JtIGRyaXZlciBwcm9iZSB0aWVkIHRvIGBDT05GSUdfTVQ3OThYX1dNQUNgLiBBbmQgd2l0aCBwbGF0Zm9ybSBkcml2ZXJzLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIFN5emthbGxlciBjb3VsZCBlYXNpbHkgaGl0IHRoaXMsIGVpdGhlciB0aHJvdWdoIGEgYHN5el9nZW5ldGxpbmtgIGNhbGwsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRldmljZSB0cmVlLCBvciBldmVuIHRoZSBkaXJlY3QgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhdHRhY2sgdmVjdG9yLgoKQnV0IHdhaXQsIHRoaXMgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIHJlZ2lzdHJhdGlvbi4gSXQmIzM5O3MgYWxzbyBkb2luZyBmaXJtd2FyZSBsb2FkaW5nIGFuZCBNQ1UgaW5pdGlhbGl6YXRpb24uIFRoaXMgcmFpc2VzIHRoZSBzdGFrZXMgY29uc2lkZXJhYmx5LiBBIGZhdWx0IGhlcmUgY291bGQgYmUgY2F0YXN0cm9waGljLiBJIG5lZWQgdG8gZGlnIGludG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIG1vcmUgY2xvc2VseS4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMjA6XHRpbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMTIyMTpcdHtcbjEyMjI6XHRcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyO1xuMTIyMzpcdFx0aW50IHJldDtcbjEyMjQ6XHRcbjEyMjU6XHRcdGRldi1cdTAwM2VwaHkuZGV2ID0gZGV2O1xuMTIyNjpcdFx0ZGV2LVx1MDAzZXBoeS5tdDc2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYucGh5O1xuMTIyNzpcdFx0ZGV2LVx1MDAzZW10NzYucGh5LnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuMTIyODpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyY193b3JrLCBtdDc5MTVfbWFjX3N0YV9yY193b3JrKTtcbjEyMjk6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MTVfbWFjX3dvcmspO1xuMTIzMDpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXN0YV9yY19saXN0KTtcbjEyMzE6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2V0d3RfbGlzdCk7XG4xMjMyOlx0XG4xMjMzOlx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmRldi1cdTAwM2VyZXNldF93YWl0KTtcbjEyMzQ6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTE1X21hY19yZXNldF93b3JrKTtcbjEyMzU6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlZHVtcF93b3JrLCBtdDc5MTVfbWFjX2R1bXBfd29yayk7XG4xMjM2Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkdW1wX211dGV4KTtcbjEyMzc6XHRcbjEyMzg6XHRcdGRldi1cdTAwM2VkYmRjX3N1cHBvcnQgPSBtdDc5MTVfYmFuZF9jb25maWcoZGV2KTtcbjEyMzk6XHRcbjEyNDA6XHRcdHBoeTIgPSBtdDc5MTVfYWxsb2NfZXh0X3BoeShkZXYpO1xuMTI0MTpcdFx0aWYgKElTX0VSUihwaHkyKSlcbjEyNDI6XHRcdFx0cmV0dXJuIFBUUl9FUlIocGh5Mik7XG4xMjQzOlx0XG4xMjQ0Olx0XHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xuMTI0NTpcdFx0aWYgKHJldClcbjEyNDY6XHRcdFx0Z290byBmcmVlX3BoeTI7XG4xMjQ3Olx0XG4xMjQ4Olx0XHRtdDc5MTVfaW5pdF93aXBoeShcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbjEyNDk6XHRcbjEyNTA6XHQjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREVcbjEyNTE6XHRcdGRldi1cdTAwM2VtdDc2LnRlc3Rfb3BzID0gXHUwMDI2bXQ3OTE1X3Rlc3Rtb2RlX29wcztcbjEyNTI6XHQjZW5kaWZcbjEyNTM6XHRcbjEyNTQ6XHRcdHJldCA9IG10NzZfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB0cnVlLCBtdDc2X3JhdGVzLFxuMTI1NTpcdFx0XHRcdFx0ICAgQVJSQVlfU0laRShtdDc2X3JhdGVzKSk7XG4xMjU2Olx0XHRpZiAocmV0KVxuMTI1NzpcdFx0XHRnb3RvIHN0b3BfaHc7XG4xMjU4Olx0XG4xMjU5Olx0XHRyZXQgPSBtdDc5MTVfdGhlcm1hbF9pbml0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuMTI2MDpcdFx0aWYgKHJldClcbjEyNjE6XHRcdFx0Z290byB1bnJlZ19kZXY7XG4xMjYyOlx0XG4xMjYzOlx0XHRpZiAocGh5Mikge1xuMTI2NDpcdFx0XHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShkZXYsIHBoeTIpO1xuMTI2NTpcdFx0XHRpZiAocmV0KVxuMTI2NjpcdFx0XHRcdGdvdG8gdW5yZWdfdGhlcm1hbDtcbjEyNjc6XHRcdH1cbjEyNjg6XHRcbjEyNjk6XHRcdGllZWU4MDIxMV9xdWV1ZV93b3JrKG10NzZfaHcoZGV2KSwgXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yayk7XG4xMjcwOlx0XG4xMjcxOlx0XHRkZXYtXHUwMDNlcmVjb3ZlcnkuaHdfaW5pdF9kb25lID0gdHJ1ZTtcbjEyNzI6XHRcbjEyNzM6XHRcdHJldCA9IG10NzkxNV9pbml0X2RlYnVnZnMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMjc0Olx0XHRpZiAocmV0KVxuMTI3NTpcdFx0XHRnb3RvIHVucmVnX3RoZXJtYWw7XG4xMjc2Olx0XG4xMjc3Olx0XHRyZXQgPSBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoZGV2KTtcbjEyNzg6XHRcdGlmIChyZXQpXG4xMjc5Olx0XHRcdGdvdG8gdW5yZWdfdGhlcm1hbDtcbjEyODA6XHRcbjEyODE6XHRcdHJldHVybiAwO1xuMTI4MjpcdFxuMTI4MzpcdHVucmVnX3RoZXJtYWw6XG4xMjg0Olx0XHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuMTI4NTpcdHVucmVnX2RldjpcbjEyODY6XHRcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMTI4NzpcdHN0b3BfaHc6XG4xMjg4Olx0XHRtdDc5MTVfc3RvcF9oYXJkd2FyZShkZXYpO1xuMTI4OTpcdGZyZWVfcGh5MjpcbjEyOTA6XHRcdGlmIChwaHkyKVxuMTI5MTpcdFx0XHRpZWVlODAyMTFfZnJlZV9odyhwaHkyLVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuMTI5MjpcdFx0cmV0dXJuIHJldDtcbjEyOTM6XHR9XG4xMjk0Olx0XG4xMjk1Olx0dm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjEyOTY6XHR7XG4xMjk3Olx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VkdW1wX3dvcmspO1xuMTI5ODpcdFx0bXQ3OTE1X3VucmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xuMTI5OTpcdFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcbjEzMDA6XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMzAxOlx0XHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzMDI6XHRcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XG4xMzAzOlx0XG4xMzA0Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzMDU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTg2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgc2VlIHRoZSBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZC4gVGltZSB0byBkaXNzZWN0IGl0cyBndXRzIGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgYmVhc3QgZ2V0cyBpdHMgaGFyZHdhcmUgaW5pdGlhbGl6ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBudWFuY2VzIG9mIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi4gSXMgaXQgZm9sbG93aW5nIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXM/IEFueSBjbGV2ZXIgdHJpY2tzIG9yIG9wdGltaXphdGlvbnM/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkLCBhbmQgaW4gd2hhdCBvcmRlcj8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHBvc3NpYmxlIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgYW55IGRldmlhdGlvbiBmcm9tIGJlc3QgcHJhY3RpY2VzIHRoYXQgbWlnaHQgcmVxdWlyZSBmdXJ0aGVyIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBmb2xsb3dzIHRoZSBzdGFuZGFyZCBpbml0aWFsaXphdGlvbiBwYXR0ZXJuIGZvciB0aGlzIGZhbWlseSBvciBpZiBNZWRpYVRlayBoYXMgc29tZXRoaW5nIHNwZWNpYWwgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9pbml0X2hhcmR3YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTgyNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODI4Om10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTgyOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyMjA9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjQ0Olx0cmV0ID0gbXQ3OTE1X2luaXRfaGFyZHdhcmUoZGV2LCBwaHkyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjQ1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU1MDgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLiBJIG5lZWQgdG8gZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgYmFzZWQgb24gbXkgcGFzdCBleHBlcmllbmNlcyB3aXRoIHNpbWlsYXIgaGFyZHdhcmUuIEkgd29uZGVyIGlmIHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSBjbG9jayBjb25maWd1cmF0aW9uIHRoZSB3YXkgSSB3b3VsZC4gQXJlIHRoZXkgdXRpbGl6aW5nIHRoZSBjb3JyZWN0IHBvd2VyIGRvbWFpbnMgYW5kIGZyZXF1ZW5jeSBzY2FsaW5nIGZvciBkaWZmZXJlbnQgb3BlcmF0aW5nIG1vZGVzPyBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMg4oCTIGFyZSB0aGV5IGJlaW5nIGVmZmljaWVudCB3aXRoIHRoZWlyIHdyaXRlcz8gQW55IHVubmVjZXNzYXJ5IHJlZ2lzdGVyIHJlYWRzIGR1cmluZyB0aGUgcHJvY2VzcyBhcmUgaW5zdGFudCBmbGFncyBmb3IgbWUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGR1cmluZyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHBoYXNlLiBTeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcz8gSW50ZXJydXB0IGhhbmRsaW5nIHNldHVwPyBUaGF0JiMzOTtzIGRlZmluaXRlbHkgd2hhdCBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzIG9mIHRoZSBNVDc5MTUgc3BlY2lmaWNhbGx5IHRvIHNwb3QgYW55IHBvdGVudGlhbCBtaXNjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aHJvdWdocHV0LCBsYXRlbmN5LCBvciBwb3dlciBjb25zdW1wdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25z4oCmCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODI3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODI3Olx0c3RhdGljIGludFxuIDgyODpcdG10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuIDgyOTpcdHtcbiA4MzA6XHRcdGludCByZXQsIGlkeDtcbiA4MzE6XHRcbiA4MzI6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfTUFTS19DU1IsIDApO1xuIDgzMzpcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9TT1VSQ0VfQ1NSLCB+MCk7XG4gODM0Olx0XG4gODM1Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTE1X2luaXRfd29yayk7XG4gODM2Olx0XG4gODM3Olx0XHRyZXQgPSBtdDc5MTVfZG1hX2luaXQoZGV2LCBwaHkyKTtcbiA4Mzg6XHRcdGlmIChyZXQpXG4gODM5Olx0XHRcdHJldHVybiByZXQ7XG4gODQwOlx0XG4gODQxOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiA4NDI6XHRcbiA4NDM6XHRcdHJldCA9IG10NzkxNV9tY3VfaW5pdChkZXYpO1xuIDg0NDpcdFx0aWYgKHJldClcbiA4NDU6XHRcdFx0cmV0dXJuIHJldDtcbiA4NDY6XHRcbiA4NDc6XHRcdHJldCA9IG10NzkxNV9lZXByb21faW5pdChkZXYpO1xuIDg0ODpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiA4NDk6XHRcdFx0cmV0dXJuIHJldDtcbiA4NTA6XHRcbiA4NTE6XHRcdGlmIChkZXYtXHUwMDNlY2FsKSB7XG4gODUyOlx0XHRcdHJldCA9IG10NzkxNV9tY3VfYXBwbHlfZ3JvdXBfY2FsKGRldik7XG4gODUzOlx0XHRcdGlmIChyZXQpXG4gODU0Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA4NTU6XHRcdH1cbiA4NTY6XHRcbiA4NTc6XHRcdC8qIEJlYWNvbiBhbmQgbWdtdCBmcmFtZXMgc2hvdWxkIG9jY3VweSB3Y2lkIDAgKi9cbiA4NTg6XHRcdGlkeCA9IG10NzZfd2NpZF9hbGxvYyhkZXYtXHUwMDNlbXQ3Ni53Y2lkX21hc2ssIE1UNzkxNV9XVEJMX1NUQSk7XG4gODU5Olx0XHRpZiAoaWR4KVxuIDg2MDpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbiA4NjE6XHRcbiA4NjI6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcbiA4NjM6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmh3X2tleV9pZHggPSAtMTtcbiA4NjQ6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLnR4X2luZm8gfD0gTVRfV0NJRF9UWF9JTkZPX1NFVDtcbiA4NjU6XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFx1MDAyNmRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkKTtcbiA4NjY6XHRcbiA4Njc6XHRcdHJldHVybiAwO1xuIDg2ODpcdH1cbiA4Njk6XHRcbiA4NzA6XHR2b2lkIG10NzkxNV9zZXRfc3RyZWFtX3ZodF90eGJmX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiA4NzE6XHR7XG4gODcyOlx0XHRpbnQgc3RzO1xuIDg3MzpcdFx0dTMyICpjYXA7XG4gODc0Olx0XG4gODc1Olx0XHRpZiAoIXBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNWdoeilcbiA4NzY6XHRcdFx0cmV0dXJuO1xuIDg3NzpcdFxuIDg3ODpcdFx0c3RzID0gaHdlaWdodDgocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKTtcbiA4Nzk6XHRcdGNhcCA9IFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzVnLnNiYW5kLnZodF9jYXAuY2FwO1xuIDg4MDpcdFxuIDg4MTpcdFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxuIDg4MjpcdFx0XHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxuIDg4MzpcdFx0XHRGSUVMRF9QUkVQKElFRUU4MDIxMV9WSFRfQ0FQX0JFQU1GT1JNRUVfU1RTX01BU0ssXG4gODg0Olx0XHRcdFx0ICAgc3RzIC0gMSk7XG4gODg1Olx0XG4gODg2Olx0XHQqY2FwIFx1MDAyNj0gfihJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0sgfFxuIDg4NzpcdFx0XHQgIElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XG4gODg4Olx0XHRcdCAgSUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FUl9DQVBBQkxFKTtcbiA4ODk6XHRcbiA4OTA6XHRcdGlmIChzdHMgXHUwMDNjIDIpXG4gODkxOlx0XHRcdHJldHVybjtcbiA4OTI6XHRcbiA4OTM6XHRcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FUl9DQVBBQkxFIHxcbiA4OTQ6XHRcdFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FUl9DQVBBQkxFIHxcbiA4OTU6XHRcdFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0ssXG4gODk2Olx0XHRcdFx0ICAgc3RzIC0gMSk7XG4gODk3Olx0fVxuIDg5ODpcdFxuIDg5OTpcdHN0YXRpYyB2b2lkXG4gOTAwOlx0bXQ3OTE1X3NldF9zdHJlYW1faGVfdHhiZl9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksXG4gOTAxOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqaGVfY2FwLCBpbnQgdmlmKVxuIDkwMjpcdHtcbiA5MDM6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuIDkwNDpcdFx0c3RydWN0IGllZWU4MDIxMV9oZV9jYXBfZWxlbSAqZWxlbSA9IFx1MDAyNmhlX2NhcC1cdTAwM2VoZV9jYXBfZWxlbTtcbiA5MDU6XHRcdGludCBzdHMgPSBod2VpZ2h0OChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjaGFpbm1hc2spO1xuIDkwNjpcdFx0dTggYywgc3RzXzE2MCA9IHN0cztcbiA5MDc6XHRcbiA5MDg6XHRcdC8qIENhbiBkbyAxLzIgb2YgU1RTIGluIDE2ME1oeiBtb2RlIGZvciBtdDc5MTUgKi9cbiA5MDk6XHRcdGlmIChpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gOTEwOlx0XHRcdGlmICghZGV2LVx1MDAzZWRiZGNfc3VwcG9ydClcbiA5MTE6XHRcdFx0XHRzdHNfMTYwIC89IDI7XG4gOTEyOlx0XHRcdGVsc2VcbiA5MTM6XHRcdFx0XHRzdHNfMTYwID0gMDtcbiA5MTQ6XHRcdH1cbiA5MTU6XHRcbiA5MTY6XHQjaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbiA5MTc6XHRcdGlmICh2aWYgPT0gTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVClcbiA5MTg6XHRcdFx0cmV0dXJuO1xuIDkxOTpcdCNlbmRpZlxuIDkyMDpcdFxuIDkyMTpcdFx0ZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bM10gXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVAzX1NVX0JFQU1GT1JNRVI7XG4gOTIyOlx0XHRlbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1s0XSBcdTAwMjY9IH5JRUVFODAyMTFfSEVfUEhZX0NBUDRfTVVfQkVBTUZPUk1FUjtcbiA5MjM6XHRcbiA5MjQ6XHRcdGMgPSBJRUVFODAyMTFfSEVfUEhZX0NBUDVfQkVBTUZPUk1FRV9OVU1fU05EX0RJTV9VTkRFUl84ME1IWl9NQVNLO1xuIDkyNTpcdFx0aWYgKHN0c18xNjApXG4gOTI2Olx0XHRcdGMgfD0gSUVFRTgwMjExX0hFX1BIWV9DQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fQUJPVkVfODBNSFpfTUFTSztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1NzcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgRmFpbHVyZSBvZiBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlIGluIGEgU3l6a2FsbGVyIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBhbmQgaXQmIzM5O3MgZmFpbGluZy4gVGhlIGxpa2VseSBjdWxwcml0IHNlZW1zIHRvIGJlIGBtdDc5MTVfbWN1X2luaXRgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBmaXJtd2FyZSBhbmQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBNQ1UuIEhtbSwgSSBiZXQgdGhlIHZpcnR1YWwgUENJIGRldmljZSBpbiBTeXprYWxsZXIgaXMgdGhlIGlzc3VlLCBpdCBwcm9iYWJseSBkb2VzbiYjMzk7dCBmdWxseSBpbXBsZW1lbnQgdGhlIE1DVSBwcm90b2NvbCwgY2F1c2luZyBgbXQ3OTE1X21jdV9pbml0YCB0byBib21iIG91dC4gQSBmYWlsZWQgYG10NzkxNV9tY3VfaW5pdGAgbWVhbnMgYSBmYWlsZWQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgoKQnV0IHdhaXQgYSBtaW51dGUsIGRvZXNuJiMzOTt0IFN5emthbGxlciBoYXZlIHNvbWUgd2F5IHRvIGJ5cGFzcyBvciBtb2NrIGZpcm13YXJlIGxvYWRpbmcsIG9yIGF0IGxlYXN0IHN1YnN0aXR1dGUgaXQ/IE5vLCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGdlbmVyYWxseSBtb2NrIGRyaXZlci1zcGVjaWZpYyBmaXJtd2FyZSB1bmxlc3MgdGhlcmUmIzM5O3MgZXhwbGljaXQgc3VwcG9ydC4gVGhpbmsgb2Ygc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgdGhhdCBvbmUgZG9lc24mIzM5O3QgcmVseSBvbiByZWFsIGZpcm13YXJlLiBTbywgSSBuZWVkIHRvIGFzc3VtZSB0aGF0IGl0JiMzOTtzIHRoZSBNQ1UgcHJvdG9jb2wgbm90IGJlaW5nIGltcGxlbWVudGVkLgoKSG9sZCBvbiwgSSYjMzk7bSBnZXR0aW5nIGFoZWFkIG9mIG15c2VsZi4gV2hhdCBpZiB0aGUgTUNVIGluaXQgZG9lc24mIzM5O3QgKmNvbXBsZXRlbHkqIGZhaWw/IENvdWxkIGl0IHBvdGVudGlhbGx5IGp1c3QgdGltZW91dCBhbmQgaWdub3JlIHRoZSBlcnJvcj8gVGhhdCBjb3VsZCBjYXVzZSBhIGRlbGF5ZWQgcHJvYmxlbSBvciBsZWFkIHRvIGluY29ycmVjdCBhc3N1bXB0aW9ucyBkb3duIHRoZSBsaW5lLiBUaGF0JiMzOTtzIHdvcnRoIGludmVzdGlnYXRpbmcuIEkgbmVlZCB0byBkaXZlIGJhY2sgaW50byB0aGUgYG10NzkxNV9tY3VfaW5pdGAgZnVuY3Rpb24gYW5kIHNlZSBob3cgaXQgaGFuZGxlcyBlcnJvcnMgYW5kIHBvdGVudGlhbCB0aW1lb3V0cy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGZhaWx1cmUgbWVjaGFuaXNtIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbWN1X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODI4PW10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODQzOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzUtXHQvKiBsb2FkIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzc2Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMjk2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIyOTc6bXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIyOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzNjE9c3RhdGljIGludCBtdDc5MTVfbWN1X3NldF9yZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMzg0OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDMyOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDM5OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDUxOlx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDUzPWludCBtdDc5MTVfcnVuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ1NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDU1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTYtaW50IG10NzkxNV9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5Mzg1CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTE1IE1DVSBGaXJtd2FyZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAuIFRoZSBvYnZpb3VzIGZ1bmN0aW9uIGlzIHRvIGxvYWQgdGhlIGZpcm13YXJlIOKAkyBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJZiBpdCBmYWlscywgd2UmIzM5O3ZlIGdvdCBhbiBlcnJvciByZXR1cm4sIHN0YW5kYXJkIHN0dWZmLiBCdXQgdGhlbiBteSBicmFpbiBzdGFydHMgd2hpcnJpbmcuLi4gd2FpdCBhIG1pbnV0ZSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnV6emluZyBhbmQgdGVzdGluZy4gU3l6a2FsbGVyJiMzOTtzIGdvdCB0aGF0IGBzeXpfbW91bnRfaW1hZ2VgIGNhbGwsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCByaWdodD8gV2UgY291bGQgZmVlZCBpdCBmaXJtd2FyZSBmaWxlcyBkaXJlY3RseSwgb3Igd2UgY291bGQganVzdCBtb2NrIGByZXF1ZXN0X2Zpcm13YXJlYCB0byByZXR1cm4gc3VjY2Vzcy4gVGhhdCYjMzk7cyB0aGUgZWFzeSBwYXRoLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogdGhlIGRyaXZlciB3aWxsICp0aGVuKiBwcm9jZWVkIHRvIHdyaXRlIHRoZSBmaXJtd2FyZSB0byB0aGUgZGV2aWNlIGFuZCB3YWl0IGZvciB0aGUgTUNVIHRvIGJvb3QuIEFuZCBoZXJlLCB3aXRoIG91ciB2aXJ0dWFsIGRldmljZSwgdGhpbmdzIGJlY29tZSBwcm9ibGVtYXRpYy4gVGhlIE1DVSAqd29uJiMzOTt0KiBhY3R1YWxseSBib290IGJlY2F1c2UgaXQmIzM5O3MgZW11bGF0ZWQsIG5vdCBleGVjdXRpbmcgcmVhbCBjb2RlLiBUaGlzIGlzIHdoZXJlIHdlIHdpbGwgc2VlIHRoZSByZWFsIGZhaWx1cmU7IHRoZSBkcml2ZXIgdGltZXMgb3V0LCBhbmQgdGhlIHByb2JlIHVsdGltYXRlbHkgZmFpbHMuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogd2hlcmUgZG9lcyB0aGUgdGltZW91dCBvY2N1cj8KCkkgbmVlZCB0byBkaXZlIGludG8gYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgdGltZW91dCBpcyBoYW5kbGVkIGFuZCBpZGVudGlmeSB0aGUgZXhhY3QgbW9tZW50IHRoZSBkcml2ZXIgd2lsbCBnaXZlIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM4NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjM4NDpcdGludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjIzODU6XHR7XG4yMzg2Olx0XHRpbnQgcmV0O1xuMjM4NzpcdFxuMjM4ODpcdFx0LyogZm9yY2UgZmlybXdhcmUgb3BlcmF0aW9uIG1vZGUgaW50byBub3JtYWwgc3RhdGUsXG4yMzg5Olx0XHQgKiB3aGljaCBzaG91bGQgYmUgc2V0IGJlZm9yZSBmaXJtd2FyZSBkb3dubG9hZCBzdGFnZS5cbjIzOTA6XHRcdCAqL1xuMjM5MTpcdFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcbjIzOTI6XHRcbjIzOTM6XHRcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XG4yMzk0Olx0XHRpZiAocmV0KVxuMjM5NTpcdFx0XHRyZXR1cm4gcmV0O1xuMjM5NjpcdFx0Lyogc2V0IGRyaXZlciBvd24gZm9yIGJhbmQxIHdoZW4gdHdvIGhpZiBleGlzdCAqL1xuMjM5NzpcdFx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG4yMzk4Olx0XHRcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMSk7XG4yMzk5Olx0XHRcdGlmIChyZXQpXG4yNDAwOlx0XHRcdFx0cmV0dXJuIHJldDtcbjI0MDE6XHRcdH1cbjI0MDI6XHRcbjI0MDM6XHRcdHJldCA9IG10NzkxNV9sb2FkX2Zpcm13YXJlKGRldik7XG4yNDA0Olx0XHRpZiAocmV0KVxuMjQwNTpcdFx0XHRyZXR1cm4gcmV0O1xuMjQwNjpcdFxuMjQwNzpcdFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4yNDA4Olx0XHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCAwKTtcbjI0MDk6XHRcdGlmIChyZXQpXG4yNDEwOlx0XHRcdHJldHVybiByZXQ7XG4yNDExOlx0XG4yNDEyOlx0XHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCAwKTtcbjI0MTM6XHRcdGlmIChyZXQpXG4yNDE0Olx0XHRcdHJldHVybiByZXQ7XG4yNDE1Olx0XG4yNDE2Olx0XHRtdDc2X2Nvbm5hY19tY3VfZGVsX3d0YmxfYWxsKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjI0MTc6XHRcbjI0MTg6XHRcdGlmICgobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbjI0MTk6XHRcdCAgICAgaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgfHxcbjI0MjA6XHRcdCAgICAhbXRrX3dlZF9nZXRfcnhfY2FwYShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXG4yNDIxOlx0XHRcdG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChDQVBBQklMSVRZKSwgMCwgMCwgMCk7XG4yNDIyOlx0XG4yNDIzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9td2RzKGRldiwgMSk7XG4yNDI0Olx0XHRpZiAocmV0KVxuMjQyNTpcdFx0XHRyZXR1cm4gcmV0O1xuMjQyNjpcdFxuMjQyNzpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsKGRldiwgTVVSVV9TRVRfUExBVEZPUk1fVFlQRSxcbjI0Mjg6XHRcdFx0XHRcdCAgICAgICBNVVJVX1BMQVRGT1JNX1RZUEVfUEVSRl9MRVZFTF8yKTtcbjI0Mjk6XHRcdGlmIChyZXQpXG4yNDMwOlx0XHRcdHJldHVybiByZXQ7XG4yNDMxOlx0XG4yNDMyOlx0XHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShkZXYpO1xuMjQzMzpcdFx0aWYgKHJldClcbjI0MzQ6XHRcdFx0cmV0dXJuIHJldDtcbjI0MzU6XHRcbjI0MzY6XHRcdHJldHVybiBtdDc5MTVfbWN1X3NldF9yZWQoZGV2LCBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKTtcbjI0Mzc6XHR9XG4yNDM4Olx0XG4yNDM5Olx0aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQ0MDpcdHtcbjI0NDE6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9tY3Vfb3BzIG10NzkxNV9tY3Vfb3BzID0ge1xuMjQ0MjpcdFx0XHQubWF4X3JldHJ5ID0gMSxcbjI0NDM6XHRcdFx0LmhlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXG4yNDQ0Olx0XHRcdC5tY3Vfc2tiX3ByZXBhcmVfbXNnID0gbXQ3Nl9jb25uYWMyX21jdV9maWxsX21lc3NhZ2UsXG4yNDQ1Olx0XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTE1X21jdV9zZW5kX21lc3NhZ2UsXG4yNDQ2Olx0XHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MTVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuMjQ0NzpcdFx0fTtcbjI0NDg6XHRcbjI0NDk6XHRcdGRldi1cdTAwM2VtdDc2Lm1jdV9vcHMgPSBcdTAwMjZtdDc5MTVfbWN1X29wcztcbjI0NTA6XHRcbjI0NTE6XHRcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcbjI0NTI6XHR9XG4yNDUzOlx0XG4yNDU0Olx0dm9pZCBtdDc5MTVfbWN1X2V4aXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjI0NTU6XHR7XG4yNDU2Olx0XHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4yNDU3Olx0XHRpZiAobXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpKSB7XG4yNDU4Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGYWlsZWQgdG8gZXhpdCBtY3VcXG5cJiMzNDspO1xuMjQ1OTpcdFx0XHRnb3RvIG91dDtcbjI0NjA6XHRcdH1cbjI0NjE6XHRcbjI0NjI6XHRcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoMCksIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOKTtcbjI0NjM6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbjI0NjQ6XHRcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgxKSxcbjI0NjU6XHRcdFx0XHRNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTik7XG4yNDY2Olx0b3V0OlxuMjQ2NzpcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG4yNDY4Olx0fVxuMjQ2OTpcdFxuMjQ3MDpcdHN0YXRpYyBpbnRcbjI0NzE6XHRtdDc5MTVfbWN1X3NldF9yeF9oZHJfdHJhbnNfYmxhY2tsaXN0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCBiYW5kKVxuMjQ3MjpcdHtcbjI0NzM6XHRcdHN0cnVjdCB7XG4yNDc0Olx0XHRcdHU4IG9wZXJhdGlvbjtcbjI0NzU6XHRcdFx0dTggY291bnQ7XG4yNDc2Olx0XHRcdHU4IF9yc3ZbMl07XG4yNDc3Olx0XHRcdHU4IGluZGV4O1xuMjQ3ODpcdFx0XHR1OCBlbmFibGU7XG4yNDc5Olx0XHRcdF9fbGUxNiBldHlwZTtcbjI0ODA6XHRcdH0gcmVxID0ge1xuMjQ4MTpcdFx0XHQub3BlcmF0aW9uID0gMSxcbjI0ODI6XHRcdFx0LmNvdW50ID0gMSxcbjI0ODM6XHRcdFx0LmVuYWJsZSA9IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTcwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBtdDc5MTVfZHJpdmVyX293bmAgRnVuY3Rpb24gQ2FsbCoqCgpPa2F5LCBzbyBJIHNlZSBgbXQ3OTE1X2RyaXZlcl9vd25gIGJlaW5nIGNhbGxlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQsIGFuZCB3aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eT8mIzM0OyBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkmIzM5O20gYWxyZWFkeSBhc3N1bWluZyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIG93bmVyc2hpcCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3OTE1IGRyaXZlciDigJMgcHJvYmFibHkgcmVnYXJkaW5nIHJlc291cmNlIGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBwZXJoYXBzIGNsYWltaW5nIGhhcmR3YXJlIGFjY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgKndoZW4qIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQgKndoeSosIHNwZWNpZmljYWxseS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGV2aWNlIHByb2JlLCBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgYSBtb3JlIGR5bmFtaWMgcG93ZXIgbWFuYWdlbWVudCBzY2VuYXJpbz8gS25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGtleS4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGEgc2ltcGxlIGFjY2Vzc29yLCBvciBpZiBpdCBwZXJmb3JtcyBtb3JlIGNvbXBsZXggbG9ja2luZyBhbmQgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gVW5kZXJzdGFuZGluZyB3aGF0IHRoaXMgJiMzNDtvd25zJiMzNDsg4oCTIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIGludGVycnVwdCBoYW5kbGVycywgRE1BIGNoYW5uZWxzIOKAkyBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiBjYWxsLiBJIGV4cGVjdCBpdCB0byBpbnZvbHZlIHNvbWUgbGV2ZWwgb2Ygc3luY2hyb25pemF0aW9uIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBtdXRleGVzLCBzZW1hcGhvcmVzLCBvciBvdGhlciBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB1c2VkIHdpdGhpbiB0aGUgZnVuY3Rpb24sIG9yIHRoYXQgaXQgYWNxdWlyZXMgb24gYmVoYWxmIG9mIHRoZSBkcml2ZXIuIE5vdywgbGV0JiMzOTtzIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfZHJpdmVyX293biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwMzE9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMDg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjA4NjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMDg3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg0PWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjM5MzpcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzk0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzk3LVx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMzk4Olx0XHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjM5OS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0NDUKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBtdDc5MTVfZHJpdmVyX293bioqCgpBbHJpZ2h0LCBzbyB0aGUgZm9jdXMgaXMgY2xlYXJseSBvbiB0aGUgYG10NzkxNV9kcml2ZXJfb3duYCBhc3BlY3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5IG1lYW5zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLiBBbSBJIGxvb2tpbmcgYXQgb3duZXJzaGlwIG9mIGEgcGFydGljdWxhciByZXNvdXJjZSB3aXRoaW4gdGhlIGRyaXZlcj8gSXMgaXQgcmVsYXRlZCB0byBsb2NraW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBvciBtb2R1bGUgbG9hZGluZz8gS25vd2luZyB0aGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGxldmVsIG9mIGFic3RyYWN0aW9uLCBhbmQgaWYgaXQgaXMgYW4gaXNzdWUgd2l0aCBtdXRleGVzLCBvciBzb21ldGhpbmcgZWxzZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBwYXR0ZXJucyBmb3IgdGhpcyB3aXRoaW4gdGhlIGtlcm5lbCBkcml2ZXIgZWNvc3lzdGVtOyB0aGluayBhYm91dCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHByb3BlciBvd25lcnNoaXAgbWFuYWdlbWVudCBpcyAqY3JpdGljYWwqIGluIGEgbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnQgbGlrZSB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGFjY2VzcyBjb250cm9sIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2sgc2NlbmFyaW9zIGlmIGEgcmVzb3VyY2UgaXNuJiMzOTt0IGhhbmRsZWQgY29ycmVjdGx5LiBJIGFsc28gaW1tZWRpYXRlbHkgd29uZGVyIHdoYXQgdGhlIHB1cnBvc2Ugb2YgdGFraW5nIG93bmVyc2hpcCBpczogSXMgdGhpcyByZWxhdGVkIHRvIGluaXRpYWxpemluZyBhIGRldmljZSwgbWFuYWdpbmcgcG93ZXIsIG9yIGhhbmRsaW5nIGludGVycnVwdHM/IFRoZSBjb250ZXh0IHdpbGwgYmUgaW1wb3J0YW50LCBhbmQgc28gdGhlIG5leHQgc3RlcCBpcyBnb2luZyB0byBiZSB0byBsb29rIGZvciB0aGUgYXNzb2NpYXRlZCBjb2RlIHRvIGRldGVybWluZSB0aGUgZnVsbCBjb250ZXh0LCBhbmQgZ28gZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA4NjpcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcbjIwODc6XHR7XG4yMDg4Olx0XHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLCBNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV04pO1xuMjA4OTpcdFx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSxcbjIwOTA6XHRcdFx0XHQgICAgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVCwgMCwgNTAwKSkge1xuMjA5MTpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7VGltZW91dCBmb3IgZHJpdmVyIG93blxcblwmIzM0Oyk7XG4yMDkyOlx0XHRcdHJldHVybiAtRUlPO1xuMjA5MzpcdFx0fVxuMjA5NDpcdFxuMjA5NTpcdFx0LyogY2xlYXIgaXJxIHdoZW4gdGhlIGRyaXZlciBvd24gc3VjY2VzcyAqL1xuMjA5NjpcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORF9JUlFfU1RBVChiYW5kKSxcbjIwOTc6XHRcdFx0TVRfVE9QX0xQQ1JfSE9TVF9CQU5EX1NUQVQpO1xuMjA5ODpcdFxuMjA5OTpcdFx0cmV0dXJuIDA7XG4yMTAwOlx0fVxuMjEwMTpcdFxuMjEwMjpcdHN0YXRpYyBpbnRcbjIxMDM6XHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcbjIxMDQ6XHR7XG4yMTA1Olx0XHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxuMjEwNjpcdFx0XHRcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbjIxMDc6XHRcbjIxMDg6XHRcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTUlTQywgTVRfVE9QX01JU0NfRldfU1RBVEUsXG4yMTA5Olx0XHRcdFx0ICAgIHN0YXRlLCAxMDAwKSkge1xuMjExMDpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7VGltZW91dCBmb3IgaW5pdGlhbGl6aW5nIGZpcm13YXJlXFxuXCYjMzQ7KTtcbjIxMTE6XHRcdFx0cmV0dXJuIC1FSU87XG4yMTEyOlx0XHR9XG4yMTEzOlx0XHRyZXR1cm4gMDtcbjIxMTQ6XHR9XG4yMTE1Olx0XG4yMTE2Olx0c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjExNzpcdHtcbjIxMTg6XHRcdGludCByZXQ7XG4yMTE5Olx0XG4yMTIwOlx0XHQvKiBSZWxlYXNlIFNlbWFwaG9yZSBpZiB0YWtlbiBieSBwcmV2aW91cyBmYWlsZWQgYXR0ZW1wdCAqL1xuMjEyMTpcdFx0cmV0ID0gbXQ3Nl9jb25uYWNfbWN1X3BhdGNoX3NlbV9jdHJsKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBmYWxzZSk7XG4yMTIyOlx0XHRpZiAocmV0ICE9IFBBVENIX1JFTF9TRU1fU1VDQ0VTUykge1xuMjEyMzpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7Q291bGQgbm90IHJlbGVhc2Ugc2VtYXBob3JlXFxuXCYjMzQ7KTtcbjIxMjQ6XHRcdFx0LyogQ29udGludWUgYW55d2F5cyAqL1xuMjEyNTpcdFx0fVxuMjEyNjpcdFxuMjEyNzpcdFx0LyogQWx3YXlzIHJlc3RhcnQgTUNVIGZpcm13YXJlICovXG4yMTI4Olx0XHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4yMTI5Olx0XG4yMTMwOlx0XHQvKiBDaGVjayBpZiBNQ1UgaXMgcmVhZHkgKi9cbjIxMzE6XHRcdHJldCA9IG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIGZhbHNlKTtcbjIxMzI6XHRcdGlmIChyZXQpIHtcbjIxMzM6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0Zpcm13YXJlIGRpZCBub3QgZW50ZXIgZG93bmxvYWQgc3RhdGVcXG5cJiMzNDspO1xuMjEzNDpcdFx0XHRyZXR1cm4gcmV0O1xuMjEzNTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY1OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIEZ1enppbmcgUGF0aCBmb3IgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IFN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gVGhlIGluaXRpYWwgcHJvYmxlbSBpcyB0aGUgYG10NzkxNV9kcml2ZXJfb3duYCBjaGVjay4gVGhpcyBkcml2ZXIgcG9sbHMgYSByZWdpc3RlciwgYW5kIGlmIHRoZSByZWdpc3RlciByZWFkIGRvZXNuJiMzOTt0IHJldHVybiB0aGUgZXhwZWN0ZWQgdmFsdWUgd2l0aGluIGEgdGltZW91dCwgaXQgZXJyb3JzIG91dCB3aXRoIGAtRUlPYC4gU3l6a2FsbGVyJiMzOTtzIHZpcnR1YWwgUENJIGRldmljZSBjb3VsZCBlYXNpbHkgZmFpbCB0aGlzIHByb2JlLCB3aGljaCB3b3VsZCBibG9jayB1cyByaWdodCBhd2F5LiBCdXQsIHRoZXJlJiMzOTtzIGEgd29ya2Fyb3VuZCEgU3l6a2FsbGVyIGhhcyB0aGUgbWVhbnMgdG8gY2lyY3VtdmVudCB0aGlzLgoKTXkgdGhpbmtpbmcgZ29lcyB0byBTeXprYWxsZXImIzM5O3MgYWJpbGl0eSB0byBtb2NrIFBDSSBNTUlPIHJlYWRzLiBBaGEsIHRoZSBgc3l6X3BjaV8uLi5gIG1lY2hhbmlzbSEgSXQgY2FuIGludGVyY2VwdCB0aG9zZSBNTUlPIHJlYWRzIGFuZCBwcm92aWRlIGFyYml0cmFyeSByZXNwb25zZXMsIGFsbG93aW5nIGl0IHRvIHJldHVybiB0aGUgZXhhY3QgZXhwZWN0ZWQgdmFsdWUgZm9yIHRoZSBgbXQ3Nl9wb2xsX21zZWNgIGZ1bmN0aW9uLiBUaGlzIG1lYW5zIHRoZSBwcm9iZSBjYW4gc3VjY2VlZCwgZXZlbiB3aXRoIGEgdmlydHVhbCBQQ0kgZGV2aWNlIHRoYXQgd291bGRuJiMzOTt0IG5vcm1hbGx5IHJlc3BvbmQgY29ycmVjdGx5LiBUaGlzIGlzIHByb21pc2luZyEKClNvLCBhc3N1bWluZyBTeXprYWxsZXIgY2FuIG1vY2sgdGhlIE1NSU8gcmVhZHMsIHRoZSBkcml2ZXIgY2FuIHByb2JlIHN1Y2Nlc3NmdWxseS4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdG8gZ2V0IHRvIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gVGhlIHJvdXRlIGlzIHRocm91Z2ggYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAsIHdoaWNoIGlzIGFsc28gcmVxdWlyZWQgYnkgYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5hYmxlIHRoaXMgY29uZmlnLiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBgTVQ3OTE1RWAgYW5kIGBORVRfTUVESUFURUtfU09DX1dFRGAuCgpIb2xkIG9uLCBJIHNlZSB0aGF0IGBORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RgLCB3aGljaCBpc24mIzM5O3QgYSBwcm9ibGVtLiBUaGlzIG1lYW5zLCBJJiMzOTtsbCBuZWVkIHRvIGFkZCBgTkVUX01FRElBVEVLX1NPQ19XRURgIGFuZCBgTVQ3OTE1RWAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIHRoZSBjb25maWcgdGhhdCBJJiMzOTttIHdvcmtpbmcgb24gdG8gcmVhY2ggdGhpcyBwYXRoLgoKV2FpdCwgYE1UNzkxNUVgIGlzIGEgdHJpc3RhdGUsIHNvIHNwZWNpZnlpbmcgaXQgc2hvdWxkIGJlIGVub3VnaC4gT25lIGxlc3MgdGhpbmcgdG8gd29ycnkgYWJvdXQuIEkgc2hvdWxkIGNoZWNrIGFnYWluIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcyB0aGF0IG1heSBhZmZlY3QgdGhpcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWdgIGZpbGUgdG8gYmUgc3VyZS4gQWxzbywgb25lIG1vcmUgdGhvdWdodCAtIGlzIGBORVRfTUVESUFURUtfU09DX1dFRGAgYSBib29sZWFuIG9yIGEgdHJpc3RhdGU/IEkgbmVlZCB0byBrbm93IHRoaXMgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4MTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBCb29sZWFuIE5hdHVyZSBvZiB0aGUgUHJvYmxlbSoqCgpSaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzaXR1YXRpb24gaGluZ2VzIG9uIGEgQm9vbGVhbiB2YWx1ZS4gSXQmIzM5O3MgYSBiaW5hcnkgY2hvaWNlLCBhIHRydWUvZmFsc2UsIHllcy9ubyBwcm9wb3NpdGlvbi4gVGhpcyBpc24mIzM5O3QgYSBjb250aW51b3VzIHZhcmlhYmxlLCBvciBzb21ldGhpbmcgd2l0aCBudWFuY2VkIGdyYWRpZW50czsgaXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBvbi1vci1vZmYgc3RhdGUuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgaW1tZWRpYXRlLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgbG9naWNhbCBvcGVyYXRvcnMsIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGFuZCBob3cgdGhpcyAmIzM0O2Jvb2wmIzM0OyBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGRlZmluZXMgdHJ1ZSBhbmQgZmFsc2UgaW4gdGhpcyBjb250ZXh0LCBhbmQgd2hhdCB0aGUgZmxvdyBvZiB0aGUgYWxnb3JpdGhtIHdpbGwgYmUgZGVwZW5kaW5nIG9uIHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGlzIGJvb2wuIEkgd2lsbCBzdGFydCBieSBtYXBwaW5nIG91dCB0aGlzIGRlcGVuZGVuY3kuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB3aGF0IGFjdGlvbnMgd2lsbCBoYXBwZW4/IEFuZCBpZiBpdCYjMzk7cyBmYWxzZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxMDpcdGNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuICAxMTpcdFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxuICAxMjpcdFx0ZGVmX2Jvb2wgTkVUX01FRElBVEVLX1NPQyAhPSBuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxuICAxNzpcdFx0c2VsZWN0IFBJTkNUUkxcbiAgMTg6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDE5Olx0XHRzZWxlY3QgRElNTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTgwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiBFbmFibGluZyBNZWRpYXRlayBTT0MgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE5FVF9NRURJQVRFS19TT0NfV0VEYC4gVGhlIGRlZmluaXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCYjMzk7cyBhIGJvb2wgdGhhdCYjMzk7cyBlbmFibGVkIHdoZW4gYE5FVF9NRURJQVRFS19TT0NgIGlzICpub3QqICYjMzQ7biYjMzQ7LiBTbywgdGhlIG9idmlvdXMgbW92ZSBzZWVtcyB0byBiZSBlbmFibGluZyBgTkVUX01FRElBVEVLX1NPQ2AgdG8gZ2V0IGBORVRfTUVESUFURUtfU09DX1dFRGAuIEJ1dCBoYW5nIG9u4oCmIHJlYWRpbmcgZnVydGhlciwgYE5FVF9NRURJQVRFS19TT0NfV0VEYCAqY2FuKiBiZSBlbmFibGVkIGlmIGBORVRfTUVESUFURUtfU09DYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIHdoYXQgYE5FVF9NRURJQVRFS19TT0NgIGRlcGVuZHMgb24uIEhtbSwgaXQgZGVwZW5kcyBvbiBlaXRoZXIgYE5FVF9EU0FgIG9yIHRoZSBsb2dpY2FsIGludmVyc2UsIGAhTkVUX0RTQWAuIEludGVyZXN0aW5nLCB0aGF0JiMzOTtzIG5vdCByZXN0cmljdGl2ZS4gU28sIEkgY2FuIGp1c3Qgc3BlY2lmeSBgTkVUX01FRElBVEVLX1NPQ2AuIEFuZCB3aGlsZSBJIGFtIGF0IGl0LCBgTVQ3OTE1RWAuIExldCYjMzk7cyBhc3N1bWUgdGhhdCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZW5hYmxlIGBORVRfTUVESUFURUtfU09DX1dFRGAuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzIGZvciBgTVQ3OTE1RWAuIFJpZ2h0LCB0aGUgdXN1YWwgY3VscHJpdHM6IGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBNYWtlcyBzZW5zZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgYXJlIGFscmVhZHkgY29uZmlndXJlZCwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkxNUVcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkxNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgIDg6XHRcdHNlbGVjdCBSRUxBWVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTE1LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMTE6XHRcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IGR1YWwtYmFuZCBvcGVyYXRpb24gYXQgYm90aCA1R0h6XG4gIDEyOlx0XHQgIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFheCA0eDQ6NFNTIDEwMjQtUUFNLCAxNjBNSHogY2hhbm5lbHMsXG4gIDEzOlx0XHQgIE9GRE1BLCBzcGF0aWFsIHJldXNlIGFuZCBkdWFsIGNhcnJpZXIgbW9kdWxhdGlvbi5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgTVQ3OThYX1dNQUNcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7TVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBNVDc5MTVFXG4gIDIwOlx0XHRkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDQyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgTVQ3OTE1RWAgRHJpdmVyIGFuZCBQb3RlbnRpYWwgSG90LVBhdGggQ2FuZGlkYXRlcyoqCgpPa2F5LCBzbyB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZm9yIGBNVDc5MTVFYCBzZWVtcyBzdWZmaWNpZW50IGZvciB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBzaG91bGQgSSBhbHNvIGluY2x1ZGUgYE5FVF9NRURJQVRFS19TT0NgPyBZZXMsIEkgdGhpbmsgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIGluY2x1ZGUgYm90aCwganVzdCB0byBiZSB0aG9yb3VnaC4KCk5vdywgdGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBhbmQgYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gIExldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgRm9jdXNTeW1ib2xzYCwgYXMgdGhvc2UgZnVuY3Rpb25zIGFyZSBrZXkuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgYXJlIGhvdC1wYXRoIGZ1bmN0aW9ucy4KCkFscmlnaHQsIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyB1c2VkIGR1cmluZyB0aGUgc2V0dXAgb2YgYSBmb3J3YXJkIHBhdGguIFRoaXMgaW1wbGllcyBpdCYjMzk7cyBtb3JlIG9mIGEgY29udHJvbC1wYXRoIG9wZXJhdGlvbiwgbGlrZSB3aGVuIGEgbmV3IHJ1bGUgaXMgYWRkZWQgZm9yIGZsb3cgb2ZmbG9hZC4gQW5kIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciB3aGVuIFdFRCBvZmZsb2FkIGlzIGJlaW5nIHNldCB1cC4gVGhlc2UgYXJlbiYjMzk7dCBwZXItcGFja2V0IGhvdC1wYXRoIGZ1bmN0aW9ucywgc28gdGhleSBzaG91bGQgYmUgZ29vZCBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24gaW4gYEZvY3VzU3ltYm9sc2AuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHRyYWNlIHRoZSByZWFjaGFiaWxpdHkgb2YgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBJIHNlZSBpdCYjMzk7cyBhc3NpZ25lZCB0byBgLm5ldF9maWxsX2ZvcndhcmRfcGF0aGAgd2l0aGluIGBtdDc5MTVfb3BzYC4gIE9rYXksIG5vdywgbGV0IG1lIGNoZWNrIHdoZXJlIGBtdDc5MTVfb3BzYCBpcyB1c2VkLiBBaGEsIGluIGBtdDc5MTVfaW5pdF93aXBoeWA6CmBgYGMKCWh3LSZndDt3aXBoeS0mZ3Q7b3BzID0gJmFtcDttdDc5MTVfb3BzOwpgYGAKT2theSwgc28gaXQgaXMgcmVhY2hhYmxlLiBPaCB3YWl0LCBpcyBgbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBhIG1lbWJlciBvZiBgaWVlZTgwMjExX29wc2A/IE5vLCBpdCYjMzk7cyB0eXBpY2FsbHkgYSBtZW1iZXIgb2YgYG5ldF9kZXZpY2Vfb3BzYCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBJIHdpbGwgbG9vayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBgaWVlZTgwMjExX29wc2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbWFjODAyMTEuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNTY9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDY5MC0gKlx0ZGlzYWJsZSBiYWNrZ3JvdW5kIENBQy9yYWRhciBkZXRlY3Rpb24uXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ2OTE6ICogQG5ldF9maWxsX2ZvcndhcmRfcGF0aDogQ2FsbGVkIGZyb20gLm5kb19maWxsX2ZvcndhcmRfcGF0aCBpbiBvcmRlciB0b1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NjkyLSAqXHRyZXNvbHZlIGEgcGF0aCBmb3IgaGFyZHdhcmUgZmxvdyBvZmZsb2FkaW5nXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzMwPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTUwOTYtXHRcdFx0XHQgICAgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKTtcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTA5NzpcdGludCAoKm5ldF9maWxsX2ZvcndhcmRfcGF0aCkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTUwOTgtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjU2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEZvcndhcmQgUGF0aCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmb3J3YXJkaW5nIHBhdGggaXMgYmVpbmcgc2V0IHVwLiBSaWdodCwgaXQmIzM5O3MgZGVmaW5pdGVseSBpbiBgaWVlZTgwMjExX29wc2AuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCBhbmQgYG1hYzgwMjExYCBleHBvc2VzIGl0IHRocm91Z2ggYC5uZG9fZmlsbF9mb3J3YXJkX3BhdGhgIGluIGBuZXRfZGV2aWNlX29wc2AuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZSBuZXR3b3JrIHN0YWNrLCBsaWtlIHdpdGggbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCwgc2hvdWxkIGJlIGFibGUgdG8gcmVhY2ggaXQgdGhpcyB3YXkuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBJIHNob3VsZCBjaGVjayBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiBBaCwgZ290IGl0LiBJdCBsb29rcyBsaWtlIGBtdDc5MTVfbW1pb193ZWRfaW5pdGAgYW5kIGBtdDc5OTZfbW1pb193ZWRfaW5pdGAgYXJlIGNhbGxpbmcgaXQuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLiBJIHNlZSB0aGF0IGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgaXMgYmVpbmcgYXNzaWduZWQgdG8gYHdlZC0mZ3Q7d2xhbi5pbml0X3J4X2J1ZmAgd2hpY2ggaXMgYW4gaW1wb3J0YW50IGNsdWUsIHRoaXMgYC5pbml0X3J4X2J1ZmAgZmllbGQuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aG8qIGlzIGNhbGxpbmcgYGluaXRfcnhfYnVmYCBhbmQgaG93IHRoYXQgY2FsbCBpcyBiZWluZyBtYWRlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbml0X3J4X2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmM9ODM1PW10a193ZWRfcnhfYnVmZmVyX2FsbG9jKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuYy04NDgtXHRkZXYtXHUwMDNlcnhfYnVmX3JpbmcuZGVzY19waHlzID0gZGVzY19waHlzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jOjg0OTpcdGRldi1cdTAwM2V3bGFuLmluaXRfcnhfYnVmKGRldiwgZGV2LVx1MDAzZXdsYW4ucnhfbnBrdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmMtODUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzg3NAoJCQkJCQkJb3V0cHV0OiAxNDEKCQkJCQkJCXRob3VnaHRzOiAxNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1lZGlhVGVrIFdpLUZpIGFuZCBXRUQgRHJpdmVyIENoYW5nZXMgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBpbiBib3RoIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMsIGFuZCB0aGV5JiMzOTtyZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbnRyb2wgcGF0aCBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2QgdGFyZ2V0LgoKTm93LCB0byBnZXQgdGhpcyBydW5uaW5nIGluIHN5emthbGxlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXRrX3dlZC5jYC4gVGhpcyB0ZWxscyBtZSB0aGF0IGBORVRfTUVESUFURUtfU09DYCBpcyAqZXNzZW50aWFsKi4gIFRoZW9yZXRpY2FsbHksIGlmIHRoZSBFdGhlcm5ldCBhbmQgV2ktRmkgZHJpdmVycyBhcmUgYm90aCBsb2FkZWQgYW5kIGJpbmQgdmlhIFdFRCwgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCAqY291bGQqIGJlIHRyaWdnZXJlZC4gVGhlIHByb2JsZW0gaXMgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IG5hdGl2ZWx5IGhhdmUgYSB2aXJ0dWFsIE1lZGlhVGVrIEV0aGVybmV0IGRldmljZS4gQnV0LCBJICpjYW4qIGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIHVzaW5nIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgZm9yIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBhbmQgYHN5el9wY2lfLi4uYCBmb3IgdGhlIFdpLUZpLiBJZiBJIGdldCBib3RoIGRldmljZXMgcHJvYmVkLCB0aGV5ICptaWdodCogY29ubmVjdC4gRXZlbiBpZiBpdCYjMzk7cyBoYXJkIHRvIHRyaWdnZXIsIGl0JiMzOTtzIGNvZGUgdGhhdCAqY2FuKiBiZSBoaXQuIFNvLCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAuCgpMZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgZWxzZSBpcyBuZWVkZWQuIEkgbmVlZCB0byBmb2N1cyBvbjogYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiAgSSBzZWUgdGhhdCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGlzIGV4cG9ydGVkICh0aGFua3MgdG8gYEVYUE9SVF9TWU1CT0xfR1BMYCkuIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBiZSBhd2FyZSBvZi4KCk5vdywgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBgTVQ3OTE1RWAgaXMgdGhlIGtleSBjb25maWcgZm9yIHRoZSBXaS1GaS4gSSBkbyBub3RlIHRoYXQgYE1UNzZfQ09SRWAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkxNUVgLCBhbmQgYE1BQzgwMjExYCBpcyBhIGRlcGVuZGVuY3kgd2hpY2ggc3l6a2FsbGVyIHR5cGljYWxseSBoYW5kbGVzLiAgVGhlIGBORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlnLi4uIGl0JiMzOTtzIGEgYGRlZl9ib29sYCB0aWVkIHRvIGBORVRfTUVESUFURUtfU09DYC4gU28sIGlmIEkgZW5hYmxlIGBORVRfTUVESUFURUtfU09DYCwgSSYjMzk7bSBnb29kLiAgSG93ZXZlciwgaWYgYE5FVF9NRURJQVRFS19TT0NgICppc24mIzM5O3QqIGVuYWJsZWQsIHRoZW4gdGhlIGNvZGUgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBwYXJ0aWN1bGFybHkgdGhlIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCwgaXMgY29tcGlsZWQgb3V0LgoKT2theSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ2AgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFS2Agb3IgYENPTVBJTEVfVEVTVGAuICBTeXprYWxsZXIgdXN1YWxseSBydW5zIHdpdGggYENPTVBJTEVfVEVTVGAgb3IsIEkgY2FuIGp1c3Qgc3BlY2lmeSBgTkVUX01FRElBVEVLX1NPQ2AuIEdvb2QuCgpJJiMzOTttIGRvdWJsZS1jaGVja2luZyB0aGUgY29kZSB0byBjb25maXJtIG15IGFzc3VtcHRpb25zLiAgQm90aCBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgYXJlIGluZGVlZCB3aXRoaW4gYCNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgIGJsb2NrcywgZnVydGhlciBzb2xpZGlmeWluZyB0aGUgYE5FVF9NRURJQVRFS19TT0NgIHJlcXVpcmVtZW50LgoKSSYjMzk7bSBjaGVja2luZyBpZiBgTVQ3OTE1RWAgaXMgKnRoZSogZHJpdmVyLCBvciBpZiBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGlzIHVzZWQgZWxzZXdoZXJlLiBgbXQ3OTk2X21taW9fd2VkX2luaXRgIGFsc28gdXNlcyBpdC4gSG93ZXZlciwgc2luY2UgdGhlIHBhdGNoICpzcGVjaWZpY2FsbHkqIG1vZGlmaWVzIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCwgdGhlIHRhcmdldCBpcyBgbXQ3OTE1YC4gU28sIGBNVDc5MTVFYCBpcyB0aGUgY29ycmVjdCBjb25maWcgdG8gZW5hYmxlLgoKSSYjMzk7dmUgcmV2aWV3ZWQgdGhlIHBhdGNoIGFnYWluLiBUaGUgY2hhbmdlcyB0byBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYXJlIGNsZWFybHkgYWJvdXQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBgYmFuZF9pZHhgLiBTaW1pbGFybHksIHRoZSBjaGFuZ2VzIHRvIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgYWxzbyBjaGFuZ2UgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpbiBzb21lIGNhc2VzLiAgVGhpcyBtYWtlcyB0aGUgbmVlZCB0byBlbmFibGUgYm90aCB0aGUgV0VEIGFuZCBNVDc5MTUgcGFydHMgbWFrZSBzZW5zZS4KCkkmIzM5O20gc2F0aXNmaWVkLiAgSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDoxNy41NDMwMTMzNTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc2ODE1NDY1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTE1RVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm10NzZfd2VkX2luaXRfcnhfYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlcidzIGNvbnRyb2wgcGF0aCBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGlmIHRoZSBkcml2ZXIgaXMgcHJvYmVkIGFuZCBXRUQgb2ZmbG9hZCBpcyB1dGlsaXplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MTcuNTQzMDIxNjc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzU2MTM4NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MjRiNmVkOWQxMWU5OWY5ZjUwYzhiN2Q5ZjIzYzIwYWIyODAxY2E5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDIyOjEwOjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY1xcbmluZGV4IDUxNjQzYTQ4ZWQxNTE1Li4wNDRiNTkyZWZlMjg0NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcXG5AQCAtMTc0Myw3ICsxNzQzLDcgQEAgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0cGF0aC1cXHUwMDNlbXRrX3dkbWEud2RtYV9pZHggPSB3ZWQtXFx1MDAzZXdkbWFfaWR4O1xcbiBcXHRwYXRoLVxcdTAwM2VtdGtfd2RtYS5ic3MgPSBtdmlmLVxcdTAwM2VtdDc2LmlkeDtcXG4gXFx0cGF0aC1cXHUwMDNlbXRrX3dkbWEud2NpZCA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/IG1zdGEtXFx1MDAzZXdjaWQuaWR4IDogMHgzZmY7XFxuLVxcdHBhdGgtXFx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5ICE9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4rXFx0cGF0aC1cXHUwMDNlbXRrX3dkbWEucXVldWUgPSBwaHktXFx1MDAzZW10NzYtXFx1MDAzZWJhbmRfaWR4O1xcbiBcXG4gXFx0Y3R4LVxcdTAwM2VkZXYgPSBOVUxMO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcXG5pbmRleCBlZDY1N2Q5NTJkZTI0NC4uZjIxMGEwYzU3ZDgxMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcXG5AQCAtMzMsMTAgKzMzLDE1IEBAIHUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuIHtcXG4gXFx0c3RydWN0IG10a193ZWRfYm1fZGVzYyAqZGVzYyA9IHdlZC1cXHUwMDNlcnhfYnVmX3JpbmcuZGVzYztcXG4gXFx0c3RydWN0IG10NzZfZGV2ICpkZXYgPSBtdDc2X3dlZF90b19kZXYod2VkKTtcXG4tXFx0c3RydWN0IG10NzZfcXVldWUgKnEgPSBcXHUwMDI2ZGV2LVxcdTAwM2VxX3J4W01UX1JYUV9NQUlOXTtcXG4gXFx0c3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCA9IE5VTEw7XFxuK1xcdHN0cnVjdCBtdDc2X3F1ZXVlICpxO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdGlmICh3ZWQtXFx1MDAzZXZlcnNpb24gPT0gMiBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXBoeS5iYW5kX2lkeClcXG4rXFx0XFx0cSA9IFxcdTAwMjZkZXYtXFx1MDAzZXFfcnhbTVRfUlhRX0JBTkQxXTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRxID0gXFx1MDAyNmRldi1cXHUwMDNlcV9yeFtNVF9SWFFfTUFJTl07XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdGRtYV9hZGRyX3QgYWRkcjtcXG4gXFx0XFx0dTMyIG9mZnNldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MTguMzc5NzE1NzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNjg0NDgzNTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MTVFXCIsXG4gICAgXCJORVRfTUVESUFURUtfU09DXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aFwiLFxuICAgIFwibXQ3Nl93ZWRfaW5pdF9yeF9idWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgaW4gdGhlIE1lZGlhVGVrIE1UNzkxNSBXaS1GaSBkcml2ZXIgYW5kIHRoZSBXRUQgKFdpcmVsZXNzIEV0aGVybmV0IERpc3BhdGNoZXIpIG9mZmxvYWQgY29kZS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgZHJpdmVyJ3MgY29udHJvbCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaWYgdGhlIGRyaXZlciBpcyBwcm9iZWQgYW5kIFdFRCBvZmZsb2FkIGlzIHV0aWxpemVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkyNGI2ZWQ5ZDExZTk5ZjlmNTBjOGI3ZDlmMjNjMjBhYjI4MDFjYTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMjoxMDoxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY1xuaW5kZXggNTE2NDNhNDhlZDE1MTUuLjA0NGI1OTJlZmUyODQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcbkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cGF0aC1cdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cdTAwM2V3ZG1hX2lkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEuYnNzID0gbXZpZi1cdTAwM2VtdDc2LmlkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEud2NpZCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPyBtc3RhLVx1MDAzZXdjaWQuaWR4IDogMHgzZmY7XG4tXHRwYXRoLVx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5ICE9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4rXHRwYXRoLVx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHg7XG4gXG4gXHRjdHgtXHUwMDNlZGV2ID0gTlVMTDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xuaW5kZXggZWQ2NTdkOTUyZGUyNDQuLmYyMTBhMGM1N2Q4MTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xuQEAgLTMzLDEwICszMywxNSBAQCB1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKVxuIHtcbiBcdHN0cnVjdCBtdGtfd2VkX2JtX2Rlc2MgKmRlc2MgPSB3ZWQtXHUwMDNlcnhfYnVmX3JpbmcuZGVzYztcbiBcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gbXQ3Nl93ZWRfdG9fZGV2KHdlZCk7XG4tXHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSA9IFx1MDAyNmRldi1cdTAwM2VxX3J4W01UX1JYUV9NQUlOXTtcbiBcdHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKnQgPSBOVUxMO1xuK1x0c3RydWN0IG10NzZfcXVldWUgKnE7XG4gXHRpbnQgaTtcbiBcbitcdGlmICh3ZWQtXHUwMDNldmVyc2lvbiA9PSAyIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlcGh5LmJhbmRfaWR4KVxuK1x0XHRxID0gXHUwMDI2ZGV2LVx1MDAzZXFfcnhbTVRfUlhRX0JBTkQxXTtcbitcdGVsc2VcbitcdFx0cSA9IFx1MDAyNmRldi1cdTAwM2VxX3J4W01UX1JYUV9NQUlOXTtcbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNpemU7IGkrKykge1xuIFx0XHRkbWFfYWRkcl90IGFkZHI7XG4gXHRcdHUzMiBvZmZzZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDoxOC4zNzk3MTgwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMTIwODk5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWFUZWsgTVQ3NiBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYHF1ZXVlYCBhc3NpZ25tZW50IHdpdGhpbiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIHRoZSBxdWV1ZSBzZWxlY3Rpb24gaW4gYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gVGhpcyBpcyBhIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVyLCBzbyBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gdmFsaWRhdGUgdGhpcyBjaGFuZ2UuXG5cbkZpcnN0LCBJJ20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdGVzdCBlbnZpcm9ubWVudC4gQ2FuIHRoaXMgYmUgZWFzaWx5IHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSB1c3VhbGx5IGFtZW5hYmxlIHRvIHRlc3Rpbmcgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCB0aGUgTVQ3Ni4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIGV2ZW4gZnV6eiB0aGlzIGRyaXZlcj8gSGFyZHdhcmUtc3BlY2lmaWMgc3R1ZmYgaXMgdHJpY2t5IHVubGVzcyBpdCdzIFVTQi1iYXNlZCBvciB3ZSd2ZSBnb3Qgc29tZSBzZXJpb3VzIGVtdWxhdGlvbiBpbiBwbGF5LiBJdCdzIG9mdGVuIGRpZmZpY3VsdCB0byBnZXQgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSBvbiB0aGlzIGtpbmQgb2YgY2hhbmdlLlxuXG5TbyBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIE1UNzYgaXMgY29ubmVjdGVkLiBMZXQncyBzZWUuLi4gdGhlIHBhdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY2Agc2VlbXMgc3BlY2lmaWMgdG8gdGhlIE1UNzkxNS4gUmlnaHQsIGxldCdzIHNlZSBpZiB0aGlzIGlzIFVTQiBvciBQQ0llLiBJIG5lZWQgdG8gZ3JlcCBmb3IgTVQ3OTE1IHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MjMuNjkxODEwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzIxNTM4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTY4OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ3PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDg6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00OS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQ0PW9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSArPSBtdDc2MTUvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfTVQ3OTE1RSkgKz0gbXQ3OTE1L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDYtb2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICs9IG10NzkyMS9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTY9c3RhdGljIGlubGluZSBib29sIGlzX210NzY2MyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIyMTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ3OlxcdFxcdC8qIG10NzkxNSBXQSBvbmx5IGNvdW50cyBXRUQgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ4OlxcdFxcdGlmIChpc19tdDc5MTUoZGV2KSBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQ5LVxcdFxcdFxcdHdjaWQtXFx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9MTAzOT1pbnQgbXQ3Nl9jb25uYWMyX21hY19maWxsX3J4X3JhdGUoc3RydWN0IG10NzZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTEwNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzoxMDU1OlxcdGlmICghaXNfbXQ3OTE1KGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTEwNTYtXFx0XFx0c3RiYyA9IEZJRUxEX0dFVChNVF9QUlhWX0hUX1NUQkMsIHYwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1Lmg9MzA5PXN0cnVjdCBzdGFfcmVjX3ZodCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTMxNC1cXHRfX2xlMTYgdmh0X3R4X21jc19tYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDozMTU6XFx0LyogbXQ3OTE1IC0gbXQ3OTIxICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaC0zMTYtXFx0dTggcnRzX2J3X3NpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTE1RSkgKz0gbXQ3OTE1ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo1Om10NzkxNWUteSA6PSBwY2kubyBpbml0Lm8gZG1hLm8gZWVwcm9tLm8gbWFpbi5vIG1jdS5vIG1hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS02LVxcdCAgICAgZGVidWdmcy5vIG1taW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6ODptdDc5MTVlLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo5Om10NzkxNWUtJChDT05GSUdfTVQ3OThYX1dNQUMpICs9IHNvYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6MTA6bXQ3OTE1ZS0kKENPTkZJR19ERVZfQ09SRURVTVApICs9IGNvcmVkdW1wLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTI9TU9EVUxFX1BBUk1fREVTQyhjb3JlZHVtcF9tZW1kdW1wLCBcXFwiT3B0aW9uYWwgYWJpbGl0eSB0byBkdW1wIGZpcm13YXJlIG1lbW9yeVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10NzkxNV9tZW1fcmVnaW9uc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE2X21lbV9yZWdpb25zW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMy1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6NTU6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiBtdDc5OHhfbWVtX3JlZ2lvbnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU2LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo4ODpjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo4OTptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTkyLVxcdGNhc2UgMHg3OTE1OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTM6XFx0XFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTE1X21lbV9yZWdpb25zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjk0OlxcdFxcdHJldHVybiBcXHUwMDI2bXQ3OTE1X21lbV9yZWdpb25zWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTUtXFx0Y2FzZSAweDc5ODE6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwNzpzdGF0aWMgaW50IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEwOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMDk6XFx0Y29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICptZW1fcmVnaW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEwLVxcdHNpemVfdCBzaXplID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTE0OlxcdG1lbV9yZWdpb24gPSBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoZGV2LCBcXHUwMDI2bnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTExNS1cXHRpZiAoIW1lbV9yZWdpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEyMy1cXHQvKiByZXNlcnZlIHNwYWNlIGZvciB0aGUgaGVhZGVycyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTI0OlxcdHNpemUgKz0gbnVtICogc2l6ZW9mKHN0cnVjdCBtdDc5MTVfbWVtX2hkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMjUtXFx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMxOnN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqbXQ3OTE1X2NvcmVkdW1wX25ldyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEzMzpcXHRzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGEgPSBkZXYtXFx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE0Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTQ0Om10NzkxNV9jb3JlZHVtcF9md19zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTQ1LVxcdFxcdFxcdCBib29sICpleGNlcHRpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE1MC1cXHRzdGF0ZSA9ICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19BU1NFUlRfU1RBVCwgR0VOTUFTSyg3LCAwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNTE6XFx0Y291bnQgPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUyLVxcdFxcdCh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19FWENFUFRfQ09VTlQsIEdFTk1BU0soMTUsIDgpKSA6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE2Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTY3Om10NzkxNV9jb3JlZHVtcF9md190cmFjZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTY4LVxcdFxcdFxcdCBib29sIGV4Y2VwdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTc1OlxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc2LVxcdCAgICAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgYmFzZSwgR0VOTUFTSyg3LCAwKSkgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODAtXFx0aXJxID0gbXQ3Nl9ycihkZXYsIGJhc2UgKyAweDgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTgxOlxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTgyLVxcdCAgICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKSA6IEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGlycSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4NS1cXHRzY2ggPSBtdDc2X3JyKGRldiwgTVRfRldfU0NIRURfSU5GTyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODY6XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODctXFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xOTMtXFx0XFx0Lyogc2NoZWQgdHJhY2UgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE5NDpcXHRcXHRuID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5NS1cXHRcXHQgICAgRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soNywgMCksIHNjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIwMS1cXHRcXHRmb3IgKHkgPSBkdW1wLVxcdTAwM2VzY2hlZF9pbmZvX2lkeCwgaSA9IDA7IGkgXFx1MDAzYyBuOyBpKyssIHkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjAyOlxcdFxcdFxcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cXHUwMDNlc2NoZWQsIGJhc2UgKyAweGMgKyB5ICogMTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDMtXFx0XFx0XFx0XFx0XFx0ICAgICBzaXplb2YoZHVtcC1cXHUwMDNlc2NoZWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjA3LVxcdFxcdC8qIGlycSB0cmFjZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjA4OlxcdFxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjA5LVxcdFxcdCAgICBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIGlycSkgOiBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjE1LVxcdFxcdGZvciAoeSA9IGR1bXAtXFx1MDAzZWlycV9pbmZvX2lkeCwgaSA9IDA7IGkgXFx1MDAzYyBuOyBpKyssIHkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjE2OlxcdFxcdFxcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cXHUwMDNlaXJxLCBiYXNlICsgMHg0ICsgeSAqIDE2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjE3LVxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZW9mKGR1bXAtXFx1MDAzZWlycSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yMjM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyNDptdDc5MTVfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIyNS1cXHRcXHRcXHQgYm9vbCBleGNlcHRpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTI0ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ1Om10NzkxNV9jb3JlZHVtcF9md190YXNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ3OlxcdHUzMiBvZmZzID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID8gMHhlMCA6IDB4MTcwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yNjg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI2OTptdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjgwOlxcdFxcdGlkeCA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yODEtXFx0XFx0ICAgICAgKHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0NJUlFfSURYLCBHRU5NQVNLKDMxLCAxNikpIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzAyOnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICptdDc5MTVfY29yZWR1bXBfYnVpbGQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDQ6XFx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVxcdTAwM2Vjb3JlZHVtcC5jcmFzaF9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzA1OlxcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDY6XFx0c3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0gKmR1bXBfbWVtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzA3LVxcdHNpemVfdCBsZW4sIHNvZmFyID0gMCwgaGRyX2xlbiA9IHNpemVvZigqZHVtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMyNzpcXHRkdW1wID0gKHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKikoYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyOC1cXHRkdW1wLVxcdTAwM2VsZW4gPSBsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0MTpcXHRtdDc5MTVfY29yZWR1bXBfZndfc3RhdGUoZGV2LCBkdW1wLCBcXHUwMDI2ZXhjZXB0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0MjpcXHRtdDc5MTVfY29yZWR1bXBfZndfdHJhY2UoZGV2LCBkdW1wLCBleGNlcHRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQzOlxcdG10NzkxNV9jb3JlZHVtcF9md190YXNrKGRldiwgZHVtcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDQ6XFx0bXQ3OTE1X2NvcmVkdW1wX2Z3X2NvbnRleHQoZGV2LCBkdW1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0NTpcXHRtdDc5MTVfY29yZWR1bXBfZndfc3RhY2soZGV2LCBkdW1wLCBleGNlcHRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ3LVxcdC8qIGdhdGhlciBtZW1vcnkgY29udGVudCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ4OlxcdGR1bXBfbWVtID0gKHN0cnVjdCBtdDc5MTVfY29yZWR1bXBfbWVtICopKGJ1ZiArIHNvZmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0OS1cXHRkdW1wX21lbS1cXHUwMDNlbGVuID0gY3Jhc2hfZGF0YS1cXHUwMDNlbWVtZHVtcF9idWZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNTk6aW50IG10NzkxNV9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNjE6XFx0c3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MzpcXHRkdW1wID0gbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjQtXFx0aWYgKCFkdW1wKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM3NDppbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc2OlxcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg0LVxcdGlmIChjb3JlZHVtcF9tZW1kdW1wKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozODU6XFx0XFx0Y3Jhc2hfZGF0YS1cXHUwMDNlbWVtZHVtcF9idWZfbGVuID0gbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg2LVxcdFxcdGlmICghY3Jhc2hfZGF0YS1cXHUwMDNlbWVtZHVtcF9idWZfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo0MDA6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNDAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjc6I2luY2x1ZGUgXFxcIm10NzkxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oPTk9c3RydWN0IHRyYWNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxNDpzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTE1LVxcdGNoYXIgbWFnaWNbMTZdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC03OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjgwOnN0cnVjdCBtdDc5MTVfY29yZWR1bXBfbWVtIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTgxLVxcdHUzMiBsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODU6c3RydWN0IG10NzkxNV9tZW1faGRyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTg2LVxcdHUzMiBzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo5MTpzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOTItXFx0dTMyIHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMDpjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAxOm10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDI6c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAzOmludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTA0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDU6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTA5OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExMDptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMTU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMzA6c3RhdGljIGlubGluZSB2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU6I2luY2x1ZGUgXFxcIm10NzkxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02LSNpbmNsdWRlIFxcXCJlZXByb20uaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIyOm10NzkxNV9pbXBsaWNpdF90eGJmX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MzE6XFx0cmV0dXJuIG10NzkxNV9tY3Vfc2V0X3R4YmYoZGV2LCBNVF9CRl9UWVBFX1VQREFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTMyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0zND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM1Om10NzkxNV9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozNzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10NzkxNV9pbXBsaWNpdF90eGJmX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDU6XFx0XFx0XFx0IG10NzkxNV9pbXBsaWNpdF90eGJmX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0OTptdDc5MTVfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MC1cXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU0LVxcdGJvb2wgYmFuZCA9IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlYmFuZF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODUtXFx0Y2FzZSBTRVJfUVVFUlk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg2OlxcdFxcdHJldCA9IG10NzkxNV9tY3Vfc2V0X3NlcihkZXYsIDAsIDAsIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04Ny1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05My1cXHRjYXNlIFNFUl9TRVRfUkVDT1ZFUl9MM19CRjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTQ6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgU0VSX0VOQUJMRSwgQklUKHZhbCksIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05NS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfUkVDT1ZFUiwgdmFsLCBiYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTAzLVxcdFxcdG10NzZfc2V0KGRldiwgTVRfV0ZETUEwX01DVV9IT1NUX0lOVF9FTkEsIE1UX01DVV9DTURfV0RUX01BU0spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMDQ6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEwNS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEwOC1cXHRcXHRkZXYtXFx1MDAzZXJlY292ZXJ5LnN0YXRlIHw9IE1UX01DVV9DTURfV0RUX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEwOTpcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEyND1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMjU6bXQ3OTE1X3N5c19yZWNvdmVyeV9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI2LVxcdFxcdFxcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMjg6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI5OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTMwLVxcdGNoYXIgKmJ1ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbXQ3OTE1X3N5c19yZWNvdmVyeV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIwNTpcXHQud3JpdGUgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA2OlxcdC5yZWFkID0gbXQ3OTE1X3N5c19yZWNvdmVyeV9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwNy1cXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIxMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIxMjptdDc5MTVfcmFkYXJfdHJpZ2dlcih2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIxNS0jZGVmaW5lIFJBREFSX0JBQ0tHUk9VTkRcXHQyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIxNjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjE3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjE4LVxcdGludCByZGRfaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjI4OlxcdHJkZF9pZHggPSBtdDc5MTVfZ2V0X3JkZF9pZHgocGh5LCB2YWwgPT0gUkFEQVJfQkFDS0dST1VORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyOS1cXHRpZiAocmRkX2lkeCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMzg9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM5OlxcdFxcdFxcdCBtdDc5MTVfcmFkYXJfdHJpZ2dlciwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0MT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0MjptdDc5MTVfbXVydV9kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ0OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0Ni1cXHRkZXYtXFx1MDAzZW11cnVfZGVidWcgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0NzpcXHRtdDc5MTVfbWN1X211cnVfZGVidWdfc2V0KGRldiwgZGV2LVxcdTAwM2VtdXJ1X2RlYnVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI1Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MzptdDc5MTVfbXVydV9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NTpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjYyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX211cnVfZGVidWcsIG10NzkxNV9tdXJ1X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjYzOlxcdFxcdFxcdCBtdDc5MTVfbXVydV9kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjU6c3RhdGljIGludCBtdDc5MTVfbXVydV9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjY3OlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNjktXFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbF9ub25faGVfdHlwZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjkyOlxcdHJldCA9IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19nZXQocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDUxOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfbXVydV9zdGF0cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NDUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDU0Om10NzkxNV9yZGRfbW9uaXRvcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1NjpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NTctXFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmID0gXFx1MDAyNmRldi1cXHUwMDNlcmRkMl9jaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDYzOlxcdGlmICghbXQ3OTE1X2VlcHJvbV9oYXNfYmFja2dyb3VuZF9yYWRhcihkZXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2NC1cXHRcXHRzZXFfcHV0cyhzLCBcXFwibm8gYmFja2dyb3VuZCByYWRhciBjYXBhYmlsaXR5XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01MDU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MDY6bXQ3OTE1X2Z3X2RlYnVnX3dtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MDg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwOS1cXHRlbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUzMDpcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU0MDpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2RiZ19jdHJsKGRldiwgZGVidWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU0MS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU1OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU2MDptdDc5MTVfZndfZGVidWdfd21fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjI6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU2OTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTcwOlxcdFxcdFxcdCBtdDc5MTVfZndfZGVidWdfd21fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTcyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTczOm10NzkxNV9md19kZWJ1Z193YV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTc1OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4MDpcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCBkZXYtXFx1MDAzZWZ3LmRlYnVnX3dhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1ODQ6XFx0cmV0ID0gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFNFVCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4NS1cXHRcXHRcXHRcXHRNQ1VfV0FfUEFSQU1fUERNQV9SWCwgISFkZXYtXFx1MDAzZWZ3LmRlYnVnX3dhLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01OTM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1OTQ6bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTk1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTk2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MDM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfd2EsIG10NzkxNV9md19kZWJ1Z193YV9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYwNDpcXHRcXHRcXHQgbXQ3OTE1X2Z3X2RlYnVnX3dhX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjMwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjMxOm10NzkxNV9md19kZWJ1Z19iaW5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM2LVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYzNzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjQ5OlxcdHJldHVybiBtdDc5MTVfZndfZGVidWdfd21fc2V0KGRldiwgZGV2LVxcdTAwM2Vmdy5kZWJ1Z193bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjUyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjUzOm10NzkxNV9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY2MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z19iaW4sIG10NzkxNV9md19kZWJ1Z19iaW5fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjM6XFx0XFx0XFx0IG10NzkxNV9md19kZWJ1Z19iaW5fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjY2Om10NzkxNV9md191dGlsX3dtX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02Njcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Njg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd20pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTY4Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NzptdDc5MTVfZndfdXRpbF93YV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjg4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njg5OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjkzLVxcdGlmIChkZXYtXFx1MDAzZWZ3LmRlYnVnX3dhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2OTQ6XFx0XFx0cmV0dXJuIG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChRVUVSWSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY5NS1cXHRcXHRcXHRcXHRcXHQgTUNVX1dBX1BBUkFNX0NQVV9VVElMLCAwLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjcwMDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTcwMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3MDM6bXQ3OTE1X2FtcGR1X3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA0LVxcdFxcdFxcdCAgIHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzA2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA3LVxcdGJvb2wgZXh0X3BoeSA9IHBoeSAhPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NzMzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjczNDptdDc5MTVfdHhiZl9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03ODA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODE6bXQ3OTE1X3R4X3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODM6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4NDpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc4NS1cXHRzdHJ1Y3QgbXQ3Nl9taWJfc3RhdHMgKm1pYiA9IFxcdTAwMjZwaHktXFx1MDAzZW1pYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc5MDpcXHRtdDc5MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3OTE6XFx0bXQ3OTE1X21hY191cGRhdGVfc3RhdHMocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzkyOlxcdG10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODExOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfdHhfc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTgxMz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTQ6bXQ3OTE1X2h3X3F1ZXVlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB1MzIgc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODE1LVxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGh3X3F1ZXVlX21hcCAqbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTc6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgxODpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxOS1cXHR1MzIgaSwgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTg0ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDU6bXQ3OTE1X3N0YV9od19xdWV1ZV9yZWFkKHZvaWQgKmRhdGEsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg0NzpcXHRzdHJ1Y3QgbXQ3OTE1X3N0YSAqbXN0YSA9IChzdHJ1Y3QgbXQ3OTE1X3N0YSAqKXN0YS1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg0ODpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gbXN0YS1cXHUwMDNldmlmLVxcdTAwM2VwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODQ5LVxcdHN0cnVjdCBzZXFfZmlsZSAqcyA9IGRhdGE7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MjQuMzIzOTcxNzg3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY5MTQ3MzEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCdWcgRml4IGZvciB0aGUgTVQ3OTE1RSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBDT05GSUdfTVQ3OTE1RWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCdzIGEgUENJIGRyaXZlci4gVGhlIG1ha2VmaWxlIGZyYWdtZW50IGNvbmZpcm1zIGl0LCBgbXQ3OTE1ZS15IDo9IHBjaS5vIC4uLmAsIHllcCwgaXQncyBhIFBDSSBkcml2ZXIuIFRoZW4gSSBpbW1lZGlhdGVseSB0aGluayBhYm91dCBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXMgd2l0aCBQQ0kgZHJpdmVycy4gTm9ybWFsbHksIEknZCBleHBlY3QgZnV6emluZyB0byBoYXBwZW4gdmlhIGBzeXpfcGNpXy4uLmAgcHNldWRvLXN5c2NhbGxzIG9yIHdoZW4gaXQncyBsb2FkZWQgd2l0aCBhIHZpcnR1YWwgZGV2aWNlLiBIb3dldmVyLCBhIGdlbmVyaWMsIG91dC1vZi10aGUtYm94IFBDSSBmdXp6ZXIgaW4gc3l6a2FsbGVyIGlzbid0IHRoZSBub3JtLCB1bmxlc3MgaXQncyBzcGVjaWZpY2FsbHkgc3VwcG9ydGVkIG9yIGxldmVyYWdlcyB0aGUgbmV0bGluay9tYWM4MDIxMSBpbnRlcmZhY2UuXG5cblRoZSBrZXkgY2x1ZSBpcyB0aGUgcGF0Y2ggYXV0aG9yOiBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBUaGlzIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgc3l6a2FsbGVyIGZvdW5kIGEgYnVnIGhlcmUuIEVpdGhlciB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgZGlzY292ZXJlZCBpc3N1ZSwgb3IgaXQncyBhIHRlc3QgcGF0Y2guIElmIHN5emthbGxlciBmb3VuZCB0aGUgYnVnLCBpdCBtZWFucyBpdCdzIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBiaWcgZGVhbCFcblxuSSdsbCByZS1leGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBjaGFuZ2VzIGludm9sdmUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGluIGBtYWluLmNgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGluIGB3ZWQuY2AuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTVQ3OTE1RWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXIncyBjb25maWd1cmF0aW9uLCBhcyB0aGF0IHdvdWxkIGNvbmZpcm0gdGhpcyBpcyBiZWluZyB0ZXN0ZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cbkknbSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgUENJIGZ1enppbmcuIEl0IHVzZXMgYHZoY2lgIGZvciBVU0IsIGJ1dCBQQ0kncyBvZnRlbiBoYW5kbGVkIGJ5IGBzeXpfcGNpXy4uLmAgb3IgYnkgdXNpbmcgdGhlIHNvZnR3YXJlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0LCBgbXQ3NmAgaGFzIGBtYWM4MDIxMWAgc3VwcG9ydCEgVGhpcyBpcyBpbXBvcnRhbnQuIENvdWxkIHRoaXMgYmUgdHJpZ2dlcmVkIHVzaW5nIGBtYWM4MDIxMWAgbmV0bGluayBjb21tYW5kcywgZXZlbiB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBNYXliZSB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgYSBmYWtlIFBDSSBkZXZpY2UuIFN5emthbGxlcidzIFBDSSBmdXp6aW5nIGhhcyBiZWVuIGltcHJvdmluZywgc28gdGhhdCdzIHBvc3NpYmxlLlxuXG5UaGUgbmV4dCBjcml0aWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyByZWFjaGFibGUgZnJvbSBzeXprYWxsZXIsIHdoaWNoIHNob3VsZCBnaXZlIGluc2lnaHQgaW50byBob3cgdGhpcyBidWcgd2FzIHRyaWdnZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MzQuMDE1NDQ2ODM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDQ2ODgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTcyMzptdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzI0LVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzY1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgxOS0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MjA6XFx0Lm5ldF9maWxsX2ZvcndhcmRfcGF0aCA9IG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjEtXFx0Lm5ldF9zZXR1cF90YyA9IG10NzZfd2VkX25ldF9zZXR1cF90YyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MzQuMjE1OTIwOTcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwMzUzMjU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZGlzdGlsbGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE1UNzkxNSBXaS1GaSBEcml2ZXIgLSBBIFdFRC1TcGVjaWZpYyBQYXRoKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGNvZGUgcmVmZXJlbmNlLCBgLm5ldF9maWxsX2ZvcndhcmRfcGF0aGAsIHdpdGhpbiB0aGUgYG10NzkxNV9vcHNgIHN0cnVjdHVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIHRoaXMgaXMgYSBsaWtlbHkgcG9pbnQgZm9yIFdFRCAoV2ktRmkgb2ZmbG9hZCBFbmdpbmUgRHJpdmVyKSBpbnRlcmFjdGlvbi5cIiBUaGlzIGlzbid0IHN1cnByaXNpbmcsIGdpdmVuIHRoZSBhcmNoaXRlY3R1cmUuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiB0aGlzIG1hbm5lciBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHBhY2tldCBmbG93IHRocm91Z2ggdGhpcyBzZWN0aW9uIGlzIGNvbnRpbmdlbnQgdXBvbiB0aGUgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlndXJhdGlvbiBvcHRpb24gYmVpbmcgZW5hYmxlZC5cblxuVGhlIG5leHQgb2J2aW91cyB0aGluZyB0byBjaGVjayBpcywgd2hhdCBpbml0aWFsaXNhdGlvbiBzdGVwcyByZWxhdGUgdG8gdGhhdCBjb2RlIHNlY3Rpb24/IFRoYXQgdGFrZXMgbWUgc3RyYWlnaHQgdG8gYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gSSdsbCBkZWx2ZSBpbnRvIHRoYXQgdG8gY29uZmlybSB0aGUgcGF0aCB0YWtlbiwgY29uZmlybSB0aGF0IGluaXRpYWxpc2F0aW9uIGlzIGNvcnJlY3RseSBwZXJmb3JtZWQgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSByZWNlaXZlIGJ1ZmZlciBpcyBoYW5kbGVkIGluIHRoZSBjb250ZXh0IG9mIFdFRC4gSXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE3OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEwOjM4LjAxOTQ1NTI5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODI3NDY5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl93ZWRfaW5pdF9yeF9idWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI0ND1pbnQgbXQ3Nl93ZWRfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI0Ny0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI0ODp1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ5LWludCBtdDc2X3dlZF9vZmZsb2FkX2VuYWJsZShzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI1MD1pbnQgbXQ3Nl93ZWRfZG1hX3NldHVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgYm9vbCByZXNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI1MS0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNTI6c3RhdGljIGlubGluZSB1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTYzMz1pbnQgbXQ3OTE1X21taW9fd2VkX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE1LVxcdHdlZC1cXHUwMDNld2xhbi5vZmZsb2FkX2Rpc2FibGUgPSBtdDc2X3dlZF9vZmZsb2FkX2Rpc2FibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjcxNjpcXHR3ZWQtXFx1MDAzZXdsYW4uaW5pdF9yeF9idWYgPSBtdDc2X3dlZF9pbml0X3J4X2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE3LVxcdHdlZC1cXHUwMDNld2xhbi5yZWxlYXNlX3J4X2J1ZiA9IG10NzZfd2VkX3JlbGVhc2VfcnhfYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQ1Nj1pbnQgbXQ3OTk2X21taW9fd2VkX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjAzLVxcdHdlZC1cXHUwMDNld2xhbi5pbml0X2J1ZiA9IG10Nzk5Nl93ZWRfaW5pdF9idWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjYwNDpcXHR3ZWQtXFx1MDAzZXdsYW4uaW5pdF9yeF9idWYgPSBtdDc2X3dlZF9pbml0X3J4X2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjA1LVxcdHdlZC1cXHUwMDNld2xhbi5yZWxlYXNlX3J4X2J1ZiA9IG10NzZfd2VkX3JlbGVhc2VfcnhfYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMxLSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjMyOnUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTgzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjg0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfd2VkX2luaXRfcnhfYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTg1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDozOC42MDIyMDcwNDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjI3NDE3MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdFRCBPZmZsb2FkIFBhdGNoIGZvciBNZWRpYVRlayBTb0NzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBwZXJ0YWlucyB0byBXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyIChXRUQpIG9mZmxvYWQgb24gTWVkaWFUZWsgU3lzdGVtLW9uLUNoaXBzLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBjYW4gSSBldmVuIHJlYWNoIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUeXBpY2FsbHksIFBDSSBkZXZpY2VzIGxpa2UgdGhlIE1UNzkxNSBhcmUgZWl0aGVyIGFic2VudCBpbiBRRU1VL0dDRSwgb3IgdGhleSByZXF1aXJlIHBhc3MtdGhyb3VnaCBvciBlbXVsYXRpb24uIFBlcmhhcHMgYHN5emthbGxlcmAncyBgc3l6X3BjaV8uLi5gIGNhbGxzIGNvdWxkIHByb2JlIHRoZSBkcml2ZXIsIGFzc3VtaW5nIHRoZSBQQ0kgSUQgaXMgYSBtYXRjaC5cblxuV2FpdCwgZG9lcyBgc3l6a2FsbGVyYCBzcGVjaWZpY2FsbHkgdGVzdCBNZWRpYVRlayBXaS1GaSBkcml2ZXJzPyBUaGlzIHBhdGNoIGlzIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgYSBgc3l6a2FsbGVyYC1kaXNjb3ZlcmVkIGJ1ZyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgZml4LiBJbnRlcmVzdGluZy5cblxuSG9sZCBvbiBhIHNlY29uZCwgSSByZWNhbGwgdGhhdCBgc3l6a2FsbGVyYCBkb2VzIGhhdmUgV2ktRmkgZHJpdmVyIHRlc3RpbmcgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQncyBhICpzb2Z0d2FyZSogc2ltdWxhdG9yLCBpc24ndCBpdD8gRm9yICpoYXJkd2FyZSogZHJpdmVycywgSSB0aGluayBgc3l6a2FsbGVyYCBvZmZlcnMgYSBVU0IgZnV6emVyIChkdW1teV9oY2QpIGFuZCBhIFBDSSBmdXp6ZXIuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgQ09ORklHX01UNzkxNUVgIGlzIGEgUENJIGRyaXZlci4gWWVzLCBpdCBsb29rcyBsaWtlIGl0IGlzOiBgbXQ3OTE1ZS15IDo9IHBjaS5vIC4uLmAuIEdvb2QuIE5vdywgbGV0IG1lIHNlZSBpZiBJIGNhbiBmaWd1cmUgb3V0IGhvdyB0byByZWFjaCB0aGUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byByZXF1aXJlIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgLiBUaW1lIHRvIGRlbHZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGUgcHJlc2VuY2UgYW5kIHNldHVwIG9mIGBORVRfTUVESUFURUtfU09DX1dFRGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTU5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEwOjQ0LjgyOTYyOTA5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMjg3Nzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9NRURJQVRFS19TT0NfV0VEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9OTc0PW10NzZfZG1hX3J4X3Byb2Nlc3Moc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05ODMtXFx0aWYgKChxLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1UX1FGTEFHX1dFRF9SUk9fRU4pIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5ODQ6XFx0ICAgIChJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTk4NS1cXHQgICAgIG10NzZfcXVldWVfaXNfd2VkX3R4X2ZyZWUocSkpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NDk6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjQ0PWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ2LVxcdFxcdFxcdCAgdm9pZCAqdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjQ3OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ4LXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI2Mj1zdGF0aWMgaW5saW5lIGludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI2NzojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyOTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3Nl9kZXYgKm10NzZfd2VkX3RvX2RldihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjkzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjk0LVxcdGlmICh3ZWQtXFx1MDAzZXdsYW4uaGlmMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjk1LVxcdFxcdHJldHVybiBjb250YWluZXJfb2Yod2VkLCBzdHJ1Y3QgbXQ3Nl9kZXYsIG1taW8ud2VkX2hpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyOTY6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyOTctXFx0cmV0dXJuIGNvbnRhaW5lcl9vZih3ZWQsIHN0cnVjdCBtdDc2X2RldiwgbW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE2NzM9bXQ3OTE1X3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MjE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzIyLXN0YXRpYyBpbnRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzY1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgxOC1cXHQuc2V0X3JhZGFyX2JhY2tncm91bmQgPSBtdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MTk6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODIwLVxcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MTc3Nz1pbnQgbXQ3OTE1X21jdV93ZWRfZW5hYmxlX3J4X3N0YXRzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTc3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MTc3OTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTc4MC1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NTY1PXN0YXRpYyB1MzIgbXQ3OTE1X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6NTgwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTgxLXN0YXRpYyB2b2lkIG10NzkxNV9tbWlvX3dlZF91cGRhdGVfcnhfc3RhdHMoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo2MzY6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzctXFx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTgyNT1zdGF0aWMgdm9pZCBtdDc5OTZfcnJvX2h3X2luaXRfdjMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjgzMzojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTgzNC1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODQ2LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ3OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjk5ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTk5OS1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAwNS1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMDY6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDA3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNC1cXHRwYXRoLVxcdTAwM2VkZXYgPSBjdHgtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQxNTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTYtXFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jPTI1MTA9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTk2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTY0LVxcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5OTZfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTY1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjU2Ni1cXHQubmV0X3NldHVwX3RjID0gbXQ3Nl93ZWRfbmV0X3NldHVwX3RjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQxMD1zdGF0aWMgdTMyIG10Nzk5Nl9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQyNTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQyNi1zdGF0aWMgaW50IG10Nzk5Nl9tbWlvX3dlZF9yZXNldChzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz00NTY9aW50IG10Nzk5Nl9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ1OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ1OTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ2MC1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9ODYwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg3ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg3OS1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTkxMj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjkyODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTkyOS1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjMxOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMyLXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTE2Nz1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9kbWFfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MTY4OiNlbmRpZiAvKkNPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDo0NC45OTA5MjU0ODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ1NjAwNzg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNZWRpYVRlayBXRUQgT2ZmbG9hZCoqXG5cbk9rYXksIHNvIHRoaXMgYnVnIHJlcXVpcmVzIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBldmVuIGZ1enogdGhpcz8gVGhlIE1lZGlhVGVrIFdFRCBvZmZsb2FkIGlzIGEgaGFyZHdhcmUgdGhpbmcgb24gTWVkaWFUZWsgU29DcywgYW5kIFN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBlbXVsYXRlIHRob3NlIGRpcmVjdGx5LiBCdXQgd2FpdCwgU3l6a2FsbGVyICpmb3VuZCogdGhlIGJ1Zy4gSG93PyBNYXliZSBpdCdzIHJ1bm5pbmcgb24gYSByZWFsIE1lZGlhVGVrIFNvQz8gU3l6a2FsbGVyICpjYW4qIGJlIHJ1biBvbiByZWFsIGhhcmR3YXJlLCBsaWtlIEFuZHJvaWQgZGV2aWNlcyBvciByb3V0ZXJzLCBhZnRlciBhbGwuIE9yIHBlcmhhcHMgdGhlIGRyaXZlciBpcyBiZWluZyBjb21waWxlZCBhbmQgcHJvYmVkIHRocm91Z2ggYSB2aXJ0dWFsIFBDSSBkZXZpY2UsIG1ha2luZyB0aGUgY29kZSBhY2Nlc3NpYmxlLlxuXG5UaGlua2luZyBhYm91dCBpdCwgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHNldCB1cCBhIGZvcndhcmQgcGF0aCwgbGlrZSBmb3IgYSBicmlkZ2Ugb3Igcm91dGluZyBvZmZsb2FkLiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBzZWVtcyB0byBnZXQgY2FsbGVkIGJ5IGBuZnRfZndkX2R1cF9uZXRkZXZfb2ZmbG9hZGAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFNvLCBpZiBTeXprYWxsZXIgY2FuIGNyZWF0ZSBhIHZpcnR1YWwgUENJIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MTVlYCwgdGhhdCBjb3VsZCB0cmlnZ2VyIGl0LlxuXG5IYW5nIG9uLi4uIFN5emthbGxlciBoYXMgdGhvc2UgYHN5el9wY2lfLi4uYCBwc2V1ZG8tc3lzY2FsbHMgdG8gaW5qZWN0IFBDSSBkZXZpY2VzLiBCdXQsIGRvZXMgaXQgbmVlZCBgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYCB0byBtYWtlIHRoYXQgd29yaz8gVGhhdCdzIHRoZSBrZXkuIEkgc2hvdWxkIGNoZWNrIGlmIHRoYXQgY29uZmlnIGlzIGVuYWJsZWQgaW4gdGhlIFN5emthbGxlciBidWlsZC4gSXQncyBhIGNvbmZpZyBvcHRpb24sIHJpZ2h0PyBUbyBmdXp6IHRoaXMgcHJvcGVybHksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTVQ3OTE1RWAgYW5kIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgIGFyZSBib3RoIGVuYWJsZWQuIExldCBtZSBjaGVjayB3aGF0IHRoYXQgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMjMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6NTEuNDQ2OTM4MDM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTIzMDE5NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz04PWlmIE5FVF9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMDpjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6NTMuOTY5OTY3MzYzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjI2NDY2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipFeGFtaW5pbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gZm9yIHRoZSBNVDc5MTVFIERyaXZlcioqXG5cblJpZ2h0LCBzbyB0aGlzIHNlZW1zIHRvIGJlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc2NlbmFyaW8gZm9yIHRoZSBNVDc5MTVFIGRyaXZlciBjb2RlLiBJJ20gaW1tZWRpYXRlbHkgbm90aWNpbmcgYSBkZXBlbmRlbmN5IG9uIGVpdGhlciBgQVJDSF9NRURJQVRFS2AgYmVpbmcgZGVmaW5lZCwgb3IsIGNyaXRpY2FsbHksIGBDT01QSUxFX1RFU1RgLiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgY2FuIGJlIGVuYWJsZWQgaW4gYSBjb3VwbGUgb2Ygd2F5cy4gVGhlIHR5cGljYWwgcGF0aCBpcyBsaWtlbHkgdGllZCB0byB0aGUgTWVkaWF0ZWsgYXJjaGl0ZWN0dXJlLCBhcyB5b3UnZCBleHBlY3QuIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGBDT01QSUxFX1RFU1RgIHN1Z2dlc3RzIHRoYXQgdGhlcmUncyBhIG1lY2hhbmlzbSB0byBmb3JjZSB0aGUgaW5jbHVzaW9uIG9mIHRoZSBkcml2ZXIsIHByb2JhYmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9yIGZvciBhIGJyb2FkZXIgYnVpbGQgY29uZmlndXJhdGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBtaWdodCBub3QgYmUgZXhwbGljaXRseSBNZWRpYXRlaywgYnV0IHdlIHN0aWxsIHdhbnQgdG8gYnVpbGQgaXQgYW5kIGV4YW1pbmUgaXRzIGNvbXBpbGVkIG91dHB1dC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIGBDT05GSUdfTVQ3OTE1RWAgaXMgYW4gb3B0aW9uIHRoYXQgY2FuIGJlIGRpc2FibGVkLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhhdCBvcHRpb24gaW4gbXkgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODk2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6NTcuNTMyNjE2MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzUzMzc3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkxNUVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkxNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkxNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEwOjU5Ljk2Nzk2NDYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5NjcyNjMxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IGluIE1UNzkxNSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0IGNlbnRlcnMgYXJvdW5kIHRoZSBNZWRpYVRlayBNVDc5MTUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTUFDODAyMTEgYW5kIFBDSSBzdWJzeXN0ZW1zLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkxNUVgIGFuZCBgTkVUX01FRElBVEVLX1NPQ19XRURgIGZlYXR1cmVzIGJlaW5nIGVuYWJsZWQuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBJbml0aWFsbHksIHRoZSBjb2RlIGRldGVybWluZWQgdGhlIHF1ZXVlIGJhc2VkIG9uIHdoZXRoZXIgYHBoeWAgd2FzIHRoZSBzYW1lIGFzIGBcdTAwMjZkZXYtXHUwMDNlcGh5YC4gTm93LCBpdCdzIGNoYW5nZWQgdG8gdXNlIGBwaHktXHUwMDNlbXQ3Ni1cdTAwM2ViYW5kX2lkeGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHRoaXMgc2VlbXMgbGlrZSBhIG1vcmUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHF1ZXVlIHNlbGVjdGlvbi5cIiBgcGh5YCBpcyBhIHBvaW50ZXIgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LCBhbmQsIGNyaXRpY2FsbHksIGl0J3MgZGVyaXZlZCBmcm9tIGB2aWYtXHUwMDNlZHJ2X3ByaXZgLiAgSSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSDigJMgaWYgYHBoeS1cdTAwM2VtdDc2YCBpcyBOVUxMLCB0aGlzIGNvdWxkIGJlIGEgY3Jhc2guICBIb3dldmVyLCBnaXZlbiB0aGUgZHJpdmVyJ3Mgc3RydWN0dXJlLCBgcGh5LVx1MDAzZW10NzZgIGlzICpwcm9iYWJseSogaW5pdGlhbGl6ZWQgcHJvcGVybHkuIFRoZSBvcmlnaW5hbCBjb21wYXJpc29uIGBwaHkgIT0gXHUwMDI2ZGV2LVx1MDAzZXBoeWAgbG9va3MgbGlrZSBhIGJ1Zy5cblxuVGhlbiBJIHNlZSB0aGUgbW9kaWZpY2F0aW9uIGluIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAsIGFuZCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgYnJhbmNoZXMgYmFzZWQgb24gYHdlZC1cdTAwM2V2ZXJzaW9uYCBhbmQgYGRldi1cdTAwM2VwaHkuYmFuZF9pZHhgLiAgV2UgaGF2ZSBhIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQgb2YgdGhlIHF1ZXVlOiBlaXRoZXIgYFx1MDAyNmRldi1cdTAwM2VxX3J4W01UX1JYUV9CQU5EMV1gIG9yIGBcdTAwMjZkZXYtXHUwMDNlcV9yeFtNVF9SWFFfTUFJTl1gLiBUaGlzIHNlZW1zIHJlYWNoYWJsZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gIFN5emthbGxlciBpcyB0aGUga2V5IHRvIHRoaXMsIEkgdGhpbmssIHBhcnRpY3VsYXJseSBpZiBpdCdzIGZ1enppbmcgUENJIGRldmljZXMuICBJZiBTeXprYWxsZXIgY2FuIHByb2JlIHRoZSBkcml2ZXIsIGl0IHdpbGwgY2FsbCB0aGVzZSBmdW5jdGlvbnMuIEdpdmVuIHRoYXQgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZCBieSB0aGUgbmV0d29yayBzdGFjaywgaWYgdGhlIGRyaXZlciBpcyBzdWNjZXNzZnVsbHkgcHJvYmVkLCBhIG5ldGRldiBpcyByZWdpc3RlcmVkIGFuZCB0aGVuIHRoZSBuZXR3b3JrIHN0YWNrIGNhbGxzIGBuZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiAgU3l6a2FsbGVyIGNhbiB1c2UgYHN5el9wY2lfLi4uYCBjYWxscyB0byBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJJ20gd29uZGVyaW5nIHRob3VnaCBpZiB0aGUgZHJpdmVyIGNhbiBiZSBzdWNjZXNzZnVsbHkgcHJvYmVkIHdpdGhvdXQgcmVhbCBoYXJkd2FyZS4gVXN1YWxseSwgbW9yZSBjb21wbGV4IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIG9mdGVuIGZhaWxzIHVubGVzcyB0aGUgZW11bGF0b3IgaGFuZGxlcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHJlZ2lzdGVycy4gSSBuZWVkIHRvIGNoZWNrIGBtdDc5MTVfcGNpX3Byb2JlYCB0byBrbm93IGZvciBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODMwOCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTowOS45MzUyMzA2NjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODM3MjQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcGNpX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTg0PXN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9oaWYyX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjEwMzpzdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTA0LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0yMjE9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTE1X2hpZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjMtXFx0LmlkX3RhYmxlXFx0PSBtdDc5MTVfaGlmX2RldmljZV90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMjQ6XFx0LnByb2JlXFx0XFx0PSBtdDc5MTVfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyNS1cXHQucmVtb3ZlXFx0XFx0PSBtdDc5MTVfaGlmX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTIyOD1zdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cXHQuaWRfdGFibGVcXHQ9IG10NzkxNV9wY2lfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzMTpcXHQucHJvYmVcXHRcXHQ9IG10NzkxNV9wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjMyLVxcdC5yZW1vdmVcXHRcXHQ9IG10NzkxNV9wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToxMC41MDM2MDg3MDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzNTA0MzE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbXQ3OTE1X3BjaV9wcm9iZWAqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoZSBgbXQ3OTE1X3BjaV9wcm9iZWAgZnVuY3Rpb24gaXMgZG9pbmcuIEknbSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIFBDSSBkZXZpY2UuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBnZXRzIHJlc291cmNlIGluZm9ybWF0aW9uLCBlc3BlY2lhbGx5IHRoZSBCQVJzLCBpbnRlcnJ1cHRzLCBhbmQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGF0YSBpdCBncmFicyBmcm9tIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gSSBleHBlY3QgdGhlcmUnbGwgYmUgc29tZSBkZXZpY2Utc3BlY2lmaWMgc2V0dXAgaGVyZSwgcHJvYmFibHkgZGVhbGluZyB3aXRoIHRoZSBNZWRpYVRlaydzIGludGVybmFsIHJlZ2lzdGVycyBhbmQgcG9zc2libHkgYW55IGZpcm13YXJlIGxvYWRpbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCwgZXJyb3IgY29uZGl0aW9ucywgYW5kIGludGVycnVwdCByZWdpc3RyYXRpb24uIFRoZSBgcHJvYmVgIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50LCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBzZXRzIHVwIHRoZSBiYXNpYyBkZXZpY2Ugc3RydWN0dXJlLCBhbGxvY2F0ZXMgbWVtb3J5LCBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUgc28gdGhhdCB0aGUgZHJpdmVyIGlzIHJlYWR5IHRvIGdvLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFzIHdlbGw7IGhvdyBpdCBncmFjZWZ1bGx5IGNsZWFucyB1cCBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyBpcyBjcnVjaWFsLiBGaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGlzIHByb2JlIHJvdXRpbmUgY29ubmVjdHMgdG8gb3RoZXIgcGllY2VzIG9mIHRoZSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcGFydHMgdGhhdCBoYW5kbGUgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGFuZCBkYXRhIHRyYW5zbWlzc2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxOTMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToxNC4wMzg2NTQ1NzhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMyxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDM6XFx0c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAxMDQ6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4gMTA1OlxcdHtcXG4gMTA2OlxcdFxcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYyID0gTlVMTDtcXG4gMTA3OlxcdFxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXY7XFxuIDEwODpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuIDEwOTpcXHRcXHRpbnQgaXJxO1xcbiAxMTA6XFx0XFx0aW50IHJldDtcXG4gMTExOlxcdFxcbiAxMTI6XFx0XFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbiAxMTM6XFx0XFx0aWYgKHJldClcXG4gMTE0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdHJldCA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBCSVQoMCksIHBjaV9uYW1lKHBkZXYpKTtcXG4gMTE3OlxcdFxcdGlmIChyZXQpXFxuIDExODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMTk6XFx0XFxuIDEyMDpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMTIxOlxcdFxcbiAxMjI6XFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiAxMjM6XFx0XFx0aWYgKHJldClcXG4gMTI0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdG10NzZfcGNpX2Rpc2FibGVfYXNwbShwZGV2KTtcXG4gMTI3OlxcdFxcbiAxMjg6XFx0XFx0aWYgKGlkLVxcdTAwM2VkZXZpY2UgPT0gMHg3OTE2IHx8IGlkLVxcdTAwM2VkZXZpY2UgPT0gMHg3OTBhKVxcbiAxMjk6XFx0XFx0XFx0cmV0dXJuIG10NzkxNV9wY2lfaGlmMl9wcm9iZShwZGV2KTtcXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0ZGV2ID0gbXQ3OTE1X21taW9fcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcXG4gMTMyOlxcdFxcdFxcdFxcdFxcdGlkLVxcdTAwM2VkZXZpY2UpO1xcbiAxMzM6XFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbiAxMzQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZGV2KTtcXG4gMTM1OlxcdFxcbiAxMzY6XFx0XFx0bWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIDEzNzpcXHRcXHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMTM4OlxcdFxcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcXG4gMTM5OlxcdFxcbiAxNDA6XFx0XFx0cmV0ID0gbXQ3OTE1X21taW9fd2VkX2luaXQoZGV2LCBwZGV2LCB0cnVlLCBcXHUwMDI2aXJxKTtcXG4gMTQxOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNDI6XFx0XFx0XFx0Z290byBmcmVlX3dlZF9vcl9pcnFfdmVjdG9yO1xcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHRpZiAoIXJldCkge1xcbiAxNDU6XFx0XFx0XFx0aGlmMiA9IG10NzkxNV9wY2lfaW5pdF9oaWYyKHBkZXYpO1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRcXHRyZXQgPSBwY2lfYWxsb2NfaXJxX3ZlY3RvcnMocGRldiwgMSwgMSwgUENJX0lSUV9BTExfVFlQRVMpO1xcbiAxNDg6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDE0OTpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHRcXHRpcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE1MjpcXHRcXHR9XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcXG4gMTU1OlxcdFxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuIDE1NjpcXHRcXHRpZiAocmV0KVxcbiAxNTc6XFx0XFx0XFx0Z290byBmcmVlX3dlZF9vcl9pcnFfdmVjdG9yO1xcbiAxNTg6XFx0XFxuIDE1OTpcXHRcXHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgdG50ZXJydXB0IGVuYWJsZSAqL1xcbiAxNjA6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUVfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xcbiAxNjE6XFx0XFxuIDE2MjpcXHRcXHRpZiAoaGlmMikge1xcbiAxNjM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VoaWYyID0gaGlmMjtcXG4gMTY0OlxcdFxcbiAxNjU6XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVDFfTUFTS19DU1IsIDApO1xcbiAxNjY6XFx0XFx0XFx0LyogbWFzdGVyIHN3aXRjaCBvZiBQQ0llIHRudGVycnVwdCBlbmFibGUgKi9cXG4gMTY3OlxcdFxcdFxcdGlmIChpc19tdDc5MTUobWRldikpXFxuIDE2ODpcXHRcXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfUENJRTFfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xcbiAxNjk6XFx0XFx0XFx0ZWxzZVxcbiAxNzA6XFx0XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFX01UNzkxNiwgMHhmZik7XFxuIDE3MTpcXHRcXG4gMTcyOlxcdFxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cXHUwMDNlZGV2LCBkZXYtXFx1MDAzZWhpZjItXFx1MDAzZWlycSxcXG4gMTczOlxcdFxcdFxcdFxcdFxcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxcbiAxNzQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFxcXCItaGlmXFxcIiwgZGV2KTtcXG4gMTc1OlxcdFxcdFxcdGlmIChyZXQpXFxuIDE3NjpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfaGlmMjtcXG4gMTc3OlxcdFxcdH1cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAxODA6XFx0XFx0aWYgKHJldClcXG4gMTgxOlxcdFxcdFxcdGdvdG8gZnJlZV9oaWYyX2lycTtcXG4gMTgyOlxcdFxcbiAxODM6XFx0XFx0cmV0dXJuIDA7XFxuIDE4NDpcXHRcXG4gMTg1OlxcdGZyZWVfaGlmMl9pcnE6XFxuIDE4NjpcXHRcXHRpZiAoZGV2LVxcdTAwM2VoaWYyKVxcbiAxODc6XFx0XFx0XFx0ZGV2bV9mcmVlX2lycShtZGV2LVxcdTAwM2VkZXYsIGRldi1cXHUwMDNlaGlmMi1cXHUwMDNlaXJxLCBkZXYpO1xcbiAxODg6XFx0ZnJlZV9oaWYyOlxcbiAxODk6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMilcXG4gMTkwOlxcdFxcdFxcdHB1dF9kZXZpY2UoZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VkZXYpO1xcbiAxOTE6XFx0XFx0ZGV2bV9mcmVlX2lycShtZGV2LVxcdTAwM2VkZXYsIGlycSwgZGV2KTtcXG4gMTkyOlxcdGZyZWVfd2VkX29yX2lycV92ZWN0b3I6XFxuIDE5MzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpXFxuIDE5NDpcXHRcXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKTtcXG4gMTk1OlxcdFxcdGVsc2VcXG4gMTk2OlxcdFxcdFxcdHBjaV9mcmVlX2lycV92ZWN0b3JzKHBkZXYpO1xcbiAxOTc6XFx0ZnJlZV9kZXZpY2U6XFxuIDE5ODpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAxOTk6XFx0XFxuIDIwMDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAyMDE6XFx0fVxcbiAyMDI6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjE0LjAzODg1MzA3OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzgzNjYxMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBgbXQ3OTE1X3BjaV9wcm9iZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJdCdzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24sIHNvIHRoYXQgbWFrZXMgc2Vuc2UgYXMgdGhlIGVudHJ5IGZvciB0aGUgUENJIGRldmljZS4gSXQncyBjYWxsaW5nIGBtdDc5MTVfbW1pb19wcm9iZWAgZmlyc3QuIFJpZ2h0LCBgbW1pb19wcm9iZWAgcHJvYmFibHkgZGVhbHMgd2l0aCB0aGUgbWVtb3J5LW1hcHBlZCBJL08gaW5pdGlhbGl6YXRpb24sIHNldHRpbmcgdXAgdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gTWFrZXMgc2Vuc2UuIFRoZW4sIHRoZSBmbG93IGp1bXBzIGludG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiAgVGhhdCdzIHRoZSBjb3JlIG9mIHdoYXQgSSdtIGludGVyZXN0ZWQgaW4gbm93LiBUaGF0IGZ1bmN0aW9uIG11c3QgYmUgd2hlcmUgdGhlIGRyaXZlciBmaW5hbGl6ZXMgaXRzIHNldHVwLCByZWdpc3RlcnMgdGhlIGRldmljZSB3aXRoIHRoZSBzeXN0ZW0sIGFuZCBwcm9iYWJseSBtYWtlcyBpdCBhdmFpbGFibGUgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBpbnNpZGUgdGhhdCByZWdpc3RyYXRpb24gdG8gc2VlIHRoZSBhY3R1YWwgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTYyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToxNy40MjI1MTY5ODhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDY1MTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjA5PXN0YXRpYyB2b2lkIG10NzkxNV9zdG9wX2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIyMDppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQzMz11MzIgbXQ3OTE1X3dlZF9pbml0X2J1Zih2b2lkICpwdHIsIGRtYV9hZGRyX3QgcGh5cywgaW50IHRva2VuX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDM1OmludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQzNi12b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTc5OlxcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjY0OlxcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjY1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjE3LjYwMzE3NDA2NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODU2MzY5ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZSBDYWxsKipcblxuT2theSwgc28gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGhhcyBiZWVuIHRyaWdnZXJlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmU/XCIgSSBzZWUgdGhhdCBgbXQ3OTh4X3dtYWNfcHJvYmVgIGFsc28gdXNlcyBpdC4gSW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgYG10Nzk4eF93bWFjX3Byb2JlYCBpcyB0aGF0IHBsYXRmb3JtIGRyaXZlciBwcm9iZSB0aWVkIHRvIGBDT05GSUdfTVQ3OThYX1dNQUNgLiBBbmQgd2l0aCBwbGF0Zm9ybSBkcml2ZXJzLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIFN5emthbGxlciBjb3VsZCBlYXNpbHkgaGl0IHRoaXMsIGVpdGhlciB0aHJvdWdoIGEgYHN5el9nZW5ldGxpbmtgIGNhbGwsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRldmljZSB0cmVlLCBvciBldmVuIHRoZSBkaXJlY3QgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsLiBUaGF0J3MgYSBjbGFzc2ljIGF0dGFjayB2ZWN0b3IuXG5cbkJ1dCB3YWl0LCB0aGlzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBpc24ndCBqdXN0IGEgc2ltcGxlIHJlZ2lzdHJhdGlvbi4gSXQncyBhbHNvIGRvaW5nIGZpcm13YXJlIGxvYWRpbmcgYW5kIE1DVSBpbml0aWFsaXphdGlvbi4gVGhpcyByYWlzZXMgdGhlIHN0YWtlcyBjb25zaWRlcmFibHkuIEEgZmF1bHQgaGVyZSBjb3VsZCBiZSBjYXRhc3Ryb3BoaWMuIEkgbmVlZCB0byBkaWcgaW50byBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgbW9yZSBjbG9zZWx5LiBMZXQncyBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNTQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6MjIuNDU5NTQ3ODI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMjA6XFx0aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4xMjIxOlxcdHtcXG4xMjIyOlxcdFxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyO1xcbjEyMjM6XFx0XFx0aW50IHJldDtcXG4xMjI0OlxcdFxcbjEyMjU6XFx0XFx0ZGV2LVxcdTAwM2VwaHkuZGV2ID0gZGV2O1xcbjEyMjY6XFx0XFx0ZGV2LVxcdTAwM2VwaHkubXQ3NiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucGh5O1xcbjEyMjc6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2LnBoeS5wcml2ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbjEyMjg6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJjX3dvcmssIG10NzkxNV9tYWNfc3RhX3JjX3dvcmspO1xcbjEyMjk6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTE1X21hY193b3JrKTtcXG4xMjMwOlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXN0YV9yY19saXN0KTtcXG4xMjMxOlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXR3dF9saXN0KTtcXG4xMjMyOlxcdFxcbjEyMzM6XFx0XFx0aW5pdF93YWl0cXVldWVfaGVhZChcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93YWl0KTtcXG4xMjM0OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93b3JrLCBtdDc5MTVfbWFjX3Jlc2V0X3dvcmspO1xcbjEyMzU6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWR1bXBfd29yaywgbXQ3OTE1X21hY19kdW1wX3dvcmspO1xcbjEyMzY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX211dGV4KTtcXG4xMjM3OlxcdFxcbjEyMzg6XFx0XFx0ZGV2LVxcdTAwM2VkYmRjX3N1cHBvcnQgPSBtdDc5MTVfYmFuZF9jb25maWcoZGV2KTtcXG4xMjM5OlxcdFxcbjEyNDA6XFx0XFx0cGh5MiA9IG10NzkxNV9hbGxvY19leHRfcGh5KGRldik7XFxuMTI0MTpcXHRcXHRpZiAoSVNfRVJSKHBoeTIpKVxcbjEyNDI6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5Mik7XFxuMTI0MzpcXHRcXG4xMjQ0OlxcdFxcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XFxuMTI0NTpcXHRcXHRpZiAocmV0KVxcbjEyNDY6XFx0XFx0XFx0Z290byBmcmVlX3BoeTI7XFxuMTI0NzpcXHRcXG4xMjQ4OlxcdFxcdG10NzkxNV9pbml0X3dpcGh5KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTI0OTpcXHRcXG4xMjUwOlxcdCNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxcbjEyNTE6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2LnRlc3Rfb3BzID0gXFx1MDAyNm10NzkxNV90ZXN0bW9kZV9vcHM7XFxuMTI1MjpcXHQjZW5kaWZcXG4xMjUzOlxcdFxcbjEyNTQ6XFx0XFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHJ1ZSwgbXQ3Nl9yYXRlcyxcXG4xMjU1OlxcdFxcdFxcdFxcdFxcdCAgIEFSUkFZX1NJWkUobXQ3Nl9yYXRlcykpO1xcbjEyNTY6XFx0XFx0aWYgKHJldClcXG4xMjU3OlxcdFxcdFxcdGdvdG8gc3RvcF9odztcXG4xMjU4OlxcdFxcbjEyNTk6XFx0XFx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEyNjA6XFx0XFx0aWYgKHJldClcXG4xMjYxOlxcdFxcdFxcdGdvdG8gdW5yZWdfZGV2O1xcbjEyNjI6XFx0XFxuMTI2MzpcXHRcXHRpZiAocGh5Mikge1xcbjEyNjQ6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2LCBwaHkyKTtcXG4xMjY1OlxcdFxcdFxcdGlmIChyZXQpXFxuMTI2NjpcXHRcXHRcXHRcXHRnb3RvIHVucmVnX3RoZXJtYWw7XFxuMTI2NzpcXHRcXHR9XFxuMTI2ODpcXHRcXG4xMjY5OlxcdFxcdGllZWU4MDIxMV9xdWV1ZV93b3JrKG10NzZfaHcoZGV2KSwgXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrKTtcXG4xMjcwOlxcdFxcbjEyNzE6XFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5od19pbml0X2RvbmUgPSB0cnVlO1xcbjEyNzI6XFx0XFxuMTI3MzpcXHRcXHRyZXQgPSBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTI3NDpcXHRcXHRpZiAocmV0KVxcbjEyNzU6XFx0XFx0XFx0Z290byB1bnJlZ190aGVybWFsO1xcbjEyNzY6XFx0XFxuMTI3NzpcXHRcXHRyZXQgPSBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoZGV2KTtcXG4xMjc4OlxcdFxcdGlmIChyZXQpXFxuMTI3OTpcXHRcXHRcXHRnb3RvIHVucmVnX3RoZXJtYWw7XFxuMTI4MDpcXHRcXG4xMjgxOlxcdFxcdHJldHVybiAwO1xcbjEyODI6XFx0XFxuMTI4MzpcXHR1bnJlZ190aGVybWFsOlxcbjEyODQ6XFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEyODU6XFx0dW5yZWdfZGV2OlxcbjEyODY6XFx0XFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4xMjg3OlxcdHN0b3BfaHc6XFxuMTI4ODpcXHRcXHRtdDc5MTVfc3RvcF9oYXJkd2FyZShkZXYpO1xcbjEyODk6XFx0ZnJlZV9waHkyOlxcbjEyOTA6XFx0XFx0aWYgKHBoeTIpXFxuMTI5MTpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV9odyhwaHkyLVxcdTAwM2VtdDc2LVxcdTAwM2Vodyk7XFxuMTI5MjpcXHRcXHRyZXR1cm4gcmV0O1xcbjEyOTM6XFx0fVxcbjEyOTQ6XFx0XFxuMTI5NTpcXHR2b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjEyOTY6XFx0e1xcbjEyOTc6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmspO1xcbjEyOTg6XFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xcbjEyOTk6XFx0XFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcXG4xMzAwOlxcdFxcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4xMzAxOlxcdFxcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuMTMwMjpcXHRcXHRtdDc5MTVfc3RvcF9oYXJkd2FyZShkZXYpO1xcbjEzMDM6XFx0XFxuMTMwNDpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjEzMDU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToyMi40NTk3MDc4MzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MzI1MDkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIHNlZSB0aGUgYG10NzkxNV9pbml0X2hhcmR3YXJlYCBmdW5jdGlvbiBiZWluZyBjYWxsZWQuIFRpbWUgdG8gZGlzc2VjdCBpdHMgZ3V0cyBhbmQgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGJlYXN0IGdldHMgaXRzIGhhcmR3YXJlIGluaXRpYWxpemVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBudWFuY2VzIG9mIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi4gSXMgaXQgZm9sbG93aW5nIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXM/IEFueSBjbGV2ZXIgdHJpY2tzIG9yIG9wdGltaXphdGlvbnM/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkLCBhbmQgaW4gd2hhdCBvcmRlcj8gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgcG9zc2libGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGFuZCBhbnkgZGV2aWF0aW9uIGZyb20gYmVzdCBwcmFjdGljZXMgdGhhdCBtaWdodCByZXF1aXJlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTGV0J3Mgc2VlIGlmIHRoaXMgZm9sbG93cyB0aGUgc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24gcGF0dGVybiBmb3IgdGhpcyBmYW1pbHkgb3IgaWYgTWVkaWFUZWsgaGFzIHNvbWV0aGluZyBzcGVjaWFsIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDk4NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6MjUuOTQyOTYxNzYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwMDM3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X2luaXRfaGFyZHdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTgyNz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjgyODptdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjIwPWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI0NDpcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjQ1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjI2LjA0Njk3NDYzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODg3OTY0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLiBJIG5lZWQgdG8gZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2VzIHdpdGggc2ltaWxhciBoYXJkd2FyZS4gSSB3b25kZXIgaWYgdGhleSdyZSBoYW5kbGluZyB0aGUgY2xvY2sgY29uZmlndXJhdGlvbiB0aGUgd2F5IEkgd291bGQuIEFyZSB0aGV5IHV0aWxpemluZyB0aGUgY29ycmVjdCBwb3dlciBkb21haW5zIGFuZCBmcmVxdWVuY3kgc2NhbGluZyBmb3IgZGlmZmVyZW50IG9wZXJhdGluZyBtb2Rlcz8gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMg4oCTIGFyZSB0aGV5IGJlaW5nIGVmZmljaWVudCB3aXRoIHRoZWlyIHdyaXRlcz8gQW55IHVubmVjZXNzYXJ5IHJlZ2lzdGVyIHJlYWRzIGR1cmluZyB0aGUgcHJvY2VzcyBhcmUgaW5zdGFudCBmbGFncyBmb3IgbWUuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gcGhhc2UuIFN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzPyBJbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXA/IFRoYXQncyBkZWZpbml0ZWx5IHdoYXQgSSdsbCB3YW50IHRvIGZvY3VzIG9uLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgb2YgdGhlIE1UNzkxNSBzcGVjaWZpY2FsbHkgdG8gc3BvdCBhbnkgcG90ZW50aWFsIG1pc2NvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRocm91Z2hwdXQsIGxhdGVuY3ksIG9yIHBvd2VyIGNvbnN1bXB0aW9uLiBMZXQncyBzdGFydCB3aXRoIHRoZSByZWdpc3RlciBkZWZpbml0aW9uc+KAplxuXG5cbiIsIklucHV0VG9rZW5zIjozNTUwOCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjI5LjUzNTc3MzE4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyNyxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4Mjc6XFx0c3RhdGljIGludFxcbiA4Mjg6XFx0bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuIDgyOTpcXHR7XFxuIDgzMDpcXHRcXHRpbnQgcmV0LCBpZHg7XFxuIDgzMTpcXHRcXG4gODMyOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlRfTUFTS19DU1IsIDApO1xcbiA4MzM6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9TT1VSQ0VfQ1NSLCB+MCk7XFxuIDgzNDpcXHRcXG4gODM1OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2Vpbml0X3dvcmssIG10NzkxNV9pbml0X3dvcmspO1xcbiA4MzY6XFx0XFxuIDgzNzpcXHRcXHRyZXQgPSBtdDc5MTVfZG1hX2luaXQoZGV2LCBwaHkyKTtcXG4gODM4OlxcdFxcdGlmIChyZXQpXFxuIDgzOTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4NDA6XFx0XFxuIDg0MTpcXHRcXHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiA4NDI6XFx0XFxuIDg0MzpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG4gODQ0OlxcdFxcdGlmIChyZXQpXFxuIDg0NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4NDY6XFx0XFxuIDg0NzpcXHRcXHRyZXQgPSBtdDc5MTVfZWVwcm9tX2luaXQoZGV2KTtcXG4gODQ4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA4NDk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODUwOlxcdFxcbiA4NTE6XFx0XFx0aWYgKGRldi1cXHUwMDNlY2FsKSB7XFxuIDg1MjpcXHRcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2FwcGx5X2dyb3VwX2NhbChkZXYpO1xcbiA4NTM6XFx0XFx0XFx0aWYgKHJldClcXG4gODU0OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDg1NTpcXHRcXHR9XFxuIDg1NjpcXHRcXG4gODU3OlxcdFxcdC8qIEJlYWNvbiBhbmQgbWdtdCBmcmFtZXMgc2hvdWxkIG9jY3VweSB3Y2lkIDAgKi9cXG4gODU4OlxcdFxcdGlkeCA9IG10NzZfd2NpZF9hbGxvYyhkZXYtXFx1MDAzZW10NzYud2NpZF9tYXNrLCBNVDc5MTVfV1RCTF9TVEEpO1xcbiA4NTk6XFx0XFx0aWYgKGlkeClcXG4gODYwOlxcdFxcdFxcdHJldHVybiAtRU5PU1BDO1xcbiA4NjE6XFx0XFxuIDg2MjpcXHRcXHRkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQuaWR4ID0gaWR4O1xcbiA4NjM6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmh3X2tleV9pZHggPSAtMTtcXG4gODY0OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC50eF9pbmZvIHw9IE1UX1dDSURfVFhfSU5GT19TRVQ7XFxuIDg2NTpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVxcdTAwM2VtdDc2LndjaWRbaWR4XSwgXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZCk7XFxuIDg2NjpcXHRcXG4gODY3OlxcdFxcdHJldHVybiAwO1xcbiA4Njg6XFx0fVxcbiA4Njk6XFx0XFxuIDg3MDpcXHR2b2lkIG10NzkxNV9zZXRfc3RyZWFtX3ZodF90eGJmX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4gODcxOlxcdHtcXG4gODcyOlxcdFxcdGludCBzdHM7XFxuIDg3MzpcXHRcXHR1MzIgKmNhcDtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0aWYgKCFwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNhcC5oYXNfNWdoeilcXG4gODc2OlxcdFxcdFxcdHJldHVybjtcXG4gODc3OlxcdFxcbiA4Nzg6XFx0XFx0c3RzID0gaHdlaWdodDgocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjaGFpbm1hc2spO1xcbiA4Nzk6XFx0XFx0Y2FwID0gXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQudmh0X2NhcC5jYXA7XFxuIDg4MDpcXHRcXG4gODgxOlxcdFxcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHxcXG4gODgyOlxcdFxcdFxcdElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRUVfQ0FQQUJMRSB8XFxuIDg4MzpcXHRcXHRcXHRGSUVMRF9QUkVQKElFRUU4MDIxMV9WSFRfQ0FQX0JFQU1GT1JNRUVfU1RTX01BU0ssXFxuIDg4NDpcXHRcXHRcXHRcXHQgICBzdHMgLSAxKTtcXG4gODg1OlxcdFxcbiA4ODY6XFx0XFx0KmNhcCBcXHUwMDI2PSB+KElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSyB8XFxuIDg4NzpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuIDg4ODpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSk7XFxuIDg4OTpcXHRcXG4gODkwOlxcdFxcdGlmIChzdHMgXFx1MDAzYyAyKVxcbiA4OTE6XFx0XFx0XFx0cmV0dXJuO1xcbiA4OTI6XFx0XFxuIDg5MzpcXHRcXHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuIDg5NDpcXHRcXHRcXHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbiA4OTU6XFx0XFx0XFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0ssXFxuIDg5NjpcXHRcXHRcXHRcXHQgICBzdHMgLSAxKTtcXG4gODk3OlxcdH1cXG4gODk4OlxcdFxcbiA4OTk6XFx0c3RhdGljIHZvaWRcXG4gOTAwOlxcdG10NzkxNV9zZXRfc3RyZWFtX2hlX3R4YmZfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxcbiA5MDE6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqaGVfY2FwLCBpbnQgdmlmKVxcbiA5MDI6XFx0e1xcbiA5MDM6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbiA5MDQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZV9jYXBfZWxlbSAqZWxlbSA9IFxcdTAwMjZoZV9jYXAtXFx1MDAzZWhlX2NhcF9lbGVtO1xcbiA5MDU6XFx0XFx0aW50IHN0cyA9IGh3ZWlnaHQ4KHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2hhaW5tYXNrKTtcXG4gOTA2OlxcdFxcdHU4IGMsIHN0c18xNjAgPSBzdHM7XFxuIDkwNzpcXHRcXG4gOTA4OlxcdFxcdC8qIENhbiBkbyAxLzIgb2YgU1RTIGluIDE2ME1oeiBtb2RlIGZvciBtdDc5MTUgKi9cXG4gOTA5OlxcdFxcdGlmIChpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG4gOTEwOlxcdFxcdFxcdGlmICghZGV2LVxcdTAwM2VkYmRjX3N1cHBvcnQpXFxuIDkxMTpcXHRcXHRcXHRcXHRzdHNfMTYwIC89IDI7XFxuIDkxMjpcXHRcXHRcXHRlbHNlXFxuIDkxMzpcXHRcXHRcXHRcXHRzdHNfMTYwID0gMDtcXG4gOTE0OlxcdFxcdH1cXG4gOTE1OlxcdFxcbiA5MTY6XFx0I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxuIDkxNzpcXHRcXHRpZiAodmlmID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXFxuIDkxODpcXHRcXHRcXHRyZXR1cm47XFxuIDkxOTpcXHQjZW5kaWZcXG4gOTIwOlxcdFxcbiA5MjE6XFx0XFx0ZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzNdIFxcdTAwMjY9IH5JRUVFODAyMTFfSEVfUEhZX0NBUDNfU1VfQkVBTUZPUk1FUjtcXG4gOTIyOlxcdFxcdGVsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1s0XSBcXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVA0X01VX0JFQU1GT1JNRVI7XFxuIDkyMzpcXHRcXG4gOTI0OlxcdFxcdGMgPSBJRUVFODAyMTFfSEVfUEhZX0NBUDVfQkVBTUZPUk1FRV9OVU1fU05EX0RJTV9VTkRFUl84ME1IWl9NQVNLO1xcbiA5MjU6XFx0XFx0aWYgKHN0c18xNjApXFxuIDkyNjpcXHRcXHRcXHRjIHw9IElFRUU4MDIxMV9IRV9QSFlfQ0FQNV9CRUFNRk9STUVFX05VTV9TTkRfRElNX0FCT1ZFXzgwTUhaX01BU0s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjI5LjUzNTk4MjIyOFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA2MDgwMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEZhaWx1cmUgb2YgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZSBpbiBhIFN5emthbGxlciBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9uIGFuZCBpdCdzIGZhaWxpbmcuIFRoZSBsaWtlbHkgY3VscHJpdCBzZWVtcyB0byBiZSBgbXQ3OTE1X21jdV9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgZmlybXdhcmUgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgTUNVLiBIbW0sIEkgYmV0IHRoZSB2aXJ0dWFsIFBDSSBkZXZpY2UgaW4gU3l6a2FsbGVyIGlzIHRoZSBpc3N1ZSwgaXQgcHJvYmFibHkgZG9lc24ndCBmdWxseSBpbXBsZW1lbnQgdGhlIE1DVSBwcm90b2NvbCwgY2F1c2luZyBgbXQ3OTE1X21jdV9pbml0YCB0byBib21iIG91dC4gQSBmYWlsZWQgYG10NzkxNV9tY3VfaW5pdGAgbWVhbnMgYSBmYWlsZWQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgZG9lc24ndCBTeXprYWxsZXIgaGF2ZSBzb21lIHdheSB0byBieXBhc3Mgb3IgbW9jayBmaXJtd2FyZSBsb2FkaW5nLCBvciBhdCBsZWFzdCBzdWJzdGl0dXRlIGl0PyBObywgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJ3QgZ2VuZXJhbGx5IG1vY2sgZHJpdmVyLXNwZWNpZmljIGZpcm13YXJlIHVubGVzcyB0aGVyZSdzIGV4cGxpY2l0IHN1cHBvcnQuIFRoaW5rIG9mIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHRoYXQgb25lIGRvZXNuJ3QgcmVseSBvbiByZWFsIGZpcm13YXJlLiBTbywgSSBuZWVkIHRvIGFzc3VtZSB0aGF0IGl0J3MgdGhlIE1DVSBwcm90b2NvbCBub3QgYmVpbmcgaW1wbGVtZW50ZWQuXG5cbkhvbGQgb24sIEknbSBnZXR0aW5nIGFoZWFkIG9mIG15c2VsZi4gV2hhdCBpZiB0aGUgTUNVIGluaXQgZG9lc24ndCAqY29tcGxldGVseSogZmFpbD8gQ291bGQgaXQgcG90ZW50aWFsbHkganVzdCB0aW1lb3V0IGFuZCBpZ25vcmUgdGhlIGVycm9yPyBUaGF0IGNvdWxkIGNhdXNlIGEgZGVsYXllZCBwcm9ibGVtIG9yIGxlYWQgdG8gaW5jb3JyZWN0IGFzc3VtcHRpb25zIGRvd24gdGhlIGxpbmUuIFRoYXQncyB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBJIG5lZWQgdG8gZGl2ZSBiYWNrIGludG8gdGhlIGBtdDc5MTVfbWN1X2luaXRgIGZ1bmN0aW9uIGFuZCBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3JzIGFuZCBwb3RlbnRpYWwgdGltZW91dHMuIEkgbmVlZCB0byBjb25maXJtIHRoZSBmYWlsdXJlIG1lY2hhbmlzbSFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzc1NzcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTozNC42NDIwNjU5OTJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDg0NDY3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTgyOD1tdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg0MzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODQ0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM3NS1cXHQvKiBsb2FkIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTM3NjpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMjk2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMjk3Om10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjI5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzYxPXN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfcmVkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjM4NDppbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjM4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MzI6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDMzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0Mzk6aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDUxOlxcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ1Mz1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDU0OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDU1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDU2LWludCBtdDc5MTVfbWN1X3R3dF9hZ3J0X3VwZGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTozNC43NzI5MTkxMjlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxODMzNTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkxNSBNQ1UgRmlybXdhcmUgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhlIG9idmlvdXMgZnVuY3Rpb24gaXMgdG8gbG9hZCB0aGUgZmlybXdhcmUg4oCTIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIElmIGl0IGZhaWxzLCB3ZSd2ZSBnb3QgYW4gZXJyb3IgcmV0dXJuLCBzdGFuZGFyZCBzdHVmZi4gQnV0IHRoZW4gbXkgYnJhaW4gc3RhcnRzIHdoaXJyaW5nLi4uIHdhaXQgYSBtaW51dGUsIHdlJ3JlIHRhbGtpbmcgYWJvdXQgZnV6emluZyBhbmQgdGVzdGluZy4gU3l6a2FsbGVyJ3MgZ290IHRoYXQgYHN5el9tb3VudF9pbWFnZWAgY2FsbCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHJpZ2h0PyBXZSBjb3VsZCBmZWVkIGl0IGZpcm13YXJlIGZpbGVzIGRpcmVjdGx5LCBvciB3ZSBjb3VsZCBqdXN0IG1vY2sgYHJlcXVlc3RfZmlybXdhcmVgIHRvIHJldHVybiBzdWNjZXNzLiBUaGF0J3MgdGhlIGVhc3kgcGF0aC5cblxuQnV0IGhlcmUncyB0aGUga2lja2VyOiB0aGUgZHJpdmVyIHdpbGwgKnRoZW4qIHByb2NlZWQgdG8gd3JpdGUgdGhlIGZpcm13YXJlIHRvIHRoZSBkZXZpY2UgYW5kIHdhaXQgZm9yIHRoZSBNQ1UgdG8gYm9vdC4gQW5kIGhlcmUsIHdpdGggb3VyIHZpcnR1YWwgZGV2aWNlLCB0aGluZ3MgYmVjb21lIHByb2JsZW1hdGljLiBUaGUgTUNVICp3b24ndCogYWN0dWFsbHkgYm9vdCBiZWNhdXNlIGl0J3MgZW11bGF0ZWQsIG5vdCBleGVjdXRpbmcgcmVhbCBjb2RlLiBUaGlzIGlzIHdoZXJlIHdlIHdpbGwgc2VlIHRoZSByZWFsIGZhaWx1cmU7IHRoZSBkcml2ZXIgdGltZXMgb3V0LCBhbmQgdGhlIHByb2JlIHVsdGltYXRlbHkgZmFpbHMuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogd2hlcmUgZG9lcyB0aGUgdGltZW91dCBvY2N1cj9cblxuSSBuZWVkIHRvIGRpdmUgaW50byBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYCB0byBzZWUgZXhhY3RseSBob3cgdGhpcyB0aW1lb3V0IGlzIGhhbmRsZWQgYW5kIGlkZW50aWZ5IHRoZSBleGFjdCBtb21lbnQgdGhlIGRyaXZlciB3aWxsIGdpdmUgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5Mzg1LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjM5LjQ5MTI1OTgwMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjM4NCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIzODQ6XFx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjIzODU6XFx0e1xcbjIzODY6XFx0XFx0aW50IHJldDtcXG4yMzg3OlxcdFxcbjIzODg6XFx0XFx0LyogZm9yY2UgZmlybXdhcmUgb3BlcmF0aW9uIG1vZGUgaW50byBub3JtYWwgc3RhdGUsXFxuMjM4OTpcXHRcXHQgKiB3aGljaCBzaG91bGQgYmUgc2V0IGJlZm9yZSBmaXJtd2FyZSBkb3dubG9hZCBzdGFnZS5cXG4yMzkwOlxcdFxcdCAqL1xcbjIzOTE6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG4yMzkyOlxcdFxcbjIzOTM6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcXG4yMzk0OlxcdFxcdGlmIChyZXQpXFxuMjM5NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIzOTY6XFx0XFx0Lyogc2V0IGRyaXZlciBvd24gZm9yIGJhbmQxIHdoZW4gdHdvIGhpZiBleGlzdCAqL1xcbjIzOTc6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbjIzOTg6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG4yMzk5OlxcdFxcdFxcdGlmIChyZXQpXFxuMjQwMDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MDE6XFx0XFx0fVxcbjI0MDI6XFx0XFxuMjQwMzpcXHRcXHRyZXQgPSBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpO1xcbjI0MDQ6XFx0XFx0aWYgKHJldClcXG4yNDA1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQwNjpcXHRcXG4yNDA3OlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuMjQwODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCAwKTtcXG4yNDA5OlxcdFxcdGlmIChyZXQpXFxuMjQxMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MTE6XFx0XFxuMjQxMjpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCAwKTtcXG4yNDEzOlxcdFxcdGlmIChyZXQpXFxuMjQxNDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MTU6XFx0XFxuMjQxNjpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfZGVsX3d0YmxfYWxsKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjI0MTc6XFx0XFxuMjQxODpcXHRcXHRpZiAoKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbjI0MTk6XFx0XFx0ICAgICBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHx8XFxuMjQyMDpcXHRcXHQgICAgIW10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuMjQyMTpcXHRcXHRcXHRtdDc5MTVfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoQ0FQQUJJTElUWSksIDAsIDAsIDApO1xcbjI0MjI6XFx0XFxuMjQyMzpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9td2RzKGRldiwgMSk7XFxuMjQyNDpcXHRcXHRpZiAocmV0KVxcbjI0MjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDI2OlxcdFxcbjI0Mjc6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsKGRldiwgTVVSVV9TRVRfUExBVEZPUk1fVFlQRSxcXG4yNDI4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBNVVJVX1BMQVRGT1JNX1RZUEVfUEVSRl9MRVZFTF8yKTtcXG4yNDI5OlxcdFxcdGlmIChyZXQpXFxuMjQzMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MzE6XFx0XFxuMjQzMjpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShkZXYpO1xcbjI0MzM6XFx0XFx0aWYgKHJldClcXG4yNDM0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQzNTpcXHRcXG4yNDM2OlxcdFxcdHJldHVybiBtdDc5MTVfbWN1X3NldF9yZWQoZGV2LCBtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpO1xcbjI0Mzc6XFx0fVxcbjI0Mzg6XFx0XFxuMjQzOTpcXHRpbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMjQ0MDpcXHR7XFxuMjQ0MTpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyBtdDc5MTVfbWN1X29wcyA9IHtcXG4yNDQyOlxcdFxcdFxcdC5tYXhfcmV0cnkgPSAxLFxcbjI0NDM6XFx0XFx0XFx0LmhlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXFxuMjQ0NDpcXHRcXHRcXHQubWN1X3NrYl9wcmVwYXJlX21zZyA9IG10NzZfY29ubmFjMl9tY3VfZmlsbF9tZXNzYWdlLFxcbjI0NDU6XFx0XFx0XFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MTVfbWN1X3NlbmRfbWVzc2FnZSxcXG4yNDQ2OlxcdFxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MTVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbjI0NDc6XFx0XFx0fTtcXG4yNDQ4OlxcdFxcbjI0NDk6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lm1jdV9vcHMgPSBcXHUwMDI2bXQ3OTE1X21jdV9vcHM7XFxuMjQ1MDpcXHRcXG4yNDUxOlxcdFxcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG4yNDUyOlxcdH1cXG4yNDUzOlxcdFxcbjI0NTQ6XFx0dm9pZCBtdDc5MTVfbWN1X2V4aXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4yNDU1OlxcdHtcXG4yNDU2OlxcdFxcdG10NzZfY29ubmFjX21jdV9yZXN0YXJ0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjI0NTc6XFx0XFx0aWYgKG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIGZhbHNlKSkge1xcbjI0NTg6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmFpbGVkIHRvIGV4aXQgbWN1XFxcXG5cXFwiKTtcXG4yNDU5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjI0NjA6XFx0XFx0fVxcbjI0NjE6XFx0XFxuMjQ2MjpcXHRcXHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKDApLCBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTik7XFxuMjQ2MzpcXHRcXHRpZiAoZGV2LVxcdTAwM2VoaWYyKVxcbjI0NjQ6XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgxKSxcXG4yNDY1OlxcdFxcdFxcdFxcdE1UX1RPUF9MUENSX0hPU1RfRldfT1dOKTtcXG4yNDY2OlxcdG91dDpcXG4yNDY3OlxcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XFxuMjQ2ODpcXHR9XFxuMjQ2OTpcXHRcXG4yNDcwOlxcdHN0YXRpYyBpbnRcXG4yNDcxOlxcdG10NzkxNV9tY3Vfc2V0X3J4X2hkcl90cmFuc19ibGFja2xpc3Qoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgaW50IGJhbmQpXFxuMjQ3MjpcXHR7XFxuMjQ3MzpcXHRcXHRzdHJ1Y3Qge1xcbjI0NzQ6XFx0XFx0XFx0dTggb3BlcmF0aW9uO1xcbjI0NzU6XFx0XFx0XFx0dTggY291bnQ7XFxuMjQ3NjpcXHRcXHRcXHR1OCBfcnN2WzJdO1xcbjI0Nzc6XFx0XFx0XFx0dTggaW5kZXg7XFxuMjQ3ODpcXHRcXHRcXHR1OCBlbmFibGU7XFxuMjQ3OTpcXHRcXHRcXHRfX2xlMTYgZXR5cGU7XFxuMjQ4MDpcXHRcXHR9IHJlcSA9IHtcXG4yNDgxOlxcdFxcdFxcdC5vcGVyYXRpb24gPSAxLFxcbjI0ODI6XFx0XFx0XFx0LmNvdW50ID0gMSxcXG4yNDgzOlxcdFxcdFxcdC5lbmFibGUgPSAxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTozOS40OTE2NjA0NTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NDIzODE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBtdDc5MTVfZHJpdmVyX293bmAgRnVuY3Rpb24gQ2FsbCoqXG5cbk9rYXksIHNvIEkgc2VlIGBtdDc5MTVfZHJpdmVyX293bmAgYmVpbmcgY2FsbGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgbGV0J3MgZGlzc2VjdCB0aGlzLiBXaGF0J3MgdGhlIGNvbnRleHQsIGFuZCB3aGF0J3MgdGhlIGZ1bmN0aW9uJ3MgcmVzcG9uc2liaWxpdHk/XCIgR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBJJ20gYWxyZWFkeSBhc3N1bWluZyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIG93bmVyc2hpcCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3OTE1IGRyaXZlciDigJMgcHJvYmFibHkgcmVnYXJkaW5nIHJlc291cmNlIGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBwZXJoYXBzIGNsYWltaW5nIGhhcmR3YXJlIGFjY2Vzcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSAqd2hlbiogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGFuZCAqd2h5Kiwgc3BlY2lmaWNhbGx5LiBBcmUgd2UgdGFsa2luZyBhYm91dCBkZXZpY2UgcHJvYmUsIG1vZHVsZSBpbml0aWFsaXphdGlvbiwgb3IgcGVyaGFwcyBhIG1vcmUgZHluYW1pYyBwb3dlciBtYW5hZ2VtZW50IHNjZW5hcmlvPyBLbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMga2V5LiBMZXQncyBzZWUgaWYgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBhIHNpbXBsZSBhY2Nlc3Nvciwgb3IgaWYgaXQgcGVyZm9ybXMgbW9yZSBjb21wbGV4IGxvY2tpbmcgYW5kIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGFuZCB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgd2hhdCB0aGlzIFwib3duc1wiIOKAkyB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIERNQSBjaGFubmVscyDigJMgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24gY2FsbC4gSSBleHBlY3QgaXQgdG8gaW52b2x2ZSBzb21lIGxldmVsIG9mIHN5bmNocm9uaXphdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuIEknbSBnb2luZyB0byBsb29rIGZvciBtdXRleGVzLCBzZW1hcGhvcmVzLCBvciBvdGhlciBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB1c2VkIHdpdGhpbiB0aGUgZnVuY3Rpb24sIG9yIHRoYXQgaXQgYWNxdWlyZXMgb24gYmVoYWxmIG9mIHRoZSBkcml2ZXIuIE5vdywgbGV0J3MgY3JhY2sgb3BlbiB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1NzAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjQzLjc4NTkwMjc0M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0OTUzMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9kcml2ZXJfb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwMzE9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIwODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjA4NjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjA4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg0PWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjM5MzpcXHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzOTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzOTctXFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIzOTg6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzk5LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjQzLjkwMDg2MTlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNTg3ODI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIG10NzkxNV9kcml2ZXJfb3duKipcblxuQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIGNsZWFybHkgb24gdGhlIGBtdDc5MTVfZHJpdmVyX293bmAgYXNwZWN0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHNwZWNpZmljYWxseSBtZWFucyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS4gQW0gSSBsb29raW5nIGF0IG93bmVyc2hpcCBvZiBhIHBhcnRpY3VsYXIgcmVzb3VyY2Ugd2l0aGluIHRoZSBkcml2ZXI/IElzIGl0IHJlbGF0ZWQgdG8gbG9ja2luZywgcmVzb3VyY2UgYWxsb2NhdGlvbiwgb3IgbW9kdWxlIGxvYWRpbmc/IEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiwgYW5kIGlmIGl0IGlzIGFuIGlzc3VlIHdpdGggbXV0ZXhlcywgb3Igc29tZXRoaW5nIGVsc2UuIEknbSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBwYXR0ZXJucyBmb3IgdGhpcyB3aXRoaW4gdGhlIGtlcm5lbCBkcml2ZXIgZWNvc3lzdGVtOyB0aGluayBhYm91dCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHByb3BlciBvd25lcnNoaXAgbWFuYWdlbWVudCBpcyAqY3JpdGljYWwqIGluIGEgbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnQgbGlrZSB0aGlzLiBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgYWNjZXNzIGNvbnRyb2wgYW5kIHBvdGVudGlhbCBkZWFkbG9jayBzY2VuYXJpb3MgaWYgYSByZXNvdXJjZSBpc24ndCBoYW5kbGVkIGNvcnJlY3RseS4gSSBhbHNvIGltbWVkaWF0ZWx5IHdvbmRlciB3aGF0IHRoZSBwdXJwb3NlIG9mIHRha2luZyBvd25lcnNoaXAgaXM6IElzIHRoaXMgcmVsYXRlZCB0byBpbml0aWFsaXppbmcgYSBkZXZpY2UsIG1hbmFnaW5nIHBvd2VyLCBvciBoYW5kbGluZyBpbnRlcnJ1cHRzPyBUaGUgY29udGV4dCB3aWxsIGJlIGltcG9ydGFudCwgYW5kIHNvIHRoZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgdG8gbG9vayBmb3IgdGhlIGFzc29jaWF0ZWQgY29kZSB0byBkZXRlcm1pbmUgdGhlIGZ1bGwgY29udGV4dCwgYW5kIGdvIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDQ1LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6NDcuODE2NzQyMTk5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDg2LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDg2OlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4yMDg3OlxcdHtcXG4yMDg4OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuMjA4OTpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbjIwOTA6XFx0XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG4yMDkxOlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbjIwOTI6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjA5MzpcXHRcXHR9XFxuMjA5NDpcXHRcXG4yMDk1OlxcdFxcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cXG4yMDk2OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXFxuMjA5NzpcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XFxuMjA5ODpcXHRcXG4yMDk5OlxcdFxcdHJldHVybiAwO1xcbjIxMDA6XFx0fVxcbjIxMDE6XFx0XFxuMjEwMjpcXHRzdGF0aWMgaW50XFxuMjEwMzpcXHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4yMTA0OlxcdHtcXG4yMTA1OlxcdFxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuMjEwNjpcXHRcXHRcXHRcXHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuMjEwNzpcXHRcXG4yMTA4OlxcdFxcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTUlTQywgTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuMjEwOTpcXHRcXHRcXHRcXHQgICAgc3RhdGUsIDEwMDApKSB7XFxuMjExMDpcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJUaW1lb3V0IGZvciBpbml0aWFsaXppbmcgZmlybXdhcmVcXFxcblxcXCIpO1xcbjIxMTE6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjExMjpcXHRcXHR9XFxuMjExMzpcXHRcXHRyZXR1cm4gMDtcXG4yMTE0OlxcdH1cXG4yMTE1OlxcdFxcbjIxMTY6XFx0c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjIxMTc6XFx0e1xcbjIxMTg6XFx0XFx0aW50IHJldDtcXG4yMTE5OlxcdFxcbjIxMjA6XFx0XFx0LyogUmVsZWFzZSBTZW1hcGhvcmUgaWYgdGFrZW4gYnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQgKi9cXG4yMTIxOlxcdFxcdHJldCA9IG10NzZfY29ubmFjX21jdV9wYXRjaF9zZW1fY3RybChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmYWxzZSk7XFxuMjEyMjpcXHRcXHRpZiAocmV0ICE9IFBBVENIX1JFTF9TRU1fU1VDQ0VTUykge1xcbjIxMjM6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiQ291bGQgbm90IHJlbGVhc2Ugc2VtYXBob3JlXFxcXG5cXFwiKTtcXG4yMTI0OlxcdFxcdFxcdC8qIENvbnRpbnVlIGFueXdheXMgKi9cXG4yMTI1OlxcdFxcdH1cXG4yMTI2OlxcdFxcbjIxMjc6XFx0XFx0LyogQWx3YXlzIHJlc3RhcnQgTUNVIGZpcm13YXJlICovXFxuMjEyODpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yMTI5OlxcdFxcbjIxMzA6XFx0XFx0LyogQ2hlY2sgaWYgTUNVIGlzIHJlYWR5ICovXFxuMjEzMTpcXHRcXHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSk7XFxuMjEzMjpcXHRcXHRpZiAocmV0KSB7XFxuMjEzMzpcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJGaXJtd2FyZSBkaWQgbm90IGVudGVyIGRvd25sb2FkIHN0YXRlXFxcXG5cXFwiKTtcXG4yMTM0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjEzNTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjQ3LjgxNjkzMzEzOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODA1NjA2MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBTeXprYWxsZXIgRnV6emluZyBQYXRoIGZvciBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IFN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gVGhlIGluaXRpYWwgcHJvYmxlbSBpcyB0aGUgYG10NzkxNV9kcml2ZXJfb3duYCBjaGVjay4gVGhpcyBkcml2ZXIgcG9sbHMgYSByZWdpc3RlciwgYW5kIGlmIHRoZSByZWdpc3RlciByZWFkIGRvZXNuJ3QgcmV0dXJuIHRoZSBleHBlY3RlZCB2YWx1ZSB3aXRoaW4gYSB0aW1lb3V0LCBpdCBlcnJvcnMgb3V0IHdpdGggYC1FSU9gLiBTeXprYWxsZXIncyB2aXJ0dWFsIFBDSSBkZXZpY2UgY291bGQgZWFzaWx5IGZhaWwgdGhpcyBwcm9iZSwgd2hpY2ggd291bGQgYmxvY2sgdXMgcmlnaHQgYXdheS4gQnV0LCB0aGVyZSdzIGEgd29ya2Fyb3VuZCEgU3l6a2FsbGVyIGhhcyB0aGUgbWVhbnMgdG8gY2lyY3VtdmVudCB0aGlzLlxuXG5NeSB0aGlua2luZyBnb2VzIHRvIFN5emthbGxlcidzIGFiaWxpdHkgdG8gbW9jayBQQ0kgTU1JTyByZWFkcy4gQWhhLCB0aGUgYHN5el9wY2lfLi4uYCBtZWNoYW5pc20hIEl0IGNhbiBpbnRlcmNlcHQgdGhvc2UgTU1JTyByZWFkcyBhbmQgcHJvdmlkZSBhcmJpdHJhcnkgcmVzcG9uc2VzLCBhbGxvd2luZyBpdCB0byByZXR1cm4gdGhlIGV4YWN0IGV4cGVjdGVkIHZhbHVlIGZvciB0aGUgYG10NzZfcG9sbF9tc2VjYCBmdW5jdGlvbi4gVGhpcyBtZWFucyB0aGUgcHJvYmUgY2FuIHN1Y2NlZWQsIGV2ZW4gd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZSB0aGF0IHdvdWxkbid0IG5vcm1hbGx5IHJlc3BvbmQgY29ycmVjdGx5LiBUaGlzIGlzIHByb21pc2luZyFcblxuU28sIGFzc3VtaW5nIFN5emthbGxlciBjYW4gbW9jayB0aGUgTU1JTyByZWFkcywgdGhlIGRyaXZlciBjYW4gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGhvdyB0byBnZXQgdG8gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBUaGUgcm91dGUgaXMgdGhyb3VnaCBgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYCwgd2hpY2ggaXMgYWxzbyByZXF1aXJlZCBieSBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBlbmFibGUgdGhpcyBjb25maWcuIEknbGwgbmVlZCB0byBlbmFibGUgYE1UNzkxNUVgIGFuZCBgTkVUX01FRElBVEVLX1NPQ19XRURgLlxuXG5Ib2xkIG9uLCBJIHNlZSB0aGF0IGBORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RgLCB3aGljaCBpc24ndCBhIHByb2JsZW0uIFRoaXMgbWVhbnMsIEknbGwgbmVlZCB0byBhZGQgYE5FVF9NRURJQVRFS19TT0NfV0VEYCBhbmQgYE1UNzkxNUVgIHRvIGBFbmFibGVDb25maWdzYCB0byB0aGUgY29uZmlnIHRoYXQgSSdtIHdvcmtpbmcgb24gdG8gcmVhY2ggdGhpcyBwYXRoLlxuXG5XYWl0LCBgTVQ3OTE1RWAgaXMgYSB0cmlzdGF0ZSwgc28gc3BlY2lmeWluZyBpdCBzaG91bGQgYmUgZW5vdWdoLiBPbmUgbGVzcyB0aGluZyB0byB3b3JyeSBhYm91dC4gSSBzaG91bGQgY2hlY2sgYWdhaW4gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWcgZGVwZW5kZW5jaWVzIHRoYXQgbWF5IGFmZmVjdCB0aGlzLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AgZmlsZSB0byBiZSBzdXJlLiBBbHNvLCBvbmUgbW9yZSB0aG91Z2h0IC0gaXMgYE5FVF9NRURJQVRFS19TT0NfV0VEYCBhIGJvb2xlYW4gb3IgYSB0cmlzdGF0ZT8gSSBuZWVkIHRvIGtub3cgdGhpcyB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjU4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6NTUuNjIyNTQzMzI4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjgzMzI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTg9aWYgTkVUX1ZFTkRPUl9NRURJQVRFS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTEtXFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTo1NS43MTUzODQ0NjZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1NzA0MzQzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKlVuZGVyc3RhbmRpbmcgdGhlIEJvb2xlYW4gTmF0dXJlIG9mIHRoZSBQcm9ibGVtKipcblxuUmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2l0dWF0aW9uIGhpbmdlcyBvbiBhIEJvb2xlYW4gdmFsdWUuIEl0J3MgYSBiaW5hcnkgY2hvaWNlLCBhIHRydWUvZmFsc2UsIHllcy9ubyBwcm9wb3NpdGlvbi4gVGhpcyBpc24ndCBhIGNvbnRpbnVvdXMgdmFyaWFibGUsIG9yIHNvbWV0aGluZyB3aXRoIG51YW5jZWQgZ3JhZGllbnRzOyBpdCdzIGEgZnVuZGFtZW50YWwgb24tb3Itb2ZmIHN0YXRlLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoaXMgYXJlIGltbWVkaWF0ZS4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IGxvZ2ljYWwgb3BlcmF0b3JzLCBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBhbmQgaG93IHRoaXMgXCJib29sXCIgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRydWUgYW5kIGZhbHNlIGluIHRoaXMgY29udGV4dCwgYW5kIHdoYXQgdGhlIGZsb3cgb2YgdGhlIGFsZ29yaXRobSB3aWxsIGJlIGRlcGVuZGluZyBvbiB0aGUgZmluYWwgdmFsdWUgb2YgdGhpcyBib29sLiBJIHdpbGwgc3RhcnQgYnkgbWFwcGluZyBvdXQgdGhpcyBkZXBlbmRlbmN5LiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgd2hhdCBhY3Rpb25zIHdpbGwgaGFwcGVuPyBBbmQgaWYgaXQncyBmYWxzZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ4MTcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEyOjAyLjQ3MjQzMTQxNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxMDpcXHRjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG4gIDEyOlxcdFxcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0EgfHwgIU5FVF9EU0FcXG4gIDE3OlxcdFxcdHNlbGVjdCBQSU5DVFJMXFxuICAxODpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTk6XFx0XFx0c2VsZWN0IERJTUxJQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjowMi40NzI1NDc4MTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5NTkwNjA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gRW5hYmxpbmcgTWVkaWF0ZWsgU09DIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX01FRElBVEVLX1NPQ19XRURgLiBUaGUgZGVmaW5pdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IGl0J3MgYSBib29sIHRoYXQncyBlbmFibGVkIHdoZW4gYE5FVF9NRURJQVRFS19TT0NgIGlzICpub3QqIFwiblwiLiBTbywgdGhlIG9idmlvdXMgbW92ZSBzZWVtcyB0byBiZSBlbmFibGluZyBgTkVUX01FRElBVEVLX1NPQ2AgdG8gZ2V0IGBORVRfTUVESUFURUtfU09DX1dFRGAuIEJ1dCBoYW5nIG9u4oCmIHJlYWRpbmcgZnVydGhlciwgYE5FVF9NRURJQVRFS19TT0NfV0VEYCAqY2FuKiBiZSBlbmFibGVkIGlmIGBORVRfTUVESUFURUtfU09DYCBpcyBlbmFibGVkLiBUaGF0J3MgZ29vZC5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQgYE5FVF9NRURJQVRFS19TT0NgIGRlcGVuZHMgb24uIEhtbSwgaXQgZGVwZW5kcyBvbiBlaXRoZXIgYE5FVF9EU0FgIG9yIHRoZSBsb2dpY2FsIGludmVyc2UsIGAhTkVUX0RTQWAuIEludGVyZXN0aW5nLCB0aGF0J3Mgbm90IHJlc3RyaWN0aXZlLiBTbywgSSBjYW4ganVzdCBzcGVjaWZ5IGBORVRfTUVESUFURUtfU09DYC4gQW5kIHdoaWxlIEkgYW0gYXQgaXQsIGBNVDc5MTVFYC4gTGV0J3MgYXNzdW1lIHRoYXQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBgTkVUX01FRElBVEVLX1NPQ19XRURgLlxuXG5Ob3csIGJlZm9yZSBJIGNvbW1pdCwgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkxNUVgLiBSaWdodCwgdGhlIHVzdWFsIGN1bHByaXRzOiBgTUFDODAyMTFgIGFuZCBgUENJYC4gTWFrZXMgc2Vuc2UuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgYXJlIGFscmVhZHkgY29uZmlndXJlZCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxODAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjowNi45Njg0NjkzMTNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MTVFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA4OlxcdFxcdHNlbGVjdCBSRUxBWVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTE1LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcXG4gIDExOlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IGR1YWwtYmFuZCBvcGVyYXRpb24gYXQgYm90aCA1R0h6XFxuICAxMjpcXHRcXHQgIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFheCA0eDQ6NFNTIDEwMjQtUUFNLCAxNjBNSHogY2hhbm5lbHMsXFxuICAxMzpcXHRcXHQgIE9GRE1BLCBzcGF0aWFsIHJldXNlIGFuZCBkdWFsIGNhcnJpZXIgbW9kdWxhdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTVQ3OThYX1dNQUNcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIk1UNzk4eCAoU29DKSBXTUFDIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIE1UNzkxNUVcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTI6MDYuOTY4NjI0MDgzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MzY2NTE5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBNVDc5MTVFYCBEcml2ZXIgYW5kIFBvdGVudGlhbCBIb3QtUGF0aCBDYW5kaWRhdGVzKipcblxuT2theSwgc28gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uIGZvciBgTVQ3OTE1RWAgc2VlbXMgc3VmZmljaWVudCBmb3IgdGhlIGJhc2UgZnVuY3Rpb25hbGl0eS4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgc2hvdWxkIEkgYWxzbyBpbmNsdWRlIGBORVRfTUVESUFURUtfU09DYD8gWWVzLCBJIHRoaW5rIEknbGwgZ28gYWhlYWQgYW5kIGluY2x1ZGUgYm90aCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuTm93LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiAgTGV0J3MgdGFrZSBhIGxvb2sgYXQgYEZvY3VzU3ltYm9sc2AsIGFzIHRob3NlIGZ1bmN0aW9ucyBhcmUga2V5LiBUaGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSBob3QtcGF0aCBmdW5jdGlvbnMuXG5cbkFscmlnaHQsIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyB1c2VkIGR1cmluZyB0aGUgc2V0dXAgb2YgYSBmb3J3YXJkIHBhdGguIFRoaXMgaW1wbGllcyBpdCdzIG1vcmUgb2YgYSBjb250cm9sLXBhdGggb3BlcmF0aW9uLCBsaWtlIHdoZW4gYSBuZXcgcnVsZSBpcyBhZGRlZCBmb3IgZmxvdyBvZmZsb2FkLiBBbmQgYG10NzZfd2VkX2luaXRfcnhfYnVmYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gV0VEIG9mZmxvYWQgaXMgYmVpbmcgc2V0IHVwLiBUaGVzZSBhcmVuJ3QgcGVyLXBhY2tldCBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgaW5jbHVzaW9uIGluIGBGb2N1c1N5bWJvbHNgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgdHJhY2UgdGhlIHJlYWNoYWJpbGl0eSBvZiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAuIEkgc2VlIGl0J3MgYXNzaWduZWQgdG8gYC5uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIHdpdGhpbiBgbXQ3OTE1X29wc2AuICBPa2F5LCBub3csIGxldCBtZSBjaGVjayB3aGVyZSBgbXQ3OTE1X29wc2AgaXMgdXNlZC4gQWhhLCBpbiBgbXQ3OTE1X2luaXRfd2lwaHlgOlxuYGBgY1xuXHRody1cdTAwM2V3aXBoeS1cdTAwM2VvcHMgPSBcdTAwMjZtdDc5MTVfb3BzO1xuYGBgXG5Pa2F5LCBzbyBpdCBpcyByZWFjaGFibGUuIE9oIHdhaXQsIGlzIGBuZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGEgbWVtYmVyIG9mIGBpZWVlODAyMTFfb3BzYD8gTm8sIGl0J3MgdHlwaWNhbGx5IGEgbWVtYmVyIG9mIGBuZXRfZGV2aWNlX29wc2AsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSB3aWxsIGxvb2sgaW4gdGhlIGRlZmluaXRpb24gb2YgYGllZWU4MDIxMV9vcHNgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDQyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTI6MTMuNzA1Mjc5OTc0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTU5ODAzMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L21hYzgwMjExLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00MDU2PXN0cnVjdCBpZWVlODAyMTFfcHJlcF90eF9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDY5MC0gKlxcdGRpc2FibGUgYmFja2dyb3VuZCBDQUMvcmFkYXIgZGV0ZWN0aW9uLlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDY5MTogKiBAbmV0X2ZpbGxfZm9yd2FyZF9wYXRoOiBDYWxsZWQgZnJvbSAubmRvX2ZpbGxfZm9yd2FyZF9wYXRoIGluIG9yZGVyIHRvXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NjkyLSAqXFx0cmVzb2x2ZSBhIHBhdGggZm9yIGhhcmR3YXJlIGZsb3cgb2ZmbG9hZGluZ1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzMwPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTA5Ni1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjUwOTc6XFx0aW50ICgqbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTUwOTgtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjoxNC4xMjEyNjc4MDVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3NDY5MTM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBGb3J3YXJkIFBhdGgqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmb3J3YXJkaW5nIHBhdGggaXMgYmVpbmcgc2V0IHVwLiBSaWdodCwgaXQncyBkZWZpbml0ZWx5IGluIGBpZWVlODAyMTFfb3BzYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgYW5kIGBtYWM4MDIxMWAgZXhwb3NlcyBpdCB0aHJvdWdoIGAubmRvX2ZpbGxfZm9yd2FyZF9wYXRoYCBpbiBgbmV0X2RldmljZV9vcHNgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGUgbmV0d29yayBzdGFjaywgbGlrZSB3aXRoIG5ldGZpbHRlciBmbG93IG9mZmxvYWQsIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIGl0IHRoaXMgd2F5LlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24uIEkgc2hvdWxkIGNoZWNrIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIEFoLCBnb3QgaXQuIEl0IGxvb2tzIGxpa2UgYG10NzkxNV9tbWlvX3dlZF9pbml0YCBhbmQgYG10Nzk5Nl9tbWlvX3dlZF9pbml0YCBhcmUgY2FsbGluZyBpdC4gQnV0IGhvbGQgb24gYSBzZWNvbmQuIEkgc2VlIHRoYXQgYG10NzZfd2VkX2luaXRfcnhfYnVmYCBpcyBiZWluZyBhc3NpZ25lZCB0byBgd2VkLVx1MDAzZXdsYW4uaW5pdF9yeF9idWZgIHdoaWNoIGlzIGFuIGltcG9ydGFudCBjbHVlLCB0aGlzIGAuaW5pdF9yeF9idWZgIGZpZWxkLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hvKiBpcyBjYWxsaW5nIGBpbml0X3J4X2J1ZmAgYW5kIGhvdyB0aGF0IGNhbGwgaXMgYmVpbmcgbWFkZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI1NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjoxOC41OTU5NjE4OTJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzU3NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbml0X3J4X2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jPTgzNT1tdGtfd2VkX3J4X2J1ZmZlcl9hbGxvYyhzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuYy04NDgtXFx0ZGV2LVxcdTAwM2VyeF9idWZfcmluZy5kZXNjX3BoeXMgPSBkZXNjX3BoeXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jOjg0OTpcXHRkZXYtXFx1MDAzZXdsYW4uaW5pdF9yeF9idWYoZGV2LCBkZXYtXFx1MDAzZXdsYW4ucnhfbnBrdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jLTg1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTI6MTguNzEzNTQyOTNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYzOTA1MTU3NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTWVkaWFUZWsgV2ktRmkgYW5kIFdFRCBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBpbiBib3RoIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMsIGFuZCB0aGV5J3JlIGluIHRoZSBkcml2ZXIncyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRhcmdldC5cblxuTm93LCB0byBnZXQgdGhpcyBydW5uaW5nIGluIHN5emthbGxlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXRrX3dlZC5jYC4gVGhpcyB0ZWxscyBtZSB0aGF0IGBORVRfTUVESUFURUtfU09DYCBpcyAqZXNzZW50aWFsKi4gIFRoZW9yZXRpY2FsbHksIGlmIHRoZSBFdGhlcm5ldCBhbmQgV2ktRmkgZHJpdmVycyBhcmUgYm90aCBsb2FkZWQgYW5kIGJpbmQgdmlhIFdFRCwgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCAqY291bGQqIGJlIHRyaWdnZXJlZC4gVGhlIHByb2JsZW0gaXMgc3l6a2FsbGVyIGRvZXNuJ3QgbmF0aXZlbHkgaGF2ZSBhIHZpcnR1YWwgTWVkaWFUZWsgRXRoZXJuZXQgZGV2aWNlLiBCdXQsIEkgKmNhbiogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMgdXNpbmcgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBmb3IgdGhlIE1lZGlhVGVrIEV0aGVybmV0IGFuZCBgc3l6X3BjaV8uLi5gIGZvciB0aGUgV2ktRmkuIElmIEkgZ2V0IGJvdGggZGV2aWNlcyBwcm9iZWQsIHRoZXkgKm1pZ2h0KiBjb25uZWN0LiBFdmVuIGlmIGl0J3MgaGFyZCB0byB0cmlnZ2VyLCBpdCdzIGNvZGUgdGhhdCAqY2FuKiBiZSBoaXQuIFNvLCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAuXG5cbkxldCdzIG5haWwgZG93biB3aGF0IGVsc2UgaXMgbmVlZGVkLiBJIG5lZWQgdG8gZm9jdXMgb246IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBhbmQgYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gIEkgc2VlIHRoYXQgYG10NzZfd2VkX2luaXRfcnhfYnVmYCBpcyBleHBvcnRlZCAodGhhbmtzIHRvIGBFWFBPUlRfU1lNQk9MX0dQTGApLiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgaXMgc3RhdGljLCB3aGljaCBpcyBzb21ldGhpbmcgdG8gYmUgYXdhcmUgb2YuXG5cbk5vdywgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBgTVQ3OTE1RWAgaXMgdGhlIGtleSBjb25maWcgZm9yIHRoZSBXaS1GaS4gSSBkbyBub3RlIHRoYXQgYE1UNzZfQ09SRWAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkxNUVgLCBhbmQgYE1BQzgwMjExYCBpcyBhIGRlcGVuZGVuY3kgd2hpY2ggc3l6a2FsbGVyIHR5cGljYWxseSBoYW5kbGVzLiAgVGhlIGBORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlnLi4uIGl0J3MgYSBgZGVmX2Jvb2xgIHRpZWQgdG8gYE5FVF9NRURJQVRFS19TT0NgLiBTbywgaWYgSSBlbmFibGUgYE5FVF9NRURJQVRFS19TT0NgLCBJJ20gZ29vZC4gIEhvd2V2ZXIsIGlmIGBORVRfTUVESUFURUtfU09DYCAqaXNuJ3QqIGVuYWJsZWQsIHRoZW4gdGhlIGNvZGUgSSdtIGludGVyZXN0ZWQgaW4sIHBhcnRpY3VsYXJseSB0aGUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLCBpcyBjb21waWxlZCBvdXQuXG5cbk9rYXksIGxldCdzIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ2AgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFS2Agb3IgYENPTVBJTEVfVEVTVGAuICBTeXprYWxsZXIgdXN1YWxseSBydW5zIHdpdGggYENPTVBJTEVfVEVTVGAgb3IsIEkgY2FuIGp1c3Qgc3BlY2lmeSBgTkVUX01FRElBVEVLX1NPQ2AuIEdvb2QuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgdGhlIGNvZGUgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucy4gIEJvdGggYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGFyZSBpbmRlZWQgd2l0aGluIGAjaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYCBibG9ja3MsIGZ1cnRoZXIgc29saWRpZnlpbmcgdGhlIGBORVRfTUVESUFURUtfU09DYCByZXF1aXJlbWVudC5cblxuSSdtIGNoZWNraW5nIGlmIGBNVDc5MTVFYCBpcyAqdGhlKiBkcml2ZXIsIG9yIGlmIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgaXMgdXNlZCBlbHNld2hlcmUuIGBtdDc5OTZfbW1pb193ZWRfaW5pdGAgYWxzbyB1c2VzIGl0LiBIb3dldmVyLCBzaW5jZSB0aGUgcGF0Y2ggKnNwZWNpZmljYWxseSogbW9kaWZpZXMgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLCB0aGUgdGFyZ2V0IGlzIGBtdDc5MTVgLiBTbywgYE1UNzkxNUVgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZyB0byBlbmFibGUuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIHBhdGNoIGFnYWluLiBUaGUgY2hhbmdlcyB0byBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYXJlIGNsZWFybHkgYWJvdXQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBgYmFuZF9pZHhgLiBTaW1pbGFybHksIHRoZSBjaGFuZ2VzIHRvIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgYWxzbyBjaGFuZ2UgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpbiBzb21lIGNhc2VzLiAgVGhpcyBtYWtlcyB0aGUgbmVlZCB0byBlbmFibGUgYm90aCB0aGUgV0VEIGFuZCBNVDc5MTUgcGFydHMgbWFrZSBzZW5zZS5cblxuSSdtIHNhdGlzZmllZC4gIEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4NzQsIk91dHB1dFRva2VucyI6MTQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjozNS4xMDQwNjA2NzFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA0ODQ4MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkxNUVcIixcbiAgICBcIk5FVF9NRURJQVRFS19TT0NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gICAgXCJtdDc2X3dlZF9pbml0X3J4X2J1ZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBpbiB0aGUgTWVkaWFUZWsgTVQ3OTE1IFdpLUZpIGRyaXZlciBhbmQgdGhlIFdFRCAoV2lyZWxlc3MgRXRoZXJuZXQgRGlzcGF0Y2hlcikgb2ZmbG9hZCBjb2RlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBkcml2ZXIncyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTE1RVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm10NzZfd2VkX2luaXRfcnhfYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlcidzIGNvbnRyb2wgcGF0aCBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGlmIHRoZSBkcml2ZXIgaXMgcHJvYmVkIGFuZCBXRUQgb2ZmbG9hZCBpcyB1dGlsaXplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5c5sj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 21:49:43 +0000 UTC FinishedAt: 2026-07-15 22:12:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7915E", "NET_MEDIATEK_SOC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7915E", "NET_MEDIATEK_SOC" ], "series_id": "58b19bc2-d550-450a-a7d1-4eb620a5b266" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7915_net_fill_forward_path", "mt76_wed_init_rx_buf" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MjRiNmVkOWQxMWU5OWY5ZjUwYzhiN2Q5ZjIzYzIwYWIyODAxY2E5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjI6MTA6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jXG5pbmRleCA1MTY0M2E0OGVkMTUxNS4uMDQ0YjU5MmVmZTI4NDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY1xuQEAgLTE3NDMsNyAmIzQzOzE3NDMsNyBAQCBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cGF0aC1cdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cdTAwM2V3ZG1hX2lkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEuYnNzID0gbXZpZi1cdTAwM2VtdDc2LmlkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEud2NpZCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPyBtc3RhLVx1MDAzZXdjaWQuaWR4IDogMHgzZmY7XG4tXHRwYXRoLVx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5ICE9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4mIzQzO1x0cGF0aC1cdTAwM2VtdGtfd2RtYS5xdWV1ZSA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWJhbmRfaWR4O1xuIFxuIFx0Y3R4LVx1MDAzZWRldiA9IE5VTEw7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcbmluZGV4IGVkNjU3ZDk1MmRlMjQ0Li5mMjEwYTBjNTdkODExOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcbkBAIC0zMywxMCAmIzQzOzMzLDE1IEBAIHUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXG4ge1xuIFx0c3RydWN0IG10a193ZWRfYm1fZGVzYyAqZGVzYyA9IHdlZC1cdTAwM2VyeF9idWZfcmluZy5kZXNjO1xuIFx0c3RydWN0IG10NzZfZGV2ICpkZXYgPSBtdDc2X3dlZF90b19kZXYod2VkKTtcbi1cdHN0cnVjdCBtdDc2X3F1ZXVlICpxID0gXHUwMDI2ZGV2LVx1MDAzZXFfcnhbTVRfUlhRX01BSU5dO1xuIFx0c3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCA9IE5VTEw7XG4mIzQzO1x0c3RydWN0IG10NzZfcXVldWUgKnE7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHRpZiAod2VkLVx1MDAzZXZlcnNpb24gPT0gMiBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXBoeS5iYW5kX2lkeClcbiYjNDM7XHRcdHEgPSBcdTAwMjZkZXYtXHUwMDNlcV9yeFtNVF9SWFFfQkFORDFdO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHEgPSBcdTAwMjZkZXYtXHUwMDNlcV9yeFtNVF9SWFFfTUFJTl07XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2l6ZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZG1hX2FkZHJfdCBhZGRyO1xuIFx0XHR1MzIgb2Zmc2V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkyNGI2ZWQ5ZDExZTk5ZjlmNTBjOGI3ZDlmMjNjMjBhYjI4MDFjYTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAyMjoxMDoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYwppbmRleCA1MTY0M2E0OGVkMTUxNS4uMDQ0YjU5MmVmZTI4NDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMKQEAgLTE3NDMsNyAmIzQzOzE3NDMsNyBAQCBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXBhdGgtJmd0O210a193ZG1hLndkbWFfaWR4ID0gd2VkLSZndDt3ZG1hX2lkeDsKIAlwYXRoLSZndDttdGtfd2RtYS5ic3MgPSBtdmlmLSZndDttdDc2LmlkeDsKIAlwYXRoLSZndDttdGtfd2RtYS53Y2lkID0gaXNfbXQ3OTE1KCZhbXA7ZGV2LSZndDttdDc2KSA/IG1zdGEtJmd0O3djaWQuaWR4IDogMHgzZmY7Ci0JcGF0aC0mZ3Q7bXRrX3dkbWEucXVldWUgPSBwaHkgIT0gJmFtcDtkZXYtJmd0O3BoeTsKJiM0MzsJcGF0aC0mZ3Q7bXRrX3dkbWEucXVldWUgPSBwaHktJmd0O210NzYtJmd0O2JhbmRfaWR4OwogCiAJY3R4LSZndDtkZXYgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYwppbmRleCBlZDY1N2Q5NTJkZTI0NC4uZjIxMGEwYzU3ZDgxMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYwpAQCAtMzMsMTAgJiM0MzszMywxNSBAQCB1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKQogewogCXN0cnVjdCBtdGtfd2VkX2JtX2Rlc2MgKmRlc2MgPSB3ZWQtJmd0O3J4X2J1Zl9yaW5nLmRlc2M7CiAJc3RydWN0IG10NzZfZGV2ICpkZXYgPSBtdDc2X3dlZF90b19kZXYod2VkKTsKLQlzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSA9ICZhbXA7ZGV2LSZndDtxX3J4W01UX1JYUV9NQUlOXTsKIAlzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0ID0gTlVMTDsKJiM0MzsJc3RydWN0IG10NzZfcXVldWUgKnE7CiAJaW50IGk7CiAKJiM0MzsJaWYgKHdlZC0mZ3Q7dmVyc2lvbiA9PSAyICZhbXA7JmFtcDsgZGV2LSZndDtwaHkuYmFuZF9pZHgpCiYjNDM7CQlxID0gJmFtcDtkZXYtJmd0O3FfcnhbTVRfUlhRX0JBTkQxXTsKJiM0MzsJZWxzZQomIzQzOwkJcSA9ICZhbXA7ZGV2LSZndDtxX3J4W01UX1JYUV9NQUlOXTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgc2l6ZTsgaSYjNDM7JiM0MzspIHsKIAkJZG1hX2FkZHJfdCBhZGRyOwogCQl1MzIgb2Zmc2V0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lZGlhVGVrIE1UNzYgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNgLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIHNwZWNpZmljYWxseSwgdGhlIGBxdWV1ZWAgYXNzaWdubWVudCB3aXRoaW4gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCB0aGUgcXVldWUgc2VsZWN0aW9uIGluIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIFRoaXMgaXMgYSBNZWRpYVRlayBNVDc2IHdpcmVsZXNzIGRyaXZlciwgc28gbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHZhbGlkYXRlIHRoaXMgY2hhbmdlLgoKRmlyc3QsIEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdGVzdCBlbnZpcm9ubWVudC4gQ2FuIHRoaXMgYmUgZWFzaWx5IHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSB1c3VhbGx5IGFtZW5hYmxlIHRvIHRlc3Rpbmcgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCB0aGUgTVQ3Ni4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIGV2ZW4gZnV6eiB0aGlzIGRyaXZlcj8gSGFyZHdhcmUtc3BlY2lmaWMgc3R1ZmYgaXMgdHJpY2t5IHVubGVzcyBpdCYjMzk7cyBVU0ItYmFzZWQgb3Igd2UmIzM5O3ZlIGdvdCBzb21lIHNlcmlvdXMgZW11bGF0aW9uIGluIHBsYXkuIEl0JiMzOTtzIG9mdGVuIGRpZmZpY3VsdCB0byBnZXQgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSBvbiB0aGlzIGtpbmQgb2YgY2hhbmdlLgoKU28gSSBuZWVkIHRvIGNvbmZpcm0gaG93IHRoZSBNVDc2IGlzIGNvbm5lY3RlZC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jYCBzZWVtcyBzcGVjaWZpYyB0byB0aGUgTVQ3OTE1LiBSaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIFVTQiBvciBQQ0llLiBJIG5lZWQgdG8gZ3JlcCBmb3IgTVQ3OTE1IHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1Njg5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NDc9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0ODpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQ5LXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00ND1vYmotJChDT05GSUdfTVQ3NjE1X0NPTU1PTikgJiM0Mzs9IG10NzYxNS9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01UNzkxNUUpICYjNDM7PSBtdDc5MTUvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19NVDc5MjFfQ09NTU9OKSAmIzQzOz0gbXQ3OTIxL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTY9c3RhdGljIGlubGluZSBib29sIGlzX210NzY2MyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIyMTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTIyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ3Olx0XHQvKiBtdDc5MTUgV0Egb25seSBjb3VudHMgV0VEIHBhdGggKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ4Olx0XHRpZiAoaXNfbXQ3OTE1KGRldikgXHUwMDI2XHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy01NDktXHRcdFx0d2NpZC1cdTAwM2VzdGF0cy50eF9wYWNrZXRzJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTEwMzk9aW50IG10NzZfY29ubmFjMl9tYWNfZmlsbF9yeF9yYXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtMTA1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6MTA1NTpcdGlmICghaXNfbXQ3OTE1KGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtMTA1Ni1cdFx0c3RiYyA9IEZJRUxEX0dFVChNVF9QUlhWX0hUX1NUQkMsIHYwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oPTMwOT1zdHJ1Y3Qgc3RhX3JlY192aHQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMzE0LVx0X19sZTE2IHZodF90eF9tY3NfbWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDozMTU6XHQvKiBtdDc5MTUgLSBtdDc5MjEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgtMzE2LVx0dTggcnRzX2J3X3NpZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTE1RSkgJiM0Mzs9IG10NzkxNWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjU6bXQ3OTE1ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBlZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTYtXHQgICAgIGRlYnVnZnMubyBtbWlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo4Om10NzkxNWUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlOjk6bXQ3OTE1ZS0kKENPTkZJR19NVDc5OFhfV01BQykgJiM0Mzs9IHNvYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZToxMDptdDc5MTVlLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTEyPU1PRFVMRV9QQVJNX0RFU0MoY29yZWR1bXBfbWVtZHVtcCwgXCYjMzQ7T3B0aW9uYWwgYWJpbGl0eSB0byBkdW1wIGZpcm13YXJlIG1lbW9yeVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10NzkxNV9tZW1fcmVnaW9uc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNS1cdHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMjpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10NzkxNl9tZW1fcmVnaW9uc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMy1cdHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo1NTpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10Nzk4eF9tZW1fcmVnaW9uc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy01Ni1cdHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo4ODpjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjg5Om10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTItXHRjYXNlIDB4NzkxNTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTM6XHRcdCpudW0gPSBBUlJBWV9TSVpFKG10NzkxNV9tZW1fcmVnaW9ucyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjk0Olx0XHRyZXR1cm4gXHUwMDI2bXQ3OTE1X21lbV9yZWdpb25zWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05NS1cdGNhc2UgMHg3OTgxOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMDc6c3RhdGljIGludCBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9zaXplKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEwOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwOTpcdGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqbWVtX3JlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEwLVx0c2l6ZV90IHNpemUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMTQ6XHRtZW1fcmVnaW9uID0gbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KGRldiwgXHUwMDI2bnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTE1LVx0aWYgKCFtZW1fcmVnaW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTIzLVx0LyogcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGhlYWRlcnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTI0Olx0c2l6ZSAmIzQzOz0gbnVtICogc2l6ZW9mKHN0cnVjdCBtdDc5MTVfbWVtX2hkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEyNS1cdC8qIG1ha2Ugc3VyZSBpdCBpcyBhbGlnbmVkIDQgYnl0ZXMgZm9yIGRlYnVnIG1lc3NhZ2UgcHJpbnQgb3V0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEzMTpzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMzOlx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEzNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE0Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDQ6bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE0NS1cdFx0XHQgYm9vbCAqZXhjZXB0aW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUwLVx0c3RhdGUgPSAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfRldfQVNTRVJUX1NUQVQsIEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNTE6XHRjb3VudCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNTItXHRcdCh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19FWENFUFRfQ09VTlQsIEdFTk1BU0soMTUsIDgpKSA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0xNjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTY3Om10NzkxNV9jb3JlZHVtcF9md190cmFjZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xNjgtXHRcdFx0IGJvb2wgZXhjZXB0aW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNzU6XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE3Ni1cdCAgICAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgYmFzZSwgR0VOTUFTSyg3LCAwKSkgOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTgwLVx0aXJxID0gbXQ3Nl9ycihkZXYsIGJhc2UgJiM0MzsgMHg4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTgxOlx0biA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODItXHQgICAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIGlycSkgOiBGSUVMRF9HRVQoR0VOTUFTSygyMywgMTYpLCBpcnEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTg1LVx0c2NoID0gbXQ3Nl9ycihkZXYsIE1UX0ZXX1NDSEVEX0lORk8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODY6XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4Ny1cdCAgICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgc2NoKSA6IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgc2NoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5My1cdFx0Lyogc2NoZWQgdHJhY2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTk0Olx0XHRuID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5NS1cdFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgc2NoKSA6IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBzY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjAxLVx0XHRmb3IgKHkgPSBkdW1wLVx1MDAzZXNjaGVkX2luZm9faWR4LCBpID0gMDsgaSBcdTAwM2MgbjsgaSYjNDM7JiM0MzssIHkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIwMjpcdFx0XHRtdDc5MTVfbWVtY3B5X2Zyb21pbyhkZXYsIGR1bXAtXHUwMDNlc2NoZWQsIGJhc2UgJiM0MzsgMHhjICYjNDM7IHkgKiAxMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjAzLVx0XHRcdFx0XHQgICAgIHNpemVvZihkdW1wLVx1MDAzZXNjaGVkKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDctXHRcdC8qIGlycSB0cmFjZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMDg6XHRcdG4gPSBpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjA5LVx0XHQgICAgRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBpcnEpIDogRklFTERfR0VUKEdFTk1BU0soNywgMCksIGlycSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMTUtXHRcdGZvciAoeSA9IGR1bXAtXHUwMDNlaXJxX2luZm9faWR4LCBpID0gMDsgaSBcdTAwM2MgbjsgaSYjNDM7JiM0MzssIHkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIxNjpcdFx0XHRtdDc5MTVfbWVtY3B5X2Zyb21pbyhkZXYsIGR1bXAtXHUwMDNlaXJxLCBiYXNlICYjNDM7IDB4NCAmIzQzOyB5ICogMTYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIxNy1cdFx0XHRcdFx0ICAgICBzaXplb2YoZHVtcC1cdTAwM2VpcnEpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTIyMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyMjQ6bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YWNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIyNS1cdFx0XHQgYm9vbCBleGNlcHRpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yNDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ1Om10NzkxNV9jb3JlZHVtcF9md190YXNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTI0Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI0NzpcdHUzMiBvZmZzID0gaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/IDB4ZTAgOiAweDE3MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MjY4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI2OTptdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoyODA6XHRcdGlkeCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yODEtXHRcdCAgICAgICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19DSVJRX0lEWCwgR0VOTUFTSygzMSwgMTYpKSA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwMjpzdGF0aWMgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMwNDpcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YSA9IGRldi1cdTAwM2Vjb3JlZHVtcC5jcmFzaF9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDU6XHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDY6XHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wX21lbSAqZHVtcF9tZW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwNy1cdHNpemVfdCBsZW4sIHNvZmFyID0gMCwgaGRyX2xlbiA9IHNpemVvZigqZHVtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMyNzpcdGR1bXAgPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqKShidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zMjgtXHRkdW1wLVx1MDAzZWxlbiA9IGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQxOlx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YXRlKGRldiwgZHVtcCwgXHUwMDI2ZXhjZXB0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQyOlx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3RyYWNlKGRldiwgZHVtcCwgZXhjZXB0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQzOlx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3Rhc2soZGV2LCBkdW1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ0Olx0bXQ3OTE1X2NvcmVkdW1wX2Z3X2NvbnRleHQoZGV2LCBkdW1wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ1Olx0bXQ3OTE1X2NvcmVkdW1wX2Z3X3N0YWNrKGRldiwgZHVtcCwgZXhjZXB0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNDctXHQvKiBnYXRoZXIgbWVtb3J5IGNvbnRlbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ4Olx0ZHVtcF9tZW0gPSAoc3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0gKikoYnVmICYjNDM7IHNvZmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ5LVx0ZHVtcF9tZW0tXHUwMDNlbGVuID0gY3Jhc2hfZGF0YS1cdTAwM2VtZW1kdW1wX2J1Zl9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM1OTppbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNjE6XHRzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MzpcdGR1bXAgPSBtdDc5MTVfY29yZWR1bXBfYnVpbGQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzY0LVx0aWYgKCFkdW1wKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM3NDppbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM3NjpcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzc3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg0LVx0aWYgKGNvcmVkdW1wX21lbWR1bXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzg1Olx0XHRjcmFzaF9kYXRhLVx1MDAzZW1lbWR1bXBfYnVmX2xlbiA9IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX3NpemUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg2LVx0XHRpZiAoIWNyYXNoX2RhdGEtXHUwMDNlbWVtZHVtcF9idWZfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo0MDA6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy00MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6NzojaW5jbHVkZSBcJiMzNDttdDc5MTUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaD05PXN0cnVjdCB0cmFjZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTQ6c3RydWN0IG10NzkxNV9jb3JlZHVtcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTE1LVx0Y2hhciBtYWdpY1sxNl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC03OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODA6c3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04MS1cdHUzMiBsZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC04NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODU6c3RydWN0IG10NzkxNV9tZW1faGRyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtODYtXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6OTE6c3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOTItXHR1MzIgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAwOmNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMTptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDI6c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDM6aW50IG10NzkxNV9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwNDppbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDU6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDk6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMTA6bXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fbGF5b3V0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiAqbnVtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMTU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKm10NzkxNV9jb3JlZHVtcF9uZXcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTI1OnN0YXRpYyBpbmxpbmUgaW50IG10NzkxNV9jb3JlZHVtcF9yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMzA6c3RhdGljIGlubGluZSB2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQtI2luY2x1ZGUgXHUwMDNjbGludXgvcmVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU6I2luY2x1ZGUgXCYjMzQ7bXQ3OTE1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02LSNpbmNsdWRlIFwmIzM0O2VlcHJvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjptdDc5MTVfaW1wbGljaXRfdHhiZl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MzE6XHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfdHhiZihkZXYsIE1UX0JGX1RZUEVfVVBEQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zMi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTM0PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozNTptdDc5MTVfaW1wbGljaXRfdHhiZl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM3Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10NzkxNV9pbXBsaWNpdF90eGJmX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NTpcdFx0XHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NDg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0OTptdDc5MTVfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwLVx0XHRcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MjpcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MzpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU0LVx0Ym9vbCBiYW5kID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg1LVx0Y2FzZSBTRVJfUVVFUlk6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODY6XHRcdHJldCA9IG10NzkxNV9tY3Vfc2V0X3NlcihkZXYsIDAsIDAsIGJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTMtXHRjYXNlIFNFUl9TRVRfUkVDT1ZFUl9MM19CRjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5NDpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgU0VSX0VOQUJMRSwgQklUKHZhbCksIGJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgU0VSX1JFQ09WRVIsIHZhbCwgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMDMtXHRcdG10NzZfc2V0KGRldiwgTVRfV0ZETUEwX01DVV9IT1NUX0lOVF9FTkEsIE1UX01DVV9DTURfV0RUX01BU0spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEwNDpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTA1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMDgtXHRcdGRldi1cdTAwM2VyZWNvdmVyeS5zdGF0ZSB8PSBNVF9NQ1VfQ01EX1dEVF9NQVNLO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEwOTpcdFx0bXQ3OTE1X3Jlc2V0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTEwLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI0PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI1Om10NzkxNV9zeXNfcmVjb3ZlcnlfZ2V0KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI2LVx0XHRcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI4Olx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyOTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEzMC1cdGNoYXIgKmJ1ZmY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbXQ3OTE1X3N5c19yZWNvdmVyeV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA1Olx0LndyaXRlID0gbXQ3OTE1X3N5c19yZWNvdmVyeV9zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA2Olx0LnJlYWQgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMDctXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIxMjptdDc5MTVfcmFkYXJfdHJpZ2dlcih2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIxNS0jZGVmaW5lIFJBREFSX0JBQ0tHUk9VTkRcdDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMTY6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMTc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTgtXHRpbnQgcmRkX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIyODpcdHJkZF9pZHggPSBtdDc5MTVfZ2V0X3JkZF9pZHgocGh5LCB2YWwgPT0gUkFEQVJfQkFDS0dST1VORCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI5LVx0aWYgKHJkZF9pZHggXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjM4PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JhZGFyX3RyaWdnZXIsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM5Olx0XHRcdCBtdDc5MTVfcmFkYXJfdHJpZ2dlciwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQyOm10NzkxNV9tdXJ1X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ0Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0Ni1cdGRldi1cdTAwM2VtdXJ1X2RlYnVnID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0NzpcdG10NzkxNV9tY3VfbXVydV9kZWJ1Z19zZXQoZGV2LCBkZXYtXHUwMDNlbXVydV9kZWJ1Zyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yNTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MzptdDc5MTVfbXVydV9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjU0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfbXVydV9kZWJ1ZywgbXQ3OTE1X211cnVfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI2MzpcdFx0XHQgbXQ3OTE1X211cnVfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjY1OnN0YXRpYyBpbnQgbXQ3OTE1X211cnVfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjY2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjc6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI2ODpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI2OS1cdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGxfbm9uX2hlX3R5cGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI5MjpcdHJldCA9IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19nZXQocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1MTpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X211cnVfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00NTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1NDptdDc5MTVfcmRkX21vbml0b3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDU2Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1Ny1cdHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiAqY2hhbmRlZiA9IFx1MDAyNmRldi1cdTAwM2VyZGQyX2NoYW5kZWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0NjM6XHRpZiAoIW10NzkxNV9lZXByb21faGFzX2JhY2tncm91bmRfcmFkYXIoZGV2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2NC1cdFx0c2VxX3B1dHMocywgXCYjMzQ7bm8gYmFja2dyb3VuZCByYWRhciBjYXBhYmlsaXR5XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTA1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MDY6bXQ3OTE1X2Z3X2RlYnVnX3dtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTA4Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTA5LVx0ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MzA6XHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NDA6XHRcdHJldCA9IG10NzkxNV9tY3VfZndfZGJnX2N0cmwoZGV2LCBkZWJ1ZywgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NDEtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU1OT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTYwOm10NzkxNV9md19kZWJ1Z193bV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjI6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1Njk6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfd20sIG10NzkxNV9md19kZWJ1Z193bV9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTcwOlx0XHRcdCBtdDc5MTVfZndfZGVidWdfd21fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTcyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NzM6bXQ3OTE1X2Z3X2RlYnVnX3dhX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU3NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTc1Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc2LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4MDpcdHJldCA9IG10NzkxNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIE1DVV9GV19MT0dfV0EsIGRldi1cdTAwM2Vmdy5kZWJ1Z193YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4NDpcdHJldCA9IG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChTRVQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4NS1cdFx0XHRcdE1DVV9XQV9QQVJBTV9QRE1BX1JYLCAhIWRldi1cdTAwM2Vmdy5kZWJ1Z193YSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU5Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTk0Om10NzkxNV9md19kZWJ1Z193YV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTk1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1OTY6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MDM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfd2EsIG10NzkxNV9md19kZWJ1Z193YV9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjA0Olx0XHRcdCBtdDc5MTVfZndfZGVidWdfd2Ffc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTYzMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjMxOm10NzkxNV9md19kZWJ1Z19iaW5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM2LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Mzc6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NDk6XHRyZXR1cm4gbXQ3OTE1X2Z3X2RlYnVnX3dtX3NldChkZXYsIGRldi1cdTAwM2Vmdy5kZWJ1Z193bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjUwLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjUyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTM6bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjU0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTU6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5MTVfZndfZGVidWdfYmluX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjM6XHRcdFx0IG10NzkxNV9md19kZWJ1Z19iaW5fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjY1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjY6bXQ3OTE1X2Z3X3V0aWxfd21fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Njg6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd20pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02ODY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NzptdDc5MTVfZndfdXRpbF93YV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4OTpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTMtXHRpZiAoZGV2LVx1MDAzZWZ3LmRlYnVnX3dhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY5NDpcdFx0cmV0dXJuIG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChRVUVSWSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjk1LVx0XHRcdFx0XHQgTUNVX1dBX1BBUkFNX0NQVV9VVElMLCAwLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjcwMDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd2EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTcwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03MDI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3MDM6bXQ3OTE1X2FtcGR1X3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MDQtXHRcdFx0ICAgc3RydWN0IHNlcV9maWxlICpmaWxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTcwNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzA2Olx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA3LVx0Ym9vbCBleHRfcGh5ID0gcGh5ICE9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTczMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjczNDptdDc5MTVfdHhiZl9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03ODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4MTptdDc5MTVfdHhfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzgyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODM6XHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4NDpcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc4NS1cdHN0cnVjdCBtdDc2X21pYl9zdGF0cyAqbWliID0gXHUwMDI2cGh5LVx1MDAzZW1pYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc5MDpcdG10NzkxNV9hbXBkdV9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzkxOlx0bXQ3OTE1X21hY191cGRhdGVfc3RhdHMocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3OTI6XHRtdDc5MTVfdHhiZl9zdGF0X3JlYWRfcGh5KHBoeSwgZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODExOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfdHhfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz04MTM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTQ6bXQ3OTE1X2h3X3F1ZXVlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB1MzIgc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTUtXHRcdCAgICAgY29uc3Qgc3RydWN0IGh3X3F1ZXVlX21hcCAqbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODE3Olx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTg6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTktXHR1MzIgaSwgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz04NDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDU6bXQ3OTE1X3N0YV9od19xdWV1ZV9yZWFkKHZvaWQgKmRhdGEsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDc6XHRzdHJ1Y3QgbXQ3OTE1X3N0YSAqbXN0YSA9IChzdHJ1Y3QgbXQ3OTE1X3N0YSAqKXN0YS1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDg6XHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gbXN0YS1cdTAwM2V2aWYtXHUwMDNlcGh5LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04NDktXHRzdHJ1Y3Qgc2VxX2ZpbGUgKnMgPSBkYXRhO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJ1ZyBGaXggZm9yIHRoZSBNVDc5MTVFIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBDT05GSUdfTVQ3OTE1RWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoZSBtYWtlZmlsZSBmcmFnbWVudCBjb25maXJtcyBpdCwgYG10NzkxNWUteSA6PSBwY2kubyAuLi5gLCB5ZXAsIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gVGhlbiBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMgd2l0aCBQQ0kgZHJpdmVycy4gTm9ybWFsbHksIEkmIzM5O2QgZXhwZWN0IGZ1enppbmcgdG8gaGFwcGVuIHZpYSBgc3l6X3BjaV8uLi5gIHBzZXVkby1zeXNjYWxscyBvciB3aGVuIGl0JiMzOTtzIGxvYWRlZCB3aXRoIGEgdmlydHVhbCBkZXZpY2UuIEhvd2V2ZXIsIGEgZ2VuZXJpYywgb3V0LW9mLXRoZS1ib3ggUENJIGZ1enplciBpbiBzeXprYWxsZXIgaXNuJiMzOTt0IHRoZSBub3JtLCB1bmxlc3MgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IHN1cHBvcnRlZCBvciBsZXZlcmFnZXMgdGhlIG5ldGxpbmsvbWFjODAyMTEgaW50ZXJmYWNlLgoKVGhlIGtleSBjbHVlIGlzIHRoZSBwYXRjaCBhdXRob3I6IGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gVGhpcyBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIHN5emthbGxlciBmb3VuZCBhIGJ1ZyBoZXJlLiBFaXRoZXIgdGhlIHBhdGNoIGlzIGZpeGluZyBhIGRpc2NvdmVyZWQgaXNzdWUsIG9yIGl0JiMzOTtzIGEgdGVzdCBwYXRjaC4gSWYgc3l6a2FsbGVyIGZvdW5kIHRoZSBidWcsIGl0IG1lYW5zIGl0JiMzOTtzIHJlYWNoYWJsZSBpbiBzeXprYWxsZXImIzM5O3MgZW52aXJvbm1lbnQsIHdoaWNoIGlzIGEgYmlnIGRlYWwhCgpJJiMzOTtsbCByZS1leGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBjaGFuZ2VzIGludm9sdmUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGluIGBtYWluLmNgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGluIGB3ZWQuY2AuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTVQ3OTE1RWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3MgY29uZmlndXJhdGlvbiwgYXMgdGhhdCB3b3VsZCBjb25maXJtIHRoaXMgaXMgYmVpbmcgdGVzdGVkIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgUENJIGZ1enppbmcuIEl0IHVzZXMgYHZoY2lgIGZvciBVU0IsIGJ1dCBQQ0kmIzM5O3Mgb2Z0ZW4gaGFuZGxlZCBieSBgc3l6X3BjaV8uLi5gIG9yIGJ5IHVzaW5nIHRoZSBzb2Z0d2FyZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgd2FpdCwgYG10NzZgIGhhcyBgbWFjODAyMTFgIHN1cHBvcnQhIFRoaXMgaXMgaW1wb3J0YW50LiBDb3VsZCB0aGlzIGJlIHRyaWdnZXJlZCB1c2luZyBgbWFjODAyMTFgIG5ldGxpbmsgY29tbWFuZHMsIGV2ZW4gd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gTWF5YmUgdGhlIGRyaXZlciBpcyBwcm9iZWQgdmlhIGEgZmFrZSBQQ0kgZGV2aWNlLiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgaGFzIGJlZW4gaW1wcm92aW5nLCBzbyB0aGF0JiMzOTtzIHBvc3NpYmxlLgoKVGhlIG5leHQgY3JpdGljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgaXMgcmVhY2hhYmxlIGZyb20gc3l6a2FsbGVyLCB3aGljaCBzaG91bGQgZ2l2ZSBpbnNpZ2h0IGludG8gaG93IHRoaXMgYnVnIHdhcyB0cmlnZ2VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzIyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxNzIzOm10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTcyNC1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NjU9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgxOS0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTgyMDpcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjEtXHQubmV0X3NldHVwX3RjID0gbXQ3Nl93ZWRfbmV0X3NldHVwX3RjLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTc5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBkaXN0aWxsZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIE1UNzkxNSBXaS1GaSBEcml2ZXIgLSBBIFdFRC1TcGVjaWZpYyBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgY29kZSByZWZlcmVuY2UsIGAubmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCwgd2l0aGluIHRoZSBgbXQ3OTE1X29wc2Agc3RydWN0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhpcyBpcyBhIGxpa2VseSBwb2ludCBmb3IgV0VEIChXaS1GaSBvZmZsb2FkIEVuZ2luZSBEcml2ZXIpIGludGVyYWN0aW9uLiYjMzQ7IFRoaXMgaXNuJiMzOTt0IHN1cnByaXNpbmcsIGdpdmVuIHRoZSBhcmNoaXRlY3R1cmUuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiB0aGlzIG1hbm5lciBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHBhY2tldCBmbG93IHRocm91Z2ggdGhpcyBzZWN0aW9uIGlzIGNvbnRpbmdlbnQgdXBvbiB0aGUgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlndXJhdGlvbiBvcHRpb24gYmVpbmcgZW5hYmxlZC4KClRoZSBuZXh0IG9idmlvdXMgdGhpbmcgdG8gY2hlY2sgaXMsIHdoYXQgaW5pdGlhbGlzYXRpb24gc3RlcHMgcmVsYXRlIHRvIHRoYXQgY29kZSBzZWN0aW9uPyBUaGF0IHRha2VzIG1lIHN0cmFpZ2h0IHRvIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIEkmIzM5O2xsIGRlbHZlIGludG8gdGhhdCB0byBjb25maXJtIHRoZSBwYXRoIHRha2VuLCBjb25maXJtIHRoYXQgaW5pdGlhbGlzYXRpb24gaXMgY29ycmVjdGx5IHBlcmZvcm1lZCBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIHJlY2VpdmUgYnVmZmVyIGlzIGhhbmRsZWQgaW4gdGhlIGNvbnRleHQgb2YgV0VELiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfd2VkX2luaXRfcnhfYnVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI0ND1pbnQgbXQ3Nl93ZWRfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNDctI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI0ODp1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNDktaW50IG10NzZfd2VkX29mZmxvYWRfZW5hYmxlKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyNTA9aW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGJvb2wgcmVzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI1MS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI1MjpzdGF0aWMgaW5saW5lIHUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE1LVx0d2VkLVx1MDAzZXdsYW4ub2ZmbG9hZF9kaXNhYmxlID0gbXQ3Nl93ZWRfb2ZmbG9hZF9kaXNhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjcxNjpcdHdlZC1cdTAwM2V3bGFuLmluaXRfcnhfYnVmID0gbXQ3Nl93ZWRfaW5pdF9yeF9idWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE3LVx0d2VkLVx1MDAzZXdsYW4ucmVsZWFzZV9yeF9idWYgPSBtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9NDU2PWludCBtdDc5OTZfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjAzLVx0d2VkLVx1MDAzZXdsYW4uaW5pdF9idWYgPSBtdDc5OTZfd2VkX2luaXRfYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjYwNDpcdHdlZC1cdTAwM2V3bGFuLmluaXRfcnhfYnVmID0gbXQ3Nl93ZWRfaW5pdF9yeF9idWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjA1LVx0d2VkLVx1MDAzZXdsYW4ucmVsZWFzZV9yeF9idWYgPSBtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTI5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZfd2VkX3JlbGVhc2VfcnhfYnVmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMxLSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MzI6dTMyIG10NzZfd2VkX2luaXRfcnhfYnVmKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkLCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtODMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYzo4NDpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9pbml0X3J4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTU5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdFRCBPZmZsb2FkIFBhdGNoIGZvciBNZWRpYVRlayBTb0NzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggcGVydGFpbnMgdG8gV2lyZWxlc3MgRXRoZXJuZXQgRGlzcGF0Y2hlciAoV0VEKSBvZmZsb2FkIG9uIE1lZGlhVGVrIFN5c3RlbS1vbi1DaGlwcy4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIEkgZXZlbiByZWFjaCB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVHlwaWNhbGx5LCBQQ0kgZGV2aWNlcyBsaWtlIHRoZSBNVDc5MTUgYXJlIGVpdGhlciBhYnNlbnQgaW4gUUVNVS9HQ0UsIG9yIHRoZXkgcmVxdWlyZSBwYXNzLXRocm91Z2ggb3IgZW11bGF0aW9uLiBQZXJoYXBzIGBzeXprYWxsZXJgJiMzOTtzIGBzeXpfcGNpXy4uLmAgY2FsbHMgY291bGQgcHJvYmUgdGhlIGRyaXZlciwgYXNzdW1pbmcgdGhlIFBDSSBJRCBpcyBhIG1hdGNoLgoKV2FpdCwgZG9lcyBgc3l6a2FsbGVyYCBzcGVjaWZpY2FsbHkgdGVzdCBNZWRpYVRlayBXaS1GaSBkcml2ZXJzPyBUaGlzIHBhdGNoIGlzIGZyb20gYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBhIGBzeXprYWxsZXJgLWRpc2NvdmVyZWQgYnVnIGFuZCBpdHMgY29ycmVzcG9uZGluZyBmaXguIEludGVyZXN0aW5nLgoKSG9sZCBvbiBhIHNlY29uZCwgSSByZWNhbGwgdGhhdCBgc3l6a2FsbGVyYCBkb2VzIGhhdmUgV2ktRmkgZHJpdmVyIHRlc3RpbmcgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQmIzM5O3MgYSAqc29mdHdhcmUqIHNpbXVsYXRvciwgaXNuJiMzOTt0IGl0PyBGb3IgKmhhcmR3YXJlKiBkcml2ZXJzLCBJIHRoaW5rIGBzeXprYWxsZXJgIG9mZmVycyBhIFVTQiBmdXp6ZXIgKGR1bW15X2hjZCkgYW5kIGEgUENJIGZ1enplci4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYENPTkZJR19NVDc5MTVFYCBpcyBhIFBDSSBkcml2ZXIuIFllcywgaXQgbG9va3MgbGlrZSBpdCBpczogYG10NzkxNWUteSA6PSBwY2kubyAuLi5gLiBHb29kLiBOb3csIGxldCBtZSBzZWUgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdG8gcmVhY2ggdGhlIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gcmVxdWlyZSBgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYC4gVGltZSB0byBkZWx2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIHByZXNlbmNlIGFuZCBzZXR1cCBvZiBgTkVUX01FRElBVEVLX1NPQ19XRURgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfTUVESUFURUtfU09DX1dFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9OTc0PW10NzZfZG1hX3J4X3Byb2Nlc3Moc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTgzLVx0aWYgKChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19XRURfUlJPX0VOKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5ODQ6XHQgICAgKElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTg1LVx0ICAgICBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjQ5OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI0ND1pbnQgbXQ3Nl93ZWRfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNDYtXHRcdFx0ICB2b2lkICp0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI0NzojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ4LXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyNjI9c3RhdGljIGlubGluZSBpbnQgbXQ3Nl93ZWRfZG1hX3NldHVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjY2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNjc6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjkxPXN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzZfZGV2ICptdDc2X3dlZF90b19kZXYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyOTM6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI5NC1cdGlmICh3ZWQtXHUwMDNld2xhbi5oaWYyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI5NS1cdFx0cmV0dXJuIGNvbnRhaW5lcl9vZih3ZWQsIHN0cnVjdCBtdDc2X2RldiwgbW1pby53ZWRfaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjk2OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyOTctXHRyZXR1cm4gY29udGFpbmVyX29mKHdlZCwgc3RydWN0IG10NzZfZGV2LCBtbWlvLndlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE2NzM9bXQ3OTE1X3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MjE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MjItc3RhdGljIGludFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzY1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MTgtXHQuc2V0X3JhZGFyX2JhY2tncm91bmQgPSBtdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTgxOTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyMC1cdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTE3Nzc9aW50IG10NzkxNV9tY3Vfd2VkX2VuYWJsZV9yeF9zdGF0cyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTc3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoxNzc5OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTE3ODAtXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz01NjU9c3RhdGljIHUzMiBtdDc5MTVfcm13KHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTMyIG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo1ODA6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU4MS1zdGF0aWMgdm9pZCBtdDc5MTVfbW1pb193ZWRfdXBkYXRlX3J4X3N0YXRzKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz02MzM9aW50IG10NzkxNV9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjYzNjojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNjM3LVx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9ODI1PXN0YXRpYyB2b2lkIG10Nzk5Nl9ycm9faHdfaW5pdF92MyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODMzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzQtXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXHUwMDI2XHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDYtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ3OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjk5ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTk5LVx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAwNS1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMDY6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwMDctXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jPTIzODE9bXQ3OTk2X25ldF9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNC1cdHBhdGgtXHUwMDNlZGV2ID0gY3R4LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDE1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDE2LVx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yNTEwPWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10Nzk5Nl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1NjQtXHQubmV0X2ZpbGxfZm9yd2FyZF9wYXRoID0gbXQ3OTk2X25ldF9maWxsX2ZvcndhcmRfcGF0aCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTY1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTY2LVx0Lm5ldF9zZXR1cF90YyA9IG10NzZfd2VkX25ldF9zZXR1cF90Yyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9NDEwPXN0YXRpYyB1MzIgbXQ3OTk2X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6NDI1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00MjYtc3RhdGljIGludCBtdDc5OTZfbW1pb193ZWRfcmVzZXQoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQ1Nj1pbnQgbXQ3OTk2X21taW9fd2VkX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ1OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6NDU5OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00NjAtXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz04NjA9aW50IG10NzZfdG9rZW5fY29uc3VtZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqKnB0eHdpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODc4OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04NzktXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTkxMj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjkyODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI5LVx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYzozMTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMyLXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0xNjc9RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl93ZWRfZG1hX3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MTY4OiNlbmRpZiAvKkNPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDIzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1lZGlhVGVrIFdFRCBPZmZsb2FkKioKCk9rYXksIHNvIHRoaXMgYnVnIHJlcXVpcmVzIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBldmVuIGZ1enogdGhpcz8gVGhlIE1lZGlhVGVrIFdFRCBvZmZsb2FkIGlzIGEgaGFyZHdhcmUgdGhpbmcgb24gTWVkaWFUZWsgU29DcywgYW5kIFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZSB0aG9zZSBkaXJlY3RseS4gQnV0IHdhaXQsIFN5emthbGxlciAqZm91bmQqIHRoZSBidWcuIEhvdz8gTWF5YmUgaXQmIzM5O3MgcnVubmluZyBvbiBhIHJlYWwgTWVkaWFUZWsgU29DPyBTeXprYWxsZXIgKmNhbiogYmUgcnVuIG9uIHJlYWwgaGFyZHdhcmUsIGxpa2UgQW5kcm9pZCBkZXZpY2VzIG9yIHJvdXRlcnMsIGFmdGVyIGFsbC4gT3IgcGVyaGFwcyB0aGUgZHJpdmVyIGlzIGJlaW5nIGNvbXBpbGVkIGFuZCBwcm9iZWQgdGhyb3VnaCBhIHZpcnR1YWwgUENJIGRldmljZSwgbWFraW5nIHRoZSBjb2RlIGFjY2Vzc2libGUuCgpUaGlua2luZyBhYm91dCBpdCwgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHNldCB1cCBhIGZvcndhcmQgcGF0aCwgbGlrZSBmb3IgYSBicmlkZ2Ugb3Igcm91dGluZyBvZmZsb2FkLiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBzZWVtcyB0byBnZXQgY2FsbGVkIGJ5IGBuZnRfZndkX2R1cF9uZXRkZXZfb2ZmbG9hZGAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFNvLCBpZiBTeXprYWxsZXIgY2FuIGNyZWF0ZSBhIHZpcnR1YWwgUENJIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MTVlYCwgdGhhdCBjb3VsZCB0cmlnZ2VyIGl0LgoKSGFuZyBvbi4uLiBTeXprYWxsZXIgaGFzIHRob3NlIGBzeXpfcGNpXy4uLmAgcHNldWRvLXN5c2NhbGxzIHRvIGluamVjdCBQQ0kgZGV2aWNlcy4gQnV0LCBkb2VzIGl0IG5lZWQgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgdG8gbWFrZSB0aGF0IHdvcms/IFRoYXQmIzM5O3MgdGhlIGtleS4gSSBzaG91bGQgY2hlY2sgaWYgdGhhdCBjb25maWcgaXMgZW5hYmxlZCBpbiB0aGUgU3l6a2FsbGVyIGJ1aWxkLiBJdCYjMzk7cyBhIGNvbmZpZyBvcHRpb24sIHJpZ2h0PyBUbyBmdXp6IHRoaXMgcHJvcGVybHksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTVQ3OTE1RWAgYW5kIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgIGFyZSBib3RoIGVuYWJsZWQuIExldCBtZSBjaGVjayB3aGF0IHRoYXQgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9NRURJQVRFS19TT0NfV0VEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4OTYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkV4YW1pbmluZyBDb25kaXRpb25hbCBDb21waWxhdGlvbiBmb3IgdGhlIE1UNzkxNUUgRHJpdmVyKioKClJpZ2h0LCBzbyB0aGlzIHNlZW1zIHRvIGJlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc2NlbmFyaW8gZm9yIHRoZSBNVDc5MTVFIGRyaXZlciBjb2RlLiBJJiMzOTttIGltbWVkaWF0ZWx5IG5vdGljaW5nIGEgZGVwZW5kZW5jeSBvbiBlaXRoZXIgYEFSQ0hfTUVESUFURUtgIGJlaW5nIGRlZmluZWQsIG9yLCBjcml0aWNhbGx5LCBgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyB0aGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGluIGEgY291cGxlIG9mIHdheXMuIFRoZSB0eXBpY2FsIHBhdGggaXMgbGlrZWx5IHRpZWQgdG8gdGhlIE1lZGlhdGVrIGFyY2hpdGVjdHVyZSwgYXMgeW91JiMzOTtkIGV4cGVjdC4gSG93ZXZlciwgdGhlIG1lbnRpb24gb2YgYENPTVBJTEVfVEVTVGAgc3VnZ2VzdHMgdGhhdCB0aGVyZSYjMzk7cyBhIG1lY2hhbmlzbSB0byBmb3JjZSB0aGUgaW5jbHVzaW9uIG9mIHRoZSBkcml2ZXIsIHByb2JhYmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9yIGZvciBhIGJyb2FkZXIgYnVpbGQgY29uZmlndXJhdGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBtaWdodCBub3QgYmUgZXhwbGljaXRseSBNZWRpYXRlaywgYnV0IHdlIHN0aWxsIHdhbnQgdG8gYnVpbGQgaXQgYW5kIGV4YW1pbmUgaXRzIGNvbXBpbGVkIG91dHB1dC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIGBDT05GSUdfTVQ3OTE1RWAgaXMgYW4gb3B0aW9uIHRoYXQgY2FuIGJlIGRpc2FibGVkLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhhdCBvcHRpb24gaW4gbXkgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MTVFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6Mjpjb25maWcgTVQ3OTE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODMwOAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDcyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZ1bG5lcmFiaWxpdHkgaW4gTVQ3OTE1IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCBjZW50ZXJzIGFyb3VuZCB0aGUgTWVkaWFUZWsgTVQ3OTE1IGRyaXZlciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIE1BQzgwMjExIGFuZCBQQ0kgc3Vic3lzdGVtcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgTVQ3OTE1RWAgYW5kIGBORVRfTUVESUFURUtfU09DX1dFRGAgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBJbml0aWFsbHksIHRoZSBjb2RlIGRldGVybWluZWQgdGhlIHF1ZXVlIGJhc2VkIG9uIHdoZXRoZXIgYHBoeWAgd2FzIHRoZSBzYW1lIGFzIGAmYW1wO2Rldi0mZ3Q7cGh5YC4gTm93LCBpdCYjMzk7cyBjaGFuZ2VkIHRvIHVzZSBgcGh5LSZndDttdDc2LSZndDtiYW5kX2lkeGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHRoaXMgc2VlbXMgbGlrZSBhIG1vcmUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHF1ZXVlIHNlbGVjdGlvbi4mIzM0OyBgcGh5YCBpcyBhIHBvaW50ZXIgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LCBhbmQsIGNyaXRpY2FsbHksIGl0JiMzOTtzIGRlcml2ZWQgZnJvbSBgdmlmLSZndDtkcnZfcHJpdmAuICBJIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlIOKAkyBpZiBgcGh5LSZndDttdDc2YCBpcyBOVUxMLCB0aGlzIGNvdWxkIGJlIGEgY3Jhc2guICBIb3dldmVyLCBnaXZlbiB0aGUgZHJpdmVyJiMzOTtzIHN0cnVjdHVyZSwgYHBoeS0mZ3Q7bXQ3NmAgaXMgKnByb2JhYmx5KiBpbml0aWFsaXplZCBwcm9wZXJseS4gVGhlIG9yaWdpbmFsIGNvbXBhcmlzb24gYHBoeSAhPSAmYW1wO2Rldi0mZ3Q7cGh5YCBsb29rcyBsaWtlIGEgYnVnLgoKVGhlbiBJIHNlZSB0aGUgbW9kaWZpY2F0aW9uIGluIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAsIGFuZCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgYnJhbmNoZXMgYmFzZWQgb24gYHdlZC0mZ3Q7dmVyc2lvbmAgYW5kIGBkZXYtJmd0O3BoeS5iYW5kX2lkeGAuICBXZSBoYXZlIGEgY29uZGl0aW9uYWwgYXNzaWdubWVudCBvZiB0aGUgcXVldWU6IGVpdGhlciBgJmFtcDtkZXYtJmd0O3FfcnhbTVRfUlhRX0JBTkQxXWAgb3IgYCZhbXA7ZGV2LSZndDtxX3J4W01UX1JYUV9NQUlOXWAuIFRoaXMgc2VlbXMgcmVhY2hhYmxlLgoKTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gIFN5emthbGxlciBpcyB0aGUga2V5IHRvIHRoaXMsIEkgdGhpbmssIHBhcnRpY3VsYXJseSBpZiBpdCYjMzk7cyBmdXp6aW5nIFBDSSBkZXZpY2VzLiAgSWYgU3l6a2FsbGVyIGNhbiBwcm9iZSB0aGUgZHJpdmVyLCBpdCB3aWxsIGNhbGwgdGhlc2UgZnVuY3Rpb25zLiBHaXZlbiB0aGF0IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBjYWxsZWQgYnkgdGhlIG5ldHdvcmsgc3RhY2ssIGlmIHRoZSBkcml2ZXIgaXMgc3VjY2Vzc2Z1bGx5IHByb2JlZCwgYSBuZXRkZXYgaXMgcmVnaXN0ZXJlZCBhbmQgdGhlbiB0aGUgbmV0d29yayBzdGFjayBjYWxscyBgbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gIFN5emthbGxlciBjYW4gdXNlIGBzeXpfcGNpXy4uLmAgY2FsbHMgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcy4gSSYjMzk7bSB3b25kZXJpbmcgdGhvdWdoIGlmIHRoZSBkcml2ZXIgY2FuIGJlIHN1Y2Nlc3NmdWxseSBwcm9iZWQgd2l0aG91dCByZWFsIGhhcmR3YXJlLiBVc3VhbGx5LCBtb3JlIGNvbXBsZXggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gb2Z0ZW4gZmFpbHMgdW5sZXNzIHRoZSBlbXVsYXRvciBoYW5kbGVzIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLiBJIG5lZWQgdG8gY2hlY2sgYG10NzkxNV9wY2lfcHJvYmVgIHRvIGtub3cgZm9yIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9wY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz04ND1zdGF0aWMgaW50IG10NzkxNV9wY2lfaGlmMl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxMDM6c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTA0LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MjIxPXN0cnVjdCBwY2lfZHJpdmVyIG10NzkxNV9oaWZfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyMy1cdC5pZF90YWJsZVx0PSBtdDc5MTVfaGlmX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIyNDpcdC5wcm9iZVx0XHQ9IG10NzkxNV9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjUtXHQucmVtb3ZlXHRcdD0gbXQ3OTE1X2hpZl9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM9MjI4PXN0cnVjdCBwY2lfZHJpdmVyIG10NzkxNV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cdC5pZF90YWJsZVx0PSBtdDc5MTVfcGNpX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzMTpcdC5wcm9iZVx0XHQ9IG10NzkxNV9wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMzItXHQucmVtb3ZlXHRcdD0gbXQ3OTE1X3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTkzCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbXQ3OTE1X3BjaV9wcm9iZWAqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHdoYXQgdGhlIGBtdDc5MTVfcGNpX3Byb2JlYCBmdW5jdGlvbiBpcyBkb2luZy4gSSYjMzk7bSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIFBDSSBkZXZpY2UuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgZ2V0cyByZXNvdXJjZSBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSB0aGUgQkFScywgaW50ZXJydXB0cywgYW5kIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRhdGEgaXQgZ3JhYnMgZnJvbSB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkgZXhwZWN0IHRoZXJlJiMzOTtsbCBiZSBzb21lIGRldmljZS1zcGVjaWZpYyBzZXR1cCBoZXJlLCBwcm9iYWJseSBkZWFsaW5nIHdpdGggdGhlIE1lZGlhVGVrJiMzOTtzIGludGVybmFsIHJlZ2lzdGVycyBhbmQgcG9zc2libHkgYW55IGZpcm13YXJlIGxvYWRpbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCwgZXJyb3IgY29uZGl0aW9ucywgYW5kIGludGVycnVwdCByZWdpc3RyYXRpb24uIFRoZSBgcHJvYmVgIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50LCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgaXQgc2V0cyB1cCB0aGUgYmFzaWMgZGV2aWNlIHN0cnVjdHVyZSwgYWxsb2NhdGVzIG1lbW9yeSwgYW5kIGNvbmZpZ3VyZXMgdGhlIGhhcmR3YXJlIHNvIHRoYXQgdGhlIGRyaXZlciBpcyByZWFkeSB0byBnby4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYXMgd2VsbDsgaG93IGl0IGdyYWNlZnVsbHkgY2xlYW5zIHVwIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIGlzIGNydWNpYWwuIEZpbmFsbHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGlzIHByb2JlIHJvdXRpbmUgY29ubmVjdHMgdG8gb3RoZXIgcGllY2VzIG9mIHRoZSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcGFydHMgdGhhdCBoYW5kbGUgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGFuZCBkYXRhIHRyYW5zbWlzc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMzpcdHN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMDQ6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEwNTpcdHtcbiAxMDY6XHRcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYyID0gTlVMTDtcbiAxMDc6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXY7XG4gMTA4Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTA5Olx0XHRpbnQgaXJxO1xuIDExMDpcdFx0aW50IHJldDtcbiAxMTE6XHRcbiAxMTI6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAxMTM6XHRcdGlmIChyZXQpXG4gMTE0Olx0XHRcdHJldHVybiByZXQ7XG4gMTE1Olx0XG4gMTE2Olx0XHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XG4gMTE3Olx0XHRpZiAocmV0KVxuIDExODpcdFx0XHRyZXR1cm4gcmV0O1xuIDExOTpcdFxuIDEyMDpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMTIxOlx0XG4gMTIyOlx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIDEyMzpcdFx0aWYgKHJldClcbiAxMjQ6XHRcdFx0cmV0dXJuIHJldDtcbiAxMjU6XHRcbiAxMjY6XHRcdG10NzZfcGNpX2Rpc2FibGVfYXNwbShwZGV2KTtcbiAxMjc6XHRcbiAxMjg6XHRcdGlmIChpZC1cdTAwM2VkZXZpY2UgPT0gMHg3OTE2IHx8IGlkLVx1MDAzZWRldmljZSA9PSAweDc5MGEpXG4gMTI5Olx0XHRcdHJldHVybiBtdDc5MTVfcGNpX2hpZjJfcHJvYmUocGRldik7XG4gMTMwOlx0XG4gMTMxOlx0XHRkZXYgPSBtdDc5MTVfbW1pb19wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcbiAxMzI6XHRcdFx0XHRcdGlkLVx1MDAzZWRldmljZSk7XG4gMTMzOlx0XHRpZiAoSVNfRVJSKGRldikpXG4gMTM0Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldik7XG4gMTM1Olx0XG4gMTM2Olx0XHRtZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gMTM3Olx0XHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcbiAxMzg6XHRcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcbiAxMzk6XHRcbiAxNDA6XHRcdHJldCA9IG10NzkxNV9tbWlvX3dlZF9pbml0KGRldiwgcGRldiwgdHJ1ZSwgXHUwMDI2aXJxKTtcbiAxNDE6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMTQyOlx0XHRcdGdvdG8gZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjtcbiAxNDM6XHRcbiAxNDQ6XHRcdGlmICghcmV0KSB7XG4gMTQ1Olx0XHRcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcbiAxNDY6XHRcbiAxNDc6XHRcdFx0cmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIDEsIFBDSV9JUlFfQUxMX1RZUEVTKTtcbiAxNDg6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxNDk6XHRcdFx0XHRnb3RvIGZyZWVfZGV2aWNlO1xuIDE1MDpcdFxuIDE1MTpcdFx0XHRpcnEgPSBwZGV2LVx1MDAzZWlycTtcbiAxNTI6XHRcdH1cbiAxNTM6XHRcbiAxNTQ6XHRcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cdTAwM2VkZXYsIGlycSwgbXQ3OTE1X2lycV9oYW5kbGVyLFxuIDE1NTpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4gMTU2Olx0XHRpZiAocmV0KVxuIDE1NzpcdFx0XHRnb3RvIGZyZWVfd2VkX29yX2lycV92ZWN0b3I7XG4gMTU4Olx0XG4gMTU5Olx0XHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgdG50ZXJydXB0IGVuYWJsZSAqL1xuIDE2MDpcdFx0bXQ3Nl93cihkZXYsIE1UX1BDSUVfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xuIDE2MTpcdFxuIDE2MjpcdFx0aWYgKGhpZjIpIHtcbiAxNjM6XHRcdFx0ZGV2LVx1MDAzZWhpZjIgPSBoaWYyO1xuIDE2NDpcdFxuIDE2NTpcdFx0XHRtdDc2X3dyKGRldiwgTVRfSU5UMV9NQVNLX0NTUiwgMCk7XG4gMTY2Olx0XHRcdC8qIG1hc3RlciBzd2l0Y2ggb2YgUENJZSB0bnRlcnJ1cHQgZW5hYmxlICovXG4gMTY3Olx0XHRcdGlmIChpc19tdDc5MTUobWRldikpXG4gMTY4Olx0XHRcdFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFLCAweGZmKTtcbiAxNjk6XHRcdFx0ZWxzZVxuIDE3MDpcdFx0XHRcdG10NzZfd3IoZGV2LCBNVF9QQ0lFMV9NQUNfSU5UX0VOQUJMRV9NVDc5MTYsIDB4ZmYpO1xuIDE3MTpcdFxuIDE3MjpcdFx0XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBkZXYtXHUwMDNlaGlmMi1cdTAwM2VpcnEsXG4gMTczOlx0XHRcdFx0XHQgICAgICAgbXQ3OTE1X2lycV9oYW5kbGVyLCBJUlFGX1NIQVJFRCxcbiAxNzQ6XHRcdFx0XHRcdCAgICAgICBLQlVJTERfTU9ETkFNRSBcJiMzNDstaGlmXCYjMzQ7LCBkZXYpO1xuIDE3NTpcdFx0XHRpZiAocmV0KVxuIDE3NjpcdFx0XHRcdGdvdG8gZnJlZV9oaWYyO1xuIDE3NzpcdFx0fVxuIDE3ODpcdFxuIDE3OTpcdFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuIDE4MDpcdFx0aWYgKHJldClcbiAxODE6XHRcdFx0Z290byBmcmVlX2hpZjJfaXJxO1xuIDE4MjpcdFxuIDE4MzpcdFx0cmV0dXJuIDA7XG4gMTg0Olx0XG4gMTg1Olx0ZnJlZV9oaWYyX2lycTpcbiAxODY6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbiAxODc6XHRcdFx0ZGV2bV9mcmVlX2lycShtZGV2LVx1MDAzZWRldiwgZGV2LVx1MDAzZWhpZjItXHUwMDNlaXJxLCBkZXYpO1xuIDE4ODpcdGZyZWVfaGlmMjpcbiAxODk6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbiAxOTA6XHRcdFx0cHV0X2RldmljZShkZXYtXHUwMDNlaGlmMi1cdTAwM2VkZXYpO1xuIDE5MTpcdFx0ZGV2bV9mcmVlX2lycShtZGV2LVx1MDAzZWRldiwgaXJxLCBkZXYpO1xuIDE5MjpcdGZyZWVfd2VkX29yX2lycV92ZWN0b3I6XG4gMTkzOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuIDE5NDpcdFx0XHRtdGtfd2VkX2RldmljZV9kZXRhY2goXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCk7XG4gMTk1Olx0XHRlbHNlXG4gMTk2Olx0XHRcdHBjaV9mcmVlX2lycV92ZWN0b3JzKHBkZXYpO1xuIDE5NzpcdGZyZWVfZGV2aWNlOlxuIDE5ODpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMTk5Olx0XG4gMjAwOlx0XHRyZXR1cm4gcmV0O1xuIDIwMTpcdH1cbiAyMDI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNjIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGF0IGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gYG10NzkxNV9wY2lfcHJvYmVgIGlzIHRoZSBzdGFydGluZyBwb2ludC4gSXQmIzM5O3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgc28gdGhhdCBtYWtlcyBzZW5zZSBhcyB0aGUgZW50cnkgZm9yIHRoZSBQQ0kgZGV2aWNlLiBJdCYjMzk7cyBjYWxsaW5nIGBtdDc5MTVfbW1pb19wcm9iZWAgZmlyc3QuIFJpZ2h0LCBgbW1pb19wcm9iZWAgcHJvYmFibHkgZGVhbHMgd2l0aCB0aGUgbWVtb3J5LW1hcHBlZCBJL08gaW5pdGlhbGl6YXRpb24sIHNldHRpbmcgdXAgdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gTWFrZXMgc2Vuc2UuIFRoZW4sIHRoZSBmbG93IGp1bXBzIGludG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiAgVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiBub3cuIFRoYXQgZnVuY3Rpb24gbXVzdCBiZSB3aGVyZSB0aGUgZHJpdmVyIGZpbmFsaXplcyBpdHMgc2V0dXAsIHJlZ2lzdGVycyB0aGUgZGV2aWNlIHdpdGggdGhlIHN5c3RlbSwgYW5kIHByb2JhYmx5IG1ha2VzIGl0IGF2YWlsYWJsZSB0byB0aGUgbmV0d29ya2luZyBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSB0aGF0IHJlZ2lzdHJhdGlvbiB0byBzZWUgdGhlIGFjdHVhbCBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTE1X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjA5PXN0YXRpYyB2b2lkIG10NzkxNV9zdG9wX2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIyMDppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTEyMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQzMz11MzIgbXQ3OTE1X3dlZF9pbml0X2J1Zih2b2lkICpwdHIsIGRtYV9hZGRyX3QgcGh5cywgaW50IHRva2VuX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQzNTppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQzNi12b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0xMDM9c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjE3OTpcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNjQ6XHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjY1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNTQKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlIENhbGwqKgoKT2theSwgc28gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGhhcyBiZWVuIHRyaWdnZXJlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hlcmU/JiMzNDsgSSBzZWUgdGhhdCBgbXQ3OTh4X3dtYWNfcHJvYmVgIGFsc28gdXNlcyBpdC4gSW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgYG10Nzk4eF93bWFjX3Byb2JlYCBpcyB0aGF0IHBsYXRmb3JtIGRyaXZlciBwcm9iZSB0aWVkIHRvIGBDT05GSUdfTVQ3OThYX1dNQUNgLiBBbmQgd2l0aCBwbGF0Zm9ybSBkcml2ZXJzLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIFN5emthbGxlciBjb3VsZCBlYXNpbHkgaGl0IHRoaXMsIGVpdGhlciB0aHJvdWdoIGEgYHN5el9nZW5ldGxpbmtgIGNhbGwsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRldmljZSB0cmVlLCBvciBldmVuIHRoZSBkaXJlY3QgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhdHRhY2sgdmVjdG9yLgoKQnV0IHdhaXQsIHRoaXMgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIHJlZ2lzdHJhdGlvbi4gSXQmIzM5O3MgYWxzbyBkb2luZyBmaXJtd2FyZSBsb2FkaW5nIGFuZCBNQ1UgaW5pdGlhbGl6YXRpb24uIFRoaXMgcmFpc2VzIHRoZSBzdGFrZXMgY29uc2lkZXJhYmx5LiBBIGZhdWx0IGhlcmUgY291bGQgYmUgY2F0YXN0cm9waGljLiBJIG5lZWQgdG8gZGlnIGludG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIG1vcmUgY2xvc2VseS4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMjA6XHRpbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMTIyMTpcdHtcbjEyMjI6XHRcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyO1xuMTIyMzpcdFx0aW50IHJldDtcbjEyMjQ6XHRcbjEyMjU6XHRcdGRldi1cdTAwM2VwaHkuZGV2ID0gZGV2O1xuMTIyNjpcdFx0ZGV2LVx1MDAzZXBoeS5tdDc2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYucGh5O1xuMTIyNzpcdFx0ZGV2LVx1MDAzZW10NzYucGh5LnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuMTIyODpcdFx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyY193b3JrLCBtdDc5MTVfbWFjX3N0YV9yY193b3JrKTtcbjEyMjk6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MTVfbWFjX3dvcmspO1xuMTIzMDpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXN0YV9yY19saXN0KTtcbjEyMzE6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2V0d3RfbGlzdCk7XG4xMjMyOlx0XG4xMjMzOlx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNmRldi1cdTAwM2VyZXNldF93YWl0KTtcbjEyMzQ6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTE1X21hY19yZXNldF93b3JrKTtcbjEyMzU6XHRcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlZHVtcF93b3JrLCBtdDc5MTVfbWFjX2R1bXBfd29yayk7XG4xMjM2Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkdW1wX211dGV4KTtcbjEyMzc6XHRcbjEyMzg6XHRcdGRldi1cdTAwM2VkYmRjX3N1cHBvcnQgPSBtdDc5MTVfYmFuZF9jb25maWcoZGV2KTtcbjEyMzk6XHRcbjEyNDA6XHRcdHBoeTIgPSBtdDc5MTVfYWxsb2NfZXh0X3BoeShkZXYpO1xuMTI0MTpcdFx0aWYgKElTX0VSUihwaHkyKSlcbjEyNDI6XHRcdFx0cmV0dXJuIFBUUl9FUlIocGh5Mik7XG4xMjQzOlx0XG4xMjQ0Olx0XHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xuMTI0NTpcdFx0aWYgKHJldClcbjEyNDY6XHRcdFx0Z290byBmcmVlX3BoeTI7XG4xMjQ3Olx0XG4xMjQ4Olx0XHRtdDc5MTVfaW5pdF93aXBoeShcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbjEyNDk6XHRcbjEyNTA6XHQjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREVcbjEyNTE6XHRcdGRldi1cdTAwM2VtdDc2LnRlc3Rfb3BzID0gXHUwMDI2bXQ3OTE1X3Rlc3Rtb2RlX29wcztcbjEyNTI6XHQjZW5kaWZcbjEyNTM6XHRcbjEyNTQ6XHRcdHJldCA9IG10NzZfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB0cnVlLCBtdDc2X3JhdGVzLFxuMTI1NTpcdFx0XHRcdFx0ICAgQVJSQVlfU0laRShtdDc2X3JhdGVzKSk7XG4xMjU2Olx0XHRpZiAocmV0KVxuMTI1NzpcdFx0XHRnb3RvIHN0b3BfaHc7XG4xMjU4Olx0XG4xMjU5Olx0XHRyZXQgPSBtdDc5MTVfdGhlcm1hbF9pbml0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuMTI2MDpcdFx0aWYgKHJldClcbjEyNjE6XHRcdFx0Z290byB1bnJlZ19kZXY7XG4xMjYyOlx0XG4xMjYzOlx0XHRpZiAocGh5Mikge1xuMTI2NDpcdFx0XHRyZXQgPSBtdDc5MTVfcmVnaXN0ZXJfZXh0X3BoeShkZXYsIHBoeTIpO1xuMTI2NTpcdFx0XHRpZiAocmV0KVxuMTI2NjpcdFx0XHRcdGdvdG8gdW5yZWdfdGhlcm1hbDtcbjEyNjc6XHRcdH1cbjEyNjg6XHRcbjEyNjk6XHRcdGllZWU4MDIxMV9xdWV1ZV93b3JrKG10NzZfaHcoZGV2KSwgXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yayk7XG4xMjcwOlx0XG4xMjcxOlx0XHRkZXYtXHUwMDNlcmVjb3ZlcnkuaHdfaW5pdF9kb25lID0gdHJ1ZTtcbjEyNzI6XHRcbjEyNzM6XHRcdHJldCA9IG10NzkxNV9pbml0X2RlYnVnZnMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMjc0Olx0XHRpZiAocmV0KVxuMTI3NTpcdFx0XHRnb3RvIHVucmVnX3RoZXJtYWw7XG4xMjc2Olx0XG4xMjc3Olx0XHRyZXQgPSBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoZGV2KTtcbjEyNzg6XHRcdGlmIChyZXQpXG4xMjc5Olx0XHRcdGdvdG8gdW5yZWdfdGhlcm1hbDtcbjEyODA6XHRcbjEyODE6XHRcdHJldHVybiAwO1xuMTI4MjpcdFxuMTI4MzpcdHVucmVnX3RoZXJtYWw6XG4xMjg0Olx0XHRtdDc5MTVfdW5yZWdpc3Rlcl90aGVybWFsKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuMTI4NTpcdHVucmVnX2RldjpcbjEyODY6XHRcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuMTI4NzpcdHN0b3BfaHc6XG4xMjg4Olx0XHRtdDc5MTVfc3RvcF9oYXJkd2FyZShkZXYpO1xuMTI4OTpcdGZyZWVfcGh5MjpcbjEyOTA6XHRcdGlmIChwaHkyKVxuMTI5MTpcdFx0XHRpZWVlODAyMTFfZnJlZV9odyhwaHkyLVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuMTI5MjpcdFx0cmV0dXJuIHJldDtcbjEyOTM6XHR9XG4xMjk0Olx0XG4xMjk1Olx0dm9pZCBtdDc5MTVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjEyOTY6XHR7XG4xMjk3Olx0XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VkdW1wX3dvcmspO1xuMTI5ODpcdFx0bXQ3OTE1X3VucmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xuMTI5OTpcdFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcbjEzMDA6XHRcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4xMzAxOlx0XHRtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzMDI6XHRcdG10NzkxNV9zdG9wX2hhcmR3YXJlKGRldik7XG4xMzAzOlx0XG4xMzA0Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjEzMDU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTg2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgc2VlIHRoZSBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZC4gVGltZSB0byBkaXNzZWN0IGl0cyBndXRzIGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgYmVhc3QgZ2V0cyBpdHMgaGFyZHdhcmUgaW5pdGlhbGl6ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBudWFuY2VzIG9mIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi4gSXMgaXQgZm9sbG93aW5nIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXM/IEFueSBjbGV2ZXIgdHJpY2tzIG9yIG9wdGltaXphdGlvbnM/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkLCBhbmQgaW4gd2hhdCBvcmRlcj8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHBvc3NpYmxlIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgYW55IGRldmlhdGlvbiBmcm9tIGJlc3QgcHJhY3RpY2VzIHRoYXQgbWlnaHQgcmVxdWlyZSBmdXJ0aGVyIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBmb2xsb3dzIHRoZSBzdGFuZGFyZCBpbml0aWFsaXphdGlvbiBwYXR0ZXJuIGZvciB0aGlzIGZhbWlseSBvciBpZiBNZWRpYVRlayBoYXMgc29tZXRoaW5nIHNwZWNpYWwgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkxNV9pbml0X2hhcmR3YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTgyNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODI4Om10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTgyOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTEyMjA9aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzoxMjQ0Olx0cmV0ID0gbXQ3OTE1X2luaXRfaGFyZHdhcmUoZGV2LCBwaHkyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjQ1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU1MDgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLiBJIG5lZWQgdG8gZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgYmFzZWQgb24gbXkgcGFzdCBleHBlcmllbmNlcyB3aXRoIHNpbWlsYXIgaGFyZHdhcmUuIEkgd29uZGVyIGlmIHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSBjbG9jayBjb25maWd1cmF0aW9uIHRoZSB3YXkgSSB3b3VsZC4gQXJlIHRoZXkgdXRpbGl6aW5nIHRoZSBjb3JyZWN0IHBvd2VyIGRvbWFpbnMgYW5kIGZyZXF1ZW5jeSBzY2FsaW5nIGZvciBkaWZmZXJlbnQgb3BlcmF0aW5nIG1vZGVzPyBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMg4oCTIGFyZSB0aGV5IGJlaW5nIGVmZmljaWVudCB3aXRoIHRoZWlyIHdyaXRlcz8gQW55IHVubmVjZXNzYXJ5IHJlZ2lzdGVyIHJlYWRzIGR1cmluZyB0aGUgcHJvY2VzcyBhcmUgaW5zdGFudCBmbGFncyBmb3IgbWUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGR1cmluZyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHBoYXNlLiBTeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcz8gSW50ZXJydXB0IGhhbmRsaW5nIHNldHVwPyBUaGF0JiMzOTtzIGRlZmluaXRlbHkgd2hhdCBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzIG9mIHRoZSBNVDc5MTUgc3BlY2lmaWNhbGx5IHRvIHNwb3QgYW55IHBvdGVudGlhbCBtaXNjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aHJvdWdocHV0LCBsYXRlbmN5LCBvciBwb3dlciBjb25zdW1wdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25z4oCmCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODI3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODI3Olx0c3RhdGljIGludFxuIDgyODpcdG10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuIDgyOTpcdHtcbiA4MzA6XHRcdGludCByZXQsIGlkeDtcbiA4MzE6XHRcbiA4MzI6XHRcdG10NzZfd3IoZGV2LCBNVF9JTlRfTUFTS19DU1IsIDApO1xuIDgzMzpcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9TT1VSQ0VfQ1NSLCB+MCk7XG4gODM0Olx0XG4gODM1Olx0XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTE1X2luaXRfd29yayk7XG4gODM2Olx0XG4gODM3Olx0XHRyZXQgPSBtdDc5MTVfZG1hX2luaXQoZGV2LCBwaHkyKTtcbiA4Mzg6XHRcdGlmIChyZXQpXG4gODM5Olx0XHRcdHJldHVybiByZXQ7XG4gODQwOlx0XG4gODQxOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiA4NDI6XHRcbiA4NDM6XHRcdHJldCA9IG10NzkxNV9tY3VfaW5pdChkZXYpO1xuIDg0NDpcdFx0aWYgKHJldClcbiA4NDU6XHRcdFx0cmV0dXJuIHJldDtcbiA4NDY6XHRcbiA4NDc6XHRcdHJldCA9IG10NzkxNV9lZXByb21faW5pdChkZXYpO1xuIDg0ODpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiA4NDk6XHRcdFx0cmV0dXJuIHJldDtcbiA4NTA6XHRcbiA4NTE6XHRcdGlmIChkZXYtXHUwMDNlY2FsKSB7XG4gODUyOlx0XHRcdHJldCA9IG10NzkxNV9tY3VfYXBwbHlfZ3JvdXBfY2FsKGRldik7XG4gODUzOlx0XHRcdGlmIChyZXQpXG4gODU0Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA4NTU6XHRcdH1cbiA4NTY6XHRcbiA4NTc6XHRcdC8qIEJlYWNvbiBhbmQgbWdtdCBmcmFtZXMgc2hvdWxkIG9jY3VweSB3Y2lkIDAgKi9cbiA4NTg6XHRcdGlkeCA9IG10NzZfd2NpZF9hbGxvYyhkZXYtXHUwMDNlbXQ3Ni53Y2lkX21hc2ssIE1UNzkxNV9XVEJMX1NUQSk7XG4gODU5Olx0XHRpZiAoaWR4KVxuIDg2MDpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbiA4NjE6XHRcbiA4NjI6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmlkeCA9IGlkeDtcbiA4NjM6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmh3X2tleV9pZHggPSAtMTtcbiA4NjQ6XHRcdGRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLnR4X2luZm8gfD0gTVRfV0NJRF9UWF9JTkZPX1NFVDtcbiA4NjU6XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNlbXQ3Ni53Y2lkW2lkeF0sIFx1MDAyNmRldi1cdTAwM2VtdDc2Lmdsb2JhbF93Y2lkKTtcbiA4NjY6XHRcbiA4Njc6XHRcdHJldHVybiAwO1xuIDg2ODpcdH1cbiA4Njk6XHRcbiA4NzA6XHR2b2lkIG10NzkxNV9zZXRfc3RyZWFtX3ZodF90eGJmX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbiA4NzE6XHR7XG4gODcyOlx0XHRpbnQgc3RzO1xuIDg3MzpcdFx0dTMyICpjYXA7XG4gODc0Olx0XG4gODc1Olx0XHRpZiAoIXBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNWdoeilcbiA4NzY6XHRcdFx0cmV0dXJuO1xuIDg3NzpcdFxuIDg3ODpcdFx0c3RzID0gaHdlaWdodDgocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKTtcbiA4Nzk6XHRcdGNhcCA9IFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzVnLnNiYW5kLnZodF9jYXAuY2FwO1xuIDg4MDpcdFxuIDg4MTpcdFx0KmNhcCB8PSBJRUVFODAyMTFfVkhUX0NBUF9TVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxuIDg4MjpcdFx0XHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVFX0NBUEFCTEUgfFxuIDg4MzpcdFx0XHRGSUVMRF9QUkVQKElFRUU4MDIxMV9WSFRfQ0FQX0JFQU1GT1JNRUVfU1RTX01BU0ssXG4gODg0Olx0XHRcdFx0ICAgc3RzIC0gMSk7XG4gODg1Olx0XG4gODg2Olx0XHQqY2FwIFx1MDAyNj0gfihJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0sgfFxuIDg4NzpcdFx0XHQgIElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XG4gODg4Olx0XHRcdCAgSUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FUl9DQVBBQkxFKTtcbiA4ODk6XHRcbiA4OTA6XHRcdGlmIChzdHMgXHUwMDNjIDIpXG4gODkxOlx0XHRcdHJldHVybjtcbiA4OTI6XHRcbiA4OTM6XHRcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FUl9DQVBBQkxFIHxcbiA4OTQ6XHRcdFx0SUVFRTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FUl9DQVBBQkxFIHxcbiA4OTU6XHRcdFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0ssXG4gODk2Olx0XHRcdFx0ICAgc3RzIC0gMSk7XG4gODk3Olx0fVxuIDg5ODpcdFxuIDg5OTpcdHN0YXRpYyB2b2lkXG4gOTAwOlx0bXQ3OTE1X3NldF9zdHJlYW1faGVfdHhiZl9jYXBzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksXG4gOTAxOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqaGVfY2FwLCBpbnQgdmlmKVxuIDkwMjpcdHtcbiA5MDM6XHRcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuIDkwNDpcdFx0c3RydWN0IGllZWU4MDIxMV9oZV9jYXBfZWxlbSAqZWxlbSA9IFx1MDAyNmhlX2NhcC1cdTAwM2VoZV9jYXBfZWxlbTtcbiA5MDU6XHRcdGludCBzdHMgPSBod2VpZ2h0OChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjaGFpbm1hc2spO1xuIDkwNjpcdFx0dTggYywgc3RzXzE2MCA9IHN0cztcbiA5MDc6XHRcbiA5MDg6XHRcdC8qIENhbiBkbyAxLzIgb2YgU1RTIGluIDE2ME1oeiBtb2RlIGZvciBtdDc5MTUgKi9cbiA5MDk6XHRcdGlmIChpc19tdDc5MTUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gOTEwOlx0XHRcdGlmICghZGV2LVx1MDAzZWRiZGNfc3VwcG9ydClcbiA5MTE6XHRcdFx0XHRzdHNfMTYwIC89IDI7XG4gOTEyOlx0XHRcdGVsc2VcbiA5MTM6XHRcdFx0XHRzdHNfMTYwID0gMDtcbiA5MTQ6XHRcdH1cbiA5MTU6XHRcbiA5MTY6XHQjaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbiA5MTc6XHRcdGlmICh2aWYgPT0gTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVClcbiA5MTg6XHRcdFx0cmV0dXJuO1xuIDkxOTpcdCNlbmRpZlxuIDkyMDpcdFxuIDkyMTpcdFx0ZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bM10gXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVAzX1NVX0JFQU1GT1JNRVI7XG4gOTIyOlx0XHRlbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1s0XSBcdTAwMjY9IH5JRUVFODAyMTFfSEVfUEhZX0NBUDRfTVVfQkVBTUZPUk1FUjtcbiA5MjM6XHRcbiA5MjQ6XHRcdGMgPSBJRUVFODAyMTFfSEVfUEhZX0NBUDVfQkVBTUZPUk1FRV9OVU1fU05EX0RJTV9VTkRFUl84ME1IWl9NQVNLO1xuIDkyNTpcdFx0aWYgKHN0c18xNjApXG4gOTI2Olx0XHRcdGMgfD0gSUVFRTgwMjExX0hFX1BIWV9DQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fQUJPVkVfODBNSFpfTUFTSztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1NzcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgRmFpbHVyZSBvZiBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlIGluIGEgU3l6a2FsbGVyIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBhbmQgaXQmIzM5O3MgZmFpbGluZy4gVGhlIGxpa2VseSBjdWxwcml0IHNlZW1zIHRvIGJlIGBtdDc5MTVfbWN1X2luaXRgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBmaXJtd2FyZSBhbmQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBNQ1UuIEhtbSwgSSBiZXQgdGhlIHZpcnR1YWwgUENJIGRldmljZSBpbiBTeXprYWxsZXIgaXMgdGhlIGlzc3VlLCBpdCBwcm9iYWJseSBkb2VzbiYjMzk7dCBmdWxseSBpbXBsZW1lbnQgdGhlIE1DVSBwcm90b2NvbCwgY2F1c2luZyBgbXQ3OTE1X21jdV9pbml0YCB0byBib21iIG91dC4gQSBmYWlsZWQgYG10NzkxNV9tY3VfaW5pdGAgbWVhbnMgYSBmYWlsZWQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgoKQnV0IHdhaXQgYSBtaW51dGUsIGRvZXNuJiMzOTt0IFN5emthbGxlciBoYXZlIHNvbWUgd2F5IHRvIGJ5cGFzcyBvciBtb2NrIGZpcm13YXJlIGxvYWRpbmcsIG9yIGF0IGxlYXN0IHN1YnN0aXR1dGUgaXQ/IE5vLCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGdlbmVyYWxseSBtb2NrIGRyaXZlci1zcGVjaWZpYyBmaXJtd2FyZSB1bmxlc3MgdGhlcmUmIzM5O3MgZXhwbGljaXQgc3VwcG9ydC4gVGhpbmsgb2Ygc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgdGhhdCBvbmUgZG9lc24mIzM5O3QgcmVseSBvbiByZWFsIGZpcm13YXJlLiBTbywgSSBuZWVkIHRvIGFzc3VtZSB0aGF0IGl0JiMzOTtzIHRoZSBNQ1UgcHJvdG9jb2wgbm90IGJlaW5nIGltcGxlbWVudGVkLgoKSG9sZCBvbiwgSSYjMzk7bSBnZXR0aW5nIGFoZWFkIG9mIG15c2VsZi4gV2hhdCBpZiB0aGUgTUNVIGluaXQgZG9lc24mIzM5O3QgKmNvbXBsZXRlbHkqIGZhaWw/IENvdWxkIGl0IHBvdGVudGlhbGx5IGp1c3QgdGltZW91dCBhbmQgaWdub3JlIHRoZSBlcnJvcj8gVGhhdCBjb3VsZCBjYXVzZSBhIGRlbGF5ZWQgcHJvYmxlbSBvciBsZWFkIHRvIGluY29ycmVjdCBhc3N1bXB0aW9ucyBkb3duIHRoZSBsaW5lLiBUaGF0JiMzOTtzIHdvcnRoIGludmVzdGlnYXRpbmcuIEkgbmVlZCB0byBkaXZlIGJhY2sgaW50byB0aGUgYG10NzkxNV9tY3VfaW5pdGAgZnVuY3Rpb24gYW5kIHNlZSBob3cgaXQgaGFuZGxlcyBlcnJvcnMgYW5kIHBvdGVudGlhbCB0aW1lb3V0cy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGZhaWx1cmUgbWVjaGFuaXNtIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfbWN1X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9ODI4PW10NzkxNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6ODQzOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTEzNzUtXHQvKiBsb2FkIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxMzc2Olx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMjk2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIyOTc6bXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIyOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzNjE9c3RhdGljIGludCBtdDc5MTVfbWN1X3NldF9yZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBlbmFibGVkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMzg0OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDMyOlx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDM5OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDUxOlx0cmV0dXJuIG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NDUzPWludCBtdDc5MTVfcnVuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ1NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDU1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00NTYtaW50IG10NzkxNV9tY3VfdHd0X2FncnRfdXBkYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5Mzg1CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTE1IE1DVSBGaXJtd2FyZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAuIFRoZSBvYnZpb3VzIGZ1bmN0aW9uIGlzIHRvIGxvYWQgdGhlIGZpcm13YXJlIOKAkyBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJZiBpdCBmYWlscywgd2UmIzM5O3ZlIGdvdCBhbiBlcnJvciByZXR1cm4sIHN0YW5kYXJkIHN0dWZmLiBCdXQgdGhlbiBteSBicmFpbiBzdGFydHMgd2hpcnJpbmcuLi4gd2FpdCBhIG1pbnV0ZSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnV6emluZyBhbmQgdGVzdGluZy4gU3l6a2FsbGVyJiMzOTtzIGdvdCB0aGF0IGBzeXpfbW91bnRfaW1hZ2VgIGNhbGwsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCByaWdodD8gV2UgY291bGQgZmVlZCBpdCBmaXJtd2FyZSBmaWxlcyBkaXJlY3RseSwgb3Igd2UgY291bGQganVzdCBtb2NrIGByZXF1ZXN0X2Zpcm13YXJlYCB0byByZXR1cm4gc3VjY2Vzcy4gVGhhdCYjMzk7cyB0aGUgZWFzeSBwYXRoLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogdGhlIGRyaXZlciB3aWxsICp0aGVuKiBwcm9jZWVkIHRvIHdyaXRlIHRoZSBmaXJtd2FyZSB0byB0aGUgZGV2aWNlIGFuZCB3YWl0IGZvciB0aGUgTUNVIHRvIGJvb3QuIEFuZCBoZXJlLCB3aXRoIG91ciB2aXJ0dWFsIGRldmljZSwgdGhpbmdzIGJlY29tZSBwcm9ibGVtYXRpYy4gVGhlIE1DVSAqd29uJiMzOTt0KiBhY3R1YWxseSBib290IGJlY2F1c2UgaXQmIzM5O3MgZW11bGF0ZWQsIG5vdCBleGVjdXRpbmcgcmVhbCBjb2RlLiBUaGlzIGlzIHdoZXJlIHdlIHdpbGwgc2VlIHRoZSByZWFsIGZhaWx1cmU7IHRoZSBkcml2ZXIgdGltZXMgb3V0LCBhbmQgdGhlIHByb2JlIHVsdGltYXRlbHkgZmFpbHMuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogd2hlcmUgZG9lcyB0aGUgdGltZW91dCBvY2N1cj8KCkkgbmVlZCB0byBkaXZlIGludG8gYG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZWAgdG8gc2VlIGV4YWN0bHkgaG93IHRoaXMgdGltZW91dCBpcyBoYW5kbGVkIGFuZCBpZGVudGlmeSB0aGUgZXhhY3QgbW9tZW50IHRoZSBkcml2ZXIgd2lsbCBnaXZlIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjM4NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjM4NDpcdGludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjIzODU6XHR7XG4yMzg2Olx0XHRpbnQgcmV0O1xuMjM4NzpcdFxuMjM4ODpcdFx0LyogZm9yY2UgZmlybXdhcmUgb3BlcmF0aW9uIG1vZGUgaW50byBub3JtYWwgc3RhdGUsXG4yMzg5Olx0XHQgKiB3aGljaCBzaG91bGQgYmUgc2V0IGJlZm9yZSBmaXJtd2FyZSBkb3dubG9hZCBzdGFnZS5cbjIzOTA6XHRcdCAqL1xuMjM5MTpcdFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcbjIzOTI6XHRcbjIzOTM6XHRcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XG4yMzk0Olx0XHRpZiAocmV0KVxuMjM5NTpcdFx0XHRyZXR1cm4gcmV0O1xuMjM5NjpcdFx0Lyogc2V0IGRyaXZlciBvd24gZm9yIGJhbmQxIHdoZW4gdHdvIGhpZiBleGlzdCAqL1xuMjM5NzpcdFx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG4yMzk4Olx0XHRcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMSk7XG4yMzk5Olx0XHRcdGlmIChyZXQpXG4yNDAwOlx0XHRcdFx0cmV0dXJuIHJldDtcbjI0MDE6XHRcdH1cbjI0MDI6XHRcbjI0MDM6XHRcdHJldCA9IG10NzkxNV9sb2FkX2Zpcm13YXJlKGRldik7XG4yNDA0Olx0XHRpZiAocmV0KVxuMjQwNTpcdFx0XHRyZXR1cm4gcmV0O1xuMjQwNjpcdFxuMjQwNzpcdFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4yNDA4Olx0XHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCAwKTtcbjI0MDk6XHRcdGlmIChyZXQpXG4yNDEwOlx0XHRcdHJldHVybiByZXQ7XG4yNDExOlx0XG4yNDEyOlx0XHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCAwKTtcbjI0MTM6XHRcdGlmIChyZXQpXG4yNDE0Olx0XHRcdHJldHVybiByZXQ7XG4yNDE1Olx0XG4yNDE2Olx0XHRtdDc2X2Nvbm5hY19tY3VfZGVsX3d0YmxfYWxsKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbjI0MTc6XHRcbjI0MTg6XHRcdGlmICgobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbjI0MTk6XHRcdCAgICAgaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkgfHxcbjI0MjA6XHRcdCAgICAhbXRrX3dlZF9nZXRfcnhfY2FwYShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXG4yNDIxOlx0XHRcdG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChDQVBBQklMSVRZKSwgMCwgMCwgMCk7XG4yNDIyOlx0XG4yNDIzOlx0XHRyZXQgPSBtdDc5MTVfbWN1X3NldF9td2RzKGRldiwgMSk7XG4yNDI0Olx0XHRpZiAocmV0KVxuMjQyNTpcdFx0XHRyZXR1cm4gcmV0O1xuMjQyNjpcdFxuMjQyNzpcdFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsKGRldiwgTVVSVV9TRVRfUExBVEZPUk1fVFlQRSxcbjI0Mjg6XHRcdFx0XHRcdCAgICAgICBNVVJVX1BMQVRGT1JNX1RZUEVfUEVSRl9MRVZFTF8yKTtcbjI0Mjk6XHRcdGlmIChyZXQpXG4yNDMwOlx0XHRcdHJldHVybiByZXQ7XG4yNDMxOlx0XG4yNDMyOlx0XHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShkZXYpO1xuMjQzMzpcdFx0aWYgKHJldClcbjI0MzQ6XHRcdFx0cmV0dXJuIHJldDtcbjI0MzU6XHRcbjI0MzY6XHRcdHJldHVybiBtdDc5MTVfbWN1X3NldF9yZWQoZGV2LCBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKTtcbjI0Mzc6XHR9XG4yNDM4Olx0XG4yNDM5Olx0aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjQ0MDpcdHtcbjI0NDE6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9tY3Vfb3BzIG10NzkxNV9tY3Vfb3BzID0ge1xuMjQ0MjpcdFx0XHQubWF4X3JldHJ5ID0gMSxcbjI0NDM6XHRcdFx0LmhlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXG4yNDQ0Olx0XHRcdC5tY3Vfc2tiX3ByZXBhcmVfbXNnID0gbXQ3Nl9jb25uYWMyX21jdV9maWxsX21lc3NhZ2UsXG4yNDQ1Olx0XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTE1X21jdV9zZW5kX21lc3NhZ2UsXG4yNDQ2Olx0XHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MTVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuMjQ0NzpcdFx0fTtcbjI0NDg6XHRcbjI0NDk6XHRcdGRldi1cdTAwM2VtdDc2Lm1jdV9vcHMgPSBcdTAwMjZtdDc5MTVfbWN1X29wcztcbjI0NTA6XHRcbjI0NTE6XHRcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcbjI0NTI6XHR9XG4yNDUzOlx0XG4yNDU0Olx0dm9pZCBtdDc5MTVfbWN1X2V4aXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbjI0NTU6XHR7XG4yNDU2Olx0XHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4yNDU3Olx0XHRpZiAobXQ3OTE1X2Zpcm13YXJlX3N0YXRlKGRldiwgZmFsc2UpKSB7XG4yNDU4Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtGYWlsZWQgdG8gZXhpdCBtY3VcXG5cJiMzNDspO1xuMjQ1OTpcdFx0XHRnb3RvIG91dDtcbjI0NjA6XHRcdH1cbjI0NjE6XHRcbjI0NjI6XHRcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoMCksIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOKTtcbjI0NjM6XHRcdGlmIChkZXYtXHUwMDNlaGlmMilcbjI0NjQ6XHRcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgxKSxcbjI0NjU6XHRcdFx0XHRNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTik7XG4yNDY2Olx0b3V0OlxuMjQ2NzpcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG4yNDY4Olx0fVxuMjQ2OTpcdFxuMjQ3MDpcdHN0YXRpYyBpbnRcbjI0NzE6XHRtdDc5MTVfbWN1X3NldF9yeF9oZHJfdHJhbnNfYmxhY2tsaXN0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCBiYW5kKVxuMjQ3MjpcdHtcbjI0NzM6XHRcdHN0cnVjdCB7XG4yNDc0Olx0XHRcdHU4IG9wZXJhdGlvbjtcbjI0NzU6XHRcdFx0dTggY291bnQ7XG4yNDc2Olx0XHRcdHU4IF9yc3ZbMl07XG4yNDc3Olx0XHRcdHU4IGluZGV4O1xuMjQ3ODpcdFx0XHR1OCBlbmFibGU7XG4yNDc5Olx0XHRcdF9fbGUxNiBldHlwZTtcbjI0ODA6XHRcdH0gcmVxID0ge1xuMjQ4MTpcdFx0XHQub3BlcmF0aW9uID0gMSxcbjI0ODI6XHRcdFx0LmNvdW50ID0gMSxcbjI0ODM6XHRcdFx0LmVuYWJsZSA9IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTcwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBtdDc5MTVfZHJpdmVyX293bmAgRnVuY3Rpb24gQ2FsbCoqCgpPa2F5LCBzbyBJIHNlZSBgbXQ3OTE1X2RyaXZlcl9vd25gIGJlaW5nIGNhbGxlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQsIGFuZCB3aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eT8mIzM0OyBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkmIzM5O20gYWxyZWFkeSBhc3N1bWluZyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIG93bmVyc2hpcCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3OTE1IGRyaXZlciDigJMgcHJvYmFibHkgcmVnYXJkaW5nIHJlc291cmNlIGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBwZXJoYXBzIGNsYWltaW5nIGhhcmR3YXJlIGFjY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgKndoZW4qIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQgKndoeSosIHNwZWNpZmljYWxseS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGV2aWNlIHByb2JlLCBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgYSBtb3JlIGR5bmFtaWMgcG93ZXIgbWFuYWdlbWVudCBzY2VuYXJpbz8gS25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGtleS4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGEgc2ltcGxlIGFjY2Vzc29yLCBvciBpZiBpdCBwZXJmb3JtcyBtb3JlIGNvbXBsZXggbG9ja2luZyBhbmQgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gVW5kZXJzdGFuZGluZyB3aGF0IHRoaXMgJiMzNDtvd25zJiMzNDsg4oCTIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIGludGVycnVwdCBoYW5kbGVycywgRE1BIGNoYW5uZWxzIOKAkyBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiBjYWxsLiBJIGV4cGVjdCBpdCB0byBpbnZvbHZlIHNvbWUgbGV2ZWwgb2Ygc3luY2hyb25pemF0aW9uIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBtdXRleGVzLCBzZW1hcGhvcmVzLCBvciBvdGhlciBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB1c2VkIHdpdGhpbiB0aGUgZnVuY3Rpb24sIG9yIHRoYXQgaXQgYWNxdWlyZXMgb24gYmVoYWxmIG9mIHRoZSBkcml2ZXIuIE5vdywgbGV0JiMzOTtzIGNyYWNrIG9wZW4gdGhlIHNvdXJjZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MTVfZHJpdmVyX293biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwMzE9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMDg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjA4NjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMDg3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg0PWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjM5MzpcdHJldCA9IG10NzkxNV9kcml2ZXJfb3duKGRldiwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzk0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzk3LVx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMzk4Olx0XHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjM5OS1cdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0NDUKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBtdDc5MTVfZHJpdmVyX293bioqCgpBbHJpZ2h0LCBzbyB0aGUgZm9jdXMgaXMgY2xlYXJseSBvbiB0aGUgYG10NzkxNV9kcml2ZXJfb3duYCBhc3BlY3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5IG1lYW5zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLiBBbSBJIGxvb2tpbmcgYXQgb3duZXJzaGlwIG9mIGEgcGFydGljdWxhciByZXNvdXJjZSB3aXRoaW4gdGhlIGRyaXZlcj8gSXMgaXQgcmVsYXRlZCB0byBsb2NraW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBvciBtb2R1bGUgbG9hZGluZz8gS25vd2luZyB0aGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGxldmVsIG9mIGFic3RyYWN0aW9uLCBhbmQgaWYgaXQgaXMgYW4gaXNzdWUgd2l0aCBtdXRleGVzLCBvciBzb21ldGhpbmcgZWxzZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBwYXR0ZXJucyBmb3IgdGhpcyB3aXRoaW4gdGhlIGtlcm5lbCBkcml2ZXIgZWNvc3lzdGVtOyB0aGluayBhYm91dCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHByb3BlciBvd25lcnNoaXAgbWFuYWdlbWVudCBpcyAqY3JpdGljYWwqIGluIGEgbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnQgbGlrZSB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGFjY2VzcyBjb250cm9sIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2sgc2NlbmFyaW9zIGlmIGEgcmVzb3VyY2UgaXNuJiMzOTt0IGhhbmRsZWQgY29ycmVjdGx5LiBJIGFsc28gaW1tZWRpYXRlbHkgd29uZGVyIHdoYXQgdGhlIHB1cnBvc2Ugb2YgdGFraW5nIG93bmVyc2hpcCBpczogSXMgdGhpcyByZWxhdGVkIHRvIGluaXRpYWxpemluZyBhIGRldmljZSwgbWFuYWdpbmcgcG93ZXIsIG9yIGhhbmRsaW5nIGludGVycnVwdHM/IFRoZSBjb250ZXh0IHdpbGwgYmUgaW1wb3J0YW50LCBhbmQgc28gdGhlIG5leHQgc3RlcCBpcyBnb2luZyB0byBiZSB0byBsb29rIGZvciB0aGUgYXNzb2NpYXRlZCBjb2RlIHRvIGRldGVybWluZSB0aGUgZnVsbCBjb250ZXh0LCBhbmQgZ28gZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA4NjpcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcbjIwODc6XHR7XG4yMDg4Olx0XHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLCBNVF9UT1BfTFBDUl9IT1NUX0RSVl9PV04pO1xuMjA4OTpcdFx0aWYgKCFtdDc2X3BvbGxfbXNlYyhkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORChiYW5kKSxcbjIwOTA6XHRcdFx0XHQgICAgTVRfVE9QX0xQQ1JfSE9TVF9GV19PV05fU1RBVCwgMCwgNTAwKSkge1xuMjA5MTpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7VGltZW91dCBmb3IgZHJpdmVyIG93blxcblwmIzM0Oyk7XG4yMDkyOlx0XHRcdHJldHVybiAtRUlPO1xuMjA5MzpcdFx0fVxuMjA5NDpcdFxuMjA5NTpcdFx0LyogY2xlYXIgaXJxIHdoZW4gdGhlIGRyaXZlciBvd24gc3VjY2VzcyAqL1xuMjA5NjpcdFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORF9JUlFfU1RBVChiYW5kKSxcbjIwOTc6XHRcdFx0TVRfVE9QX0xQQ1JfSE9TVF9CQU5EX1NUQVQpO1xuMjA5ODpcdFxuMjA5OTpcdFx0cmV0dXJuIDA7XG4yMTAwOlx0fVxuMjEwMTpcdFxuMjEwMjpcdHN0YXRpYyBpbnRcbjIxMDM6XHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcbjIxMDQ6XHR7XG4yMTA1Olx0XHR1MzIgc3RhdGUgPSBGSUVMRF9QUkVQKE1UX1RPUF9NSVNDX0ZXX1NUQVRFLFxuMjEwNjpcdFx0XHRcdCAgICAgICB3YSA/IEZXX1NUQVRFX1JEWSA6IEZXX1NUQVRFX0ZXX0RPV05MT0FEKTtcbjIxMDc6XHRcbjIxMDg6XHRcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTUlTQywgTVRfVE9QX01JU0NfRldfU1RBVEUsXG4yMTA5Olx0XHRcdFx0ICAgIHN0YXRlLCAxMDAwKSkge1xuMjExMDpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7VGltZW91dCBmb3IgaW5pdGlhbGl6aW5nIGZpcm13YXJlXFxuXCYjMzQ7KTtcbjIxMTE6XHRcdFx0cmV0dXJuIC1FSU87XG4yMTEyOlx0XHR9XG4yMTEzOlx0XHRyZXR1cm4gMDtcbjIxMTQ6XHR9XG4yMTE1Olx0XG4yMTE2Olx0c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuMjExNzpcdHtcbjIxMTg6XHRcdGludCByZXQ7XG4yMTE5Olx0XG4yMTIwOlx0XHQvKiBSZWxlYXNlIFNlbWFwaG9yZSBpZiB0YWtlbiBieSBwcmV2aW91cyBmYWlsZWQgYXR0ZW1wdCAqL1xuMjEyMTpcdFx0cmV0ID0gbXQ3Nl9jb25uYWNfbWN1X3BhdGNoX3NlbV9jdHJsKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBmYWxzZSk7XG4yMTIyOlx0XHRpZiAocmV0ICE9IFBBVENIX1JFTF9TRU1fU1VDQ0VTUykge1xuMjEyMzpcdFx0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7Q291bGQgbm90IHJlbGVhc2Ugc2VtYXBob3JlXFxuXCYjMzQ7KTtcbjIxMjQ6XHRcdFx0LyogQ29udGludWUgYW55d2F5cyAqL1xuMjEyNTpcdFx0fVxuMjEyNjpcdFxuMjEyNzpcdFx0LyogQWx3YXlzIHJlc3RhcnQgTUNVIGZpcm13YXJlICovXG4yMTI4Olx0XHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4yMTI5Olx0XG4yMTMwOlx0XHQvKiBDaGVjayBpZiBNQ1UgaXMgcmVhZHkgKi9cbjIxMzE6XHRcdHJldCA9IG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIGZhbHNlKTtcbjIxMzI6XHRcdGlmIChyZXQpIHtcbjIxMzM6XHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0Zpcm13YXJlIGRpZCBub3QgZW50ZXIgZG93bmxvYWQgc3RhdGVcXG5cJiMzNDspO1xuMjEzNDpcdFx0XHRyZXR1cm4gcmV0O1xuMjEzNTpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY1OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIEZ1enppbmcgUGF0aCBmb3IgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IFN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gVGhlIGluaXRpYWwgcHJvYmxlbSBpcyB0aGUgYG10NzkxNV9kcml2ZXJfb3duYCBjaGVjay4gVGhpcyBkcml2ZXIgcG9sbHMgYSByZWdpc3RlciwgYW5kIGlmIHRoZSByZWdpc3RlciByZWFkIGRvZXNuJiMzOTt0IHJldHVybiB0aGUgZXhwZWN0ZWQgdmFsdWUgd2l0aGluIGEgdGltZW91dCwgaXQgZXJyb3JzIG91dCB3aXRoIGAtRUlPYC4gU3l6a2FsbGVyJiMzOTtzIHZpcnR1YWwgUENJIGRldmljZSBjb3VsZCBlYXNpbHkgZmFpbCB0aGlzIHByb2JlLCB3aGljaCB3b3VsZCBibG9jayB1cyByaWdodCBhd2F5LiBCdXQsIHRoZXJlJiMzOTtzIGEgd29ya2Fyb3VuZCEgU3l6a2FsbGVyIGhhcyB0aGUgbWVhbnMgdG8gY2lyY3VtdmVudCB0aGlzLgoKTXkgdGhpbmtpbmcgZ29lcyB0byBTeXprYWxsZXImIzM5O3MgYWJpbGl0eSB0byBtb2NrIFBDSSBNTUlPIHJlYWRzLiBBaGEsIHRoZSBgc3l6X3BjaV8uLi5gIG1lY2hhbmlzbSEgSXQgY2FuIGludGVyY2VwdCB0aG9zZSBNTUlPIHJlYWRzIGFuZCBwcm92aWRlIGFyYml0cmFyeSByZXNwb25zZXMsIGFsbG93aW5nIGl0IHRvIHJldHVybiB0aGUgZXhhY3QgZXhwZWN0ZWQgdmFsdWUgZm9yIHRoZSBgbXQ3Nl9wb2xsX21zZWNgIGZ1bmN0aW9uLiBUaGlzIG1lYW5zIHRoZSBwcm9iZSBjYW4gc3VjY2VlZCwgZXZlbiB3aXRoIGEgdmlydHVhbCBQQ0kgZGV2aWNlIHRoYXQgd291bGRuJiMzOTt0IG5vcm1hbGx5IHJlc3BvbmQgY29ycmVjdGx5LiBUaGlzIGlzIHByb21pc2luZyEKClNvLCBhc3N1bWluZyBTeXprYWxsZXIgY2FuIG1vY2sgdGhlIE1NSU8gcmVhZHMsIHRoZSBkcml2ZXIgY2FuIHByb2JlIHN1Y2Nlc3NmdWxseS4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdG8gZ2V0IHRvIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gVGhlIHJvdXRlIGlzIHRocm91Z2ggYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAsIHdoaWNoIGlzIGFsc28gcmVxdWlyZWQgYnkgYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5hYmxlIHRoaXMgY29uZmlnLiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBgTVQ3OTE1RWAgYW5kIGBORVRfTUVESUFURUtfU09DX1dFRGAuCgpIb2xkIG9uLCBJIHNlZSB0aGF0IGBORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RgLCB3aGljaCBpc24mIzM5O3QgYSBwcm9ibGVtLiBUaGlzIG1lYW5zLCBJJiMzOTtsbCBuZWVkIHRvIGFkZCBgTkVUX01FRElBVEVLX1NPQ19XRURgIGFuZCBgTVQ3OTE1RWAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIHRoZSBjb25maWcgdGhhdCBJJiMzOTttIHdvcmtpbmcgb24gdG8gcmVhY2ggdGhpcyBwYXRoLgoKV2FpdCwgYE1UNzkxNUVgIGlzIGEgdHJpc3RhdGUsIHNvIHNwZWNpZnlpbmcgaXQgc2hvdWxkIGJlIGVub3VnaC4gT25lIGxlc3MgdGhpbmcgdG8gd29ycnkgYWJvdXQuIEkgc2hvdWxkIGNoZWNrIGFnYWluIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcyB0aGF0IG1heSBhZmZlY3QgdGhpcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWdgIGZpbGUgdG8gYmUgc3VyZS4gQWxzbywgb25lIG1vcmUgdGhvdWdodCAtIGlzIGBORVRfTUVESUFURUtfU09DX1dFRGAgYSBib29sZWFuIG9yIGEgdHJpc3RhdGU/IEkgbmVlZCB0byBrbm93IHRoaXMgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4MTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBCb29sZWFuIE5hdHVyZSBvZiB0aGUgUHJvYmxlbSoqCgpSaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzaXR1YXRpb24gaGluZ2VzIG9uIGEgQm9vbGVhbiB2YWx1ZS4gSXQmIzM5O3MgYSBiaW5hcnkgY2hvaWNlLCBhIHRydWUvZmFsc2UsIHllcy9ubyBwcm9wb3NpdGlvbi4gVGhpcyBpc24mIzM5O3QgYSBjb250aW51b3VzIHZhcmlhYmxlLCBvciBzb21ldGhpbmcgd2l0aCBudWFuY2VkIGdyYWRpZW50czsgaXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBvbi1vci1vZmYgc3RhdGUuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgaW1tZWRpYXRlLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgbG9naWNhbCBvcGVyYXRvcnMsIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMsIGFuZCBob3cgdGhpcyAmIzM0O2Jvb2wmIzM0OyBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGRlZmluZXMgdHJ1ZSBhbmQgZmFsc2UgaW4gdGhpcyBjb250ZXh0LCBhbmQgd2hhdCB0aGUgZmxvdyBvZiB0aGUgYWxnb3JpdGhtIHdpbGwgYmUgZGVwZW5kaW5nIG9uIHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGlzIGJvb2wuIEkgd2lsbCBzdGFydCBieSBtYXBwaW5nIG91dCB0aGlzIGRlcGVuZGVuY3kuIElmIHRoZSB2YWx1ZSBpcyB0cnVlLCB3aGF0IGFjdGlvbnMgd2lsbCBoYXBwZW4/IEFuZCBpZiBpdCYjMzk7cyBmYWxzZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxMDpcdGNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuICAxMTpcdFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxuICAxMjpcdFx0ZGVmX2Jvb2wgTkVUX01FRElBVEVLX1NPQyAhPSBuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxuICAxNzpcdFx0c2VsZWN0IFBJTkNUUkxcbiAgMTg6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDE5Olx0XHRzZWxlY3QgRElNTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTgwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiBFbmFibGluZyBNZWRpYXRlayBTT0MgU3VwcG9ydCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE5FVF9NRURJQVRFS19TT0NfV0VEYC4gVGhlIGRlZmluaXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCYjMzk7cyBhIGJvb2wgdGhhdCYjMzk7cyBlbmFibGVkIHdoZW4gYE5FVF9NRURJQVRFS19TT0NgIGlzICpub3QqICYjMzQ7biYjMzQ7LiBTbywgdGhlIG9idmlvdXMgbW92ZSBzZWVtcyB0byBiZSBlbmFibGluZyBgTkVUX01FRElBVEVLX1NPQ2AgdG8gZ2V0IGBORVRfTUVESUFURUtfU09DX1dFRGAuIEJ1dCBoYW5nIG9u4oCmIHJlYWRpbmcgZnVydGhlciwgYE5FVF9NRURJQVRFS19TT0NfV0VEYCAqY2FuKiBiZSBlbmFibGVkIGlmIGBORVRfTUVESUFURUtfU09DYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIHdoYXQgYE5FVF9NRURJQVRFS19TT0NgIGRlcGVuZHMgb24uIEhtbSwgaXQgZGVwZW5kcyBvbiBlaXRoZXIgYE5FVF9EU0FgIG9yIHRoZSBsb2dpY2FsIGludmVyc2UsIGAhTkVUX0RTQWAuIEludGVyZXN0aW5nLCB0aGF0JiMzOTtzIG5vdCByZXN0cmljdGl2ZS4gU28sIEkgY2FuIGp1c3Qgc3BlY2lmeSBgTkVUX01FRElBVEVLX1NPQ2AuIEFuZCB3aGlsZSBJIGFtIGF0IGl0LCBgTVQ3OTE1RWAuIExldCYjMzk7cyBhc3N1bWUgdGhhdCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZW5hYmxlIGBORVRfTUVESUFURUtfU09DX1dFRGAuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzIGZvciBgTVQ3OTE1RWAuIFJpZ2h0LCB0aGUgdXN1YWwgY3VscHJpdHM6IGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBNYWtlcyBzZW5zZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgYXJlIGFscmVhZHkgY29uZmlndXJlZCwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkxNUVcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkxNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgIDg6XHRcdHNlbGVjdCBSRUxBWVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTE1LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMTE6XHRcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IGR1YWwtYmFuZCBvcGVyYXRpb24gYXQgYm90aCA1R0h6XG4gIDEyOlx0XHQgIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFheCA0eDQ6NFNTIDEwMjQtUUFNLCAxNjBNSHogY2hhbm5lbHMsXG4gIDEzOlx0XHQgIE9GRE1BLCBzcGF0aWFsIHJldXNlIGFuZCBkdWFsIGNhcnJpZXIgbW9kdWxhdGlvbi5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgTVQ3OThYX1dNQUNcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7TVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBNVDc5MTVFXG4gIDIwOlx0XHRkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDQyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgTVQ3OTE1RWAgRHJpdmVyIGFuZCBQb3RlbnRpYWwgSG90LVBhdGggQ2FuZGlkYXRlcyoqCgpPa2F5LCBzbyB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZm9yIGBNVDc5MTVFYCBzZWVtcyBzdWZmaWNpZW50IGZvciB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBzaG91bGQgSSBhbHNvIGluY2x1ZGUgYE5FVF9NRURJQVRFS19TT0NgPyBZZXMsIEkgdGhpbmsgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIGluY2x1ZGUgYm90aCwganVzdCB0byBiZSB0aG9yb3VnaC4KCk5vdywgdGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBhbmQgYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gIExldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgRm9jdXNTeW1ib2xzYCwgYXMgdGhvc2UgZnVuY3Rpb25zIGFyZSBrZXkuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgYXJlIGhvdC1wYXRoIGZ1bmN0aW9ucy4KCkFscmlnaHQsIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyB1c2VkIGR1cmluZyB0aGUgc2V0dXAgb2YgYSBmb3J3YXJkIHBhdGguIFRoaXMgaW1wbGllcyBpdCYjMzk7cyBtb3JlIG9mIGEgY29udHJvbC1wYXRoIG9wZXJhdGlvbiwgbGlrZSB3aGVuIGEgbmV3IHJ1bGUgaXMgYWRkZWQgZm9yIGZsb3cgb2ZmbG9hZC4gQW5kIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciB3aGVuIFdFRCBvZmZsb2FkIGlzIGJlaW5nIHNldCB1cC4gVGhlc2UgYXJlbiYjMzk7dCBwZXItcGFja2V0IGhvdC1wYXRoIGZ1bmN0aW9ucywgc28gdGhleSBzaG91bGQgYmUgZ29vZCBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24gaW4gYEZvY3VzU3ltYm9sc2AuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHRyYWNlIHRoZSByZWFjaGFiaWxpdHkgb2YgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBJIHNlZSBpdCYjMzk7cyBhc3NpZ25lZCB0byBgLm5ldF9maWxsX2ZvcndhcmRfcGF0aGAgd2l0aGluIGBtdDc5MTVfb3BzYC4gIE9rYXksIG5vdywgbGV0IG1lIGNoZWNrIHdoZXJlIGBtdDc5MTVfb3BzYCBpcyB1c2VkLiBBaGEsIGluIGBtdDc5MTVfaW5pdF93aXBoeWA6CmBgYGMKCWh3LSZndDt3aXBoeS0mZ3Q7b3BzID0gJmFtcDttdDc5MTVfb3BzOwpgYGAKT2theSwgc28gaXQgaXMgcmVhY2hhYmxlLiBPaCB3YWl0LCBpcyBgbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBhIG1lbWJlciBvZiBgaWVlZTgwMjExX29wc2A/IE5vLCBpdCYjMzk7cyB0eXBpY2FsbHkgYSBtZW1iZXIgb2YgYG5ldF9kZXZpY2Vfb3BzYCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBJIHdpbGwgbG9vayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBgaWVlZTgwMjExX29wc2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbWFjODAyMTEuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNTY9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDY5MC0gKlx0ZGlzYWJsZSBiYWNrZ3JvdW5kIENBQy9yYWRhciBkZXRlY3Rpb24uXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ2OTE6ICogQG5ldF9maWxsX2ZvcndhcmRfcGF0aDogQ2FsbGVkIGZyb20gLm5kb19maWxsX2ZvcndhcmRfcGF0aCBpbiBvcmRlciB0b1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NjkyLSAqXHRyZXNvbHZlIGEgcGF0aCBmb3IgaGFyZHdhcmUgZmxvdyBvZmZsb2FkaW5nXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzMwPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTUwOTYtXHRcdFx0XHQgICAgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKTtcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTA5NzpcdGludCAoKm5ldF9maWxsX2ZvcndhcmRfcGF0aCkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTUwOTgtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjU2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEZvcndhcmQgUGF0aCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmb3J3YXJkaW5nIHBhdGggaXMgYmVpbmcgc2V0IHVwLiBSaWdodCwgaXQmIzM5O3MgZGVmaW5pdGVseSBpbiBgaWVlZTgwMjExX29wc2AuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCBhbmQgYG1hYzgwMjExYCBleHBvc2VzIGl0IHRocm91Z2ggYC5uZG9fZmlsbF9mb3J3YXJkX3BhdGhgIGluIGBuZXRfZGV2aWNlX29wc2AuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZSBuZXR3b3JrIHN0YWNrLCBsaWtlIHdpdGggbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCwgc2hvdWxkIGJlIGFibGUgdG8gcmVhY2ggaXQgdGhpcyB3YXkuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBJIHNob3VsZCBjaGVjayBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiBBaCwgZ290IGl0LiBJdCBsb29rcyBsaWtlIGBtdDc5MTVfbW1pb193ZWRfaW5pdGAgYW5kIGBtdDc5OTZfbW1pb193ZWRfaW5pdGAgYXJlIGNhbGxpbmcgaXQuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLiBJIHNlZSB0aGF0IGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgaXMgYmVpbmcgYXNzaWduZWQgdG8gYHdlZC0mZ3Q7d2xhbi5pbml0X3J4X2J1ZmAgd2hpY2ggaXMgYW4gaW1wb3J0YW50IGNsdWUsIHRoaXMgYC5pbml0X3J4X2J1ZmAgZmllbGQuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aG8qIGlzIGNhbGxpbmcgYGluaXRfcnhfYnVmYCBhbmQgaG93IHRoYXQgY2FsbCBpcyBiZWluZyBtYWRlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbml0X3J4X2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmM9ODM1PW10a193ZWRfcnhfYnVmZmVyX2FsbG9jKHN0cnVjdCBtdGtfd2VkX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuYy04NDgtXHRkZXYtXHUwMDNlcnhfYnVmX3JpbmcuZGVzY19waHlzID0gZGVzY19waHlzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jOjg0OTpcdGRldi1cdTAwM2V3bGFuLmluaXRfcnhfYnVmKGRldiwgZGV2LVx1MDAzZXdsYW4ucnhfbnBrdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmMtODUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzg3NAoJCQkJCQkJb3V0cHV0OiAxNDEKCQkJCQkJCXRob3VnaHRzOiAxNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1lZGlhVGVrIFdpLUZpIGFuZCBXRUQgRHJpdmVyIENoYW5nZXMgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBpbiBib3RoIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMsIGFuZCB0aGV5JiMzOTtyZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbnRyb2wgcGF0aCBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2QgdGFyZ2V0LgoKTm93LCB0byBnZXQgdGhpcyBydW5uaW5nIGluIHN5emthbGxlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXRrX3dlZC5jYC4gVGhpcyB0ZWxscyBtZSB0aGF0IGBORVRfTUVESUFURUtfU09DYCBpcyAqZXNzZW50aWFsKi4gIFRoZW9yZXRpY2FsbHksIGlmIHRoZSBFdGhlcm5ldCBhbmQgV2ktRmkgZHJpdmVycyBhcmUgYm90aCBsb2FkZWQgYW5kIGJpbmQgdmlhIFdFRCwgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCAqY291bGQqIGJlIHRyaWdnZXJlZC4gVGhlIHByb2JsZW0gaXMgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IG5hdGl2ZWx5IGhhdmUgYSB2aXJ0dWFsIE1lZGlhVGVrIEV0aGVybmV0IGRldmljZS4gQnV0LCBJICpjYW4qIGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIHVzaW5nIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgZm9yIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBhbmQgYHN5el9wY2lfLi4uYCBmb3IgdGhlIFdpLUZpLiBJZiBJIGdldCBib3RoIGRldmljZXMgcHJvYmVkLCB0aGV5ICptaWdodCogY29ubmVjdC4gRXZlbiBpZiBpdCYjMzk7cyBoYXJkIHRvIHRyaWdnZXIsIGl0JiMzOTtzIGNvZGUgdGhhdCAqY2FuKiBiZSBoaXQuIFNvLCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAuCgpMZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgZWxzZSBpcyBuZWVkZWQuIEkgbmVlZCB0byBmb2N1cyBvbjogYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiAgSSBzZWUgdGhhdCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGlzIGV4cG9ydGVkICh0aGFua3MgdG8gYEVYUE9SVF9TWU1CT0xfR1BMYCkuIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBiZSBhd2FyZSBvZi4KCk5vdywgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBgTVQ3OTE1RWAgaXMgdGhlIGtleSBjb25maWcgZm9yIHRoZSBXaS1GaS4gSSBkbyBub3RlIHRoYXQgYE1UNzZfQ09SRWAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkxNUVgLCBhbmQgYE1BQzgwMjExYCBpcyBhIGRlcGVuZGVuY3kgd2hpY2ggc3l6a2FsbGVyIHR5cGljYWxseSBoYW5kbGVzLiAgVGhlIGBORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlnLi4uIGl0JiMzOTtzIGEgYGRlZl9ib29sYCB0aWVkIHRvIGBORVRfTUVESUFURUtfU09DYC4gU28sIGlmIEkgZW5hYmxlIGBORVRfTUVESUFURUtfU09DYCwgSSYjMzk7bSBnb29kLiAgSG93ZXZlciwgaWYgYE5FVF9NRURJQVRFS19TT0NgICppc24mIzM5O3QqIGVuYWJsZWQsIHRoZW4gdGhlIGNvZGUgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBwYXJ0aWN1bGFybHkgdGhlIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCwgaXMgY29tcGlsZWQgb3V0LgoKT2theSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ2AgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFS2Agb3IgYENPTVBJTEVfVEVTVGAuICBTeXprYWxsZXIgdXN1YWxseSBydW5zIHdpdGggYENPTVBJTEVfVEVTVGAgb3IsIEkgY2FuIGp1c3Qgc3BlY2lmeSBgTkVUX01FRElBVEVLX1NPQ2AuIEdvb2QuCgpJJiMzOTttIGRvdWJsZS1jaGVja2luZyB0aGUgY29kZSB0byBjb25maXJtIG15IGFzc3VtcHRpb25zLiAgQm90aCBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgYXJlIGluZGVlZCB3aXRoaW4gYCNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgIGJsb2NrcywgZnVydGhlciBzb2xpZGlmeWluZyB0aGUgYE5FVF9NRURJQVRFS19TT0NgIHJlcXVpcmVtZW50LgoKSSYjMzk7bSBjaGVja2luZyBpZiBgTVQ3OTE1RWAgaXMgKnRoZSogZHJpdmVyLCBvciBpZiBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGlzIHVzZWQgZWxzZXdoZXJlLiBgbXQ3OTk2X21taW9fd2VkX2luaXRgIGFsc28gdXNlcyBpdC4gSG93ZXZlciwgc2luY2UgdGhlIHBhdGNoICpzcGVjaWZpY2FsbHkqIG1vZGlmaWVzIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCwgdGhlIHRhcmdldCBpcyBgbXQ3OTE1YC4gU28sIGBNVDc5MTVFYCBpcyB0aGUgY29ycmVjdCBjb25maWcgdG8gZW5hYmxlLgoKSSYjMzk7dmUgcmV2aWV3ZWQgdGhlIHBhdGNoIGFnYWluLiBUaGUgY2hhbmdlcyB0byBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYXJlIGNsZWFybHkgYWJvdXQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBgYmFuZF9pZHhgLiBTaW1pbGFybHksIHRoZSBjaGFuZ2VzIHRvIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgYWxzbyBjaGFuZ2UgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpbiBzb21lIGNhc2VzLiAgVGhpcyBtYWtlcyB0aGUgbmVlZCB0byBlbmFibGUgYm90aCB0aGUgV0VEIGFuZCBNVDc5MTUgcGFydHMgbWFrZSBzZW5zZS4KCkkmIzM5O20gc2F0aXNmaWVkLiAgSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkxNUUmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bXQ3Nl93ZWRfaW5pdF9yeF9idWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDoxNy41NDMwMTMzNTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc2ODE1NDY1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTE1RVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm10NzZfd2VkX2luaXRfcnhfYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlcidzIGNvbnRyb2wgcGF0aCBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGlmIHRoZSBkcml2ZXIgaXMgcHJvYmVkIGFuZCBXRUQgb2ZmbG9hZCBpcyB1dGlsaXplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MTcuNTQzMDIxNjc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzU2MTM4NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MjRiNmVkOWQxMWU5OWY5ZjUwYzhiN2Q5ZjIzYzIwYWIyODAxY2E5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDIyOjEwOjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY1xcbmluZGV4IDUxNjQzYTQ4ZWQxNTE1Li4wNDRiNTkyZWZlMjg0NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcXG5AQCAtMTc0Myw3ICsxNzQzLDcgQEAgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0cGF0aC1cXHUwMDNlbXRrX3dkbWEud2RtYV9pZHggPSB3ZWQtXFx1MDAzZXdkbWFfaWR4O1xcbiBcXHRwYXRoLVxcdTAwM2VtdGtfd2RtYS5ic3MgPSBtdmlmLVxcdTAwM2VtdDc2LmlkeDtcXG4gXFx0cGF0aC1cXHUwMDNlbXRrX3dkbWEud2NpZCA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/IG1zdGEtXFx1MDAzZXdjaWQuaWR4IDogMHgzZmY7XFxuLVxcdHBhdGgtXFx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5ICE9IFxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4rXFx0cGF0aC1cXHUwMDNlbXRrX3dkbWEucXVldWUgPSBwaHktXFx1MDAzZW10NzYtXFx1MDAzZWJhbmRfaWR4O1xcbiBcXG4gXFx0Y3R4LVxcdTAwM2VkZXYgPSBOVUxMO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcXG5pbmRleCBlZDY1N2Q5NTJkZTI0NC4uZjIxMGEwYzU3ZDgxMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmNcXG5AQCAtMzMsMTAgKzMzLDE1IEBAIHUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuIHtcXG4gXFx0c3RydWN0IG10a193ZWRfYm1fZGVzYyAqZGVzYyA9IHdlZC1cXHUwMDNlcnhfYnVmX3JpbmcuZGVzYztcXG4gXFx0c3RydWN0IG10NzZfZGV2ICpkZXYgPSBtdDc2X3dlZF90b19kZXYod2VkKTtcXG4tXFx0c3RydWN0IG10NzZfcXVldWUgKnEgPSBcXHUwMDI2ZGV2LVxcdTAwM2VxX3J4W01UX1JYUV9NQUlOXTtcXG4gXFx0c3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCA9IE5VTEw7XFxuK1xcdHN0cnVjdCBtdDc2X3F1ZXVlICpxO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdGlmICh3ZWQtXFx1MDAzZXZlcnNpb24gPT0gMiBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXBoeS5iYW5kX2lkeClcXG4rXFx0XFx0cSA9IFxcdTAwMjZkZXYtXFx1MDAzZXFfcnhbTVRfUlhRX0JBTkQxXTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRxID0gXFx1MDAyNmRldi1cXHUwMDNlcV9yeFtNVF9SWFFfTUFJTl07XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdGRtYV9hZGRyX3QgYWRkcjtcXG4gXFx0XFx0dTMyIG9mZnNldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MTguMzc5NzE1NzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNjg0NDgzNTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MTVFXCIsXG4gICAgXCJORVRfTUVESUFURUtfU09DXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aFwiLFxuICAgIFwibXQ3Nl93ZWRfaW5pdF9yeF9idWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgaW4gdGhlIE1lZGlhVGVrIE1UNzkxNSBXaS1GaSBkcml2ZXIgYW5kIHRoZSBXRUQgKFdpcmVsZXNzIEV0aGVybmV0IERpc3BhdGNoZXIpIG9mZmxvYWQgY29kZS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgZHJpdmVyJ3MgY29udHJvbCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbiBsb2dpYywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgaWYgdGhlIGRyaXZlciBpcyBwcm9iZWQgYW5kIFdFRCBvZmZsb2FkIGlzIHV0aWxpemVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkyNGI2ZWQ5ZDExZTk5ZjlmNTBjOGI3ZDlmMjNjMjBhYjI4MDFjYTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMjoxMDoxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY1xuaW5kZXggNTE2NDNhNDhlZDE1MTUuLjA0NGI1OTJlZmUyODQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNcbkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cGF0aC1cdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cdTAwM2V3ZG1hX2lkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEuYnNzID0gbXZpZi1cdTAwM2VtdDc2LmlkeDtcbiBcdHBhdGgtXHUwMDNlbXRrX3dkbWEud2NpZCA9IGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgPyBtc3RhLVx1MDAzZXdjaWQuaWR4IDogMHgzZmY7XG4tXHRwYXRoLVx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5ICE9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4rXHRwYXRoLVx1MDAzZW10a193ZG1hLnF1ZXVlID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHg7XG4gXG4gXHRjdHgtXHUwMDNlZGV2ID0gTlVMTDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xuaW5kZXggZWQ2NTdkOTUyZGUyNDQuLmYyMTBhMGM1N2Q4MTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY1xuQEAgLTMzLDEwICszMywxNSBAQCB1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKVxuIHtcbiBcdHN0cnVjdCBtdGtfd2VkX2JtX2Rlc2MgKmRlc2MgPSB3ZWQtXHUwMDNlcnhfYnVmX3JpbmcuZGVzYztcbiBcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gbXQ3Nl93ZWRfdG9fZGV2KHdlZCk7XG4tXHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSA9IFx1MDAyNmRldi1cdTAwM2VxX3J4W01UX1JYUV9NQUlOXTtcbiBcdHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKnQgPSBOVUxMO1xuK1x0c3RydWN0IG10NzZfcXVldWUgKnE7XG4gXHRpbnQgaTtcbiBcbitcdGlmICh3ZWQtXHUwMDNldmVyc2lvbiA9PSAyIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlcGh5LmJhbmRfaWR4KVxuK1x0XHRxID0gXHUwMDI2ZGV2LVx1MDAzZXFfcnhbTVRfUlhRX0JBTkQxXTtcbitcdGVsc2VcbitcdFx0cSA9IFx1MDAyNmRldi1cdTAwM2VxX3J4W01UX1JYUV9NQUlOXTtcbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNpemU7IGkrKykge1xuIFx0XHRkbWFfYWRkcl90IGFkZHI7XG4gXHRcdHUzMiBvZmZzZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDoxOC4zNzk3MTgwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMTIwODk5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWFUZWsgTVQ3NiBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYHF1ZXVlYCBhc3NpZ25tZW50IHdpdGhpbiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIHRoZSBxdWV1ZSBzZWxlY3Rpb24gaW4gYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gVGhpcyBpcyBhIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVyLCBzbyBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gdmFsaWRhdGUgdGhpcyBjaGFuZ2UuXG5cbkZpcnN0LCBJJ20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdGVzdCBlbnZpcm9ubWVudC4gQ2FuIHRoaXMgYmUgZWFzaWx5IHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSB1c3VhbGx5IGFtZW5hYmxlIHRvIHRlc3Rpbmcgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCB0aGUgTVQ3Ni4gVGhlbiB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIGV2ZW4gZnV6eiB0aGlzIGRyaXZlcj8gSGFyZHdhcmUtc3BlY2lmaWMgc3R1ZmYgaXMgdHJpY2t5IHVubGVzcyBpdCdzIFVTQi1iYXNlZCBvciB3ZSd2ZSBnb3Qgc29tZSBzZXJpb3VzIGVtdWxhdGlvbiBpbiBwbGF5LiBJdCdzIG9mdGVuIGRpZmZpY3VsdCB0byBnZXQgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSBvbiB0aGlzIGtpbmQgb2YgY2hhbmdlLlxuXG5TbyBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIE1UNzYgaXMgY29ubmVjdGVkLiBMZXQncyBzZWUuLi4gdGhlIHBhdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uY2Agc2VlbXMgc3BlY2lmaWMgdG8gdGhlIE1UNzkxNS4gUmlnaHQsIGxldCdzIHNlZSBpZiB0aGlzIGlzIFVTQiBvciBQQ0llLiBJIG5lZWQgdG8gZ3JlcCBmb3IgTVQ3OTE1IHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MjMuNjkxODEwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzIxNTM4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTY4OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ3PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDg6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00OS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQ0PW9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSArPSBtdDc2MTUvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfTVQ3OTE1RSkgKz0gbXQ3OTE1L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDYtb2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICs9IG10NzkyMS9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0yMTY9c3RhdGljIGlubGluZSBib29sIGlzX210NzY2MyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjIyMTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTE1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0yMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ3OlxcdFxcdC8qIG10NzkxNSBXQSBvbmx5IGNvdW50cyBXRUQgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQ4OlxcdFxcdGlmIChpc19tdDc5MTUoZGV2KSBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQ5LVxcdFxcdFxcdHdjaWQtXFx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9MTAzOT1pbnQgbXQ3Nl9jb25uYWMyX21hY19maWxsX3J4X3JhdGUoc3RydWN0IG10NzZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTEwNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzoxMDU1OlxcdGlmICghaXNfbXQ3OTE1KGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTEwNTYtXFx0XFx0c3RiYyA9IEZJRUxEX0dFVChNVF9QUlhWX0hUX1NUQkMsIHYwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1Lmg9MzA5PXN0cnVjdCBzdGFfcmVjX3ZodCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oLTMxNC1cXHRfX2xlMTYgdmh0X3R4X21jc19tYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaDozMTU6XFx0LyogbXQ3OTE1IC0gbXQ3OTIxICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaC0zMTYtXFx0dTggcnRzX2J3X3NpZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTE1RSkgKz0gbXQ3OTE1ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo1Om10NzkxNWUteSA6PSBwY2kubyBpbml0Lm8gZG1hLm8gZWVwcm9tLm8gbWFpbi5vIG1jdS5vIG1hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZS02LVxcdCAgICAgZGVidWdmcy5vIG1taW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6ODptdDc5MTVlLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9NYWtlZmlsZTo5Om10NzkxNWUtJChDT05GSUdfTVQ3OThYX1dNQUMpICs9IHNvYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGU6MTA6bXQ3OTE1ZS0kKENPTkZJR19ERVZfQ09SRURVTVApICs9IGNvcmVkdW1wLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM9MTI9TU9EVUxFX1BBUk1fREVTQyhjb3JlZHVtcF9tZW1kdW1wLCBcXFwiT3B0aW9uYWwgYWJpbGl0eSB0byBkdW1wIGZpcm13YXJlIG1lbW9yeVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNDpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uIG10NzkxNV9tZW1fcmVnaW9uc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gbXQ3OTE2X21lbV9yZWdpb25zW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMy1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6NTU6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MTVfbWVtX3JlZ2lvbiBtdDc5OHhfbWVtX3JlZ2lvbnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTU2LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo4ODpjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo4OTptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy05MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTkyLVxcdGNhc2UgMHg3OTE1OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6OTM6XFx0XFx0Km51bSA9IEFSUkFZX1NJWkUobXQ3OTE1X21lbV9yZWdpb25zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjk0OlxcdFxcdHJldHVybiBcXHUwMDI2bXQ3OTE1X21lbV9yZWdpb25zWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtOTUtXFx0Y2FzZSAweDc5ODE6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEwNzpzdGF0aWMgaW50IG10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX3NpemUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEwOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxMDk6XFx0Y29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICptZW1fcmVnaW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEwLVxcdHNpemVfdCBzaXplID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTE0OlxcdG1lbV9yZWdpb24gPSBtdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoZGV2LCBcXHUwMDI2bnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTExNS1cXHRpZiAoIW1lbV9yZWdpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTEyMy1cXHQvKiByZXNlcnZlIHNwYWNlIGZvciB0aGUgaGVhZGVycyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTI0OlxcdHNpemUgKz0gbnVtICogc2l6ZW9mKHN0cnVjdCBtdDc5MTVfbWVtX2hkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMjUtXFx0LyogbWFrZSBzdXJlIGl0IGlzIGFsaWduZWQgNCBieXRlcyBmb3IgZGVidWcgbWVzc2FnZSBwcmludCBvdXQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTMxOnN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqbXQ3OTE1X2NvcmVkdW1wX25ldyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjEzMzpcXHRzdHJ1Y3QgbXQ3OTE1X2NyYXNoX2RhdGEgKmNyYXNoX2RhdGEgPSBkZXYtXFx1MDAzZWNvcmVkdW1wLmNyYXNoX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xMzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE0Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTQ0Om10NzkxNV9jb3JlZHVtcF9md19zdGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTQ1LVxcdFxcdFxcdCBib29sICpleGNlcHRpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE1MC1cXHRzdGF0ZSA9ICh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19BU1NFUlRfU1RBVCwgR0VOTUFTSyg3LCAwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxNTE6XFx0Y291bnQgPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTUyLVxcdFxcdCh1MzIpbXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9GV19FWENFUFRfQ09VTlQsIEdFTk1BU0soMTUsIDgpKSA6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTE2Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTY3Om10NzkxNV9jb3JlZHVtcF9md190cmFjZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTY4LVxcdFxcdFxcdCBib29sIGV4Y2VwdGlvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTc1OlxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTc2LVxcdCAgICAodTMyKW10NzZfZ2V0X2ZpZWxkKGRldiwgYmFzZSwgR0VOTUFTSyg3LCAwKSkgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODAtXFx0aXJxID0gbXQ3Nl9ycihkZXYsIGJhc2UgKyAweDgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MTgxOlxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMTgyLVxcdCAgICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKSA6IEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGlycSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE4NS1cXHRzY2ggPSBtdDc2X3JyKGRldiwgTVRfRldfU0NIRURfSU5GTyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzoxODY6XFx0biA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xODctXFx0ICAgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0xOTMtXFx0XFx0Lyogc2NoZWQgdHJhY2UgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjE5NDpcXHRcXHRuID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTE5NS1cXHRcXHQgICAgRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBzY2gpIDogRklFTERfR0VUKEdFTk1BU0soNywgMCksIHNjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIwMS1cXHRcXHRmb3IgKHkgPSBkdW1wLVxcdTAwM2VzY2hlZF9pbmZvX2lkeCwgaSA9IDA7IGkgXFx1MDAzYyBuOyBpKyssIHkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjAyOlxcdFxcdFxcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cXHUwMDNlc2NoZWQsIGJhc2UgKyAweGMgKyB5ICogMTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yMDMtXFx0XFx0XFx0XFx0XFx0ICAgICBzaXplb2YoZHVtcC1cXHUwMDNlc2NoZWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjA3LVxcdFxcdC8qIGlycSB0cmFjZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjA4OlxcdFxcdG4gPSBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjA5LVxcdFxcdCAgICBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIGlycSkgOiBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjE1LVxcdFxcdGZvciAoeSA9IGR1bXAtXFx1MDAzZWlycV9pbmZvX2lkeCwgaSA9IDA7IGkgXFx1MDAzYyBuOyBpKyssIHkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjE2OlxcdFxcdFxcdG10NzkxNV9tZW1jcHlfZnJvbWlvKGRldiwgZHVtcC1cXHUwMDNlaXJxLCBiYXNlICsgMHg0ICsgeSAqIDE2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjE3LVxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZW9mKGR1bXAtXFx1MDAzZWlycSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yMjM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjIyNDptdDc5MTVfY29yZWR1bXBfZndfc3RhY2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTIyNS1cXHRcXHRcXHQgYm9vbCBleGNlcHRpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jPTI0ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ1Om10NzkxNV9jb3JlZHVtcF9md190YXNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yNDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjQ3OlxcdHUzMiBvZmZzID0gaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpID8gMHhlMCA6IDB4MTcwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYz0yNjg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjI2OTptdDc5MTVfY29yZWR1bXBfZndfY29udGV4dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICpkdW1wKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMjc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MjgwOlxcdFxcdGlkeCA9IGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA/XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0yODEtXFx0XFx0ICAgICAgKHUzMiltdDc2X2dldF9maWVsZChkZXYsIE1UX0ZXX0NJUlFfSURYLCBHRU5NQVNLKDMxLCAxNikpIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzAyOnN0YXRpYyBzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wICptdDc5MTVfY29yZWR1bXBfYnVpbGQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDQ6XFx0c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICpjcmFzaF9kYXRhID0gZGV2LVxcdTAwM2Vjb3JlZHVtcC5jcmFzaF9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzA1OlxcdHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKmR1bXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozMDY6XFx0c3RydWN0IG10NzkxNV9jb3JlZHVtcF9tZW0gKmR1bXBfbWVtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzA3LVxcdHNpemVfdCBsZW4sIHNvZmFyID0gMCwgaGRyX2xlbiA9IHNpemVvZigqZHVtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjMyNzpcXHRkdW1wID0gKHN0cnVjdCBtdDc5MTVfY29yZWR1bXAgKikoYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTMyOC1cXHRkdW1wLVxcdTAwM2VsZW4gPSBsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0MTpcXHRtdDc5MTVfY29yZWR1bXBfZndfc3RhdGUoZGV2LCBkdW1wLCBcXHUwMDI2ZXhjZXB0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0MjpcXHRtdDc5MTVfY29yZWR1bXBfZndfdHJhY2UoZGV2LCBkdW1wLCBleGNlcHRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQzOlxcdG10NzkxNV9jb3JlZHVtcF9md190YXNrKGRldiwgZHVtcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNDQ6XFx0bXQ3OTE1X2NvcmVkdW1wX2Z3X2NvbnRleHQoZGV2LCBkdW1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM0NTpcXHRtdDc5MTVfY29yZWR1bXBfZndfc3RhY2soZGV2LCBkdW1wLCBleGNlcHRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzQ3LVxcdC8qIGdhdGhlciBtZW1vcnkgY29udGVudCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6MzQ4OlxcdGR1bXBfbWVtID0gKHN0cnVjdCBtdDc5MTVfY29yZWR1bXBfbWVtICopKGJ1ZiArIHNvZmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM0OS1cXHRkdW1wX21lbS1cXHUwMDNlbGVuID0gY3Jhc2hfZGF0YS1cXHUwMDNlbWVtZHVtcF9idWZfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNTk6aW50IG10NzkxNV9jb3JlZHVtcF9zdWJtaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozNjE6XFx0c3RydWN0IG10NzkxNV9jb3JlZHVtcCAqZHVtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM2MzpcXHRkdW1wID0gbXQ3OTE1X2NvcmVkdW1wX2J1aWxkKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNjQtXFx0aWYgKCFkdW1wKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jOjM3NDppbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zNzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmM6Mzc2OlxcdHN0cnVjdCBtdDc5MTVfY3Jhc2hfZGF0YSAqY3Jhc2hfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5jLTM3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg0LVxcdGlmIChjb3JlZHVtcF9tZW1kdW1wKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzozODU6XFx0XFx0Y3Jhc2hfZGF0YS1cXHUwMDNlbWVtZHVtcF9idWZfbGVuID0gbXQ3OTE1X2NvcmVkdW1wX2dldF9tZW1fc2l6ZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtMzg2LVxcdFxcdGlmICghY3Jhc2hfZGF0YS1cXHUwMDNlbWVtZHVtcF9idWZfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYy0zOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuYzo0MDA6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmMtNDAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjc6I2luY2x1ZGUgXFxcIm10NzkxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oPTk9c3RydWN0IHRyYWNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxNDpzdHJ1Y3QgbXQ3OTE1X2NvcmVkdW1wIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTE1LVxcdGNoYXIgbWFnaWNbMTZdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC03OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjgwOnN0cnVjdCBtdDc5MTVfY29yZWR1bXBfbWVtIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTgxLVxcdHUzMiBsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6ODU6c3RydWN0IG10NzkxNV9tZW1faGRyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTg2LVxcdHUzMiBzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDo5MTpzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtOTItXFx0dTMyIHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjEwMDpjb25zdCBzdHJ1Y3QgbXQ3OTE1X21lbV9yZWdpb24gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAxOm10NzkxNV9jb3JlZHVtcF9nZXRfbWVtX2xheW91dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgKm51bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDI6c3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTAzOmludCBtdDc5MTVfY29yZWR1bXBfc3VibWl0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTA0OmludCBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMDU6dm9pZCBtdDc5MTVfY29yZWR1bXBfdW5yZWdpc3RlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oLTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTA5OnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IG10NzkxNV9tZW1fcmVnaW9uICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9jb3JlZHVtcC5oOjExMDptdDc5MTVfY29yZWR1bXBfZ2V0X21lbV9sYXlvdXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyICpudW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMTU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3N1Ym1pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmgtMTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2NvcmVkdW1wLmg6MTIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkxNV9jcmFzaF9kYXRhICptdDc5MTVfY29yZWR1bXBfbmV3KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMjU6c3RhdGljIGlubGluZSBpbnQgbXQ3OTE1X2NvcmVkdW1wX3JlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaDoxMzA6c3RhdGljIGlubGluZSB2b2lkIG10NzkxNV9jb3JlZHVtcF91bnJlZ2lzdGVyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvY29yZWR1bXAuaC0xMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU6I2luY2x1ZGUgXFxcIm10NzkxNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02LSNpbmNsdWRlIFxcXCJlZXByb20uaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIyOm10NzkxNV9pbXBsaWNpdF90eGJmX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MzE6XFx0cmV0dXJuIG10NzkxNV9tY3Vfc2V0X3R4YmYoZGV2LCBNVF9CRl9UWVBFX1VQREFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTMyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0zND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjM1Om10NzkxNV9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzozNzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10NzkxNV9pbXBsaWNpdF90eGJmX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDU6XFx0XFx0XFx0IG10NzkxNV9pbXBsaWNpdF90eGJmX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz00OD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo0OTptdDc5MTVfc3lzX3JlY292ZXJ5X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MC1cXHRcXHRcXHRzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU0LVxcdGJvb2wgYmFuZCA9IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlYmFuZF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODUtXFx0Y2FzZSBTRVJfUVVFUlk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg2OlxcdFxcdHJldCA9IG10NzkxNV9tY3Vfc2V0X3NlcihkZXYsIDAsIDAsIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04Ny1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05My1cXHRjYXNlIFNFUl9TRVRfUkVDT1ZFUl9MM19CRjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6OTQ6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgU0VSX0VOQUJMRSwgQklUKHZhbCksIGJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy05NS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo5ODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9zZXIoZGV2LCBTRVJfUkVDT1ZFUiwgdmFsLCBiYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtOTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTAzLVxcdFxcdG10NzZfc2V0KGRldiwgTVRfV0ZETUEwX01DVV9IT1NUX0lOVF9FTkEsIE1UX01DVV9DTURfV0RUX01BU0spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMDQ6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfc2VyKGRldiwgMSwgMywgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEwNS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEwOC1cXHRcXHRkZXYtXFx1MDAzZXJlY292ZXJ5LnN0YXRlIHw9IE1UX01DVV9DTURfV0RUX01BU0s7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEwOTpcXHRcXHRtdDc5MTVfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTEwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEyND1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMjU6bXQ3OTE1X3N5c19yZWNvdmVyeV9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI2LVxcdFxcdFxcdHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMjg6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI5OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTMwLVxcdGNoYXIgKmJ1ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbXQ3OTE1X3N5c19yZWNvdmVyeV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIwNTpcXHQud3JpdGUgPSBtdDc5MTVfc3lzX3JlY292ZXJ5X3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjA2OlxcdC5yZWFkID0gbXQ3OTE1X3N5c19yZWNvdmVyeV9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIwNy1cXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTIxMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIxMjptdDc5MTVfcmFkYXJfdHJpZ2dlcih2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIxNS0jZGVmaW5lIFJBREFSX0JBQ0tHUk9VTkRcXHQyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjIxNjpcXHRzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjE3OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjE4LVxcdGludCByZGRfaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjI4OlxcdHJkZF9pZHggPSBtdDc5MTVfZ2V0X3JkZF9pZHgocGh5LCB2YWwgPT0gUkFEQVJfQkFDS0dST1VORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyOS1cXHRpZiAocmRkX2lkeCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0yMzg9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjM5OlxcdFxcdFxcdCBtdDc5MTVfcmFkYXJfdHJpZ2dlciwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0MT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0MjptdDc5MTVfbXVydV9kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjQ0OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI0Ni1cXHRkZXYtXFx1MDAzZW11cnVfZGVidWcgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI0NzpcXHRtdDc5MTVfbWN1X211cnVfZGVidWdfc2V0KGRldiwgZGV2LVxcdTAwM2VtdXJ1X2RlYnVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI1Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MzptdDc5MTVfbXVydV9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI1NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1NTpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjYyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX211cnVfZGVidWcsIG10NzkxNV9tdXJ1X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjYzOlxcdFxcdFxcdCBtdDc5MTVfbXVydV9kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjU6c3RhdGljIGludCBtdDc5MTVfbXVydV9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjY3OlxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNjg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNjktXFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkbF9ub25faGVfdHlwZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTI5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MjkyOlxcdHJldCA9IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19nZXQocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNDUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDUxOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfbXVydV9zdGF0cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NDUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDU0Om10NzkxNV9yZGRfbW9uaXRvcihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ1NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ1NjpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NTctXFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmID0gXFx1MDAyNmRldi1cXHUwMDNlcmRkMl9jaGFuZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDYzOlxcdGlmICghbXQ3OTE1X2VlcHJvbV9oYXNfYmFja2dyb3VuZF9yYWRhcihkZXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQ2NC1cXHRcXHRzZXFfcHV0cyhzLCBcXFwibm8gYmFja2dyb3VuZCByYWRhciBjYXBhYmlsaXR5XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01MDU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MDY6bXQ3OTE1X2Z3X2RlYnVnX3dtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1MDg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTUwOS1cXHRlbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjUzMDpcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU0MDpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2RiZ19jdHJsKGRldiwgZGVidWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU0MS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU1OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU2MDptdDc5MTVfZndfZGVidWdfd21fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1NjI6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU2OTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTcwOlxcdFxcdFxcdCBtdDc5MTVfZndfZGVidWdfd21fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NTcyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTczOm10NzkxNV9md19kZWJ1Z193YV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTc0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTc1OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU4MDpcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCBkZXYtXFx1MDAzZWZ3LmRlYnVnX3dhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1ODQ6XFx0cmV0ID0gbXQ3OTE1X21jdV93YV9jbWQoZGV2LCBNQ1VfV0FfUEFSQU1fQ01EKFNFVCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU4NS1cXHRcXHRcXHRcXHRNQ1VfV0FfUEFSQU1fUERNQV9SWCwgISFkZXYtXFx1MDAzZWZ3LmRlYnVnX3dhLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01OTM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo1OTQ6bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTk1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTk2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2MDM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfd2EsIG10NzkxNV9md19kZWJ1Z193YV9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYwNDpcXHRcXHRcXHQgbXQ3OTE1X2Z3X2RlYnVnX3dhX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02MDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjMwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjMxOm10NzkxNV9md19kZWJ1Z19iaW5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTYzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM2LVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjYzNzpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjQ5OlxcdHJldHVybiBtdDc5MTVfZndfZGVidWdfd21fc2V0KGRldiwgZGV2LVxcdTAwM2Vmdy5kZWJ1Z193bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjUyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjUzOm10NzkxNV9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTU6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY2MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z19iaW4sIG10NzkxNV9md19kZWJ1Z19iaW5fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NjM6XFx0XFx0XFx0IG10NzkxNV9md19kZWJ1Z19iaW5fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjY2Om10NzkxNV9md191dGlsX3dtX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02Njcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2Njg6XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd20pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02ODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTY4Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjY4NzptdDc5MTVfZndfdXRpbF93YV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjg4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6Njg5OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNjkzLVxcdGlmIChkZXYtXFx1MDAzZWZ3LmRlYnVnX3dhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2OTQ6XFx0XFx0cmV0dXJuIG10NzkxNV9tY3Vfd2FfY21kKGRldiwgTUNVX1dBX1BBUkFNX0NNRChRVUVSWSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY5NS1cXHRcXHRcXHRcXHRcXHQgTUNVX1dBX1BBUkFNX0NQVV9VVElMLCAwLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjcwMDpERUZJTkVfU0hPV19BVFRSSUJVVEUobXQ3OTE1X2Z3X3V0aWxfd2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTcwMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3MDM6bXQ3OTE1X2FtcGR1X3N0YXRfcmVhZF9waHkoc3RydWN0IG10NzkxNV9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA0LVxcdFxcdFxcdCAgIHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzA2OlxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzA3LVxcdGJvb2wgZXh0X3BoeSA9IHBoeSAhPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NzMzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjczNDptdDc5MTVfdHhiZl9zdGF0X3JlYWRfcGh5KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIHN0cnVjdCBzZXFfZmlsZSAqcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz03ODA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODE6bXQ3OTE1X3R4X3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3ODM6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IGZpbGUtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc4NDpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTc4NS1cXHRzdHJ1Y3QgbXQ3Nl9taWJfc3RhdHMgKm1pYiA9IFxcdTAwMjZwaHktXFx1MDAzZW1pYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy03ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjc5MDpcXHRtdDc5MTVfYW1wZHVfc3RhdF9yZWFkX3BoeShwaHksIGZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo3OTE6XFx0bXQ3OTE1X21hY191cGRhdGVfc3RhdHMocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NzkyOlxcdG10NzkxNV90eGJmX3N0YXRfcmVhZF9waHkocGh5LCBmaWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNzkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6ODExOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MTVfdHhfc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTgxMz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTQ6bXQ3OTE1X2h3X3F1ZXVlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB1MzIgc2l6ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODE1LVxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGh3X3F1ZXVlX21hcCAqbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy04MTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4MTc6XFx0c3RydWN0IG10NzkxNV9waHkgKnBoeSA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjgxODpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTgxOS1cXHR1MzIgaSwgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTg0ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo4NDU6bXQ3OTE1X3N0YV9od19xdWV1ZV9yZWFkKHZvaWQgKmRhdGEsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTg0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg0NzpcXHRzdHJ1Y3QgbXQ3OTE1X3N0YSAqbXN0YSA9IChzdHJ1Y3QgbXQ3OTE1X3N0YSAqKXN0YS1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjg0ODpcXHRzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gbXN0YS1cXHUwMDNldmlmLVxcdTAwM2VwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtODQ5LVxcdHN0cnVjdCBzZXFfZmlsZSAqcyA9IGRhdGE7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MjQuMzIzOTcxNzg3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY5MTQ3MzEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCdWcgRml4IGZvciB0aGUgTVQ3OTE1RSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBDT05GSUdfTVQ3OTE1RWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCdzIGEgUENJIGRyaXZlci4gVGhlIG1ha2VmaWxlIGZyYWdtZW50IGNvbmZpcm1zIGl0LCBgbXQ3OTE1ZS15IDo9IHBjaS5vIC4uLmAsIHllcCwgaXQncyBhIFBDSSBkcml2ZXIuIFRoZW4gSSBpbW1lZGlhdGVseSB0aGluayBhYm91dCBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXMgd2l0aCBQQ0kgZHJpdmVycy4gTm9ybWFsbHksIEknZCBleHBlY3QgZnV6emluZyB0byBoYXBwZW4gdmlhIGBzeXpfcGNpXy4uLmAgcHNldWRvLXN5c2NhbGxzIG9yIHdoZW4gaXQncyBsb2FkZWQgd2l0aCBhIHZpcnR1YWwgZGV2aWNlLiBIb3dldmVyLCBhIGdlbmVyaWMsIG91dC1vZi10aGUtYm94IFBDSSBmdXp6ZXIgaW4gc3l6a2FsbGVyIGlzbid0IHRoZSBub3JtLCB1bmxlc3MgaXQncyBzcGVjaWZpY2FsbHkgc3VwcG9ydGVkIG9yIGxldmVyYWdlcyB0aGUgbmV0bGluay9tYWM4MDIxMSBpbnRlcmZhY2UuXG5cblRoZSBrZXkgY2x1ZSBpcyB0aGUgcGF0Y2ggYXV0aG9yOiBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBUaGlzIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgc3l6a2FsbGVyIGZvdW5kIGEgYnVnIGhlcmUuIEVpdGhlciB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgZGlzY292ZXJlZCBpc3N1ZSwgb3IgaXQncyBhIHRlc3QgcGF0Y2guIElmIHN5emthbGxlciBmb3VuZCB0aGUgYnVnLCBpdCBtZWFucyBpdCdzIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBiaWcgZGVhbCFcblxuSSdsbCByZS1leGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuIFRoZSBjaGFuZ2VzIGludm9sdmUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGluIGBtYWluLmNgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGluIGB3ZWQuY2AuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTVQ3OTE1RWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXIncyBjb25maWd1cmF0aW9uLCBhcyB0aGF0IHdvdWxkIGNvbmZpcm0gdGhpcyBpcyBiZWluZyB0ZXN0ZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cbkknbSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgUENJIGZ1enppbmcuIEl0IHVzZXMgYHZoY2lgIGZvciBVU0IsIGJ1dCBQQ0kncyBvZnRlbiBoYW5kbGVkIGJ5IGBzeXpfcGNpXy4uLmAgb3IgYnkgdXNpbmcgdGhlIHNvZnR3YXJlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0LCBgbXQ3NmAgaGFzIGBtYWM4MDIxMWAgc3VwcG9ydCEgVGhpcyBpcyBpbXBvcnRhbnQuIENvdWxkIHRoaXMgYmUgdHJpZ2dlcmVkIHVzaW5nIGBtYWM4MDIxMWAgbmV0bGluayBjb21tYW5kcywgZXZlbiB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBNYXliZSB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgYSBmYWtlIFBDSSBkZXZpY2UuIFN5emthbGxlcidzIFBDSSBmdXp6aW5nIGhhcyBiZWVuIGltcHJvdmluZywgc28gdGhhdCdzIHBvc3NpYmxlLlxuXG5UaGUgbmV4dCBjcml0aWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyByZWFjaGFibGUgZnJvbSBzeXprYWxsZXIsIHdoaWNoIHNob3VsZCBnaXZlIGluc2lnaHQgaW50byBob3cgdGhpcyBidWcgd2FzIHRyaWdnZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MzQuMDE1NDQ2ODM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDQ2ODgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTcyMzptdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzI0LVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzY1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgxOS0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MjA6XFx0Lm5ldF9maWxsX2ZvcndhcmRfcGF0aCA9IG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjEtXFx0Lm5ldF9zZXR1cF90YyA9IG10NzZfd2VkX25ldF9zZXR1cF90YyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6MzQuMjE1OTIwOTcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwMzUzMjU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZGlzdGlsbGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE1UNzkxNSBXaS1GaSBEcml2ZXIgLSBBIFdFRC1TcGVjaWZpYyBQYXRoKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGNvZGUgcmVmZXJlbmNlLCBgLm5ldF9maWxsX2ZvcndhcmRfcGF0aGAsIHdpdGhpbiB0aGUgYG10NzkxNV9vcHNgIHN0cnVjdHVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIHRoaXMgaXMgYSBsaWtlbHkgcG9pbnQgZm9yIFdFRCAoV2ktRmkgb2ZmbG9hZCBFbmdpbmUgRHJpdmVyKSBpbnRlcmFjdGlvbi5cIiBUaGlzIGlzbid0IHN1cnByaXNpbmcsIGdpdmVuIHRoZSBhcmNoaXRlY3R1cmUuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiB0aGlzIG1hbm5lciBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHBhY2tldCBmbG93IHRocm91Z2ggdGhpcyBzZWN0aW9uIGlzIGNvbnRpbmdlbnQgdXBvbiB0aGUgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlndXJhdGlvbiBvcHRpb24gYmVpbmcgZW5hYmxlZC5cblxuVGhlIG5leHQgb2J2aW91cyB0aGluZyB0byBjaGVjayBpcywgd2hhdCBpbml0aWFsaXNhdGlvbiBzdGVwcyByZWxhdGUgdG8gdGhhdCBjb2RlIHNlY3Rpb24/IFRoYXQgdGFrZXMgbWUgc3RyYWlnaHQgdG8gYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gSSdsbCBkZWx2ZSBpbnRvIHRoYXQgdG8gY29uZmlybSB0aGUgcGF0aCB0YWtlbiwgY29uZmlybSB0aGF0IGluaXRpYWxpc2F0aW9uIGlzIGNvcnJlY3RseSBwZXJmb3JtZWQgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSByZWNlaXZlIGJ1ZmZlciBpcyBoYW5kbGVkIGluIHRoZSBjb250ZXh0IG9mIFdFRC4gSXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE3OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEwOjM4LjAxOTQ1NTI5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODI3NDY5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl93ZWRfaW5pdF9yeF9idWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI0ND1pbnQgbXQ3Nl93ZWRfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI0Ny0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI0ODp1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ5LWludCBtdDc2X3dlZF9vZmZsb2FkX2VuYWJsZShzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI1MD1pbnQgbXQ3Nl93ZWRfZG1hX3NldHVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgYm9vbCByZXNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI1MS0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyNTI6c3RhdGljIGlubGluZSB1MzIgbXQ3Nl93ZWRfaW5pdF9yeF9idWYoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsIGludCBzaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jPTYzMz1pbnQgbXQ3OTE1X21taW9fd2VkX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE1LVxcdHdlZC1cXHUwMDNld2xhbi5vZmZsb2FkX2Rpc2FibGUgPSBtdDc2X3dlZF9vZmZsb2FkX2Rpc2FibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjcxNjpcXHR3ZWQtXFx1MDAzZXdsYW4uaW5pdF9yeF9idWYgPSBtdDc2X3dlZF9pbml0X3J4X2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNzE3LVxcdHdlZC1cXHUwMDNld2xhbi5yZWxlYXNlX3J4X2J1ZiA9IG10NzZfd2VkX3JlbGVhc2VfcnhfYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQ1Nj1pbnQgbXQ3OTk2X21taW9fd2VkX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdm9pZCAqcGRldl9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjAzLVxcdHdlZC1cXHUwMDNld2xhbi5pbml0X2J1ZiA9IG10Nzk5Nl93ZWRfaW5pdF9idWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjYwNDpcXHR3ZWQtXFx1MDAzZXdsYW4uaW5pdF9yeF9idWYgPSBtdDc2X3dlZF9pbml0X3J4X2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjA1LVxcdHdlZC1cXHUwMDNld2xhbi5yZWxlYXNlX3J4X2J1ZiA9IG10NzZfd2VkX3JlbGVhc2VfcnhfYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMxLSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjMyOnUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTgzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjg0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfd2VkX2luaXRfcnhfYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTg1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDozOC42MDIyMDcwNDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjI3NDE3MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdFRCBPZmZsb2FkIFBhdGNoIGZvciBNZWRpYVRlayBTb0NzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBwZXJ0YWlucyB0byBXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyIChXRUQpIG9mZmxvYWQgb24gTWVkaWFUZWsgU3lzdGVtLW9uLUNoaXBzLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBjYW4gSSBldmVuIHJlYWNoIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUeXBpY2FsbHksIFBDSSBkZXZpY2VzIGxpa2UgdGhlIE1UNzkxNSBhcmUgZWl0aGVyIGFic2VudCBpbiBRRU1VL0dDRSwgb3IgdGhleSByZXF1aXJlIHBhc3MtdGhyb3VnaCBvciBlbXVsYXRpb24uIFBlcmhhcHMgYHN5emthbGxlcmAncyBgc3l6X3BjaV8uLi5gIGNhbGxzIGNvdWxkIHByb2JlIHRoZSBkcml2ZXIsIGFzc3VtaW5nIHRoZSBQQ0kgSUQgaXMgYSBtYXRjaC5cblxuV2FpdCwgZG9lcyBgc3l6a2FsbGVyYCBzcGVjaWZpY2FsbHkgdGVzdCBNZWRpYVRlayBXaS1GaSBkcml2ZXJzPyBUaGlzIHBhdGNoIGlzIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgYSBgc3l6a2FsbGVyYC1kaXNjb3ZlcmVkIGJ1ZyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgZml4LiBJbnRlcmVzdGluZy5cblxuSG9sZCBvbiBhIHNlY29uZCwgSSByZWNhbGwgdGhhdCBgc3l6a2FsbGVyYCBkb2VzIGhhdmUgV2ktRmkgZHJpdmVyIHRlc3RpbmcgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQncyBhICpzb2Z0d2FyZSogc2ltdWxhdG9yLCBpc24ndCBpdD8gRm9yICpoYXJkd2FyZSogZHJpdmVycywgSSB0aGluayBgc3l6a2FsbGVyYCBvZmZlcnMgYSBVU0IgZnV6emVyIChkdW1teV9oY2QpIGFuZCBhIFBDSSBmdXp6ZXIuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgQ09ORklHX01UNzkxNUVgIGlzIGEgUENJIGRyaXZlci4gWWVzLCBpdCBsb29rcyBsaWtlIGl0IGlzOiBgbXQ3OTE1ZS15IDo9IHBjaS5vIC4uLmAuIEdvb2QuIE5vdywgbGV0IG1lIHNlZSBpZiBJIGNhbiBmaWd1cmUgb3V0IGhvdyB0byByZWFjaCB0aGUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byByZXF1aXJlIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgLiBUaW1lIHRvIGRlbHZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGUgcHJlc2VuY2UgYW5kIHNldHVwIG9mIGBORVRfTUVESUFURUtfU09DX1dFRGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTU5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEwOjQ0LjgyOTYyOTA5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMjg3Nzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9NRURJQVRFS19TT0NfV0VEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9OTc0PW10NzZfZG1hX3J4X3Byb2Nlc3Moc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05ODMtXFx0aWYgKChxLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1UX1FGTEFHX1dFRF9SUk9fRU4pIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5ODQ6XFx0ICAgIChJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTk4NS1cXHQgICAgIG10NzZfcXVldWVfaXNfd2VkX3R4X2ZyZWUocSkpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NDk6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMjQ0PWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ2LVxcdFxcdFxcdCAgdm9pZCAqdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjQ3OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjQ4LXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTI2Mj1zdGF0aWMgaW5saW5lIGludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTI2NzojZW5kaWYgLyogQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTEyOTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3Nl9kZXYgKm10NzZfd2VkX3RvX2RldihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMjkzOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjk0LVxcdGlmICh3ZWQtXFx1MDAzZXdsYW4uaGlmMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMjk1LVxcdFxcdHJldHVybiBjb250YWluZXJfb2Yod2VkLCBzdHJ1Y3QgbXQ3Nl9kZXYsIG1taW8ud2VkX2hpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEyOTY6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEyOTctXFx0cmV0dXJuIGNvbnRhaW5lcl9vZih3ZWQsIHN0cnVjdCBtdDc2X2RldiwgbW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE2NzM9bXQ3OTE1X3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MjE6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzIyLXN0YXRpYyBpbnRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzY1PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgxOC1cXHQuc2V0X3JhZGFyX2JhY2tncm91bmQgPSBtdDc5MTVfc2V0X3JhZGFyX2JhY2tncm91bmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MTk6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODIwLVxcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MTc3Nz1pbnQgbXQ3OTE1X21jdV93ZWRfZW5hYmxlX3J4X3N0YXRzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTc3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MTc3OTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMTc4MC1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NTY1PXN0YXRpYyB1MzIgbXQ3OTE1X3JtdyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6NTgwOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtNTgxLXN0YXRpYyB2b2lkIG10NzkxNV9tbWlvX3dlZF91cGRhdGVfcnhfc3RhdHMoc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NjMzPWludCBtdDc5MTVfbW1pb193ZWRfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpwZGV2X3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo2MzY6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy02MzctXFx0c3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTgyNT1zdGF0aWMgdm9pZCBtdDc5OTZfcnJvX2h3X2luaXRfdjMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjgzMzojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTgzNC1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODQ2LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ3OiNlbmRpZiAvKiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjk5ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTk5OS1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAwNS1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMDY6I2VuZGlmIC8qIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDA3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNC1cXHRwYXRoLVxcdTAwM2VkZXYgPSBjdHgtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQxNTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTYtXFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jPTI1MTA9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTk2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTY0LVxcdC5uZXRfZmlsbF9mb3J3YXJkX3BhdGggPSBtdDc5OTZfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTY1OiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjU2Ni1cXHQubmV0X3NldHVwX3RjID0gbXQ3Nl93ZWRfbmV0X3NldHVwX3RjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTQxMD1zdGF0aWMgdTMyIG10Nzk5Nl9ybXcoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy00MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQyNTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQyNi1zdGF0aWMgaW50IG10Nzk5Nl9tbWlvX3dlZF9yZXNldChzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz00NTY9aW50IG10Nzk5Nl9tbWlvX3dlZF9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHZvaWQgKnBkZXZfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ1OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjQ1OTojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTQ2MC1cXHRzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9ODYwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg3ODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg3OS1cXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTkxMj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjkyODojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTkyOS1cXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0yOT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9yZWxlYXNlX3J4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjMxOiNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTMyLXUzMiBtdDc2X3dlZF9pbml0X3J4X2J1ZihzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZCwgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTE2Nz1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X3dlZF9kbWFfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM6MTY4OiNlbmRpZiAvKkNPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmMtMTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMDo0NC45OTA5MjU0ODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ1NjAwNzg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNZWRpYVRlayBXRUQgT2ZmbG9hZCoqXG5cbk9rYXksIHNvIHRoaXMgYnVnIHJlcXVpcmVzIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBldmVuIGZ1enogdGhpcz8gVGhlIE1lZGlhVGVrIFdFRCBvZmZsb2FkIGlzIGEgaGFyZHdhcmUgdGhpbmcgb24gTWVkaWFUZWsgU29DcywgYW5kIFN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBlbXVsYXRlIHRob3NlIGRpcmVjdGx5LiBCdXQgd2FpdCwgU3l6a2FsbGVyICpmb3VuZCogdGhlIGJ1Zy4gSG93PyBNYXliZSBpdCdzIHJ1bm5pbmcgb24gYSByZWFsIE1lZGlhVGVrIFNvQz8gU3l6a2FsbGVyICpjYW4qIGJlIHJ1biBvbiByZWFsIGhhcmR3YXJlLCBsaWtlIEFuZHJvaWQgZGV2aWNlcyBvciByb3V0ZXJzLCBhZnRlciBhbGwuIE9yIHBlcmhhcHMgdGhlIGRyaXZlciBpcyBiZWluZyBjb21waWxlZCBhbmQgcHJvYmVkIHRocm91Z2ggYSB2aXJ0dWFsIFBDSSBkZXZpY2UsIG1ha2luZyB0aGUgY29kZSBhY2Nlc3NpYmxlLlxuXG5UaGlua2luZyBhYm91dCBpdCwgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHNldCB1cCBhIGZvcndhcmQgcGF0aCwgbGlrZSBmb3IgYSBicmlkZ2Ugb3Igcm91dGluZyBvZmZsb2FkLiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBzZWVtcyB0byBnZXQgY2FsbGVkIGJ5IGBuZnRfZndkX2R1cF9uZXRkZXZfb2ZmbG9hZGAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFNvLCBpZiBTeXprYWxsZXIgY2FuIGNyZWF0ZSBhIHZpcnR1YWwgUENJIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MTVlYCwgdGhhdCBjb3VsZCB0cmlnZ2VyIGl0LlxuXG5IYW5nIG9uLi4uIFN5emthbGxlciBoYXMgdGhvc2UgYHN5el9wY2lfLi4uYCBwc2V1ZG8tc3lzY2FsbHMgdG8gaW5qZWN0IFBDSSBkZXZpY2VzLiBCdXQsIGRvZXMgaXQgbmVlZCBgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYCB0byBtYWtlIHRoYXQgd29yaz8gVGhhdCdzIHRoZSBrZXkuIEkgc2hvdWxkIGNoZWNrIGlmIHRoYXQgY29uZmlnIGlzIGVuYWJsZWQgaW4gdGhlIFN5emthbGxlciBidWlsZC4gSXQncyBhIGNvbmZpZyBvcHRpb24sIHJpZ2h0PyBUbyBmdXp6IHRoaXMgcHJvcGVybHksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTVQ3OTE1RWAgYW5kIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURgIGFyZSBib3RoIGVuYWJsZWQuIExldCBtZSBjaGVjayB3aGF0IHRoYXQgYENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMjMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6NTEuNDQ2OTM4MDM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTIzMDE5NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz04PWlmIE5FVF9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMDpjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6NTMuOTY5OTY3MzYzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjI2NDY2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipFeGFtaW5pbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gZm9yIHRoZSBNVDc5MTVFIERyaXZlcioqXG5cblJpZ2h0LCBzbyB0aGlzIHNlZW1zIHRvIGJlIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc2NlbmFyaW8gZm9yIHRoZSBNVDc5MTVFIGRyaXZlciBjb2RlLiBJJ20gaW1tZWRpYXRlbHkgbm90aWNpbmcgYSBkZXBlbmRlbmN5IG9uIGVpdGhlciBgQVJDSF9NRURJQVRFS2AgYmVpbmcgZGVmaW5lZCwgb3IsIGNyaXRpY2FsbHksIGBDT01QSUxFX1RFU1RgLiBUaGlzIG1lYW5zIHRoZSBkcml2ZXIgY2FuIGJlIGVuYWJsZWQgaW4gYSBjb3VwbGUgb2Ygd2F5cy4gVGhlIHR5cGljYWwgcGF0aCBpcyBsaWtlbHkgdGllZCB0byB0aGUgTWVkaWF0ZWsgYXJjaGl0ZWN0dXJlLCBhcyB5b3UnZCBleHBlY3QuIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGBDT01QSUxFX1RFU1RgIHN1Z2dlc3RzIHRoYXQgdGhlcmUncyBhIG1lY2hhbmlzbSB0byBmb3JjZSB0aGUgaW5jbHVzaW9uIG9mIHRoZSBkcml2ZXIsIHByb2JhYmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9yIGZvciBhIGJyb2FkZXIgYnVpbGQgY29uZmlndXJhdGlvbiB3aGVyZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBtaWdodCBub3QgYmUgZXhwbGljaXRseSBNZWRpYXRlaywgYnV0IHdlIHN0aWxsIHdhbnQgdG8gYnVpbGQgaXQgYW5kIGV4YW1pbmUgaXRzIGNvbXBpbGVkIG91dHB1dC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIGBDT05GSUdfTVQ3OTE1RWAgaXMgYW4gb3B0aW9uIHRoYXQgY2FuIGJlIGRpc2FibGVkLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhhdCBvcHRpb24gaW4gbXkgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODk2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTA6NTcuNTMyNjE2MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzUzMzc3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkxNUVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkxNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkxNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEwOjU5Ljk2Nzk2NDYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5NjcyNjMxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IGluIE1UNzkxNSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0IGNlbnRlcnMgYXJvdW5kIHRoZSBNZWRpYVRlayBNVDc5MTUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTUFDODAyMTEgYW5kIFBDSSBzdWJzeXN0ZW1zLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkxNUVgIGFuZCBgTkVUX01FRElBVEVLX1NPQ19XRURgIGZlYXR1cmVzIGJlaW5nIGVuYWJsZWQuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBJbml0aWFsbHksIHRoZSBjb2RlIGRldGVybWluZWQgdGhlIHF1ZXVlIGJhc2VkIG9uIHdoZXRoZXIgYHBoeWAgd2FzIHRoZSBzYW1lIGFzIGBcdTAwMjZkZXYtXHUwMDNlcGh5YC4gTm93LCBpdCdzIGNoYW5nZWQgdG8gdXNlIGBwaHktXHUwMDNlbXQ3Ni1cdTAwM2ViYW5kX2lkeGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHRoaXMgc2VlbXMgbGlrZSBhIG1vcmUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIHF1ZXVlIHNlbGVjdGlvbi5cIiBgcGh5YCBpcyBhIHBvaW50ZXIgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LCBhbmQsIGNyaXRpY2FsbHksIGl0J3MgZGVyaXZlZCBmcm9tIGB2aWYtXHUwMDNlZHJ2X3ByaXZgLiAgSSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSDigJMgaWYgYHBoeS1cdTAwM2VtdDc2YCBpcyBOVUxMLCB0aGlzIGNvdWxkIGJlIGEgY3Jhc2guICBIb3dldmVyLCBnaXZlbiB0aGUgZHJpdmVyJ3Mgc3RydWN0dXJlLCBgcGh5LVx1MDAzZW10NzZgIGlzICpwcm9iYWJseSogaW5pdGlhbGl6ZWQgcHJvcGVybHkuIFRoZSBvcmlnaW5hbCBjb21wYXJpc29uIGBwaHkgIT0gXHUwMDI2ZGV2LVx1MDAzZXBoeWAgbG9va3MgbGlrZSBhIGJ1Zy5cblxuVGhlbiBJIHNlZSB0aGUgbW9kaWZpY2F0aW9uIGluIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAsIGFuZCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgYnJhbmNoZXMgYmFzZWQgb24gYHdlZC1cdTAwM2V2ZXJzaW9uYCBhbmQgYGRldi1cdTAwM2VwaHkuYmFuZF9pZHhgLiAgV2UgaGF2ZSBhIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQgb2YgdGhlIHF1ZXVlOiBlaXRoZXIgYFx1MDAyNmRldi1cdTAwM2VxX3J4W01UX1JYUV9CQU5EMV1gIG9yIGBcdTAwMjZkZXYtXHUwMDNlcV9yeFtNVF9SWFFfTUFJTl1gLiBUaGlzIHNlZW1zIHJlYWNoYWJsZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gIFN5emthbGxlciBpcyB0aGUga2V5IHRvIHRoaXMsIEkgdGhpbmssIHBhcnRpY3VsYXJseSBpZiBpdCdzIGZ1enppbmcgUENJIGRldmljZXMuICBJZiBTeXprYWxsZXIgY2FuIHByb2JlIHRoZSBkcml2ZXIsIGl0IHdpbGwgY2FsbCB0aGVzZSBmdW5jdGlvbnMuIEdpdmVuIHRoYXQgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZCBieSB0aGUgbmV0d29yayBzdGFjaywgaWYgdGhlIGRyaXZlciBpcyBzdWNjZXNzZnVsbHkgcHJvYmVkLCBhIG5ldGRldiBpcyByZWdpc3RlcmVkIGFuZCB0aGVuIHRoZSBuZXR3b3JrIHN0YWNrIGNhbGxzIGBuZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiAgU3l6a2FsbGVyIGNhbiB1c2UgYHN5el9wY2lfLi4uYCBjYWxscyB0byBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJJ20gd29uZGVyaW5nIHRob3VnaCBpZiB0aGUgZHJpdmVyIGNhbiBiZSBzdWNjZXNzZnVsbHkgcHJvYmVkIHdpdGhvdXQgcmVhbCBoYXJkd2FyZS4gVXN1YWxseSwgbW9yZSBjb21wbGV4IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIG9mdGVuIGZhaWxzIHVubGVzcyB0aGUgZW11bGF0b3IgaGFuZGxlcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHJlZ2lzdGVycy4gSSBuZWVkIHRvIGNoZWNrIGBtdDc5MTVfcGNpX3Byb2JlYCB0byBrbm93IGZvciBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODMwOCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTowOS45MzUyMzA2NjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODM3MjQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcGNpX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTg0PXN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9oaWYyX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjEwMzpzdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTA0LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYz0yMjE9c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTE1X2hpZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0yMjMtXFx0LmlkX3RhYmxlXFx0PSBtdDc5MTVfaGlmX2RldmljZV90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoyMjQ6XFx0LnByb2JlXFx0XFx0PSBtdDc5MTVfcGNpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIyNS1cXHQucmVtb3ZlXFx0XFx0PSBtdDc5MTVfaGlmX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTIyOD1zdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTIzMC1cXHQuaWRfdGFibGVcXHQ9IG10NzkxNV9wY2lfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jOjIzMTpcXHQucHJvYmVcXHRcXHQ9IG10NzkxNV9wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMjMyLVxcdC5yZW1vdmVcXHRcXHQ9IG10NzkxNV9wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToxMC41MDM2MDg3MDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzNTA0MzE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbXQ3OTE1X3BjaV9wcm9iZWAqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoZSBgbXQ3OTE1X3BjaV9wcm9iZWAgZnVuY3Rpb24gaXMgZG9pbmcuIEknbSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIFBDSSBkZXZpY2UuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBnZXRzIHJlc291cmNlIGluZm9ybWF0aW9uLCBlc3BlY2lhbGx5IHRoZSBCQVJzLCBpbnRlcnJ1cHRzLCBhbmQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGF0YSBpdCBncmFicyBmcm9tIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gSSBleHBlY3QgdGhlcmUnbGwgYmUgc29tZSBkZXZpY2Utc3BlY2lmaWMgc2V0dXAgaGVyZSwgcHJvYmFibHkgZGVhbGluZyB3aXRoIHRoZSBNZWRpYVRlaydzIGludGVybmFsIHJlZ2lzdGVycyBhbmQgcG9zc2libHkgYW55IGZpcm13YXJlIGxvYWRpbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgcG93ZXIgbWFuYWdlbWVudCwgZXJyb3IgY29uZGl0aW9ucywgYW5kIGludGVycnVwdCByZWdpc3RyYXRpb24uIFRoZSBgcHJvYmVgIHJvdXRpbmUgaXMgdGhlIGVudHJ5IHBvaW50LCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBzZXRzIHVwIHRoZSBiYXNpYyBkZXZpY2Ugc3RydWN0dXJlLCBhbGxvY2F0ZXMgbWVtb3J5LCBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUgc28gdGhhdCB0aGUgZHJpdmVyIGlzIHJlYWR5IHRvIGdvLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGhzIGFzIHdlbGw7IGhvdyBpdCBncmFjZWZ1bGx5IGNsZWFucyB1cCBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyBpcyBjcnVjaWFsLiBGaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGlzIHByb2JlIHJvdXRpbmUgY29ubmVjdHMgdG8gb3RoZXIgcGllY2VzIG9mIHRoZSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcGFydHMgdGhhdCBoYW5kbGUgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGFuZCBkYXRhIHRyYW5zbWlzc2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxOTMsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToxNC4wMzg2NTQ1NzhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMyxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDM6XFx0c3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAxMDQ6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4gMTA1OlxcdHtcXG4gMTA2OlxcdFxcdHN0cnVjdCBtdDc5MTVfaGlmICpoaWYyID0gTlVMTDtcXG4gMTA3OlxcdFxcdHN0cnVjdCBtdDc5MTVfZGV2ICpkZXY7XFxuIDEwODpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuIDEwOTpcXHRcXHRpbnQgaXJxO1xcbiAxMTA6XFx0XFx0aW50IHJldDtcXG4gMTExOlxcdFxcbiAxMTI6XFx0XFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbiAxMTM6XFx0XFx0aWYgKHJldClcXG4gMTE0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdHJldCA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBCSVQoMCksIHBjaV9uYW1lKHBkZXYpKTtcXG4gMTE3OlxcdFxcdGlmIChyZXQpXFxuIDExODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMTk6XFx0XFxuIDEyMDpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMTIxOlxcdFxcbiAxMjI6XFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiAxMjM6XFx0XFx0aWYgKHJldClcXG4gMTI0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdG10NzZfcGNpX2Rpc2FibGVfYXNwbShwZGV2KTtcXG4gMTI3OlxcdFxcbiAxMjg6XFx0XFx0aWYgKGlkLVxcdTAwM2VkZXZpY2UgPT0gMHg3OTE2IHx8IGlkLVxcdTAwM2VkZXZpY2UgPT0gMHg3OTBhKVxcbiAxMjk6XFx0XFx0XFx0cmV0dXJuIG10NzkxNV9wY2lfaGlmMl9wcm9iZShwZGV2KTtcXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0ZGV2ID0gbXQ3OTE1X21taW9fcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSxcXG4gMTMyOlxcdFxcdFxcdFxcdFxcdGlkLVxcdTAwM2VkZXZpY2UpO1xcbiAxMzM6XFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbiAxMzQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZGV2KTtcXG4gMTM1OlxcdFxcbiAxMzY6XFx0XFx0bWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIDEzNzpcXHRcXHRtdDc5MTVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMTM4OlxcdFxcdGhpZjIgPSBtdDc5MTVfcGNpX2luaXRfaGlmMihwZGV2KTtcXG4gMTM5OlxcdFxcbiAxNDA6XFx0XFx0cmV0ID0gbXQ3OTE1X21taW9fd2VkX2luaXQoZGV2LCBwZGV2LCB0cnVlLCBcXHUwMDI2aXJxKTtcXG4gMTQxOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAxNDI6XFx0XFx0XFx0Z290byBmcmVlX3dlZF9vcl9pcnFfdmVjdG9yO1xcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHRpZiAoIXJldCkge1xcbiAxNDU6XFx0XFx0XFx0aGlmMiA9IG10NzkxNV9wY2lfaW5pdF9oaWYyKHBkZXYpO1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRcXHRyZXQgPSBwY2lfYWxsb2NfaXJxX3ZlY3RvcnMocGRldiwgMSwgMSwgUENJX0lSUV9BTExfVFlQRVMpO1xcbiAxNDg6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDE0OTpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfZGV2aWNlO1xcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHRcXHRpcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE1MjpcXHRcXHR9XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cXHUwMDNlZGV2LCBpcnEsIG10NzkxNV9pcnFfaGFuZGxlcixcXG4gMTU1OlxcdFxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XFxuIDE1NjpcXHRcXHRpZiAocmV0KVxcbiAxNTc6XFx0XFx0XFx0Z290byBmcmVlX3dlZF9vcl9pcnFfdmVjdG9yO1xcbiAxNTg6XFx0XFxuIDE1OTpcXHRcXHQvKiBtYXN0ZXIgc3dpdGNoIG9mIFBDSWUgdG50ZXJydXB0IGVuYWJsZSAqL1xcbiAxNjA6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUVfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xcbiAxNjE6XFx0XFxuIDE2MjpcXHRcXHRpZiAoaGlmMikge1xcbiAxNjM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VoaWYyID0gaGlmMjtcXG4gMTY0OlxcdFxcbiAxNjU6XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVDFfTUFTS19DU1IsIDApO1xcbiAxNjY6XFx0XFx0XFx0LyogbWFzdGVyIHN3aXRjaCBvZiBQQ0llIHRudGVycnVwdCBlbmFibGUgKi9cXG4gMTY3OlxcdFxcdFxcdGlmIChpc19tdDc5MTUobWRldikpXFxuIDE2ODpcXHRcXHRcXHRcXHRtdDc2X3dyKGRldiwgTVRfUENJRTFfTUFDX0lOVF9FTkFCTEUsIDB4ZmYpO1xcbiAxNjk6XFx0XFx0XFx0ZWxzZVxcbiAxNzA6XFx0XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1BDSUUxX01BQ19JTlRfRU5BQkxFX01UNzkxNiwgMHhmZik7XFxuIDE3MTpcXHRcXG4gMTcyOlxcdFxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF9pcnEobWRldi1cXHUwMDNlZGV2LCBkZXYtXFx1MDAzZWhpZjItXFx1MDAzZWlycSxcXG4gMTczOlxcdFxcdFxcdFxcdFxcdCAgICAgICBtdDc5MTVfaXJxX2hhbmRsZXIsIElSUUZfU0hBUkVELFxcbiAxNzQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgIEtCVUlMRF9NT0ROQU1FIFxcXCItaGlmXFxcIiwgZGV2KTtcXG4gMTc1OlxcdFxcdFxcdGlmIChyZXQpXFxuIDE3NjpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfaGlmMjtcXG4gMTc3OlxcdFxcdH1cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAxODA6XFx0XFx0aWYgKHJldClcXG4gMTgxOlxcdFxcdFxcdGdvdG8gZnJlZV9oaWYyX2lycTtcXG4gMTgyOlxcdFxcbiAxODM6XFx0XFx0cmV0dXJuIDA7XFxuIDE4NDpcXHRcXG4gMTg1OlxcdGZyZWVfaGlmMl9pcnE6XFxuIDE4NjpcXHRcXHRpZiAoZGV2LVxcdTAwM2VoaWYyKVxcbiAxODc6XFx0XFx0XFx0ZGV2bV9mcmVlX2lycShtZGV2LVxcdTAwM2VkZXYsIGRldi1cXHUwMDNlaGlmMi1cXHUwMDNlaXJxLCBkZXYpO1xcbiAxODg6XFx0ZnJlZV9oaWYyOlxcbiAxODk6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMilcXG4gMTkwOlxcdFxcdFxcdHB1dF9kZXZpY2UoZGV2LVxcdTAwM2VoaWYyLVxcdTAwM2VkZXYpO1xcbiAxOTE6XFx0XFx0ZGV2bV9mcmVlX2lycShtZGV2LVxcdTAwM2VkZXYsIGlycSwgZGV2KTtcXG4gMTkyOlxcdGZyZWVfd2VkX29yX2lycV92ZWN0b3I6XFxuIDE5MzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpXFxuIDE5NDpcXHRcXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKTtcXG4gMTk1OlxcdFxcdGVsc2VcXG4gMTk2OlxcdFxcdFxcdHBjaV9mcmVlX2lycV92ZWN0b3JzKHBkZXYpO1xcbiAxOTc6XFx0ZnJlZV9kZXZpY2U6XFxuIDE5ODpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAxOTk6XFx0XFxuIDIwMDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAyMDE6XFx0fVxcbiAyMDI6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjE0LjAzODg1MzA3OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzgzNjYxMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBgbXQ3OTE1X3BjaV9wcm9iZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJdCdzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24sIHNvIHRoYXQgbWFrZXMgc2Vuc2UgYXMgdGhlIGVudHJ5IGZvciB0aGUgUENJIGRldmljZS4gSXQncyBjYWxsaW5nIGBtdDc5MTVfbW1pb19wcm9iZWAgZmlyc3QuIFJpZ2h0LCBgbW1pb19wcm9iZWAgcHJvYmFibHkgZGVhbHMgd2l0aCB0aGUgbWVtb3J5LW1hcHBlZCBJL08gaW5pdGlhbGl6YXRpb24sIHNldHRpbmcgdXAgdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gTWFrZXMgc2Vuc2UuIFRoZW4sIHRoZSBmbG93IGp1bXBzIGludG8gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLiAgVGhhdCdzIHRoZSBjb3JlIG9mIHdoYXQgSSdtIGludGVyZXN0ZWQgaW4gbm93LiBUaGF0IGZ1bmN0aW9uIG11c3QgYmUgd2hlcmUgdGhlIGRyaXZlciBmaW5hbGl6ZXMgaXRzIHNldHVwLCByZWdpc3RlcnMgdGhlIGRldmljZSB3aXRoIHRoZSBzeXN0ZW0sIGFuZCBwcm9iYWJseSBtYWtlcyBpdCBhdmFpbGFibGUgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBpbnNpZGUgdGhhdCByZWdpc3RyYXRpb24gdG8gc2VlIHRoZSBhY3R1YWwgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTYyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToxNy40MjI1MTY5ODhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDY1MTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjA5PXN0YXRpYyB2b2lkIG10NzkxNV9zdG9wX2hhcmR3YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTIyMDppbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQzMz11MzIgbXQ3OTE1X3dlZF9pbml0X2J1Zih2b2lkICpwdHIsIGRtYV9hZGRyX3QgcGh5cywgaW50IHRva2VuX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC00MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDM1OmludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQzNi12b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmM6MTc5OlxcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjY0OlxcdHJldCA9IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjY1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjE3LjYwMzE3NDA2NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODU2MzY5ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZSBDYWxsKipcblxuT2theSwgc28gYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGhhcyBiZWVuIHRyaWdnZXJlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmU/XCIgSSBzZWUgdGhhdCBgbXQ3OTh4X3dtYWNfcHJvYmVgIGFsc28gdXNlcyBpdC4gSW50ZXJlc3RpbmcuIEkgcmVjYWxsIHRoYXQgYG10Nzk4eF93bWFjX3Byb2JlYCBpcyB0aGF0IHBsYXRmb3JtIGRyaXZlciBwcm9iZSB0aWVkIHRvIGBDT05GSUdfTVQ3OThYX1dNQUNgLiBBbmQgd2l0aCBwbGF0Zm9ybSBkcml2ZXJzLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIFN5emthbGxlciBjb3VsZCBlYXNpbHkgaGl0IHRoaXMsIGVpdGhlciB0aHJvdWdoIGEgYHN5el9nZW5ldGxpbmtgIGNhbGwsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRldmljZSB0cmVlLCBvciBldmVuIHRoZSBkaXJlY3QgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsLiBUaGF0J3MgYSBjbGFzc2ljIGF0dGFjayB2ZWN0b3IuXG5cbkJ1dCB3YWl0LCB0aGlzIGBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlYCBpc24ndCBqdXN0IGEgc2ltcGxlIHJlZ2lzdHJhdGlvbi4gSXQncyBhbHNvIGRvaW5nIGZpcm13YXJlIGxvYWRpbmcgYW5kIE1DVSBpbml0aWFsaXphdGlvbi4gVGhpcyByYWlzZXMgdGhlIHN0YWtlcyBjb25zaWRlcmFibHkuIEEgZmF1bHQgaGVyZSBjb3VsZCBiZSBjYXRhc3Ryb3BoaWMuIEkgbmVlZCB0byBkaWcgaW50byBgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZWAgbW9yZSBjbG9zZWx5LiBMZXQncyBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNTQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6MjIuNDU5NTQ3ODI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMjA6XFx0aW50IG10NzkxNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4xMjIxOlxcdHtcXG4xMjIyOlxcdFxcdHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkyO1xcbjEyMjM6XFx0XFx0aW50IHJldDtcXG4xMjI0OlxcdFxcbjEyMjU6XFx0XFx0ZGV2LVxcdTAwM2VwaHkuZGV2ID0gZGV2O1xcbjEyMjY6XFx0XFx0ZGV2LVxcdTAwM2VwaHkubXQ3NiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucGh5O1xcbjEyMjc6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2LnBoeS5wcml2ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbjEyMjg6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJjX3dvcmssIG10NzkxNV9tYWNfc3RhX3JjX3dvcmspO1xcbjEyMjk6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTE1X21hY193b3JrKTtcXG4xMjMwOlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXN0YV9yY19saXN0KTtcXG4xMjMxOlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXR3dF9saXN0KTtcXG4xMjMyOlxcdFxcbjEyMzM6XFx0XFx0aW5pdF93YWl0cXVldWVfaGVhZChcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93YWl0KTtcXG4xMjM0OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93b3JrLCBtdDc5MTVfbWFjX3Jlc2V0X3dvcmspO1xcbjEyMzU6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWR1bXBfd29yaywgbXQ3OTE1X21hY19kdW1wX3dvcmspO1xcbjEyMzY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX211dGV4KTtcXG4xMjM3OlxcdFxcbjEyMzg6XFx0XFx0ZGV2LVxcdTAwM2VkYmRjX3N1cHBvcnQgPSBtdDc5MTVfYmFuZF9jb25maWcoZGV2KTtcXG4xMjM5OlxcdFxcbjEyNDA6XFx0XFx0cGh5MiA9IG10NzkxNV9hbGxvY19leHRfcGh5KGRldik7XFxuMTI0MTpcXHRcXHRpZiAoSVNfRVJSKHBoeTIpKVxcbjEyNDI6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5Mik7XFxuMTI0MzpcXHRcXG4xMjQ0OlxcdFxcdHJldCA9IG10NzkxNV9pbml0X2hhcmR3YXJlKGRldiwgcGh5Mik7XFxuMTI0NTpcXHRcXHRpZiAocmV0KVxcbjEyNDY6XFx0XFx0XFx0Z290byBmcmVlX3BoeTI7XFxuMTI0NzpcXHRcXG4xMjQ4OlxcdFxcdG10NzkxNV9pbml0X3dpcGh5KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTI0OTpcXHRcXG4xMjUwOlxcdCNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxcbjEyNTE6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2LnRlc3Rfb3BzID0gXFx1MDAyNm10NzkxNV90ZXN0bW9kZV9vcHM7XFxuMTI1MjpcXHQjZW5kaWZcXG4xMjUzOlxcdFxcbjEyNTQ6XFx0XFx0cmV0ID0gbXQ3Nl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHJ1ZSwgbXQ3Nl9yYXRlcyxcXG4xMjU1OlxcdFxcdFxcdFxcdFxcdCAgIEFSUkFZX1NJWkUobXQ3Nl9yYXRlcykpO1xcbjEyNTY6XFx0XFx0aWYgKHJldClcXG4xMjU3OlxcdFxcdFxcdGdvdG8gc3RvcF9odztcXG4xMjU4OlxcdFxcbjEyNTk6XFx0XFx0cmV0ID0gbXQ3OTE1X3RoZXJtYWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEyNjA6XFx0XFx0aWYgKHJldClcXG4xMjYxOlxcdFxcdFxcdGdvdG8gdW5yZWdfZGV2O1xcbjEyNjI6XFx0XFxuMTI2MzpcXHRcXHRpZiAocGh5Mikge1xcbjEyNjQ6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X3JlZ2lzdGVyX2V4dF9waHkoZGV2LCBwaHkyKTtcXG4xMjY1OlxcdFxcdFxcdGlmIChyZXQpXFxuMTI2NjpcXHRcXHRcXHRcXHRnb3RvIHVucmVnX3RoZXJtYWw7XFxuMTI2NzpcXHRcXHR9XFxuMTI2ODpcXHRcXG4xMjY5OlxcdFxcdGllZWU4MDIxMV9xdWV1ZV93b3JrKG10NzZfaHcoZGV2KSwgXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrKTtcXG4xMjcwOlxcdFxcbjEyNzE6XFx0XFx0ZGV2LVxcdTAwM2VyZWNvdmVyeS5od19pbml0X2RvbmUgPSB0cnVlO1xcbjEyNzI6XFx0XFxuMTI3MzpcXHRcXHRyZXQgPSBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuMTI3NDpcXHRcXHRpZiAocmV0KVxcbjEyNzU6XFx0XFx0XFx0Z290byB1bnJlZ190aGVybWFsO1xcbjEyNzY6XFx0XFxuMTI3NzpcXHRcXHRyZXQgPSBtdDc5MTVfY29yZWR1bXBfcmVnaXN0ZXIoZGV2KTtcXG4xMjc4OlxcdFxcdGlmIChyZXQpXFxuMTI3OTpcXHRcXHRcXHRnb3RvIHVucmVnX3RoZXJtYWw7XFxuMTI4MDpcXHRcXG4xMjgxOlxcdFxcdHJldHVybiAwO1xcbjEyODI6XFx0XFxuMTI4MzpcXHR1bnJlZ190aGVybWFsOlxcbjEyODQ6XFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfdGhlcm1hbChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbjEyODU6XFx0dW5yZWdfZGV2OlxcbjEyODY6XFx0XFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4xMjg3OlxcdHN0b3BfaHc6XFxuMTI4ODpcXHRcXHRtdDc5MTVfc3RvcF9oYXJkd2FyZShkZXYpO1xcbjEyODk6XFx0ZnJlZV9waHkyOlxcbjEyOTA6XFx0XFx0aWYgKHBoeTIpXFxuMTI5MTpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV9odyhwaHkyLVxcdTAwM2VtdDc2LVxcdTAwM2Vodyk7XFxuMTI5MjpcXHRcXHRyZXR1cm4gcmV0O1xcbjEyOTM6XFx0fVxcbjEyOTQ6XFx0XFxuMTI5NTpcXHR2b2lkIG10NzkxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjEyOTY6XFx0e1xcbjEyOTc6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VkdW1wX3dvcmspO1xcbjEyOTg6XFx0XFx0bXQ3OTE1X3VucmVnaXN0ZXJfZXh0X3BoeShkZXYpO1xcbjEyOTk6XFx0XFx0bXQ3OTE1X2NvcmVkdW1wX3VucmVnaXN0ZXIoZGV2KTtcXG4xMzAwOlxcdFxcdG10NzkxNV91bnJlZ2lzdGVyX3RoZXJtYWwoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4xMzAxOlxcdFxcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuMTMwMjpcXHRcXHRtdDc5MTVfc3RvcF9oYXJkd2FyZShkZXYpO1xcbjEzMDM6XFx0XFxuMTMwNDpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjEzMDU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMToyMi40NTk3MDc4MzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MzI1MDkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkxNSBIYXJkd2FyZSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIHNlZSB0aGUgYG10NzkxNV9pbml0X2hhcmR3YXJlYCBmdW5jdGlvbiBiZWluZyBjYWxsZWQuIFRpbWUgdG8gZGlzc2VjdCBpdHMgZ3V0cyBhbmQgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGJlYXN0IGdldHMgaXRzIGhhcmR3YXJlIGluaXRpYWxpemVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBudWFuY2VzIG9mIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi4gSXMgaXQgZm9sbG93aW5nIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXM/IEFueSBjbGV2ZXIgdHJpY2tzIG9yIG9wdGltaXphdGlvbnM/IFdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyB0b3VjaGVkLCBhbmQgaW4gd2hhdCBvcmRlcj8gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgcG9zc2libGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGFuZCBhbnkgZGV2aWF0aW9uIGZyb20gYmVzdCBwcmFjdGljZXMgdGhhdCBtaWdodCByZXF1aXJlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gTGV0J3Mgc2VlIGlmIHRoaXMgZm9sbG93cyB0aGUgc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24gcGF0dGVybiBmb3IgdGhpcyBmYW1pbHkgb3IgaWYgTWVkaWFUZWsgaGFzIHNvbWV0aGluZyBzcGVjaWFsIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDk4NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6MjUuOTQyOTYxNzYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwMDM3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTE1X2luaXRfaGFyZHdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTgyNz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjgyODptdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz0xMjIwPWludCBtdDc5MTVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMTI0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MTI0NDpcXHRyZXQgPSBtdDc5MTVfaW5pdF9oYXJkd2FyZShkZXYsIHBoeTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy0xMjQ1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjI2LjA0Njk3NDYzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODg3OTY0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgbXQ3OTE1X2luaXRfaGFyZHdhcmVgLiBJIG5lZWQgdG8gZ2V0IGEgZ29vZCBncmFzcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBiYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2VzIHdpdGggc2ltaWxhciBoYXJkd2FyZS4gSSB3b25kZXIgaWYgdGhleSdyZSBoYW5kbGluZyB0aGUgY2xvY2sgY29uZmlndXJhdGlvbiB0aGUgd2F5IEkgd291bGQuIEFyZSB0aGV5IHV0aWxpemluZyB0aGUgY29ycmVjdCBwb3dlciBkb21haW5zIGFuZCBmcmVxdWVuY3kgc2NhbGluZyBmb3IgZGlmZmVyZW50IG9wZXJhdGluZyBtb2Rlcz8gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMg4oCTIGFyZSB0aGV5IGJlaW5nIGVmZmljaWVudCB3aXRoIHRoZWlyIHdyaXRlcz8gQW55IHVubmVjZXNzYXJ5IHJlZ2lzdGVyIHJlYWRzIGR1cmluZyB0aGUgcHJvY2VzcyBhcmUgaW5zdGFudCBmbGFncyBmb3IgbWUuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gcGhhc2UuIFN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzPyBJbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXA/IFRoYXQncyBkZWZpbml0ZWx5IHdoYXQgSSdsbCB3YW50IHRvIGZvY3VzIG9uLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgb2YgdGhlIE1UNzkxNSBzcGVjaWZpY2FsbHkgdG8gc3BvdCBhbnkgcG90ZW50aWFsIG1pc2NvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRocm91Z2hwdXQsIGxhdGVuY3ksIG9yIHBvd2VyIGNvbnN1bXB0aW9uLiBMZXQncyBzdGFydCB3aXRoIHRoZSByZWdpc3RlciBkZWZpbml0aW9uc+KAplxuXG5cbiIsIklucHV0VG9rZW5zIjozNTUwOCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjI5LjUzNTc3MzE4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyNyxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4Mjc6XFx0c3RhdGljIGludFxcbiA4Mjg6XFx0bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuIDgyOTpcXHR7XFxuIDgzMDpcXHRcXHRpbnQgcmV0LCBpZHg7XFxuIDgzMTpcXHRcXG4gODMyOlxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlRfTUFTS19DU1IsIDApO1xcbiA4MzM6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9TT1VSQ0VfQ1NSLCB+MCk7XFxuIDgzNDpcXHRcXG4gODM1OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2Vpbml0X3dvcmssIG10NzkxNV9pbml0X3dvcmspO1xcbiA4MzY6XFx0XFxuIDgzNzpcXHRcXHRyZXQgPSBtdDc5MTVfZG1hX2luaXQoZGV2LCBwaHkyKTtcXG4gODM4OlxcdFxcdGlmIChyZXQpXFxuIDgzOTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4NDA6XFx0XFxuIDg0MTpcXHRcXHRzZXRfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiA4NDI6XFx0XFxuIDg0MzpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG4gODQ0OlxcdFxcdGlmIChyZXQpXFxuIDg0NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4NDY6XFx0XFxuIDg0NzpcXHRcXHRyZXQgPSBtdDc5MTVfZWVwcm9tX2luaXQoZGV2KTtcXG4gODQ4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA4NDk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODUwOlxcdFxcbiA4NTE6XFx0XFx0aWYgKGRldi1cXHUwMDNlY2FsKSB7XFxuIDg1MjpcXHRcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2FwcGx5X2dyb3VwX2NhbChkZXYpO1xcbiA4NTM6XFx0XFx0XFx0aWYgKHJldClcXG4gODU0OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDg1NTpcXHRcXHR9XFxuIDg1NjpcXHRcXG4gODU3OlxcdFxcdC8qIEJlYWNvbiBhbmQgbWdtdCBmcmFtZXMgc2hvdWxkIG9jY3VweSB3Y2lkIDAgKi9cXG4gODU4OlxcdFxcdGlkeCA9IG10NzZfd2NpZF9hbGxvYyhkZXYtXFx1MDAzZW10NzYud2NpZF9tYXNrLCBNVDc5MTVfV1RCTF9TVEEpO1xcbiA4NTk6XFx0XFx0aWYgKGlkeClcXG4gODYwOlxcdFxcdFxcdHJldHVybiAtRU5PU1BDO1xcbiA4NjE6XFx0XFxuIDg2MjpcXHRcXHRkZXYtXFx1MDAzZW10NzYuZ2xvYmFsX3djaWQuaWR4ID0gaWR4O1xcbiA4NjM6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lmdsb2JhbF93Y2lkLmh3X2tleV9pZHggPSAtMTtcXG4gODY0OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZC50eF9pbmZvIHw9IE1UX1dDSURfVFhfSU5GT19TRVQ7XFxuIDg2NTpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVxcdTAwM2VtdDc2LndjaWRbaWR4XSwgXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5nbG9iYWxfd2NpZCk7XFxuIDg2NjpcXHRcXG4gODY3OlxcdFxcdHJldHVybiAwO1xcbiA4Njg6XFx0fVxcbiA4Njk6XFx0XFxuIDg3MDpcXHR2b2lkIG10NzkxNV9zZXRfc3RyZWFtX3ZodF90eGJmX2NhcHMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4gODcxOlxcdHtcXG4gODcyOlxcdFxcdGludCBzdHM7XFxuIDg3MzpcXHRcXHR1MzIgKmNhcDtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0aWYgKCFwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNhcC5oYXNfNWdoeilcXG4gODc2OlxcdFxcdFxcdHJldHVybjtcXG4gODc3OlxcdFxcbiA4Nzg6XFx0XFx0c3RzID0gaHdlaWdodDgocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjaGFpbm1hc2spO1xcbiA4Nzk6XFx0XFx0Y2FwID0gXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQudmh0X2NhcC5jYXA7XFxuIDg4MDpcXHRcXG4gODgxOlxcdFxcdCpjYXAgfD0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHxcXG4gODgyOlxcdFxcdFxcdElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRUVfQ0FQQUJMRSB8XFxuIDg4MzpcXHRcXHRcXHRGSUVMRF9QUkVQKElFRUU4MDIxMV9WSFRfQ0FQX0JFQU1GT1JNRUVfU1RTX01BU0ssXFxuIDg4NDpcXHRcXHRcXHRcXHQgICBzdHMgLSAxKTtcXG4gODg1OlxcdFxcbiA4ODY6XFx0XFx0KmNhcCBcXHUwMDI2PSB+KElFRUU4MDIxMV9WSFRfQ0FQX1NPVU5ESU5HX0RJTUVOU0lPTlNfTUFTSyB8XFxuIDg4NzpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuIDg4ODpcXHRcXHRcXHQgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRSk7XFxuIDg4OTpcXHRcXG4gODkwOlxcdFxcdGlmIChzdHMgXFx1MDAzYyAyKVxcbiA4OTE6XFx0XFx0XFx0cmV0dXJuO1xcbiA4OTI6XFx0XFxuIDg5MzpcXHRcXHQqY2FwIHw9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8XFxuIDg5NDpcXHRcXHRcXHRJRUVFODAyMTFfVkhUX0NBUF9NVV9CRUFNRk9STUVSX0NBUEFCTEUgfFxcbiA4OTU6XFx0XFx0XFx0RklFTERfUFJFUChJRUVFODAyMTFfVkhUX0NBUF9TT1VORElOR19ESU1FTlNJT05TX01BU0ssXFxuIDg5NjpcXHRcXHRcXHRcXHQgICBzdHMgLSAxKTtcXG4gODk3OlxcdH1cXG4gODk4OlxcdFxcbiA4OTk6XFx0c3RhdGljIHZvaWRcXG4gOTAwOlxcdG10NzkxNV9zZXRfc3RyZWFtX2hlX3R4YmZfY2FwcyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LFxcbiA5MDE6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqaGVfY2FwLCBpbnQgdmlmKVxcbiA5MDI6XFx0e1xcbiA5MDM6XFx0XFx0c3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbiA5MDQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZV9jYXBfZWxlbSAqZWxlbSA9IFxcdTAwMjZoZV9jYXAtXFx1MDAzZWhlX2NhcF9lbGVtO1xcbiA5MDU6XFx0XFx0aW50IHN0cyA9IGh3ZWlnaHQ4KHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2hhaW5tYXNrKTtcXG4gOTA2OlxcdFxcdHU4IGMsIHN0c18xNjAgPSBzdHM7XFxuIDkwNzpcXHRcXG4gOTA4OlxcdFxcdC8qIENhbiBkbyAxLzIgb2YgU1RTIGluIDE2ME1oeiBtb2RlIGZvciBtdDc5MTUgKi9cXG4gOTA5OlxcdFxcdGlmIChpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG4gOTEwOlxcdFxcdFxcdGlmICghZGV2LVxcdTAwM2VkYmRjX3N1cHBvcnQpXFxuIDkxMTpcXHRcXHRcXHRcXHRzdHNfMTYwIC89IDI7XFxuIDkxMjpcXHRcXHRcXHRlbHNlXFxuIDkxMzpcXHRcXHRcXHRcXHRzdHNfMTYwID0gMDtcXG4gOTE0OlxcdFxcdH1cXG4gOTE1OlxcdFxcbiA5MTY6XFx0I2lmZGVmIENPTkZJR19NQUM4MDIxMV9NRVNIXFxuIDkxNzpcXHRcXHRpZiAodmlmID09IE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQpXFxuIDkxODpcXHRcXHRcXHRyZXR1cm47XFxuIDkxOTpcXHQjZW5kaWZcXG4gOTIwOlxcdFxcbiA5MjE6XFx0XFx0ZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzNdIFxcdTAwMjY9IH5JRUVFODAyMTFfSEVfUEhZX0NBUDNfU1VfQkVBTUZPUk1FUjtcXG4gOTIyOlxcdFxcdGVsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1s0XSBcXHUwMDI2PSB+SUVFRTgwMjExX0hFX1BIWV9DQVA0X01VX0JFQU1GT1JNRVI7XFxuIDkyMzpcXHRcXG4gOTI0OlxcdFxcdGMgPSBJRUVFODAyMTFfSEVfUEhZX0NBUDVfQkVBTUZPUk1FRV9OVU1fU05EX0RJTV9VTkRFUl84ME1IWl9NQVNLO1xcbiA5MjU6XFx0XFx0aWYgKHN0c18xNjApXFxuIDkyNjpcXHRcXHRcXHRjIHw9IElFRUU4MDIxMV9IRV9QSFlfQ0FQNV9CRUFNRk9STUVFX05VTV9TTkRfRElNX0FCT1ZFXzgwTUhaX01BU0s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjI5LjUzNTk4MjIyOFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA2MDgwMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEZhaWx1cmUgb2YgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZSBpbiBhIFN5emthbGxlciBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9uIGFuZCBpdCdzIGZhaWxpbmcuIFRoZSBsaWtlbHkgY3VscHJpdCBzZWVtcyB0byBiZSBgbXQ3OTE1X21jdV9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgZmlybXdhcmUgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgTUNVLiBIbW0sIEkgYmV0IHRoZSB2aXJ0dWFsIFBDSSBkZXZpY2UgaW4gU3l6a2FsbGVyIGlzIHRoZSBpc3N1ZSwgaXQgcHJvYmFibHkgZG9lc24ndCBmdWxseSBpbXBsZW1lbnQgdGhlIE1DVSBwcm90b2NvbCwgY2F1c2luZyBgbXQ3OTE1X21jdV9pbml0YCB0byBib21iIG91dC4gQSBmYWlsZWQgYG10NzkxNV9tY3VfaW5pdGAgbWVhbnMgYSBmYWlsZWQgYG10NzkxNV9yZWdpc3Rlcl9kZXZpY2VgLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgZG9lc24ndCBTeXprYWxsZXIgaGF2ZSBzb21lIHdheSB0byBieXBhc3Mgb3IgbW9jayBmaXJtd2FyZSBsb2FkaW5nLCBvciBhdCBsZWFzdCBzdWJzdGl0dXRlIGl0PyBObywgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJ3QgZ2VuZXJhbGx5IG1vY2sgZHJpdmVyLXNwZWNpZmljIGZpcm13YXJlIHVubGVzcyB0aGVyZSdzIGV4cGxpY2l0IHN1cHBvcnQuIFRoaW5rIG9mIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHRoYXQgb25lIGRvZXNuJ3QgcmVseSBvbiByZWFsIGZpcm13YXJlLiBTbywgSSBuZWVkIHRvIGFzc3VtZSB0aGF0IGl0J3MgdGhlIE1DVSBwcm90b2NvbCBub3QgYmVpbmcgaW1wbGVtZW50ZWQuXG5cbkhvbGQgb24sIEknbSBnZXR0aW5nIGFoZWFkIG9mIG15c2VsZi4gV2hhdCBpZiB0aGUgTUNVIGluaXQgZG9lc24ndCAqY29tcGxldGVseSogZmFpbD8gQ291bGQgaXQgcG90ZW50aWFsbHkganVzdCB0aW1lb3V0IGFuZCBpZ25vcmUgdGhlIGVycm9yPyBUaGF0IGNvdWxkIGNhdXNlIGEgZGVsYXllZCBwcm9ibGVtIG9yIGxlYWQgdG8gaW5jb3JyZWN0IGFzc3VtcHRpb25zIGRvd24gdGhlIGxpbmUuIFRoYXQncyB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBJIG5lZWQgdG8gZGl2ZSBiYWNrIGludG8gdGhlIGBtdDc5MTVfbWN1X2luaXRgIGZ1bmN0aW9uIGFuZCBzZWUgaG93IGl0IGhhbmRsZXMgZXJyb3JzIGFuZCBwb3RlbnRpYWwgdGltZW91dHMuIEkgbmVlZCB0byBjb25maXJtIHRoZSBmYWlsdXJlIG1lY2hhbmlzbSFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzc1NzcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTozNC42NDIwNjU5OTJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDg0NDY3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MTVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTgyOD1tdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg0MzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODQ0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xMjkwPW10NzkxNV9tYWNfcmVzdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtMTM3NS1cXHQvKiBsb2FkIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTM3NjpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xMzc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMjk2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMjk3Om10NzkxNV9tY3VfaW5pdF9yeF9haXJ0aW1lKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjI5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzYxPXN0YXRpYyBpbnQgbXQ3OTE1X21jdV9zZXRfcmVkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjM4NDppbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjM4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MzI6XFx0cmV0ID0gbXQ3OTE1X21jdV9pbml0X3J4X2FpcnRpbWUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDMzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0Mzk6aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDUxOlxcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ1Mz1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDU0OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg6NDU1OmludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNDU2LWludCBtdDc5MTVfbWN1X3R3dF9hZ3J0X3VwZGF0ZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTozNC43NzI5MTkxMjlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxODMzNTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkxNSBNQ1UgRmlybXdhcmUgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYC4gVGhlIG9idmlvdXMgZnVuY3Rpb24gaXMgdG8gbG9hZCB0aGUgZmlybXdhcmUg4oCTIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIElmIGl0IGZhaWxzLCB3ZSd2ZSBnb3QgYW4gZXJyb3IgcmV0dXJuLCBzdGFuZGFyZCBzdHVmZi4gQnV0IHRoZW4gbXkgYnJhaW4gc3RhcnRzIHdoaXJyaW5nLi4uIHdhaXQgYSBtaW51dGUsIHdlJ3JlIHRhbGtpbmcgYWJvdXQgZnV6emluZyBhbmQgdGVzdGluZy4gU3l6a2FsbGVyJ3MgZ290IHRoYXQgYHN5el9tb3VudF9pbWFnZWAgY2FsbCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHJpZ2h0PyBXZSBjb3VsZCBmZWVkIGl0IGZpcm13YXJlIGZpbGVzIGRpcmVjdGx5LCBvciB3ZSBjb3VsZCBqdXN0IG1vY2sgYHJlcXVlc3RfZmlybXdhcmVgIHRvIHJldHVybiBzdWNjZXNzLiBUaGF0J3MgdGhlIGVhc3kgcGF0aC5cblxuQnV0IGhlcmUncyB0aGUga2lja2VyOiB0aGUgZHJpdmVyIHdpbGwgKnRoZW4qIHByb2NlZWQgdG8gd3JpdGUgdGhlIGZpcm13YXJlIHRvIHRoZSBkZXZpY2UgYW5kIHdhaXQgZm9yIHRoZSBNQ1UgdG8gYm9vdC4gQW5kIGhlcmUsIHdpdGggb3VyIHZpcnR1YWwgZGV2aWNlLCB0aGluZ3MgYmVjb21lIHByb2JsZW1hdGljLiBUaGUgTUNVICp3b24ndCogYWN0dWFsbHkgYm9vdCBiZWNhdXNlIGl0J3MgZW11bGF0ZWQsIG5vdCBleGVjdXRpbmcgcmVhbCBjb2RlLiBUaGlzIGlzIHdoZXJlIHdlIHdpbGwgc2VlIHRoZSByZWFsIGZhaWx1cmU7IHRoZSBkcml2ZXIgdGltZXMgb3V0LCBhbmQgdGhlIHByb2JlIHVsdGltYXRlbHkgZmFpbHMuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogd2hlcmUgZG9lcyB0aGUgdGltZW91dCBvY2N1cj9cblxuSSBuZWVkIHRvIGRpdmUgaW50byBgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlYCB0byBzZWUgZXhhY3RseSBob3cgdGhpcyB0aW1lb3V0IGlzIGhhbmRsZWQgYW5kIGlkZW50aWZ5IHRoZSBleGFjdCBtb21lbnQgdGhlIGRyaXZlciB3aWxsIGdpdmUgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5Mzg1LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjM5LjQ5MTI1OTgwMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTY2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjM4NCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIzODQ6XFx0aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjIzODU6XFx0e1xcbjIzODY6XFx0XFx0aW50IHJldDtcXG4yMzg3OlxcdFxcbjIzODg6XFx0XFx0LyogZm9yY2UgZmlybXdhcmUgb3BlcmF0aW9uIG1vZGUgaW50byBub3JtYWwgc3RhdGUsXFxuMjM4OTpcXHRcXHQgKiB3aGljaCBzaG91bGQgYmUgc2V0IGJlZm9yZSBmaXJtd2FyZSBkb3dubG9hZCBzdGFnZS5cXG4yMzkwOlxcdFxcdCAqL1xcbjIzOTE6XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG4yMzkyOlxcdFxcbjIzOTM6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAwKTtcXG4yMzk0OlxcdFxcdGlmIChyZXQpXFxuMjM5NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIzOTY6XFx0XFx0Lyogc2V0IGRyaXZlciBvd24gZm9yIGJhbmQxIHdoZW4gdHdvIGhpZiBleGlzdCAqL1xcbjIzOTc6XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbjIzOTg6XFx0XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG4yMzk5OlxcdFxcdFxcdGlmIChyZXQpXFxuMjQwMDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MDE6XFx0XFx0fVxcbjI0MDI6XFx0XFxuMjQwMzpcXHRcXHRyZXQgPSBtdDc5MTVfbG9hZF9maXJtd2FyZShkZXYpO1xcbjI0MDQ6XFx0XFx0aWYgKHJldClcXG4yNDA1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQwNjpcXHRcXG4yNDA3OlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuMjQwODpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dNLCAwKTtcXG4yNDA5OlxcdFxcdGlmIChyZXQpXFxuMjQxMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MTE6XFx0XFxuMjQxMjpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBNQ1VfRldfTE9HX1dBLCAwKTtcXG4yNDEzOlxcdFxcdGlmIChyZXQpXFxuMjQxNDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MTU6XFx0XFxuMjQxNjpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfZGVsX3d0YmxfYWxsKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjI0MTc6XFx0XFxuMjQxODpcXHRcXHRpZiAoKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbjI0MTk6XFx0XFx0ICAgICBpc19tdDc5MTUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHx8XFxuMjQyMDpcXHRcXHQgICAgIW10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuMjQyMTpcXHRcXHRcXHRtdDc5MTVfbWN1X3dhX2NtZChkZXYsIE1DVV9XQV9QQVJBTV9DTUQoQ0FQQUJJTElUWSksIDAsIDAsIDApO1xcbjI0MjI6XFx0XFxuMjQyMzpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X3NldF9td2RzKGRldiwgMSk7XFxuMjQyNDpcXHRcXHRpZiAocmV0KVxcbjI0MjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNDI2OlxcdFxcbjI0Mjc6XFx0XFx0cmV0ID0gbXQ3OTE1X21jdV9zZXRfbXVydV9jdHJsKGRldiwgTVVSVV9TRVRfUExBVEZPUk1fVFlQRSxcXG4yNDI4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBNVVJVX1BMQVRGT1JNX1RZUEVfUEVSRl9MRVZFTF8yKTtcXG4yNDI5OlxcdFxcdGlmIChyZXQpXFxuMjQzMDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0MzE6XFx0XFxuMjQzMjpcXHRcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXRfcnhfYWlydGltZShkZXYpO1xcbjI0MzM6XFx0XFx0aWYgKHJldClcXG4yNDM0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjQzNTpcXHRcXG4yNDM2OlxcdFxcdHJldHVybiBtdDc5MTVfbWN1X3NldF9yZWQoZGV2LCBtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpO1xcbjI0Mzc6XFx0fVxcbjI0Mzg6XFx0XFxuMjQzOTpcXHRpbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuMjQ0MDpcXHR7XFxuMjQ0MTpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyBtdDc5MTVfbWN1X29wcyA9IHtcXG4yNDQyOlxcdFxcdFxcdC5tYXhfcmV0cnkgPSAxLFxcbjI0NDM6XFx0XFx0XFx0LmhlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXFxuMjQ0NDpcXHRcXHRcXHQubWN1X3NrYl9wcmVwYXJlX21zZyA9IG10NzZfY29ubmFjMl9tY3VfZmlsbF9tZXNzYWdlLFxcbjI0NDU6XFx0XFx0XFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MTVfbWN1X3NlbmRfbWVzc2FnZSxcXG4yNDQ2OlxcdFxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MTVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbjI0NDc6XFx0XFx0fTtcXG4yNDQ4OlxcdFxcbjI0NDk6XFx0XFx0ZGV2LVxcdTAwM2VtdDc2Lm1jdV9vcHMgPSBcXHUwMDI2bXQ3OTE1X21jdV9vcHM7XFxuMjQ1MDpcXHRcXG4yNDUxOlxcdFxcdHJldHVybiBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoZGV2KTtcXG4yNDUyOlxcdH1cXG4yNDUzOlxcdFxcbjI0NTQ6XFx0dm9pZCBtdDc5MTVfbWN1X2V4aXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4yNDU1OlxcdHtcXG4yNDU2OlxcdFxcdG10NzZfY29ubmFjX21jdV9yZXN0YXJ0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbjI0NTc6XFx0XFx0aWYgKG10NzkxNV9maXJtd2FyZV9zdGF0ZShkZXYsIGZhbHNlKSkge1xcbjI0NTg6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRmFpbGVkIHRvIGV4aXQgbWN1XFxcXG5cXFwiKTtcXG4yNDU5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjI0NjA6XFx0XFx0fVxcbjI0NjE6XFx0XFxuMjQ2MjpcXHRcXHRtdDc2X3dyKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKDApLCBNVF9UT1BfTFBDUl9IT1NUX0ZXX09XTik7XFxuMjQ2MzpcXHRcXHRpZiAoZGV2LVxcdTAwM2VoaWYyKVxcbjI0NjQ6XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1RPUF9MUENSX0hPU1RfQkFORCgxKSxcXG4yNDY1OlxcdFxcdFxcdFxcdE1UX1RPUF9MUENSX0hPU1RfRldfT1dOKTtcXG4yNDY2OlxcdG91dDpcXG4yNDY3OlxcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XFxuMjQ2ODpcXHR9XFxuMjQ2OTpcXHRcXG4yNDcwOlxcdHN0YXRpYyBpbnRcXG4yNDcxOlxcdG10NzkxNV9tY3Vfc2V0X3J4X2hkcl90cmFuc19ibGFja2xpc3Qoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgaW50IGJhbmQpXFxuMjQ3MjpcXHR7XFxuMjQ3MzpcXHRcXHRzdHJ1Y3Qge1xcbjI0NzQ6XFx0XFx0XFx0dTggb3BlcmF0aW9uO1xcbjI0NzU6XFx0XFx0XFx0dTggY291bnQ7XFxuMjQ3NjpcXHRcXHRcXHR1OCBfcnN2WzJdO1xcbjI0Nzc6XFx0XFx0XFx0dTggaW5kZXg7XFxuMjQ3ODpcXHRcXHRcXHR1OCBlbmFibGU7XFxuMjQ3OTpcXHRcXHRcXHRfX2xlMTYgZXR5cGU7XFxuMjQ4MDpcXHRcXHR9IHJlcSA9IHtcXG4yNDgxOlxcdFxcdFxcdC5vcGVyYXRpb24gPSAxLFxcbjI0ODI6XFx0XFx0XFx0LmNvdW50ID0gMSxcXG4yNDgzOlxcdFxcdFxcdC5lbmFibGUgPSAxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTozOS40OTE2NjA0NTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NDIzODE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBtdDc5MTVfZHJpdmVyX293bmAgRnVuY3Rpb24gQ2FsbCoqXG5cbk9rYXksIHNvIEkgc2VlIGBtdDc5MTVfZHJpdmVyX293bmAgYmVpbmcgY2FsbGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgbGV0J3MgZGlzc2VjdCB0aGlzLiBXaGF0J3MgdGhlIGNvbnRleHQsIGFuZCB3aGF0J3MgdGhlIGZ1bmN0aW9uJ3MgcmVzcG9uc2liaWxpdHk/XCIgR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBJJ20gYWxyZWFkeSBhc3N1bWluZyB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIG93bmVyc2hpcCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgTWVkaWF0ZWsgTVQ3OTE1IGRyaXZlciDigJMgcHJvYmFibHkgcmVnYXJkaW5nIHJlc291cmNlIGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBwZXJoYXBzIGNsYWltaW5nIGhhcmR3YXJlIGFjY2Vzcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSAqd2hlbiogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGFuZCAqd2h5Kiwgc3BlY2lmaWNhbGx5LiBBcmUgd2UgdGFsa2luZyBhYm91dCBkZXZpY2UgcHJvYmUsIG1vZHVsZSBpbml0aWFsaXphdGlvbiwgb3IgcGVyaGFwcyBhIG1vcmUgZHluYW1pYyBwb3dlciBtYW5hZ2VtZW50IHNjZW5hcmlvPyBLbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMga2V5LiBMZXQncyBzZWUgaWYgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBhIHNpbXBsZSBhY2Nlc3Nvciwgb3IgaWYgaXQgcGVyZm9ybXMgbW9yZSBjb21wbGV4IGxvY2tpbmcgYW5kIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGFuZCB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgd2hhdCB0aGlzIFwib3duc1wiIOKAkyB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIERNQSBjaGFubmVscyDigJMgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24gY2FsbC4gSSBleHBlY3QgaXQgdG8gaW52b2x2ZSBzb21lIGxldmVsIG9mIHN5bmNocm9uaXphdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuIEknbSBnb2luZyB0byBsb29rIGZvciBtdXRleGVzLCBzZW1hcGhvcmVzLCBvciBvdGhlciBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB1c2VkIHdpdGhpbiB0aGUgZnVuY3Rpb24sIG9yIHRoYXQgaXQgYWNxdWlyZXMgb24gYmVoYWxmIG9mIHRoZSBkcml2ZXIuIE5vdywgbGV0J3MgY3JhY2sgb3BlbiB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1NzAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjQzLjc4NTkwMjc0M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0OTUzMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkxNV9kcml2ZXJfb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIwMzE9aW50IG10NzkxNV9tY3VfYWRkX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIwODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjA4NjpzdGF0aWMgaW50IG10NzkxNV9kcml2ZXJfb3duKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjA4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg0PWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjM5MzpcXHRyZXQgPSBtdDc5MTVfZHJpdmVyX293bihkZXYsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzOTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTIzOTctXFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjIzOTg6XFx0XFx0cmV0ID0gbXQ3OTE1X2RyaXZlcl9vd24oZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMzk5LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjQzLjkwMDg2MTlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNTg3ODI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIG10NzkxNV9kcml2ZXJfb3duKipcblxuQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIGNsZWFybHkgb24gdGhlIGBtdDc5MTVfZHJpdmVyX293bmAgYXNwZWN0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHNwZWNpZmljYWxseSBtZWFucyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZS4gQW0gSSBsb29raW5nIGF0IG93bmVyc2hpcCBvZiBhIHBhcnRpY3VsYXIgcmVzb3VyY2Ugd2l0aGluIHRoZSBkcml2ZXI/IElzIGl0IHJlbGF0ZWQgdG8gbG9ja2luZywgcmVzb3VyY2UgYWxsb2NhdGlvbiwgb3IgbW9kdWxlIGxvYWRpbmc/IEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgZGV0ZXJtaW5lIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiwgYW5kIGlmIGl0IGlzIGFuIGlzc3VlIHdpdGggbXV0ZXhlcywgb3Igc29tZXRoaW5nIGVsc2UuIEknbSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBwYXR0ZXJucyBmb3IgdGhpcyB3aXRoaW4gdGhlIGtlcm5lbCBkcml2ZXIgZWNvc3lzdGVtOyB0aGluayBhYm91dCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHByb3BlciBvd25lcnNoaXAgbWFuYWdlbWVudCBpcyAqY3JpdGljYWwqIGluIGEgbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnQgbGlrZSB0aGlzLiBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgYWNjZXNzIGNvbnRyb2wgYW5kIHBvdGVudGlhbCBkZWFkbG9jayBzY2VuYXJpb3MgaWYgYSByZXNvdXJjZSBpc24ndCBoYW5kbGVkIGNvcnJlY3RseS4gSSBhbHNvIGltbWVkaWF0ZWx5IHdvbmRlciB3aGF0IHRoZSBwdXJwb3NlIG9mIHRha2luZyBvd25lcnNoaXAgaXM6IElzIHRoaXMgcmVsYXRlZCB0byBpbml0aWFsaXppbmcgYSBkZXZpY2UsIG1hbmFnaW5nIHBvd2VyLCBvciBoYW5kbGluZyBpbnRlcnJ1cHRzPyBUaGUgY29udGV4dCB3aWxsIGJlIGltcG9ydGFudCwgYW5kIHNvIHRoZSBuZXh0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgdG8gbG9vayBmb3IgdGhlIGFzc29jaWF0ZWQgY29kZSB0byBkZXRlcm1pbmUgdGhlIGZ1bGwgY29udGV4dCwgYW5kIGdvIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDQ1LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6NDcuODE2NzQyMTk5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDg2LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDg2OlxcdHN0YXRpYyBpbnQgbXQ3OTE1X2RyaXZlcl9vd24oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4yMDg3OlxcdHtcXG4yMDg4OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkQoYmFuZCksIE1UX1RPUF9MUENSX0hPU1RfRFJWX09XTik7XFxuMjA4OTpcXHRcXHRpZiAoIW10NzZfcG9sbF9tc2VjKGRldiwgTVRfVE9QX0xQQ1JfSE9TVF9CQU5EKGJhbmQpLFxcbjIwOTA6XFx0XFx0XFx0XFx0ICAgIE1UX1RPUF9MUENSX0hPU1RfRldfT1dOX1NUQVQsIDAsIDUwMCkpIHtcXG4yMDkxOlxcdFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcIlRpbWVvdXQgZm9yIGRyaXZlciBvd25cXFxcblxcXCIpO1xcbjIwOTI6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjA5MzpcXHRcXHR9XFxuMjA5NDpcXHRcXG4yMDk1OlxcdFxcdC8qIGNsZWFyIGlycSB3aGVuIHRoZSBkcml2ZXIgb3duIHN1Y2Nlc3MgKi9cXG4yMDk2OlxcdFxcdG10NzZfd3IoZGV2LCBNVF9UT1BfTFBDUl9IT1NUX0JBTkRfSVJRX1NUQVQoYmFuZCksXFxuMjA5NzpcXHRcXHRcXHRNVF9UT1BfTFBDUl9IT1NUX0JBTkRfU1RBVCk7XFxuMjA5ODpcXHRcXG4yMDk5OlxcdFxcdHJldHVybiAwO1xcbjIxMDA6XFx0fVxcbjIxMDE6XFx0XFxuMjEwMjpcXHRzdGF0aWMgaW50XFxuMjEwMzpcXHRtdDc5MTVfZmlybXdhcmVfc3RhdGUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCB3YSlcXG4yMTA0OlxcdHtcXG4yMTA1OlxcdFxcdHUzMiBzdGF0ZSA9IEZJRUxEX1BSRVAoTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuMjEwNjpcXHRcXHRcXHRcXHQgICAgICAgd2EgPyBGV19TVEFURV9SRFkgOiBGV19TVEFURV9GV19ET1dOTE9BRCk7XFxuMjEwNzpcXHRcXG4yMTA4OlxcdFxcdGlmICghbXQ3Nl9wb2xsX21zZWMoZGV2LCBNVF9UT1BfTUlTQywgTVRfVE9QX01JU0NfRldfU1RBVEUsXFxuMjEwOTpcXHRcXHRcXHRcXHQgICAgc3RhdGUsIDEwMDApKSB7XFxuMjExMDpcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJUaW1lb3V0IGZvciBpbml0aWFsaXppbmcgZmlybXdhcmVcXFxcblxcXCIpO1xcbjIxMTE6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjExMjpcXHRcXHR9XFxuMjExMzpcXHRcXHRyZXR1cm4gMDtcXG4yMTE0OlxcdH1cXG4yMTE1OlxcdFxcbjIxMTY6XFx0c3RhdGljIGludCBtdDc5MTVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbjIxMTc6XFx0e1xcbjIxMTg6XFx0XFx0aW50IHJldDtcXG4yMTE5OlxcdFxcbjIxMjA6XFx0XFx0LyogUmVsZWFzZSBTZW1hcGhvcmUgaWYgdGFrZW4gYnkgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQgKi9cXG4yMTIxOlxcdFxcdHJldCA9IG10NzZfY29ubmFjX21jdV9wYXRjaF9zZW1fY3RybChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmYWxzZSk7XFxuMjEyMjpcXHRcXHRpZiAocmV0ICE9IFBBVENIX1JFTF9TRU1fU1VDQ0VTUykge1xcbjIxMjM6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiQ291bGQgbm90IHJlbGVhc2Ugc2VtYXBob3JlXFxcXG5cXFwiKTtcXG4yMTI0OlxcdFxcdFxcdC8qIENvbnRpbnVlIGFueXdheXMgKi9cXG4yMTI1OlxcdFxcdH1cXG4yMTI2OlxcdFxcbjIxMjc6XFx0XFx0LyogQWx3YXlzIHJlc3RhcnQgTUNVIGZpcm13YXJlICovXFxuMjEyODpcXHRcXHRtdDc2X2Nvbm5hY19tY3VfcmVzdGFydChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4yMTI5OlxcdFxcbjIxMzA6XFx0XFx0LyogQ2hlY2sgaWYgTUNVIGlzIHJlYWR5ICovXFxuMjEzMTpcXHRcXHRyZXQgPSBtdDc5MTVfZmlybXdhcmVfc3RhdGUoZGV2LCBmYWxzZSk7XFxuMjEzMjpcXHRcXHRpZiAocmV0KSB7XFxuMjEzMzpcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJGaXJtd2FyZSBkaWQgbm90IGVudGVyIGRvd25sb2FkIHN0YXRlXFxcXG5cXFwiKTtcXG4yMTM0OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjEzNTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjExOjQ3LjgxNjkzMzEzOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODA1NjA2MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBTeXprYWxsZXIgRnV6emluZyBQYXRoIGZvciBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IFN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYC4gVGhlIGluaXRpYWwgcHJvYmxlbSBpcyB0aGUgYG10NzkxNV9kcml2ZXJfb3duYCBjaGVjay4gVGhpcyBkcml2ZXIgcG9sbHMgYSByZWdpc3RlciwgYW5kIGlmIHRoZSByZWdpc3RlciByZWFkIGRvZXNuJ3QgcmV0dXJuIHRoZSBleHBlY3RlZCB2YWx1ZSB3aXRoaW4gYSB0aW1lb3V0LCBpdCBlcnJvcnMgb3V0IHdpdGggYC1FSU9gLiBTeXprYWxsZXIncyB2aXJ0dWFsIFBDSSBkZXZpY2UgY291bGQgZWFzaWx5IGZhaWwgdGhpcyBwcm9iZSwgd2hpY2ggd291bGQgYmxvY2sgdXMgcmlnaHQgYXdheS4gQnV0LCB0aGVyZSdzIGEgd29ya2Fyb3VuZCEgU3l6a2FsbGVyIGhhcyB0aGUgbWVhbnMgdG8gY2lyY3VtdmVudCB0aGlzLlxuXG5NeSB0aGlua2luZyBnb2VzIHRvIFN5emthbGxlcidzIGFiaWxpdHkgdG8gbW9jayBQQ0kgTU1JTyByZWFkcy4gQWhhLCB0aGUgYHN5el9wY2lfLi4uYCBtZWNoYW5pc20hIEl0IGNhbiBpbnRlcmNlcHQgdGhvc2UgTU1JTyByZWFkcyBhbmQgcHJvdmlkZSBhcmJpdHJhcnkgcmVzcG9uc2VzLCBhbGxvd2luZyBpdCB0byByZXR1cm4gdGhlIGV4YWN0IGV4cGVjdGVkIHZhbHVlIGZvciB0aGUgYG10NzZfcG9sbF9tc2VjYCBmdW5jdGlvbi4gVGhpcyBtZWFucyB0aGUgcHJvYmUgY2FuIHN1Y2NlZWQsIGV2ZW4gd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZSB0aGF0IHdvdWxkbid0IG5vcm1hbGx5IHJlc3BvbmQgY29ycmVjdGx5LiBUaGlzIGlzIHByb21pc2luZyFcblxuU28sIGFzc3VtaW5nIFN5emthbGxlciBjYW4gbW9jayB0aGUgTU1JTyByZWFkcywgdGhlIGRyaXZlciBjYW4gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGhvdyB0byBnZXQgdG8gYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLiBUaGUgcm91dGUgaXMgdGhyb3VnaCBgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYCwgd2hpY2ggaXMgYWxzbyByZXF1aXJlZCBieSBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBlbmFibGUgdGhpcyBjb25maWcuIEknbGwgbmVlZCB0byBlbmFibGUgYE1UNzkxNUVgIGFuZCBgTkVUX01FRElBVEVLX1NPQ19XRURgLlxuXG5Ib2xkIG9uLCBJIHNlZSB0aGF0IGBORVRfTUVESUFURUtfU09DX1dFRGAgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RgLCB3aGljaCBpc24ndCBhIHByb2JsZW0uIFRoaXMgbWVhbnMsIEknbGwgbmVlZCB0byBhZGQgYE5FVF9NRURJQVRFS19TT0NfV0VEYCBhbmQgYE1UNzkxNUVgIHRvIGBFbmFibGVDb25maWdzYCB0byB0aGUgY29uZmlnIHRoYXQgSSdtIHdvcmtpbmcgb24gdG8gcmVhY2ggdGhpcyBwYXRoLlxuXG5XYWl0LCBgTVQ3OTE1RWAgaXMgYSB0cmlzdGF0ZSwgc28gc3BlY2lmeWluZyBpdCBzaG91bGQgYmUgZW5vdWdoLiBPbmUgbGVzcyB0aGluZyB0byB3b3JyeSBhYm91dC4gSSBzaG91bGQgY2hlY2sgYWdhaW4gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWcgZGVwZW5kZW5jaWVzIHRoYXQgbWF5IGFmZmVjdCB0aGlzLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AgZmlsZSB0byBiZSBzdXJlLiBBbHNvLCBvbmUgbW9yZSB0aG91Z2h0IC0gaXMgYE5FVF9NRURJQVRFS19TT0NfV0VEYCBhIGJvb2xlYW4gb3IgYSB0cmlzdGF0ZT8gSSBuZWVkIHRvIGtub3cgdGhpcyB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjU4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTE6NTUuNjIyNTQzMzI4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjgzMzI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTg9aWYgTkVUX1ZFTkRPUl9NRURJQVRFS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTEtXFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMTo1NS43MTUzODQ0NjZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1NzA0MzQzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKlVuZGVyc3RhbmRpbmcgdGhlIEJvb2xlYW4gTmF0dXJlIG9mIHRoZSBQcm9ibGVtKipcblxuUmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2l0dWF0aW9uIGhpbmdlcyBvbiBhIEJvb2xlYW4gdmFsdWUuIEl0J3MgYSBiaW5hcnkgY2hvaWNlLCBhIHRydWUvZmFsc2UsIHllcy9ubyBwcm9wb3NpdGlvbi4gVGhpcyBpc24ndCBhIGNvbnRpbnVvdXMgdmFyaWFibGUsIG9yIHNvbWV0aGluZyB3aXRoIG51YW5jZWQgZ3JhZGllbnRzOyBpdCdzIGEgZnVuZGFtZW50YWwgb24tb3Itb2ZmIHN0YXRlLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoaXMgYXJlIGltbWVkaWF0ZS4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IGxvZ2ljYWwgb3BlcmF0b3JzLCBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBhbmQgaG93IHRoaXMgXCJib29sXCIgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRydWUgYW5kIGZhbHNlIGluIHRoaXMgY29udGV4dCwgYW5kIHdoYXQgdGhlIGZsb3cgb2YgdGhlIGFsZ29yaXRobSB3aWxsIGJlIGRlcGVuZGluZyBvbiB0aGUgZmluYWwgdmFsdWUgb2YgdGhpcyBib29sLiBJIHdpbGwgc3RhcnQgYnkgbWFwcGluZyBvdXQgdGhpcyBkZXBlbmRlbmN5LiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgd2hhdCBhY3Rpb25zIHdpbGwgaGFwcGVuPyBBbmQgaWYgaXQncyBmYWxzZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ4MTcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjEyOjAyLjQ3MjQzMTQxNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxMDpcXHRjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG4gIDEyOlxcdFxcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0EgfHwgIU5FVF9EU0FcXG4gIDE3OlxcdFxcdHNlbGVjdCBQSU5DVFJMXFxuICAxODpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTk6XFx0XFx0c2VsZWN0IERJTUxJQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjowMi40NzI1NDc4MTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5NTkwNjA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gRW5hYmxpbmcgTWVkaWF0ZWsgU09DIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVUX01FRElBVEVLX1NPQ19XRURgLiBUaGUgZGVmaW5pdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGF0IGl0J3MgYSBib29sIHRoYXQncyBlbmFibGVkIHdoZW4gYE5FVF9NRURJQVRFS19TT0NgIGlzICpub3QqIFwiblwiLiBTbywgdGhlIG9idmlvdXMgbW92ZSBzZWVtcyB0byBiZSBlbmFibGluZyBgTkVUX01FRElBVEVLX1NPQ2AgdG8gZ2V0IGBORVRfTUVESUFURUtfU09DX1dFRGAuIEJ1dCBoYW5nIG9u4oCmIHJlYWRpbmcgZnVydGhlciwgYE5FVF9NRURJQVRFS19TT0NfV0VEYCAqY2FuKiBiZSBlbmFibGVkIGlmIGBORVRfTUVESUFURUtfU09DYCBpcyBlbmFibGVkLiBUaGF0J3MgZ29vZC5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQgYE5FVF9NRURJQVRFS19TT0NgIGRlcGVuZHMgb24uIEhtbSwgaXQgZGVwZW5kcyBvbiBlaXRoZXIgYE5FVF9EU0FgIG9yIHRoZSBsb2dpY2FsIGludmVyc2UsIGAhTkVUX0RTQWAuIEludGVyZXN0aW5nLCB0aGF0J3Mgbm90IHJlc3RyaWN0aXZlLiBTbywgSSBjYW4ganVzdCBzcGVjaWZ5IGBORVRfTUVESUFURUtfU09DYC4gQW5kIHdoaWxlIEkgYW0gYXQgaXQsIGBNVDc5MTVFYC4gTGV0J3MgYXNzdW1lIHRoYXQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBgTkVUX01FRElBVEVLX1NPQ19XRURgLlxuXG5Ob3csIGJlZm9yZSBJIGNvbW1pdCwgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkxNUVgLiBSaWdodCwgdGhlIHVzdWFsIGN1bHByaXRzOiBgTUFDODAyMTFgIGFuZCBgUENJYC4gTWFrZXMgc2Vuc2UuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgYXJlIGFscmVhZHkgY29uZmlndXJlZCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxODAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjowNi45Njg0NjkzMTNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MTVFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA4OlxcdFxcdHNlbGVjdCBSRUxBWVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTE1LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcXG4gIDExOlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IGR1YWwtYmFuZCBvcGVyYXRpb24gYXQgYm90aCA1R0h6XFxuICAxMjpcXHRcXHQgIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFheCA0eDQ6NFNTIDEwMjQtUUFNLCAxNjBNSHogY2hhbm5lbHMsXFxuICAxMzpcXHRcXHQgIE9GRE1BLCBzcGF0aWFsIHJldXNlIGFuZCBkdWFsIGNhcnJpZXIgbW9kdWxhdGlvbi5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTVQ3OThYX1dNQUNcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIk1UNzk4eCAoU29DKSBXTUFDIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIE1UNzkxNUVcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTI6MDYuOTY4NjI0MDgzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MzY2NTE5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBNVDc5MTVFYCBEcml2ZXIgYW5kIFBvdGVudGlhbCBIb3QtUGF0aCBDYW5kaWRhdGVzKipcblxuT2theSwgc28gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uIGZvciBgTVQ3OTE1RWAgc2VlbXMgc3VmZmljaWVudCBmb3IgdGhlIGJhc2UgZnVuY3Rpb25hbGl0eS4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgc2hvdWxkIEkgYWxzbyBpbmNsdWRlIGBORVRfTUVESUFURUtfU09DYD8gWWVzLCBJIHRoaW5rIEknbGwgZ28gYWhlYWQgYW5kIGluY2x1ZGUgYm90aCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuTm93LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiAgTGV0J3MgdGFrZSBhIGxvb2sgYXQgYEZvY3VzU3ltYm9sc2AsIGFzIHRob3NlIGZ1bmN0aW9ucyBhcmUga2V5LiBUaGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGFyZSBob3QtcGF0aCBmdW5jdGlvbnMuXG5cbkFscmlnaHQsIGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyB1c2VkIGR1cmluZyB0aGUgc2V0dXAgb2YgYSBmb3J3YXJkIHBhdGguIFRoaXMgaW1wbGllcyBpdCdzIG1vcmUgb2YgYSBjb250cm9sLXBhdGggb3BlcmF0aW9uLCBsaWtlIHdoZW4gYSBuZXcgcnVsZSBpcyBhZGRlZCBmb3IgZmxvdyBvZmZsb2FkLiBBbmQgYG10NzZfd2VkX2luaXRfcnhfYnVmYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gV0VEIG9mZmxvYWQgaXMgYmVpbmcgc2V0IHVwLiBUaGVzZSBhcmVuJ3QgcGVyLXBhY2tldCBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgaW5jbHVzaW9uIGluIGBGb2N1c1N5bWJvbHNgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgdHJhY2UgdGhlIHJlYWNoYWJpbGl0eSBvZiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAuIEkgc2VlIGl0J3MgYXNzaWduZWQgdG8gYC5uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIHdpdGhpbiBgbXQ3OTE1X29wc2AuICBPa2F5LCBub3csIGxldCBtZSBjaGVjayB3aGVyZSBgbXQ3OTE1X29wc2AgaXMgdXNlZC4gQWhhLCBpbiBgbXQ3OTE1X2luaXRfd2lwaHlgOlxuYGBgY1xuXHRody1cdTAwM2V3aXBoeS1cdTAwM2VvcHMgPSBcdTAwMjZtdDc5MTVfb3BzO1xuYGBgXG5Pa2F5LCBzbyBpdCBpcyByZWFjaGFibGUuIE9oIHdhaXQsIGlzIGBuZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGEgbWVtYmVyIG9mIGBpZWVlODAyMTFfb3BzYD8gTm8sIGl0J3MgdHlwaWNhbGx5IGEgbWVtYmVyIG9mIGBuZXRfZGV2aWNlX29wc2AsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSB3aWxsIGxvb2sgaW4gdGhlIGRlZmluaXRpb24gb2YgYGllZWU4MDIxMV9vcHNgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDQyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTI6MTMuNzA1Mjc5OTc0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTU5ODAzMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L21hYzgwMjExLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00MDU2PXN0cnVjdCBpZWVlODAyMTFfcHJlcF90eF9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDY5MC0gKlxcdGRpc2FibGUgYmFja2dyb3VuZCBDQUMvcmFkYXIgZGV0ZWN0aW9uLlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDY5MTogKiBAbmV0X2ZpbGxfZm9yd2FyZF9wYXRoOiBDYWxsZWQgZnJvbSAubmRvX2ZpbGxfZm9yd2FyZF9wYXRoIGluIG9yZGVyIHRvXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NjkyLSAqXFx0cmVzb2x2ZSBhIHBhdGggZm9yIGhhcmR3YXJlIGZsb3cgb2ZmbG9hZGluZ1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzMwPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTA5Ni1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjUwOTc6XFx0aW50ICgqbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTUwOTgtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjoxNC4xMjEyNjc4MDVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3NDY5MTM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBGb3J3YXJkIFBhdGgqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmb3J3YXJkaW5nIHBhdGggaXMgYmVpbmcgc2V0IHVwLiBSaWdodCwgaXQncyBkZWZpbml0ZWx5IGluIGBpZWVlODAyMTFfb3BzYC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgYW5kIGBtYWM4MDIxMWAgZXhwb3NlcyBpdCB0aHJvdWdoIGAubmRvX2ZpbGxfZm9yd2FyZF9wYXRoYCBpbiBgbmV0X2RldmljZV9vcHNgLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGUgbmV0d29yayBzdGFjaywgbGlrZSB3aXRoIG5ldGZpbHRlciBmbG93IG9mZmxvYWQsIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIGl0IHRoaXMgd2F5LlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24uIEkgc2hvdWxkIGNoZWNrIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAuIEFoLCBnb3QgaXQuIEl0IGxvb2tzIGxpa2UgYG10NzkxNV9tbWlvX3dlZF9pbml0YCBhbmQgYG10Nzk5Nl9tbWlvX3dlZF9pbml0YCBhcmUgY2FsbGluZyBpdC4gQnV0IGhvbGQgb24gYSBzZWNvbmQuIEkgc2VlIHRoYXQgYG10NzZfd2VkX2luaXRfcnhfYnVmYCBpcyBiZWluZyBhc3NpZ25lZCB0byBgd2VkLVx1MDAzZXdsYW4uaW5pdF9yeF9idWZgIHdoaWNoIGlzIGFuIGltcG9ydGFudCBjbHVlLCB0aGlzIGAuaW5pdF9yeF9idWZgIGZpZWxkLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hvKiBpcyBjYWxsaW5nIGBpbml0X3J4X2J1ZmAgYW5kIGhvdyB0aGF0IGNhbGwgaXMgYmVpbmcgbWFkZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI1NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjoxOC41OTU5NjE4OTJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzU3NDgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbml0X3J4X2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jPTgzNT1tdGtfd2VkX3J4X2J1ZmZlcl9hbGxvYyhzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuYy04NDgtXFx0ZGV2LVxcdTAwM2VyeF9idWZfcmluZy5kZXNjX3BoeXMgPSBkZXNjX3BoeXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jOjg0OTpcXHRkZXYtXFx1MDAzZXdsYW4uaW5pdF9yeF9idWYoZGV2LCBkZXYtXFx1MDAzZXdsYW4ucnhfbnBrdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5jLTg1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MTI6MTguNzEzNTQyOTNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYzOTA1MTU3NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTWVkaWFUZWsgV2ktRmkgYW5kIFdFRCBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBpbiBib3RoIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMsIGFuZCB0aGV5J3JlIGluIHRoZSBkcml2ZXIncyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRhcmdldC5cblxuTm93LCB0byBnZXQgdGhpcyBydW5uaW5nIGluIHN5emthbGxlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXRrX3dlZC5jYC4gVGhpcyB0ZWxscyBtZSB0aGF0IGBORVRfTUVESUFURUtfU09DYCBpcyAqZXNzZW50aWFsKi4gIFRoZW9yZXRpY2FsbHksIGlmIHRoZSBFdGhlcm5ldCBhbmQgV2ktRmkgZHJpdmVycyBhcmUgYm90aCBsb2FkZWQgYW5kIGJpbmQgdmlhIFdFRCwgYG10a193ZWRfcnhfYnVmZmVyX2FsbG9jYCAqY291bGQqIGJlIHRyaWdnZXJlZC4gVGhlIHByb2JsZW0gaXMgc3l6a2FsbGVyIGRvZXNuJ3QgbmF0aXZlbHkgaGF2ZSBhIHZpcnR1YWwgTWVkaWFUZWsgRXRoZXJuZXQgZGV2aWNlLiBCdXQsIEkgKmNhbiogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMgdXNpbmcgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBmb3IgdGhlIE1lZGlhVGVrIEV0aGVybmV0IGFuZCBgc3l6X3BjaV8uLi5gIGZvciB0aGUgV2ktRmkuIElmIEkgZ2V0IGJvdGggZGV2aWNlcyBwcm9iZWQsIHRoZXkgKm1pZ2h0KiBjb25uZWN0LiBFdmVuIGlmIGl0J3MgaGFyZCB0byB0cmlnZ2VyLCBpdCdzIGNvZGUgdGhhdCAqY2FuKiBiZSBoaXQuIFNvLCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAuXG5cbkxldCdzIG5haWwgZG93biB3aGF0IGVsc2UgaXMgbmVlZGVkLiBJIG5lZWQgdG8gZm9jdXMgb246IGBtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoYCBhbmQgYG10NzZfd2VkX2luaXRfcnhfYnVmYC4gIEkgc2VlIHRoYXQgYG10NzZfd2VkX2luaXRfcnhfYnVmYCBpcyBleHBvcnRlZCAodGhhbmtzIHRvIGBFWFBPUlRfU1lNQk9MX0dQTGApLiBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgaXMgc3RhdGljLCB3aGljaCBpcyBzb21ldGhpbmcgdG8gYmUgYXdhcmUgb2YuXG5cbk5vdywgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSB0aGluayBgTVQ3OTE1RWAgaXMgdGhlIGtleSBjb25maWcgZm9yIHRoZSBXaS1GaS4gSSBkbyBub3RlIHRoYXQgYE1UNzZfQ09SRWAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkxNUVgLCBhbmQgYE1BQzgwMjExYCBpcyBhIGRlcGVuZGVuY3kgd2hpY2ggc3l6a2FsbGVyIHR5cGljYWxseSBoYW5kbGVzLiAgVGhlIGBORVRfTUVESUFURUtfU09DX1dFRGAgY29uZmlnLi4uIGl0J3MgYSBgZGVmX2Jvb2xgIHRpZWQgdG8gYE5FVF9NRURJQVRFS19TT0NgLiBTbywgaWYgSSBlbmFibGUgYE5FVF9NRURJQVRFS19TT0NgLCBJJ20gZ29vZC4gIEhvd2V2ZXIsIGlmIGBORVRfTUVESUFURUtfU09DYCAqaXNuJ3QqIGVuYWJsZWQsIHRoZW4gdGhlIGNvZGUgSSdtIGludGVyZXN0ZWQgaW4sIHBhcnRpY3VsYXJseSB0aGUgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLCBpcyBjb21waWxlZCBvdXQuXG5cbk9rYXksIGxldCdzIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIGBDT05GSUdfTkVUX01FRElBVEVLX1NPQ2AgZGVwZW5kcyBvbiBgQVJDSF9NRURJQVRFS2Agb3IgYENPTVBJTEVfVEVTVGAuICBTeXprYWxsZXIgdXN1YWxseSBydW5zIHdpdGggYENPTVBJTEVfVEVTVGAgb3IsIEkgY2FuIGp1c3Qgc3BlY2lmeSBgTkVUX01FRElBVEVLX1NPQ2AuIEdvb2QuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgdGhlIGNvZGUgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucy4gIEJvdGggYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbXQ3Nl93ZWRfaW5pdF9yeF9idWZgIGFyZSBpbmRlZWQgd2l0aGluIGAjaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEYCBibG9ja3MsIGZ1cnRoZXIgc29saWRpZnlpbmcgdGhlIGBORVRfTUVESUFURUtfU09DYCByZXF1aXJlbWVudC5cblxuSSdtIGNoZWNraW5nIGlmIGBNVDc5MTVFYCBpcyAqdGhlKiBkcml2ZXIsIG9yIGlmIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgaXMgdXNlZCBlbHNld2hlcmUuIGBtdDc5OTZfbW1pb193ZWRfaW5pdGAgYWxzbyB1c2VzIGl0LiBIb3dldmVyLCBzaW5jZSB0aGUgcGF0Y2ggKnNwZWNpZmljYWxseSogbW9kaWZpZXMgYG10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhgLCB0aGUgdGFyZ2V0IGlzIGBtdDc5MTVgLiBTbywgYE1UNzkxNUVgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZyB0byBlbmFibGUuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIHBhdGNoIGFnYWluLiBUaGUgY2hhbmdlcyB0byBgbXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aGAgYXJlIGNsZWFybHkgYWJvdXQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBgYmFuZF9pZHhgLiBTaW1pbGFybHksIHRoZSBjaGFuZ2VzIHRvIGBtdDc2X3dlZF9pbml0X3J4X2J1ZmAgYWxzbyBjaGFuZ2UgdGhlIHF1ZXVlIHNlbGVjdGlvbiBpbiBzb21lIGNhc2VzLiAgVGhpcyBtYWtlcyB0aGUgbmVlZCB0byBlbmFibGUgYm90aCB0aGUgV0VEIGFuZCBNVDc5MTUgcGFydHMgbWFrZSBzZW5zZS5cblxuSSdtIHNhdGlzZmllZC4gIEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4NzQsIk91dHB1dFRva2VucyI6MTQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjoxMjozNS4xMDQwNjA2NzFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA0ODQ4MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkxNUVcIixcbiAgICBcIk5FVF9NRURJQVRFS19TT0NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gICAgXCJtdDc2X3dlZF9pbml0X3J4X2J1ZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBpbiB0aGUgTWVkaWFUZWsgTVQ3OTE1IFdpLUZpIGRyaXZlciBhbmQgdGhlIFdFRCAoV2lyZWxlc3MgRXRoZXJuZXQgRGlzcGF0Y2hlcikgb2ZmbG9hZCBjb2RlLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBkcml2ZXIncyBjb250cm9sIHBhdGggYW5kIGluaXRpYWxpemF0aW9uIGxvZ2ljLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCBhbmQgV0VEIG9mZmxvYWQgaXMgdXRpbGl6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTE1RVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkxNV9uZXRfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm10NzZfd2VkX2luaXRfcnhfYnVmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGluIHRoZSBNZWRpYVRlayBNVDc5MTUgV2ktRmkgZHJpdmVyIGFuZCB0aGUgV0VEIChXaXJlbGVzcyBFdGhlcm5ldCBEaXNwYXRjaGVyKSBvZmZsb2FkIGNvZGUuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGRyaXZlcidzIGNvbnRyb2wgcGF0aCBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGlmIHRoZSBkcml2ZXIgaXMgcHJvYmVkIGFuZCBXRUQgb2ZmbG9hZCBpcyB1dGlsaXplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5c5sj[1] Phase: Succeeded StartedAt: 2026-07-15 22:14:15 +0000 UTC FinishedAt: 2026-07-15 22:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 22:14:15 +0000 UTC FinishedAt: 2026-07-15 22:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2] Phase: Succeeded StartedAt: 2026-07-15 22:14:15 +0000 UTC FinishedAt: 2026-07-15 23:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 22:14:15 +0000 UTC FinishedAt: 2026-07-15 23:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 22:14:15 +0000 UTC FinishedAt: 2026-07-15 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 22:14:15 +0000 UTC FinishedAt: 2026-07-15 22:14:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-convert-artifact-39621073/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 22:14:57 +0000 UTC FinishedAt: 2026-07-15 22:56:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 22:14:57 +0000 UTC FinishedAt: 2026-07-15 22:56:16 +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:*5567c7a4-3631-45fd-9186-0abb100d52ac,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-workflow5c5sj/series-workflow5c5sj-convert-artifact-39621073/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": "7158b0fc-eee2-44d0-9c5d-0eae36f7eef1", "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-workflow5c5sj/series-workflow5c5sj-build-action-2908564351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 22:14:57 +0000 UTC FinishedAt: 2026-07-15 22:56:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5567c7a4-3631-45fd-9186-0abb100d52ac,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-workflow5c5sj/series-workflow5c5sj-convert-artifact-39621073/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": "7158b0fc-eee2-44d0-9c5d-0eae36f7eef1", "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-workflow5c5sj/series-workflow5c5sj-build-action-2908564351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 22:56:16 +0000 UTC FinishedAt: 2026-07-15 22:56:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 22:56:16 +0000 UTC FinishedAt: 2026-07-15 22:56:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 22:56:16 +0000 UTC FinishedAt: 2026-07-15 22:56:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 22:56:16 +0000 UTC FinishedAt: 2026-07-15 22:56:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-convert-artifact-3606379684/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 22:56:28 +0000 UTC FinishedAt: 2026-07-15 22:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 22:56:28 +0000 UTC FinishedAt: 2026-07-15 22:57:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7158b0fc-eee2-44d0-9c5d-0eae36f7eef1,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-workflow5c5sj/series-workflow5c5sj-build-action-2908564351/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-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 22:58:06 +0000 UTC FinishedAt: 2026-07-15 22:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 22:58:06 +0000 UTC FinishedAt: 2026-07-15 22:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 22:58:06 +0000 UTC FinishedAt: 2026-07-15 23:37:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 22:58:06 +0000 UTC FinishedAt: 2026-07-15 23:37:36 +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:*5567c7a4-3631-45fd-9186-0abb100d52ac,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-workflow5c5sj/series-workflow5c5sj-convert-artifact-3606379684/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": "148b4dca-d30b-42aa-b31a-037d63abb8dd", "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-workflow5c5sj/series-workflow5c5sj-build-action-758346544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 22:58:06 +0000 UTC FinishedAt: 2026-07-15 23:37:20 +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:*5567c7a4-3631-45fd-9186-0abb100d52ac,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-workflow5c5sj/series-workflow5c5sj-convert-artifact-3606379684/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": "148b4dca-d30b-42aa-b31a-037d63abb8dd", "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-workflow5c5sj/series-workflow5c5sj-build-action-758346544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 23:37:36 +0000 UTC FinishedAt: 2026-07-15 23:37:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 23:37:36 +0000 UTC FinishedAt: 2026-07-15 23:37:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 23:37:36 +0000 UTC FinishedAt: 2026-07-15 23:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 23:37:36 +0000 UTC FinishedAt: 2026-07-15 23:39:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*148b4dca-d30b-42aa-b31a-037d63abb8dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-build-action-758346544/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-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7158b0fc-eee2-44d0-9c5d-0eae36f7eef1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*148b4dca-d30b-42aa-b31a-037d63abb8dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-build-action-2908564351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-build-action-758346544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:40:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:39:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-convert-artifact-3886644525/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 23:39:30 +0000 UTC FinishedAt: 2026-07-15 23:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 23:40:10 +0000 UTC FinishedAt: 2026-07-15 23:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c5sj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7915_net_fill_forward_path","mt76_wed_init_rx_buf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7915E","NET_MEDIATEK_SOC"],"series_id":"58b19bc2-d550-450a-a7d1-4eb620a5b266","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 23:40:10 +0000 UTC FinishedAt: 2026-07-15 23:42:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7158b0fc-eee2-44d0-9c5d-0eae36f7eef1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*148b4dca-d30b-42aa-b31a-037d63abb8dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-build-action-2908564351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-build-action-758346544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c5sj/series-workflow5c5sj-convert-artifact-3886644525/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,}