Name: series-workflowh966j Phase: Succeeded StartedAt: 2026-07-21 08:23:03 +0000 UTC FinishedAt: 2026-07-21 10:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[0] Phase: Succeeded StartedAt: 2026-07-21 08:23:03 +0000 UTC FinishedAt: 2026-07-21 09:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 08:23:03 +0000 UTC FinishedAt: 2026-07-21 09:01:35 +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": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT76_USB", "MT76_SDIO", "MT76x0U", "MT76x2U", "MT7663U", "MT7663S", "MT7921U", "MT7921S", "MT7925U", "MT76_NPU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT76_USB", "MT76_SDIO", "MT76x0U", "MT76x2U", "MT7663U", "MT7663S", "MT7921U", "MT7921S", "MT7925U", "MT76_NPU" ], "series_id": "0d98ea1b-3ad2-48c8-981c-7296369987d8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_rx_poll_complete", "mt76u_process_rx_queue", "mt76s_process_rx_queue", "mt76_rx_aggr_reorder" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc2X1VTQiYjMzQ7LAogICAgJiMzNDtNVDc2X1NESU8mIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3NjYzUyYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc2X05QVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfcnhfcG9sbF9jb21wbGV0ZSYjMzQ7LAogICAgJiMzNDttdDc2dV9wcm9jZXNzX3J4X3F1ZXVlJiMzNDssCiAgICAmIzM0O210NzZzX3Byb2Nlc3NfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgd2hlcmUgdGhleSBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gdHJ1ZSBmb3Igbm9uLU1NSU8gZGV2aWNlcyAobGlrZSBVU0Igb3IgU0RJTykgYnkgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIHVuaW9uIHRoYXQgb3ZlcmxhcCB3aXRoIFVTQi9TRElPIHNwZWNpZmljIGRhdGEuIFRoaXMgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSBjYXVzZWQgdGhlIFJYIHBhdGggaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgdG8gYnlwYXNzIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgKGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmApIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBCeSBhZGRpbmcgdGhlIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2ssIHRoZSBjb2RlIGNvcnJlY3RseSBpZGVudGlmaWVzIE1NSU8gZGV2aWNlcyBhbmQgcmVzdG9yZXMgdGhlIHByb3BlciBSWCBwYXRoIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1ZWM0MTY3MWI2MzIxZGU4NWMyNzUxMjIwOWExNDQzY2JjMjg2NmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAwODo1ODozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG5pbmRleCAwNzk1NTU1NWY4NGQ4My4uYTMyYmE3YzIzZjkyYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbkBAIC0xNzM2LDEyICYjNDM7MTczNiwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGlmaW5kZXgsXG4gXG4gc3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4ge1xuLVx0cmV0dXJuICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2VtbWlvLm5wdSk7XG4mIzQzO1x0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5ucHUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiB7XG4tXHRyZXR1cm4gISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZW1taW8ucHBlX2Rldik7XG4mIzQzO1x0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5wcGVfZGV2KTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc2X1VTQiYjMzQ7LAogICAgJiMzNDtNVDc2X1NESU8mIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3NjYzUyYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc2X05QVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfcnhfcG9sbF9jb21wbGV0ZSYjMzQ7LAogICAgJiMzNDttdDc2dV9wcm9jZXNzX3J4X3F1ZXVlJiMzNDssCiAgICAmIzM0O210NzZzX3Byb2Nlc3NfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgd2hlcmUgdGhleSBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gdHJ1ZSBmb3Igbm9uLU1NSU8gZGV2aWNlcyAobGlrZSBVU0Igb3IgU0RJTykgYnkgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIHVuaW9uIHRoYXQgb3ZlcmxhcCB3aXRoIFVTQi9TRElPIHNwZWNpZmljIGRhdGEuIFRoaXMgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSBjYXVzZWQgdGhlIFJYIHBhdGggaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgdG8gYnlwYXNzIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgKGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmApIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBCeSBhZGRpbmcgdGhlIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2ssIHRoZSBjb2RlIGNvcnJlY3RseSBpZGVudGlmaWVzIE1NSU8gZGV2aWNlcyBhbmQgcmVzdG9yZXMgdGhlIHByb3BlciBSWCBwYXRoIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDVlYzQxNjcxYjYzMjFkZTg1YzI3NTEyMjA5YTE0NDNjYmMyODY2YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDA4OjU4OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaAppbmRleCAwNzk1NTU1NWY4NGQ4My4uYTMyYmE3YzIzZjkyYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCkBAIC0xNzM2LDEyICYjNDM7MTczNiwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGlmaW5kZXgsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KQogewotCXJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O21taW8ubnB1KTsKJiM0MzsJcmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpICZhbXA7JmFtcDsgISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LSZndDttbWlvLm5wdSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KQogewotCXJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O21taW8ucHBlX2Rldik7CiYjNDM7CXJldHVybiBtdDc2X2lzX21taW8oZGV2KSAmYW1wOyZhbXA7ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7bW1pby5wcGVfZGV2KTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgaW4gYG10NzYuaGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYWRkaW5nIGBtdDc2X2lzX21taW8oZGV2KSAmYW1wOyZhbXA7YCB0byBib3RoIG9mIHRob3NlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTttIHRoaW5raW5nLCBjYW4gd2UgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSBwYXRoIGlmIHRoZSBoYXJkd2FyZSBpcyB2aXJ0dWFsaXplZD8KCmBtdDc2YCBpcyB0aGUgZHJpdmVyIGZvciBNZWRpYVRlayB3aXJlbGVzcyBkZXZpY2VzLCByaWdodD8gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gd2UgZWZmZWN0aXZlbHkgZW11bGF0ZSB0aGF0IHNwZWNpZmljIGhhcmR3YXJlIHdpdGhpbiBRRU1VPyBUeXBpY2FsbHksIHlvdSBjYW4gZ2V0IGF3YXkgd2l0aCBQQ0kgb3IgVVNCIGRldmljZSBlbXVsYXRpb24gb3IgcGFzcy10aHJvdWdoLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3ZSBkb24mIzM5O3QgdXN1YWxseSBmaW5kIE1lZGlhVGVrIHdpcmVsZXNzIGhhcmR3YXJlIHJlYWRpbHkgYXZhaWxhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gVW5sZXNzIHdlJiMzOTtyZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhhdCBhdm9pZHMgYG10NzZgIGVudGlyZWx5LiBBbmQgVVNCIGVtdWxhdGlvbi4uLiB3ZWxsLCBgbXQ3NmAgZG9lcyBoYXZlIFVTQiBkcml2ZXJzLCBsaWtlIHRoZSBgbXQ3NngwdWAsIGBtdDc2eDJ1YCwgb3IgYG10NzkyMXVgIHdoaWNoIHdlIG1pZ2h0IHVzZSwgeWVzLgoKQnV0IGhhbmcgb27igKYgYG10NzZfaXNfbW1pbyhkZXYpYC4uLiB0aGF0JiMzOTtzIGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgTWVtb3J5LU1hcHBlZCBJL08uIFNvLCB0aGlzIGJvaWxzIGRvd24gdG86IEFyZSB3ZSB1c2luZyBhIG1lbW9yeS1tYXBwZWQgSS9PIGFwcHJvYWNoIG9yIG5vdD8gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYG10NzZfaXNfbW1pb2AgaXRzZWxmIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIGFjY3VyYXRlLiBHb3R0YSBsb29rIGF0IHRoYXQgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2lzX21taW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYz0yOT1tdDc2X25hcGlfdGhyZWFkZWRfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzozMzpcdGlmICghbXQ3Nl9pc19tbWlvKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0zNC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz02MTY9aW50IG10NzZfY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTY0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo2NDQ6XHRpZiAobXQ3Nl9pc19tbWlvKGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02NDUtXHRcdC8qIHJlbHkgb24gcGFnZV9wb29sIGZvciBETUEgbWFwcGluZyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTk1PXN0cnVjdCBtdDc2X2J1c19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTExMC0jZGVmaW5lIG10NzZfaXNfdXNiKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMTojZGVmaW5lIG10NzZfaXNfbW1pbyhkZXYpICgoZGV2KS1cdTAwM2VidXMtXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTEyLSNkZWZpbmUgbXQ3Nl9pc19zZGlvKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTczNz1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTczOTpcdHJldHVybiBtdDc2X2lzX21taW8oZGV2KSBcdTAwMjZcdTAwMjYgISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZW1taW8ubnB1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3NDI9c3RhdGljIGlubGluZSBib29sIG10NzZfcHBlX2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDQ6XHRyZXR1cm4gbXQ3Nl9pc19tbWlvKGRldikgXHUwMDI2XHUwMDI2ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2VtbWlvLnBwZV9kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9MzMwPXN0YXRpYyBpbnQgbXQ3NjE1X21hY19maWxsX3J4KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMzg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MzkwOlx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IChyeGQwIFx1MDAyNiBjc3VtX21hc2spID09IGNzdW1fbWFzayBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTM5MS1cdCAgICAhKGNzdW1fc3RhdHVzIFx1MDAyNiAoQklUKDApIHwgQklUKDIpIHwgQklUKDMpKSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9NzA5PWludCBtdDc2MTVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzYxNV9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTcyMS1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBpbmZvLVx1MDAzZWNvbnRyb2wudmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6NzIyOlx0Ym9vbCBpc19tbWlvID0gbXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTcyMy1cdHUzMiB2YWwsIHN6X3R4ZCA9IGlzX21taW8gPyBNVF9UWERfU0laRSA6IE1UX1VTQl9UWERfU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYz0xMDk0PXZvaWQgbXQ3NjE1X21hY19zZXRfcmF0ZXMoc3RydWN0IG10NzYxNV9waHkgKnBoeSwgc3RydWN0IG10NzYxNV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYy0xMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MTEwNDpcdGlmICghbXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTEwNS1cdFx0bXQ3NjE1X21hY19xdWV1ZV9yYXRlX3VwZGF0ZShwaHksIHN0YSwgcHJvYmVfcmF0ZSwgcmF0ZXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYz0zMzU9c3RhdGljIGludCBtdDc2MTVfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTM5Mi1cdG10NzZfd2NpZF9rZXlfc2V0dXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIGtleSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM6MzkzOlx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMzk0LVx0XHRlcnIgPSBtdDc2MTVfbWFjX3d0Ymxfc2V0X2tleShkZXYsIHdjaWQsIGtleSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz00MTA9bXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjQ5MzpcdGlmIChtdDc2X2lzX21taW8oZGV2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTQtXHRcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEN19UWVBFLCBmY190eXBlKSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUxMy1cdHU4IHBfZm10LCBxX2lkeCwgb21hY19pZHggPSAwLCB3bW1faWR4ID0gMCwgYmFuZF9pZHggPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo1MTQ6XHR1MzIgdmFsLCBzel90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDogTVRfU0RJT19UWERfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTE1LVx0Ym9vbCBpc184MDIzID0gaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUzOS1cdH0gZWxzZSBpZiAocWlkIFx1MDAzZT0gTVRfVFhRX1BTRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo1NDA6XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQxLVx0XHRxX2lkeCA9IE1UX0xNQUNfQUxUWDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU0MzpcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy01NDQtXHRcdHFfaWR4ID0gd21tX2lkeCAqIE1UNzZfQ09OTkFDX01BWF9XTU1fU0VUUyAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MTI3Mj1pbnQgbXQ3Nl9jb25uYWNfbWN1X3N0YV93ZWRfdXBkYXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0xMjczLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MTI3NDpcdGlmICghbXQ3Nl9pc19tbWlvKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTEyNzUtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjU2Nj1tdDc2X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MjYwNzpcdGlmIChtdDc2X2lzX21taW8oZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwOC1cdFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz0yNjE5PWludCBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBib29sIHN1c3BlbmQsIGJvb2wgd2FpdF9yZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MjY0MzpcdGlmIChtdDc2X2lzX21taW8oZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0NC1cdFx0cmVxLmhkci5oaWZfdHlwZSA9IDI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jPTExPWludCBtdDc2eDBfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21haW4uYy0xNS1cdG10NzZ4MDJfcHJlX3RidHRfZW5hYmxlKGRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jOjE2Olx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMTctXHRcdHRhc2tsZXRfZGlzYWJsZShcdTAwMjZkZXYtXHUwMDNlZGZzX3BkLmRmc190YXNrbGV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmM6MjQ6XHRpZiAobXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jLTI1LVx0XHRtdDc2eDAyX2Rmc19pbml0X3BhcmFtcyhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTBlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg6MzM6XHRpZiAoIW10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTE2OD1tdDc2eDBfcGh5X3JmX2Nzcl93cl9ycChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xNzgtI2RlZmluZSBSRl9SQU5ET01fV1JJVEUoZGV2LCB0YWIpIGRvIHtcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjE3OTpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTgwLVx0XHRtdDc2eDBfcGh5X3JmX2Nzcl93cl9ycChkZXYsIHRhYiwgQVJSQVlfU0laRSh0YWIpKTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM9Njk3PW10NzZ4MF9waHlfZ2V0X2RlbHRhX3Bvd2VyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCB1OCB0eF9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTc0OC1cdFx0ZGF0YSA9IG10NzZfcnIoZGV2LCBNVF9CQlAoQ09SRSwgMSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6NzQ5Olx0XHRpZiAoaXNfbXQ3NjMwKGRldikgXHUwMDI2XHUwMDI2IG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTc1MC1cdFx0XHRpbnQgb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTExMTY9c3RhdGljIHZvaWQgbXQ3NngwX3JmX3BhdGNoX3JlZ19hcnJheShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMTI2LVx0XHRjYXNlIE1UX1JGKDAsIDMpOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6MTEyNzpcdFx0XHRpZiAobXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTEyOC1cdFx0XHRcdGlmIChpc19tdDc2MzAoZGV2KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmM9MTE3PWludCBtdDc2eDAyX21jdV9jYWxpYnJhdGUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGludCB0eXBlLCB1MzIgcGFyYW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21jdS5jLTEyNS1cdH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmM6MTI2Olx0Ym9vbCBpc19tdDc2eDJlID0gbXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgaXNfbXQ3NngyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmMtMTI3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jPTYyMj12b2lkIG10NzZ4MDJfc3RhX3BzKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYyOS1cdG10NzZfc3RvcF90eF9xdWV1ZXMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHN0YSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jOjYzMDpcdGlmIChtdDc2X2lzX21taW8obWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYzMS1cdFx0bXQ3NngwMl9tYWNfd2NpZF9zZXRfZHJvcChkZXYsIGlkeCwgcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yNjQ9aW50IG10NzkyMV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI3MDpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3MS1cdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7eG1pdC1xdWV1ZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTE3MD1pbnQgbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjE4Olx0aWYgKCFtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIxOS1cdFx0aHctXHUwMDNlZXh0cmFfdHhfaGVhZHJvb20gJiM0Mzs9IE1UX1NESU9fVFhEX1NJWkUgJiM0MzsgTVRfU0RJT19IRFJfU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz0xNjk9bXQ3OTIxX21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MjQwOlx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IChyeGQwIFx1MDAyNiBjc3VtX21hc2spID09IGNzdW1fbWFzayBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTI0MS1cdCAgICAhKGNzdW1fc3RhdHVzIFx1MDAyNiAoQklUKDApIHwgQklUKDIpIHwgQklUKDMpKSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTIyNz1pbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjUyLVx0XHRcdFx0ICAgICBNVDc5MnhfV0FUQ0hET0dfVElNRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjUzOlx0aWYgKG10NzZfaXNfbW1pbyhtcGh5LVx1MDAzZWRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTQtXHRcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwocGh5LVx1MDAzZWRldiwgRVhUX0NNRF9SQURJT19MRURfQ1RSTF9FTkFCTEUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0yODQ9c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI4OTpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkwLVx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQxMD1zdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQyNjpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MjctXHRcdHJldCA9IG10NzkyMV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI4OT1pbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjk1Olx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjk2LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjA2PWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNTI6XHRpZiAoIW10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0XHRody1cdTAwM2VleHRyYV90eF9oZWFkcm9vbSAmIzQzOz0gTVRfU0RJT19UWERfU0laRSAmIzQzOyBNVF9TRElPX0hEUl9TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM1OT1tdDc5MjVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy00MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo0MjQ6XHRpZiAobXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgKHJ4ZDMgXHUwMDI2IGNzdW1fbWFzaykgPT0gY3N1bV9tYXNrIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNDI1LVx0ICAgICEoY3N1bV9zdGF0dXMgXHUwMDI2IChCSVQoMCkgfCBCSVQoMikgfCBCSVQoMykpKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03MzA9bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzM3LVx0dTggcF9mbXQsIHFfaWR4LCBvbWFjX2lkeCA9IDAsIHdtbV9pZHggPSAwLCBiYW5kX2lkeCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3Mzg6XHR1MzIgdmFsLCBzel90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDogTVRfU0RJT19UWERfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTczOS1cdGJvb2wgaXNfODAyMyA9IGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzYzLVx0fSBlbHNlIGlmIChxaWQgXHUwMDNlPSBNVF9UWFFfUFNEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NjQ6XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc2NS1cdFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzY2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc2NzpcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzY4LVx0XHRxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNjA9bXQ3OTI1X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIwMjpcdGlmIChtdDc2X2lzX21taW8oZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIwMy1cdFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9Nzk4PXN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtODEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6ODE0Olx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTgxNS1cdFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX2VlcHJvbShkZXYsIE1UX0VFX0hXX1RZUEUsIFx1MDAyNmh3X2VuY2FwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODg0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYG10NzZgIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgdG91Y2hlcyBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gTmF0dXJhbGx5LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGBtdDc2YCBmcmFtZXdvcmsuIEp1c3Qga25vd2luZyB0aGV5JiMzOTtyZSBtb2RpZmllZCBpc24mIzM5O3QgZW5vdWdoOyBJIG5lZWQgdGhlIGNhbGxpbmcgY29udGV4dC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgY29uZGl0aW9uYWwgY2hhbmdlLCBvciBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbCB0byB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgbG9naWM/IFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgY2FsbCBwYXRocyBhbmQgc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSBob3cgZGVlcCB0aGlzIHJhYmJpdCBob2xlIGdvZXMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X25wdV9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xOTA9bXQ3Nl9kbWFfc3luY19pZHgoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTkyLVx0aWYgKChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19XRURfUlJPX0VOKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTkzOlx0ICAgICghaXNfbXQ3OTkyKGRldikgfHwgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTE5NC1cdFx0UV9XUklURShxLCByaW5nX3NpemUsIE1UX0RNQV9SUk9fRU4gfCBxLVx1MDAzZW5kZXNjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTY0MD1tdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjYxLVx0LyogVE9ETzogVGFrZSBpbnRvIGFjY291bnQgdW5saW5lYXIgc2ticyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2NjI6XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFx1MDAyNlx1MDAyNiBza2JfbGluZWFyaXplKHNrYikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY2My1cdFx0Z290byBmcmVlX3NrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NzE0Olx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNzE1LVx0XHRyZXR1cm4gbXQ3Nl9ucHVfZG1hX2FkZF9idWYocGh5LCBxLCBza2IsIFx1MDAyNnR4X2luZm8uYnVmWzFdLCB0eHdpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTg2MT1tdDc2X2RtYV9yeF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODg2Olx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy04ODctXHRcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz05MDU9bXQ3Nl9kbWFfcnhfcmVzZXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5MzI6XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05MzMtXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNTU0PXZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjQtXHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE1NjU6XHRcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2Ni1cdFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmZyYW1lcywgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzI5PXN0YXRpYyBpbmxpbmUgaW50IG10NzZfbnB1X3NlbmRfdHhyeF9hZGRyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgaWZpbmRleCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTczNzpzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTEwPWludCBtdDc5OTZfaW5pdF90eF9xdWV1ZXMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSwgaW50IGlkeCwgaW50IG5fZGVzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjI2Olx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMjctXHRcdGZsYWdzID0gTVRfTlBVX1FfVFgocGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTQ2PXN0YXRpYyB2b2lkIG10Nzk5Nl9kbWFfY29uZmlnKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTMxLVx0XHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEzMjpcdFx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEzMy1cdFx0XHRcdFRYUV9DT05GSUcoMCwgV0ZETUEwLCBNVF9JTlRfVFhfRE9ORV9CQU5EMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz0zMDY9dm9pZCBtdDc5OTZfZG1hX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgcmVzZXQsIGJvb2wgd2VkX3Jlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjM2MjpcdGlmICghbXQ3OTk2X2hhc193YShkZXYpIHx8IG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzYzLVx0XHRpcnFfbWFzayBcdTAwMjY9IH4oTVRfSU5UX1JYKE1UX1JYUV9NQUlOX1dBKSB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zNjQtXHRcdFx0ICAgICAgTVRfSU5UX1JYKE1UX1JYUV9CQU5EMV9XQSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MzY1Olx0aWYgKGlzX210Nzk5NihcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzY2LVx0XHRpcnFfbWFzayBcdTAwMjY9IH4oTVRfSU5UX1JYKE1UX1JYUV9UWEZSRUVfQkFORDApIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz0zNzQ9c3RhdGljIHZvaWQgbXQ3OTk2X2RtYV9lbmFibGUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCByZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NDgtXHRcdGlmIChpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo0NDk6XHRcdFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNDUwLVx0XHRcdFx0bXQ3Nl9zZXQoZGV2LCBNVF9XRkRNQV9IT1NUX0NPTkZJRyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NjQtXHRcdGlmICghaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NDY1Olx0XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NjYtXHRcdFx0aWYgKGRldi1cdTAwM2VoaWYyLVx1MDAzZXNwZWVkIFx1MDAzYyBQQ0lFX1NQRUVEXzVfMEdUIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NTIxPWludCBtdDc5OTZfZG1hX3Jyb19pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTMxLVx0XHRcdG1kZXYtXHUwMDNlcV9yeFtNVF9SWFFfUlJPX1JYRE1BRF9DXS53ZWQgPSBcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTMyOlx0XHRlbHNlIGlmICghbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01MzMtXHRcdFx0bWRldi1cdTAwM2VxX3J4W01UX1JYUV9SUk9fUlhETUFEX0NdLmZsYWdzIHw9IE1UX1FGTEFHX0VNSV9FTjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1NzQ6XHRzaXplID0gaXNfbXQ3OTk2KG1kZXYpIFx1MDAyNlx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKG1kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NzUtXHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSAvIDQgOiBNVDc5OTZfUlhfUklOR19TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjU5MTpcdFx0c2l6ZSA9IGlzX210Nzk5NihtZGV2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTkyLVx0XHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSAvIDIgOiBNVDc5OTZfUlhfUklOR19TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjYwOTpcdFx0c2l6ZSA9IGlzX210Nzk5NihtZGV2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjEwLVx0XHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NjIyPXZvaWQgbXQ3OTk2X2RtYV9ycm9fc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo2NjA6XHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjYxLVx0XHRtdDc5OTZfaXJxX2VuYWJsZShkZXYsIE1UX0lOVF9SUk9fUlhfRE9ORSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NjY0PWludCBtdDc5OTZfZG1hX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02ODEtXHQvKiBpbml0IHR4IHF1ZXVlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo2ODI6XHRpZiAoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02ODMtXHRcdHJldCA9IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhcdTAwMjZkZXYtXHUwMDNlcGh5LCBNVF9UWFFfSUQoMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzU5LVx0fSBlbHNlIGlmIChpc19tdDc5OTIoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzYwOlx0XHQgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzYxLVx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX05QVV9RX1RYRlJFRSgwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04OTMtXHRcdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDBdLndlZCA9IHdlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjg5NDpcdFx0XHR9IGVsc2UgaWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04OTUtXHRcdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDBdLmZsYWdzID0gTVRfTlBVX1FfVFhGUkVFKDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTkxOC1cdFx0XHRzaXplID0gaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjkxOTpcdFx0XHQgICAgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTkyMC1cdFx0XHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQ3OD1tdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5Mi1cdGh3LVx1MDAzZW5ldGRldl9mZWF0dXJlcyA9IE5FVElGX0ZfUlhDU1VNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ5MzpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSB8fCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKG1kZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5NC1cdFx0aHctXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVEM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTYxMD12b2lkIG10Nzk5Nl9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02MjctXHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo2Mjg6XHRcdGlmIChtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02MjktXHRcdFx0cnhfcGF0aF90eXBlID0gaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/IDYgOiA4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTY5NS1cdCAgICAgKGlzX210Nzk5NihcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IGJhbmQgPT0gTVRfQkFORDIgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Njk2Olx0ICAgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02OTctXHRcdGhpZjFfb2ZzID0gTVRfV0ZETUEwX1BDSUUxKDApIC0gTVRfV0ZETUEwKDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MzctXHQgICAgKChiYW5kID09IE1UX0JBTkQxIFx1MDAyNlx1MDAyNiAhZGV2LVx1MDAzZWhpZjIpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NzM4Olx0ICAgICAoYmFuZCA9PSBNVF9CQU5EMiBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTczOS1cdFx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc0NC1cdFx0aW50IHNpemUgPSBpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjc0NTpcdFx0XHQgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc0Ni1cdFx0XHQgICA/IE1UNzk5Nl9OUFVfVFhfUklOR19TSVpFIC8gMiA6IE1UNzk5Nl9UWF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTg2OD12b2lkIG10Nzk5Nl9ycm9faHdfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04ODgtXHRcdFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjg4OTpcdFx0XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODkwLVx0XHRcdFx0bXQ3Nl9zZXQoZGV2LCBNVF9SUk9fM18xX0dMT0JBTF9DT05GSUcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTkyLVx0XHRpZiAoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo5OTM6XHRcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTQtXHRcdFx0bXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIDAsIGksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTA1ODpcdGlmIChpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDU5LVx0XHRtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgMSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTEyNz1zdGF0aWMgdm9pZCBtdDc5OTZfd2VkX3Jyb193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMTQ4Olx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMTQ5LVx0XHRcdGlmIChpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTE9dm9pZCBtdDc5OTZfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTE5Olx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTIwLVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTgxOlx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTgyLVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MDktXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MTA6XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTEtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDE5LSNlbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MjA6XHRpZiAoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQyMS1cdCAgICBtc3RhX2xpbmstXHUwMDNld2NpZC5waHlfaWR4ID09IE1UX0JBTkQyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jPTUwMD1pbnQgbXQ3OTk2X25wdV9yeF9xdWV1ZXNfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jLTUwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jOjUwNDpcdGlmICghbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9ucHUuYy01MDUtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM9MTE2PXZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxMjI6XHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTIzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYz0zNzE9aW50IG10NzZfbnB1X25ldF9zZXR1cF90YyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTM3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MzgwOlx0aWYgKCFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHBoeS1cdTAwM2VkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0zODEtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjgxOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoIGZvciBtdDc2IERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2sgd2l0aGluIHRoZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbnMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgdmVyeSBnb29kIGlkZWEuIFRoZSBjb3JlIGNvbmNlcm4gaGVyZSBpcyBhYm91dCBwcmV2ZW50aW5nIGNyYXNoZXMgb3IsIGV2ZW4gd29yc2UsIHN1YnRsZSBjb3JydXB0aW9uIHdoZW4gdGhlIGNvZGUgdHJpZXMgdG8gYWNjZXNzIGBkZXYtJmd0O21taW8ubnB1YCBvciBgZGV2LSZndDttbWlvLnBwZV9kZXZgIG9uIGRldmljZXMgdGhhdCAqYXJlbiYjMzk7dCogbWVtb3J5LW1hcHBlZCBJL08gKE1NSU8pLiBVU0Igb3IgU0RJTyBkZXZpY2VzLCBmb3IgZXhhbXBsZSwgd291bGRuJiMzOTt0IGhhdmUgdGhlc2UgTU1JTyBhZGRyZXNzZXMgZGlyZWN0bHkgYWNjZXNzaWJsZS4KCkEgcmVkIGZsYWcgaW1tZWRpYXRlbHkgZ29lcyB1cCwgdGhvdWdoOiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoZSBgZGV2LSZndDttbWlvYCBzdHJ1Y3R1cmUuIElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdCwgb3IsIGV2ZW4gbW9yZSBsaWtlbHkgaW4gYSBkcml2ZXIgbGlrZSB0aGlzLCBhIHVuaW9uLCBvciBhIHN0cnVjdCB0aGF0IHBvdGVudGlhbGx5IG92ZXJsYXBzIHdpdGggb3RoZXIgZmllbGRzIHdpdGhpbiBgc3RydWN0IG10NzZfZGV2YD8gVGhpcyBpcyBjcml0aWNhbC4gSWYgaXQmIzM5O3MgYSB1bmlvbiwgYWNjZXNzaW5nIHRoZXNlIGZpZWxkcyB3aGVuIGl0JiMzOTtzICpub3QqIGFuIE1NSU8gZGV2aWNlIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIG1lbW9yeSBjb3JydXB0aW9uLCBvciBldmVuIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4KCkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbXQ3Ni5oYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24sIGFuZCBjb25maXJtIG15IHN1c3BpY2lvbiBhYm91dCB0aGUgdW5pb24gb3Igb3ZlcmxhcHBpbmcgZmllbGRzLiBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoIGFuZCBzZWUgaWYgaXQgYWRlcXVhdGVseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBtdDc2X2RldiBcXHsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD04NTU9c3RydWN0IG10NzZfcGh5IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5MjE6c3RydWN0IG10NzZfZGV2IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTkyMi1cdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ1MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBtdDc2X2RldmAgU3RydWN0dXJlKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNZWRpYXRlayA4MDIuMTEgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBNeSBpbml0aWFsIGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBgc3RydWN0IG10NzZfZGV2YCBkZWZpbml0aW9uIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJdCYjMzk7cyB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZSwgdGhlIGNvbnRyb2wgY2VudGVyLCBpZiB5b3Ugd2lsbCwgZm9yIHRoZSBNZWRpYXRlayBkZXZpY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGtlcm5lbC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGlzIHN0cnVjdHVyZSwgcG90ZW50aWFsbHkgYSBkZXNjcmlwdG9yIGZvciB0aGUgRE1BIGVuZ2luZSwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCBjb21wb25lbnRzLiBFc3NlbnRpYWxseSwgdGhpcyBpcyB3aGVyZSB0aGUgKm1hZ2ljKiBoYXBwZW5zLCB3aGVyZSB0aGUgc29mdHdhcmUgbWFwcyB0byB0aGUgc2lsaWNvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIGl0cyBtZW1iZXJzIHRvIGZvcm0gYW4gZWZmZWN0aXZlIG1lbnRhbCBtb2RlbCBvZiBpdHMgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTIxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTIxOlx0c3RydWN0IG10NzZfZGV2IHtcbiA5MjI6XHRcdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cbiA5MjM6XHRcdHN0cnVjdCBtdDc2X3BoeSAqcGh5c1tfX01UX01BWF9CQU5EXTtcbiA5MjQ6XHRcdHN0cnVjdCBtdDc2X3BoeSAqYmFuZF9waHlzW05VTV9OTDgwMjExX0JBTkRTXTtcbiA5MjU6XHRcbiA5MjY6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIDkyNzpcdFxuIDkyODpcdFx0c3BpbmxvY2tfdCB3ZWRfbG9jaztcbiA5Mjk6XHRcdHNwaW5sb2NrX3QgbG9jaztcbiA5MzA6XHRcdHNwaW5sb2NrX3QgY2NfbG9jaztcbiA5MzE6XHRcbiA5MzI6XHRcdHUzMiBjdXJfY2NfYnNzX3J4O1xuIDkzMzpcdFxuIDkzNDpcdFx0c3RydWN0IG10NzZfcnhfc3RhdHVzIHJ4X2FtcGR1X3N0YXR1cztcbiA5MzU6XHRcdHUzMiByeF9hbXBkdV9sZW47XG4gOTM2Olx0XHR1MzIgcnhfYW1wZHVfcmVmO1xuIDkzNzpcdFxuIDkzODpcdFx0c3RydWN0IG11dGV4IG11dGV4O1xuIDkzOTpcdFxuIDk0MDpcdFx0Y29uc3Qgc3RydWN0IG10NzZfYnVzX29wcyAqYnVzO1xuIDk0MTpcdFx0Y29uc3Qgc3RydWN0IG10NzZfZHJpdmVyX29wcyAqZHJ2O1xuIDk0MjpcdFx0Y29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyAqbWN1X29wcztcbiA5NDM6XHRcdHN0cnVjdCBkZXZpY2UgKmRldjtcbiA5NDQ6XHRcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXY7XG4gOTQ1Olx0XG4gOTQ2Olx0XHRzdHJ1Y3QgbXQ3Nl9tY3UgbWN1O1xuIDk0NzpcdFxuIDk0ODpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5hcGlfZGV2O1xuIDk0OTpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKnR4X25hcGlfZGV2O1xuIDk1MDpcdFx0c3BpbmxvY2tfdCByeF9sb2NrO1xuIDk1MTpcdFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGlbX19NVF9SWFFfTUFYXTtcbiA5NTI6XHRcdHN0cnVjdCBza19idWZmX2hlYWQgcnhfc2tiW19fTVRfUlhRX01BWF07XG4gOTUzOlx0XHRzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgaXJxX3Rhc2tsZXQ7XG4gOTU0Olx0XG4gOTU1Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHR4d2lfY2FjaGU7XG4gOTU2Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4d2lfY2FjaGU7XG4gOTU3Olx0XHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcV9tY3VbX19NVF9NQ1VRX01BWF07XG4gOTU4Olx0XHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSBxX3J4W19fTVRfUlhRX01BWF07XG4gOTU5Olx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgKnF1ZXVlX29wcztcbiA5NjA6XHRcdGludCB0eF9kbWFfaWR4WzRdO1xuIDk2MTpcdFx0ZW51bSBtdDc2X2h3cnJvX21vZGUgaHdycm9fbW9kZTtcbiA5NjI6XHRcbiA5NjM6XHRcdHN0cnVjdCBtdDc2X3dvcmtlciB0eF93b3JrZXI7XG4gOTY0Olx0XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgdHhfbmFwaTtcbiA5NjU6XHRcbiA5NjY6XHRcdHNwaW5sb2NrX3QgdG9rZW5fbG9jaztcbiA5Njc6XHRcdHN0cnVjdCBpZHIgdG9rZW47XG4gOTY4Olx0XHR1MTYgd2VkX3Rva2VuX2NvdW50O1xuIDk2OTpcdFx0dTE2IHRva2VuX2NvdW50O1xuIDk3MDpcdFx0dTE2IHRva2VuX3N0YXJ0O1xuIDk3MTpcdFx0dTE2IHRva2VuX3NpemU7XG4gOTcyOlx0XG4gOTczOlx0XHRzcGlubG9ja190IHJ4X3Rva2VuX2xvY2s7XG4gOTc0Olx0XHRzdHJ1Y3QgaWRyIHJ4X3Rva2VuO1xuIDk3NTpcdFx0dTE2IHJ4X3Rva2VuX3NpemU7XG4gOTc2Olx0XG4gOTc3Olx0XHR3YWl0X3F1ZXVlX2hlYWRfdCB0eF93YWl0O1xuIDk3ODpcdFx0Lyogc3BpbmNsb2NrIHVzZWQgdG8gcHJvdGVjdCB3Y2lkIHBrdGlkIGxpbmtlZCBsaXN0ICovXG4gOTc5Olx0XHRzcGlubG9ja190IHN0YXR1c19sb2NrO1xuIDk4MDpcdFxuIDk4MTpcdFx0dTMyIHdjaWRfbWFza1tESVZfUk9VTkRfVVAoTVQ3Nl9OX1dDSURTLCAzMildO1xuIDk4MjpcdFxuIDk4MzpcdFx0dTY0IHZpZl9tYXNrO1xuIDk4NDpcdFxuIDk4NTpcdFx0c3RydWN0IG10NzZfd2NpZCBnbG9iYWxfd2NpZDtcbiA5ODY6XHRcdHN0cnVjdCBtdDc2X3djaWQgX19yY3UgKndjaWRbTVQ3Nl9OX1dDSURTXTtcbiA5ODc6XHRcdHN0cnVjdCBsaXN0X2hlYWQgd2NpZF9saXN0O1xuIDk4ODpcdFxuIDk4OTpcdFx0c3RydWN0IGxpc3RfaGVhZCBzdGFfcG9sbF9saXN0O1xuIDk5MDpcdFx0c3BpbmxvY2tfdCBzdGFfcG9sbF9sb2NrO1xuIDk5MTpcdFxuIDk5MjpcdFx0dTMyIHJldjtcbiA5OTM6XHRcbiA5OTQ6XHRcdHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBwcmVfdGJ0dF90YXNrbGV0O1xuIDk5NTpcdFx0aW50IGJlYWNvbl9pbnQ7XG4gOTk2Olx0XHR1OCBiZWFjb25fbWFzaztcbiA5OTc6XHRcbiA5OTg6XHRcdHN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciBlZXByb207XG4gOTk5Olx0XHRzdHJ1Y3QgZGVidWdmc19ibG9iX3dyYXBwZXIgb3RwO1xuMTAwMDpcdFxuMTAwMTpcdFx0Y2hhciBhbHBoYTJbM107XG4xMDAyOlx0XHRlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uO1xuMTAwMzpcdFxuMTAwNDpcdFx0c3RydWN0IG10NzZfc2Nhbl9ybnJfcGFyYW0gcm5yO1xuMTAwNTpcdFxuMTAwNjpcdFx0dTMyIGRlYnVnZnNfcmVnO1xuMTAwNzpcdFxuMTAwODpcdFx0dTggY3NhX2NvbXBsZXRlO1xuMTAwOTpcdFxuMTAxMDpcdFx0dTMyIHJ4ZmlsdGVyO1xuMTAxMTpcdFxuMTAxMjpcdFx0c3RydWN0IGRlbGF5ZWRfd29yayBzY2FuX3dvcms7XG4xMDEzOlx0XHRzcGlubG9ja190IHNjYW5fbG9jaztcbjEwMTQ6XHRcdHN0cnVjdCB7XG4xMDE1Olx0XHRcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcTtcbjEwMTY6XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuO1xuMTAxNzpcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmO1xuMTAxODpcdFx0XHRzdHJ1Y3QgbXQ3Nl92aWZfbGluayAqbWxpbms7XG4xMDE5Olx0XHRcdHN0cnVjdCBtdDc2X3BoeSAqcGh5O1xuMTAyMDpcdFx0XHRpbnQgY2hhbl9pZHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTk5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBEZWVwZXIgaW50byBgc3RydWN0IG10NzZfZGV2YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gJiMzNDtMZXQmIzM5O3MgcmVhZCBtb3JlIG9mIGBzdHJ1Y3QgbXQ3Nl9kZXZgLiYjMzQ7IFRoYXQgbWVhbnMgaXQmIzM5O3MgdGltZSB0byBkcmlsbCBkb3duLiBJJiMzOTttIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUgb2YgdGhlIG10NzYgZHJpdmVyLCBvZiBjb3Vyc2UsIGFuZCBJIGtub3cgd2hlcmUgdGhpcyBzdHJ1Y3R1cmUgZml0cyBpbiBhdCBhIGhpZ2ggbGV2ZWwuIEJ1dCB0aGUgZGV2aWwmIzM5O3MgaW4gdGhlIGRldGFpbHMuIFdoYXQgYXJlIHdlICpyZWFsbHkqIGRlYWxpbmcgd2l0aCBpbnNpZGUgdGhpcyBjcnVjaWFsIGRhdGEgc3RydWN0dXJlPyBJIG5lZWQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgbGlrZWx5LCB0aGUgdmFyaW91cyBkZXZpY2Utc3BlY2lmaWMgb3BlcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBXaUZpIHJhZGlvIGl0c2VsZi4KCkkgd2FudCB0byBrbm93OgoKKiAgICoqSW50ZXJuYWwgRmllbGRzOioqIFdoaWNoIGZpZWxkcyBhcmUgY3JpdGljYWwgZm9yIGJhc2ljIGRldmljZSBvcGVyYXRpb24gdmVyc3VzIHRob3NlIHRoYXQgcGVydGFpbiB0byBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciB2YXJpYXRpb25zPyBBcmUgdGhlcmUgYW55IGJpdGZpZWxkcyBvciB1bmlvbnMgdGhhdCByZXF1aXJlIGNhcmVmdWwgYW5hbHlzaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zPwoqICAgKipEYXRhIFN0cnVjdHVyZXMgd2l0aGluOioqIFdoYXQgYXJlIHRoZSBrZXkgcG9pbnRlcnMgd2l0aGluIGBtdDc2X2RldmAgcG9pbnRpbmcgdG8/IEFyZSB0aGV5IGFsbG9jYXRpbmcgbWVtb3J5IGZyb20gdGhlIGhlYXAgb3IgYXJlIHRoZXkgZW1iZWRkZWQgd2l0aGluIHRoZSBzdHJ1Y3R1cmUgaXRzZWxmPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhvc2UgYXJlIHVzZWQgdG8gbWFwIGRldmljZSByZWdpc3RlcnMsIG1hbmFnZSBGSUZPcywgYW5kIHRyYWNrIGZpcm13YXJlIGxvYWRpbmcuCiogICAqKkNvbmN1cnJlbmN5IENvbnNpZGVyYXRpb25zOioqIERvZXMgdGhlIHN0cnVjdHVyZSBhY2NvdW50IGZvciBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgc3VjaCBhcyBtdXRleGVzIG9yIHNwaW5sb2Nrcz8gV2hlcmU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIHNob3VsZCBiZSBvbiB0aGUgbG9va291dCBmb3I/CiogICAqKkRyaXZlciBMaWZlY3ljbGUgSG9va3M6KiogSG93IGRvZXMgYG10NzZfZGV2YCBmaXQgaW50byB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgbGlmZWN5Y2xlPyBBcmUgdGhlcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGNsZWFudXAgZnVuY3Rpb25zLCBhbmQgaW50ZXJydXB0IGhhbmRsZXJzIHRoYXQgcmVseSBvbiB0aGlzIHN0cnVjdHVyZT8gSSB3YW50IHRvIGNvbm5lY3QgdGhlIGRvdHMgYmV0d2VlbiB0aGlzIHN0cnVjdHVyZSBhbmQgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsJiMzOTtzIGRldmljZSBtb2RlbCwgZXNwZWNpYWxseSBob3cgZGV2aWNlIHJlc291cmNlcyBhcmUgbWFuYWdlZCwgYWxsb2NhdGVkIGFuZCByZWxlYXNlZC4KKiAgICoqSGFyZHdhcmUgQWJzdHJhY3Rpb246KiogV2hhdCBraW5kIG9mIGhhcmR3YXJlLXNwZWNpZmljIGluZm9ybWF0aW9uIGRvZXMgdGhlIGBzdHJ1Y3QgbXQ3Nl9kZXZgIHN0cnVjdHVyZSBlbmNhcHN1bGF0ZSBhbmQgd2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkb2VzIGl0IHVzZSB0byBoaWRlIHRoZSBsb3dlci1sZXZlbCBkZXRhaWxzPyBJJiMzOTttIGhvcGluZyB0byBzZWUgYSB3ZWxsIGRlZmluZWQgQVBJIHRvIGhhbmRsZSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzLgoKU28sIHllYWgsIHRpbWUgdG8gZGlnIGludG8gdGhhdCBkZWZpbml0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGdldCBhIGdvb2QgbWVudGFsIG1vZGVsIG9mIHRoaXMgYmVhc3QuIFVuZGVyc3RhbmRpbmcgYHN0cnVjdCBtdDc2X2RldmAgaXMgZXNzZW50aWFsIHRvIHJlYWxseSBncmFzcCB0aGUgZHJpdmVyJiMzOTtzIGlubmVyIHdvcmtpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAyMTpcdFx0XHRib29sIGJlYWNvbl93YWl0O1xuMTAyMjpcdFx0XHRib29sIGJlYWNvbl9yZWNlaXZlZDtcbjEwMjM6XHRcdH0gc2NhbjtcbjEwMjQ6XHRcbjEwMjU6XHQjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREVcbjEwMjY6XHRcdGNvbnN0IHN0cnVjdCBtdDc2X3Rlc3Rtb2RlX29wcyAqdGVzdF9vcHM7XG4xMDI3Olx0XHRzdHJ1Y3Qge1xuMTAyODpcdFx0XHRjb25zdCBjaGFyICpuYW1lO1xuMTAyOTpcdFx0XHR1MzIgb2Zmc2V0O1xuMTAzMDpcdFx0fSB0ZXN0X210ZDtcbjEwMzE6XHQjZW5kaWZcbjEwMzI6XHRcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTtcbjEwMzM6XHRcbjEwMzQ6XHRcdHVuaW9uIHtcbjEwMzU6XHRcdFx0c3RydWN0IG10NzZfbW1pbyBtbWlvO1xuMTAzNjpcdFx0XHRzdHJ1Y3QgbXQ3Nl91c2IgdXNiO1xuMTAzNzpcdFx0XHRzdHJ1Y3QgbXQ3Nl9zZGlvIHNkaW87XG4xMDM4Olx0XHR9O1xuMTAzOTpcdFxuMTA0MDpcdFx0YXRvbWljX3QgYnVzX2h1bmc7XG4xMDQxOlx0fTtcbjEwNDI6XHRcbjEwNDM6XHQvKiBwZXItcGh5IHN0YXRzLiAgKi9cbjEwNDQ6XHRzdHJ1Y3QgbXQ3Nl9taWJfc3RhdHMge1xuMTA0NTpcdFx0dTMyIGFja19mYWlsX2NudDtcbjEwNDY6XHRcdHUzMiBmY3NfZXJyX2NudDtcbjEwNDc6XHRcdHUzMiBydHNfY250O1xuMTA0ODpcdFx0dTMyIHJ0c19yZXRyaWVzX2NudDtcbjEwNDk6XHRcdHUzMiBiYV9taXNzX2NudDtcbjEwNTA6XHRcdHUzMiB0eF9iZl9jbnQ7XG4xMDUxOlx0XHR1MzIgdHhfbXVfYmZfY250O1xuMTA1MjpcdFx0dTMyIHR4X211X21wZHVfY250O1xuMTA1MzpcdFx0dTMyIHR4X211X2Fja2VkX21wZHVfY250O1xuMTA1NDpcdFx0dTMyIHR4X3N1X2Fja2VkX21wZHVfY250O1xuMTA1NTpcdFx0dTMyIHR4X2JmX2liZl9wcGR1X2NudDtcbjEwNTY6XHRcdHUzMiB0eF9iZl9lYmZfcHBkdV9jbnQ7XG4xMDU3Olx0XG4xMDU4Olx0XHR1MzIgdHhfYmZfcnhfZmJfYWxsX2NudDtcbjEwNTk6XHRcdHUzMiB0eF9iZl9yeF9mYl9laHRfY250O1xuMTA2MDpcdFx0dTMyIHR4X2JmX3J4X2ZiX2hlX2NudDtcbjEwNjE6XHRcdHUzMiB0eF9iZl9yeF9mYl92aHRfY250O1xuMTA2MjpcdFx0dTMyIHR4X2JmX3J4X2ZiX2h0X2NudDtcbjEwNjM6XHRcbjEwNjQ6XHRcdHUzMiB0eF9iZl9yeF9mYl9idzsgLyogdmFsdWUgb2YgbGFzdCBzYW1wbGUsIG5vdCBjdW11bGF0aXZlICovXG4xMDY1Olx0XHR1MzIgdHhfYmZfcnhfZmJfbmNfY250O1xuMTA2NjpcdFx0dTMyIHR4X2JmX3J4X2ZiX25yX2NudDtcbjEwNjc6XHRcdHUzMiB0eF9iZl9mYl9jcGxfY250O1xuMTA2ODpcdFx0dTMyIHR4X2JmX2ZiX3RyaWdfY250O1xuMTA2OTpcdFxuMTA3MDpcdFx0dTMyIHR4X2FtcGR1X2NudDtcbjEwNzE6XHRcdHUzMiB0eF9zdG9wX3FfZW1wdHlfY250O1xuMTA3MjpcdFx0dTMyIHR4X21wZHVfYXR0ZW1wdHNfY250O1xuMTA3MzpcdFx0dTMyIHR4X21wZHVfc3VjY2Vzc19jbnQ7XG4xMDc0Olx0XHR1MzIgdHhfcGt0X2ViZl9jbnQ7XG4xMDc1Olx0XHR1MzIgdHhfcGt0X2liZl9jbnQ7XG4xMDc2Olx0XG4xMDc3Olx0XHR1MzIgdHhfcndwX2ZhaWxfY250O1xuMTA3ODpcdFx0dTMyIHR4X3J3cF9uZWVkX2NudDtcbjEwNzk6XHRcbjEwODA6XHRcdC8qIHJ4IHN0YXRzICovXG4xMDgxOlx0XHR1MzIgcnhfZmlmb19mdWxsX2NudDtcbjEwODI6XHRcdHUzMiBjaGFubmVsX2lkbGVfY250O1xuMTA4MzpcdFx0dTMyIHByaW1hcnlfY2NhX2J1c3lfdGltZTtcbjEwODQ6XHRcdHUzMiBzZWNvbmRhcnlfY2NhX2J1c3lfdGltZTtcbjEwODU6XHRcdHUzMiBwcmltYXJ5X2VuZXJneV9kZXRlY3RfdGltZTtcbjEwODY6XHRcdHUzMiBjY2tfbWRyZHlfdGltZTtcbjEwODc6XHRcdHUzMiBvZmRtX21kcmR5X3RpbWU7XG4xMDg4Olx0XHR1MzIgZ3JlZW5fbWRyZHlfdGltZTtcbjEwODk6XHRcdHUzMiByeF92ZWN0b3JfbWlzbWF0Y2hfY250O1xuMTA5MDpcdFx0dTMyIHJ4X2RlbGltaXRlcl9mYWlsX2NudDtcbjEwOTE6XHRcdHUzMiByeF9tcmR5X2NudDtcbjEwOTI6XHRcdHUzMiByeF9sZW5fbWlzbWF0Y2hfY250O1xuMTA5MzpcdFx0dTMyIHJ4X21wZHVfY250O1xuMTA5NDpcdFx0dTMyIHJ4X2FtcGR1X2NudDtcbjEwOTU6XHRcdHUzMiByeF9hbXBkdV9ieXRlc19jbnQ7XG4xMDk2Olx0XHR1MzIgcnhfYW1wZHVfdmFsaWRfc3ViZnJhbWVfY250O1xuMTA5NzpcdFx0dTMyIHJ4X2FtcGR1X3ZhbGlkX3N1YmZyYW1lX2J5dGVzX2NudDtcbjEwOTg6XHRcdHUzMiByeF9wZmRyb3BfY250O1xuMTA5OTpcdFx0dTMyIHJ4X3ZlY19xdWV1ZV9vdmVyZmxvd19kcm9wX2NudDtcbjExMDA6XHRcdHUzMiByeF9iYV9jbnQ7XG4xMTAxOlx0XG4xMTAyOlx0XHR1MzIgdHhfYW1zZHVbOF07XG4xMTAzOlx0XHR1MzIgdHhfYW1zZHVfY250O1xuMTEwNDpcdFxuMTEwNTpcdFx0LyogbWN1X211cnVfc3RhdHMgKi9cbjExMDY6XHRcdHUzMiBkbF9jY2tfY250O1xuMTEwNzpcdFx0dTMyIGRsX29mZG1fY250O1xuMTEwODpcdFx0dTMyIGRsX2h0bWl4X2NudDtcbjExMDk6XHRcdHUzMiBkbF9odGdmX2NudDtcbjExMTA6XHRcdHUzMiBkbF92aHRfc3VfY250O1xuMTExMTpcdFx0dTMyIGRsX3ZodF8ybXVfY250O1xuMTExMjpcdFx0dTMyIGRsX3ZodF8zbXVfY250O1xuMTExMzpcdFx0dTMyIGRsX3ZodF80bXVfY250O1xuMTExNDpcdFx0dTMyIGRsX2hlX3N1X2NudDtcbjExMTU6XHRcdHUzMiBkbF9oZV9leHRfc3VfY250O1xuMTExNjpcdFx0dTMyIGRsX2hlXzJydV9jbnQ7XG4xMTE3Olx0XHR1MzIgZGxfaGVfMm11X2NudDtcbjExMTg6XHRcdHUzMiBkbF9oZV8zcnVfY250O1xuMTExOTpcdFx0dTMyIGRsX2hlXzNtdV9jbnQ7XG4xMTIwOlx0XHR1MzIgZGxfaGVfNHJ1X2NudDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdW5pb25gIHN0cnVjdHVyZSB3aXRoaW4gdGhlIE1UNzYgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgTU1JTywgVVNCLCBhbmQgU0RJTyBkZXZpY2VzLiBJIHNlZSB0aGF0IGFjY2Vzc2luZyBgZGV2LSZndDttbWlvLm5wdWAgb3IgYGRldi0mZ3Q7bW1pby5wcGVfZGV2YCBpcyBvbmx5IHZhbGlkIHdoZW4gZGVhbGluZyB3aXRoIGFuIE1NSU8gZGV2aWNlLiBJZiB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIFVTQiBvciBTRElPLCBhY2Nlc3NpbmcgdGhvc2UgZmllbGRzIGlzIGxpa2VseSBnb2luZyB0byByZWFkIGZyb20gdGhlIG90aGVyIGRldmljZS1zcGVjaWZpYyBzdHJ1Y3R1cmVzLCB3aGljaCBjb3VsZCBiZSB2YWxpZCBidXQgbGVhZCB0byBjcmFzaGVzIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4KClRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyB0aGF0IGJ5IGFkZGluZyBhIGNoZWNrIHVzaW5nIGBtdDc2X2lzX21taW8oZGV2KSAmYW1wOyZhbXA7YCB0byBlbnN1cmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBmb3IgdGhlIGNvcnJlY3QgZGV2aWNlIHR5cGUgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgY2xlYXIgYnVnIGZpeC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgcmVhY2hhYmxlIGlzIHRoaXMgY29kZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEhtbSwgd2VsbCwgTVQ3NiBoYXMgc2V2ZXJhbCBVU0IgZHJpdmVycywgbGlrZSBgbXQ3NngwdWAsIGBtdDc2eDJ1YCwgYG10NzkyMXVgLCBhbmQgYG10NzkyNXVgLiBBbmQsIG9mIGNvdXJzZSwgVVNCIGRldmljZXMgY2FuIGRlZmluaXRlbHkgYmUgZW11bGF0ZWQgaW4gUUVNVSwgdXNpbmcgZWl0aGVyIGBkdW1teV9oY2RgIG9yIGB2aGNpLWhjZGAuIEkga25vdyBzeXprYWxsZXIgZnJlcXVlbnRseSBsZXZlcmFnZXMgYHZoY2ktaGNkYCBmb3IgVVNCIGZ1enppbmcuIFNvLCB5ZXMsIHRoaXMgY29kZSBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuCgpIYW5nIG9u4oCmIExldCBtZSBqdXN0IGNsYXJpZnkuIFRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBiZWhhdmlvciBvZiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gVGhvc2UgZnVuY3Rpb25zIGFyZSBwcmV0dHkgaW1wb3J0YW50IGFuZCB1c2VkIGluIGEgYnVuY2ggb2YgcGxhY2VzIOKAkyBgbXQ3Nl9kbWFfdHhfcXVldWVfc2tiYCwgYG10NzZfZG1hX3J4X2NsZWFudXBgLCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYW5kIG90aGVycy4gU28sIGlmIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCB3ZXJlIHRvIGJlIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgYSBVU0IgZGV2aWNlLCBpdCBtaWdodCByZXR1cm4gdHJ1ZSBlcnJvbmVvdXNseSwgYW5kIHRoYXQgY291bGQgZGVmaW5pdGVseSBsZWFkIHRvIGNyYXNoZXMsIG9yIGF0IGxlYXN0IGluY29ycmVjdCBvcGVyYXRpb24uIFllcCwgaXQmIzM5O3MgYSBidWcgZml4IHRoYXQgcHJldmVudHMgY3Jhc2hlcyBpbiBVU0IvU0RJTyBjb25maWd1cmF0aW9ucy4KCkFscmlnaHQsIHRoYXQgc2V0dGxlcyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGluIGEgZHJpdmVyIHRoYXQgd2UgY2FuIGFic29sdXRlbHkgcmVhY2ggdGhyb3VnaCBVU0IgZnV6emluZy4gVGhpcyBpcyB3b3J0aCBmdXp6aW5nLgoKTm93LCBsZXQgbWUgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWdz4oCmIEkmIzM5O20gc2VlaW5nIGBDT05GSUdfTVQ3Nl9DT1JFYCwgYENPTkZJR19NVDc2X1VTQmAsIGBDT05GSUdfTVQ3OTIxVWAsIGBDT05GSUdfTVQ3OTI1VWAsIGBDT05GSUdfTVQ3NngwVWAsIGFuZCBgQ09ORklHX01UNzZ4MlVgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgYWdhaW5zdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZSBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMDpjb25maWcgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZzoyOmNvbmZpZyBNVDc2MDNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MDNFIChQQ0llKSBhbmQgTVQ3Nng4IFdMQU4gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6Mzpjb25maWcgTVQ3NjE1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjg6Y29uZmlnIE1UNzYxNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYxNUUgYW5kIE1UNzY2M0UgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzoyMTpjb25maWcgTVQ3NjIyX1dNQUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjItXHRib29sIFwmIzM0O01UNzYyMiAoU29DKSBXTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozMjpjb25maWcgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzY6Y29uZmlnIE1UNzY2M1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo0Nzpjb25maWcgTVQ3NjYzU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4MF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoxOTpjb25maWcgTVQ3NngwRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4Ml9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDJFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6MTg6Y29uZmlnIE1UNzZ4MlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2MDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEZWVwIERpdmUgaW50byBDb25maWd1cmF0aW9uIEZpbGVzKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29tcGxldGUuIE5vdyBJIG5lZWQgdG8gZW5zdXJlIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHN5c3RlbTsgdGhlIG9yaWdpbmFsIGRhdGEgYWxvbmUgaXNuJiMzOTt0IHN1ZmZpY2llbnQuIFRoaXMgbWVhbnMgYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiBJIG5lZWQgdG8gYmUgbWV0aG9kaWNhbCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIFdoYXQgc3BlY2lmaWMgYXJlYXMgYXJlIHRoZSBjb25maWd1cmF0aW9ucyBpbXBhY3Rpbmc/IEkmIzM5O2xsIHJldmlldyBhbGwgdGhlIGNvbmZpZ3MuIEkgd2lsbCBiZSBsb29raW5nIGZvciBpbnRlcmFjdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW5jb25zaXN0ZW5jaWVzLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYWxsIHRoZSBjb25maWdzLiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI4PWNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzI6Y29uZmlnIE1UNzkyeF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6Mjpjb25maWcgTVQ3OTE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5OFhfV01BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7TVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxNTEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBzZXQgb2YgY29uZmlndXJhdGlvbnMgaGVyZTogYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgcmVsZXZhbnQgbW9kdWxlcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy4KCkFscmlnaHQsIHRoZSBwYXRjaCB0b3VjaGVzIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBUaG9zZSBhcmUgaW5saW5lIGZ1bmN0aW9ucyBpbiBgbXQ3Ni5oYCwgc28gSSBzaG91bGQgbm90ZSB0aGVpciB1c2FnZS4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBjYWxsZWQgZnJvbSBxdWl0ZSBhIGZldyBwbGFjZXM6IGBtdDc2X2RtYV90eF9xdWV1ZV9za2JgLCBgbXQ3Nl9kbWFfcnhfY2xlYW51cGAsIGBtdDc2X2RtYV9yeF9yZXNldGAsIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCBhbmQgYSB3aG9sZSBzbGV3IG9mIGBtdDc5OTZfYCBmdW5jdGlvbnMgcmVsYXRlZCB0byBETUEgY29uZmlndXJhdGlvbiwgaW5pdGlhbGl6YXRpb24sIGFuZCBuZXR3b3JrIHNldHVwLiBUaGF0JiMzOTtzIGEgZGVjZW50LXNpemVkIHN1cmZhY2UgYXJlYSB0byBiZSByZXZpZXdpbmcuCgpIb2xkIG9uIGEgbWludXRlLCBgbXQ3OTk2YCBpcyBQQ0llLW9ubHksIHNvIHRoYXQgbW9kdWxlIGFuZCBpdHMgYXNzb2NpYXRlZCBmdW5jdGlvbnMgc2hvdWxkbiYjMzk7dCBiZSByZWxldmFudCBmb3IgVVNCIGZ1enppbmcuIFRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGtlZXAgaW4gbWluZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBzb21ldGhpbmcuIEkgd2FzIG9yaWdpbmFsbHkgZm9jdXNlZCBvbiB0aGUgYG10NzZfZG1hX3R4X3F1ZXVlX3NrYmAgZnVuY3Rpb24sIGFzIHRoYXQgb25lJiMzOTtzIGluIGBkbWEuY2AuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgaXMgdXNlZCBieSBVU0IgZGV2aWNlcyBvciBub3QuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgcGF0aCB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gZm9yIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2RtYV90eF9xdWV1ZV9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTYwNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjYwNzptdDc2X2RtYV90eF9xdWV1ZV9za2JfcmF3KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjA4LVx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHR4X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz02Mzk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2NDA6bXQ3Nl9kbWFfdHhfcXVldWVfc2tiKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjQxLVx0XHQgICAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X3F1ZXVlX29wcyBtdDc2X2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTUxLVx0LnJlc2V0X3EgPSBtdDc2X2RtYV9xdWV1ZV9yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE1MjpcdC50eF9xdWV1ZV9za2JfcmF3ID0gbXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE1MzpcdC50eF9xdWV1ZV9za2IgPSBtdDc2X2RtYV90eF9xdWV1ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNTQtXHQudHhfY2xlYW51cCA9IG10NzZfZG1hX3R4X2NsZWFudXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTcwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIERNQSBPcGVyYXRpb25zIElucXVpcnkqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMganVzdCB0aGlua2luZyBhYm91dCBETUEgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIGBtdDc2YCBmcmFtZXdvcmssIHNwZWNpZmljYWxseSBgbXQ3Nl9kbWFfb3BzYC4gQnV0LCB0aGF0JiMzOTtzIGZvciBQQ0llIG9yIE1NSU8sIHJpZ2h0PyBJJiMzOTttIGZvcmdldHRpbmcgc29tZXRoaW5nIGNydWNpYWwgaGVyZS4uLiB3aGF0IGFib3V0IFVTQj8gSXQmIzM5O3Mgbm90IHRoZSBzYW1lLiBVU0IgaGFzIGl0cyBvd24gc2V0IG9mIG9wZXJhdGlvbnMsIGFuZCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgdGhleSYjMzk7cmUgaGFuZGxlZCB2aWEgYG10NzZfdXNiX29wc2AuIFJpZ2h0LCB0aGF0IGZlZWxzIG1vcmUgY29ycmVjdC4gVGltZSB0byBjb25maXJtIG15IHN1c3BpY2lvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIGB1c2IuY2AgYW5kIG1ha2Ugc3VyZSBteSBtZW1vcnkgc2VydmVzIG1lIGNvcnJlY3RseS4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgdGhlIFVTQiBzaWRlIG9mIGBtdDc2YCBpcyBzdHJ1Y3R1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfdXNiX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4MjYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIGBtdDc2X3F1ZXVlX29wc2AsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBtdDc2X3F1ZXVlX29wc2AqKgoKT2theSwgc28gSSBuZWVkIHRvIGNoZWNrIG91dCBgbXQ3Nl9xdWV1ZV9vcHNgLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyAqaGFzKiB0byBiZSB0aGUgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciB0aGUgTVQ3NiYjMzk7cyBpbnRlcm5hbCBxdWV1ZSBtYW5hZ2VtZW50LiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHJlY2FsbCB0aGUgZ2VuZXJhbCBNVDc2IGFyY2hpdGVjdHVyZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVkaWNhdGVkIGhhcmR3YXJlIHF1ZXVlcz8gU29mdHdhcmUgZW11bGF0aW9uPyBIeWJyaWQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCkkmIzM5O20gaW5zdGFudGx5IGdvaW5nIHRvIGJlIGludGVyZXN0ZWQgaW4gdGhlIHR5cGljYWwgc3VzcGVjdHM6IGB0eF9lbnF1ZXVlYCwgYHR4X2RlcXVldWVgLCBgcnhfZW5xdWV1ZWAsIGByeF9kZXF1ZXVlYCwgYHF1ZXVlX2luaXRgLCBgcXVldWVfZGVpbml0YC4gQWxzbywgbGV0JiMzOTtzIHNlZSwgd2hhdCBhYm91dCBlcnJvciBoYW5kbGluZyBmdW5jdGlvbnM/IEFyZSB0aGVyZSBwZXItcXVldWUgc3RhdHMgY291bnRlcnMgZXhwb3NlZCB2aWEgdGhpcyBzdHJ1Y3Q/IFByb2JhYmx5LiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIHRob3NlLgoKR2l2ZW4gdGhlIE1UNzYmIzM5O3MgY29tbW9uIHVzZSB3aXRoIFBDSWUgYW5kIFVTQiBpbnRlcmZhY2VzLCBJIGV4cGVjdCBzb21lIGZ1bmN0aW9ucyB3aWxsIGJlIHJlbGF0ZWQgdG8gZGVzY3JpcHRvciBtYW5hZ2VtZW50LCBETUEgb3BlcmF0aW9ucywgYW5kIHBlcmhhcHMgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgdG8gdGhlIHF1ZXVlcy4gSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlc2UgZnVuY3Rpb25zIG1hbmFnZSB0aGUgaGFyZHdhcmUgZGlyZWN0bHkgb3IgdXNlIGFuIGludGVybWVkaWFyeSBsYXllciBvZiBzb2Z0d2FyZSBxdWV1ZXMuCgpBcmUgdGhlcmUgbGlrZWx5IHRvIGJlIHJhdGUgbGltaXRpbmcgb3IgdHJhZmZpYyBzaGFwaW5nIGZ1bmN0aW9ucyBoZXJlPyBRdWl0ZSBwb3NzaWJseSwgZXNwZWNpYWxseSBpZiB0aGlzIGNvdmVycyBtdWx0aXBsZSBxdWV1ZXMgd2l0aCBkaWZmZXJpbmcgcHJpb3JpdGllcy4gQWxzbywgZG9lcyBpdCBjb250YWluIGZ1bmN0aW9ucyBmb3IgcG93ZXIgbWFuYWdlbWVudCBvciBxdWV1ZSBkcmFpbmluZyBvbiBzdXNwZW5kL3Jlc3VtZT8gVGhlc2UgYXJlIHRoaW5ncyB0byBsb29rIGZvci4KCkkmIzM5O20gZXhwZWN0aW5nIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBzdHVmZiwgcG90ZW50aWFsbHkgaW52b2x2aW5nIG1lbW9yeSBiYXJyaWVycyBhbmQgY2FyZWZ1bCBzeW5jaHJvbml6YXRpb24uIElmIHRoaXMgaXMgYSBtb2Rlcm4gTVQ3NiBkcml2ZXIsIEkmIzM5O20gaG9waW5nIHRvIHNlZSB3ZWxsLWNvbW1lbnRlZCBjb2RlLCBidXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGdldCBteSBob3BlcyB1cC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExMDg9bXQ3Nl9kbWFfaW5pdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjExNDg6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X3F1ZXVlX29wcyBtdDc2X2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNDktXHQuaW5pdCA9IG10NzZfZG1hX2luaXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjcwPXN0cnVjdCBtdDc2X21jdV9vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjI5MjpzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMjkzLVx0aW50ICgqaW5pdCkoc3RydWN0IG10NzZfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTIxPXN0cnVjdCBtdDc2X2RldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTU4LVx0c3RydWN0IG10NzZfcXVldWUgcV9yeFtfX01UX1JYUV9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTU5Olx0Y29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzICpxdWV1ZV9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05NjAtXHRpbnQgdHhfZG1hX2lkeFs0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz01ODc9c3RhdGljIHZvaWQgbXQ3NnNfdHhfa2ljayhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NTk0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgc2Rpb19xdWV1ZV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01OTUtXHQudHhfcXVldWVfc2tiID0gbXQ3NnNfdHhfcXVldWVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM9MTA2OT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2dV9hbGxvY19xdWV1ZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYzoxMDcxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgdXNiX3F1ZXVlX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtMTA3Mi1cdC50eF9xdWV1ZV9za2IgPSBtdDc2dV90eF9xdWV1ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDMzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBDYWxsKioKCk9rYXksIHNvIEkgd2FzIGxvb2tpbmcgYXQgdGhlIGBtdDc2X2RtYV90eF9xdWV1ZV9za2JgIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgaXQmIzM5O3MgZXhjbHVzaXZlbHkgdXNlZCBmb3IgZGV2aWNlcyB0aGF0IHJlbHkgb24gRGlyZWN0IE1lbW9yeSBBY2Nlc3MsIGxpa2UgUENJZSBhbmQgTU1JTyBiYXNlZCBoYXJkd2FyZS4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBCdXQgdGhlbiBJIGhpdCBhIHNuYWcuIFRoZSBmdW5jdGlvbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAsIHRoZSBvbmUgSSB3YXMgYWN0dWFsbHkgZm9jdXNlZCBvbiwgaXMgc2VlbWluZ2x5ICpvbmx5KiBjYWxsZWQgZnJvbSB3aXRoaW4gRE1BLXJlbGF0ZWQgc2VjdGlvbnMgb2YgdGhlIGNvZGUuIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSWYgaXQmIzM5O3MgKm9ubHkqIGNhbGxlZCBmcm9tIERNQSBjb250ZXh0cywgaG93IGluIHRoZSB3b3JsZCBjb3VsZCBpdCBiZSB0cmlnZ2VyZWQgZm9yIGEgVVNCIGRldmljZT8gVGhlIGxvZ2ljIGp1c3QgZG9lc24mIzM5O3QgZm9sbG93LgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgdGFrZSBhIG1vcmUgZ3JhbnVsYXIgYXBwcm9hY2guIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGJhY2sgdG8gaXRzIG9yaWdpbnMuIExldCBtZSBzZWUuLi4gd2hlcmUgKmVsc2UqIGlzIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBiZWluZyBjYWxsZWQ/IEFoIGhhISBJIGZvdW5kIGl0IC0gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaW4gYG1hYzgwMjExLmNgLiBUaGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIGRhdGEgcG9pbnQuIE5vdyBJIGhhdmUgYW5vdGhlciBwbGFjZSB0byBmb2N1cyBvbiB0byBidWlsZCB0aGlzIG1lbnRhbCBtb2RlbC4gVGhpcyBtYWtlcyBtb3JlIHNlbnNlIG5vdywgSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgYW5kIGhvdyBpdCBtaWdodCBjYWxsLCBvciBub3QgY2FsbCwgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbiBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3J4X3BvbGxfY29tcGxldGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTEwNzM9aW50IG10NzZfZG1hX3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTA4NC1cdFx0Y3VyID0gbXQ3Nl9kbWFfcnhfcHJvY2VzcyhkZXYsIFx1MDAyNmRldi1cdTAwM2VxX3J4W3FpZF0sIGJ1ZGdldCAtIGRvbmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzoxMDg1Olx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBxaWQsIG5hcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMDg2LVx0XHRkb25lICYjNDM7PSBjdXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE1MTQ9dm9pZCBtdDc2X3J4X2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTU1NDp2b2lkIG10NzZfcnhfcG9sbF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NTUtXHRcdFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTcyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcnhfcG9sbF9jb21wbGV0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzkzPXZvaWQgbXQ3Nl9yeF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5NC1cdFx0ICAgICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3OTU6dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3OTYtXHRcdFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jPTE0ND1zdGF0aWMgaW50IG10NzZfbnB1X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTY1LVx0XHRkZXYtXHUwMDNlZHJ2LVx1MDAzZXJ4X3NrYihkZXYsIHFpZCwgc2tiLCBcdTAwMjZpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MTY2Olx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBxaWQsIG5hcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xNjctXHRcdGRvbmUmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jPTM4Mz1tdDc2c19wcm9jZXNzX3J4X3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy00MDItXHRpZiAocWlkID09IE1UX1JYUV9NQUlOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NDAzOlx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBNVF9SWFFfTUFJTiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy00MDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz02MDI9bXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy02MjItXHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6NjIzOlx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBNVF9SWFFfTUFJTiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTYyNC1cdFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNjMxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBkZWJ1Z2dpbmcgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqVHJhY2luZyB0aGUgUmVjZWl2ZSBQYXRoKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgcmVjZWl2ZSBwYXRoLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgSSByZW1lbWJlciBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBiZWluZyBjYWxsZWQgZnJvbSBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAg4oCTIHllcCwgdGhhdCYjMzk7cyBpbiBgdXNiLmNgLCBleGFjdGx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IGl0LiBUaGUgbmV4dCB0aGluZyBJJiMzOTttIHNlZWluZyBpcyBhIGNoZWNrOiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBpcyBjYWxsaW5nIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldilgLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhIGNvbmRpdGlvbmFsIGNhbGwsIHNvIGxldCYjMzk7cyBzZWUgd2hhdCBpcyBoYXBwZW5pbmcgaW4gdGhlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIGZ1bmN0aW9uLiBMb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8ganVtcCBvdmVyIHRvIGBtYWM4MDIxMS5jYCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTU0Olx0dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbjE1NTU6XHRcdFx0XHQgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4xNTU2Olx0e1xuMTU1NzpcdFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBmcmFtZXM7XG4xNTU4Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuMTU1OTpcdFxuMTU2MDpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmZyYW1lcyk7XG4xNTYxOlx0XG4xNTYyOlx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZGV2LVx1MDAzZXJ4X3NrYltxXSkpICE9IE5VTEwpIHtcbjE1NjM6XHRcdFx0bXQ3Nl9jaGVja19zdGEoZGV2LCBza2IpO1xuMTU2NDpcdFx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgfHxcbjE1NjU6XHRcdFx0ICAgIG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcbjE1NjY6XHRcdFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmZyYW1lcywgc2tiKTtcbjE1Njc6XHRcdFx0ZWxzZVxuMTU2ODpcdFx0XHRcdG10NzZfcnhfYWdncl9yZW9yZGVyKHNrYiwgXHUwMDI2ZnJhbWVzKTtcbjE1Njk6XHRcdH1cbjE1NzA6XHRcbjE1NzE6XHRcdG10NzZfcnhfY29tcGxldGUoZGV2LCBcdTAwMjZmcmFtZXMsIG5hcGkpO1xuMTU3MjpcdH1cbjE1NzM6XHRFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3J4X3BvbGxfY29tcGxldGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMxOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIEZ1bmN0aW9uJiMzOTtzIEJlaGF2aW9yKioKCk9rYXksIHNvIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIGlzIGRlZmluaXRlbHkgYmVpbmcgaW52b2tlZCBmb3IgVVNCIGRldmljZXMuIFRoYXQmIzM5O3MgZ29vZCwgYnV0IGl0JiMzOTtzIGxlYWRpbmcgdG8gc29tZSBwb3RlbnRpYWwgaXNzdWVzIEkgbmVlZCB0byBhZGRyZXNzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNhbGxpbmcgYm90aCBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKCZhbXA7ZGV2LSZndDttbWlvLndlZClgIGFuZCBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpYC4gVGhlIHByb2JsZW0gaXMsIGZvciBVU0IgZGV2aWNlcywgYGRldi0mZ3Q7bW1pb2AgaXMgaW52YWxpZDsgaXQmIzM5O3Mgb3ZlcmxhcHBpbmcgbWVtb3J5IHdpdGggYGRldi0mZ3Q7dXNiYC4gVGhpcyBtZWFucyB0aGVzZSBmdW5jdGlvbnMsIHBhcnRpY3VsYXJseSB0aGUgb25lcyB0aGF0IGNoZWNrIGZvciBhY3RpdmUgZGV2aWNlcywgYXJlIGxpa2VseSByZWFkaW5nIGdhcmJhZ2UgZGF0YSBmcm9tIGBkZXYtJmd0O3VzYmAuIFRoYXQmIzM5O3Mgbm90IGlkZWFsLgoKVGhpcyBjYW4gcmVzdWx0IGluIGVpdGhlciBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCBvciBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgcmV0dXJuaW5nIGEgbm9uLXplcm8gdmFsdWUgd2hlbiB0aGV5IHNob3VsZG4mIzM5O3QuIElmIHRoaXMgaGFwcGVucywgaW5zdGVhZCBvZiBwcm9wZXJseSB1c2luZyBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgLCB0aGUgY29kZSBpbmNvcnJlY3RseSBnb2VzIHRvIGBfX3NrYl9xdWV1ZV90YWlsYC4gVGhpcyBjb21wbGV0ZWx5IGJyZWFrcyB0aGUgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyBtZWNoYW5pc20gZm9yIFVTQiBkZXZpY2VzLiBGdXJ0aGVybW9yZSwgdGhlcmUmIzM5O3MgYSByZWFsIHBvc3NpYmlsaXR5IG9mIGl0IGNhdXNpbmcgY3Jhc2hlcyBpZiBpdCBhdHRlbXB0cyB0byBkZXJlZmVyZW5jZSBzb21ldGhpbmcgdW5leHBlY3RlZCBvciBpbnZhbGlkLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bC4KCldhaXQsIGxvb2tpbmcgYXQgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgYWdhaW4sIGl0JiMzOTtzIGFsc28gYWNjZXNzaW5nIGBkZXYtJmd0O21taW8ud2VkYC4gRG9lcyBpdCBoYXZlIGEgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhbiBNTUlPIGRldmljZT8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0OyBpdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBnZXQgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210a193ZWRfZGV2aWNlX2FjdGl2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9ODAyPW10NzZfZG1hX2FsbG9jX3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODQ2Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg0Ny1cdFx0aWYgKChtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2IG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTg2MT1tdDc2X2RtYV9yeF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODgyOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4My1cdFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTkwNT1tdDc2X2RtYV9yeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjkyODpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTI5LVx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExNjc9dm9pZCBtdDc2X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE5ODpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTE5OS1cdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEyMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjEyMDE6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZF9oaWYyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTIwMi1cdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZF9oaWYyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oPTE3NT1tdDc2X2RtYV9yZXNldF90eF9xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC0xNzktXHRkZXYtXHUwMDNlcXVldWVfb3BzLVx1MDAzZXJlc2V0X3EoZGV2LCBxLCByZXNldF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDoxODA6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTE4MS1cdFx0bXQ3Nl93ZWRfZG1hX3NldHVwKGRldiwgcSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE1NTQ9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2My1cdFx0bXQ3Nl9jaGVja19zdGEoZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE1NjQ6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjUtXHRcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmM9Nzc9dm9pZCBtdDc2X3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmMtODUtXHRpZiAoYWRkcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmM6ODY6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jLTg3LVx0XHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Ny1cdFx0LyogbXQ3OTE1IFdBIG9ubHkgY291bnRzIFdFRCBwYXRoICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU0ODpcdFx0aWYgKGlzX210NzkxNShkZXYpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQ5LVx0XHRcdHdjaWQtXHUwMDNlc3RhdHMudHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz02MjQ9Ym9vbCBtdDc2X2Nvbm5hYzJfbWFjX2ZpbGxfdHhzKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNjM2LVx0LyogUFBEVSBiYXNlZCByZXBvcnRpbmcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NjM3Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02MzgtXHQgICAgRklFTERfR0VUKE1UX1RYUzBfVFhTX0ZPUk1BVCwgdHhzKSBcdTAwM2UgMSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MTI3Mj1pbnQgbXQ3Nl9jb25uYWNfbWN1X3N0YV93ZWRfdXBkYXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MTI3NzpcdGlmICghbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTEyNzgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTk9bXQ3OTE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGludCBpZHgsIGludCBuX2Rlc2MsIGludCByaW5nX2Jhc2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzoxNDpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0xNS1cdFx0aWYgKGlzX210Nzk4eChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM9NDE9c3RhdGljIHZvaWQgbXQ3OTE1X2RtYV9jb25maWcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjg3Olx0XHRpZiAoaXNfbXQ3OTE2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtODgtXHRcdFx0UlhRX0NPTkZJRyhNVF9SWFFfTUFJTiwgV0ZETUEwLCBNVF9JTlRfV0VEX1JYX0RPTkVfQkFORDBfTVQ3OTE2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTI1NT1pbnQgbXQ3OTE1X2RtYV9zdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHJlc2V0LCBib29sIHdlZF9yZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0zMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzozMDk6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjYgd2VkX3Jlc2V0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0zMTAtXHRcdHUzMiB3ZWRfaXJxX21hc2sgPSBpcnFfbWFzaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz00MDg9aW50IG10NzkxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5Milcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0MjQ6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00MjUtXHRcdGlmICghaXNfbXQ3OTh4KG1kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDkzLVx0LyogZXZlbnQgZnJvbSBXQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NDk0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjYgaXNfbXQ3OTE1KG1kZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00OTUtXHRcdHdhX3J4X2Jhc2UgPSBNVF9XRURfUlhfUklOR19CQVNFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUxMC1cdGlmICghZGV2LVx1MDAzZXBoeS5tdDc2LVx1MDAzZWJhbmRfaWR4KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo1MTE6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01MTItXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NTMzOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01MzQtXHRcdFx0bWRldi1cdTAwM2VxX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX1dFRF9RX1RYRlJFRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01NDktXHRpZiAoZGV2LVx1MDAzZWRiZGNfc3VwcG9ydCB8fCBkZXYtXHUwMDNlcGh5Lm10NzYtXHUwMDNlYmFuZF9pZHgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjU1MDpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTU1MS1cdFx0ICAgIG10a193ZWRfZ2V0X3J4X2NhcGEoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz01OTA9aW50IG10NzkxNV9kbWFfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBmb3JjZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy02MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo2MTM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy02MTQtXHRcdG10a193ZWRfZGV2aWNlX2RtYV9yZXNldCh3ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTY0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjY0MTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcdTAwMjZcdTAwMjYgaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTY0Mi1cdFx0bXQ3Nl9ybXcoZGV2LCBNVF9XRkRNQTBfRVhUMF9DRkcsIE1UX1dGRE1BMF9FWFQwX1JYV0JfS0VFUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MzU4PW10NzkxNV9pbml0X3dpcGh5KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNzE6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM3Mi1cdFx0aHctXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVEM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTQ4ND1tdDc5MTVfbWFjX2luaXRfYmFuZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBiYW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NDktXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1NTA6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NTEtXHRcdG10NzZfc2V0KGRldiwgTVRfQUdHX0FDUjQoYmFuZCksIE1UX0FHR19BQ1JfUFBEVV9UWFMySCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9ODY3PW10NzkxNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTkxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjkxNDpcdFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2IHdjaWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTkxNS1cdFx0XHR1MzIgdHhfcmV0cmllcyA9IDAsIHR4X2ZhaWxlZCA9IDAsIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0NzM9dm9pZCBtdDc5MTVfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE1MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNTM0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTM1LVx0XHRtdGtfd2VkX2RldmljZV9zdG9wKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTE1Nz1zdGF0aWMgdm9pZCBtdDc5MTVfc3RhX3N0YXRpc3RpY3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTExODktXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxMTkwOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTE5MS1cdFx0c2luZm8tXHUwMDNldHhfYnl0ZXMgPSBtc3RhLVx1MDAzZXdjaWQuc3RhdHMudHhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3MjM9bXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTczNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxNzM1Olx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzM2LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg0PWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxODpcdGlmICgobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTktXHQgICAgIGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MzY6XHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfcmVkKGRldiwgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDM3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NzkzPXZvaWQgbXQ3OTE1X2R1YWxfaGlmX3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy04MDUtXHRpZiAod3JpdGVfcmVnKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6ODA2Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTgwNy1cdFx0XHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTgzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4MzI6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy04MzMtXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz04OTY9aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjkwMTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05MDItXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTkyLWZyZWVfd2VkX29yX2lycV92ZWN0b3I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTk0LVx0XHRtdGtfd2VkX2RldmljZV9kZXRhY2goXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI3Mi1mcmVlX2RldmljZTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNzM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI3NC1cdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTEwPWludCBtdDc5OTZfaW5pdF90eF9xdWV1ZXMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSwgaW50IGlkeCwgaW50IG5fZGVzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjE2Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xNy1cdFx0cmluZ19iYXNlICYjNDM7PSBNVF9UWFFfSUQoMCkgKiBNVF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9MzA2PXZvaWQgbXQ3OTk2X2RtYV9zdGFydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHJlc2V0LCBib29sIHdlZF9yZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zMTYtXHRpZiAoIXJlc2V0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzozMTc6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcdTAwMjZcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzE4LVx0XHRcdG10NzZfc2V0KGRldiwgTVRfV0ZETUEwX0dMT19DRkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MzU0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiB3ZWRfcmVzZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM1NS1cdFx0dTMyIHdlZF9pcnFfbWFzayA9IGlycV9tYXNrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTM3ND1zdGF0aWMgdm9pZCBtdDc5OTZfZG1hX2VuYWJsZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTUwMi1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1MDM6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTA0LVx0XHQgICAgbXQ3OTk2X2hhc19od3JybyhkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NTIxPWludCBtdDc5OTZfZG1hX3Jyb19pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTI5LVx0XHRtZGV2LVx1MDAzZXFfcnhbTVRfUlhRX1JST19SWERNQURfQ10uZmxhZ3MgPSBNVF9XRURfUlJPX1FfUlhETUFEX0M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1MzA6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01MzEtXHRcdFx0bWRldi1cdTAwM2VxX3J4W01UX1JYUV9SUk9fUlhETUFEX0NdLndlZCA9IFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTQyOlx0XHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTQzLVx0XHRcdC8qIFdlIG5lZWQgdG8gc2V0IGNwdSBpZHggcG9pbnRlciBiZWZvcmUgcmVzZXR0aW5nIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU1Ni1cdG1kZXYtXHUwMDNlcV9yeFtNVF9SWFFfUlJPX0lORF0uZmxhZ3MgPSBNVF9XRURfUlJPX1FfSU5EO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTU3Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU1OC1cdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU2OS1cdFx0TVRfV0VEX1JST19RX01TRFVfUEcoMCkgfCBNVF9RRkxBR19XRURfUlJPX0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTcwOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU3MS1cdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU4Ni1cdFx0XHRNVF9XRURfUlJPX1FfTVNEVV9QRygxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1ODc6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01ODgtXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYwNC1cdFx0XHRNVF9XRURfUlJPX1FfTVNEVV9QRygyKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo2MDU6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDYtXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTYyMj12b2lkIG10Nzk5Nl9kbWFfcnJvX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NjI2Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYyNy1cdFx0aXJxX21hc2sgPSBkZXYtXHUwMDNlbXQ3Ni5tbWlvLmlycW1hc2sgfFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTY2ND1pbnQgbXQ3OTk2X2RtYV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzM5LVx0LyogcnggZGF0YSBxdWV1ZSBmb3IgYmFuZDAgYW5kIG10Nzk5NiBiYW5kMSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzQwOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc0MS1cdFx0ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfTUFJTl0uZmxhZ3MgPSBNVF9XRURfUV9SWCgwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03NTMtXHQvKiB0eCBmcmVlIG5vdGlmeSBldmVudCBmcm9tIFdBIGZvciBiYW5kMCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzU0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzU1LVx0ICAgICgoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgIW10Nzk5Nl9oYXNfaHdycm8oZGV2KSkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03NzItXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzczOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc3NC1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDBdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc4Ni1cdGlmICghbXQ3OTk2X2hhc193YShkZXYpIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlaGlmMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6Nzg3Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc4OC1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDFdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgxMy1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4MTQ6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkX2hpZjIpIFx1MDAyNlx1MDAyNiAhbXQ3OTk2X2hhc19od3JybyhkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04MTUtXHRcdFx0ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDJfV0FdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgyOC1cdFx0cnhfYmFzZSA9IE1UX1JYUV9SSU5HX0JBU0UoTVRfUlhRX0JBTkQxKSAmIzQzOyBoaWYxX29mcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjgyOTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgzMC1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9CQU5EMV0uZmxhZ3MgPSBNVF9XRURfUV9SWCgxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NDQtXHRcdFx0cnhfYmFzZSA9IE1UX1JYUV9SSU5HX0JBU0UoTVRfUlhRX0JBTkQxX1dBKSAmIzQzOyBoaWYxX29mcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjg0NTpcdFx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZF9oaWYyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODQ2LVx0XHRcdFx0ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDFfV0FdLmZsYWdzID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NjQtXHRcdFx0TVRfV0VEX1JST19RX0RBVEEoMCkgfCBNVF9RRkxBR19XRURfUlJPX0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODY1Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXHUwMDI2XHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg2Ni1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9SUk9fQkFORDBdLndlZCA9IHdlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NzctXHRcdFx0XHRNVF9XRURfUlJPX1FfREFUQSgxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4Nzg6XHRcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODc5LVx0XHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODg5LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODkwOlx0XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODkxLVx0XHRcdFx0LyogdHggZnJlZSBub3RpZnkgZXZlbnQgZnJvbSBXQSBmb3IgYmFuZDAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05MTMtXHRcdFx0XHRNVF9XRURfUlJPX1FfREFUQSgxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo5MTQ6XHRcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTE1LVx0XHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTI4LVx0XHRcdC8qIHR4IGZyZWUgbm90aWZ5IGV2ZW50IGZyb20gTUFDIGZvciBiYW5kMiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTI5Olx0XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05MzAtXHRcdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDJdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTk2MD12b2lkIG10Nzk5Nl9kbWFfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCBmb3JjZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05OTQtXHRpZiAobXQ3OTk2X2hhc19od3JybyhkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTk1Olx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTk2LVx0XHRtdDc5OTZfcnJvX21zZHVfcGFnZV9tYXBfZnJlZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzoxMDAyOlx0aWYgKGRldi1cdTAwM2VoaWYyIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDAzLVx0XHRtdGtfd2VkX2RldmljZV9kbWFfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTAwNTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTAwNi1cdFx0bXRrX3dlZF9kZXZpY2VfZG1hX3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTAyNzpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMjgtXHRcdFx0aWYgKG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSB8fFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwNDAtXHRtdDc2X2Zvcl9lYWNoX3FfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEwNDE6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNiBmb3JjZSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwNDItXHRcdCAgICAobXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2luZChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5xX3J4W2ldKSB8fFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00Nzg9bXQ3OTk2X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00OTItXHRody1cdTAwM2VuZXRkZXZfZmVhdHVyZXMgPSBORVRJRl9GX1JYQ1NVTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo0OTM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgfHwgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00OTQtXHRcdGh3LVx1MDAzZW5ldGRldl9mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3NjA6XHRpZiAod2VkID09IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIgXHUwMDI2XHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzYxLVx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz04MjU9c3RhdGljIHZvaWQgbXQ3OTk2X3Jyb19od19pbml0X3YzKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTgzMy0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODM0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzUtXHRcdHdlZC1cdTAwM2V3bGFuLmluZF9jbWQud2luX3NpemUgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ5Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NTAtXHRcdG10NzZfd3IoZGV2LCBNVF9SUk9fSU5EX0NNRF9TSUdOQVRVUkVfQkFTRTAsIDB4MTUwMTBlMDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz04Njg9dm9pZCBtdDc5OTZfcnJvX2h3X2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODg3LVx0XHRcdFx0IE1UX1JST18zXzFfR0xPQkFMX0NPTkZJR19SWERNQURfU0VMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4ODg6XHRcdFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg4OS1cdFx0XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTk4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo5OTk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwMDAtXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMjM6XHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAyNC1cdCAgICBkZXYtXHUwMDNlbXQ3Ni5od3Jyb19tb2RlID09IE1UNzZfSFdSUk9fVjNfMSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzk4PXZvaWQgbXQ3OTk2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE4MTEtXHRpZiAobXQ3OTk2X2hhc19od3JybyhkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE4MTI6XHQgICAgIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTgxMy1cdFx0bXQ3OTk2X3Jyb19tc2R1X3BhZ2VfbWFwX2ZyZWUoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0xNDA2PW10Nzk5Nl9tYWNfYWRkX3R4c19za2Ioc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MTQ0MDpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNiB3Y2lkLVx1MDAzZXN0YSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTQ0MS1cdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0xNjIwPXZvaWQgbXQ3OTk2X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjM4LVx0Y2FzZSBQS1RfVFlQRV9UWFJYX05PVElGWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjE2Mzk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjQwLVx0XHQgICAgcSA9PSBNVF9SWFFfVFhGUkVFX0JBTkQyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjIyMD1tdDc5OTZfbWFjX3Jlc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjQ4LVx0bXQ3Nl9mb3JfZWFjaF9xX3J4KG1kZXYsIGkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjIyNDk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI1MC1cdFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcdTAwMjZtZGV2LVx1MDAzZXFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyNjQtXHRtdDc2X2Zvcl9lYWNoX3FfcngobWRldiwgaSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjI2NTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjY2LVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNm1kZXYtXHUwMDNlcV9yeFtpXSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjIyOTY6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyOTctXHQgICAgbXQ3OTk2X2hhc19od3JybyhkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjIzMTU6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMzE2LVx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTE9dm9pZCBtdDc5OTZfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkyOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTMtXHRcdG10a193ZWRfZGV2aWNlX3N0b3AoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5NTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Ni1cdFx0bXRrX3dlZF9kZXZpY2Vfc3RvcChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjUxNC1cdG10NzZfZm9yX2VhY2hfcV9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgaSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjUxNTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTE2LVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTUzOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NTQtXHRcdHUzMiB3ZWRfaXJxX21hc2sgPSBNVF9JTlRfVFhfRE9ORV9CQU5EMiB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1NjQ6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTY1LVx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NzYtXHRtdDc2X2Zvcl9lYWNoX3FfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1Nzc6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU3OC1cdFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5xX3J4W2ldKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yOTAxPXZvaWQgbXQ3OTk2X21hY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTE4LVx0XHRtdDc5OTZfbWN1X2dldF9hbGxfc3RhX2luZm8ocGh5LCBVTklfQUxMX1NUQV9UWFJYX1JBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjkxOTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTIwLVx0XHRcdG10Nzk5Nl9tY3VfZ2V0X2FsbF9zdGFfaW5mbyhwaHksIFVOSV9BTExfU1RBX1RYUlhfQURNX1NUQVQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0xODYxPXN0YXRpYyB2b2lkIG10Nzk5Nl9zdGFfc3RhdGlzdGljcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoxOTAyOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0xOTAzLVx0XHRzaW5mby1cdTAwM2V0eF9ieXRlcyA9IG1zdGFfbGluay1cdTAwM2V3Y2lkLnN0YXRzLnR4X2J5dGVzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQwOTpcdGlmICghbXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxMC1cdCAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTUtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MTY6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNy1cdFx0cGF0aC1cdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cdTAwM2V3ZG1hX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9Njc5PXZvaWQgbXQ3OTk2X2R1YWxfaGlmX3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHdyaXRlX3JlZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjkwLVx0aWYgKHdyaXRlX3JlZykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjY5MTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTY5Mi1cdFx0XHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTMtXHRcdFx0XHRcdFx0ICAgIG1kZXYtXHUwMDNlbW1pby5pcnFtYXNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo2OTQ6XHRcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjk1LVx0XHRcdFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWRfaGlmMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9NzI1PXN0YXRpYyB2b2lkIG10Nzk5Nl9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTczMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo3MzI6XHRpZiAoZGV2LVx1MDAzZWhpZjIgXHUwMDI2XHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWRfaGlmMikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03MzMtXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWRfaGlmMiwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo3NDY6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03NDctXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz03OTI9aXJxcmV0dXJuX3QgbXQ3OTk2X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjc5NjpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc5Ny1cdFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtODAxLVx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6ODAyOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTgwMy1cdFx0XHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMiwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9OTk9c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIwNS1cdGlmIChkZXYtXHUwMDNlaGlmMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjA2Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjA3LVx0XHRcdG10a193ZWRfZGV2aWNlX2RldGFjaChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0yMTUtZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjIxNjpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjE3LVx0XHRtdGtfd2VkX2RldmljZV9kZXRhY2goXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz0xMjI9bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtMTM5LVx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkUpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjE0MDpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTE0MS1cdFx0ICAgICgoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUCkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9ODYwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODc4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo4Nzk6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODgwLVx0ICAgIHRva2VuIFx1MDAzZT0gZGV2LVx1MDAzZW1taW8ud2VkLndsYW4udG9rZW5fc3RhcnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTkxMj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo5Mjk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05MzAtXHRcdCAgICB0b2tlbiBcdTAwM2U9IGRldi1cdTAwM2VtbWlvLndlZC53bGFuLnRva2VuX3N0YXJ0IFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9OTM9aW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGJvb2wgcmVzZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xMDEtXHRmbGFncyA9IHEtXHUwMDNlZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjEwMjpcdGlmICghcS1cdTAwM2V3ZWQgfHwgIW10a193ZWRfZGV2aWNlX2FjdGl2ZShxLVx1MDAzZXdlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTEwMy1cdFx0cS1cdTAwM2VmbGFncyBcdTAwMjY9IH5NVF9RRkxBR19XRUQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0xODM9aW50IG10NzZfd2VkX25ldF9zZXR1cF90YyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5ODUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCBEZWZpbml0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCB2YXJpYWJsZSBpcyBkZWZpbmVkLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHJlc2lkaW5nIHdpdGhpbiB0aGUgYGluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaGAgaGVhZGVyIGZpbGUuIEl0IHNlZW1zIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RpbmcgYSBNZWRpYVRlayBXaWRlYmFuZCBFY2hvIENhbmNlbGxhdGlvbiAoV0VEKSBjb250ZXh0LiBUaW1lIHRvIGNvbmZpcm0gdGhpcyBieSBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHZlcmlmeWluZyB0aGUgZGVmaW5pdGlvbiYjMzk7cyBsb2NhdGlvbiBhbmQgcHVycG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDk6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXRrX3dlZF9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oPTI2ND1zdGF0aWMgaW5saW5lIGJvb2wgbXRrX3dlZF9pc19hbXNkdV9zdXBwb3J0ZWQoc3RydWN0IG10a193ZWRfZGV2aWNlICpkZXYpXG4tLVxuaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oLTI3My0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmg6Mjc0OiNkZWZpbmUgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKF9kZXYpICEhKF9kZXYpLVx1MDAzZW9wc1xuaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oLTI3NS0jZGVmaW5lIG10a193ZWRfZGV2aWNlX2RldGFjaChfZGV2KSAoX2RldiktXHUwMDNlb3BzLVx1MDAzZWRldGFjaChfZGV2KVxuLS1cbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaC0zMDgtI2Vsc2VcbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaDozMDk6c3RhdGljIGlubGluZSBib29sIG10a193ZWRfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaC0zMTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ0MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIHJlYWxseSBqdXN0IGRvZXMgYSBzaW1wbGUgY2hlY2s6IGAhIShfZGV2KS0mZ3Q7b3BzYC4gIE5vdGhpbmcgdG9vIGNvbXBsZXggdGhlcmUuIEJ1dCwgaG9sZCBvbi4uLiBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgVVNCIGRldmljZSwgYGRldi0mZ3Q7bW1pb2AgaXNuJiMzOTt0IGFjdHVhbGx5IHZhbGlkLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LiBUaGlzIG1lYW5zIGBkZXYtJmd0O21taW8ud2VkLm9wc2AgaXMgZ29pbmcgdG8gYmUgcmVhZGluZyBnYXJiYWdlIGRpcmVjdGx5IGZyb20gYGRldi0mZ3Q7dXNiYC4gQW5kIHRoYXQgKmNvdWxkKiByZXN1bHQgaW4gYSBub24tTlVMTCB2YWx1ZSwgd2hpY2ggd291bGQgYmUgcHJvYmxlbWF0aWMuCgpSaWdodCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYGRldi0mZ3Q7bW1pby53ZWRgIGlzIGF0IHNvbWUgZml4ZWQgb2Zmc2V0IHdpdGhpbiBgZGV2LSZndDttbWlvYC4gIFdoZW4gaXQmIzM5O3MgYSBVU0IgZGV2aWNlLCB0aGUgc3lzdGVtIHVzZXMgYGRldi0mZ3Q7dXNiYCBpbnN0ZWFkIG9mIGBkZXYtJmd0O21taW9gLiBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHRoZSBkZWZpbml0aW9ucyBmb3IgYHN0cnVjdCBtdDc2X3VzYmAgYW5kIGBzdHJ1Y3QgbXQ3Nl9tbWlvYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRob3NlIHN0cnVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBtdDc2X3VzYiBcXHsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD02NDk9c3RydWN0IG10NzZfbWN1IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02NjItI2RlZmluZSBNQ1VfUkVTUF9VUkJfU0laRVx0MTAyNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjYzOnN0cnVjdCBtdDc2X3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02NjQtXHRzdHJ1Y3QgbXV0ZXggdXNiX2N0cmxfbXR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk3NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4KCioqRGl2aW5nIERlZXAgaW50byBtdDc2IFN0cnVjdHVyZXMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgbXQ3NiBkcml2ZXIgaXMgc3RydWN0dXJlZC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb21wYXJpbmcgdGhlIGBzdHJ1Y3QgbXQ3Nl91c2JgIGFuZCBgc3RydWN0IG10NzZfbW1pb2AgZGVmaW5pdGlvbnMuIEFzIGFuIGV4cGVydCwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSBrZXkgZGlmZmVyZW5jZXM6IGhvdyB0aGUgaGFyZHdhcmUgYWNjZXNzIGlzIGhhbmRsZWQsIGludGVycnVwdCBtZWNoYW5pc21zLCBhbmQgdGhlIG92ZXJhbGwgZGV2aWNlIGluaXRpYWxpemF0aW9uIGZsb3cuIGBtdDc2X3VzYmAgc2hvdWxkIGhhdmUgYSBVU0Itc3BlY2lmaWMgZGVzY3JpcHRvciwgbGlrZWx5IGZvciBoYW5kbGluZyBlbmRwb2ludHMgYW5kIHRyYW5zZmVyIGJ1ZmZlcnMuIGBtdDc2X21taW9gLCBvbiB0aGUgb3RoZXIgaGFuZCwgd2lsbCBwcm9iYWJseSBoYXZlIHJlZ2lzdGVyIG9mZnNldHMgYW5kIHBvc3NpYmx5IFBDSSBvciBvdGhlciBtZW1vcnkgbWFwcGVkIElPIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGRpZmZlcmVuY2VzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkaXZlcmdlbmNlIG9mIGRlc2lnbi4gVGhpcyBjb21wYXJpc29uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgY29yZSBtdDc2IGZ1bmN0aW9uYWxpdHkgaXMgYWRhcHRlZCBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIGludGVyZmFjZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNoYXJlZCBlbGVtZW50cywgaW5kaWNhdGluZyBhIGNvbW1vbiBjb3JlLCBhbmQgYWxzbyB0aGUgYWRhcHRlci1zcGVjaWZpYyBwYXJ0cyB0aGF0IEkmIzM5O2xsIG5lZWQgdG8gaXNvbGF0ZSBpZiBJJiMzOTttIHBsYW5uaW5nIHRvIHdvcmsgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY2MzpcdHN0cnVjdCBtdDc2X3VzYiB7XG4gNjY0Olx0XHRzdHJ1Y3QgbXV0ZXggdXNiX2N0cmxfbXR4O1xuIDY2NTpcdFx0dTggKmRhdGE7XG4gNjY2Olx0XHR1MTYgZGF0YV9sZW47XG4gNjY3Olx0XG4gNjY4Olx0XHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdHVzX3dvcmtlcjtcbiA2Njk6XHRcdHN0cnVjdCBtdDc2X3dvcmtlciByeF93b3JrZXI7XG4gNjcwOlx0XG4gNjcxOlx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc3RhdF93b3JrO1xuIDY3MjpcdFxuIDY3MzpcdFx0dTggb3V0X2VwW19fTVRfRVBfT1VUX01BWF07XG4gNjc0Olx0XHR1OCBpbl9lcFtfX01UX0VQX0lOX01BWF07XG4gNjc1Olx0XHRib29sIHNnX2VuO1xuIDY3NjpcdFxuIDY3NzpcdFx0c3RydWN0IG10NzZ1X21jdSB7XG4gNjc4Olx0XHRcdHU4ICpkYXRhO1xuIDY3OTpcdFx0XHQvKiBtdWx0aXBsZSByZWFkcyAqL1xuIDY4MDpcdFx0XHRzdHJ1Y3QgbXQ3Nl9yZWdfcGFpciAqcnA7XG4gNjgxOlx0XHRcdGludCBycF9sZW47XG4gNjgyOlx0XHRcdHUzMiBiYXNlO1xuIDY4MzpcdFx0fSBtY3U7XG4gNjg0Olx0fTtcbiA2ODU6XHRcbiA2ODY6XHQjZGVmaW5lIE1UNzZTX1hNSVRfQlVGX1NaXHQweDNmZTAwXG4gNjg3Olx0I2RlZmluZSBNVDc2U19OVU1fVFhfRU5UUklFU1x0MjU2XG4gNjg4Olx0I2RlZmluZSBNVDc2U19OVU1fUlhfRU5UUklFU1x0NTEyXG4gNjg5Olx0c3RydWN0IG10NzZfc2RpbyB7XG4gNjkwOlx0XHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgdHhyeF93b3JrZXI7XG4gNjkxOlx0XHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdHVzX3dvcmtlcjtcbiA2OTI6XHRcdHN0cnVjdCBtdDc2X3dvcmtlciBuZXRfd29ya2VyO1xuIDY5MzpcdFx0c3RydWN0IG10NzZfd29ya2VyIHN0YXRfd29ya2VyO1xuIDY5NDpcdFxuIDY5NTpcdFx0dTggKnhtaXRfYnVmO1xuIDY5NjpcdFx0dTMyIHhtaXRfYnVmX3N6O1xuIDY5NzpcdFxuIDY5ODpcdFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcbiA2OTk6XHRcdHZvaWQgKmludHJfZGF0YTtcbiA3MDA6XHRcdHU4IGh3X3ZlcjtcbiA3MDE6XHRcdHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7XG4gNzAyOlx0XG4gNzAzOlx0XHRpbnQgcHNlX21jdV9xdW90YV9tYXg7XG4gNzA0Olx0XHRzdHJ1Y3Qge1xuIDcwNTpcdFx0XHRpbnQgcHNlX2RhdGFfcXVvdGE7XG4gNzA2Olx0XHRcdGludCBwbGVfZGF0YV9xdW90YTtcbiA3MDc6XHRcdFx0aW50IHBzZV9tY3VfcXVvdGE7XG4gNzA4Olx0XHRcdGludCBwc2VfcGFnZV9zaXplO1xuIDcwOTpcdFx0XHRpbnQgZGVmaWNpdDtcbiA3MTA6XHRcdH0gc2NoZWQ7XG4gNzExOlx0XG4gNzEyOlx0XHRpbnQgKCpwYXJzZV9pcnEpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnNfaW50ciAqaW50cik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDAwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgc3RydWN0IG10NzZfbW1pb2AqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIGRpc3NlY3QgYHN0cnVjdCBtdDc2X21taW9gLiBJIGtub3cgaXQmIzM5O3MgYSBjcml0aWNhbCBzdHJ1Y3R1cmUsIGxpa2VseSBob2xkaW5nIHRoZSBiYXNlIGFkZHJlc3NlcyBhbmQgcmVsYXRlZCBwYXJhbWV0ZXJzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBNZWRpYVRlayA3Nnh4IFdpRmkgaGFyZHdhcmUuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgaGludHMgYWJvdXQgaG93IHRoZSBkcml2ZXIgbWFwcyB0aGUgcGh5c2ljYWwgTU1JTyByZWdpb25zIGludG8gdmlydHVhbCBtZW1vcnksIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgYWRkcmVzcyByZW1hcHBpbmcgaWYgdGhlIGRldmljZSBpc24mIzM5O3QgaW4gYSBmaXhlZCBsb2NhdGlvbi4gSSYjMzk7bSBpbW1lZGlhdGVseSBzY2FubmluZyBmb3IgbWVtYmVycyB0aGF0IGxvb2sgbGlrZSByZWdpc3RlciBvZmZzZXRzLCBhbmQgYWxzbyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgaW5kaWNhdGUgYnVzLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIG1heWJlIFBDSWUgQkFSIGluZm9ybWF0aW9uIG9yIHNvbWUga2luZCBvZiBJT01NVSBzZXR1cCBpZiB0aGlzIGlzIHVzZWQuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBvciBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCBhcm91bmQgdGhpcyBzdHJ1Y3QgdG8gZW5zdXJlIHByb3BlciBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGludGVycnVwdCBoYW5kbGVycy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBidWdzKSBhcmUgb2Z0ZW4gZm91bmQuIEZpbmFsbHksIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRlZmluaXRpb24mIzM5O3Mgc2l6ZSBhbmQgYW55IGFsaWdubWVudCByZXF1aXJlbWVudHM7IHRoYXQgY2FuIHJldmVhbCBhIGxvdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJhbCBhc3N1bXB0aW9ucyBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDk6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IG10NzZfbW1pbyBcXHsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD02ODk9c3RydWN0IG10NzZfc2RpbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzE1OnN0cnVjdCBtdDc2X21taW8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzE2LVx0dm9pZCBfX2lvbWVtICpyZWdzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ0MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBgbXQ3Nl9tbWlvYCBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc2X21taW9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGF5b3V0LCBtZW1iZXJzLCBhbmQgcHVycG9zZSBvZiB0aGlzIHN0cnVjdHVyZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBleGFjdCBkZWZpbml0aW9uIGl0c2VsZi4gSXQmIzM5O3MgY3J1Y2lhbCB0byBoYXZlIGEgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHN0cnVjdHVyZSBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIGluIG15IG1pbmQgcmVnYXJkaW5nIGhvdyB0aGUgcmVnaXN0ZXJzIGFyZSBtYXBwZWQsIHRoZSBiaXRmaWVsZHMgdXNlZCwgYW5kIGhvdyBpdCBhbGwgaGFuZ3MgdG9nZXRoZXIuIE9ubHkgdGhlbiBjYW4gSSBiZSBjb25maWRlbnQgaW4gbXkgbmV4dCBzdGVwcywgd2hldGhlciBJJiMzOTttIGRlYnVnZ2luZywgb3B0aW1pemluZywgb3IgcmVmYWN0b3JpbmcgcmVsYXRlZCBjb2RlLiBHcmFiYmluZyB0aGUgZGVmaW5pdGlvbiBpcyB0aGUgb25seSB3YXkgdG8gZG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcxNTpcdHN0cnVjdCBtdDc2X21taW8ge1xuIDcxNjpcdFx0dm9pZCBfX2lvbWVtICpyZWdzO1xuIDcxNzpcdFx0c3BpbmxvY2tfdCBpcnFfbG9jaztcbiA3MTg6XHRcdHUzMiBpcnFtYXNrO1xuIDcxOTpcdFxuIDcyMDpcdFx0c3RydWN0IG10a193ZWRfZGV2aWNlIHdlZDtcbiA3MjE6XHRcdHN0cnVjdCBtdGtfd2VkX2RldmljZSB3ZWRfaGlmMjtcbiA3MjI6XHRcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldDtcbiA3MjM6XHRcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldF9jb21wbGV0ZTtcbiA3MjQ6XHRcbiA3MjU6XHRcdHN0cnVjdCBhaXJvaGFfcHBlX2RldiBfX3JjdSAqcHBlX2RldjtcbiA3MjY6XHRcdHN0cnVjdCBhaXJvaGFfbnB1IF9fcmN1ICpucHU7XG4gNzI3Olx0XHRwaHlzX2FkZHJfdCBwaHlfYWRkcjtcbiA3Mjg6XHRcdGludCBucHVfdHlwZTtcbiA3Mjk6XHR9O1xuIDczMDpcdFxuIDczMTpcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyB7XG4gNzMyOlx0XHR1bmlvbiB7XG4gNzMzOlx0XHRcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQ7XG4gNzM0Olx0XHRcdHUxNiB3Y2lkX2lkeDtcbiA3MzU6XHRcdH07XG4gNzM2Olx0XG4gNzM3Olx0XHR1MzIgcmVvcmRlcl90aW1lO1xuIDczODpcdFxuIDczOTpcdFx0dTMyIGFtcGR1X3JlZjtcbiA3NDA6XHRcdHUzMiB0aW1lc3RhbXA7XG4gNzQxOlx0XG4gNzQyOlx0XHR1OCBpdls2XTtcbiA3NDM6XHRcbiA3NDQ6XHRcdHU4IHBoeV9pZHg6MjtcbiA3NDU6XHRcdHU4IGFnZ3I6MTtcbiA3NDY6XHRcdHU4IHFvc19jdGw7XG4gNzQ3Olx0XHR1MTYgc2Vxbm87XG4gNzQ4Olx0XG4gNzQ5Olx0XHR1MTYgZnJlcTtcbiA3NTA6XHRcdHUzMiBmbGFnO1xuIDc1MTpcdFx0dTggZW5jX2ZsYWdzO1xuIDc1MjpcdFx0dTggZW5jb2Rpbmc6MywgYnc6NDtcbiA3NTM6XHRcdHVuaW9uIHtcbiA3NTQ6XHRcdFx0c3RydWN0IHtcbiA3NTU6XHRcdFx0XHR1OCBoZV9ydTozO1xuIDc1NjpcdFx0XHRcdHU4IGhlX2dpOjI7XG4gNzU3Olx0XHRcdFx0dTggaGVfZGNtOjE7XG4gNzU4Olx0XHRcdH07XG4gNzU5Olx0XHRcdHN0cnVjdCB7XG4gNzYwOlx0XHRcdFx0dTggcnU6NDtcbiA3NjE6XHRcdFx0XHR1OCBnaToyO1xuIDc2MjpcdFx0XHR9IGVodDtcbiA3NjM6XHRcdH07XG4gNzY0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMzE3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBSWCBBZ2dyZWdhdGlvbiBCdWcgaW4gbXQ3NioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbXQ3NmAgY29kZSBhbmQgSSB0aGluayBJJiMzOTt2ZSBzcG90dGVkIGEgZnVuY3Rpb25hbCBidWcuIEl0IGxvb2tzIGxpa2UgdGhlIGxheW91dCBvZiB0aGUgYG10NzZfbW1pb2AgYW5kIGBtdDc2X3VzYmAgc3RydWN0cyBhcmUgb3ZlcmxhcHBpbmcsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgYHdlZGAgbWVtYmVyIGluIHRoZSBgbW1pb2Agc3RydWN0IGlzIGF0IG9mZnNldCAxNiAoYXNzdW1pbmcgNjQtYml0IHBvaW50ZXJzKSwgYW5kIGBzdGF0dXNfd29ya2VyYCBpcyBpbiBgbXQ3Nl91c2JgLiBUaGlzIG1lYW5zIHRoZXJlJiMzOTtzIGEgbWVtb3J5IG92ZXJsYXAsIGFuZCB0aGUgYG1taW9gJiMzOTtzIGBucHVgIGZpZWxkIGlzIGxpa2VseSBhbHNvIG92ZXJsYXBwaW5nIHdpdGggdGhpbmdzIGluIGBtdDc2X3VzYmAsIGxpa2UgYGluX2VwYCBvciBgbWN1YC4gVGhlIHByb2JsZW0gYXJpc2VzIHdoZW4gc29tZSBub24temVybyB2YWx1ZXMgaW4gdGhlIFVTQiBzaWRlIG9mIHRoaW5ncyBtYWtlIGl0IGxvb2sgbGlrZSB0aGUgYG1taW9gJiMzOTtzIGBucHVgIGZpZWxkIGlzIGFjdGl2ZSB3aGVuIGl0IHNob3VsZG4mIzM5O3QgYmUuCgpDb25zZXF1ZW50bHksIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBjYW4gaW5jb3JyZWN0bHkgcmV0dXJuIHRydWUuIFRoZW4gaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIHRoZSBjb2RlIGVuZHMgdXAgcXVldWluZyBwYWNrZXRzIHdpdGggYF9fc2tiX3F1ZXVlX3RhaWxgIGluc3RlYWQgb2YgcGVyZm9ybWluZyB0aGUgYXBwcm9wcmlhdGUgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZywgYnJlYWtpbmcgdGhlIFVTQiBkZXZpY2UgYmVoYXZpb3IuIEl0IHNlZW1zIHRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGBtdDc2X2lzX21taW8oZGV2KWAgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlIGRldmljZSBpcyBhY3R1YWxseSBhY3RpdmUgd2l0aGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgaGVyZS4gIEkgd29uZGVyIGlmIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIGhhcyB0aGUgc2FtZSBidWcsIHNpbmNlIGl0JiMzOTtzIGFsc28gY2FsbGVkIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBMZXQmIzM5O3MgY2hlY2sgdGhlIGNvZGUuLi4gYWgsIHllcywgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgKmFsc28qIHNlZW1zIHN1c2NlcHRpYmxlIHRvIHRoZSBvdmVybGFwIGlzc3VlLCBhcyBpdCB1c2VzIHRoZSBzYW1lIGB3ZWRgIGZpZWxkLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgaXQgY2hlY2tzIGAhIShfZGV2KS0mZ3Q7b3BzYCwgd2hpY2ggb2ZmZXJzICpzb21lKiBwcm90ZWN0aW9uLiAgSWYgYGRldi0mZ3Q7bW1pby53ZWQub3BzYCBvdmVybGFwcyB3aXRoIHNvbWUgbm9uLXplcm8gVVNCIGZpZWxkLCBpdCBtaWdodCBzdGlsbCByZXR1cm4gdHJ1ZSwgaG93ZXZlciB0aGUgcGF0Y2ggaXMgbGltaXRlZCBpbiBhZGRyZXNzaW5nIHRoaXMgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGViYXNlLgoKU28sIGluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgVVNCIGFuZCBTRElPIGRldmljZXMsIGFkZGluZyBhIGNoZWNrIGZvciBgbXQ3Nl9pc19tbWlvYCBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gTm93LCBJIHJlYWxseSB0aGluayB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGNhdWdodCBhbmQgaGFuZGxlZC4KCkZvY3VzaW5nIGluLCBJJiMzOTttIHRoaW5raW5nIG9mIGxvb2tpbmcgYXQgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYCwgYW5kIGFsc28gYG10NzZfZG1hX3J4X2NsZWFudXBgIGFuZCBgbXQ3Nl9kbWFfcnhfcmVzZXRgLiBXYWl0LCBgbXQ3Nl9kbWFfcnhfY2xlYW51cGAgaXMgb25seSBmb3IgRE1BIGRldmljZXMsIHNvIHRoYXQmIzM5O3Mgbm90IHJlbGV2YW50IGhlcmUgc2luY2Ugd2UmIzM5O3JlIGZpeGluZyBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0JiMzOTtzIHNoYXJlZCBiZXR3ZWVuIGJvdGggZGV2aWNlIHR5cGVzLCBsaWtlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4gSSB3YW50IHRvIGNoZWNrIHdoZXJlIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBpcyB1c2VkLCBhbHNvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3BwZV9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTczNz1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc0MjpzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDAxNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBVbnVzZWQgVmFyaWFibGUgaW4gbXQ3NioqCgpPa2F5LCBzbyBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuLi4gdGhhdCYjMzk7cyBhIGJpdCBvZGQuIEkmIzM5O20gcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIGBtdDc2YCBkcml2ZXIsIGFuZCB0aGF0IG5hbWUgZG9lc24mIzM5O3QgaW1tZWRpYXRlbHkgcmluZyBhIGJlbGwuIE15IGluaXRpYWwgc3VzcGljaW9uIGlzIHRoYXQgaXQgbWlnaHQgYmUgdW51c2VkLCBvciwgYXQgYmVzdCwgdW5kZXJ1dGlsaXplZC4gVGhlIGNvZGUgaXMgdXN1YWxseSB3ZWxsLW9yZ2FuaXplZCwgc28gZmluZGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIGlzIHVudXN1YWwuCgpMZXQmIzM5O3MgY29uZmlybSB0aGlzIGJ5IHNlYXJjaGluZyB0aGUgZW50aXJlIHNvdXJjZSB0cmVlIGZvciB0aGUgdmFyaWFibGUgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBiZWZvcmUgY29uY2x1ZGluZyBhbnl0aGluZy4gSXQmIzM5O3MgcG9zc2libGUgaXQmIzM5O3MgdXNlZCBpbiBzb21lIG9ic2N1cmUgY29ybmVyIG9mIHRoZSBjb2RlYmFzZSwgb3IgbWF5YmUgaXQmIzM5O3MgdXNlZCBjb25kaXRpb25hbGx5LCBhbmQgSSBtaXNzZWQgaXQgcHJldmlvdXNseS4gQSBjb21wcmVoZW5zaXZlIHNlYXJjaCB3aWxsIGdpdmUgdXMgdGhlIGRlZmluaXRpdmUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3BwZV9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3Mzc9c3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDI6c3RhdGljIGlubGluZSBib29sIG10NzZfcHBlX2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDk6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0NDEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgVXNhZ2Ugb2YgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGJpdCBvZiBjb2RlIGFuZCBJIHNlZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAuLi5hbmQgaXQmIzM5O3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgd2hlcmUgaXQmIzM5O3MgYmVpbmcgKmRpcmVjdGx5KiBjYWxsZWQuIEhtbSwgY291bGQgaXQgYmUgcGFydCBvZiBhIGxhcmdlciBwYXRjaCwgb3IgaXMgaXQgcGVyaGFwcyBqdXN0IGEgdXRpbGl0eSBmdW5jdGlvbj8gTmVlZCB0byBkaWcgZGVlcGVyLgoKTGV0JiMzOTtzIHNlZeKApiBJIGtub3cgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgICppcyogdXNlZCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYG10NzZfbnB1X2NoZWNrX3BwZWAsIGFuZCBgbXQ3Nl9ucHVfbmV0X3NldHVwX3RjYC4gSW50ZXJlc3RpbmcuIEkgc2VlbSB0byByZWNhbGwgdGhhdCBgbXQ3Nl9ucHVfY2hlY2tfcHBlYCBpcyBzb21ldGltZXMgaW52b2tlZCBmcm9tIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCBzbyBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdOKApiBub3BlLCBsZXTigJlzIGRvdWJsZS1jaGVjayBob3cgYG10NzZfbnB1X2NoZWNrX3BwZWAgaXRzZWxmIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X25wdV9jaGVja19wcGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNjQ4PWludCBtdDc2X3Rlc3Rtb2RlX2FsbG9jX3NrYihzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgdTMyIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY1MC0jaWZkZWYgQ09ORklHX01UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNjUxOnZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY1Mi1cdFx0XHR1MzIgaW5mbyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTY2Nz1pbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NzAtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE2NzE6c3RhdGljIGlubGluZSB2b2lkIG10NzZfbnB1X2NoZWNrX3BwZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NzItXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz00MTE9bXQ3OTk2X21hY19maWxsX3J4KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy02ODMtXHRcdFx0XHQgICAgICppbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjY4NDpcdFx0bXQ3Nl9ucHVfY2hlY2tfcHBlKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBza2IsICppbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTY4NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jPTYyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXQ3Nl9ucHVfZGVxdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTExNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MTE2OnZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xMTctXHRcdFx0dTMyIGluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xNDEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxNDI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9ucHVfY2hlY2tfcHBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTQzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTYyMwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDgyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzYgTlBVIERldmljZSBBY3RpdmUgQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTk2X21hY19maWxsX3J4YCBmdW5jdGlvbiwgYW5kIGl0IGNhbGxzIGBtdDc2X25wdV9jaGVja19wcGVgLiBJIGtub3cgYG10Nzk5NmAgaXMgUENJZS1vbmx5LCBzbyB0aGUgb25seSBwbGFjZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgZ2V0cyBjYWxsZWQgZm9yIFVTQi9TRElPIGRldmljZXMgaXMgd2l0aGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBMZXQgbWUgY2lyY2xlIGJhY2sgdG8gdGhhdCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBmdW5jdGlvbi4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIGFuZCBgbXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZWAuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uOgoKKiAgIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgCiogICBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAKKiAgIGBtdDc2c19wcm9jZXNzX3J4X3F1ZXVlYAoKT2theSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBpcyBpbmRlZWQgcmVhY2hhYmxlLiBZdXAsIGl0JiMzOTtzIGluIHRoZSBOQVBJIHBvbGwgbG9vcCBmb3IgVVNCIFJYLiBXaGVuIGEgcGFja2V0IGFycml2ZXMgdmlhIFVTQiwgYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIGdldHMgY2FsbGVkLiBUaGlzIGRlcXVldWVzIFNLQnMgYW5kIHRoZW4gY2FsbHMgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGluY29ycmVjdGx5IHJldHVybnMgdHJ1ZSwgd2UgZW5kIHVwIGNhbGxpbmcgYF9fc2tiX3F1ZXVlX3RhaWxgIGluc3RlYWQgb2YgYG10NzZfcnhfYWdncl9yZW9yZGVyYC4gVGhpcyBtZWFucyB3ZSBieXBhc3MgdGhlIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgbG9naWMuIFRoYXQmIzM5O3MgYSBiYWQgdGhpbmcuIEl0IGNvdWxkIGNhdXNlIG91dC1vZi1vcmRlciBwYWNrZXRzIG9yIGV2ZW4gbWVtb3J5IGxlYWtzIGlmIHRoZSByZW9yZGVyIGJ1ZmZlciBoYXMgZGVwZW5kZW5jaWVzLiBCeSBmaXhpbmcgdGhpcywgcGFja2V0cyB3aWxsIGZsb3cgdGhyb3VnaCBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIHByb3Blcmx5LgoKTm93LCB3aGljaCBjb25maWd1cmF0aW9ucyBkbyBJIG5lZWQgdG8gZW5hYmxlIHRvIHRyaWdnZXIgdGhpcz8KCkkmIzM5O3ZlIGdvdDoKCiogICBgTVQ3Nl9DT1JFYAoqICAgYE1UNzZfVVNCYAoqICAgYE1UNzZfU0RJT2AKKiAgIGBNVDc5MjFVYAoqICAgYE1UNzkyNVVgCiogICBgTVQ3NngwVWAKKiAgIGBNVDc2eDJVYAoqICAgYE1UNzY2M1VgCiogICBgTVQ3NjYzU2AKKiAgIGBNVDc5MjFTYAoKTGV0IG1lIHF1aWNrbHkgbGlzdCB0aGVtOgoKKiAgIGBNVDc2X0NPUkVgCiogICBgTVQ3Nl9VU0JgCiogICBgTVQ3Nl9TRElPYAoqICAgYE1UNzZ4MFVgCiogICBgTVQ3NngyVWAKKiAgIGBNVDc2NjNVYAoqICAgYE1UNzY2M1NgCiogICBgTVQ3OTIxVWAKKiAgIGBNVDc5MjFTYAoqICAgYE1UNzkyNVVgCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBgTVQ3Nl9OUFVgLiBTaG91bGQgSSBhZGQgdGhhdCB0b28/IFRoZSBmaXggYWRkcmVzc2VzIHRoZSBjYXNlIHdoZXJlIGBNVDc2X05QVWAgbWlnaHQgYmUgZW5hYmxlZCAob3IgYSBwb2ludGVyIGlzIGFjY2Vzc2VkKSBidXQgdGhlIGRldmljZSBpc24mIzM5O3QgTU1JTy4gQnV0IGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhY2Nlc3NlcyBgZGV2LSZndDttbWlvLm5wdWAuIElmIGBNVDc2X05QVWAgaXNuJiMzOTt0IGVuYWJsZWQsIGRvZXMgdGhhdCBtZWFuIGBkZXYtJmd0O21taW8ubnB1YCBkb2VzbiYjMzk7dCBleGlzdD8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYHN0cnVjdCBtdDc2X21taW9gIGRlZmluaXRpb24uIFJpZ2h0LCBgc3RydWN0IGFpcm9oYV9ucHUgX19yY3UgKm5wdTtgIGlzICphbHdheXMqIHRoZXJlLCBpdCYjMzk7cyBub3QgdW5kZXIgYW4gYCNpZmRlZiBDT05GSUdfTVQ3Nl9OUFVgLiBIbW0sIGJ1dCBgTVQ3Nl9OUFVgIG1pZ2h0IHN0aWxsIGJlIG5lZWRlZCB0byBjb21waWxlIGBucHUuY2AuIFRvIGJlIHNhZmUsIGxldCYjMzk7cyBpbmNsdWRlIGBNVDc2X05QVWAuCgpPa2F5LCB0aGUgcmVmaW5lZCBmb2N1cyBzeW1ib2xzIG5vdyBiZWNvbWU6CgoqICAgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAKKiAgIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYAoqICAgYG10NzZzX3Byb2Nlc3NfcnhfcXVldWVgCiogICBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIChiZWNhdXNlIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGdldHMgY2FsbGVkKQoKQW5kIGZpbmFsbHksIGxldCYjMzk7cyBjaGVjayBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3J4X2FnZ3JfcmVvcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM9OTA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6OTE6bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jLTkyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jPTExOT1tdDc2X3J4X2FnZ3JfY2hlY2tfY3RsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jLTE0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6MTQ4OnZvaWQgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM9MjQ0PWludCBtdDc2X3J4X2FnZ3Jfc3RhcnQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsIHU4IHRpZG5vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMjU4LVx0dGlkLVx1MDAzZW51bSA9IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYzoyNTk6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0aWQtXHUwMDNlcmVvcmRlcl93b3JrLCBtdDc2X3J4X2FnZ3JfcmVvcmRlcl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMjYwLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dGlkLVx1MDAzZWxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNTU0PXZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjctXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTY4Olx0XHRcdG10NzZfcnhfYWdncl9yZW9yZGVyKHNrYiwgXHUwMDI2ZnJhbWVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3OTU9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3OTYtXHRcdFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3OTc6dm9pZCBtdDc2X3J4X2FnZ3JfcmVvcmRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5OC12b2lkIG10NzZfdGVzdG1vZGVfdHhfcGVuZGluZyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjYwCgkJCQkJCQlvdXRwdXQ6IDMzNwoJCQkJCQkJdGhvdWdodHM6IDM2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJYIEFnZ3JlZ2F0aW9uIEZpeCoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCwgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmAgYXMgdGhlIGNydWNpYWwgZm9jdXMgc3ltYm9sLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgcmVhc29uaW5nLCBiZWNhdXNlIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkLCB3ZWxsLWRlZmluZWQgcHJvYmxlbS4KClRoZSBpc3N1ZSBzdGVtcyBmcm9tIGEgc3VidGxlIGZsYXcgd2l0aGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBJdCBzZWVtcyB0aGVzZSBmdW5jdGlvbnMgd2VyZSwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBtaXNpZGVudGlmeWluZyBub24tTU1JTyBkZXZpY2VzIOKAkyBzcGVjaWZpY2FsbHkgVVNCIGFuZCBTRElPIG9uZXMg4oCTIGFzIGFjdGl2ZSBNTUlPIGRldmljZXMuIFRoaXMgb2NjdXJzIGJlY2F1c2UgdGhlIGZ1bmN0aW9ucyB3ZXJlIGFjY2Vzc2luZyBmaWVsZHMgd2l0aGluIGEgdW5pb24gc3RydWN0dXJlLiBUaGUgZGF0YSBsYXlvdXQgb3ZlcmxhcHBlZCBiZXR3ZWVuIE1NSU8gYW5kIFVTQi9TRElPIHNwZWNpZmljIGRhdGEsIGxlYWRpbmcgdG8gdGhlIGluY29ycmVjdCB0cnVlIHJldHVybi4KClRoZSByaXBwbGUgZWZmZWN0IGlzIHNpZ25pZmljYW50LiBUaGlzIGluY29ycmVjdCByZXR1cm4gdmFsdWUgd291bGQgY2F1c2UgdGhlIFJYIHBhdGgsIHdpdGhpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgdG8gYnlwYXNzIHRoZSBjcnVjaWFsIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgc3RlcCBpbXBsZW1lbnRlZCBpbiBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIGZvciB0aGVzZSBVU0IvU0RJTyBkZXZpY2VzLiBUaGF0JiMzOTtzIGEgZGlyZWN0IHJvdXRlIHRvIHBhY2tldCBsb3NzIGFuZCBvdXQtb2Ytb3JkZXIgZGVsaXZlcnkuIE5vdCBnb29kLCBhbmQgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB5b3UmIzM5O2QgdW5jb3ZlciB0aHJvdWdoIFVTQiBmdXp6aW5nLgoKVGhlIGZpeCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyBzdHJhaWdodGZvcndhcmQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2suIFRoaXMgc2ltcGxlIGFkZGl0aW9uIGlzIGFsbCB0aGF0JiMzOTtzIG5lZWRlZCB0byBwcm9wZXJseSBpZGVudGlmeSB3aGV0aGVyIGEgZGV2aWNlIGlzLCBpbiBmYWN0LCBhbiBNTUlPIGRldmljZS4gVGhpcyBhdm9pZHMgdGhlIGZhdWx0eSBsb2dpYyBpbiB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGFuZCBlbnN1cmVzIHRoZSBjb3JyZWN0IFJYIHBhdGggaXMgdGFrZW4gZm9yIHRoZSBhZmZlY3RlZCBVU0IvU0RJTyBkZXZpY2VzLCB0aHVzIHJlc3RvcmluZyB0aGUgYWdncmVnYXRpb24gcmVvcmRlcmluZy4gVGhlIHBvdGVudGlhbCBmb3IgdGhpcyB0byBtYW5pZmVzdCB1bmRlciBVU0IgZnV6emluZyBtYWtlcyBpdCBhIHNvbGlkIGZ1bmN0aW9uYWwgZml4LCBhIGdvb2QgY2F0Y2guCgpNeSBmb2N1cyBzeW1ib2xzIGFyZTogYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYCwgYG10NzZzX3Byb2Nlc3NfcnhfcXVldWVgLCBhbmQgZXNwZWNpYWxseSwgYG10NzZfcnhfYWdncl9yZW9yZGVyYC4KClRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBzZWVtIHRvIGJlOiBgTVQ3Nl9DT1JFYCwgYE1UNzZfVVNCYCwgYE1UNzZfU0RJT2AsIGFuZCBhbnkgb2YgdGhlIFVTQiBkZXZpY2UgZHJpdmVycyAoIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgIGFuZCBgTVQ3NjYzU2AsIGBNVDc5MjFTYCkuCgpPa2F5LCB3aXRoIHRoYXQgY2xlYXIgaW4gbXkgbWluZCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3Nl9DT1JFJiMzNDssCiAgICAmIzM0O01UNzZfVVNCJiMzNDssCiAgICAmIzM0O01UNzZfU0RJTyYjMzQ7LAogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OywKICAgICYjMzQ7TVQ3NjYzVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNTJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTIxUyYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzZfTlBVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3Nl9yeF9wb2xsX2NvbXBsZXRlJiMzNDssCiAgICAmIzM0O210NzZ1X3Byb2Nlc3NfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7bXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZSYjMzQ7LAogICAgJiMzNDttdDc2X3J4X2FnZ3JfcmVvcmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCB3aGVyZSB0aGV5IGNvdWxkIGluY29ycmVjdGx5IHJldHVybiB0cnVlIGZvciBub24tTU1JTyBkZXZpY2VzIChsaWtlIFVTQiBvciBTRElPKSBieSBhY2Nlc3NpbmcgZmllbGRzIGluIGEgdW5pb24gdGhhdCBvdmVybGFwIHdpdGggVVNCL1NESU8gc3BlY2lmaWMgZGF0YS4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIGNhdXNlZCB0aGUgUlggcGF0aCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCB0byBieXBhc3MgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyAoYG10NzZfcnhfYWdncl9yZW9yZGVyYCkgZm9yIFVTQi9TRElPIGRldmljZXMuIEJ5IGFkZGluZyB0aGUgYG10NzZfaXNfbW1pbyhkZXYpYCBjaGVjaywgdGhlIGNvZGUgY29ycmVjdGx5IGlkZW50aWZpZXMgTU1JTyBkZXZpY2VzIGFuZCByZXN0b3JlcyB0aGUgcHJvcGVyIFJYIHBhdGggZm9yIFVTQi9TRElPIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2X0NPUkUmIzM0OywKICAgICYjMzQ7TVQ3Nl9VU0ImIzM0OywKICAgICYjMzQ7TVQ3Nl9TRElPJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzY2M1MmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFTJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3Nl9OUFUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3J4X3BvbGxfY29tcGxldGUmIzM0OywKICAgICYjMzQ7bXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZSYjMzQ7LAogICAgJiMzNDttdDc2c19wcm9jZXNzX3J4X3F1ZXVlJiMzNDssCiAgICAmIzM0O210NzZfcnhfYWdncl9yZW9yZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgIHdoZXJlIHRoZXkgY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIHRydWUgZm9yIG5vbi1NTUlPIGRldmljZXMgKGxpa2UgVVNCIG9yIFNESU8pIGJ5IGFjY2Vzc2luZyBmaWVsZHMgaW4gYSB1bmlvbiB0aGF0IG92ZXJsYXAgd2l0aCBVU0IvU0RJTyBzcGVjaWZpYyBkYXRhLiBUaGlzIGluY29ycmVjdCByZXR1cm4gdmFsdWUgY2F1c2VkIHRoZSBSWCBwYXRoIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIHRvIGJ5cGFzcyBSWCBhZ2dyZWdhdGlvbiByZW9yZGVyaW5nIChgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgKSBmb3IgVVNCL1NESU8gZGV2aWNlcy4gQnkgYWRkaW5nIHRoZSBgbXQ3Nl9pc19tbWlvKGRldilgIGNoZWNrLCB0aGUgY29kZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBNTUlPIGRldmljZXMgYW5kIHJlc3RvcmVzIHRoZSBwcm9wZXIgUlggcGF0aCBmb3IgVVNCL1NESU8gZGV2aWNlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODozNy45MjQ3NzQ2ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYzNTUxNzE2NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3Nl9DT1JFXCIsXG4gICAgXCJNVDc2X1VTQlwiLFxuICAgIFwiTVQ3Nl9TRElPXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc2NjNTXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjFTXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc2X05QVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZfcnhfcG9sbF9jb21wbGV0ZVwiLFxuICAgIFwibXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCB3aGVyZSB0aGV5IGNvdWxkIGluY29ycmVjdGx5IHJldHVybiB0cnVlIGZvciBub24tTU1JTyBkZXZpY2VzIChsaWtlIFVTQiBvciBTRElPKSBieSBhY2Nlc3NpbmcgZmllbGRzIGluIGEgdW5pb24gdGhhdCBvdmVybGFwIHdpdGggVVNCL1NESU8gc3BlY2lmaWMgZGF0YS4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIGNhdXNlZCB0aGUgUlggcGF0aCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCB0byBieXBhc3MgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyAoYG10NzZfcnhfYWdncl9yZW9yZGVyYCkgZm9yIFVTQi9TRElPIGRldmljZXMuIEJ5IGFkZGluZyB0aGUgYG10NzZfaXNfbW1pbyhkZXYpYCBjaGVjaywgdGhlIGNvZGUgY29ycmVjdGx5IGlkZW50aWZpZXMgTU1JTyBkZXZpY2VzIGFuZCByZXN0b3JlcyB0aGUgcHJvcGVyIFJYIHBhdGggZm9yIFVTQi9TRElPIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODozNy45MjQ3ODQ3MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTA4ODk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1ZWM0MTY3MWI2MzIxZGU4NWMyNzUxMjIwOWExNDQzY2JjMjg2NmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMDg6NTg6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxcbmluZGV4IDA3OTU1NTU1Zjg0ZDgzLi5hMzJiYTdjMjNmOTJiMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXFxuQEAgLTE3MzYsMTIgKzE3MzYsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuIHtcXG4tXFx0cmV0dXJuICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cXHUwMDNlbW1pby5ucHUpO1xcbitcXHRyZXR1cm4gbXQ3Nl9pc19tbWlvKGRldikgXFx1MDAyNlxcdTAwMjYgISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVxcdTAwM2VtbWlvLm5wdSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiB7XFxuLVxcdHJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZW1taW8ucHBlX2Rldik7XFxuK1xcdHJldHVybiBtdDc2X2lzX21taW8oZGV2KSBcXHUwMDI2XFx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZW1taW8ucHBlX2Rldik7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgaW50IG10NzZfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODozOC40NzcxNDY4NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjU4MDI3ODc5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3Nl9DT1JFXCIsXG4gICAgXCJNVDc2X1VTQlwiLFxuICAgIFwiTVQ3Nl9TRElPXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc2NjNTXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjFTXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc2X05QVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZfcnhfcG9sbF9jb21wbGV0ZVwiLFxuICAgIFwibXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCB3aGVyZSB0aGV5IGNvdWxkIGluY29ycmVjdGx5IHJldHVybiB0cnVlIGZvciBub24tTU1JTyBkZXZpY2VzIChsaWtlIFVTQiBvciBTRElPKSBieSBhY2Nlc3NpbmcgZmllbGRzIGluIGEgdW5pb24gdGhhdCBvdmVybGFwIHdpdGggVVNCL1NESU8gc3BlY2lmaWMgZGF0YS4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIGNhdXNlZCB0aGUgUlggcGF0aCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCB0byBieXBhc3MgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyAoYG10NzZfcnhfYWdncl9yZW9yZGVyYCkgZm9yIFVTQi9TRElPIGRldmljZXMuIEJ5IGFkZGluZyB0aGUgYG10NzZfaXNfbW1pbyhkZXYpYCBjaGVjaywgdGhlIGNvZGUgY29ycmVjdGx5IGlkZW50aWZpZXMgTU1JTyBkZXZpY2VzIGFuZCByZXN0b3JlcyB0aGUgcHJvcGVyIFJYIHBhdGggZm9yIFVTQi9TRElPIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ1ZWM0MTY3MWI2MzIxZGU4NWMyNzUxMjIwOWExNDQzY2JjMjg2NmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAwODo1ODozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbmluZGV4IDA3OTU1NTU1Zjg0ZDgzLi5hMzJiYTdjMjNmOTJiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuQEAgLTE3MzYsMTIgKzE3MzYsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuIHtcbi1cdHJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5ucHUpO1xuK1x0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5ucHUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiB7XG4tXHRyZXR1cm4gISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZW1taW8ucHBlX2Rldik7XG4rXHRyZXR1cm4gbXQ3Nl9pc19tbWlvKGRldikgXHUwMDI2XHUwMDI2ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2VtbWlvLnBwZV9kZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGludCBtdDc2X25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU4OjM4LjQ3NzE0OTMxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDM2MjI3NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBpbiBgbXQ3Ni5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNmAgdG8gYm90aCBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoYXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gdGhpbmtpbmcsIGNhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBjb2RlIHBhdGggaWYgdGhlIGhhcmR3YXJlIGlzIHZpcnR1YWxpemVkP1xuXG5gbXQ3NmAgaXMgdGhlIGRyaXZlciBmb3IgTWVkaWFUZWsgd2lyZWxlc3MgZGV2aWNlcywgcmlnaHQ/IFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIGVmZmVjdGl2ZWx5IGVtdWxhdGUgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSB3aXRoaW4gUUVNVT8gVHlwaWNhbGx5LCB5b3UgY2FuIGdldCBhd2F5IHdpdGggUENJIG9yIFVTQiBkZXZpY2UgZW11bGF0aW9uIG9yIHBhc3MtdGhyb3VnaCwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcywgd2UgZG9uJ3QgdXN1YWxseSBmaW5kIE1lZGlhVGVrIHdpcmVsZXNzIGhhcmR3YXJlIHJlYWRpbHkgYXZhaWxhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gVW5sZXNzIHdlJ3JlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0IGF2b2lkcyBgbXQ3NmAgZW50aXJlbHkuIEFuZCBVU0IgZW11bGF0aW9uLi4uIHdlbGwsIGBtdDc2YCBkb2VzIGhhdmUgVVNCIGRyaXZlcnMsIGxpa2UgdGhlIGBtdDc2eDB1YCwgYG10NzZ4MnVgLCBvciBgbXQ3OTIxdWAgd2hpY2ggd2UgbWlnaHQgdXNlLCB5ZXMuXG5cbkJ1dCBoYW5nIG9u4oCmIGBtdDc2X2lzX21taW8oZGV2KWAuLi4gdGhhdCdzIGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgTWVtb3J5LU1hcHBlZCBJL08uIFNvLCB0aGlzIGJvaWxzIGRvd24gdG86IEFyZSB3ZSB1c2luZyBhIG1lbW9yeS1tYXBwZWQgSS9PIGFwcHJvYWNoIG9yIG5vdD8gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYG10NzZfaXNfbW1pb2AgaXRzZWxmIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIGl0J3MgYWNjdXJhdGUuIEdvdHRhIGxvb2sgYXQgdGhhdCBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTg6NDguNTEzMzc5NzA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjM1NzE4OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9pc19tbWlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jPTI5PW10NzZfbmFwaV90aHJlYWRlZF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjMzOlxcdGlmICghbXQ3Nl9pc19tbWlvKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMzQtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTYxNj1pbnQgbXQ3Nl9jcmVhdGVfcGFnZV9wb29sKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjY0NDpcXHRpZiAobXQ3Nl9pc19tbWlvKGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNjQ1LVxcdFxcdC8qIHJlbHkgb24gcGFnZV9wb29sIGZvciBETUEgbWFwcGluZyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTU9c3RydWN0IG10NzZfYnVzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMTAtI2RlZmluZSBtdDc2X2lzX3VzYihkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMTE6I2RlZmluZSBtdDc2X2lzX21taW8oZGV2KSAoKGRldiktXFx1MDAzZWJ1cy1cXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTExMi0jZGVmaW5lIG10NzZfaXNfc2RpbyhkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzM3PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3Mzk6XFx0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFxcdTAwMjZcXHUwMDI2ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cXHUwMDNlbW1pby5ucHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTc0Mj1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzQ0OlxcdHJldHVybiBtdDc2X2lzX21taW8oZGV2KSBcXHUwMDI2XFx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZW1taW8ucHBlX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYz0zMzA9c3RhdGljIGludCBtdDc2MTVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTM4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYzozOTA6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNiAocnhkMCBcXHUwMDI2IGNzdW1fbWFzaykgPT0gY3N1bV9tYXNrIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMzkxLVxcdCAgICAhKGNzdW1fc3RhdHVzIFxcdTAwMjYgKEJJVCgwKSB8IEJJVCgyKSB8IEJJVCgzKSkpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9NzA5PWludCBtdDc2MTVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzYxNV9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtNzIxLVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBpbmZvLVxcdTAwM2Vjb250cm9sLnZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYzo3MjI6XFx0Ym9vbCBpc19tbWlvID0gbXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTcyMy1cXHR1MzIgdmFsLCBzel90eGQgPSBpc19tbWlvID8gTVRfVFhEX1NJWkUgOiBNVF9VU0JfVFhEX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYz0xMDk0PXZvaWQgbXQ3NjE1X21hY19zZXRfcmF0ZXMoc3RydWN0IG10NzYxNV9waHkgKnBoeSwgc3RydWN0IG10NzYxNV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTExMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MTEwNDpcXHRpZiAoIW10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTExMDUtXFx0XFx0bXQ3NjE1X21hY19xdWV1ZV9yYXRlX3VwZGF0ZShwaHksIHN0YSwgcHJvYmVfcmF0ZSwgcmF0ZXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTMzNT1zdGF0aWMgaW50IG10NzYxNV9zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0zOTItXFx0bXQ3Nl93Y2lkX2tleV9zZXR1cChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCB3Y2lkLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYzozOTM6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMzk0LVxcdFxcdGVyciA9IG10NzYxNV9tYWNfd3RibF9zZXRfa2V5KGRldiwgd2NpZCwga2V5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NDEwPW10NzZfY29ubmFjMl9tYWNfd3JpdGVfdHh3aV84MDIxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo0OTM6XFx0aWYgKG10NzZfaXNfbW1pbyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTQtXFx0XFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQ3X1RZUEUsIGZjX3R5cGUpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUxMy1cXHR1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDAsIGJhbmRfaWR4ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjUxNDpcXHR1MzIgdmFsLCBzel90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDogTVRfU0RJT19UWERfU0laRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUxNS1cXHRib29sIGlzXzgwMjMgPSBpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUzOS1cXHR9IGVsc2UgaWYgKHFpZCBcXHUwMDNlPSBNVF9UWFFfUFNEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo1NDA6XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQxLVxcdFxcdHFfaWR4ID0gTVRfTE1BQ19BTFRYMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQzOlxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0NC1cXHRcXHRxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz0xMjcyPWludCBtdDc2X2Nvbm5hY19tY3Vfc3RhX3dlZF91cGRhdGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0xMjczLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjEyNzQ6XFx0aWYgKCFtdDc2X2lzX21taW8oZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTEyNzUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTI1NjY9bXQ3Nl9jb25uYWNfbWN1X3NldF93b3dfY3RybChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjI2MDc6XFx0aWYgKG10NzZfaXNfbW1pbyhkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwOC1cXHRcXHRyZXEud293X2N0cmxfdGx2Lndha2V1cF9oaWYgPSBXT1dfUENJRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjYxOT1pbnQgbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgYm9vbCBzdXNwZW5kLCBib29sIHdhaXRfcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjI2NDM6XFx0aWYgKG10NzZfaXNfbW1pbyhkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0NC1cXHRcXHRyZXEuaGRyLmhpZl90eXBlID0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21haW4uYz0xMT1pbnQgbXQ3NngwX3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21haW4uYy0xNS1cXHRtdDc2eDAyX3ByZV90YnR0X2VuYWJsZShkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmM6MTY6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMTctXFx0XFx0dGFza2xldF9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZWRmc19wZC5kZnNfdGFza2xldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jOjI0OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMjUtXFx0XFx0bXQ3NngwMl9kZnNfaW5pdF9wYXJhbXMoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTBlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDozMzpcXHRpZiAoIW10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz0xNjg9bXQ3NngwX3BoeV9yZl9jc3Jfd3JfcnAoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xNzgtI2RlZmluZSBSRl9SQU5ET01fV1JJVEUoZGV2LCB0YWIpIGRvIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6MTc5OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTE4MC1cXHRcXHRtdDc2eDBfcGh5X3JmX2Nzcl93cl9ycChkZXYsIHRhYiwgQVJSQVlfU0laRSh0YWIpKTtcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz02OTc9bXQ3NngwX3BoeV9nZXRfZGVsdGFfcG93ZXIoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHU4IHR4X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy03NDgtXFx0XFx0ZGF0YSA9IG10NzZfcnIoZGV2LCBNVF9CQlAoQ09SRSwgMSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjc0OTpcXHRcXHRpZiAoaXNfbXQ3NjMwKGRldikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtNzUwLVxcdFxcdFxcdGludCBvZmZzZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz0xMTE2PXN0YXRpYyB2b2lkIG10NzZ4MF9yZl9wYXRjaF9yZWdfYXJyYXkoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMTI2LVxcdFxcdGNhc2UgTVRfUkYoMCwgMyk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6MTEyNzpcXHRcXHRcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTEyOC1cXHRcXHRcXHRcXHRpZiAoaXNfbXQ3NjMwKGRldikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmM9MTE3PWludCBtdDc2eDAyX21jdV9jYWxpYnJhdGUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGludCB0eXBlLCB1MzIgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmMtMTI1LVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21jdS5jOjEyNjpcXHRib29sIGlzX210NzZ4MmUgPSBtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgaXNfbXQ3NngyKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21jdS5jLTEyNy1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3V0aWwuYz02MjI9dm9pZCBtdDc2eDAyX3N0YV9wcyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYyOS1cXHRtdDc2X3N0b3BfdHhfcXVldWVzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHN0YSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3V0aWwuYzo2MzA6XFx0aWYgKG10NzZfaXNfbW1pbyhtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYzMS1cXHRcXHRtdDc2eDAyX21hY193Y2lkX3NldF9kcm9wKGRldiwgaWR4LCBwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjY0PWludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNzA6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjcxLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwieG1pdC1xdWV1ZXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTE3MD1pbnQgbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjE4OlxcdGlmICghbXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMTktXFx0XFx0aHctXFx1MDAzZWV4dHJhX3R4X2hlYWRyb29tICs9IE1UX1NESU9fVFhEX1NJWkUgKyBNVF9TRElPX0hEUl9TSVpFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9MTY5PW10NzkyMV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjI0MDpcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IChyeGQwIFxcdTAwMjYgY3N1bV9tYXNrKSA9PSBjc3VtX21hc2sgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yNDEtXFx0ICAgICEoY3N1bV9zdGF0dXMgXFx1MDAyNiAoQklUKDApIHwgQklUKDIpIHwgQklUKDMpKSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MjI3PWludCBfX210NzkyMV9zdGFydChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgIE1UNzkyeF9XQVRDSERPR19USU1FKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjUzOlxcdGlmIChtdDc2X2lzX21taW8obXBoeS1cXHUwMDNlZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTQtXFx0XFx0ZXJyID0gbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChwaHktXFx1MDAzZWRldiwgRVhUX0NNRF9SQURJT19MRURfQ1RSTF9FTkFCTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTI4ND1zdGF0aWMgdm9pZCBtdDc5MjFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjg5OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkwLVxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz00MTA9c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MjY6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQyNy1cXHRcXHRyZXQgPSBtdDc5MjFfbWN1X3JlYWRfZWVwcm9tKGRldiwgTVRfRUVfSFdfVFlQRSwgXFx1MDAyNmh3X2VuY2FwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODk9aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5NTpcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTYtXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ4bWl0LXF1ZXVlc1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjA2PWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNTI6XFx0aWYgKCFtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRcXHRody1cXHUwMDNlZXh0cmFfdHhfaGVhZHJvb20gKz0gTVRfU0RJT19UWERfU0laRSArIE1UX1NESU9fSERSX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0zNTk9bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy00MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NDI0OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgKHJ4ZDMgXFx1MDAyNiBjc3VtX21hc2spID09IGNzdW1fbWFzayBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTQyNS1cXHQgICAgIShjc3VtX3N0YXR1cyBcXHUwMDI2IChCSVQoMCkgfCBCSVQoMikgfCBCSVQoMykpKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTczMD1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTczNy1cXHR1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDAsIGJhbmRfaWR4ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3Mzg6XFx0dTMyIHZhbCwgc3pfdHhkID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWERfU0laRSA6IE1UX1NESU9fVFhEX1NJWkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzM5LVxcdGJvb2wgaXNfODAyMyA9IGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc2My1cXHR9IGVsc2UgaWYgKHFpZCBcXHUwMDNlPSBNVF9UWFFfUFNEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzY0OlxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03NjUtXFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc2Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc2NzpcXHRcXHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzY4LVxcdFxcdHFfaWR4ID0gd21tX2lkeCAqIE1UNzZfQ09OTkFDX01BWF9XTU1fU0VUUyArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNjA9bXQ3OTI1X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIwMjpcXHRpZiAobXQ3Nl9pc19tbWlvKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjAzLVxcdFxcdHJlcS53b3dfY3RybF90bHYud2FrZXVwX2hpZiA9IFdPV19QQ0lFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9Nzk4PXN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy04MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6ODE0OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy04MTUtXFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX2VlcHJvbShkZXYsIE1UX0VFX0hXX1RZUEUsIFxcdTAwMjZod19lbmNhcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU4OjQ5LjUzNjk1NzQzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzc1OTcyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGBtdDc2YCBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCB0b3VjaGVzIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBOYXR1cmFsbHksIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgYG10NzZgIGZyYW1ld29yay4gSnVzdCBrbm93aW5nIHRoZXkncmUgbW9kaWZpZWQgaXNuJ3QgZW5vdWdoOyBJIG5lZWQgdGhlIGNhbGxpbmcgY29udGV4dC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgY29uZGl0aW9uYWwgY2hhbmdlLCBvciBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbCB0byB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgbG9naWM/IFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgY2FsbCBwYXRocyBhbmQgc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbnZvbHZlZC4gTGV0J3Mgc2VlIGhvdyBkZWVwIHRoaXMgcmFiYml0IGhvbGUgZ29lcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODg0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTg6NTIuODc0NTU2Njg0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDk0NTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X25wdV9kZXZpY2VfYWN0aXZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9MTkwPW10NzZfZG1hX3N5bmNfaWR4KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTkyLVxcdGlmICgocS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNVF9RRkxBR19XRURfUlJPX0VOKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTkzOlxcdCAgICAoIWlzX210Nzk5MihkZXYpIHx8ICFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTk0LVxcdFxcdFFfV1JJVEUocSwgcmluZ19zaXplLCBNVF9ETUFfUlJPX0VOIHwgcS1cXHUwMDNlbmRlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz02NDA9bXQ3Nl9kbWFfdHhfcXVldWVfc2tiKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjYxLVxcdC8qIFRPRE86IFRha2UgaW50byBhY2NvdW50IHVubGluZWFyIHNrYnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjY2MjpcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFxcdTAwMjZcXHUwMDI2IHNrYl9saW5lYXJpemUoc2tiKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY2My1cXHRcXHRnb3RvIGZyZWVfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy03MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo3MTQ6XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTcxNS1cXHRcXHRyZXR1cm4gbXQ3Nl9ucHVfZG1hX2FkZF9idWYocGh5LCBxLCBza2IsIFxcdTAwMjZ0eF9pbmZvLmJ1ZlsxXSwgdHh3aSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTg2MT1tdDc2X2RtYV9yeF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtODg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODg2OlxcdFxcdGlmIChtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4Ny1cXHRcXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz05MDU9bXQ3Nl9kbWFfcnhfcmVzZXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5MzI6XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTMzLVxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTU1ND12b2lkIG10NzZfcnhfcG9sbF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjQtXFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTU2NTpcXHRcXHQgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY2LVxcdFxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmZyYW1lcywgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3Mjk9c3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTczNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzM3OnN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9MTA9aW50IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBpbnQgaWR4LCBpbnQgbl9kZXNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MjY6XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMjctXFx0XFx0ZmxhZ3MgPSBNVF9OUFVfUV9UWChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWJhbmRfaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTQ2PXN0YXRpYyB2b2lkIG10Nzk5Nl9kbWFfY29uZmlnKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMzEtXFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEzMjpcXHRcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEzMy1cXHRcXHRcXHRcXHRUWFFfQ09ORklHKDAsIFdGRE1BMCwgTVRfSU5UX1RYX0RPTkVfQkFORDIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz0zMDY9dm9pZCBtdDc5OTZfZG1hX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgcmVzZXQsIGJvb2wgd2VkX3Jlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjM2MjpcXHRpZiAoIW10Nzk5Nl9oYXNfd2EoZGV2KSB8fCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM2My1cXHRcXHRpcnFfbWFzayBcXHUwMDI2PSB+KE1UX0lOVF9SWChNVF9SWFFfTUFJTl9XQSkgfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM2NC1cXHRcXHRcXHQgICAgICBNVF9JTlRfUlgoTVRfUlhRX0JBTkQxX1dBKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MzY1OlxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zNjYtXFx0XFx0aXJxX21hc2sgXFx1MDAyNj0gfihNVF9JTlRfUlgoTVRfUlhRX1RYRlJFRV9CQU5EMCkgfFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9Mzc0PXN0YXRpYyB2b2lkIG10Nzk5Nl9kbWFfZW5hYmxlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgcmVzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NDgtXFx0XFx0aWYgKGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjQ0OTpcXHRcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NTAtXFx0XFx0XFx0XFx0bXQ3Nl9zZXQoZGV2LCBNVF9XRkRNQV9IT1NUX0NPTkZJRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTQ2NC1cXHRcXHRpZiAoIWlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjQ2NTpcXHRcXHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NjYtXFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMi1cXHUwMDNlc3BlZWQgXFx1MDAzYyBQQ0lFX1NQRUVEXzVfMEdUIHx8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz01MjE9aW50IG10Nzk5Nl9kbWFfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTUzMS1cXHRcXHRcXHRtZGV2LVxcdTAwM2VxX3J4W01UX1JYUV9SUk9fUlhETUFEX0NdLndlZCA9IFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1MzI6XFx0XFx0ZWxzZSBpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTMzLVxcdFxcdFxcdG1kZXYtXFx1MDAzZXFfcnhbTVRfUlhRX1JST19SWERNQURfQ10uZmxhZ3MgfD0gTVRfUUZMQUdfRU1JX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjU3NDpcXHRzaXplID0gaXNfbXQ3OTk2KG1kZXYpIFxcdTAwMjZcXHUwMDI2IG10NzZfbnB1X2RldmljZV9hY3RpdmUobWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NzUtXFx0ICAgICAgID8gTVQ3OTk2X05QVV9SWF9SSU5HX1NJWkUgLyA0IDogTVQ3OTk2X1JYX1JJTkdfU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1OTE6XFx0XFx0c2l6ZSA9IGlzX210Nzk5NihtZGV2KSBcXHUwMDI2XFx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKG1kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTkyLVxcdFxcdCAgICAgICA/IE1UNzk5Nl9OUFVfUlhfUklOR19TSVpFIC8gMiA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NjA5OlxcdFxcdHNpemUgPSBpc19tdDc5OTYobWRldikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYxMC1cXHRcXHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz02MjI9dm9pZCBtdDc5OTZfZG1hX3Jyb19zdGFydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjY2MDpcXHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjYxLVxcdFxcdG10Nzk5Nl9pcnFfZW5hYmxlKGRldiwgTVRfSU5UX1JST19SWF9ET05FKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTY2ND1pbnQgbXQ3OTk2X2RtYV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02ODEtXFx0LyogaW5pdCB0eCBxdWV1ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjY4MjpcXHRpZiAoaXNfbXQ3OTk2KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IG10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjgzLVxcdFxcdHJldCA9IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHksIE1UX1RYUV9JRCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc1OS1cXHR9IGVsc2UgaWYgKGlzX210Nzk5MihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjc2MDpcXHRcXHQgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzYxLVxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX05QVV9RX1RYRlJFRSgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg5My1cXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfVFhGUkVFX0JBTkQwXS53ZWQgPSB3ZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODk0OlxcdFxcdFxcdH0gZWxzZSBpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg5NS1cXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfVFhGUkVFX0JBTkQwXS5mbGFncyA9IE1UX05QVV9RX1RYRlJFRSgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTkxOC1cXHRcXHRcXHRzaXplID0gaXNfbXQ3OTk2KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTE5OlxcdFxcdFxcdCAgICAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTIwLVxcdFxcdFxcdCAgICAgICA/IE1UNzk5Nl9OUFVfUlhfUklOR19TSVpFIDogTVQ3OTk2X1JYX1JJTkdfU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00Nzg9bXQ3OTk2X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5Mi1cXHRody1cXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzID0gTkVUSUZfRl9SWENTVU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ5MzpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgfHwgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNDk0LVxcdFxcdGh3LVxcdTAwM2VuZXRkZXZfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19UQztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02MTA9dm9pZCBtdDc5OTZfbWFjX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02MjctXFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo2Mjg6XFx0XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTYyOS1cXHRcXHRcXHRyeF9wYXRoX3R5cGUgPSBpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPyA2IDogODtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNjk1LVxcdCAgICAgKGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNiBiYW5kID09IE1UX0JBTkQyIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjY5NjpcXHQgICAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTY5Ny1cXHRcXHRoaWYxX29mcyA9IE1UX1dGRE1BMF9QQ0lFMSgwKSAtIE1UX1dGRE1BMCgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MzctXFx0ICAgICgoYmFuZCA9PSBNVF9CQU5EMSBcXHUwMDI2XFx1MDAyNiAhZGV2LVxcdTAwM2VoaWYyKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3Mzg6XFx0ICAgICAoYmFuZCA9PSBNVF9CQU5EMiBcXHUwMDI2XFx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzM5LVxcdFxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc0NC1cXHRcXHRpbnQgc2l6ZSA9IGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3NDU6XFx0XFx0XFx0ICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03NDYtXFx0XFx0XFx0ICAgPyBNVDc5OTZfTlBVX1RYX1JJTkdfU0laRSAvIDIgOiBNVDc5OTZfVFhfUklOR19TSVpFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTg2OD12b2lkIG10Nzk5Nl9ycm9faHdfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg4OC1cXHRcXHRcXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4ODk6XFx0XFx0XFx0ICAgICFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg5MC1cXHRcXHRcXHRcXHRtdDc2X3NldChkZXYsIE1UX1JST18zXzFfR0xPQkFMX0NPTkZJRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz05NDk9c3RhdGljIGludCBtdDc5OTZfd2VkX3Jyb19pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTkyLVxcdFxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6OTkzOlxcdFxcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTQtXFx0XFx0XFx0bXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgMCwgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMDU4OlxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTA1OS1cXHRcXHRtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCAxLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTExMjc9c3RhdGljIHZvaWQgbXQ3OTk2X3dlZF9ycm9fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTE0ODpcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMTQ5LVxcdFxcdFxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDUxPXZvaWQgbXQ3OTk2X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjUxOTpcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MjAtXFx0XFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTgxOlxcdFxcdGlmIChtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU4Mi1cXHRcXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucV9yeFtpXSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjM4MT1tdDc5OTZfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MDktXFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDEwOlxcdCAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxMS1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDE5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDIwOlxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDIxLVxcdCAgICBtc3RhX2xpbmstXFx1MDAzZXdjaWQucGh5X2lkeCA9PSBNVF9CQU5EMilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jPTUwMD1pbnQgbXQ3OTk2X25wdV9yeF9xdWV1ZXNfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbnB1LmMtNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jOjUwNDpcXHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbnB1LmMtNTA1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYz0xMTY9dm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTEyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jOjEyMjpcXHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTEyMy1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jPTM3MT1pbnQgbXQ3Nl9ucHVfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0zNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzozODA6XFx0aWYgKCFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHBoeS1cXHUwMDNlZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTM4MS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU4OjUzLjI2NTUxMDI3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODYxNjgwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCBmb3IgbXQ3NiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2sgd2l0aGluIHRoZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbnMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgdmVyeSBnb29kIGlkZWEuIFRoZSBjb3JlIGNvbmNlcm4gaGVyZSBpcyBhYm91dCBwcmV2ZW50aW5nIGNyYXNoZXMgb3IsIGV2ZW4gd29yc2UsIHN1YnRsZSBjb3JydXB0aW9uIHdoZW4gdGhlIGNvZGUgdHJpZXMgdG8gYWNjZXNzIGBkZXYtXHUwMDNlbW1pby5ucHVgIG9yIGBkZXYtXHUwMDNlbW1pby5wcGVfZGV2YCBvbiBkZXZpY2VzIHRoYXQgKmFyZW4ndCogbWVtb3J5LW1hcHBlZCBJL08gKE1NSU8pLiBVU0Igb3IgU0RJTyBkZXZpY2VzLCBmb3IgZXhhbXBsZSwgd291bGRuJ3QgaGF2ZSB0aGVzZSBNTUlPIGFkZHJlc3NlcyBkaXJlY3RseSBhY2Nlc3NpYmxlLlxuXG5BIHJlZCBmbGFnIGltbWVkaWF0ZWx5IGdvZXMgdXAsIHRob3VnaDogSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBhYm91dCB0aGUgYGRldi1cdTAwM2VtbWlvYCBzdHJ1Y3R1cmUuIElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdCwgb3IsIGV2ZW4gbW9yZSBsaWtlbHkgaW4gYSBkcml2ZXIgbGlrZSB0aGlzLCBhIHVuaW9uLCBvciBhIHN0cnVjdCB0aGF0IHBvdGVudGlhbGx5IG92ZXJsYXBzIHdpdGggb3RoZXIgZmllbGRzIHdpdGhpbiBgc3RydWN0IG10NzZfZGV2YD8gVGhpcyBpcyBjcml0aWNhbC4gSWYgaXQncyBhIHVuaW9uLCBhY2Nlc3NpbmcgdGhlc2UgZmllbGRzIHdoZW4gaXQncyAqbm90KiBhbiBNTUlPIGRldmljZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiB1bmV4cGVjdGVkIGJlaGF2aW9yLCBtZW1vcnkgY29ycnVwdGlvbiwgb3IgZXZlbiBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuXG5cbkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbXQ3Ni5oYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24sIGFuZCBjb25maXJtIG15IHN1c3BpY2lvbiBhYm91dCB0aGUgdW5pb24gb3Igb3ZlcmxhcHBpbmcgZmllbGRzLiBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoIGFuZCBzZWUgaWYgaXQgYWRlcXVhdGVseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODo1OC4wNTE2ODEwMDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMzY4MTIwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgbXQ3Nl9kZXYgXFxcXHtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9ODU1PXN0cnVjdCBtdDc2X3BoeSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTIxOnN0cnVjdCBtdDc2X2RldiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTIyLVxcdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTg6NTkuNzY1MzY1NzE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MTAzMzU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYG10NzZfZGV2YCBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNZWRpYXRlayA4MDIuMTEgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBNeSBpbml0aWFsIGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBgc3RydWN0IG10NzZfZGV2YCBkZWZpbml0aW9uIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJdCdzIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlLCB0aGUgY29udHJvbCBjZW50ZXIsIGlmIHlvdSB3aWxsLCBmb3IgdGhlIE1lZGlhdGVrIGRldmljZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUga2VybmVsLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBhY2Nlc3NpYmxlIHRocm91Z2ggdGhpcyBzdHJ1Y3R1cmUsIHBvdGVudGlhbGx5IGEgZGVzY3JpcHRvciBmb3IgdGhlIERNQSBlbmdpbmUsIGFuZCwgb2YgY291cnNlLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgY29tcG9uZW50cy4gRXNzZW50aWFsbHksIHRoaXMgaXMgd2hlcmUgdGhlICptYWdpYyogaGFwcGVucywgd2hlcmUgdGhlIHNvZnR3YXJlIG1hcHMgdG8gdGhlIHNpbGljb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCBpdHMgbWVtYmVycyB0byBmb3JtIGFuIGVmZmVjdGl2ZSBtZW50YWwgbW9kZWwgb2YgaXRzIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0NTAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTowMy4yMDY0MDE5MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkyMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5MjE6XFx0c3RydWN0IG10NzZfZGV2IHtcXG4gOTIyOlxcdFxcdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cXG4gOTIzOlxcdFxcdHN0cnVjdCBtdDc2X3BoeSAqcGh5c1tfX01UX01BWF9CQU5EXTtcXG4gOTI0OlxcdFxcdHN0cnVjdCBtdDc2X3BoeSAqYmFuZF9waHlzW05VTV9OTDgwMjExX0JBTkRTXTtcXG4gOTI1OlxcdFxcbiA5MjY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuIDkyNzpcXHRcXG4gOTI4OlxcdFxcdHNwaW5sb2NrX3Qgd2VkX2xvY2s7XFxuIDkyOTpcXHRcXHRzcGlubG9ja190IGxvY2s7XFxuIDkzMDpcXHRcXHRzcGlubG9ja190IGNjX2xvY2s7XFxuIDkzMTpcXHRcXG4gOTMyOlxcdFxcdHUzMiBjdXJfY2NfYnNzX3J4O1xcbiA5MzM6XFx0XFxuIDkzNDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9yeF9zdGF0dXMgcnhfYW1wZHVfc3RhdHVzO1xcbiA5MzU6XFx0XFx0dTMyIHJ4X2FtcGR1X2xlbjtcXG4gOTM2OlxcdFxcdHUzMiByeF9hbXBkdV9yZWY7XFxuIDkzNzpcXHRcXG4gOTM4OlxcdFxcdHN0cnVjdCBtdXRleCBtdXRleDtcXG4gOTM5OlxcdFxcbiA5NDA6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfYnVzX29wcyAqYnVzO1xcbiA5NDE6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfZHJpdmVyX29wcyAqZHJ2O1xcbiA5NDI6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyAqbWN1X29wcztcXG4gOTQzOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4gOTQ0OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXY7XFxuIDk0NTpcXHRcXG4gOTQ2OlxcdFxcdHN0cnVjdCBtdDc2X21jdSBtY3U7XFxuIDk0NzpcXHRcXG4gOTQ4OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuYXBpX2RldjtcXG4gOTQ5OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICp0eF9uYXBpX2RldjtcXG4gOTUwOlxcdFxcdHNwaW5sb2NrX3QgcnhfbG9jaztcXG4gOTUxOlxcdFxcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpW19fTVRfUlhRX01BWF07XFxuIDk1MjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHJ4X3NrYltfX01UX1JYUV9NQVhdO1xcbiA5NTM6XFx0XFx0c3RydWN0IHRhc2tsZXRfc3RydWN0IGlycV90YXNrbGV0O1xcbiA5NTQ6XFx0XFxuIDk1NTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHR4d2lfY2FjaGU7XFxuIDk1NjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4d2lfY2FjaGU7XFxuIDk1NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcV9tY3VbX19NVF9NQ1VRX01BWF07XFxuIDk1ODpcXHRcXHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSBxX3J4W19fTVRfUlhRX01BWF07XFxuIDk1OTpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgKnF1ZXVlX29wcztcXG4gOTYwOlxcdFxcdGludCB0eF9kbWFfaWR4WzRdO1xcbiA5NjE6XFx0XFx0ZW51bSBtdDc2X2h3cnJvX21vZGUgaHdycm9fbW9kZTtcXG4gOTYyOlxcdFxcbiA5NjM6XFx0XFx0c3RydWN0IG10NzZfd29ya2VyIHR4X3dvcmtlcjtcXG4gOTY0OlxcdFxcdHN0cnVjdCBuYXBpX3N0cnVjdCB0eF9uYXBpO1xcbiA5NjU6XFx0XFxuIDk2NjpcXHRcXHRzcGlubG9ja190IHRva2VuX2xvY2s7XFxuIDk2NzpcXHRcXHRzdHJ1Y3QgaWRyIHRva2VuO1xcbiA5Njg6XFx0XFx0dTE2IHdlZF90b2tlbl9jb3VudDtcXG4gOTY5OlxcdFxcdHUxNiB0b2tlbl9jb3VudDtcXG4gOTcwOlxcdFxcdHUxNiB0b2tlbl9zdGFydDtcXG4gOTcxOlxcdFxcdHUxNiB0b2tlbl9zaXplO1xcbiA5NzI6XFx0XFxuIDk3MzpcXHRcXHRzcGlubG9ja190IHJ4X3Rva2VuX2xvY2s7XFxuIDk3NDpcXHRcXHRzdHJ1Y3QgaWRyIHJ4X3Rva2VuO1xcbiA5NzU6XFx0XFx0dTE2IHJ4X3Rva2VuX3NpemU7XFxuIDk3NjpcXHRcXG4gOTc3OlxcdFxcdHdhaXRfcXVldWVfaGVhZF90IHR4X3dhaXQ7XFxuIDk3ODpcXHRcXHQvKiBzcGluY2xvY2sgdXNlZCB0byBwcm90ZWN0IHdjaWQgcGt0aWQgbGlua2VkIGxpc3QgKi9cXG4gOTc5OlxcdFxcdHNwaW5sb2NrX3Qgc3RhdHVzX2xvY2s7XFxuIDk4MDpcXHRcXG4gOTgxOlxcdFxcdHUzMiB3Y2lkX21hc2tbRElWX1JPVU5EX1VQKE1UNzZfTl9XQ0lEUywgMzIpXTtcXG4gOTgyOlxcdFxcbiA5ODM6XFx0XFx0dTY0IHZpZl9tYXNrO1xcbiA5ODQ6XFx0XFxuIDk4NTpcXHRcXHRzdHJ1Y3QgbXQ3Nl93Y2lkIGdsb2JhbF93Y2lkO1xcbiA5ODY6XFx0XFx0c3RydWN0IG10NzZfd2NpZCBfX3JjdSAqd2NpZFtNVDc2X05fV0NJRFNdO1xcbiA5ODc6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCB3Y2lkX2xpc3Q7XFxuIDk4ODpcXHRcXG4gOTg5OlxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgc3RhX3BvbGxfbGlzdDtcXG4gOTkwOlxcdFxcdHNwaW5sb2NrX3Qgc3RhX3BvbGxfbG9jaztcXG4gOTkxOlxcdFxcbiA5OTI6XFx0XFx0dTMyIHJldjtcXG4gOTkzOlxcdFxcbiA5OTQ6XFx0XFx0c3RydWN0IHRhc2tsZXRfc3RydWN0IHByZV90YnR0X3Rhc2tsZXQ7XFxuIDk5NTpcXHRcXHRpbnQgYmVhY29uX2ludDtcXG4gOTk2OlxcdFxcdHU4IGJlYWNvbl9tYXNrO1xcbiA5OTc6XFx0XFxuIDk5ODpcXHRcXHRzdHJ1Y3QgZGVidWdmc19ibG9iX3dyYXBwZXIgZWVwcm9tO1xcbiA5OTk6XFx0XFx0c3RydWN0IGRlYnVnZnNfYmxvYl93cmFwcGVyIG90cDtcXG4xMDAwOlxcdFxcbjEwMDE6XFx0XFx0Y2hhciBhbHBoYTJbM107XFxuMTAwMjpcXHRcXHRlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uO1xcbjEwMDM6XFx0XFxuMTAwNDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9zY2FuX3Jucl9wYXJhbSBybnI7XFxuMTAwNTpcXHRcXG4xMDA2OlxcdFxcdHUzMiBkZWJ1Z2ZzX3JlZztcXG4xMDA3OlxcdFxcbjEwMDg6XFx0XFx0dTggY3NhX2NvbXBsZXRlO1xcbjEwMDk6XFx0XFxuMTAxMDpcXHRcXHR1MzIgcnhmaWx0ZXI7XFxuMTAxMTpcXHRcXG4xMDEyOlxcdFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgc2Nhbl93b3JrO1xcbjEwMTM6XFx0XFx0c3BpbmxvY2tfdCBzY2FuX2xvY2s7XFxuMTAxNDpcXHRcXHRzdHJ1Y3Qge1xcbjEwMTU6XFx0XFx0XFx0c3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxO1xcbjEwMTY6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuO1xcbjEwMTc6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcXG4xMDE4OlxcdFxcdFxcdHN0cnVjdCBtdDc2X3ZpZl9saW5rICptbGluaztcXG4xMDE5OlxcdFxcdFxcdHN0cnVjdCBtdDc2X3BoeSAqcGh5O1xcbjEwMjA6XFx0XFx0XFx0aW50IGNoYW5faWR4O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTowMy4yMDY2MjI1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTMwNzM4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIGBzdHJ1Y3QgbXQ3Nl9kZXZgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gXCJMZXQncyByZWFkIG1vcmUgb2YgYHN0cnVjdCBtdDc2X2RldmAuXCIgVGhhdCBtZWFucyBpdCdzIHRpbWUgdG8gZHJpbGwgZG93bi4gSSdtIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUgb2YgdGhlIG10NzYgZHJpdmVyLCBvZiBjb3Vyc2UsIGFuZCBJIGtub3cgd2hlcmUgdGhpcyBzdHJ1Y3R1cmUgZml0cyBpbiBhdCBhIGhpZ2ggbGV2ZWwuIEJ1dCB0aGUgZGV2aWwncyBpbiB0aGUgZGV0YWlscy4gV2hhdCBhcmUgd2UgKnJlYWxseSogZGVhbGluZyB3aXRoIGluc2lkZSB0aGlzIGNydWNpYWwgZGF0YSBzdHJ1Y3R1cmU/IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBsaWtlbHksIHRoZSB2YXJpb3VzIGRldmljZS1zcGVjaWZpYyBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIFdpRmkgcmFkaW8gaXRzZWxmLlxuXG5JIHdhbnQgdG8ga25vdzpcblxuKiAgICoqSW50ZXJuYWwgRmllbGRzOioqIFdoaWNoIGZpZWxkcyBhcmUgY3JpdGljYWwgZm9yIGJhc2ljIGRldmljZSBvcGVyYXRpb24gdmVyc3VzIHRob3NlIHRoYXQgcGVydGFpbiB0byBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciB2YXJpYXRpb25zPyBBcmUgdGhlcmUgYW55IGJpdGZpZWxkcyBvciB1bmlvbnMgdGhhdCByZXF1aXJlIGNhcmVmdWwgYW5hbHlzaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zP1xuKiAgICoqRGF0YSBTdHJ1Y3R1cmVzIHdpdGhpbjoqKiBXaGF0IGFyZSB0aGUga2V5IHBvaW50ZXJzIHdpdGhpbiBgbXQ3Nl9kZXZgIHBvaW50aW5nIHRvPyBBcmUgdGhleSBhbGxvY2F0aW5nIG1lbW9yeSBmcm9tIHRoZSBoZWFwIG9yIGFyZSB0aGV5IGVtYmVkZGVkIHdpdGhpbiB0aGUgc3RydWN0dXJlIGl0c2VsZj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRob3NlIGFyZSB1c2VkIHRvIG1hcCBkZXZpY2UgcmVnaXN0ZXJzLCBtYW5hZ2UgRklGT3MsIGFuZCB0cmFjayBmaXJtd2FyZSBsb2FkaW5nLlxuKiAgICoqQ29uY3VycmVuY3kgQ29uc2lkZXJhdGlvbnM6KiogRG9lcyB0aGUgc3RydWN0dXJlIGFjY291bnQgZm9yIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBzdWNoIGFzIG11dGV4ZXMgb3Igc3BpbmxvY2tzPyBXaGVyZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIG9uIHRoZSBsb29rb3V0IGZvcj9cbiogICAqKkRyaXZlciBMaWZlY3ljbGUgSG9va3M6KiogSG93IGRvZXMgYG10NzZfZGV2YCBmaXQgaW50byB0aGUgZHJpdmVyJ3Mgb3ZlcmFsbCBsaWZlY3ljbGU/IEFyZSB0aGVyZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgY2xlYW51cCBmdW5jdGlvbnMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMgdGhhdCByZWx5IG9uIHRoaXMgc3RydWN0dXJlPyBJIHdhbnQgdG8gY29ubmVjdCB0aGUgZG90cyBiZXR3ZWVuIHRoaXMgc3RydWN0dXJlIGFuZCB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbCwgZXNwZWNpYWxseSBob3cgZGV2aWNlIHJlc291cmNlcyBhcmUgbWFuYWdlZCwgYWxsb2NhdGVkIGFuZCByZWxlYXNlZC5cbiogICAqKkhhcmR3YXJlIEFic3RyYWN0aW9uOioqIFdoYXQga2luZCBvZiBoYXJkd2FyZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBkb2VzIHRoZSBgc3RydWN0IG10NzZfZGV2YCBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGUgYW5kIHdoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZG9lcyBpdCB1c2UgdG8gaGlkZSB0aGUgbG93ZXItbGV2ZWwgZGV0YWlscz8gSSdtIGhvcGluZyB0byBzZWUgYSB3ZWxsIGRlZmluZWQgQVBJIHRvIGhhbmRsZSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzLlxuXG5TbywgeWVhaCwgdGltZSB0byBkaWcgaW50byB0aGF0IGRlZmluaXRpb24uIEl0J3MgdGltZSB0byBnZXQgYSBnb29kIG1lbnRhbCBtb2RlbCBvZiB0aGlzIGJlYXN0LiBVbmRlcnN0YW5kaW5nIGBzdHJ1Y3QgbXQ3Nl9kZXZgIGlzIGVzc2VudGlhbCB0byByZWFsbHkgZ3Jhc3AgdGhlIGRyaXZlcidzIGlubmVyIHdvcmtpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE5OSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6MDguNzM3MzY0MTA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxMDIxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAyMTpcXHRcXHRcXHRib29sIGJlYWNvbl93YWl0O1xcbjEwMjI6XFx0XFx0XFx0Ym9vbCBiZWFjb25fcmVjZWl2ZWQ7XFxuMTAyMzpcXHRcXHR9IHNjYW47XFxuMTAyNDpcXHRcXG4xMDI1OlxcdCNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxcbjEwMjY6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfdGVzdG1vZGVfb3BzICp0ZXN0X29wcztcXG4xMDI3OlxcdFxcdHN0cnVjdCB7XFxuMTAyODpcXHRcXHRcXHRjb25zdCBjaGFyICpuYW1lO1xcbjEwMjk6XFx0XFx0XFx0dTMyIG9mZnNldDtcXG4xMDMwOlxcdFxcdH0gdGVzdF9tdGQ7XFxuMTAzMTpcXHQjZW5kaWZcXG4xMDMyOlxcdFxcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTtcXG4xMDMzOlxcdFxcbjEwMzQ6XFx0XFx0dW5pb24ge1xcbjEwMzU6XFx0XFx0XFx0c3RydWN0IG10NzZfbW1pbyBtbWlvO1xcbjEwMzY6XFx0XFx0XFx0c3RydWN0IG10NzZfdXNiIHVzYjtcXG4xMDM3OlxcdFxcdFxcdHN0cnVjdCBtdDc2X3NkaW8gc2RpbztcXG4xMDM4OlxcdFxcdH07XFxuMTAzOTpcXHRcXG4xMDQwOlxcdFxcdGF0b21pY190IGJ1c19odW5nO1xcbjEwNDE6XFx0fTtcXG4xMDQyOlxcdFxcbjEwNDM6XFx0LyogcGVyLXBoeSBzdGF0cy4gICovXFxuMTA0NDpcXHRzdHJ1Y3QgbXQ3Nl9taWJfc3RhdHMge1xcbjEwNDU6XFx0XFx0dTMyIGFja19mYWlsX2NudDtcXG4xMDQ2OlxcdFxcdHUzMiBmY3NfZXJyX2NudDtcXG4xMDQ3OlxcdFxcdHUzMiBydHNfY250O1xcbjEwNDg6XFx0XFx0dTMyIHJ0c19yZXRyaWVzX2NudDtcXG4xMDQ5OlxcdFxcdHUzMiBiYV9taXNzX2NudDtcXG4xMDUwOlxcdFxcdHUzMiB0eF9iZl9jbnQ7XFxuMTA1MTpcXHRcXHR1MzIgdHhfbXVfYmZfY250O1xcbjEwNTI6XFx0XFx0dTMyIHR4X211X21wZHVfY250O1xcbjEwNTM6XFx0XFx0dTMyIHR4X211X2Fja2VkX21wZHVfY250O1xcbjEwNTQ6XFx0XFx0dTMyIHR4X3N1X2Fja2VkX21wZHVfY250O1xcbjEwNTU6XFx0XFx0dTMyIHR4X2JmX2liZl9wcGR1X2NudDtcXG4xMDU2OlxcdFxcdHUzMiB0eF9iZl9lYmZfcHBkdV9jbnQ7XFxuMTA1NzpcXHRcXG4xMDU4OlxcdFxcdHUzMiB0eF9iZl9yeF9mYl9hbGxfY250O1xcbjEwNTk6XFx0XFx0dTMyIHR4X2JmX3J4X2ZiX2VodF9jbnQ7XFxuMTA2MDpcXHRcXHR1MzIgdHhfYmZfcnhfZmJfaGVfY250O1xcbjEwNjE6XFx0XFx0dTMyIHR4X2JmX3J4X2ZiX3ZodF9jbnQ7XFxuMTA2MjpcXHRcXHR1MzIgdHhfYmZfcnhfZmJfaHRfY250O1xcbjEwNjM6XFx0XFxuMTA2NDpcXHRcXHR1MzIgdHhfYmZfcnhfZmJfYnc7IC8qIHZhbHVlIG9mIGxhc3Qgc2FtcGxlLCBub3QgY3VtdWxhdGl2ZSAqL1xcbjEwNjU6XFx0XFx0dTMyIHR4X2JmX3J4X2ZiX25jX2NudDtcXG4xMDY2OlxcdFxcdHUzMiB0eF9iZl9yeF9mYl9ucl9jbnQ7XFxuMTA2NzpcXHRcXHR1MzIgdHhfYmZfZmJfY3BsX2NudDtcXG4xMDY4OlxcdFxcdHUzMiB0eF9iZl9mYl90cmlnX2NudDtcXG4xMDY5OlxcdFxcbjEwNzA6XFx0XFx0dTMyIHR4X2FtcGR1X2NudDtcXG4xMDcxOlxcdFxcdHUzMiB0eF9zdG9wX3FfZW1wdHlfY250O1xcbjEwNzI6XFx0XFx0dTMyIHR4X21wZHVfYXR0ZW1wdHNfY250O1xcbjEwNzM6XFx0XFx0dTMyIHR4X21wZHVfc3VjY2Vzc19jbnQ7XFxuMTA3NDpcXHRcXHR1MzIgdHhfcGt0X2ViZl9jbnQ7XFxuMTA3NTpcXHRcXHR1MzIgdHhfcGt0X2liZl9jbnQ7XFxuMTA3NjpcXHRcXG4xMDc3OlxcdFxcdHUzMiB0eF9yd3BfZmFpbF9jbnQ7XFxuMTA3ODpcXHRcXHR1MzIgdHhfcndwX25lZWRfY250O1xcbjEwNzk6XFx0XFxuMTA4MDpcXHRcXHQvKiByeCBzdGF0cyAqL1xcbjEwODE6XFx0XFx0dTMyIHJ4X2ZpZm9fZnVsbF9jbnQ7XFxuMTA4MjpcXHRcXHR1MzIgY2hhbm5lbF9pZGxlX2NudDtcXG4xMDgzOlxcdFxcdHUzMiBwcmltYXJ5X2NjYV9idXN5X3RpbWU7XFxuMTA4NDpcXHRcXHR1MzIgc2Vjb25kYXJ5X2NjYV9idXN5X3RpbWU7XFxuMTA4NTpcXHRcXHR1MzIgcHJpbWFyeV9lbmVyZ3lfZGV0ZWN0X3RpbWU7XFxuMTA4NjpcXHRcXHR1MzIgY2NrX21kcmR5X3RpbWU7XFxuMTA4NzpcXHRcXHR1MzIgb2ZkbV9tZHJkeV90aW1lO1xcbjEwODg6XFx0XFx0dTMyIGdyZWVuX21kcmR5X3RpbWU7XFxuMTA4OTpcXHRcXHR1MzIgcnhfdmVjdG9yX21pc21hdGNoX2NudDtcXG4xMDkwOlxcdFxcdHUzMiByeF9kZWxpbWl0ZXJfZmFpbF9jbnQ7XFxuMTA5MTpcXHRcXHR1MzIgcnhfbXJkeV9jbnQ7XFxuMTA5MjpcXHRcXHR1MzIgcnhfbGVuX21pc21hdGNoX2NudDtcXG4xMDkzOlxcdFxcdHUzMiByeF9tcGR1X2NudDtcXG4xMDk0OlxcdFxcdHUzMiByeF9hbXBkdV9jbnQ7XFxuMTA5NTpcXHRcXHR1MzIgcnhfYW1wZHVfYnl0ZXNfY250O1xcbjEwOTY6XFx0XFx0dTMyIHJ4X2FtcGR1X3ZhbGlkX3N1YmZyYW1lX2NudDtcXG4xMDk3OlxcdFxcdHUzMiByeF9hbXBkdV92YWxpZF9zdWJmcmFtZV9ieXRlc19jbnQ7XFxuMTA5ODpcXHRcXHR1MzIgcnhfcGZkcm9wX2NudDtcXG4xMDk5OlxcdFxcdHUzMiByeF92ZWNfcXVldWVfb3ZlcmZsb3dfZHJvcF9jbnQ7XFxuMTEwMDpcXHRcXHR1MzIgcnhfYmFfY250O1xcbjExMDE6XFx0XFxuMTEwMjpcXHRcXHR1MzIgdHhfYW1zZHVbOF07XFxuMTEwMzpcXHRcXHR1MzIgdHhfYW1zZHVfY250O1xcbjExMDQ6XFx0XFxuMTEwNTpcXHRcXHQvKiBtY3VfbXVydV9zdGF0cyAqL1xcbjExMDY6XFx0XFx0dTMyIGRsX2Nja19jbnQ7XFxuMTEwNzpcXHRcXHR1MzIgZGxfb2ZkbV9jbnQ7XFxuMTEwODpcXHRcXHR1MzIgZGxfaHRtaXhfY250O1xcbjExMDk6XFx0XFx0dTMyIGRsX2h0Z2ZfY250O1xcbjExMTA6XFx0XFx0dTMyIGRsX3ZodF9zdV9jbnQ7XFxuMTExMTpcXHRcXHR1MzIgZGxfdmh0XzJtdV9jbnQ7XFxuMTExMjpcXHRcXHR1MzIgZGxfdmh0XzNtdV9jbnQ7XFxuMTExMzpcXHRcXHR1MzIgZGxfdmh0XzRtdV9jbnQ7XFxuMTExNDpcXHRcXHR1MzIgZGxfaGVfc3VfY250O1xcbjExMTU6XFx0XFx0dTMyIGRsX2hlX2V4dF9zdV9jbnQ7XFxuMTExNjpcXHRcXHR1MzIgZGxfaGVfMnJ1X2NudDtcXG4xMTE3OlxcdFxcdHUzMiBkbF9oZV8ybXVfY250O1xcbjExMTg6XFx0XFx0dTMyIGRsX2hlXzNydV9jbnQ7XFxuMTExOTpcXHRcXHR1MzIgZGxfaGVfM211X2NudDtcXG4xMTIwOlxcdFxcdHUzMiBkbF9oZV80cnVfY250O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTowOC43Mzc1OTAxOTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMxODc3MTU0ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHVuaW9uYCBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBNVDc2IGRyaXZlciwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIE1NSU8sIFVTQiwgYW5kIFNESU8gZGV2aWNlcy4gSSBzZWUgdGhhdCBhY2Nlc3NpbmcgYGRldi1cdTAwM2VtbWlvLm5wdWAgb3IgYGRldi1cdTAwM2VtbWlvLnBwZV9kZXZgIGlzIG9ubHkgdmFsaWQgd2hlbiBkZWFsaW5nIHdpdGggYW4gTU1JTyBkZXZpY2UuIElmIHdlJ3JlIHdvcmtpbmcgd2l0aCBVU0Igb3IgU0RJTywgYWNjZXNzaW5nIHRob3NlIGZpZWxkcyBpcyBsaWtlbHkgZ29pbmcgdG8gcmVhZCBmcm9tIHRoZSBvdGhlciBkZXZpY2Utc3BlY2lmaWMgc3RydWN0dXJlcywgd2hpY2ggY291bGQgYmUgdmFsaWQgYnV0IGxlYWQgdG8gY3Jhc2hlcyBvciB1bmRlZmluZWQgYmVoYXZpb3IuXG5cblRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyB0aGF0IGJ5IGFkZGluZyBhIGNoZWNrIHVzaW5nIGBtdDc2X2lzX21taW8oZGV2KSBcdTAwMjZcdTAwMjZgIHRvIGVuc3VyZSB0aG9zZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGZvciB0aGUgY29ycmVjdCBkZXZpY2UgdHlwZSBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBjbGVhciBidWcgZml4LlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyBIbW0sIHdlbGwsIE1UNzYgaGFzIHNldmVyYWwgVVNCIGRyaXZlcnMsIGxpa2UgYG10NzZ4MHVgLCBgbXQ3NngydWAsIGBtdDc5MjF1YCwgYW5kIGBtdDc5MjV1YC4gQW5kLCBvZiBjb3Vyc2UsIFVTQiBkZXZpY2VzIGNhbiBkZWZpbml0ZWx5IGJlIGVtdWxhdGVkIGluIFFFTVUsIHVzaW5nIGVpdGhlciBgZHVtbXlfaGNkYCBvciBgdmhjaS1oY2RgLiBJIGtub3cgc3l6a2FsbGVyIGZyZXF1ZW50bHkgbGV2ZXJhZ2VzIGB2aGNpLWhjZGAgZm9yIFVTQiBmdXp6aW5nLiBTbywgeWVzLCB0aGlzIGNvZGUgaXMgYWJzb2x1dGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLlxuXG5IYW5nIG9u4oCmIExldCBtZSBqdXN0IGNsYXJpZnkuIFRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBiZWhhdmlvciBvZiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gVGhvc2UgZnVuY3Rpb25zIGFyZSBwcmV0dHkgaW1wb3J0YW50IGFuZCB1c2VkIGluIGEgYnVuY2ggb2YgcGxhY2VzIOKAkyBgbXQ3Nl9kbWFfdHhfcXVldWVfc2tiYCwgYG10NzZfZG1hX3J4X2NsZWFudXBgLCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYW5kIG90aGVycy4gU28sIGlmIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCB3ZXJlIHRvIGJlIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgYSBVU0IgZGV2aWNlLCBpdCBtaWdodCByZXR1cm4gdHJ1ZSBlcnJvbmVvdXNseSwgYW5kIHRoYXQgY291bGQgZGVmaW5pdGVseSBsZWFkIHRvIGNyYXNoZXMsIG9yIGF0IGxlYXN0IGluY29ycmVjdCBvcGVyYXRpb24uIFllcCwgaXQncyBhIGJ1ZyBmaXggdGhhdCBwcmV2ZW50cyBjcmFzaGVzIGluIFVTQi9TRElPIGNvbmZpZ3VyYXRpb25zLlxuXG5BbHJpZ2h0LCB0aGF0IHNldHRsZXMgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiBhIGRyaXZlciB0aGF0IHdlIGNhbiBhYnNvbHV0ZWx5IHJlYWNoIHRocm91Z2ggVVNCIGZ1enppbmcuIFRoaXMgaXMgd29ydGggZnV6emluZy5cblxuTm93LCBsZXQgbWUgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWdz4oCmIEknbSBzZWVpbmcgYENPTkZJR19NVDc2X0NPUkVgLCBgQ09ORklHX01UNzZfVVNCYCwgYENPTkZJR19NVDc5MjFVYCwgYENPTkZJR19NVDc5MjVVYCwgYENPTkZJR19NVDc2eDBVYCwgYW5kIGBDT05GSUdfTVQ3NngyVWAuIEknbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZXNlIGFnYWluc3QgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjIxLjkyNTMwODIzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4MTkwOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjA6Y29uZmlnIE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnOjI6Y29uZmlnIE1UNzYwM0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYwM0UgKFBDSWUpIGFuZCBNVDc2eDggV0xBTiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6Mzpjb25maWcgTVQ3NjE1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6ODpjb25maWcgTVQ3NjE1RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjE1RSBhbmQgTVQ3NjYzRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzoyMTpjb25maWcgTVQ3NjIyX1dNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIk1UNzYyMiAoU29DKSBXTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzI6Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzY6Y29uZmlnIE1UNzY2M1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6NDc6Y29uZmlnIE1UNzY2M1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Mjpjb25maWcgTVQ3NngwX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjE5OmNvbmZpZyBNVDc2eDBFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4Ml9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MkUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6MTg6Y29uZmlnIE1UNzZ4MlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjIyLjQ1MzUwMzQ4MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAzMzA5OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRlZXAgRGl2ZSBpbnRvIENvbmZpZ3VyYXRpb24gRmlsZXMqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29tcGxldGUuIE5vdyBJIG5lZWQgdG8gZW5zdXJlIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHN5c3RlbTsgdGhlIG9yaWdpbmFsIGRhdGEgYWxvbmUgaXNuJ3Qgc3VmZmljaWVudC4gVGhpcyBtZWFucyBhIHRob3JvdWdoIGludmVzdGlnYXRpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkgbmVlZCB0byBiZSBtZXRob2RpY2FsIGhlcmUuIEknbGwgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zLiBXaGF0IHNwZWNpZmljIGFyZWFzIGFyZSB0aGUgY29uZmlndXJhdGlvbnMgaW1wYWN0aW5nPyBJJ2xsIHJldmlldyBhbGwgdGhlIGNvbmZpZ3MuIEkgd2lsbCBiZSBsb29raW5nIGZvciBpbnRlcmFjdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW5jb25zaXN0ZW5jaWVzLiBJJ2xsIGRvdWJsZS1jaGVjayBhbGwgdGhlIGNvbmZpZ3MuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MDcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjI1LjU1NjgxNTI5OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc0MjczNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI4PWNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzI6Y29uZmlnIE1UNzkyeF9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkxNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkxNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6MTc6Y29uZmlnIE1UNzk4WF9XTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJNVDc5OHggKFNvQykgV01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc5OTZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNy1cXHRib29sIFxcXCJNVDc5OTYgKFBDSWUpIE5QVSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OToyNS42NTQyNDcyMzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM5ODE1NTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBzZXQgb2YgY29uZmlndXJhdGlvbnMgaGVyZTogYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgcmVsZXZhbnQgbW9kdWxlcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy5cblxuQWxyaWdodCwgdGhlIHBhdGNoIHRvdWNoZXMgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zIGluIGBtdDc2LmhgLCBzbyBJIHNob3VsZCBub3RlIHRoZWlyIHVzYWdlLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgY2FsbGVkIGZyb20gcXVpdGUgYSBmZXcgcGxhY2VzOiBgbXQ3Nl9kbWFfdHhfcXVldWVfc2tiYCwgYG10NzZfZG1hX3J4X2NsZWFudXBgLCBgbXQ3Nl9kbWFfcnhfcmVzZXRgLCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYW5kIGEgd2hvbGUgc2xldyBvZiBgbXQ3OTk2X2AgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gRE1BIGNvbmZpZ3VyYXRpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgbmV0d29yayBzZXR1cC4gVGhhdCdzIGEgZGVjZW50LXNpemVkIHN1cmZhY2UgYXJlYSB0byBiZSByZXZpZXdpbmcuXG5cbkhvbGQgb24gYSBtaW51dGUsIGBtdDc5OTZgIGlzIFBDSWUtb25seSwgc28gdGhhdCBtb2R1bGUgYW5kIGl0cyBhc3NvY2lhdGVkIGZ1bmN0aW9ucyBzaG91bGRuJ3QgYmUgcmVsZXZhbnQgZm9yIFVTQiBmdXp6aW5nLiBUaGF0J3MgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGtlZXAgaW4gbWluZC4gTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3Mgc29tZXRoaW5nLiBJIHdhcyBvcmlnaW5hbGx5IGZvY3VzZWQgb24gdGhlIGBtdDc2X2RtYV90eF9xdWV1ZV9za2JgIGZ1bmN0aW9uLCBhcyB0aGF0IG9uZSdzIGluIGBkbWEuY2AuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgaXMgdXNlZCBieSBVU0IgZGV2aWNlcyBvciBub3QuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBwYXRoIHRocm91Z2ggdGhhdCBmdW5jdGlvbiBmb3IgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTUxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjM0LjA1MjQwNDkyN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzOTA3MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfZG1hX3R4X3F1ZXVlX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTYwNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2MDc6bXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MDgtXFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdHhfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9NjM5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjY0MDptdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjQxLVxcdFxcdCAgICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgbXQ3Nl9kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTUxLVxcdC5yZXNldF9xID0gbXQ3Nl9kbWFfcXVldWVfcmVzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzoxMTUyOlxcdC50eF9xdWV1ZV9za2JfcmF3ID0gbXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjExNTM6XFx0LnR4X3F1ZXVlX3NrYiA9IG10NzZfZG1hX3R4X3F1ZXVlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNTQtXFx0LnR4X2NsZWFudXAgPSBtdDc2X2RtYV90eF9jbGVhbnVwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTozNC40NjYzMjAzMjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMjQzMzU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgRE1BIE9wZXJhdGlvbnMgSW5xdWlyeSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGp1c3QgdGhpbmtpbmcgYWJvdXQgRE1BIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBgbXQ3NmAgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgYG10NzZfZG1hX29wc2AuIEJ1dCwgdGhhdCdzIGZvciBQQ0llIG9yIE1NSU8sIHJpZ2h0PyBJJ20gZm9yZ2V0dGluZyBzb21ldGhpbmcgY3J1Y2lhbCBoZXJlLi4uIHdoYXQgYWJvdXQgVVNCPyBJdCdzIG5vdCB0aGUgc2FtZS4gVVNCIGhhcyBpdHMgb3duIHNldCBvZiBvcGVyYXRpb25zLCBhbmQgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHRoZXkncmUgaGFuZGxlZCB2aWEgYG10NzZfdXNiX29wc2AuIFJpZ2h0LCB0aGF0IGZlZWxzIG1vcmUgY29ycmVjdC4gVGltZSB0byBjb25maXJtIG15IHN1c3BpY2lvbi4gTGV0J3MgZGlnIGludG8gYHVzYi5jYCBhbmQgbWFrZSBzdXJlIG15IG1lbW9yeSBzZXJ2ZXMgbWUgY29ycmVjdGx5LiBJdCdzIHRpbWUgdG8gcmVmcmVzaCBteXNlbGYgb24gaG93IHRoZSBVU0Igc2lkZSBvZiBgbXQ3NmAgaXMgc3RydWN0dXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NzAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTozNy45Nzg3NTcxODJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1OTIzNTYyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3VzYl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjM4LjA3NDY4NzAwNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYyMjg4MDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyBgbXQ3Nl9xdWV1ZV9vcHNgLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBtdDc2X3F1ZXVlX29wc2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY2hlY2sgb3V0IGBtdDc2X3F1ZXVlX29wc2AuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzICpoYXMqIHRvIGJlIHRoZSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgb3BlcmF0aW9uYWwgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIHRoZSBNVDc2J3MgaW50ZXJuYWwgcXVldWUgbWFuYWdlbWVudC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byByZWNhbGwgdGhlIGdlbmVyYWwgTVQ3NiBhcmNoaXRlY3R1cmUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGRlZGljYXRlZCBoYXJkd2FyZSBxdWV1ZXM/IFNvZnR3YXJlIGVtdWxhdGlvbj8gSHlicmlkPyBUaGF0J3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgSSdtIGxvb2tpbmcgZm9yLlxuXG5JJ20gaW5zdGFudGx5IGdvaW5nIHRvIGJlIGludGVyZXN0ZWQgaW4gdGhlIHR5cGljYWwgc3VzcGVjdHM6IGB0eF9lbnF1ZXVlYCwgYHR4X2RlcXVldWVgLCBgcnhfZW5xdWV1ZWAsIGByeF9kZXF1ZXVlYCwgYHF1ZXVlX2luaXRgLCBgcXVldWVfZGVpbml0YC4gQWxzbywgbGV0J3Mgc2VlLCB3aGF0IGFib3V0IGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIHBlci1xdWV1ZSBzdGF0cyBjb3VudGVycyBleHBvc2VkIHZpYSB0aGlzIHN0cnVjdD8gUHJvYmFibHkuIEknbGwgbmVlZCB0byBsb29rIGZvciB0aG9zZS5cblxuR2l2ZW4gdGhlIE1UNzYncyBjb21tb24gdXNlIHdpdGggUENJZSBhbmQgVVNCIGludGVyZmFjZXMsIEkgZXhwZWN0IHNvbWUgZnVuY3Rpb25zIHdpbGwgYmUgcmVsYXRlZCB0byBkZXNjcmlwdG9yIG1hbmFnZW1lbnQsIERNQSBvcGVyYXRpb25zLCBhbmQgcGVyaGFwcyBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCB0byB0aGUgcXVldWVzLiBJJ2xsIGJlIGxvb2tpbmcgdG8gc2VlIGlmIHRoZXNlIGZ1bmN0aW9ucyBtYW5hZ2UgdGhlIGhhcmR3YXJlIGRpcmVjdGx5IG9yIHVzZSBhbiBpbnRlcm1lZGlhcnkgbGF5ZXIgb2Ygc29mdHdhcmUgcXVldWVzLlxuXG5BcmUgdGhlcmUgbGlrZWx5IHRvIGJlIHJhdGUgbGltaXRpbmcgb3IgdHJhZmZpYyBzaGFwaW5nIGZ1bmN0aW9ucyBoZXJlPyBRdWl0ZSBwb3NzaWJseSwgZXNwZWNpYWxseSBpZiB0aGlzIGNvdmVycyBtdWx0aXBsZSBxdWV1ZXMgd2l0aCBkaWZmZXJpbmcgcHJpb3JpdGllcy4gQWxzbywgZG9lcyBpdCBjb250YWluIGZ1bmN0aW9ucyBmb3IgcG93ZXIgbWFuYWdlbWVudCBvciBxdWV1ZSBkcmFpbmluZyBvbiBzdXNwZW5kL3Jlc3VtZT8gVGhlc2UgYXJlIHRoaW5ncyB0byBsb29rIGZvci5cblxuSSdtIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc3R1ZmYsIHBvdGVudGlhbGx5IGludm9sdmluZyBtZW1vcnkgYmFycmllcnMgYW5kIGNhcmVmdWwgc3luY2hyb25pemF0aW9uLiBJZiB0aGlzIGlzIGEgbW9kZXJuIE1UNzYgZHJpdmVyLCBJJ20gaG9waW5nIHRvIHNlZSB3ZWxsLWNvbW1lbnRlZCBjb2RlLCBidXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGdldCBteSBob3BlcyB1cC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODI2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NDIuOTM2OTc4OTU1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwMjMxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG10NzZfcXVldWVfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9MTEwOD1tdDc2X2RtYV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE0ODpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIG10NzZfZG1hX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNDktXFx0LmluaXQgPSBtdDc2X2RtYV9pbml0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjcwPXN0cnVjdCBtdDc2X21jdV9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjI5MjpzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTI5My1cXHRpbnQgKCppbml0KShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTkyMT1zdHJ1Y3QgbXQ3Nl9kZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTU4LVxcdHN0cnVjdCBtdDc2X3F1ZXVlIHFfcnhbX19NVF9SWFFfTUFYXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5NTk6XFx0Y29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzICpxdWV1ZV9vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTYwLVxcdGludCB0eF9kbWFfaWR4WzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9NTg3PXN0YXRpYyB2b2lkIG10NzZzX3R4X2tpY2soc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jOjU5NDpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIHNkaW9fcXVldWVfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTU5NS1cXHQudHhfcXVldWVfc2tiID0gbXQ3NnNfdHhfcXVldWVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz0xMDY5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ1X2FsbG9jX3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6MTA3MTpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIHVzYl9xdWV1ZV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDcyLVxcdC50eF9xdWV1ZV9za2IgPSBtdDc2dV90eF9xdWV1ZV9za2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjQzLjA2NTAwNjgzNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzMwMzI3NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBDYWxsKipcblxuT2theSwgc28gSSB3YXMgbG9va2luZyBhdCB0aGUgYG10NzZfZG1hX3R4X3F1ZXVlX3NrYmAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBpdCdzIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIGRldmljZXMgdGhhdCByZWx5IG9uIERpcmVjdCBNZW1vcnkgQWNjZXNzLCBsaWtlIFBDSWUgYW5kIE1NSU8gYmFzZWQgaGFyZHdhcmUuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gQnV0IHRoZW4gSSBoaXQgYSBzbmFnLiBUaGUgZnVuY3Rpb24gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgLCB0aGUgb25lIEkgd2FzIGFjdHVhbGx5IGZvY3VzZWQgb24sIGlzIHNlZW1pbmdseSAqb25seSogY2FsbGVkIGZyb20gd2l0aGluIERNQS1yZWxhdGVkIHNlY3Rpb25zIG9mIHRoZSBjb2RlLiBUaGF0J3MgYSByZWQgZmxhZy4gSWYgaXQncyAqb25seSogY2FsbGVkIGZyb20gRE1BIGNvbnRleHRzLCBob3cgaW4gdGhlIHdvcmxkIGNvdWxkIGl0IGJlIHRyaWdnZXJlZCBmb3IgYSBVU0IgZGV2aWNlPyBUaGUgbG9naWMganVzdCBkb2Vzbid0IGZvbGxvdy5cblxuQWxyaWdodCwgbGV0J3Mgc3RlcCBiYWNrIGFuZCB0YWtlIGEgbW9yZSBncmFudWxhciBhcHByb2FjaC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gYmFjayB0byBpdHMgb3JpZ2lucy4gTGV0IG1lIHNlZS4uLiB3aGVyZSAqZWxzZSogaXMgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGJlaW5nIGNhbGxlZD8gQWggaGEhIEkgZm91bmQgaXQgLSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBpbiBgbWFjODAyMTEuY2AuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBkYXRhIHBvaW50LiBOb3cgSSBoYXZlIGFub3RoZXIgcGxhY2UgdG8gZm9jdXMgb24gdG8gYnVpbGQgdGhpcyBtZW50YWwgbW9kZWwuIFRoaXMgbWFrZXMgbW9yZSBzZW5zZSBub3csIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgYW5kIGhvdyBpdCBtaWdodCBjYWxsLCBvciBub3QgY2FsbCwgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbiBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAzMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTo0Ny43OTUzMzgyNDdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDA4MTI1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3J4X3BvbGxfY29tcGxldGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xMDczPWludCBtdDc2X2RtYV9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTA4NC1cXHRcXHRjdXIgPSBtdDc2X2RtYV9yeF9wcm9jZXNzKGRldiwgXFx1MDAyNmRldi1cXHUwMDNlcV9yeFtxaWRdLCBidWRnZXQgLSBkb25lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjEwODU6XFx0XFx0bXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKGRldiwgcWlkLCBuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEwODYtXFx0XFx0ZG9uZSArPSBjdXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTUxND12b2lkIG10NzZfcnhfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTU0OnZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NTUtXFx0XFx0XFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcnhfcG9sbF9jb21wbGV0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzkzPXZvaWQgbXQ3Nl9yeF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3OTQtXFx0XFx0ICAgICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzk1OnZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYz0xNDQ9c3RhdGljIGludCBtdDc2X25wdV9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTY1LVxcdFxcdGRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyeF9za2IoZGV2LCBxaWQsIHNrYiwgXFx1MDAyNmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MTY2OlxcdFxcdG10NzZfcnhfcG9sbF9jb21wbGV0ZShkZXYsIHFpZCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xNjctXFx0XFx0ZG9uZSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9MzgzPW10NzZzX3Byb2Nlc3NfcnhfcXVldWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDAyLVxcdGlmIChxaWQgPT0gTVRfUlhRX01BSU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NDAzOlxcdFxcdG10NzZfcnhfcG9sbF9jb21wbGV0ZShkZXYsIE1UX1JYUV9NQUlOLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy00MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jPTYwMj1tdDc2dV9wcm9jZXNzX3J4X3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtNjIyLVxcdFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjYyMzpcXHRcXHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBNVF9SWFFfTUFJTiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy02MjQtXFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjQ4LjE0OTQyNjM2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Nzc5OTMxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGRlYnVnZ2luZyB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlRyYWNpbmcgdGhlIFJlY2VpdmUgUGF0aCoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyByZWNlaXZlIHBhdGguLi4gSSdtIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgYmVpbmcgY2FsbGVkIGZyb20gYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIOKAkyB5ZXAsIHRoYXQncyBpbiBgdXNiLmNgLCBleGFjdGx5IHdoZXJlIEknZCBleHBlY3QgaXQuIFRoZSBuZXh0IHRoaW5nIEknbSBzZWVpbmcgaXMgYSBjaGVjazogYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaXMgY2FsbGluZyBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpYC4gVGhpcyBpcyBpbnRlcmVzdGluZywgYSBjb25kaXRpb25hbCBjYWxsLCBzbyBsZXQncyBzZWUgd2hhdCBpcyBoYXBwZW5pbmcgaW4gdGhlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIGZ1bmN0aW9uLiBMb29rcyBsaWtlIEknbGwgbmVlZCB0byBqdW1wIG92ZXIgdG8gYG1hYzgwMjExLmNgIHRvIHRyYWNlIHRoaXMgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MzEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTo1MS42Mjc0MjI1NDlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTU0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTU0OlxcdHZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuMTU1NTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuMTU1NjpcXHR7XFxuMTU1NzpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGZyYW1lcztcXG4xNTU4OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuMTU1OTpcXHRcXG4xNTYwOlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2ZnJhbWVzKTtcXG4xNTYxOlxcdFxcbjE1NjI6XFx0XFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZkZXYtXFx1MDAzZXJ4X3NrYltxXSkpICE9IE5VTEwpIHtcXG4xNTYzOlxcdFxcdFxcdG10NzZfY2hlY2tfc3RhKGRldiwgc2tiKTtcXG4xNTY0OlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpIHx8XFxuMTU2NTpcXHRcXHRcXHQgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpKVxcbjE1NjY6XFx0XFx0XFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2ZnJhbWVzLCBza2IpO1xcbjE1Njc6XFx0XFx0XFx0ZWxzZVxcbjE1Njg6XFx0XFx0XFx0XFx0bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXIoc2tiLCBcXHUwMDI2ZnJhbWVzKTtcXG4xNTY5OlxcdFxcdH1cXG4xNTcwOlxcdFxcbjE1NzE6XFx0XFx0bXQ3Nl9yeF9jb21wbGV0ZShkZXYsIFxcdTAwMjZmcmFtZXMsIG5hcGkpO1xcbjE1NzI6XFx0fVxcbjE1NzM6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NTEuNjI3NjE0NzU5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mzk1OTkxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBGdW5jdGlvbidzIEJlaGF2aW9yKipcblxuT2theSwgc28gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaXMgZGVmaW5pdGVseSBiZWluZyBpbnZva2VkIGZvciBVU0IgZGV2aWNlcy4gVGhhdCdzIGdvb2QsIGJ1dCBpdCdzIGxlYWRpbmcgdG8gc29tZSBwb3RlbnRpYWwgaXNzdWVzIEkgbmVlZCB0byBhZGRyZXNzLiBTcGVjaWZpY2FsbHksIGl0J3MgY2FsbGluZyBib3RoIGBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKWAgYW5kIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldilgLiBUaGUgcHJvYmxlbSBpcywgZm9yIFVTQiBkZXZpY2VzLCBgZGV2LVx1MDAzZW1taW9gIGlzIGludmFsaWQ7IGl0J3Mgb3ZlcmxhcHBpbmcgbWVtb3J5IHdpdGggYGRldi1cdTAwM2V1c2JgLiBUaGlzIG1lYW5zIHRoZXNlIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IHRoZSBvbmVzIHRoYXQgY2hlY2sgZm9yIGFjdGl2ZSBkZXZpY2VzLCBhcmUgbGlrZWx5IHJlYWRpbmcgZ2FyYmFnZSBkYXRhIGZyb20gYGRldi1cdTAwM2V1c2JgLiBUaGF0J3Mgbm90IGlkZWFsLlxuXG5UaGlzIGNhbiByZXN1bHQgaW4gZWl0aGVyIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIG9yIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCByZXR1cm5pbmcgYSBub24temVybyB2YWx1ZSB3aGVuIHRoZXkgc2hvdWxkbid0LiBJZiB0aGlzIGhhcHBlbnMsIGluc3RlYWQgb2YgcHJvcGVybHkgdXNpbmcgYG10NzZfcnhfYWdncl9yZW9yZGVyYCwgdGhlIGNvZGUgaW5jb3JyZWN0bHkgZ29lcyB0byBgX19za2JfcXVldWVfdGFpbGAuIFRoaXMgY29tcGxldGVseSBicmVha3MgdGhlIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgbWVjaGFuaXNtIGZvciBVU0IgZGV2aWNlcy4gRnVydGhlcm1vcmUsIHRoZXJlJ3MgYSByZWFsIHBvc3NpYmlsaXR5IG9mIGl0IGNhdXNpbmcgY3Jhc2hlcyBpZiBpdCBhdHRlbXB0cyB0byBkZXJlZmVyZW5jZSBzb21ldGhpbmcgdW5leHBlY3RlZCBvciBpbnZhbGlkLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bC5cblxuV2FpdCwgbG9va2luZyBhdCBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCBhZ2FpbiwgaXQncyBhbHNvIGFjY2Vzc2luZyBgZGV2LVx1MDAzZW1taW8ud2VkYC4gRG9lcyBpdCBoYXZlIGEgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgb3BlcmF0aW5nIG9uIGFuIE1NSU8gZGV2aWNlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQ7IGl0J3MgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8gZ2V0IGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzE4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NTcuMTY3MjE2NTU4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE4Nzg1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRrX3dlZF9kZXZpY2VfYWN0aXZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTAzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTgwMj1tdDc2X2RtYV9hbGxvY19xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjg0NjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtODQ3LVxcdFxcdGlmICgobXRrX3dlZF9nZXRfcnhfY2FwYShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpKSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz04NjE9bXQ3Nl9kbWFfcnhfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjg4MjpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtODgzLVxcdFxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTkwNT1tdDc2X2RtYV9yeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTkyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjkyODpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTI5LVxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExNjc9dm9pZCBtdDc2X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE5ODpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExOTktXFx0XFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEyMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzoxMjAxOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWRfaGlmMikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMjAyLVxcdFxcdG10a193ZWRfZGV2aWNlX2RldGFjaChcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZF9oaWYyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9MTc1PW10NzZfZG1hX3Jlc2V0X3R4X3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtMTc5LVxcdGRldi1cXHUwMDNlcXVldWVfb3BzLVxcdTAwM2VyZXNldF9xKGRldiwgcSwgcmVzZXRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjE4MDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTE4MS1cXHRcXHRtdDc2X3dlZF9kbWFfc2V0dXAoZGV2LCBxLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNTU0PXZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2My1cXHRcXHRtdDc2X2NoZWNrX3N0YShkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE1NjQ6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2NS1cXHRcXHQgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmM9Nzc9dm9pZCBtdDc2X3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21taW8uYy04NS1cXHRpZiAoYWRkcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jOjg2OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jLTg3LVxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Ny1cXHRcXHQvKiBtdDc5MTUgV0Egb25seSBjb3VudHMgV0VEIHBhdGggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU0ODpcXHRcXHRpZiAoaXNfbXQ3OTE1KGRldikgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0OS1cXHRcXHRcXHR3Y2lkLVxcdTAwM2VzdGF0cy50eF9wYWNrZXRzKys7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTYyND1ib29sIG10NzZfY29ubmFjMl9tYWNfZmlsbF90eHMoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTYzNi1cXHQvKiBQUERVIGJhc2VkIHJlcG9ydGluZyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NjM3OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02MzgtXFx0ICAgIEZJRUxEX0dFVChNVF9UWFMwX1RYU19GT1JNQVQsIHR4cykgXFx1MDAzZSAxKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTEyNzI9aW50IG10NzZfY29ubmFjX21jdV9zdGFfd2VkX3VwZGF0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjEyNzc6XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMTI3OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTk9bXQ3OTE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGludCBpZHgsIGludCBuX2Rlc2MsIGludCByaW5nX2Jhc2UpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzoxNDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtMTUtXFx0XFx0aWYgKGlzX210Nzk4eChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTQxPXN0YXRpYyB2b2lkIG10NzkxNV9kbWFfY29uZmlnKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo4NzpcXHRcXHRpZiAoaXNfbXQ3OTE2KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTg4LVxcdFxcdFxcdFJYUV9DT05GSUcoTVRfUlhRX01BSU4sIFdGRE1BMCwgTVRfSU5UX1dFRF9SWF9ET05FX0JBTkQwX01UNzkxNixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTI1NT1pbnQgbXQ3OTE1X2RtYV9zdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHJlc2V0LCBib29sIHdlZF9yZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTMwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzozMDk6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNiB3ZWRfcmVzZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0zMTAtXFx0XFx0dTMyIHdlZF9pcnFfbWFzayA9IGlycV9tYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM9NDA4PWludCBtdDc5MTVfZG1hX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NDI0OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTQyNS1cXHRcXHRpZiAoIWlzX210Nzk4eChtZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDkzLVxcdC8qIGV2ZW50IGZyb20gV0EgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0OTQ6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2IGlzX210NzkxNShtZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTQ5NS1cXHRcXHR3YV9yeF9iYXNlID0gTVRfV0VEX1JYX1JJTkdfQkFTRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUxMC1cXHRpZiAoIWRldi1cXHUwMDNlcGh5Lm10NzYtXFx1MDAzZWJhbmRfaWR4KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NTExOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUxMi1cXHRcXHQgICAgbXRrX3dlZF9nZXRfcnhfY2FwYShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NTMzOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUzNC1cXHRcXHRcXHRtZGV2LVxcdTAwM2VxX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX1dFRF9RX1RYRlJFRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTU0OS1cXHRpZiAoZGV2LVxcdTAwM2VkYmRjX3N1cHBvcnQgfHwgZGV2LVxcdTAwM2VwaHkubXQ3Ni1cXHUwMDNlYmFuZF9pZHgpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo1NTA6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNTUxLVxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTU5MD1pbnQgbXQ3OTE1X2RtYV9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjYxMzpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNjE0LVxcdFxcdG10a193ZWRfZGV2aWNlX2RtYV9yZXNldCh3ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjY0MTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTY0Mi1cXHRcXHRtdDc2X3JtdyhkZXYsIE1UX1dGRE1BMF9FWFQwX0NGRywgTVRfV0ZETUEwX0VYVDBfUlhXQl9LRUVQLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM1OD1tdDc5MTVfaW5pdF93aXBoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzcxOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzcyLVxcdFxcdGh3LVxcdTAwM2VuZXRkZXZfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19UQztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz00ODQ9bXQ3OTE1X21hY19pbml0X2JhbmQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NDktXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU1MDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NTEtXFx0XFx0bXQ3Nl9zZXQoZGV2LCBNVF9BR0dfQUNSNChiYW5kKSwgTVRfQUdHX0FDUl9QUERVX1RYUzJIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTg2Nz1tdDc5MTVfbWFjX3R4X2ZyZWUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTkxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzo5MTQ6XFx0XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNiB3Y2lkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtOTE1LVxcdFxcdFxcdHUzMiB0eF9yZXRyaWVzID0gMCwgdHhfZmFpbGVkID0gMCwgY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDczPXZvaWQgbXQ3OTE1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE1MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTUzNDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE1MzUtXFx0XFx0bXRrX3dlZF9kZXZpY2Vfc3RvcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xMTU3PXN0YXRpYyB2b2lkIG10NzkxNV9zdGFfc3RhdGlzdGljcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xMTg5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxMTkwOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNnBoeS1cXHUwMDNlZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xMTkxLVxcdFxcdHNpbmZvLVxcdTAwM2V0eF9ieXRlcyA9IG1zdGEtXFx1MDAzZXdjaWQuc3RhdHMudHhfYnl0ZXM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTcyMz1tdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MzU6XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTczNi1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzODQ9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDE4OlxcdGlmICgobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxOS1cXHQgICAgIGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQzNjpcXHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfcmVkKGRldiwgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz03OTM9dm9pZCBtdDc5MTVfZHVhbF9oaWZfc2V0X2lycV9tYXNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODA1LVxcdGlmICh3cml0ZV9yZWcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6ODA2OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODA3LVxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4MzI6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTgzMy1cXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2sod2VkLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz04OTY9aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjkwMTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTkwMi1cXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2sod2VkLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xOTItZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTM6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE5NC1cXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI3Mi1mcmVlX2RldmljZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjczOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjc0LVxcdFxcdG10a193ZWRfZGV2aWNlX2RldGFjaChcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9MTA9aW50IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBpbnQgaWR4LCBpbnQgbl9kZXNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTY6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTctXFx0XFx0cmluZ19iYXNlICs9IE1UX1RYUV9JRCgwKSAqIE1UX1JJTkdfU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTMwNj12b2lkIG10Nzk5Nl9kbWFfc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCByZXNldCwgYm9vbCB3ZWRfcmVzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zMTYtXFx0aWYgKCFyZXNldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjMxNzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTMxOC1cXHRcXHRcXHRtdDc2X3NldChkZXYsIE1UX1dGRE1BMF9HTE9fQ0ZHLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjM1NDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgd2VkX3Jlc2V0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzU1LVxcdFxcdHUzMiB3ZWRfaXJxX21hc2sgPSBpcnFfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTM3ND1zdGF0aWMgdm9pZCBtdDc5OTZfZG1hX2VuYWJsZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHJlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTAyLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjUwMzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTA0LVxcdFxcdCAgICBtdDc5OTZfaGFzX2h3cnJvKGRldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTUyMT1pbnQgbXQ3OTk2X2RtYV9ycm9faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTI5LVxcdFxcdG1kZXYtXFx1MDAzZXFfcnhbTVRfUlhRX1JST19SWERNQURfQ10uZmxhZ3MgPSBNVF9XRURfUlJPX1FfUlhETUFEX0M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTMwOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01MzEtXFx0XFx0XFx0bWRldi1cXHUwMDNlcV9yeFtNVF9SWFFfUlJPX1JYRE1BRF9DXS53ZWQgPSBcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTQyOlxcdFxcdGlmICghbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NDMtXFx0XFx0XFx0LyogV2UgbmVlZCB0byBzZXQgY3B1IGlkeCBwb2ludGVyIGJlZm9yZSByZXNldHRpbmcgdGhlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NTYtXFx0bWRldi1cXHUwMDNlcV9yeFtNVF9SWFFfUlJPX0lORF0uZmxhZ3MgPSBNVF9XRURfUlJPX1FfSU5EO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjU1NzpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NTgtXFx0ICAgIG10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU2OS1cXHRcXHRNVF9XRURfUlJPX1FfTVNEVV9QRygwKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTcwOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU3MS1cXHQgICAgbXRrX3dlZF9nZXRfcnhfY2FwYShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTg2LVxcdFxcdFxcdE1UX1dFRF9SUk9fUV9NU0RVX1BHKDEpIHwgTVRfUUZMQUdfV0VEX1JST19FTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1ODc6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTg4LVxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDQtXFx0XFx0XFx0TVRfV0VEX1JST19RX01TRFVfUEcoMikgfCBNVF9RRkxBR19XRURfUlJPX0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjYwNTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDYtXFx0XFx0ICAgIG10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTYyMj12b2lkIG10Nzk5Nl9kbWFfcnJvX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NjI2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MjctXFx0XFx0aXJxX21hc2sgPSBkZXYtXFx1MDAzZW10NzYubW1pby5pcnFtYXNrIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTY2ND1pbnQgbXQ3OTk2X2RtYV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03MzktXFx0LyogcnggZGF0YSBxdWV1ZSBmb3IgYmFuZDAgYW5kIG10Nzk5NiBiYW5kMSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjc0MDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzQxLVxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9NQUlOXS5mbGFncyA9IE1UX1dFRF9RX1JYKDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzUzLVxcdC8qIHR4IGZyZWUgbm90aWZ5IGV2ZW50IGZyb20gV0EgZm9yIGJhbmQwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzU0OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc1NS1cXHQgICAgKChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgIW10Nzk5Nl9oYXNfaHdycm8oZGV2KSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc3Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjc3MzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03NzQtXFx0XFx0XFx0ZGV2LVxcdTAwM2VtdDc2LnFfcnhbTVRfUlhRX1RYRlJFRV9CQU5EMF0uZmxhZ3MgPSBNVF9XRURfUV9UWEZSRUU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03ODYtXFx0aWYgKCFtdDc5OTZfaGFzX3dhKGRldikgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VoaWYyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6Nzg3OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc4OC1cXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfVFhGUkVFX0JBTkQxXS5mbGFncyA9IE1UX1dFRF9RX1RYRlJFRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgxMy1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4MTQ6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWRfaGlmMikgXFx1MDAyNlxcdTAwMjYgIW10Nzk5Nl9oYXNfaHdycm8oZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgxNS1cXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDJfV0FdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODI4LVxcdFxcdHJ4X2Jhc2UgPSBNVF9SWFFfUklOR19CQVNFKE1UX1JYUV9CQU5EMSkgKyBoaWYxX29mcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4Mjk6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgzMC1cXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDFdLmZsYWdzID0gTVRfV0VEX1FfUlgoMSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NDQtXFx0XFx0XFx0cnhfYmFzZSA9IE1UX1JYUV9SSU5HX0JBU0UoTVRfUlhRX0JBTkQxX1dBKSArIGhpZjFfb2ZzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjg0NTpcXHRcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZF9oaWYyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg0Ni1cXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDFfV0FdLmZsYWdzID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg2NC1cXHRcXHRcXHRNVF9XRURfUlJPX1FfREFUQSgwKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODY1OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODY2LVxcdFxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9SUk9fQkFORDBdLndlZCA9IHdlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg3Ny1cXHRcXHRcXHRcXHRNVF9XRURfUlJPX1FfREFUQSgxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODc4OlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg3OS1cXHRcXHRcXHQgICAgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODg5LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODkwOlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg5MS1cXHRcXHRcXHRcXHQvKiB0eCBmcmVlIG5vdGlmeSBldmVudCBmcm9tIFdBIGZvciBiYW5kMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTEzLVxcdFxcdFxcdFxcdE1UX1dFRF9SUk9fUV9EQVRBKDEpIHwgTVRfUUZMQUdfV0VEX1JST19FTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo5MTQ6XFx0XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTE1LVxcdFxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05MjgtXFx0XFx0XFx0LyogdHggZnJlZSBub3RpZnkgZXZlbnQgZnJvbSBNQUMgZm9yIGJhbmQyICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTI5OlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkX2hpZjIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTMwLVxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDJdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9OTYwPXZvaWQgbXQ3OTk2X2RtYV9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTk0LVxcdGlmIChtdDc5OTZfaGFzX2h3cnJvKGRldikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo5OTU6XFx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTk2LVxcdFxcdG10Nzk5Nl9ycm9fbXNkdV9wYWdlX21hcF9mcmVlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEwMDI6XFx0aWYgKGRldi1cXHUwMDNlaGlmMiBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDAzLVxcdFxcdG10a193ZWRfZGV2aWNlX2RtYV9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTAwNTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMDYtXFx0XFx0bXRrX3dlZF9kZXZpY2VfZG1hX3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTAyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzoxMDI3OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDI4LVxcdFxcdFxcdGlmIChtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwNDAtXFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzoxMDQxOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjYgZm9yY2UgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDQyLVxcdFxcdCAgICAobXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2luZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pIHx8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9NDc4PW10Nzk5Nl9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00OTItXFx0aHctXFx1MDAzZW5ldGRldl9mZWF0dXJlcyA9IE5FVElGX0ZfUlhDU1VNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo0OTM6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIHx8IG10NzZfbnB1X2RldmljZV9hY3RpdmUobWRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5NC1cXHRcXHRody1cXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVEM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9NjgyPXN0YXRpYyBpbnQgbXQ3OTk2X3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBlbnVtIG10NzZfYmFuZF9pZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NzYwOlxcdGlmICh3ZWQgPT0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc2MS1cXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTgyNT1zdGF0aWMgdm9pZCBtdDc5OTZfcnJvX2h3X2luaXRfdjMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzMtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4MzQ6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzUtXFx0XFx0d2VkLVxcdTAwM2V3bGFuLmluZF9jbWQud2luX3NpemUgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ5OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODUwLVxcdFxcdG10NzZfd3IoZGV2LCBNVF9SUk9fSU5EX0NNRF9TSUdOQVRVUkVfQkFTRTAsIDB4MTUwMTBlMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTg2OD12b2lkIG10Nzk5Nl9ycm9faHdfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg4Ny1cXHRcXHRcXHRcXHQgTVRfUlJPXzNfMV9HTE9CQUxfQ09ORklHX1JYRE1BRF9TRUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4ODg6XFx0XFx0XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODg5LVxcdFxcdFxcdCAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTgtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo5OTk6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDAwLVxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTAyMzpcXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDI0LVxcdCAgICBkZXYtXFx1MDAzZW10NzYuaHdycm9fbW9kZSA9PSBNVDc2X0hXUlJPX1YzXzEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzk4PXZvaWQgbXQ3OTk2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTgxMS1cXHRpZiAobXQ3OTk2X2hhc19od3JybyhkZXYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE4MTI6XFx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE4MTMtXFx0XFx0bXQ3OTk2X3Jyb19tc2R1X3BhZ2VfbWFwX2ZyZWUoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTE0MDY9bXQ3OTk2X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTQzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxNDQwOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjYgd2NpZC1cXHUwMDNlc3RhKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTQ0MS1cXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MTYyMD12b2lkIG10Nzk5Nl9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjM4LVxcdGNhc2UgUEtUX1RZUEVfVFhSWF9OT1RJRlk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MTYzOTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjQwLVxcdFxcdCAgICBxID09IE1UX1JYUV9UWEZSRUVfQkFORDIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTIyMjA9bXQ3OTk2X21hY19yZXN0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjQ4LVxcdG10NzZfZm9yX2VhY2hfcV9yeChtZGV2LCBpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjI0OTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI1MC1cXHRcXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFxcdTAwMjZtZGV2LVxcdTAwM2VxX3J4W2ldKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyNjQtXFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KG1kZXYsIGkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyMjY1OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjY2LVxcdFxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8oXFx1MDAyNm1kZXYtXFx1MDAzZXFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyMjk2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjk3LVxcdCAgICBtdDc5OTZfaGFzX2h3cnJvKGRldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIzMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjMxNTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMzE2LVxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlRfUENJRTFfTUFTS19DU1IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDUxPXZvaWQgbXQ3OTk2X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5My1cXHRcXHRtdGtfd2VkX2RldmljZV9zdG9wKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDk1OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Ni1cXHRcXHRtdGtfd2VkX2RldmljZV9zdG9wKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjUxNC1cXHRtdDc2X2Zvcl9lYWNoX3FfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgaSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1MTU6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MTYtXFx0XFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTUzOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTU0LVxcdFxcdHUzMiB3ZWRfaXJxX21hc2sgPSBNVF9JTlRfVFhfRE9ORV9CQU5EMiB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1NjQ6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU2NS1cXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU3Ni1cXHRtdDc2X2Zvcl9lYWNoX3FfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgaSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1Nzc6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NzgtXFx0XFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjkwMT12b2lkIG10Nzk5Nl9tYWNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTE4LVxcdFxcdG10Nzk5Nl9tY3VfZ2V0X2FsbF9zdGFfaW5mbyhwaHksIFVOSV9BTExfU1RBX1RYUlhfUkFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjkxOTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZwaHktXFx1MDAzZWRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTIwLVxcdFxcdFxcdG10Nzk5Nl9tY3VfZ2V0X2FsbF9zdGFfaW5mbyhwaHksIFVOSV9BTExfU1RBX1RYUlhfQURNX1NUQVQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jPTE4NjE9c3RhdGljIHZvaWQgbXQ3OTk2X3N0YV9zdGF0aXN0aWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTE5MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjE5MDI6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0xOTAzLVxcdFxcdHNpbmZvLVxcdTAwM2V0eF9ieXRlcyA9IG1zdGFfbGluay1cXHUwMDNld2NpZC5zdGF0cy50eF9ieXRlcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQwOTpcXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTAtXFx0ICAgICFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTUtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDE2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNy1cXHRcXHRwYXRoLVxcdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cXHUwMDNld2RtYV9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9Njc5PXZvaWQgbXQ3OTk2X2R1YWxfaGlmX3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHdyaXRlX3JlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTAtXFx0aWYgKHdyaXRlX3JlZykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo2OTE6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTY5Mi1cXHRcXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIG1kZXYtXFx1MDAzZW1taW8uaXJxbWFzayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjY5NDpcXHRcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZF9oaWYyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTUtXFx0XFx0XFx0XFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZF9oaWYyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTcyNT1zdGF0aWMgdm9pZCBtdDc5OTZfaXJxX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTczMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6NzMyOlxcdGlmIChkZXYtXFx1MDAzZWhpZjIgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZF9oaWYyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03MzMtXFx0XFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKHdlZF9oaWYyLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjc0NjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNzQ3LVxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTc5Mj1pcnFyZXR1cm5fdCBtdDc5OTZfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6Nzk2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc5Ny1cXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtODAxLVxcdGlmIChkZXYtXFx1MDAzZWhpZjIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6ODAyOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtODAzLVxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9OTk9c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjA1LVxcdGlmIChkZXYtXFx1MDAzZWhpZjIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzoyMDY6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIwNy1cXHRcXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIxNS1mcmVlX3dlZF9vcl9pcnFfdmVjdG9yOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjIxNjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIxNy1cXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9MTIyPW10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtMTM5LVxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkUpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzoxNDA6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtMTQxLVxcdFxcdCAgICAoKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUCkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz04NjA9aW50IG10NzZfdG9rZW5fY29uc3VtZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqKnB0eHdpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg3OC0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg3OTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04ODAtXFx0ICAgIHRva2VuIFxcdTAwM2U9IGRldi1cXHUwMDNlbW1pby53ZWQud2xhbi50b2tlbl9zdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz05MTI9bXQ3Nl90b2tlbl9yZWxlYXNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgdG9rZW4sIGJvb2wgKndha2UpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6OTI5OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTkzMC1cXHRcXHQgICAgdG9rZW4gXFx1MDAzZT0gZGV2LVxcdTAwM2VtbWlvLndlZC53bGFuLnRva2VuX3N0YXJ0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTkzPWludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBib29sIHJlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xMDEtXFx0ZmxhZ3MgPSBxLVxcdTAwM2VmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjEwMjpcXHRpZiAoIXEtXFx1MDAzZXdlZCB8fCAhbXRrX3dlZF9kZXZpY2VfYWN0aXZlKHEtXFx1MDAzZXdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xMDMtXFx0XFx0cS1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfk1UX1FGTEFHX1dFRDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9MTgzPWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NTcuMjY5MTAxODk5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTc2MTMwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIHZhcmlhYmxlIGlzIGRlZmluZWQuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCdzIGxpa2VseSByZXNpZGluZyB3aXRoaW4gdGhlIGBpbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmhgIGhlYWRlciBmaWxlLiBJdCBzZWVtcyBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0aW5nIGEgTWVkaWFUZWsgV2lkZWJhbmQgRWNobyBDYW5jZWxsYXRpb24gKFdFRCkgY29udGV4dC4gVGltZSB0byBjb25maXJtIHRoaXMgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnlpbmcgdGhlIGRlZmluaXRpb24ncyBsb2NhdGlvbiBhbmQgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5ODUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMDowMi41NjY3MTc0NjdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjQzODMzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdGtfd2VkX2RldmljZV9hY3RpdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oPTI2ND1zdGF0aWMgaW5saW5lIGJvb2wgbXRrX3dlZF9pc19hbXNkdV9zdXBwb3J0ZWQoc3RydWN0IG10a193ZWRfZGV2aWNlICpkZXYpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmgtMjczLSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmg6Mjc0OiNkZWZpbmUgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKF9kZXYpICEhKF9kZXYpLVxcdTAwM2VvcHNcXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmgtMjc1LSNkZWZpbmUgbXRrX3dlZF9kZXZpY2VfZGV0YWNoKF9kZXYpIChfZGV2KS1cXHUwMDNlb3BzLVxcdTAwM2VkZXRhY2goX2RldilcXG4tLVxcbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaC0zMDgtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmg6MzA5OnN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2RldmljZV9hY3RpdmUoc3RydWN0IG10a193ZWRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oLTMxMC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjAyLjk4OTE2MjMyNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODM0ODExMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCByZWFsbHkganVzdCBkb2VzIGEgc2ltcGxlIGNoZWNrOiBgISEoX2RldiktXHUwMDNlb3BzYC4gIE5vdGhpbmcgdG9vIGNvbXBsZXggdGhlcmUuIEJ1dCwgaG9sZCBvbi4uLiBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBVU0IgZGV2aWNlLCBgZGV2LVx1MDAzZW1taW9gIGlzbid0IGFjdHVhbGx5IHZhbGlkLiBUaGF0J3MgYSBrZXkgcG9pbnQuIFRoaXMgbWVhbnMgYGRldi1cdTAwM2VtbWlvLndlZC5vcHNgIGlzIGdvaW5nIHRvIGJlIHJlYWRpbmcgZ2FyYmFnZSBkaXJlY3RseSBmcm9tIGBkZXYtXHUwMDNldXNiYC4gQW5kIHRoYXQgKmNvdWxkKiByZXN1bHQgaW4gYSBub24tTlVMTCB2YWx1ZSwgd2hpY2ggd291bGQgYmUgcHJvYmxlbWF0aWMuXG5cblJpZ2h0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZGV2LVx1MDAzZW1taW8ud2VkYCBpcyBhdCBzb21lIGZpeGVkIG9mZnNldCB3aXRoaW4gYGRldi1cdTAwM2VtbWlvYC4gIFdoZW4gaXQncyBhIFVTQiBkZXZpY2UsIHRoZSBzeXN0ZW0gdXNlcyBgZGV2LVx1MDAzZXVzYmAgaW5zdGVhZCBvZiBgZGV2LVx1MDAzZW1taW9gLiBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHRoZSBkZWZpbml0aW9ucyBmb3IgYHN0cnVjdCBtdDc2X3VzYmAgYW5kIGBzdHJ1Y3QgbXQ3Nl9tbWlvYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhvc2Ugc3RydWN0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk0NDMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6MDkuODIzOTc2MjAyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE0MzY3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG10NzZfdXNiIFxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTY0OT1zdHJ1Y3QgbXQ3Nl9tY3Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjYyLSNkZWZpbmUgTUNVX1JFU1BfVVJCX1NJWkVcXHQxMDI0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjYzOnN0cnVjdCBtdDc2X3VzYiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjY0LVxcdHN0cnVjdCBtdXRleCB1c2JfY3RybF9tdHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjA5Ljk2NTQxNzA2MVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTYxMzIzNjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkRpdmluZyBEZWVwIGludG8gbXQ3NiBTdHJ1Y3R1cmVzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgbXQ3NiBkcml2ZXIgaXMgc3RydWN0dXJlZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbXBhcmluZyB0aGUgYHN0cnVjdCBtdDc2X3VzYmAgYW5kIGBzdHJ1Y3QgbXQ3Nl9tbWlvYCBkZWZpbml0aW9ucy4gQXMgYW4gZXhwZXJ0LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUga2V5IGRpZmZlcmVuY2VzOiBob3cgdGhlIGhhcmR3YXJlIGFjY2VzcyBpcyBoYW5kbGVkLCBpbnRlcnJ1cHQgbWVjaGFuaXNtcywgYW5kIHRoZSBvdmVyYWxsIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93LiBgbXQ3Nl91c2JgIHNob3VsZCBoYXZlIGEgVVNCLXNwZWNpZmljIGRlc2NyaXB0b3IsIGxpa2VseSBmb3IgaGFuZGxpbmcgZW5kcG9pbnRzIGFuZCB0cmFuc2ZlciBidWZmZXJzLiBgbXQ3Nl9tbWlvYCwgb24gdGhlIG90aGVyIGhhbmQsIHdpbGwgcHJvYmFibHkgaGF2ZSByZWdpc3RlciBvZmZzZXRzIGFuZCBwb3NzaWJseSBQQ0kgb3Igb3RoZXIgbWVtb3J5IG1hcHBlZCBJTyBkZXRhaWxzLiBJJ2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGRpZmZlcmVuY2VzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkaXZlcmdlbmNlIG9mIGRlc2lnbi4gVGhpcyBjb21wYXJpc29uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgY29yZSBtdDc2IGZ1bmN0aW9uYWxpdHkgaXMgYWRhcHRlZCBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIGludGVyZmFjZXMuIEknbGwgYmUgbG9va2luZyBmb3Igc2hhcmVkIGVsZW1lbnRzLCBpbmRpY2F0aW5nIGEgY29tbW9uIGNvcmUsIGFuZCBhbHNvIHRoZSBhZGFwdGVyLXNwZWNpZmljIHBhcnRzIHRoYXQgSSdsbCBuZWVkIHRvIGlzb2xhdGUgaWYgSSdtIHBsYW5uaW5nIHRvIHdvcmsgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTc2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6MTYuNTI2NzQ0NjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MzpcXHRzdHJ1Y3QgbXQ3Nl91c2Ige1xcbiA2NjQ6XFx0XFx0c3RydWN0IG11dGV4IHVzYl9jdHJsX210eDtcXG4gNjY1OlxcdFxcdHU4ICpkYXRhO1xcbiA2NjY6XFx0XFx0dTE2IGRhdGFfbGVuO1xcbiA2Njc6XFx0XFxuIDY2ODpcXHRcXHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdHVzX3dvcmtlcjtcXG4gNjY5OlxcdFxcdHN0cnVjdCBtdDc2X3dvcmtlciByeF93b3JrZXI7XFxuIDY3MDpcXHRcXG4gNjcxOlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdCBzdGF0X3dvcms7XFxuIDY3MjpcXHRcXG4gNjczOlxcdFxcdHU4IG91dF9lcFtfX01UX0VQX09VVF9NQVhdO1xcbiA2NzQ6XFx0XFx0dTggaW5fZXBbX19NVF9FUF9JTl9NQVhdO1xcbiA2NzU6XFx0XFx0Ym9vbCBzZ19lbjtcXG4gNjc2OlxcdFxcbiA2Nzc6XFx0XFx0c3RydWN0IG10NzZ1X21jdSB7XFxuIDY3ODpcXHRcXHRcXHR1OCAqZGF0YTtcXG4gNjc5OlxcdFxcdFxcdC8qIG11bHRpcGxlIHJlYWRzICovXFxuIDY4MDpcXHRcXHRcXHRzdHJ1Y3QgbXQ3Nl9yZWdfcGFpciAqcnA7XFxuIDY4MTpcXHRcXHRcXHRpbnQgcnBfbGVuO1xcbiA2ODI6XFx0XFx0XFx0dTMyIGJhc2U7XFxuIDY4MzpcXHRcXHR9IG1jdTtcXG4gNjg0OlxcdH07XFxuIDY4NTpcXHRcXG4gNjg2OlxcdCNkZWZpbmUgTVQ3NlNfWE1JVF9CVUZfU1pcXHQweDNmZTAwXFxuIDY4NzpcXHQjZGVmaW5lIE1UNzZTX05VTV9UWF9FTlRSSUVTXFx0MjU2XFxuIDY4ODpcXHQjZGVmaW5lIE1UNzZTX05VTV9SWF9FTlRSSUVTXFx0NTEyXFxuIDY4OTpcXHRzdHJ1Y3QgbXQ3Nl9zZGlvIHtcXG4gNjkwOlxcdFxcdHN0cnVjdCBtdDc2X3dvcmtlciB0eHJ4X3dvcmtlcjtcXG4gNjkxOlxcdFxcdHN0cnVjdCBtdDc2X3dvcmtlciBzdGF0dXNfd29ya2VyO1xcbiA2OTI6XFx0XFx0c3RydWN0IG10NzZfd29ya2VyIG5ldF93b3JrZXI7XFxuIDY5MzpcXHRcXHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdF93b3JrZXI7XFxuIDY5NDpcXHRcXG4gNjk1OlxcdFxcdHU4ICp4bWl0X2J1ZjtcXG4gNjk2OlxcdFxcdHUzMiB4bWl0X2J1Zl9zejtcXG4gNjk3OlxcdFxcbiA2OTg6XFx0XFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcXG4gNjk5OlxcdFxcdHZvaWQgKmludHJfZGF0YTtcXG4gNzAwOlxcdFxcdHU4IGh3X3ZlcjtcXG4gNzAxOlxcdFxcdHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7XFxuIDcwMjpcXHRcXG4gNzAzOlxcdFxcdGludCBwc2VfbWN1X3F1b3RhX21heDtcXG4gNzA0OlxcdFxcdHN0cnVjdCB7XFxuIDcwNTpcXHRcXHRcXHRpbnQgcHNlX2RhdGFfcXVvdGE7XFxuIDcwNjpcXHRcXHRcXHRpbnQgcGxlX2RhdGFfcXVvdGE7XFxuIDcwNzpcXHRcXHRcXHRpbnQgcHNlX21jdV9xdW90YTtcXG4gNzA4OlxcdFxcdFxcdGludCBwc2VfcGFnZV9zaXplO1xcbiA3MDk6XFx0XFx0XFx0aW50IGRlZmljaXQ7XFxuIDcxMDpcXHRcXHR9IHNjaGVkO1xcbiA3MTE6XFx0XFxuIDcxMjpcXHRcXHRpbnQgKCpwYXJzZV9pcnEpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnNfaW50ciAqaW50cik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjE2LjUyNjk3NzkzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNzI0NTE1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHN0cnVjdCBtdDc2X21taW9gKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRpbWUgdG8gZGlzc2VjdCBgc3RydWN0IG10NzZfbW1pb2AuIEkga25vdyBpdCdzIGEgY3JpdGljYWwgc3RydWN0dXJlLCBsaWtlbHkgaG9sZGluZyB0aGUgYmFzZSBhZGRyZXNzZXMgYW5kIHJlbGF0ZWQgcGFyYW1ldGVycyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTWVkaWFUZWsgNzZ4eCBXaUZpIGhhcmR3YXJlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgaGludHMgYWJvdXQgaG93IHRoZSBkcml2ZXIgbWFwcyB0aGUgcGh5c2ljYWwgTU1JTyByZWdpb25zIGludG8gdmlydHVhbCBtZW1vcnksIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgYWRkcmVzcyByZW1hcHBpbmcgaWYgdGhlIGRldmljZSBpc24ndCBpbiBhIGZpeGVkIGxvY2F0aW9uLiBJJ20gaW1tZWRpYXRlbHkgc2Nhbm5pbmcgZm9yIG1lbWJlcnMgdGhhdCBsb29rIGxpa2UgcmVnaXN0ZXIgb2Zmc2V0cywgYW5kIGFsc28gZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IGluZGljYXRlIGJ1cy1zcGVjaWZpYyBjb25maWd1cmF0aW9uLCBtYXliZSBQQ0llIEJBUiBpbmZvcm1hdGlvbiBvciBzb21lIGtpbmQgb2YgSU9NTVUgc2V0dXAgaWYgdGhpcyBpcyB1c2VkLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBvciBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCBhcm91bmQgdGhpcyBzdHJ1Y3QgdG8gZW5zdXJlIHByb3BlciBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGludGVycnVwdCBoYW5kbGVycy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBidWdzKSBhcmUgb2Z0ZW4gZm91bmQuIEZpbmFsbHksIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVmaW5pdGlvbidzIHNpemUgYW5kIGFueSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzOyB0aGF0IGNhbiByZXZlYWwgYSBsb3QgYWJvdXQgdGhlIGFyY2hpdGVjdHVyYWwgYXNzdW1wdGlvbnMgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwMDAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjI0Ljc5OTQzNDQ2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzODMzMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBtdDc2X21taW8gXFxcXHtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9Njg5PXN0cnVjdCBtdDc2X3NkaW8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjcxNTpzdHJ1Y3QgbXQ3Nl9tbWlvIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03MTYtXFx0dm9pZCBfX2lvbWVtICpyZWdzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMDoyNS4wNTMyNzE5MzZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI4OTg5MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBtdDc2X21taW9gIFN0cnVjdHVyZSoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc2X21taW9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGF5b3V0LCBtZW1iZXJzLCBhbmQgcHVycG9zZSBvZiB0aGlzIHN0cnVjdHVyZS4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGV4YWN0IGRlZmluaXRpb24gaXRzZWxmLiBJdCdzIGNydWNpYWwgdG8gaGF2ZSBhIGNvbmNyZXRlIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBzdHJ1Y3R1cmUgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcy4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBpbiBteSBtaW5kIHJlZ2FyZGluZyBob3cgdGhlIHJlZ2lzdGVycyBhcmUgbWFwcGVkLCB0aGUgYml0ZmllbGRzIHVzZWQsIGFuZCBob3cgaXQgYWxsIGhhbmdzIHRvZ2V0aGVyLiBPbmx5IHRoZW4gY2FuIEkgYmUgY29uZmlkZW50IGluIG15IG5leHQgc3RlcHMsIHdoZXRoZXIgSSdtIGRlYnVnZ2luZywgb3B0aW1pemluZywgb3IgcmVmYWN0b3JpbmcgcmVsYXRlZCBjb2RlLiBHcmFiYmluZyB0aGUgZGVmaW5pdGlvbiBpcyB0aGUgb25seSB3YXkgdG8gZG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDQzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6MzMuMzQzMTY2MzJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcxNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDcxNTpcXHRzdHJ1Y3QgbXQ3Nl9tbWlvIHtcXG4gNzE2OlxcdFxcdHZvaWQgX19pb21lbSAqcmVncztcXG4gNzE3OlxcdFxcdHNwaW5sb2NrX3QgaXJxX2xvY2s7XFxuIDcxODpcXHRcXHR1MzIgaXJxbWFzaztcXG4gNzE5OlxcdFxcbiA3MjA6XFx0XFx0c3RydWN0IG10a193ZWRfZGV2aWNlIHdlZDtcXG4gNzIxOlxcdFxcdHN0cnVjdCBtdGtfd2VkX2RldmljZSB3ZWRfaGlmMjtcXG4gNzIyOlxcdFxcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldDtcXG4gNzIzOlxcdFxcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldF9jb21wbGV0ZTtcXG4gNzI0OlxcdFxcbiA3MjU6XFx0XFx0c3RydWN0IGFpcm9oYV9wcGVfZGV2IF9fcmN1ICpwcGVfZGV2O1xcbiA3MjY6XFx0XFx0c3RydWN0IGFpcm9oYV9ucHUgX19yY3UgKm5wdTtcXG4gNzI3OlxcdFxcdHBoeXNfYWRkcl90IHBoeV9hZGRyO1xcbiA3Mjg6XFx0XFx0aW50IG5wdV90eXBlO1xcbiA3Mjk6XFx0fTtcXG4gNzMwOlxcdFxcbiA3MzE6XFx0c3RydWN0IG10NzZfcnhfc3RhdHVzIHtcXG4gNzMyOlxcdFxcdHVuaW9uIHtcXG4gNzMzOlxcdFxcdFxcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQ7XFxuIDczNDpcXHRcXHRcXHR1MTYgd2NpZF9pZHg7XFxuIDczNTpcXHRcXHR9O1xcbiA3MzY6XFx0XFxuIDczNzpcXHRcXHR1MzIgcmVvcmRlcl90aW1lO1xcbiA3Mzg6XFx0XFxuIDczOTpcXHRcXHR1MzIgYW1wZHVfcmVmO1xcbiA3NDA6XFx0XFx0dTMyIHRpbWVzdGFtcDtcXG4gNzQxOlxcdFxcbiA3NDI6XFx0XFx0dTggaXZbNl07XFxuIDc0MzpcXHRcXG4gNzQ0OlxcdFxcdHU4IHBoeV9pZHg6MjtcXG4gNzQ1OlxcdFxcdHU4IGFnZ3I6MTtcXG4gNzQ2OlxcdFxcdHU4IHFvc19jdGw7XFxuIDc0NzpcXHRcXHR1MTYgc2Vxbm87XFxuIDc0ODpcXHRcXG4gNzQ5OlxcdFxcdHUxNiBmcmVxO1xcbiA3NTA6XFx0XFx0dTMyIGZsYWc7XFxuIDc1MTpcXHRcXHR1OCBlbmNfZmxhZ3M7XFxuIDc1MjpcXHRcXHR1OCBlbmNvZGluZzozLCBidzo0O1xcbiA3NTM6XFx0XFx0dW5pb24ge1xcbiA3NTQ6XFx0XFx0XFx0c3RydWN0IHtcXG4gNzU1OlxcdFxcdFxcdFxcdHU4IGhlX3J1OjM7XFxuIDc1NjpcXHRcXHRcXHRcXHR1OCBoZV9naToyO1xcbiA3NTc6XFx0XFx0XFx0XFx0dTggaGVfZGNtOjE7XFxuIDc1ODpcXHRcXHRcXHR9O1xcbiA3NTk6XFx0XFx0XFx0c3RydWN0IHtcXG4gNzYwOlxcdFxcdFxcdFxcdHU4IHJ1OjQ7XFxuIDc2MTpcXHRcXHRcXHRcXHR1OCBnaToyO1xcbiA3NjI6XFx0XFx0XFx0fSBlaHQ7XFxuIDc2MzpcXHRcXHR9O1xcbiA3NjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjMzLjM0MzMzOTY5WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjg4OTkxMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSWCBBZ2dyZWdhdGlvbiBCdWcgaW4gbXQ3NioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZgIGNvZGUgYW5kIEkgdGhpbmsgSSd2ZSBzcG90dGVkIGEgZnVuY3Rpb25hbCBidWcuIEl0IGxvb2tzIGxpa2UgdGhlIGxheW91dCBvZiB0aGUgYG10NzZfbW1pb2AgYW5kIGBtdDc2X3VzYmAgc3RydWN0cyBhcmUgb3ZlcmxhcHBpbmcsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgYHdlZGAgbWVtYmVyIGluIHRoZSBgbW1pb2Agc3RydWN0IGlzIGF0IG9mZnNldCAxNiAoYXNzdW1pbmcgNjQtYml0IHBvaW50ZXJzKSwgYW5kIGBzdGF0dXNfd29ya2VyYCBpcyBpbiBgbXQ3Nl91c2JgLiBUaGlzIG1lYW5zIHRoZXJlJ3MgYSBtZW1vcnkgb3ZlcmxhcCwgYW5kIHRoZSBgbW1pb2AncyBgbnB1YCBmaWVsZCBpcyBsaWtlbHkgYWxzbyBvdmVybGFwcGluZyB3aXRoIHRoaW5ncyBpbiBgbXQ3Nl91c2JgLCBsaWtlIGBpbl9lcGAgb3IgYG1jdWAuIFRoZSBwcm9ibGVtIGFyaXNlcyB3aGVuIHNvbWUgbm9uLXplcm8gdmFsdWVzIGluIHRoZSBVU0Igc2lkZSBvZiB0aGluZ3MgbWFrZSBpdCBsb29rIGxpa2UgdGhlIGBtbWlvYCdzIGBucHVgIGZpZWxkIGlzIGFjdGl2ZSB3aGVuIGl0IHNob3VsZG4ndCBiZS5cblxuQ29uc2VxdWVudGx5LCBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgY2FuIGluY29ycmVjdGx5IHJldHVybiB0cnVlLiBUaGVuIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCB0aGUgY29kZSBlbmRzIHVwIHF1ZXVpbmcgcGFja2V0cyB3aXRoIGBfX3NrYl9xdWV1ZV90YWlsYCBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgdGhlIGFwcHJvcHJpYXRlIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcsIGJyZWFraW5nIHRoZSBVU0IgZGV2aWNlIGJlaGF2aW9yLiBJdCBzZWVtcyB0aGUgcGF0Y2ggZml4ZXMgdGhpcyBieSBjaGVja2luZyBgbXQ3Nl9pc19tbWlvKGRldilgICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgYWN0dWFsbHkgYWN0aXZlIHdpdGhpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0aGlua2luZyBhYm91dCB0aGUgY29tcGxldGUgcGljdHVyZSBoZXJlLiAgSSB3b25kZXIgaWYgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgaGFzIHRoZSBzYW1lIGJ1Zywgc2luY2UgaXQncyBhbHNvIGNhbGxlZCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYC4gTGV0J3MgY2hlY2sgdGhlIGNvZGUuLi4gYWgsIHllcywgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgKmFsc28qIHNlZW1zIHN1c2NlcHRpYmxlIHRvIHRoZSBvdmVybGFwIGlzc3VlLCBhcyBpdCB1c2VzIHRoZSBzYW1lIGB3ZWRgIGZpZWxkLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgaXQgY2hlY2tzIGAhIShfZGV2KS1cdTAwM2VvcHNgLCB3aGljaCBvZmZlcnMgKnNvbWUqIHByb3RlY3Rpb24uICBJZiBgZGV2LVx1MDAzZW1taW8ud2VkLm9wc2Agb3ZlcmxhcHMgd2l0aCBzb21lIG5vbi16ZXJvIFVTQiBmaWVsZCwgaXQgbWlnaHQgc3RpbGwgcmV0dXJuIHRydWUsIGhvd2V2ZXIgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgaW4gYWRkcmVzc2luZyB0aGlzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlYmFzZS5cblxuU28sIGluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgVVNCIGFuZCBTRElPIGRldmljZXMsIGFkZGluZyBhIGNoZWNrIGZvciBgbXQ3Nl9pc19tbWlvYCBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gTm93LCBJIHJlYWxseSB0aGluayB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGNhdWdodCBhbmQgaGFuZGxlZC5cblxuRm9jdXNpbmcgaW4sIEknbSB0aGlua2luZyBvZiBsb29raW5nIGF0IGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAsIGFuZCBhbHNvIGBtdDc2X2RtYV9yeF9jbGVhbnVwYCBhbmQgYG10NzZfZG1hX3J4X3Jlc2V0YC4gV2FpdCwgYG10NzZfZG1hX3J4X2NsZWFudXBgIGlzIG9ubHkgZm9yIERNQSBkZXZpY2VzLCBzbyB0aGF0J3Mgbm90IHJlbGV2YW50IGhlcmUgc2luY2Ugd2UncmUgZml4aW5nIGEgYnVnIGluIHRoZSBjb2RlIHRoYXQncyBzaGFyZWQgYmV0d2VlbiBib3RoIGRldmljZSB0eXBlcywgbGlrZSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4gSSB3YW50IHRvIGNoZWNrIHdoZXJlIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBpcyB1c2VkLCBhbHNvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjMxNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjQ0LjYzMjMzMzc5MVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MTE4Nzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcHBlX2RldmljZV9hY3RpdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTczNz1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc0MjpzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6NDQuNzY4NDU2NTJaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3MDk0NTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVudXNlZCBWYXJpYWJsZSBpbiBtdDc2KipcblxuT2theSwgc28gYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLi4uIHRoYXQncyBhIGJpdCBvZGQuIEknbSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgYG10NzZgIGRyaXZlciwgYW5kIHRoYXQgbmFtZSBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBpbml0aWFsIHN1c3BpY2lvbiBpcyB0aGF0IGl0IG1pZ2h0IGJlIHVudXNlZCwgb3IsIGF0IGJlc3QsIHVuZGVydXRpbGl6ZWQuIFRoZSBjb2RlIGlzIHVzdWFsbHkgd2VsbC1vcmdhbml6ZWQsIHNvIGZpbmRpbmcgc29tZXRoaW5nIGxpa2UgdGhpcyBpcyB1bnVzdWFsLlxuXG5MZXQncyBjb25maXJtIHRoaXMgYnkgc2VhcmNoaW5nIHRoZSBlbnRpcmUgc291cmNlIHRyZWUgZm9yIHRoZSB2YXJpYWJsZSBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIFdlIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBjb25jbHVkaW5nIGFueXRoaW5nLiBJdCdzIHBvc3NpYmxlIGl0J3MgdXNlZCBpbiBzb21lIG9ic2N1cmUgY29ybmVyIG9mIHRoZSBjb2RlYmFzZSwgb3IgbWF5YmUgaXQncyB1c2VkIGNvbmRpdGlvbmFsbHksIGFuZCBJIG1pc3NlZCBpdCBwcmV2aW91c2x5LiBBIGNvbXByZWhlbnNpdmUgc2VhcmNoIHdpbGwgZ2l2ZSB1cyB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDE3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6NDguNDM5NDA1ODE0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQxMjcwNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcHBlX2RldmljZV9hY3RpdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3Mzc9c3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDI6c3RhdGljIGlubGluZSBib29sIG10NzZfcHBlX2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjUwLjg4MDcxNDY4NFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ4OTMzMTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGUgYW5kIEkgc2VlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYC4uLmFuZCBpdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHdoZXJlIGl0J3MgYmVpbmcgKmRpcmVjdGx5KiBjYWxsZWQuIEhtbSwgY291bGQgaXQgYmUgcGFydCBvZiBhIGxhcmdlciBwYXRjaCwgb3IgaXMgaXQgcGVyaGFwcyBqdXN0IGEgdXRpbGl0eSBmdW5jdGlvbj8gTmVlZCB0byBkaWcgZGVlcGVyLlxuXG5MZXQncyBzZWXigKYgSSBrbm93IGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCAqaXMqIHVzZWQgaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIGBtdDc2X25wdV9jaGVja19wcGVgLCBhbmQgYG10NzZfbnB1X25ldF9zZXR1cF90Y2AuIEludGVyZXN0aW5nLiBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgYG10NzZfbnB1X2NoZWNrX3BwZWAgaXMgc29tZXRpbWVzIGludm9rZWQgZnJvbSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXTigKYgbm9wZSwgbGV04oCZcyBkb3VibGUtY2hlY2sgaG93IGBtdDc2X25wdV9jaGVja19wcGVgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuIFRoYXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDQ0MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMDo1NS42Mjk2NTI1ODVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDA5ODkyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X25wdV9jaGVja19wcGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTY0OD1pbnQgbXQ3Nl90ZXN0bW9kZV9hbGxvY19za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHUzMiBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY1MC0jaWZkZWYgQ09ORklHX01UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTY1MTp2b2lkIG10NzZfbnB1X2NoZWNrX3BwZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjUyLVxcdFxcdFxcdHUzMiBpbmZvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE2Njc9aW50IG10NzZfbnB1X3NlbmRfdHhyeF9hZGRyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgaWZpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NzAtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNjcxOnN0YXRpYyBpbmxpbmUgdm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY3Mi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTQxMT1tdDc5OTZfbWFjX2ZpbGxfcngoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtNjgzLVxcdFxcdFxcdFxcdCAgICAgKmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjY4NDpcXHRcXHRtdDc2X25wdV9jaGVja19wcGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgc2tiLCAqaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtNjg1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM9NjI9c3RhdGljIHN0cnVjdCBza19idWZmICptdDc2X25wdV9kZXF1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxMTY6dm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xMTctXFx0XFx0XFx0dTMyIGluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTE0MS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxNDI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9ucHVfY2hlY2tfcHBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTE0My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6NTUuODUzNzU1MTY3WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NzAxMjI3OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3NiBOUFUgRGV2aWNlIEFjdGl2ZSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTk2X21hY19maWxsX3J4YCBmdW5jdGlvbiwgYW5kIGl0IGNhbGxzIGBtdDc2X25wdV9jaGVja19wcGVgLiBJIGtub3cgYG10Nzk5NmAgaXMgUENJZS1vbmx5LCBzbyB0aGUgb25seSBwbGFjZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgZ2V0cyBjYWxsZWQgZm9yIFVTQi9TRElPIGRldmljZXMgaXMgd2l0aGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBMZXQgbWUgY2lyY2xlIGJhY2sgdG8gdGhhdCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBmdW5jdGlvbi4gUmlnaHQsIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAgYW5kIGBtdDc2c19wcm9jZXNzX3J4X3F1ZXVlYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb246XG5cbiogICBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYFxuKiAgIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYFxuKiAgIGBtdDc2c19wcm9jZXNzX3J4X3F1ZXVlYFxuXG5Pa2F5LCBsZXQncyBjb25maXJtIHRoYXQgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaXMgaW5kZWVkIHJlYWNoYWJsZS4gWXVwLCBpdCdzIGluIHRoZSBOQVBJIHBvbGwgbG9vcCBmb3IgVVNCIFJYLiBXaGVuIGEgcGFja2V0IGFycml2ZXMgdmlhIFVTQiwgYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIGdldHMgY2FsbGVkLiBUaGlzIGRlcXVldWVzIFNLQnMgYW5kIHRoZW4gY2FsbHMgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGluY29ycmVjdGx5IHJldHVybnMgdHJ1ZSwgd2UgZW5kIHVwIGNhbGxpbmcgYF9fc2tiX3F1ZXVlX3RhaWxgIGluc3RlYWQgb2YgYG10NzZfcnhfYWdncl9yZW9yZGVyYC4gVGhpcyBtZWFucyB3ZSBieXBhc3MgdGhlIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgbG9naWMuIFRoYXQncyBhIGJhZCB0aGluZy4gSXQgY291bGQgY2F1c2Ugb3V0LW9mLW9yZGVyIHBhY2tldHMgb3IgZXZlbiBtZW1vcnkgbGVha3MgaWYgdGhlIHJlb3JkZXIgYnVmZmVyIGhhcyBkZXBlbmRlbmNpZXMuIEJ5IGZpeGluZyB0aGlzLCBwYWNrZXRzIHdpbGwgZmxvdyB0aHJvdWdoIGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmAgcHJvcGVybHkuXG5cbk5vdywgd2hpY2ggY29uZmlndXJhdGlvbnMgZG8gSSBuZWVkIHRvIGVuYWJsZSB0byB0cmlnZ2VyIHRoaXM/XG5cbkkndmUgZ290OlxuXG4qICAgYE1UNzZfQ09SRWBcbiogICBgTVQ3Nl9VU0JgXG4qICAgYE1UNzZfU0RJT2BcbiogICBgTVQ3OTIxVWBcbiogICBgTVQ3OTI1VWBcbiogICBgTVQ3NngwVWBcbiogICBgTVQ3NngyVWBcbiogICBgTVQ3NjYzVWBcbiogICBgTVQ3NjYzU2BcbiogICBgTVQ3OTIxU2BcblxuTGV0IG1lIHF1aWNrbHkgbGlzdCB0aGVtOlxuXG4qICAgYE1UNzZfQ09SRWBcbiogICBgTVQ3Nl9VU0JgXG4qICAgYE1UNzZfU0RJT2BcbiogICBgTVQ3NngwVWBcbiogICBgTVQ3NngyVWBcbiogICBgTVQ3NjYzVWBcbiogICBgTVQ3NjYzU2BcbiogICBgTVQ3OTIxVWBcbiogICBgTVQ3OTIxU2BcbiogICBgTVQ3OTI1VWBcblxuV2FpdCBhIHNlY29uZCwgdGhlcmUncyBgTVQ3Nl9OUFVgLiBTaG91bGQgSSBhZGQgdGhhdCB0b28/IFRoZSBmaXggYWRkcmVzc2VzIHRoZSBjYXNlIHdoZXJlIGBNVDc2X05QVWAgbWlnaHQgYmUgZW5hYmxlZCAob3IgYSBwb2ludGVyIGlzIGFjY2Vzc2VkKSBidXQgdGhlIGRldmljZSBpc24ndCBNTUlPLiBCdXQgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFjY2Vzc2VzIGBkZXYtXHUwMDNlbW1pby5ucHVgLiBJZiBgTVQ3Nl9OUFVgIGlzbid0IGVuYWJsZWQsIGRvZXMgdGhhdCBtZWFuIGBkZXYtXHUwMDNlbW1pby5ucHVgIGRvZXNuJ3QgZXhpc3Q/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBzdHJ1Y3QgbXQ3Nl9tbWlvYCBkZWZpbml0aW9uLiBSaWdodCwgYHN0cnVjdCBhaXJvaGFfbnB1IF9fcmN1ICpucHU7YCBpcyAqYWx3YXlzKiB0aGVyZSwgaXQncyBub3QgdW5kZXIgYW4gYCNpZmRlZiBDT05GSUdfTVQ3Nl9OUFVgLiBIbW0sIGJ1dCBgTVQ3Nl9OUFVgIG1pZ2h0IHN0aWxsIGJlIG5lZWRlZCB0byBjb21waWxlIGBucHUuY2AuIFRvIGJlIHNhZmUsIGxldCdzIGluY2x1ZGUgYE1UNzZfTlBVYC5cblxuT2theSwgdGhlIHJlZmluZWQgZm9jdXMgc3ltYm9scyBub3cgYmVjb21lOlxuXG4qICAgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWBcbiogICBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWBcbiogICBgbXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZWBcbiogICBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIChiZWNhdXNlIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGdldHMgY2FsbGVkKVxuXG5BbmQgZmluYWxseSwgbGV0J3MgY2hlY2sgYG10NzZfcnhfYWdncl9yZW9yZGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2MjMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDE6MTMuNTU0OTg1NTA5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTY4MjMwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYz05MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6OTE6bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jPTExOT1tdDc2X3J4X2FnZ3JfY2hlY2tfY3RsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6MTQ4OnZvaWQgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM9MjQ0PWludCBtdDc2X3J4X2FnZ3Jfc3RhcnQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsIHU4IHRpZG5vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYy0yNTgtXFx0dGlkLVxcdTAwM2VudW0gPSB0aWRubztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jOjI1OTpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dGlkLVxcdTAwM2VyZW9yZGVyX3dvcmssIG10NzZfcnhfYWdncl9yZW9yZGVyX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMjYwLVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZ0aWQtXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE1NTQ9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY3LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTU2ODpcXHRcXHRcXHRtdDc2X3J4X2FnZ3JfcmVvcmRlcihza2IsIFxcdTAwMjZmcmFtZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3OTU9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzk2LVxcdFxcdFxcdCAgIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc5Nzp2b2lkIG10NzZfcnhfYWdncl9yZW9yZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5OC12b2lkIG10NzZfdGVzdG1vZGVfdHhfcGVuZGluZyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAxOjEzLjg1MTgxNjc3NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMwMDA1MDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJYIEFnZ3JlZ2F0aW9uIEZpeCoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBJJ20gemVyb2luZyBpbiBvbiBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIGFzIHRoZSBjcnVjaWFsIGZvY3VzIHN5bWJvbC4gTGV0J3MgYnJlYWsgZG93biB0aGUgcmVhc29uaW5nLCBiZWNhdXNlIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkLCB3ZWxsLWRlZmluZWQgcHJvYmxlbS5cblxuVGhlIGlzc3VlIHN0ZW1zIGZyb20gYSBzdWJ0bGUgZmxhdyB3aXRoaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIEl0IHNlZW1zIHRoZXNlIGZ1bmN0aW9ucyB3ZXJlLCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIG1pc2lkZW50aWZ5aW5nIG5vbi1NTUlPIGRldmljZXMg4oCTIHNwZWNpZmljYWxseSBVU0IgYW5kIFNESU8gb25lcyDigJMgYXMgYWN0aXZlIE1NSU8gZGV2aWNlcy4gVGhpcyBvY2N1cnMgYmVjYXVzZSB0aGUgZnVuY3Rpb25zIHdlcmUgYWNjZXNzaW5nIGZpZWxkcyB3aXRoaW4gYSB1bmlvbiBzdHJ1Y3R1cmUuIFRoZSBkYXRhIGxheW91dCBvdmVybGFwcGVkIGJldHdlZW4gTU1JTyBhbmQgVVNCL1NESU8gc3BlY2lmaWMgZGF0YSwgbGVhZGluZyB0byB0aGUgaW5jb3JyZWN0IHRydWUgcmV0dXJuLlxuXG5UaGUgcmlwcGxlIGVmZmVjdCBpcyBzaWduaWZpY2FudC4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIHdvdWxkIGNhdXNlIHRoZSBSWCBwYXRoLCB3aXRoaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIHRvIGJ5cGFzcyB0aGUgY3J1Y2lhbCBSWCBhZ2dyZWdhdGlvbiByZW9yZGVyaW5nIHN0ZXAgaW1wbGVtZW50ZWQgaW4gYG10NzZfcnhfYWdncl9yZW9yZGVyYCBmb3IgdGhlc2UgVVNCL1NESU8gZGV2aWNlcy4gVGhhdCdzIGEgZGlyZWN0IHJvdXRlIHRvIHBhY2tldCBsb3NzIGFuZCBvdXQtb2Ytb3JkZXIgZGVsaXZlcnkuIE5vdCBnb29kLCBhbmQgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB5b3UnZCB1bmNvdmVyIHRocm91Z2ggVVNCIGZ1enppbmcuXG5cblRoZSBmaXgsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhbiBgbXQ3Nl9pc19tbWlvKGRldilgIGNoZWNrLiBUaGlzIHNpbXBsZSBhZGRpdGlvbiBpcyBhbGwgdGhhdCdzIG5lZWRlZCB0byBwcm9wZXJseSBpZGVudGlmeSB3aGV0aGVyIGEgZGV2aWNlIGlzLCBpbiBmYWN0LCBhbiBNTUlPIGRldmljZS4gVGhpcyBhdm9pZHMgdGhlIGZhdWx0eSBsb2dpYyBpbiB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGFuZCBlbnN1cmVzIHRoZSBjb3JyZWN0IFJYIHBhdGggaXMgdGFrZW4gZm9yIHRoZSBhZmZlY3RlZCBVU0IvU0RJTyBkZXZpY2VzLCB0aHVzIHJlc3RvcmluZyB0aGUgYWdncmVnYXRpb24gcmVvcmRlcmluZy4gVGhlIHBvdGVudGlhbCBmb3IgdGhpcyB0byBtYW5pZmVzdCB1bmRlciBVU0IgZnV6emluZyBtYWtlcyBpdCBhIHNvbGlkIGZ1bmN0aW9uYWwgZml4LCBhIGdvb2QgY2F0Y2guXG5cbk15IGZvY3VzIHN5bWJvbHMgYXJlOiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgLCBgbXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZWAsIGFuZCBlc3BlY2lhbGx5LCBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgLlxuXG5UaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgc2VlbSB0byBiZTogYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2X1NESU9gLCBhbmQgYW55IG9mIHRoZSBVU0IgZGV2aWNlIGRyaXZlcnMgKCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCBhbmQgYE1UNzY2M1NgLCBgTVQ3OTIxU2ApLlxuXG5Pa2F5LCB3aXRoIHRoYXQgY2xlYXIgaW4gbXkgbWluZCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MjYwLCJPdXRwdXRUb2tlbnMiOjMzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMToyNC4xNTE4NzA3NzRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwNjAwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3Nl9VU0JcIixcbiAgICBcIk1UNzZfU0RJT1wiLFxuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiLFxuICAgIFwiTVQ3NjYzVVwiLFxuICAgIFwiTVQ3NjYzU1wiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTIxU1wiLFxuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3Nl9OUFVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3J4X3BvbGxfY29tcGxldGVcIixcbiAgICBcIm10NzZ1X3Byb2Nlc3NfcnhfcXVldWVcIixcbiAgICBcIm10NzZzX3Byb2Nlc3NfcnhfcXVldWVcIixcbiAgICBcIm10NzZfcnhfYWdncl9yZW9yZGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgd2hlcmUgdGhleSBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gdHJ1ZSBmb3Igbm9uLU1NSU8gZGV2aWNlcyAobGlrZSBVU0Igb3IgU0RJTykgYnkgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIHVuaW9uIHRoYXQgb3ZlcmxhcCB3aXRoIFVTQi9TRElPIHNwZWNpZmljIGRhdGEuIFRoaXMgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSBjYXVzZWQgdGhlIFJYIHBhdGggaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgdG8gYnlwYXNzIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgKGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmApIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBCeSBhZGRpbmcgdGhlIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2ssIHRoZSBjb2RlIGNvcnJlY3RseSBpZGVudGlmaWVzIE1NSU8gZGV2aWNlcyBhbmQgcmVzdG9yZXMgdGhlIHByb3BlciBSWCBwYXRoIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc2X0NPUkVcIixcbiAgICBcIk1UNzZfVVNCXCIsXG4gICAgXCJNVDc2X1NESU9cIixcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzY2M1NcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyMVNcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzZfTlBVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9yeF9wb2xsX2NvbXBsZXRlXCIsXG4gICAgXCJtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlXCIsXG4gICAgXCJtdDc2c19wcm9jZXNzX3J4X3F1ZXVlXCIsXG4gICAgXCJtdDc2X3J4X2FnZ3JfcmVvcmRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgIHdoZXJlIHRoZXkgY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIHRydWUgZm9yIG5vbi1NTUlPIGRldmljZXMgKGxpa2UgVVNCIG9yIFNESU8pIGJ5IGFjY2Vzc2luZyBmaWVsZHMgaW4gYSB1bmlvbiB0aGF0IG92ZXJsYXAgd2l0aCBVU0IvU0RJTyBzcGVjaWZpYyBkYXRhLiBUaGlzIGluY29ycmVjdCByZXR1cm4gdmFsdWUgY2F1c2VkIHRoZSBSWCBwYXRoIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIHRvIGJ5cGFzcyBSWCBhZ2dyZWdhdGlvbiByZW9yZGVyaW5nIChgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgKSBmb3IgVVNCL1NESU8gZGV2aWNlcy4gQnkgYWRkaW5nIHRoZSBgbXQ3Nl9pc19tbWlvKGRldilgIGNoZWNrLCB0aGUgY29kZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBNTUlPIGRldmljZXMgYW5kIHJlc3RvcmVzIHRoZSBwcm9wZXIgUlggcGF0aCBmb3IgVVNCL1NESU8gZGV2aWNlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowh966j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 08:23:03 +0000 UTC FinishedAt: 2026-07-21 09:01:25 +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": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT76_USB", "MT76_SDIO", "MT76x0U", "MT76x2U", "MT7663U", "MT7663S", "MT7921U", "MT7921S", "MT7925U", "MT76_NPU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "b95f03f04d475aa6719d15a636ddf32222d55657", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT76_USB", "MT76_SDIO", "MT76x0U", "MT76x2U", "MT7663U", "MT7663S", "MT7921U", "MT7921S", "MT7925U", "MT76_NPU" ], "series_id": "0d98ea1b-3ad2-48c8-981c-7296369987d8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_rx_poll_complete", "mt76u_process_rx_queue", "mt76s_process_rx_queue", "mt76_rx_aggr_reorder" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc2X1VTQiYjMzQ7LAogICAgJiMzNDtNVDc2X1NESU8mIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3NjYzUyYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc2X05QVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfcnhfcG9sbF9jb21wbGV0ZSYjMzQ7LAogICAgJiMzNDttdDc2dV9wcm9jZXNzX3J4X3F1ZXVlJiMzNDssCiAgICAmIzM0O210NzZzX3Byb2Nlc3NfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgd2hlcmUgdGhleSBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gdHJ1ZSBmb3Igbm9uLU1NSU8gZGV2aWNlcyAobGlrZSBVU0Igb3IgU0RJTykgYnkgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIHVuaW9uIHRoYXQgb3ZlcmxhcCB3aXRoIFVTQi9TRElPIHNwZWNpZmljIGRhdGEuIFRoaXMgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSBjYXVzZWQgdGhlIFJYIHBhdGggaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgdG8gYnlwYXNzIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgKGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmApIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBCeSBhZGRpbmcgdGhlIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2ssIHRoZSBjb2RlIGNvcnJlY3RseSBpZGVudGlmaWVzIE1NSU8gZGV2aWNlcyBhbmQgcmVzdG9yZXMgdGhlIHByb3BlciBSWCBwYXRoIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1ZWM0MTY3MWI2MzIxZGU4NWMyNzUxMjIwOWExNDQzY2JjMjg2NmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAwODo1ODozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG5pbmRleCAwNzk1NTU1NWY4NGQ4My4uYTMyYmE3YzIzZjkyYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbkBAIC0xNzM2LDEyICYjNDM7MTczNiwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGlmaW5kZXgsXG4gXG4gc3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4ge1xuLVx0cmV0dXJuICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2VtbWlvLm5wdSk7XG4mIzQzO1x0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5ucHUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiB7XG4tXHRyZXR1cm4gISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZW1taW8ucHBlX2Rldik7XG4mIzQzO1x0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5wcGVfZGV2KTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc2X1VTQiYjMzQ7LAogICAgJiMzNDtNVDc2X1NESU8mIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3NjYzUyYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyMVMmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc2X05QVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfcnhfcG9sbF9jb21wbGV0ZSYjMzQ7LAogICAgJiMzNDttdDc2dV9wcm9jZXNzX3J4X3F1ZXVlJiMzNDssCiAgICAmIzM0O210NzZzX3Byb2Nlc3NfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgd2hlcmUgdGhleSBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gdHJ1ZSBmb3Igbm9uLU1NSU8gZGV2aWNlcyAobGlrZSBVU0Igb3IgU0RJTykgYnkgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIHVuaW9uIHRoYXQgb3ZlcmxhcCB3aXRoIFVTQi9TRElPIHNwZWNpZmljIGRhdGEuIFRoaXMgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSBjYXVzZWQgdGhlIFJYIHBhdGggaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgdG8gYnlwYXNzIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgKGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmApIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBCeSBhZGRpbmcgdGhlIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2ssIHRoZSBjb2RlIGNvcnJlY3RseSBpZGVudGlmaWVzIE1NSU8gZGV2aWNlcyBhbmQgcmVzdG9yZXMgdGhlIHByb3BlciBSWCBwYXRoIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDVlYzQxNjcxYjYzMjFkZTg1YzI3NTEyMjA5YTE0NDNjYmMyODY2YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDA4OjU4OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaAppbmRleCAwNzk1NTU1NWY4NGQ4My4uYTMyYmE3YzIzZjkyYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCkBAIC0xNzM2LDEyICYjNDM7MTczNiwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGlmaW5kZXgsCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KQogewotCXJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O21taW8ubnB1KTsKJiM0MzsJcmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpICZhbXA7JmFtcDsgISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LSZndDttbWlvLm5wdSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KQogewotCXJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O21taW8ucHBlX2Rldik7CiYjNDM7CXJldHVybiBtdDc2X2lzX21taW8oZGV2KSAmYW1wOyZhbXA7ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7bW1pby5wcGVfZGV2KTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgaW4gYG10NzYuaGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYWRkaW5nIGBtdDc2X2lzX21taW8oZGV2KSAmYW1wOyZhbXA7YCB0byBib3RoIG9mIHRob3NlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTttIHRoaW5raW5nLCBjYW4gd2UgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSBwYXRoIGlmIHRoZSBoYXJkd2FyZSBpcyB2aXJ0dWFsaXplZD8KCmBtdDc2YCBpcyB0aGUgZHJpdmVyIGZvciBNZWRpYVRlayB3aXJlbGVzcyBkZXZpY2VzLCByaWdodD8gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gd2UgZWZmZWN0aXZlbHkgZW11bGF0ZSB0aGF0IHNwZWNpZmljIGhhcmR3YXJlIHdpdGhpbiBRRU1VPyBUeXBpY2FsbHksIHlvdSBjYW4gZ2V0IGF3YXkgd2l0aCBQQ0kgb3IgVVNCIGRldmljZSBlbXVsYXRpb24gb3IgcGFzcy10aHJvdWdoLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3ZSBkb24mIzM5O3QgdXN1YWxseSBmaW5kIE1lZGlhVGVrIHdpcmVsZXNzIGhhcmR3YXJlIHJlYWRpbHkgYXZhaWxhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gVW5sZXNzIHdlJiMzOTtyZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhhdCBhdm9pZHMgYG10NzZgIGVudGlyZWx5LiBBbmQgVVNCIGVtdWxhdGlvbi4uLiB3ZWxsLCBgbXQ3NmAgZG9lcyBoYXZlIFVTQiBkcml2ZXJzLCBsaWtlIHRoZSBgbXQ3NngwdWAsIGBtdDc2eDJ1YCwgb3IgYG10NzkyMXVgIHdoaWNoIHdlIG1pZ2h0IHVzZSwgeWVzLgoKQnV0IGhhbmcgb27igKYgYG10NzZfaXNfbW1pbyhkZXYpYC4uLiB0aGF0JiMzOTtzIGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgTWVtb3J5LU1hcHBlZCBJL08uIFNvLCB0aGlzIGJvaWxzIGRvd24gdG86IEFyZSB3ZSB1c2luZyBhIG1lbW9yeS1tYXBwZWQgSS9PIGFwcHJvYWNoIG9yIG5vdD8gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYG10NzZfaXNfbW1pb2AgaXRzZWxmIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIGFjY3VyYXRlLiBHb3R0YSBsb29rIGF0IHRoYXQgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2lzX21taW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYz0yOT1tdDc2X25hcGlfdGhyZWFkZWRfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzozMzpcdGlmICghbXQ3Nl9pc19tbWlvKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0zNC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz02MTY9aW50IG10NzZfY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTY0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo2NDQ6XHRpZiAobXQ3Nl9pc19tbWlvKGRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02NDUtXHRcdC8qIHJlbHkgb24gcGFnZV9wb29sIGZvciBETUEgbWFwcGluZyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTk1PXN0cnVjdCBtdDc2X2J1c19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTExMC0jZGVmaW5lIG10NzZfaXNfdXNiKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMTojZGVmaW5lIG10NzZfaXNfbW1pbyhkZXYpICgoZGV2KS1cdTAwM2VidXMtXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTEyLSNkZWZpbmUgbXQ3Nl9pc19zZGlvKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTczNz1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTczOTpcdHJldHVybiBtdDc2X2lzX21taW8oZGV2KSBcdTAwMjZcdTAwMjYgISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZW1taW8ubnB1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3NDI9c3RhdGljIGlubGluZSBib29sIG10NzZfcHBlX2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDQ6XHRyZXR1cm4gbXQ3Nl9pc19tbWlvKGRldikgXHUwMDI2XHUwMDI2ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2VtbWlvLnBwZV9kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9MzMwPXN0YXRpYyBpbnQgbXQ3NjE1X21hY19maWxsX3J4KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMzg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MzkwOlx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IChyeGQwIFx1MDAyNiBjc3VtX21hc2spID09IGNzdW1fbWFzayBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTM5MS1cdCAgICAhKGNzdW1fc3RhdHVzIFx1MDAyNiAoQklUKDApIHwgQklUKDIpIHwgQklUKDMpKSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9NzA5PWludCBtdDc2MTVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzYxNV9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTcyMS1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBpbmZvLVx1MDAzZWNvbnRyb2wudmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6NzIyOlx0Ym9vbCBpc19tbWlvID0gbXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTcyMy1cdHUzMiB2YWwsIHN6X3R4ZCA9IGlzX21taW8gPyBNVF9UWERfU0laRSA6IE1UX1VTQl9UWERfU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYz0xMDk0PXZvaWQgbXQ3NjE1X21hY19zZXRfcmF0ZXMoc3RydWN0IG10NzYxNV9waHkgKnBoeSwgc3RydWN0IG10NzYxNV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYy0xMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MTEwNDpcdGlmICghbXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMTEwNS1cdFx0bXQ3NjE1X21hY19xdWV1ZV9yYXRlX3VwZGF0ZShwaHksIHN0YSwgcHJvYmVfcmF0ZSwgcmF0ZXMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYz0zMzU9c3RhdGljIGludCBtdDc2MTVfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgZW51bSBzZXRfa2V5X2NtZCBjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTM5Mi1cdG10NzZfd2NpZF9rZXlfc2V0dXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIGtleSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM6MzkzOlx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMzk0LVx0XHRlcnIgPSBtdDc2MTVfbWFjX3d0Ymxfc2V0X2tleShkZXYsIHdjaWQsIGtleSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz00MTA9bXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjQ5MzpcdGlmIChtdDc2X2lzX21taW8oZGV2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTQtXHRcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEN19UWVBFLCBmY190eXBlKSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUxMy1cdHU4IHBfZm10LCBxX2lkeCwgb21hY19pZHggPSAwLCB3bW1faWR4ID0gMCwgYmFuZF9pZHggPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo1MTQ6XHR1MzIgdmFsLCBzel90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDogTVRfU0RJT19UWERfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTE1LVx0Ym9vbCBpc184MDIzID0gaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUzOS1cdH0gZWxzZSBpZiAocWlkIFx1MDAzZT0gTVRfVFhRX1BTRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo1NDA6XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQxLVx0XHRxX2lkeCA9IE1UX0xNQUNfQUxUWDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Mi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU0MzpcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy01NDQtXHRcdHFfaWR4ID0gd21tX2lkeCAqIE1UNzZfQ09OTkFDX01BWF9XTU1fU0VUUyAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MTI3Mj1pbnQgbXQ3Nl9jb25uYWNfbWN1X3N0YV93ZWRfdXBkYXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0xMjczLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MTI3NDpcdGlmICghbXQ3Nl9pc19tbWlvKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTEyNzUtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjU2Nj1tdDc2X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MjYwNzpcdGlmIChtdDc2X2lzX21taW8oZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwOC1cdFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz0yNjE5PWludCBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBib29sIHN1c3BlbmQsIGJvb2wgd2FpdF9yZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MjY0MzpcdGlmIChtdDc2X2lzX21taW8oZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0NC1cdFx0cmVxLmhkci5oaWZfdHlwZSA9IDI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jPTExPWludCBtdDc2eDBfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21haW4uYy0xNS1cdG10NzZ4MDJfcHJlX3RidHRfZW5hYmxlKGRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jOjE2Olx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMTctXHRcdHRhc2tsZXRfZGlzYWJsZShcdTAwMjZkZXYtXHUwMDNlZGZzX3BkLmRmc190YXNrbGV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmM6MjQ6XHRpZiAobXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jLTI1LVx0XHRtdDc2eDAyX2Rmc19pbml0X3BhcmFtcyhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTBlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg6MzM6XHRpZiAoIW10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTE2OD1tdDc2eDBfcGh5X3JmX2Nzcl93cl9ycChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xNzgtI2RlZmluZSBSRl9SQU5ET01fV1JJVEUoZGV2LCB0YWIpIGRvIHtcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjE3OTpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTgwLVx0XHRtdDc2eDBfcGh5X3JmX2Nzcl93cl9ycChkZXYsIHRhYiwgQVJSQVlfU0laRSh0YWIpKTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM9Njk3PW10NzZ4MF9waHlfZ2V0X2RlbHRhX3Bvd2VyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCB1OCB0eF9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTc0OC1cdFx0ZGF0YSA9IG10NzZfcnIoZGV2LCBNVF9CQlAoQ09SRSwgMSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6NzQ5Olx0XHRpZiAoaXNfbXQ3NjMwKGRldikgXHUwMDI2XHUwMDI2IG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTc1MC1cdFx0XHRpbnQgb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTExMTY9c3RhdGljIHZvaWQgbXQ3NngwX3JmX3BhdGNoX3JlZ19hcnJheShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMTI2LVx0XHRjYXNlIE1UX1JGKDAsIDMpOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6MTEyNzpcdFx0XHRpZiAobXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTEyOC1cdFx0XHRcdGlmIChpc19tdDc2MzAoZGV2KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmM9MTE3PWludCBtdDc2eDAyX21jdV9jYWxpYnJhdGUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGludCB0eXBlLCB1MzIgcGFyYW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21jdS5jLTEyNS1cdH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmM6MTI2Olx0Ym9vbCBpc19tdDc2eDJlID0gbXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgaXNfbXQ3NngyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmMtMTI3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jPTYyMj12b2lkIG10NzZ4MDJfc3RhX3BzKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYyOS1cdG10NzZfc3RvcF90eF9xdWV1ZXMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHN0YSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jOjYzMDpcdGlmIChtdDc2X2lzX21taW8obWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYzMS1cdFx0bXQ3NngwMl9tYWNfd2NpZF9zZXRfZHJvcChkZXYsIGlkeCwgcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yNjQ9aW50IG10NzkyMV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI3MDpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3MS1cdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7eG1pdC1xdWV1ZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTE3MD1pbnQgbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjE4Olx0aWYgKCFtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIxOS1cdFx0aHctXHUwMDNlZXh0cmFfdHhfaGVhZHJvb20gJiM0Mzs9IE1UX1NESU9fVFhEX1NJWkUgJiM0MzsgTVRfU0RJT19IRFJfU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz0xNjk9bXQ3OTIxX21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MjQwOlx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IChyeGQwIFx1MDAyNiBjc3VtX21hc2spID09IGNzdW1fbWFzayBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTI0MS1cdCAgICAhKGNzdW1fc3RhdHVzIFx1MDAyNiAoQklUKDApIHwgQklUKDIpIHwgQklUKDMpKSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTIyNz1pbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjUyLVx0XHRcdFx0ICAgICBNVDc5MnhfV0FUQ0hET0dfVElNRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjUzOlx0aWYgKG10NzZfaXNfbW1pbyhtcGh5LVx1MDAzZWRldikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTQtXHRcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwocGh5LVx1MDAzZWRldiwgRVhUX0NNRF9SQURJT19MRURfQ1RSTF9FTkFCTEUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0yODQ9c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI4OTpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkwLVx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQxMD1zdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQyNjpcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MjctXHRcdHJldCA9IG10NzkyMV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI4OT1pbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjk1Olx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjk2LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt4bWl0LXF1ZXVlc1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjA2PWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNTI6XHRpZiAoIW10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0XHRody1cdTAwM2VleHRyYV90eF9oZWFkcm9vbSAmIzQzOz0gTVRfU0RJT19UWERfU0laRSAmIzQzOyBNVF9TRElPX0hEUl9TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM1OT1tdDc5MjVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy00MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo0MjQ6XHRpZiAobXQ3Nl9pc19tbWlvKFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgKHJ4ZDMgXHUwMDI2IGNzdW1fbWFzaykgPT0gY3N1bV9tYXNrIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNDI1LVx0ICAgICEoY3N1bV9zdGF0dXMgXHUwMDI2IChCSVQoMCkgfCBCSVQoMikgfCBCSVQoMykpKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03MzA9bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzM3LVx0dTggcF9mbXQsIHFfaWR4LCBvbWFjX2lkeCA9IDAsIHdtbV9pZHggPSAwLCBiYW5kX2lkeCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3Mzg6XHR1MzIgdmFsLCBzel90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDogTVRfU0RJT19UWERfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTczOS1cdGJvb2wgaXNfODAyMyA9IGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzYzLVx0fSBlbHNlIGlmIChxaWQgXHUwMDNlPSBNVF9UWFFfUFNEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NjQ6XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc2NS1cdFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzY2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc2NzpcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzY4LVx0XHRxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNjA9bXQ3OTI1X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIwMjpcdGlmIChtdDc2X2lzX21taW8oZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIwMy1cdFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9Nzk4PXN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtODEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6ODE0Olx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTgxNS1cdFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX2VlcHJvbShkZXYsIE1UX0VFX0hXX1RZUEUsIFx1MDAyNmh3X2VuY2FwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODg0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYG10NzZgIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgdG91Y2hlcyBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gTmF0dXJhbGx5LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGBtdDc2YCBmcmFtZXdvcmsuIEp1c3Qga25vd2luZyB0aGV5JiMzOTtyZSBtb2RpZmllZCBpc24mIzM5O3QgZW5vdWdoOyBJIG5lZWQgdGhlIGNhbGxpbmcgY29udGV4dC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgY29uZGl0aW9uYWwgY2hhbmdlLCBvciBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbCB0byB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgbG9naWM/IFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgY2FsbCBwYXRocyBhbmQgc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSBob3cgZGVlcCB0aGlzIHJhYmJpdCBob2xlIGdvZXMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X25wdV9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xOTA9bXQ3Nl9kbWFfc3luY19pZHgoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTkyLVx0aWYgKChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19XRURfUlJPX0VOKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTkzOlx0ICAgICghaXNfbXQ3OTkyKGRldikgfHwgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTE5NC1cdFx0UV9XUklURShxLCByaW5nX3NpemUsIE1UX0RNQV9SUk9fRU4gfCBxLVx1MDAzZW5kZXNjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTY0MD1tdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjYxLVx0LyogVE9ETzogVGFrZSBpbnRvIGFjY291bnQgdW5saW5lYXIgc2ticyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2NjI6XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFx1MDAyNlx1MDAyNiBza2JfbGluZWFyaXplKHNrYikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY2My1cdFx0Z290byBmcmVlX3NrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6NzE0Olx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNzE1LVx0XHRyZXR1cm4gbXQ3Nl9ucHVfZG1hX2FkZF9idWYocGh5LCBxLCBza2IsIFx1MDAyNnR4X2luZm8uYnVmWzFdLCB0eHdpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTg2MT1tdDc2X2RtYV9yeF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODg2Olx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy04ODctXHRcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz05MDU9bXQ3Nl9kbWFfcnhfcmVzZXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5MzI6XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05MzMtXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNTU0PXZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjQtXHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE1NjU6XHRcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2Ni1cdFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmZyYW1lcywgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzI5PXN0YXRpYyBpbmxpbmUgaW50IG10NzZfbnB1X3NlbmRfdHhyeF9hZGRyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgaWZpbmRleCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTczNzpzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTEwPWludCBtdDc5OTZfaW5pdF90eF9xdWV1ZXMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSwgaW50IGlkeCwgaW50IG5fZGVzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjI2Olx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMjctXHRcdGZsYWdzID0gTVRfTlBVX1FfVFgocGh5LVx1MDAzZW10NzYtXHUwMDNlYmFuZF9pZHgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTQ2PXN0YXRpYyB2b2lkIG10Nzk5Nl9kbWFfY29uZmlnKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTMxLVx0XHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEzMjpcdFx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEzMy1cdFx0XHRcdFRYUV9DT05GSUcoMCwgV0ZETUEwLCBNVF9JTlRfVFhfRE9ORV9CQU5EMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz0zMDY9dm9pZCBtdDc5OTZfZG1hX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgcmVzZXQsIGJvb2wgd2VkX3Jlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjM2MjpcdGlmICghbXQ3OTk2X2hhc193YShkZXYpIHx8IG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzYzLVx0XHRpcnFfbWFzayBcdTAwMjY9IH4oTVRfSU5UX1JYKE1UX1JYUV9NQUlOX1dBKSB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zNjQtXHRcdFx0ICAgICAgTVRfSU5UX1JYKE1UX1JYUV9CQU5EMV9XQSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MzY1Olx0aWYgKGlzX210Nzk5NihcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzY2LVx0XHRpcnFfbWFzayBcdTAwMjY9IH4oTVRfSU5UX1JYKE1UX1JYUV9UWEZSRUVfQkFORDApIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz0zNzQ9c3RhdGljIHZvaWQgbXQ3OTk2X2RtYV9lbmFibGUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCByZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NDgtXHRcdGlmIChpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo0NDk6XHRcdFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNDUwLVx0XHRcdFx0bXQ3Nl9zZXQoZGV2LCBNVF9XRkRNQV9IT1NUX0NPTkZJRyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NjQtXHRcdGlmICghaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NDY1Olx0XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NjYtXHRcdFx0aWYgKGRldi1cdTAwM2VoaWYyLVx1MDAzZXNwZWVkIFx1MDAzYyBQQ0lFX1NQRUVEXzVfMEdUIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NTIxPWludCBtdDc5OTZfZG1hX3Jyb19pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTMxLVx0XHRcdG1kZXYtXHUwMDNlcV9yeFtNVF9SWFFfUlJPX1JYRE1BRF9DXS53ZWQgPSBcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTMyOlx0XHRlbHNlIGlmICghbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01MzMtXHRcdFx0bWRldi1cdTAwM2VxX3J4W01UX1JYUV9SUk9fUlhETUFEX0NdLmZsYWdzIHw9IE1UX1FGTEFHX0VNSV9FTjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1NzQ6XHRzaXplID0gaXNfbXQ3OTk2KG1kZXYpIFx1MDAyNlx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKG1kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NzUtXHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSAvIDQgOiBNVDc5OTZfUlhfUklOR19TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjU5MTpcdFx0c2l6ZSA9IGlzX210Nzk5NihtZGV2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTkyLVx0XHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSAvIDIgOiBNVDc5OTZfUlhfUklOR19TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjYwOTpcdFx0c2l6ZSA9IGlzX210Nzk5NihtZGV2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjEwLVx0XHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NjIyPXZvaWQgbXQ3OTk2X2RtYV9ycm9fc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo2NjA6XHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjYxLVx0XHRtdDc5OTZfaXJxX2VuYWJsZShkZXYsIE1UX0lOVF9SUk9fUlhfRE9ORSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NjY0PWludCBtdDc5OTZfZG1hX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02ODEtXHQvKiBpbml0IHR4IHF1ZXVlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo2ODI6XHRpZiAoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02ODMtXHRcdHJldCA9IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhcdTAwMjZkZXYtXHUwMDNlcGh5LCBNVF9UWFFfSUQoMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzU5LVx0fSBlbHNlIGlmIChpc19tdDc5OTIoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzYwOlx0XHQgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzYxLVx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX05QVV9RX1RYRlJFRSgwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04OTMtXHRcdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDBdLndlZCA9IHdlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjg5NDpcdFx0XHR9IGVsc2UgaWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04OTUtXHRcdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDBdLmZsYWdzID0gTVRfTlBVX1FfVFhGUkVFKDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTkxOC1cdFx0XHRzaXplID0gaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjkxOTpcdFx0XHQgICAgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTkyMC1cdFx0XHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTQ3OD1tdDc5OTZfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IG10a193ZWRfZGV2aWNlICp3ZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5Mi1cdGh3LVx1MDAzZW5ldGRldl9mZWF0dXJlcyA9IE5FVElGX0ZfUlhDU1VNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ5MzpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSB8fCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKG1kZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5NC1cdFx0aHctXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVEM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTYxMD12b2lkIG10Nzk5Nl9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02MjctXHRpZiAoZGV2LVx1MDAzZWhpZjIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo2Mjg6XHRcdGlmIChtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02MjktXHRcdFx0cnhfcGF0aF90eXBlID0gaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSA/IDYgOiA4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTY5NS1cdCAgICAgKGlzX210Nzk5NihcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2IGJhbmQgPT0gTVRfQkFORDIgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6Njk2Olx0ICAgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02OTctXHRcdGhpZjFfb2ZzID0gTVRfV0ZETUEwX1BDSUUxKDApIC0gTVRfV0ZETUEwKDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MzctXHQgICAgKChiYW5kID09IE1UX0JBTkQxIFx1MDAyNlx1MDAyNiAhZGV2LVx1MDAzZWhpZjIpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NzM4Olx0ICAgICAoYmFuZCA9PSBNVF9CQU5EMiBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTczOS1cdFx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc0NC1cdFx0aW50IHNpemUgPSBpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjc0NTpcdFx0XHQgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc0Ni1cdFx0XHQgICA/IE1UNzk5Nl9OUFVfVFhfUklOR19TSVpFIC8gMiA6IE1UNzk5Nl9UWF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTg2OD12b2lkIG10Nzk5Nl9ycm9faHdfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04ODgtXHRcdFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjg4OTpcdFx0XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODkwLVx0XHRcdFx0bXQ3Nl9zZXQoZGV2LCBNVF9SUk9fM18xX0dMT0JBTF9DT05GSUcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTkyLVx0XHRpZiAoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo5OTM6XHRcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTQtXHRcdFx0bXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIDAsIGksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTA1ODpcdGlmIChpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpIFx1MDAyNlx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDU5LVx0XHRtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgMSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTEyNz1zdGF0aWMgdm9pZCBtdDc5OTZfd2VkX3Jyb193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMTQ4Olx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMTQ5LVx0XHRcdGlmIChpc19tdDc5OTYoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTE9dm9pZCBtdDc5OTZfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTE5Olx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTIwLVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTgxOlx0XHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTgyLVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MDktXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MTA6XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTEtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDE5LSNlbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MjA6XHRpZiAoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQyMS1cdCAgICBtc3RhX2xpbmstXHUwMDNld2NpZC5waHlfaWR4ID09IE1UX0JBTkQyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jPTUwMD1pbnQgbXQ3OTk2X25wdV9yeF9xdWV1ZXNfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jLTUwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jOjUwNDpcdGlmICghbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9ucHUuYy01MDUtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM9MTE2PXZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxMjI6XHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTIzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYz0zNzE9aW50IG10NzZfbnB1X25ldF9zZXR1cF90YyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTM3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MzgwOlx0aWYgKCFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHBoeS1cdTAwM2VkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0zODEtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjgxOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoIGZvciBtdDc2IERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2sgd2l0aGluIHRoZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbnMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgdmVyeSBnb29kIGlkZWEuIFRoZSBjb3JlIGNvbmNlcm4gaGVyZSBpcyBhYm91dCBwcmV2ZW50aW5nIGNyYXNoZXMgb3IsIGV2ZW4gd29yc2UsIHN1YnRsZSBjb3JydXB0aW9uIHdoZW4gdGhlIGNvZGUgdHJpZXMgdG8gYWNjZXNzIGBkZXYtJmd0O21taW8ubnB1YCBvciBgZGV2LSZndDttbWlvLnBwZV9kZXZgIG9uIGRldmljZXMgdGhhdCAqYXJlbiYjMzk7dCogbWVtb3J5LW1hcHBlZCBJL08gKE1NSU8pLiBVU0Igb3IgU0RJTyBkZXZpY2VzLCBmb3IgZXhhbXBsZSwgd291bGRuJiMzOTt0IGhhdmUgdGhlc2UgTU1JTyBhZGRyZXNzZXMgZGlyZWN0bHkgYWNjZXNzaWJsZS4KCkEgcmVkIGZsYWcgaW1tZWRpYXRlbHkgZ29lcyB1cCwgdGhvdWdoOiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoZSBgZGV2LSZndDttbWlvYCBzdHJ1Y3R1cmUuIElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdCwgb3IsIGV2ZW4gbW9yZSBsaWtlbHkgaW4gYSBkcml2ZXIgbGlrZSB0aGlzLCBhIHVuaW9uLCBvciBhIHN0cnVjdCB0aGF0IHBvdGVudGlhbGx5IG92ZXJsYXBzIHdpdGggb3RoZXIgZmllbGRzIHdpdGhpbiBgc3RydWN0IG10NzZfZGV2YD8gVGhpcyBpcyBjcml0aWNhbC4gSWYgaXQmIzM5O3MgYSB1bmlvbiwgYWNjZXNzaW5nIHRoZXNlIGZpZWxkcyB3aGVuIGl0JiMzOTtzICpub3QqIGFuIE1NSU8gZGV2aWNlIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIG1lbW9yeSBjb3JydXB0aW9uLCBvciBldmVuIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4KCkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbXQ3Ni5oYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24sIGFuZCBjb25maXJtIG15IHN1c3BpY2lvbiBhYm91dCB0aGUgdW5pb24gb3Igb3ZlcmxhcHBpbmcgZmllbGRzLiBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoIGFuZCBzZWUgaWYgaXQgYWRlcXVhdGVseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBtdDc2X2RldiBcXHsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD04NTU9c3RydWN0IG10NzZfcGh5IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5MjE6c3RydWN0IG10NzZfZGV2IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTkyMi1cdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ1MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBtdDc2X2RldmAgU3RydWN0dXJlKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNZWRpYXRlayA4MDIuMTEgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBNeSBpbml0aWFsIGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBgc3RydWN0IG10NzZfZGV2YCBkZWZpbml0aW9uIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJdCYjMzk7cyB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZSwgdGhlIGNvbnRyb2wgY2VudGVyLCBpZiB5b3Ugd2lsbCwgZm9yIHRoZSBNZWRpYXRlayBkZXZpY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGtlcm5lbC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGlzIHN0cnVjdHVyZSwgcG90ZW50aWFsbHkgYSBkZXNjcmlwdG9yIGZvciB0aGUgRE1BIGVuZ2luZSwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCBjb21wb25lbnRzLiBFc3NlbnRpYWxseSwgdGhpcyBpcyB3aGVyZSB0aGUgKm1hZ2ljKiBoYXBwZW5zLCB3aGVyZSB0aGUgc29mdHdhcmUgbWFwcyB0byB0aGUgc2lsaWNvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIGl0cyBtZW1iZXJzIHRvIGZvcm0gYW4gZWZmZWN0aXZlIG1lbnRhbCBtb2RlbCBvZiBpdHMgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTIxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTIxOlx0c3RydWN0IG10NzZfZGV2IHtcbiA5MjI6XHRcdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cbiA5MjM6XHRcdHN0cnVjdCBtdDc2X3BoeSAqcGh5c1tfX01UX01BWF9CQU5EXTtcbiA5MjQ6XHRcdHN0cnVjdCBtdDc2X3BoeSAqYmFuZF9waHlzW05VTV9OTDgwMjExX0JBTkRTXTtcbiA5MjU6XHRcbiA5MjY6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIDkyNzpcdFxuIDkyODpcdFx0c3BpbmxvY2tfdCB3ZWRfbG9jaztcbiA5Mjk6XHRcdHNwaW5sb2NrX3QgbG9jaztcbiA5MzA6XHRcdHNwaW5sb2NrX3QgY2NfbG9jaztcbiA5MzE6XHRcbiA5MzI6XHRcdHUzMiBjdXJfY2NfYnNzX3J4O1xuIDkzMzpcdFxuIDkzNDpcdFx0c3RydWN0IG10NzZfcnhfc3RhdHVzIHJ4X2FtcGR1X3N0YXR1cztcbiA5MzU6XHRcdHUzMiByeF9hbXBkdV9sZW47XG4gOTM2Olx0XHR1MzIgcnhfYW1wZHVfcmVmO1xuIDkzNzpcdFxuIDkzODpcdFx0c3RydWN0IG11dGV4IG11dGV4O1xuIDkzOTpcdFxuIDk0MDpcdFx0Y29uc3Qgc3RydWN0IG10NzZfYnVzX29wcyAqYnVzO1xuIDk0MTpcdFx0Y29uc3Qgc3RydWN0IG10NzZfZHJpdmVyX29wcyAqZHJ2O1xuIDk0MjpcdFx0Y29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyAqbWN1X29wcztcbiA5NDM6XHRcdHN0cnVjdCBkZXZpY2UgKmRldjtcbiA5NDQ6XHRcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXY7XG4gOTQ1Olx0XG4gOTQ2Olx0XHRzdHJ1Y3QgbXQ3Nl9tY3UgbWN1O1xuIDk0NzpcdFxuIDk0ODpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5hcGlfZGV2O1xuIDk0OTpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKnR4X25hcGlfZGV2O1xuIDk1MDpcdFx0c3BpbmxvY2tfdCByeF9sb2NrO1xuIDk1MTpcdFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGlbX19NVF9SWFFfTUFYXTtcbiA5NTI6XHRcdHN0cnVjdCBza19idWZmX2hlYWQgcnhfc2tiW19fTVRfUlhRX01BWF07XG4gOTUzOlx0XHRzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgaXJxX3Rhc2tsZXQ7XG4gOTU0Olx0XG4gOTU1Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHR4d2lfY2FjaGU7XG4gOTU2Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4d2lfY2FjaGU7XG4gOTU3Olx0XHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcV9tY3VbX19NVF9NQ1VRX01BWF07XG4gOTU4Olx0XHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSBxX3J4W19fTVRfUlhRX01BWF07XG4gOTU5Olx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgKnF1ZXVlX29wcztcbiA5NjA6XHRcdGludCB0eF9kbWFfaWR4WzRdO1xuIDk2MTpcdFx0ZW51bSBtdDc2X2h3cnJvX21vZGUgaHdycm9fbW9kZTtcbiA5NjI6XHRcbiA5NjM6XHRcdHN0cnVjdCBtdDc2X3dvcmtlciB0eF93b3JrZXI7XG4gOTY0Olx0XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgdHhfbmFwaTtcbiA5NjU6XHRcbiA5NjY6XHRcdHNwaW5sb2NrX3QgdG9rZW5fbG9jaztcbiA5Njc6XHRcdHN0cnVjdCBpZHIgdG9rZW47XG4gOTY4Olx0XHR1MTYgd2VkX3Rva2VuX2NvdW50O1xuIDk2OTpcdFx0dTE2IHRva2VuX2NvdW50O1xuIDk3MDpcdFx0dTE2IHRva2VuX3N0YXJ0O1xuIDk3MTpcdFx0dTE2IHRva2VuX3NpemU7XG4gOTcyOlx0XG4gOTczOlx0XHRzcGlubG9ja190IHJ4X3Rva2VuX2xvY2s7XG4gOTc0Olx0XHRzdHJ1Y3QgaWRyIHJ4X3Rva2VuO1xuIDk3NTpcdFx0dTE2IHJ4X3Rva2VuX3NpemU7XG4gOTc2Olx0XG4gOTc3Olx0XHR3YWl0X3F1ZXVlX2hlYWRfdCB0eF93YWl0O1xuIDk3ODpcdFx0Lyogc3BpbmNsb2NrIHVzZWQgdG8gcHJvdGVjdCB3Y2lkIHBrdGlkIGxpbmtlZCBsaXN0ICovXG4gOTc5Olx0XHRzcGlubG9ja190IHN0YXR1c19sb2NrO1xuIDk4MDpcdFxuIDk4MTpcdFx0dTMyIHdjaWRfbWFza1tESVZfUk9VTkRfVVAoTVQ3Nl9OX1dDSURTLCAzMildO1xuIDk4MjpcdFxuIDk4MzpcdFx0dTY0IHZpZl9tYXNrO1xuIDk4NDpcdFxuIDk4NTpcdFx0c3RydWN0IG10NzZfd2NpZCBnbG9iYWxfd2NpZDtcbiA5ODY6XHRcdHN0cnVjdCBtdDc2X3djaWQgX19yY3UgKndjaWRbTVQ3Nl9OX1dDSURTXTtcbiA5ODc6XHRcdHN0cnVjdCBsaXN0X2hlYWQgd2NpZF9saXN0O1xuIDk4ODpcdFxuIDk4OTpcdFx0c3RydWN0IGxpc3RfaGVhZCBzdGFfcG9sbF9saXN0O1xuIDk5MDpcdFx0c3BpbmxvY2tfdCBzdGFfcG9sbF9sb2NrO1xuIDk5MTpcdFxuIDk5MjpcdFx0dTMyIHJldjtcbiA5OTM6XHRcbiA5OTQ6XHRcdHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBwcmVfdGJ0dF90YXNrbGV0O1xuIDk5NTpcdFx0aW50IGJlYWNvbl9pbnQ7XG4gOTk2Olx0XHR1OCBiZWFjb25fbWFzaztcbiA5OTc6XHRcbiA5OTg6XHRcdHN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciBlZXByb207XG4gOTk5Olx0XHRzdHJ1Y3QgZGVidWdmc19ibG9iX3dyYXBwZXIgb3RwO1xuMTAwMDpcdFxuMTAwMTpcdFx0Y2hhciBhbHBoYTJbM107XG4xMDAyOlx0XHRlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uO1xuMTAwMzpcdFxuMTAwNDpcdFx0c3RydWN0IG10NzZfc2Nhbl9ybnJfcGFyYW0gcm5yO1xuMTAwNTpcdFxuMTAwNjpcdFx0dTMyIGRlYnVnZnNfcmVnO1xuMTAwNzpcdFxuMTAwODpcdFx0dTggY3NhX2NvbXBsZXRlO1xuMTAwOTpcdFxuMTAxMDpcdFx0dTMyIHJ4ZmlsdGVyO1xuMTAxMTpcdFxuMTAxMjpcdFx0c3RydWN0IGRlbGF5ZWRfd29yayBzY2FuX3dvcms7XG4xMDEzOlx0XHRzcGlubG9ja190IHNjYW5fbG9jaztcbjEwMTQ6XHRcdHN0cnVjdCB7XG4xMDE1Olx0XHRcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcTtcbjEwMTY6XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuO1xuMTAxNzpcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmO1xuMTAxODpcdFx0XHRzdHJ1Y3QgbXQ3Nl92aWZfbGluayAqbWxpbms7XG4xMDE5Olx0XHRcdHN0cnVjdCBtdDc2X3BoeSAqcGh5O1xuMTAyMDpcdFx0XHRpbnQgY2hhbl9pZHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTk5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBEZWVwZXIgaW50byBgc3RydWN0IG10NzZfZGV2YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gJiMzNDtMZXQmIzM5O3MgcmVhZCBtb3JlIG9mIGBzdHJ1Y3QgbXQ3Nl9kZXZgLiYjMzQ7IFRoYXQgbWVhbnMgaXQmIzM5O3MgdGltZSB0byBkcmlsbCBkb3duLiBJJiMzOTttIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUgb2YgdGhlIG10NzYgZHJpdmVyLCBvZiBjb3Vyc2UsIGFuZCBJIGtub3cgd2hlcmUgdGhpcyBzdHJ1Y3R1cmUgZml0cyBpbiBhdCBhIGhpZ2ggbGV2ZWwuIEJ1dCB0aGUgZGV2aWwmIzM5O3MgaW4gdGhlIGRldGFpbHMuIFdoYXQgYXJlIHdlICpyZWFsbHkqIGRlYWxpbmcgd2l0aCBpbnNpZGUgdGhpcyBjcnVjaWFsIGRhdGEgc3RydWN0dXJlPyBJIG5lZWQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgbGlrZWx5LCB0aGUgdmFyaW91cyBkZXZpY2Utc3BlY2lmaWMgb3BlcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBXaUZpIHJhZGlvIGl0c2VsZi4KCkkgd2FudCB0byBrbm93OgoKKiAgICoqSW50ZXJuYWwgRmllbGRzOioqIFdoaWNoIGZpZWxkcyBhcmUgY3JpdGljYWwgZm9yIGJhc2ljIGRldmljZSBvcGVyYXRpb24gdmVyc3VzIHRob3NlIHRoYXQgcGVydGFpbiB0byBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciB2YXJpYXRpb25zPyBBcmUgdGhlcmUgYW55IGJpdGZpZWxkcyBvciB1bmlvbnMgdGhhdCByZXF1aXJlIGNhcmVmdWwgYW5hbHlzaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zPwoqICAgKipEYXRhIFN0cnVjdHVyZXMgd2l0aGluOioqIFdoYXQgYXJlIHRoZSBrZXkgcG9pbnRlcnMgd2l0aGluIGBtdDc2X2RldmAgcG9pbnRpbmcgdG8/IEFyZSB0aGV5IGFsbG9jYXRpbmcgbWVtb3J5IGZyb20gdGhlIGhlYXAgb3IgYXJlIHRoZXkgZW1iZWRkZWQgd2l0aGluIHRoZSBzdHJ1Y3R1cmUgaXRzZWxmPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhvc2UgYXJlIHVzZWQgdG8gbWFwIGRldmljZSByZWdpc3RlcnMsIG1hbmFnZSBGSUZPcywgYW5kIHRyYWNrIGZpcm13YXJlIGxvYWRpbmcuCiogICAqKkNvbmN1cnJlbmN5IENvbnNpZGVyYXRpb25zOioqIERvZXMgdGhlIHN0cnVjdHVyZSBhY2NvdW50IGZvciBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgc3VjaCBhcyBtdXRleGVzIG9yIHNwaW5sb2Nrcz8gV2hlcmU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIHNob3VsZCBiZSBvbiB0aGUgbG9va291dCBmb3I/CiogICAqKkRyaXZlciBMaWZlY3ljbGUgSG9va3M6KiogSG93IGRvZXMgYG10NzZfZGV2YCBmaXQgaW50byB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgbGlmZWN5Y2xlPyBBcmUgdGhlcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGNsZWFudXAgZnVuY3Rpb25zLCBhbmQgaW50ZXJydXB0IGhhbmRsZXJzIHRoYXQgcmVseSBvbiB0aGlzIHN0cnVjdHVyZT8gSSB3YW50IHRvIGNvbm5lY3QgdGhlIGRvdHMgYmV0d2VlbiB0aGlzIHN0cnVjdHVyZSBhbmQgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsJiMzOTtzIGRldmljZSBtb2RlbCwgZXNwZWNpYWxseSBob3cgZGV2aWNlIHJlc291cmNlcyBhcmUgbWFuYWdlZCwgYWxsb2NhdGVkIGFuZCByZWxlYXNlZC4KKiAgICoqSGFyZHdhcmUgQWJzdHJhY3Rpb246KiogV2hhdCBraW5kIG9mIGhhcmR3YXJlLXNwZWNpZmljIGluZm9ybWF0aW9uIGRvZXMgdGhlIGBzdHJ1Y3QgbXQ3Nl9kZXZgIHN0cnVjdHVyZSBlbmNhcHN1bGF0ZSBhbmQgd2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkb2VzIGl0IHVzZSB0byBoaWRlIHRoZSBsb3dlci1sZXZlbCBkZXRhaWxzPyBJJiMzOTttIGhvcGluZyB0byBzZWUgYSB3ZWxsIGRlZmluZWQgQVBJIHRvIGhhbmRsZSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzLgoKU28sIHllYWgsIHRpbWUgdG8gZGlnIGludG8gdGhhdCBkZWZpbml0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGdldCBhIGdvb2QgbWVudGFsIG1vZGVsIG9mIHRoaXMgYmVhc3QuIFVuZGVyc3RhbmRpbmcgYHN0cnVjdCBtdDc2X2RldmAgaXMgZXNzZW50aWFsIHRvIHJlYWxseSBncmFzcCB0aGUgZHJpdmVyJiMzOTtzIGlubmVyIHdvcmtpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAyMTpcdFx0XHRib29sIGJlYWNvbl93YWl0O1xuMTAyMjpcdFx0XHRib29sIGJlYWNvbl9yZWNlaXZlZDtcbjEwMjM6XHRcdH0gc2NhbjtcbjEwMjQ6XHRcbjEwMjU6XHQjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREVcbjEwMjY6XHRcdGNvbnN0IHN0cnVjdCBtdDc2X3Rlc3Rtb2RlX29wcyAqdGVzdF9vcHM7XG4xMDI3Olx0XHRzdHJ1Y3Qge1xuMTAyODpcdFx0XHRjb25zdCBjaGFyICpuYW1lO1xuMTAyOTpcdFx0XHR1MzIgb2Zmc2V0O1xuMTAzMDpcdFx0fSB0ZXN0X210ZDtcbjEwMzE6XHQjZW5kaWZcbjEwMzI6XHRcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTtcbjEwMzM6XHRcbjEwMzQ6XHRcdHVuaW9uIHtcbjEwMzU6XHRcdFx0c3RydWN0IG10NzZfbW1pbyBtbWlvO1xuMTAzNjpcdFx0XHRzdHJ1Y3QgbXQ3Nl91c2IgdXNiO1xuMTAzNzpcdFx0XHRzdHJ1Y3QgbXQ3Nl9zZGlvIHNkaW87XG4xMDM4Olx0XHR9O1xuMTAzOTpcdFxuMTA0MDpcdFx0YXRvbWljX3QgYnVzX2h1bmc7XG4xMDQxOlx0fTtcbjEwNDI6XHRcbjEwNDM6XHQvKiBwZXItcGh5IHN0YXRzLiAgKi9cbjEwNDQ6XHRzdHJ1Y3QgbXQ3Nl9taWJfc3RhdHMge1xuMTA0NTpcdFx0dTMyIGFja19mYWlsX2NudDtcbjEwNDY6XHRcdHUzMiBmY3NfZXJyX2NudDtcbjEwNDc6XHRcdHUzMiBydHNfY250O1xuMTA0ODpcdFx0dTMyIHJ0c19yZXRyaWVzX2NudDtcbjEwNDk6XHRcdHUzMiBiYV9taXNzX2NudDtcbjEwNTA6XHRcdHUzMiB0eF9iZl9jbnQ7XG4xMDUxOlx0XHR1MzIgdHhfbXVfYmZfY250O1xuMTA1MjpcdFx0dTMyIHR4X211X21wZHVfY250O1xuMTA1MzpcdFx0dTMyIHR4X211X2Fja2VkX21wZHVfY250O1xuMTA1NDpcdFx0dTMyIHR4X3N1X2Fja2VkX21wZHVfY250O1xuMTA1NTpcdFx0dTMyIHR4X2JmX2liZl9wcGR1X2NudDtcbjEwNTY6XHRcdHUzMiB0eF9iZl9lYmZfcHBkdV9jbnQ7XG4xMDU3Olx0XG4xMDU4Olx0XHR1MzIgdHhfYmZfcnhfZmJfYWxsX2NudDtcbjEwNTk6XHRcdHUzMiB0eF9iZl9yeF9mYl9laHRfY250O1xuMTA2MDpcdFx0dTMyIHR4X2JmX3J4X2ZiX2hlX2NudDtcbjEwNjE6XHRcdHUzMiB0eF9iZl9yeF9mYl92aHRfY250O1xuMTA2MjpcdFx0dTMyIHR4X2JmX3J4X2ZiX2h0X2NudDtcbjEwNjM6XHRcbjEwNjQ6XHRcdHUzMiB0eF9iZl9yeF9mYl9idzsgLyogdmFsdWUgb2YgbGFzdCBzYW1wbGUsIG5vdCBjdW11bGF0aXZlICovXG4xMDY1Olx0XHR1MzIgdHhfYmZfcnhfZmJfbmNfY250O1xuMTA2NjpcdFx0dTMyIHR4X2JmX3J4X2ZiX25yX2NudDtcbjEwNjc6XHRcdHUzMiB0eF9iZl9mYl9jcGxfY250O1xuMTA2ODpcdFx0dTMyIHR4X2JmX2ZiX3RyaWdfY250O1xuMTA2OTpcdFxuMTA3MDpcdFx0dTMyIHR4X2FtcGR1X2NudDtcbjEwNzE6XHRcdHUzMiB0eF9zdG9wX3FfZW1wdHlfY250O1xuMTA3MjpcdFx0dTMyIHR4X21wZHVfYXR0ZW1wdHNfY250O1xuMTA3MzpcdFx0dTMyIHR4X21wZHVfc3VjY2Vzc19jbnQ7XG4xMDc0Olx0XHR1MzIgdHhfcGt0X2ViZl9jbnQ7XG4xMDc1Olx0XHR1MzIgdHhfcGt0X2liZl9jbnQ7XG4xMDc2Olx0XG4xMDc3Olx0XHR1MzIgdHhfcndwX2ZhaWxfY250O1xuMTA3ODpcdFx0dTMyIHR4X3J3cF9uZWVkX2NudDtcbjEwNzk6XHRcbjEwODA6XHRcdC8qIHJ4IHN0YXRzICovXG4xMDgxOlx0XHR1MzIgcnhfZmlmb19mdWxsX2NudDtcbjEwODI6XHRcdHUzMiBjaGFubmVsX2lkbGVfY250O1xuMTA4MzpcdFx0dTMyIHByaW1hcnlfY2NhX2J1c3lfdGltZTtcbjEwODQ6XHRcdHUzMiBzZWNvbmRhcnlfY2NhX2J1c3lfdGltZTtcbjEwODU6XHRcdHUzMiBwcmltYXJ5X2VuZXJneV9kZXRlY3RfdGltZTtcbjEwODY6XHRcdHUzMiBjY2tfbWRyZHlfdGltZTtcbjEwODc6XHRcdHUzMiBvZmRtX21kcmR5X3RpbWU7XG4xMDg4Olx0XHR1MzIgZ3JlZW5fbWRyZHlfdGltZTtcbjEwODk6XHRcdHUzMiByeF92ZWN0b3JfbWlzbWF0Y2hfY250O1xuMTA5MDpcdFx0dTMyIHJ4X2RlbGltaXRlcl9mYWlsX2NudDtcbjEwOTE6XHRcdHUzMiByeF9tcmR5X2NudDtcbjEwOTI6XHRcdHUzMiByeF9sZW5fbWlzbWF0Y2hfY250O1xuMTA5MzpcdFx0dTMyIHJ4X21wZHVfY250O1xuMTA5NDpcdFx0dTMyIHJ4X2FtcGR1X2NudDtcbjEwOTU6XHRcdHUzMiByeF9hbXBkdV9ieXRlc19jbnQ7XG4xMDk2Olx0XHR1MzIgcnhfYW1wZHVfdmFsaWRfc3ViZnJhbWVfY250O1xuMTA5NzpcdFx0dTMyIHJ4X2FtcGR1X3ZhbGlkX3N1YmZyYW1lX2J5dGVzX2NudDtcbjEwOTg6XHRcdHUzMiByeF9wZmRyb3BfY250O1xuMTA5OTpcdFx0dTMyIHJ4X3ZlY19xdWV1ZV9vdmVyZmxvd19kcm9wX2NudDtcbjExMDA6XHRcdHUzMiByeF9iYV9jbnQ7XG4xMTAxOlx0XG4xMTAyOlx0XHR1MzIgdHhfYW1zZHVbOF07XG4xMTAzOlx0XHR1MzIgdHhfYW1zZHVfY250O1xuMTEwNDpcdFxuMTEwNTpcdFx0LyogbWN1X211cnVfc3RhdHMgKi9cbjExMDY6XHRcdHUzMiBkbF9jY2tfY250O1xuMTEwNzpcdFx0dTMyIGRsX29mZG1fY250O1xuMTEwODpcdFx0dTMyIGRsX2h0bWl4X2NudDtcbjExMDk6XHRcdHUzMiBkbF9odGdmX2NudDtcbjExMTA6XHRcdHUzMiBkbF92aHRfc3VfY250O1xuMTExMTpcdFx0dTMyIGRsX3ZodF8ybXVfY250O1xuMTExMjpcdFx0dTMyIGRsX3ZodF8zbXVfY250O1xuMTExMzpcdFx0dTMyIGRsX3ZodF80bXVfY250O1xuMTExNDpcdFx0dTMyIGRsX2hlX3N1X2NudDtcbjExMTU6XHRcdHUzMiBkbF9oZV9leHRfc3VfY250O1xuMTExNjpcdFx0dTMyIGRsX2hlXzJydV9jbnQ7XG4xMTE3Olx0XHR1MzIgZGxfaGVfMm11X2NudDtcbjExMTg6XHRcdHUzMiBkbF9oZV8zcnVfY250O1xuMTExOTpcdFx0dTMyIGRsX2hlXzNtdV9jbnQ7XG4xMTIwOlx0XHR1MzIgZGxfaGVfNHJ1X2NudDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdW5pb25gIHN0cnVjdHVyZSB3aXRoaW4gdGhlIE1UNzYgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgTU1JTywgVVNCLCBhbmQgU0RJTyBkZXZpY2VzLiBJIHNlZSB0aGF0IGFjY2Vzc2luZyBgZGV2LSZndDttbWlvLm5wdWAgb3IgYGRldi0mZ3Q7bW1pby5wcGVfZGV2YCBpcyBvbmx5IHZhbGlkIHdoZW4gZGVhbGluZyB3aXRoIGFuIE1NSU8gZGV2aWNlLiBJZiB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIFVTQiBvciBTRElPLCBhY2Nlc3NpbmcgdGhvc2UgZmllbGRzIGlzIGxpa2VseSBnb2luZyB0byByZWFkIGZyb20gdGhlIG90aGVyIGRldmljZS1zcGVjaWZpYyBzdHJ1Y3R1cmVzLCB3aGljaCBjb3VsZCBiZSB2YWxpZCBidXQgbGVhZCB0byBjcmFzaGVzIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4KClRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyB0aGF0IGJ5IGFkZGluZyBhIGNoZWNrIHVzaW5nIGBtdDc2X2lzX21taW8oZGV2KSAmYW1wOyZhbXA7YCB0byBlbnN1cmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBmb3IgdGhlIGNvcnJlY3QgZGV2aWNlIHR5cGUgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgY2xlYXIgYnVnIGZpeC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBob3cgcmVhY2hhYmxlIGlzIHRoaXMgY29kZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEhtbSwgd2VsbCwgTVQ3NiBoYXMgc2V2ZXJhbCBVU0IgZHJpdmVycywgbGlrZSBgbXQ3NngwdWAsIGBtdDc2eDJ1YCwgYG10NzkyMXVgLCBhbmQgYG10NzkyNXVgLiBBbmQsIG9mIGNvdXJzZSwgVVNCIGRldmljZXMgY2FuIGRlZmluaXRlbHkgYmUgZW11bGF0ZWQgaW4gUUVNVSwgdXNpbmcgZWl0aGVyIGBkdW1teV9oY2RgIG9yIGB2aGNpLWhjZGAuIEkga25vdyBzeXprYWxsZXIgZnJlcXVlbnRseSBsZXZlcmFnZXMgYHZoY2ktaGNkYCBmb3IgVVNCIGZ1enppbmcuIFNvLCB5ZXMsIHRoaXMgY29kZSBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuCgpIYW5nIG9u4oCmIExldCBtZSBqdXN0IGNsYXJpZnkuIFRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBiZWhhdmlvciBvZiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gVGhvc2UgZnVuY3Rpb25zIGFyZSBwcmV0dHkgaW1wb3J0YW50IGFuZCB1c2VkIGluIGEgYnVuY2ggb2YgcGxhY2VzIOKAkyBgbXQ3Nl9kbWFfdHhfcXVldWVfc2tiYCwgYG10NzZfZG1hX3J4X2NsZWFudXBgLCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYW5kIG90aGVycy4gU28sIGlmIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCB3ZXJlIHRvIGJlIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgYSBVU0IgZGV2aWNlLCBpdCBtaWdodCByZXR1cm4gdHJ1ZSBlcnJvbmVvdXNseSwgYW5kIHRoYXQgY291bGQgZGVmaW5pdGVseSBsZWFkIHRvIGNyYXNoZXMsIG9yIGF0IGxlYXN0IGluY29ycmVjdCBvcGVyYXRpb24uIFllcCwgaXQmIzM5O3MgYSBidWcgZml4IHRoYXQgcHJldmVudHMgY3Jhc2hlcyBpbiBVU0IvU0RJTyBjb25maWd1cmF0aW9ucy4KCkFscmlnaHQsIHRoYXQgc2V0dGxlcyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGluIGEgZHJpdmVyIHRoYXQgd2UgY2FuIGFic29sdXRlbHkgcmVhY2ggdGhyb3VnaCBVU0IgZnV6emluZy4gVGhpcyBpcyB3b3J0aCBmdXp6aW5nLgoKTm93LCBsZXQgbWUgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWdz4oCmIEkmIzM5O20gc2VlaW5nIGBDT05GSUdfTVQ3Nl9DT1JFYCwgYENPTkZJR19NVDc2X1VTQmAsIGBDT05GSUdfTVQ3OTIxVWAsIGBDT05GSUdfTVQ3OTI1VWAsIGBDT05GSUdfTVQ3NngwVWAsIGFuZCBgQ09ORklHX01UNzZ4MlVgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgYWdhaW5zdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZSBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMDpjb25maWcgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZzoyOmNvbmZpZyBNVDc2MDNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MDNFIChQQ0llKSBhbmQgTVQ3Nng4IFdMQU4gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6Mzpjb25maWcgTVQ3NjE1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjg6Y29uZmlnIE1UNzYxNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYxNUUgYW5kIE1UNzY2M0UgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzoyMTpjb25maWcgTVQ3NjIyX1dNQUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjItXHRib29sIFwmIzM0O01UNzYyMiAoU29DKSBXTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozMjpjb25maWcgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzY6Y29uZmlnIE1UNzY2M1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo0Nzpjb25maWcgTVQ3NjYzU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4MF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoxOTpjb25maWcgTVQ3NngwRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4Ml9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDJFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6MTg6Y29uZmlnIE1UNzZ4MlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2MDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEZWVwIERpdmUgaW50byBDb25maWd1cmF0aW9uIEZpbGVzKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29tcGxldGUuIE5vdyBJIG5lZWQgdG8gZW5zdXJlIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHN5c3RlbTsgdGhlIG9yaWdpbmFsIGRhdGEgYWxvbmUgaXNuJiMzOTt0IHN1ZmZpY2llbnQuIFRoaXMgbWVhbnMgYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiBJIG5lZWQgdG8gYmUgbWV0aG9kaWNhbCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIFdoYXQgc3BlY2lmaWMgYXJlYXMgYXJlIHRoZSBjb25maWd1cmF0aW9ucyBpbXBhY3Rpbmc/IEkmIzM5O2xsIHJldmlldyBhbGwgdGhlIGNvbmZpZ3MuIEkgd2lsbCBiZSBsb29raW5nIGZvciBpbnRlcmFjdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW5jb25zaXN0ZW5jaWVzLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYWxsIHRoZSBjb25maWdzLiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI4PWNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzI6Y29uZmlnIE1UNzkyeF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6Mjpjb25maWcgTVQ3OTE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5OFhfV01BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7TVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxNTEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBzZXQgb2YgY29uZmlndXJhdGlvbnMgaGVyZTogYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgcmVsZXZhbnQgbW9kdWxlcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy4KCkFscmlnaHQsIHRoZSBwYXRjaCB0b3VjaGVzIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBUaG9zZSBhcmUgaW5saW5lIGZ1bmN0aW9ucyBpbiBgbXQ3Ni5oYCwgc28gSSBzaG91bGQgbm90ZSB0aGVpciB1c2FnZS4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBjYWxsZWQgZnJvbSBxdWl0ZSBhIGZldyBwbGFjZXM6IGBtdDc2X2RtYV90eF9xdWV1ZV9za2JgLCBgbXQ3Nl9kbWFfcnhfY2xlYW51cGAsIGBtdDc2X2RtYV9yeF9yZXNldGAsIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCBhbmQgYSB3aG9sZSBzbGV3IG9mIGBtdDc5OTZfYCBmdW5jdGlvbnMgcmVsYXRlZCB0byBETUEgY29uZmlndXJhdGlvbiwgaW5pdGlhbGl6YXRpb24sIGFuZCBuZXR3b3JrIHNldHVwLiBUaGF0JiMzOTtzIGEgZGVjZW50LXNpemVkIHN1cmZhY2UgYXJlYSB0byBiZSByZXZpZXdpbmcuCgpIb2xkIG9uIGEgbWludXRlLCBgbXQ3OTk2YCBpcyBQQ0llLW9ubHksIHNvIHRoYXQgbW9kdWxlIGFuZCBpdHMgYXNzb2NpYXRlZCBmdW5jdGlvbnMgc2hvdWxkbiYjMzk7dCBiZSByZWxldmFudCBmb3IgVVNCIGZ1enppbmcuIFRoYXQmIzM5O3MgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGtlZXAgaW4gbWluZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBzb21ldGhpbmcuIEkgd2FzIG9yaWdpbmFsbHkgZm9jdXNlZCBvbiB0aGUgYG10NzZfZG1hX3R4X3F1ZXVlX3NrYmAgZnVuY3Rpb24sIGFzIHRoYXQgb25lJiMzOTtzIGluIGBkbWEuY2AuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgaXMgdXNlZCBieSBVU0IgZGV2aWNlcyBvciBub3QuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgcGF0aCB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gZm9yIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2RtYV90eF9xdWV1ZV9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTYwNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjYwNzptdDc2X2RtYV90eF9xdWV1ZV9za2JfcmF3KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjA4LVx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHR4X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz02Mzk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2NDA6bXQ3Nl9kbWFfdHhfcXVldWVfc2tiKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjQxLVx0XHQgICAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X3F1ZXVlX29wcyBtdDc2X2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTUxLVx0LnJlc2V0X3EgPSBtdDc2X2RtYV9xdWV1ZV9yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE1MjpcdC50eF9xdWV1ZV9za2JfcmF3ID0gbXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE1MzpcdC50eF9xdWV1ZV9za2IgPSBtdDc2X2RtYV90eF9xdWV1ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNTQtXHQudHhfY2xlYW51cCA9IG10NzZfZG1hX3R4X2NsZWFudXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTcwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIERNQSBPcGVyYXRpb25zIElucXVpcnkqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMganVzdCB0aGlua2luZyBhYm91dCBETUEgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIGBtdDc2YCBmcmFtZXdvcmssIHNwZWNpZmljYWxseSBgbXQ3Nl9kbWFfb3BzYC4gQnV0LCB0aGF0JiMzOTtzIGZvciBQQ0llIG9yIE1NSU8sIHJpZ2h0PyBJJiMzOTttIGZvcmdldHRpbmcgc29tZXRoaW5nIGNydWNpYWwgaGVyZS4uLiB3aGF0IGFib3V0IFVTQj8gSXQmIzM5O3Mgbm90IHRoZSBzYW1lLiBVU0IgaGFzIGl0cyBvd24gc2V0IG9mIG9wZXJhdGlvbnMsIGFuZCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgdGhleSYjMzk7cmUgaGFuZGxlZCB2aWEgYG10NzZfdXNiX29wc2AuIFJpZ2h0LCB0aGF0IGZlZWxzIG1vcmUgY29ycmVjdC4gVGltZSB0byBjb25maXJtIG15IHN1c3BpY2lvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIGB1c2IuY2AgYW5kIG1ha2Ugc3VyZSBteSBtZW1vcnkgc2VydmVzIG1lIGNvcnJlY3RseS4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgdGhlIFVTQiBzaWRlIG9mIGBtdDc2YCBpcyBzdHJ1Y3R1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfdXNiX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4MjYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGNvbnNpZGVyaW5nIGBtdDc2X3F1ZXVlX29wc2AsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBtdDc2X3F1ZXVlX29wc2AqKgoKT2theSwgc28gSSBuZWVkIHRvIGNoZWNrIG91dCBgbXQ3Nl9xdWV1ZV9vcHNgLiBHaXZlbiB0aGUgY29udGV4dCwgdGhpcyAqaGFzKiB0byBiZSB0aGUgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciB0aGUgTVQ3NiYjMzk7cyBpbnRlcm5hbCBxdWV1ZSBtYW5hZ2VtZW50LiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHJlY2FsbCB0aGUgZ2VuZXJhbCBNVDc2IGFyY2hpdGVjdHVyZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGVkaWNhdGVkIGhhcmR3YXJlIHF1ZXVlcz8gU29mdHdhcmUgZW11bGF0aW9uPyBIeWJyaWQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCkkmIzM5O20gaW5zdGFudGx5IGdvaW5nIHRvIGJlIGludGVyZXN0ZWQgaW4gdGhlIHR5cGljYWwgc3VzcGVjdHM6IGB0eF9lbnF1ZXVlYCwgYHR4X2RlcXVldWVgLCBgcnhfZW5xdWV1ZWAsIGByeF9kZXF1ZXVlYCwgYHF1ZXVlX2luaXRgLCBgcXVldWVfZGVpbml0YC4gQWxzbywgbGV0JiMzOTtzIHNlZSwgd2hhdCBhYm91dCBlcnJvciBoYW5kbGluZyBmdW5jdGlvbnM/IEFyZSB0aGVyZSBwZXItcXVldWUgc3RhdHMgY291bnRlcnMgZXhwb3NlZCB2aWEgdGhpcyBzdHJ1Y3Q/IFByb2JhYmx5LiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIHRob3NlLgoKR2l2ZW4gdGhlIE1UNzYmIzM5O3MgY29tbW9uIHVzZSB3aXRoIFBDSWUgYW5kIFVTQiBpbnRlcmZhY2VzLCBJIGV4cGVjdCBzb21lIGZ1bmN0aW9ucyB3aWxsIGJlIHJlbGF0ZWQgdG8gZGVzY3JpcHRvciBtYW5hZ2VtZW50LCBETUEgb3BlcmF0aW9ucywgYW5kIHBlcmhhcHMgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgdG8gdGhlIHF1ZXVlcy4gSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlc2UgZnVuY3Rpb25zIG1hbmFnZSB0aGUgaGFyZHdhcmUgZGlyZWN0bHkgb3IgdXNlIGFuIGludGVybWVkaWFyeSBsYXllciBvZiBzb2Z0d2FyZSBxdWV1ZXMuCgpBcmUgdGhlcmUgbGlrZWx5IHRvIGJlIHJhdGUgbGltaXRpbmcgb3IgdHJhZmZpYyBzaGFwaW5nIGZ1bmN0aW9ucyBoZXJlPyBRdWl0ZSBwb3NzaWJseSwgZXNwZWNpYWxseSBpZiB0aGlzIGNvdmVycyBtdWx0aXBsZSBxdWV1ZXMgd2l0aCBkaWZmZXJpbmcgcHJpb3JpdGllcy4gQWxzbywgZG9lcyBpdCBjb250YWluIGZ1bmN0aW9ucyBmb3IgcG93ZXIgbWFuYWdlbWVudCBvciBxdWV1ZSBkcmFpbmluZyBvbiBzdXNwZW5kL3Jlc3VtZT8gVGhlc2UgYXJlIHRoaW5ncyB0byBsb29rIGZvci4KCkkmIzM5O20gZXhwZWN0aW5nIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBzdHVmZiwgcG90ZW50aWFsbHkgaW52b2x2aW5nIG1lbW9yeSBiYXJyaWVycyBhbmQgY2FyZWZ1bCBzeW5jaHJvbml6YXRpb24uIElmIHRoaXMgaXMgYSBtb2Rlcm4gTVQ3NiBkcml2ZXIsIEkmIzM5O20gaG9waW5nIHRvIHNlZSB3ZWxsLWNvbW1lbnRlZCBjb2RlLCBidXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGdldCBteSBob3BlcyB1cC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExMDg9bXQ3Nl9kbWFfaW5pdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjExNDg6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X3F1ZXVlX29wcyBtdDc2X2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNDktXHQuaW5pdCA9IG10NzZfZG1hX2luaXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjcwPXN0cnVjdCBtdDc2X21jdV9vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjI5MjpzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMjkzLVx0aW50ICgqaW5pdCkoc3RydWN0IG10NzZfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTIxPXN0cnVjdCBtdDc2X2RldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTU4LVx0c3RydWN0IG10NzZfcXVldWUgcV9yeFtfX01UX1JYUV9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTU5Olx0Y29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzICpxdWV1ZV9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05NjAtXHRpbnQgdHhfZG1hX2lkeFs0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz01ODc9c3RhdGljIHZvaWQgbXQ3NnNfdHhfa2ljayhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NTk0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgc2Rpb19xdWV1ZV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01OTUtXHQudHhfcXVldWVfc2tiID0gbXQ3NnNfdHhfcXVldWVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM9MTA2OT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2dV9hbGxvY19xdWV1ZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYzoxMDcxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgdXNiX3F1ZXVlX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtMTA3Mi1cdC50eF9xdWV1ZV9za2IgPSBtdDc2dV90eF9xdWV1ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDMzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBDYWxsKioKCk9rYXksIHNvIEkgd2FzIGxvb2tpbmcgYXQgdGhlIGBtdDc2X2RtYV90eF9xdWV1ZV9za2JgIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgaXQmIzM5O3MgZXhjbHVzaXZlbHkgdXNlZCBmb3IgZGV2aWNlcyB0aGF0IHJlbHkgb24gRGlyZWN0IE1lbW9yeSBBY2Nlc3MsIGxpa2UgUENJZSBhbmQgTU1JTyBiYXNlZCBoYXJkd2FyZS4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBCdXQgdGhlbiBJIGhpdCBhIHNuYWcuIFRoZSBmdW5jdGlvbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAsIHRoZSBvbmUgSSB3YXMgYWN0dWFsbHkgZm9jdXNlZCBvbiwgaXMgc2VlbWluZ2x5ICpvbmx5KiBjYWxsZWQgZnJvbSB3aXRoaW4gRE1BLXJlbGF0ZWQgc2VjdGlvbnMgb2YgdGhlIGNvZGUuIFRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSWYgaXQmIzM5O3MgKm9ubHkqIGNhbGxlZCBmcm9tIERNQSBjb250ZXh0cywgaG93IGluIHRoZSB3b3JsZCBjb3VsZCBpdCBiZSB0cmlnZ2VyZWQgZm9yIGEgVVNCIGRldmljZT8gVGhlIGxvZ2ljIGp1c3QgZG9lc24mIzM5O3QgZm9sbG93LgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgdGFrZSBhIG1vcmUgZ3JhbnVsYXIgYXBwcm9hY2guIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGJhY2sgdG8gaXRzIG9yaWdpbnMuIExldCBtZSBzZWUuLi4gd2hlcmUgKmVsc2UqIGlzIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBiZWluZyBjYWxsZWQ/IEFoIGhhISBJIGZvdW5kIGl0IC0gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaW4gYG1hYzgwMjExLmNgLiBUaGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIGRhdGEgcG9pbnQuIE5vdyBJIGhhdmUgYW5vdGhlciBwbGFjZSB0byBmb2N1cyBvbiB0byBidWlsZCB0aGlzIG1lbnRhbCBtb2RlbC4gVGhpcyBtYWtlcyBtb3JlIHNlbnNlIG5vdywgSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgYW5kIGhvdyBpdCBtaWdodCBjYWxsLCBvciBub3QgY2FsbCwgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbiBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3J4X3BvbGxfY29tcGxldGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTEwNzM9aW50IG10NzZfZG1hX3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTA4NC1cdFx0Y3VyID0gbXQ3Nl9kbWFfcnhfcHJvY2VzcyhkZXYsIFx1MDAyNmRldi1cdTAwM2VxX3J4W3FpZF0sIGJ1ZGdldCAtIGRvbmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzoxMDg1Olx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBxaWQsIG5hcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMDg2LVx0XHRkb25lICYjNDM7PSBjdXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE1MTQ9dm9pZCBtdDc2X3J4X2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTU1NDp2b2lkIG10NzZfcnhfcG9sbF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NTUtXHRcdFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTcyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcnhfcG9sbF9jb21wbGV0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzkzPXZvaWQgbXQ3Nl9yeF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5NC1cdFx0ICAgICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3OTU6dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3OTYtXHRcdFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jPTE0ND1zdGF0aWMgaW50IG10NzZfbnB1X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTY1LVx0XHRkZXYtXHUwMDNlZHJ2LVx1MDAzZXJ4X3NrYihkZXYsIHFpZCwgc2tiLCBcdTAwMjZpbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MTY2Olx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBxaWQsIG5hcGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xNjctXHRcdGRvbmUmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jPTM4Mz1tdDc2c19wcm9jZXNzX3J4X3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy00MDItXHRpZiAocWlkID09IE1UX1JYUV9NQUlOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NDAzOlx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBNVF9SWFFfTUFJTiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy00MDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz02MDI9bXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy02MjItXHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6NjIzOlx0XHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBNVF9SWFFfTUFJTiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jLTYyNC1cdFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNjMxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBkZWJ1Z2dpbmcgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqVHJhY2luZyB0aGUgUmVjZWl2ZSBQYXRoKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgcmVjZWl2ZSBwYXRoLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgSSByZW1lbWJlciBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBiZWluZyBjYWxsZWQgZnJvbSBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAg4oCTIHllcCwgdGhhdCYjMzk7cyBpbiBgdXNiLmNgLCBleGFjdGx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IGl0LiBUaGUgbmV4dCB0aGluZyBJJiMzOTttIHNlZWluZyBpcyBhIGNoZWNrOiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBpcyBjYWxsaW5nIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldilgLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhIGNvbmRpdGlvbmFsIGNhbGwsIHNvIGxldCYjMzk7cyBzZWUgd2hhdCBpcyBoYXBwZW5pbmcgaW4gdGhlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIGZ1bmN0aW9uLiBMb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8ganVtcCBvdmVyIHRvIGBtYWM4MDIxMS5jYCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTU0Olx0dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbjE1NTU6XHRcdFx0XHQgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4xNTU2Olx0e1xuMTU1NzpcdFx0c3RydWN0IHNrX2J1ZmZfaGVhZCBmcmFtZXM7XG4xNTU4Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuMTU1OTpcdFxuMTU2MDpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmZyYW1lcyk7XG4xNTYxOlx0XG4xNTYyOlx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2ZGV2LVx1MDAzZXJ4X3NrYltxXSkpICE9IE5VTEwpIHtcbjE1NjM6XHRcdFx0bXQ3Nl9jaGVja19zdGEoZGV2LCBza2IpO1xuMTU2NDpcdFx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgfHxcbjE1NjU6XHRcdFx0ICAgIG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcbjE1NjY6XHRcdFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmZyYW1lcywgc2tiKTtcbjE1Njc6XHRcdFx0ZWxzZVxuMTU2ODpcdFx0XHRcdG10NzZfcnhfYWdncl9yZW9yZGVyKHNrYiwgXHUwMDI2ZnJhbWVzKTtcbjE1Njk6XHRcdH1cbjE1NzA6XHRcbjE1NzE6XHRcdG10NzZfcnhfY29tcGxldGUoZGV2LCBcdTAwMjZmcmFtZXMsIG5hcGkpO1xuMTU3MjpcdH1cbjE1NzM6XHRFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3J4X3BvbGxfY29tcGxldGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMxOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIEZ1bmN0aW9uJiMzOTtzIEJlaGF2aW9yKioKCk9rYXksIHNvIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIGlzIGRlZmluaXRlbHkgYmVpbmcgaW52b2tlZCBmb3IgVVNCIGRldmljZXMuIFRoYXQmIzM5O3MgZ29vZCwgYnV0IGl0JiMzOTtzIGxlYWRpbmcgdG8gc29tZSBwb3RlbnRpYWwgaXNzdWVzIEkgbmVlZCB0byBhZGRyZXNzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNhbGxpbmcgYm90aCBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKCZhbXA7ZGV2LSZndDttbWlvLndlZClgIGFuZCBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpYC4gVGhlIHByb2JsZW0gaXMsIGZvciBVU0IgZGV2aWNlcywgYGRldi0mZ3Q7bW1pb2AgaXMgaW52YWxpZDsgaXQmIzM5O3Mgb3ZlcmxhcHBpbmcgbWVtb3J5IHdpdGggYGRldi0mZ3Q7dXNiYC4gVGhpcyBtZWFucyB0aGVzZSBmdW5jdGlvbnMsIHBhcnRpY3VsYXJseSB0aGUgb25lcyB0aGF0IGNoZWNrIGZvciBhY3RpdmUgZGV2aWNlcywgYXJlIGxpa2VseSByZWFkaW5nIGdhcmJhZ2UgZGF0YSBmcm9tIGBkZXYtJmd0O3VzYmAuIFRoYXQmIzM5O3Mgbm90IGlkZWFsLgoKVGhpcyBjYW4gcmVzdWx0IGluIGVpdGhlciBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCBvciBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgcmV0dXJuaW5nIGEgbm9uLXplcm8gdmFsdWUgd2hlbiB0aGV5IHNob3VsZG4mIzM5O3QuIElmIHRoaXMgaGFwcGVucywgaW5zdGVhZCBvZiBwcm9wZXJseSB1c2luZyBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgLCB0aGUgY29kZSBpbmNvcnJlY3RseSBnb2VzIHRvIGBfX3NrYl9xdWV1ZV90YWlsYC4gVGhpcyBjb21wbGV0ZWx5IGJyZWFrcyB0aGUgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyBtZWNoYW5pc20gZm9yIFVTQiBkZXZpY2VzLiBGdXJ0aGVybW9yZSwgdGhlcmUmIzM5O3MgYSByZWFsIHBvc3NpYmlsaXR5IG9mIGl0IGNhdXNpbmcgY3Jhc2hlcyBpZiBpdCBhdHRlbXB0cyB0byBkZXJlZmVyZW5jZSBzb21ldGhpbmcgdW5leHBlY3RlZCBvciBpbnZhbGlkLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bC4KCldhaXQsIGxvb2tpbmcgYXQgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgYWdhaW4sIGl0JiMzOTtzIGFsc28gYWNjZXNzaW5nIGBkZXYtJmd0O21taW8ud2VkYC4gRG9lcyBpdCBoYXZlIGEgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhbiBNTUlPIGRldmljZT8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0OyBpdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBnZXQgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210a193ZWRfZGV2aWNlX2FjdGl2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9ODAyPW10NzZfZG1hX2FsbG9jX3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODQ2Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg0Ny1cdFx0aWYgKChtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2IG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTg2MT1tdDc2X2RtYV9yeF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODgyOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4My1cdFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTkwNT1tdDc2X2RtYV9yeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjkyODpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTI5LVx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExNjc9dm9pZCBtdDc2X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE5ODpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTE5OS1cdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEyMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjEyMDE6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZF9oaWYyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTIwMi1cdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZF9oaWYyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oPTE3NT1tdDc2X2RtYV9yZXNldF90eF9xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC0xNzktXHRkZXYtXHUwMDNlcXVldWVfb3BzLVx1MDAzZXJlc2V0X3EoZGV2LCBxLCByZXNldF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDoxODA6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTE4MS1cdFx0bXQ3Nl93ZWRfZG1hX3NldHVwKGRldiwgcSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE1NTQ9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2My1cdFx0bXQ3Nl9jaGVja19zdGEoZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE1NjQ6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjUtXHRcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmM9Nzc9dm9pZCBtdDc2X3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmMtODUtXHRpZiAoYWRkcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmM6ODY6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jLTg3LVx0XHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz01MDQ9dm9pZCBtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Ny1cdFx0LyogbXQ3OTE1IFdBIG9ubHkgY291bnRzIFdFRCBwYXRoICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU0ODpcdFx0aWYgKGlzX210NzkxNShkZXYpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQ5LVx0XHRcdHdjaWQtXHUwMDNlc3RhdHMudHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYz02MjQ9Ym9vbCBtdDc2X2Nvbm5hYzJfbWFjX2ZpbGxfdHhzKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNjM2LVx0LyogUFBEVSBiYXNlZCByZXBvcnRpbmcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NjM3Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02MzgtXHQgICAgRklFTERfR0VUKE1UX1RYUzBfVFhTX0ZPUk1BVCwgdHhzKSBcdTAwM2UgMSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MTI3Mj1pbnQgbXQ3Nl9jb25uYWNfbWN1X3N0YV93ZWRfdXBkYXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6MTI3NzpcdGlmICghbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTEyNzgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTk9bXQ3OTE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGludCBpZHgsIGludCBuX2Rlc2MsIGludCByaW5nX2Jhc2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzoxNDpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0xNS1cdFx0aWYgKGlzX210Nzk4eChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM9NDE9c3RhdGljIHZvaWQgbXQ3OTE1X2RtYV9jb25maWcoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjg3Olx0XHRpZiAoaXNfbXQ3OTE2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtODgtXHRcdFx0UlhRX0NPTkZJRyhNVF9SWFFfTUFJTiwgV0ZETUEwLCBNVF9JTlRfV0VEX1JYX0RPTkVfQkFORDBfTVQ3OTE2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTI1NT1pbnQgbXQ3OTE1X2RtYV9zdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHJlc2V0LCBib29sIHdlZF9yZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0zMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzozMDk6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjYgd2VkX3Jlc2V0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0zMTAtXHRcdHUzMiB3ZWRfaXJxX21hc2sgPSBpcnFfbWFzaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz00MDg9aW50IG10NzkxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5Milcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0MjQ6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00MjUtXHRcdGlmICghaXNfbXQ3OTh4KG1kZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDkzLVx0LyogZXZlbnQgZnJvbSBXQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NDk0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjYgaXNfbXQ3OTE1KG1kZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00OTUtXHRcdHdhX3J4X2Jhc2UgPSBNVF9XRURfUlhfUklOR19CQVNFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUxMC1cdGlmICghZGV2LVx1MDAzZXBoeS5tdDc2LVx1MDAzZWJhbmRfaWR4KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo1MTE6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01MTItXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NTMzOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01MzQtXHRcdFx0bWRldi1cdTAwM2VxX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX1dFRF9RX1RYRlJFRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01NDktXHRpZiAoZGV2LVx1MDAzZWRiZGNfc3VwcG9ydCB8fCBkZXYtXHUwMDNlcGh5Lm10NzYtXHUwMDNlYmFuZF9pZHgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjU1MDpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTU1MS1cdFx0ICAgIG10a193ZWRfZ2V0X3J4X2NhcGEoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYz01OTA9aW50IG10NzkxNV9kbWFfcmVzZXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgYm9vbCBmb3JjZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy02MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo2MTM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy02MTQtXHRcdG10a193ZWRfZGV2aWNlX2RtYV9yZXNldCh3ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTY0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjY0MTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcdTAwMjZcdTAwMjYgaXNfbXQ3OTE1KFx1MDAyNmRldi1cdTAwM2VtdDc2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTY0Mi1cdFx0bXQ3Nl9ybXcoZGV2LCBNVF9XRkRNQTBfRVhUMF9DRkcsIE1UX1dGRE1BMF9FWFQwX1JYV0JfS0VFUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9MzU4PW10NzkxNV9pbml0X3dpcGh5KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzozNzE6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM3Mi1cdFx0aHctXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVEM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTQ4ND1tdDc5MTVfbWFjX2luaXRfYmFuZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBiYW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NDktXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo1NTA6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NTEtXHRcdG10NzZfc2V0KGRldiwgTVRfQUdHX0FDUjQoYmFuZCksIE1UX0FHR19BQ1JfUFBEVV9UWFMySCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9ODY3PW10NzkxNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTkxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjkxNDpcdFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2IHdjaWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTkxNS1cdFx0XHR1MzIgdHhfcmV0cmllcyA9IDAsIHR4X2ZhaWxlZCA9IDAsIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTE0NzM9dm9pZCBtdDc5MTVfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE1MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzoxNTM0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYy0xNTM1LVx0XHRtdGtfd2VkX2RldmljZV9zdG9wKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTE1Nz1zdGF0aWMgdm9pZCBtdDc5MTVfc3RhX3N0YXRpc3RpY3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTExODktXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxMTkwOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTE5MS1cdFx0c2luZm8tXHUwMDNldHhfYnl0ZXMgPSBtc3RhLVx1MDAzZXdjaWQuc3RhdHMudHhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3MjM9bXQ3OTE1X25ldF9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTczNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxNzM1Olx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xNzM2LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yMzg0PWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQxODpcdGlmICgobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MTktXHQgICAgIGlzX210NzkxNShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI0MzY6XHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfcmVkKGRldiwgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDM3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9NzkzPXZvaWQgbXQ3OTE1X2R1YWxfaGlmX3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy04MDUtXHRpZiAod3JpdGVfcmVnKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6ODA2Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTgwNy1cdFx0XHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTgzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4MzI6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy04MzMtXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz04OTY9aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtOTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjkwMTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05MDItXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTkyLWZyZWVfd2VkX29yX2lycV92ZWN0b3I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMtMTk0LVx0XHRtdGtfd2VkX2RldmljZV9kZXRhY2goXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmM9MTIyMD1zdGF0aWMgaW50IG10Nzk4eF93bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI3Mi1mcmVlX2RldmljZTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jOjEyNzM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI3NC1cdFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTEwPWludCBtdDc5OTZfaW5pdF90eF9xdWV1ZXMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSwgaW50IGlkeCwgaW50IG5fZGVzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjE2Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xNy1cdFx0cmluZ19iYXNlICYjNDM7PSBNVF9UWFFfSUQoMCkgKiBNVF9SSU5HX1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9MzA2PXZvaWQgbXQ3OTk2X2RtYV9zdGFydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHJlc2V0LCBib29sIHdlZF9yZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zMTYtXHRpZiAoIXJlc2V0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzozMTc6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcdTAwMjZcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzE4LVx0XHRcdG10NzZfc2V0KGRldiwgTVRfV0ZETUEwX0dMT19DRkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MzU0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiB3ZWRfcmVzZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM1NS1cdFx0dTMyIHdlZF9pcnFfbWFzayA9IGlycV9tYXNrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTM3ND1zdGF0aWMgdm9pZCBtdDc5OTZfZG1hX2VuYWJsZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTUwMi1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1MDM6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTA0LVx0XHQgICAgbXQ3OTk2X2hhc19od3JybyhkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9NTIxPWludCBtdDc5OTZfZG1hX3Jyb19pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTI5LVx0XHRtZGV2LVx1MDAzZXFfcnhbTVRfUlhRX1JST19SWERNQURfQ10uZmxhZ3MgPSBNVF9XRURfUlJPX1FfUlhETUFEX0M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1MzA6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01MzEtXHRcdFx0bWRldi1cdTAwM2VxX3J4W01UX1JYUV9SUk9fUlhETUFEX0NdLndlZCA9IFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTQyOlx0XHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTQzLVx0XHRcdC8qIFdlIG5lZWQgdG8gc2V0IGNwdSBpZHggcG9pbnRlciBiZWZvcmUgcmVzZXR0aW5nIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU1Ni1cdG1kZXYtXHUwMDNlcV9yeFtNVF9SWFFfUlJPX0lORF0uZmxhZ3MgPSBNVF9XRURfUlJPX1FfSU5EO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTU3Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU1OC1cdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU2OS1cdFx0TVRfV0VEX1JST19RX01TRFVfUEcoMCkgfCBNVF9RRkxBR19XRURfUlJPX0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTcwOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU3MS1cdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU4Ni1cdFx0XHRNVF9XRURfUlJPX1FfTVNEVV9QRygxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1ODc6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01ODgtXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYwNC1cdFx0XHRNVF9XRURfUlJPX1FfTVNEVV9QRygyKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo2MDU6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDYtXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTYyMj12b2lkIG10Nzk5Nl9kbWFfcnJvX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NjI2Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYyNy1cdFx0aXJxX21hc2sgPSBkZXYtXHUwMDNlbXQ3Ni5tbWlvLmlycW1hc2sgfFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTY2ND1pbnQgbXQ3OTk2X2RtYV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzM5LVx0LyogcnggZGF0YSBxdWV1ZSBmb3IgYmFuZDAgYW5kIG10Nzk5NiBiYW5kMSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzQwOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc0MS1cdFx0ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfTUFJTl0uZmxhZ3MgPSBNVF9XRURfUV9SWCgwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03NTMtXHQvKiB0eCBmcmVlIG5vdGlmeSBldmVudCBmcm9tIFdBIGZvciBiYW5kMCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzU0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzU1LVx0ICAgICgoaXNfbXQ3OTk2KFx1MDAyNmRldi1cdTAwM2VtdDc2KSBcdTAwMjZcdTAwMjYgIW10Nzk5Nl9oYXNfaHdycm8oZGV2KSkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03NzItXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzczOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc3NC1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDBdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc4Ni1cdGlmICghbXQ3OTk2X2hhc193YShkZXYpIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlaGlmMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6Nzg3Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc4OC1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDFdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgxMy1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4MTQ6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkX2hpZjIpIFx1MDAyNlx1MDAyNiAhbXQ3OTk2X2hhc19od3JybyhkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04MTUtXHRcdFx0ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDJfV0FdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgyOC1cdFx0cnhfYmFzZSA9IE1UX1JYUV9SSU5HX0JBU0UoTVRfUlhRX0JBTkQxKSAmIzQzOyBoaWYxX29mcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjgyOTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgzMC1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9CQU5EMV0uZmxhZ3MgPSBNVF9XRURfUV9SWCgxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NDQtXHRcdFx0cnhfYmFzZSA9IE1UX1JYUV9SSU5HX0JBU0UoTVRfUlhRX0JBTkQxX1dBKSAmIzQzOyBoaWYxX29mcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjg0NTpcdFx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZF9oaWYyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODQ2LVx0XHRcdFx0ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDFfV0FdLmZsYWdzID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NjQtXHRcdFx0TVRfV0VEX1JST19RX0RBVEEoMCkgfCBNVF9RRkxBR19XRURfUlJPX0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODY1Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXHUwMDI2XHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg2Ni1cdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9SUk9fQkFORDBdLndlZCA9IHdlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NzctXHRcdFx0XHRNVF9XRURfUlJPX1FfREFUQSgxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4Nzg6XHRcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODc5LVx0XHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODg5LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODkwOlx0XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODkxLVx0XHRcdFx0LyogdHggZnJlZSBub3RpZnkgZXZlbnQgZnJvbSBXQSBmb3IgYmFuZDAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05MTMtXHRcdFx0XHRNVF9XRURfUlJPX1FfREFUQSgxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo5MTQ6XHRcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTE1LVx0XHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTI4LVx0XHRcdC8qIHR4IGZyZWUgbm90aWZ5IGV2ZW50IGZyb20gTUFDIGZvciBiYW5kMiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTI5Olx0XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05MzAtXHRcdFx0XHRkZXYtXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDJdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTk2MD12b2lkIG10Nzk5Nl9kbWFfcmVzZXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCBmb3JjZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05OTQtXHRpZiAobXQ3OTk2X2hhc19od3JybyhkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTk1Olx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTk2LVx0XHRtdDc5OTZfcnJvX21zZHVfcGFnZV9tYXBfZnJlZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzoxMDAyOlx0aWYgKGRldi1cdTAwM2VoaWYyIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDAzLVx0XHRtdGtfd2VkX2RldmljZV9kbWFfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTAwNTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTAwNi1cdFx0bXRrX3dlZF9kZXZpY2VfZG1hX3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTAyNzpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMjgtXHRcdFx0aWYgKG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSB8fFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwNDAtXHRtdDc2X2Zvcl9lYWNoX3FfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEwNDE6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNiBmb3JjZSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwNDItXHRcdCAgICAobXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2luZChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5xX3J4W2ldKSB8fFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00Nzg9bXQ3OTk2X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00OTItXHRody1cdTAwM2VuZXRkZXZfZmVhdHVyZXMgPSBORVRJRl9GX1JYQ1NVTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo0OTM6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgfHwgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00OTQtXHRcdGh3LVx1MDAzZW5ldGRldl9mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3NjA6XHRpZiAod2VkID09IFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIgXHUwMDI2XHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzYxLVx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz04MjU9c3RhdGljIHZvaWQgbXQ3OTk2X3Jyb19od19pbml0X3YzKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTgzMy0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODM0Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzUtXHRcdHdlZC1cdTAwM2V3bGFuLmluZF9jbWQud2luX3NpemUgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ5Olx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFx1MDAyNlx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04NTAtXHRcdG10NzZfd3IoZGV2LCBNVF9SUk9fSU5EX0NNRF9TSUdOQVRVUkVfQkFTRTAsIDB4MTUwMTBlMDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz04Njg9dm9pZCBtdDc5OTZfcnJvX2h3X2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODg3LVx0XHRcdFx0IE1UX1JST18zXzFfR0xPQkFMX0NPTkZJR19SWERNQURfU0VMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4ODg6XHRcdFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg4OS1cdFx0XHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTk4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo5OTk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEwMDAtXHRcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEwMjM6XHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAyNC1cdCAgICBkZXYtXHUwMDNlbXQ3Ni5od3Jyb19tb2RlID09IE1UNzZfSFdSUk9fVjNfMSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzk4PXZvaWQgbXQ3OTk2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE4MTEtXHRpZiAobXQ3OTk2X2hhc19od3JybyhkZXYpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE4MTI6XHQgICAgIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTgxMy1cdFx0bXQ3OTk2X3Jyb19tc2R1X3BhZ2VfbWFwX2ZyZWUoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0xNDA2PW10Nzk5Nl9tYWNfYWRkX3R4c19za2Ioc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNDM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MTQ0MDpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNiB3Y2lkLVx1MDAzZXN0YSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTQ0MS1cdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0xNjIwPXZvaWQgbXQ3OTk2X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjM4LVx0Y2FzZSBQS1RfVFlQRV9UWFJYX05PVElGWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjE2Mzk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjQwLVx0XHQgICAgcSA9PSBNVF9SWFFfVFhGUkVFX0JBTkQyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjIyMD1tdDc5OTZfbWFjX3Jlc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjQ4LVx0bXQ3Nl9mb3JfZWFjaF9xX3J4KG1kZXYsIGkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjIyNDk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI1MC1cdFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcdTAwMjZtZGV2LVx1MDAzZXFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyNjQtXHRtdDc2X2Zvcl9lYWNoX3FfcngobWRldiwgaSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjI2NTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjY2LVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNm1kZXYtXHUwMDNlcV9yeFtpXSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjIyOTY6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyOTctXHQgICAgbXQ3OTk2X2hhc19od3JybyhkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjIzMTU6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMzE2LVx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTI0NTE9dm9pZCBtdDc5OTZfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDkyOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTMtXHRcdG10a193ZWRfZGV2aWNlX3N0b3AoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNDk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5NTpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Ni1cdFx0bXRrX3dlZF9kZXZpY2Vfc3RvcChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjUxNC1cdG10NzZfZm9yX2VhY2hfcV9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgaSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjUxNTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTE2LVx0XHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbaV0pKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTUzOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NTQtXHRcdHUzMiB3ZWRfaXJxX21hc2sgPSBNVF9JTlRfVFhfRE9ORV9CQU5EMiB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1NjQ6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTY1LVx0XHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NzYtXHRtdDc2X2Zvcl9lYWNoX3FfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1Nzc6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU3OC1cdFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5xX3J4W2ldKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yOTAxPXZvaWQgbXQ3OTk2X21hY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTE4LVx0XHRtdDc5OTZfbWN1X2dldF9hbGxfc3RhX2luZm8ocGh5LCBVTklfQUxMX1NUQV9UWFJYX1JBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjkxOTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTIwLVx0XHRcdG10Nzk5Nl9tY3VfZ2V0X2FsbF9zdGFfaW5mbyhwaHksIFVOSV9BTExfU1RBX1RYUlhfQURNX1NUQVQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0xODYxPXN0YXRpYyB2b2lkIG10Nzk5Nl9zdGFfc3RhdGlzdGljcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoxOTAyOlx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0xOTAzLVx0XHRzaW5mby1cdTAwM2V0eF9ieXRlcyA9IG1zdGFfbGluay1cdTAwM2V3Y2lkLnN0YXRzLnR4X2J5dGVzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQwOTpcdGlmICghbXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxMC1cdCAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTUtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI0MTY6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNy1cdFx0cGF0aC1cdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cdTAwM2V3ZG1hX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9Njc5PXZvaWQgbXQ3OTk2X2R1YWxfaGlmX3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHdyaXRlX3JlZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjkwLVx0aWYgKHdyaXRlX3JlZykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjY5MTpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTY5Mi1cdFx0XHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXHUwMDI2bWRldi1cdTAwM2VtbWlvLndlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTMtXHRcdFx0XHRcdFx0ICAgIG1kZXYtXHUwMDNlbW1pby5pcnFtYXNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo2OTQ6XHRcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZtZGV2LVx1MDAzZW1taW8ud2VkX2hpZjIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNjk1LVx0XHRcdFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKFx1MDAyNm1kZXYtXHUwMDNlbW1pby53ZWRfaGlmMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9NzI1PXN0YXRpYyB2b2lkIG10Nzk5Nl9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTczMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo3MzI6XHRpZiAoZGV2LVx1MDAzZWhpZjIgXHUwMDI2XHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWRfaGlmMikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03MzMtXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWRfaGlmMiwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo3NDY6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03NDctXHRcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYz03OTI9aXJxcmV0dXJuX3QgbXQ3OTk2X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjc5NjpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc5Ny1cdFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtODAxLVx0aWYgKGRldi1cdTAwM2VoaWYyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6ODAyOlx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTgwMy1cdFx0XHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWRfaGlmMiwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9OTk9c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIwNS1cdGlmIChkZXYtXHUwMDNlaGlmMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjA2Olx0XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjA3LVx0XHRcdG10a193ZWRfZGV2aWNlX2RldGFjaChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0yMTUtZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjIxNjpcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjE3LVx0XHRtdGtfd2VkX2RldmljZV9kZXRhY2goXHUwMDI2ZGV2LVx1MDAzZW10NzYubW1pby53ZWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz0xMjI9bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtMTM5LVx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkUpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjE0MDpcdFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcdTAwMjZkZXYtXHUwMDNlbW1pby53ZWQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTE0MS1cdFx0ICAgICgoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUCkgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9ODYwPWludCBtdDc2X3Rva2VuX2NvbnN1bWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKipwdHh3aSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODc4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo4Nzk6XHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFx1MDAyNmRldi1cdTAwM2VtbWlvLndlZCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODgwLVx0ICAgIHRva2VuIFx1MDAzZT0gZGV2LVx1MDAzZW1taW8ud2VkLndsYW4udG9rZW5fc3RhcnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTkxMj1tdDc2X3Rva2VuX3JlbGVhc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCB0b2tlbiwgYm9vbCAqd2FrZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo5Mjk6XHRcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy05MzAtXHRcdCAgICB0b2tlbiBcdTAwM2U9IGRldi1cdTAwM2VtbWlvLndlZC53bGFuLnRva2VuX3N0YXJ0IFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9OTM9aW50IG10NzZfd2VkX2RtYV9zZXR1cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsIGJvb2wgcmVzZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xMDEtXHRmbGFncyA9IHEtXHUwMDNlZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjEwMjpcdGlmICghcS1cdTAwM2V3ZWQgfHwgIW10a193ZWRfZGV2aWNlX2FjdGl2ZShxLVx1MDAzZXdlZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jLTEwMy1cdFx0cS1cdTAwM2VmbGFncyBcdTAwMjY9IH5NVF9RRkxBR19XRUQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYz0xODM9aW50IG10NzZfd2VkX25ldF9zZXR1cF90YyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5ODUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCBEZWZpbml0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCB2YXJpYWJsZSBpcyBkZWZpbmVkLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHJlc2lkaW5nIHdpdGhpbiB0aGUgYGluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaGAgaGVhZGVyIGZpbGUuIEl0IHNlZW1zIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RpbmcgYSBNZWRpYVRlayBXaWRlYmFuZCBFY2hvIENhbmNlbGxhdGlvbiAoV0VEKSBjb250ZXh0LiBUaW1lIHRvIGNvbmZpcm0gdGhpcyBieSBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHZlcmlmeWluZyB0aGUgZGVmaW5pdGlvbiYjMzk7cyBsb2NhdGlvbiBhbmQgcHVycG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDk6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXRrX3dlZF9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oPTI2ND1zdGF0aWMgaW5saW5lIGJvb2wgbXRrX3dlZF9pc19hbXNkdV9zdXBwb3J0ZWQoc3RydWN0IG10a193ZWRfZGV2aWNlICpkZXYpXG4tLVxuaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oLTI3My0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmg6Mjc0OiNkZWZpbmUgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKF9kZXYpICEhKF9kZXYpLVx1MDAzZW9wc1xuaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oLTI3NS0jZGVmaW5lIG10a193ZWRfZGV2aWNlX2RldGFjaChfZGV2KSAoX2RldiktXHUwMDNlb3BzLVx1MDAzZWRldGFjaChfZGV2KVxuLS1cbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaC0zMDgtI2Vsc2VcbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaDozMDk6c3RhdGljIGlubGluZSBib29sIG10a193ZWRfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaC0zMTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ0MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIHJlYWxseSBqdXN0IGRvZXMgYSBzaW1wbGUgY2hlY2s6IGAhIShfZGV2KS0mZ3Q7b3BzYC4gIE5vdGhpbmcgdG9vIGNvbXBsZXggdGhlcmUuIEJ1dCwgaG9sZCBvbi4uLiBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgVVNCIGRldmljZSwgYGRldi0mZ3Q7bW1pb2AgaXNuJiMzOTt0IGFjdHVhbGx5IHZhbGlkLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LiBUaGlzIG1lYW5zIGBkZXYtJmd0O21taW8ud2VkLm9wc2AgaXMgZ29pbmcgdG8gYmUgcmVhZGluZyBnYXJiYWdlIGRpcmVjdGx5IGZyb20gYGRldi0mZ3Q7dXNiYC4gQW5kIHRoYXQgKmNvdWxkKiByZXN1bHQgaW4gYSBub24tTlVMTCB2YWx1ZSwgd2hpY2ggd291bGQgYmUgcHJvYmxlbWF0aWMuCgpSaWdodCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYGRldi0mZ3Q7bW1pby53ZWRgIGlzIGF0IHNvbWUgZml4ZWQgb2Zmc2V0IHdpdGhpbiBgZGV2LSZndDttbWlvYC4gIFdoZW4gaXQmIzM5O3MgYSBVU0IgZGV2aWNlLCB0aGUgc3lzdGVtIHVzZXMgYGRldi0mZ3Q7dXNiYCBpbnN0ZWFkIG9mIGBkZXYtJmd0O21taW9gLiBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHRoZSBkZWZpbml0aW9ucyBmb3IgYHN0cnVjdCBtdDc2X3VzYmAgYW5kIGBzdHJ1Y3QgbXQ3Nl9tbWlvYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRob3NlIHN0cnVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBtdDc2X3VzYiBcXHsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD02NDk9c3RydWN0IG10NzZfbWN1IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02NjItI2RlZmluZSBNQ1VfUkVTUF9VUkJfU0laRVx0MTAyNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjYzOnN0cnVjdCBtdDc2X3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02NjQtXHRzdHJ1Y3QgbXV0ZXggdXNiX2N0cmxfbXR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk3NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4KCioqRGl2aW5nIERlZXAgaW50byBtdDc2IFN0cnVjdHVyZXMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgbXQ3NiBkcml2ZXIgaXMgc3RydWN0dXJlZC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb21wYXJpbmcgdGhlIGBzdHJ1Y3QgbXQ3Nl91c2JgIGFuZCBgc3RydWN0IG10NzZfbW1pb2AgZGVmaW5pdGlvbnMuIEFzIGFuIGV4cGVydCwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSBrZXkgZGlmZmVyZW5jZXM6IGhvdyB0aGUgaGFyZHdhcmUgYWNjZXNzIGlzIGhhbmRsZWQsIGludGVycnVwdCBtZWNoYW5pc21zLCBhbmQgdGhlIG92ZXJhbGwgZGV2aWNlIGluaXRpYWxpemF0aW9uIGZsb3cuIGBtdDc2X3VzYmAgc2hvdWxkIGhhdmUgYSBVU0Itc3BlY2lmaWMgZGVzY3JpcHRvciwgbGlrZWx5IGZvciBoYW5kbGluZyBlbmRwb2ludHMgYW5kIHRyYW5zZmVyIGJ1ZmZlcnMuIGBtdDc2X21taW9gLCBvbiB0aGUgb3RoZXIgaGFuZCwgd2lsbCBwcm9iYWJseSBoYXZlIHJlZ2lzdGVyIG9mZnNldHMgYW5kIHBvc3NpYmx5IFBDSSBvciBvdGhlciBtZW1vcnkgbWFwcGVkIElPIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGRpZmZlcmVuY2VzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkaXZlcmdlbmNlIG9mIGRlc2lnbi4gVGhpcyBjb21wYXJpc29uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgY29yZSBtdDc2IGZ1bmN0aW9uYWxpdHkgaXMgYWRhcHRlZCBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIGludGVyZmFjZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNoYXJlZCBlbGVtZW50cywgaW5kaWNhdGluZyBhIGNvbW1vbiBjb3JlLCBhbmQgYWxzbyB0aGUgYWRhcHRlci1zcGVjaWZpYyBwYXJ0cyB0aGF0IEkmIzM5O2xsIG5lZWQgdG8gaXNvbGF0ZSBpZiBJJiMzOTttIHBsYW5uaW5nIHRvIHdvcmsgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY2MzpcdHN0cnVjdCBtdDc2X3VzYiB7XG4gNjY0Olx0XHRzdHJ1Y3QgbXV0ZXggdXNiX2N0cmxfbXR4O1xuIDY2NTpcdFx0dTggKmRhdGE7XG4gNjY2Olx0XHR1MTYgZGF0YV9sZW47XG4gNjY3Olx0XG4gNjY4Olx0XHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdHVzX3dvcmtlcjtcbiA2Njk6XHRcdHN0cnVjdCBtdDc2X3dvcmtlciByeF93b3JrZXI7XG4gNjcwOlx0XG4gNjcxOlx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc3RhdF93b3JrO1xuIDY3MjpcdFxuIDY3MzpcdFx0dTggb3V0X2VwW19fTVRfRVBfT1VUX01BWF07XG4gNjc0Olx0XHR1OCBpbl9lcFtfX01UX0VQX0lOX01BWF07XG4gNjc1Olx0XHRib29sIHNnX2VuO1xuIDY3NjpcdFxuIDY3NzpcdFx0c3RydWN0IG10NzZ1X21jdSB7XG4gNjc4Olx0XHRcdHU4ICpkYXRhO1xuIDY3OTpcdFx0XHQvKiBtdWx0aXBsZSByZWFkcyAqL1xuIDY4MDpcdFx0XHRzdHJ1Y3QgbXQ3Nl9yZWdfcGFpciAqcnA7XG4gNjgxOlx0XHRcdGludCBycF9sZW47XG4gNjgyOlx0XHRcdHUzMiBiYXNlO1xuIDY4MzpcdFx0fSBtY3U7XG4gNjg0Olx0fTtcbiA2ODU6XHRcbiA2ODY6XHQjZGVmaW5lIE1UNzZTX1hNSVRfQlVGX1NaXHQweDNmZTAwXG4gNjg3Olx0I2RlZmluZSBNVDc2U19OVU1fVFhfRU5UUklFU1x0MjU2XG4gNjg4Olx0I2RlZmluZSBNVDc2U19OVU1fUlhfRU5UUklFU1x0NTEyXG4gNjg5Olx0c3RydWN0IG10NzZfc2RpbyB7XG4gNjkwOlx0XHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgdHhyeF93b3JrZXI7XG4gNjkxOlx0XHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdHVzX3dvcmtlcjtcbiA2OTI6XHRcdHN0cnVjdCBtdDc2X3dvcmtlciBuZXRfd29ya2VyO1xuIDY5MzpcdFx0c3RydWN0IG10NzZfd29ya2VyIHN0YXRfd29ya2VyO1xuIDY5NDpcdFxuIDY5NTpcdFx0dTggKnhtaXRfYnVmO1xuIDY5NjpcdFx0dTMyIHhtaXRfYnVmX3N6O1xuIDY5NzpcdFxuIDY5ODpcdFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcbiA2OTk6XHRcdHZvaWQgKmludHJfZGF0YTtcbiA3MDA6XHRcdHU4IGh3X3ZlcjtcbiA3MDE6XHRcdHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7XG4gNzAyOlx0XG4gNzAzOlx0XHRpbnQgcHNlX21jdV9xdW90YV9tYXg7XG4gNzA0Olx0XHRzdHJ1Y3Qge1xuIDcwNTpcdFx0XHRpbnQgcHNlX2RhdGFfcXVvdGE7XG4gNzA2Olx0XHRcdGludCBwbGVfZGF0YV9xdW90YTtcbiA3MDc6XHRcdFx0aW50IHBzZV9tY3VfcXVvdGE7XG4gNzA4Olx0XHRcdGludCBwc2VfcGFnZV9zaXplO1xuIDcwOTpcdFx0XHRpbnQgZGVmaWNpdDtcbiA3MTA6XHRcdH0gc2NoZWQ7XG4gNzExOlx0XG4gNzEyOlx0XHRpbnQgKCpwYXJzZV9pcnEpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnNfaW50ciAqaW50cik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDAwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgc3RydWN0IG10NzZfbW1pb2AqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIGRpc3NlY3QgYHN0cnVjdCBtdDc2X21taW9gLiBJIGtub3cgaXQmIzM5O3MgYSBjcml0aWNhbCBzdHJ1Y3R1cmUsIGxpa2VseSBob2xkaW5nIHRoZSBiYXNlIGFkZHJlc3NlcyBhbmQgcmVsYXRlZCBwYXJhbWV0ZXJzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBNZWRpYVRlayA3Nnh4IFdpRmkgaGFyZHdhcmUuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgaGludHMgYWJvdXQgaG93IHRoZSBkcml2ZXIgbWFwcyB0aGUgcGh5c2ljYWwgTU1JTyByZWdpb25zIGludG8gdmlydHVhbCBtZW1vcnksIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgYWRkcmVzcyByZW1hcHBpbmcgaWYgdGhlIGRldmljZSBpc24mIzM5O3QgaW4gYSBmaXhlZCBsb2NhdGlvbi4gSSYjMzk7bSBpbW1lZGlhdGVseSBzY2FubmluZyBmb3IgbWVtYmVycyB0aGF0IGxvb2sgbGlrZSByZWdpc3RlciBvZmZzZXRzLCBhbmQgYWxzbyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgaW5kaWNhdGUgYnVzLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIG1heWJlIFBDSWUgQkFSIGluZm9ybWF0aW9uIG9yIHNvbWUga2luZCBvZiBJT01NVSBzZXR1cCBpZiB0aGlzIGlzIHVzZWQuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBvciBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCBhcm91bmQgdGhpcyBzdHJ1Y3QgdG8gZW5zdXJlIHByb3BlciBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGludGVycnVwdCBoYW5kbGVycy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBidWdzKSBhcmUgb2Z0ZW4gZm91bmQuIEZpbmFsbHksIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRlZmluaXRpb24mIzM5O3Mgc2l6ZSBhbmQgYW55IGFsaWdubWVudCByZXF1aXJlbWVudHM7IHRoYXQgY2FuIHJldmVhbCBhIGxvdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJhbCBhc3N1bXB0aW9ucyBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDk6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IG10NzZfbW1pbyBcXHsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD02ODk9c3RydWN0IG10NzZfc2RpbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzE1OnN0cnVjdCBtdDc2X21taW8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzE2LVx0dm9pZCBfX2lvbWVtICpyZWdzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ0MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBgbXQ3Nl9tbWlvYCBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc2X21taW9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGF5b3V0LCBtZW1iZXJzLCBhbmQgcHVycG9zZSBvZiB0aGlzIHN0cnVjdHVyZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBleGFjdCBkZWZpbml0aW9uIGl0c2VsZi4gSXQmIzM5O3MgY3J1Y2lhbCB0byBoYXZlIGEgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHN0cnVjdHVyZSBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIGluIG15IG1pbmQgcmVnYXJkaW5nIGhvdyB0aGUgcmVnaXN0ZXJzIGFyZSBtYXBwZWQsIHRoZSBiaXRmaWVsZHMgdXNlZCwgYW5kIGhvdyBpdCBhbGwgaGFuZ3MgdG9nZXRoZXIuIE9ubHkgdGhlbiBjYW4gSSBiZSBjb25maWRlbnQgaW4gbXkgbmV4dCBzdGVwcywgd2hldGhlciBJJiMzOTttIGRlYnVnZ2luZywgb3B0aW1pemluZywgb3IgcmVmYWN0b3JpbmcgcmVsYXRlZCBjb2RlLiBHcmFiYmluZyB0aGUgZGVmaW5pdGlvbiBpcyB0aGUgb25seSB3YXkgdG8gZG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcxNTpcdHN0cnVjdCBtdDc2X21taW8ge1xuIDcxNjpcdFx0dm9pZCBfX2lvbWVtICpyZWdzO1xuIDcxNzpcdFx0c3BpbmxvY2tfdCBpcnFfbG9jaztcbiA3MTg6XHRcdHUzMiBpcnFtYXNrO1xuIDcxOTpcdFxuIDcyMDpcdFx0c3RydWN0IG10a193ZWRfZGV2aWNlIHdlZDtcbiA3MjE6XHRcdHN0cnVjdCBtdGtfd2VkX2RldmljZSB3ZWRfaGlmMjtcbiA3MjI6XHRcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldDtcbiA3MjM6XHRcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldF9jb21wbGV0ZTtcbiA3MjQ6XHRcbiA3MjU6XHRcdHN0cnVjdCBhaXJvaGFfcHBlX2RldiBfX3JjdSAqcHBlX2RldjtcbiA3MjY6XHRcdHN0cnVjdCBhaXJvaGFfbnB1IF9fcmN1ICpucHU7XG4gNzI3Olx0XHRwaHlzX2FkZHJfdCBwaHlfYWRkcjtcbiA3Mjg6XHRcdGludCBucHVfdHlwZTtcbiA3Mjk6XHR9O1xuIDczMDpcdFxuIDczMTpcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyB7XG4gNzMyOlx0XHR1bmlvbiB7XG4gNzMzOlx0XHRcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQ7XG4gNzM0Olx0XHRcdHUxNiB3Y2lkX2lkeDtcbiA3MzU6XHRcdH07XG4gNzM2Olx0XG4gNzM3Olx0XHR1MzIgcmVvcmRlcl90aW1lO1xuIDczODpcdFxuIDczOTpcdFx0dTMyIGFtcGR1X3JlZjtcbiA3NDA6XHRcdHUzMiB0aW1lc3RhbXA7XG4gNzQxOlx0XG4gNzQyOlx0XHR1OCBpdls2XTtcbiA3NDM6XHRcbiA3NDQ6XHRcdHU4IHBoeV9pZHg6MjtcbiA3NDU6XHRcdHU4IGFnZ3I6MTtcbiA3NDY6XHRcdHU4IHFvc19jdGw7XG4gNzQ3Olx0XHR1MTYgc2Vxbm87XG4gNzQ4Olx0XG4gNzQ5Olx0XHR1MTYgZnJlcTtcbiA3NTA6XHRcdHUzMiBmbGFnO1xuIDc1MTpcdFx0dTggZW5jX2ZsYWdzO1xuIDc1MjpcdFx0dTggZW5jb2Rpbmc6MywgYnc6NDtcbiA3NTM6XHRcdHVuaW9uIHtcbiA3NTQ6XHRcdFx0c3RydWN0IHtcbiA3NTU6XHRcdFx0XHR1OCBoZV9ydTozO1xuIDc1NjpcdFx0XHRcdHU4IGhlX2dpOjI7XG4gNzU3Olx0XHRcdFx0dTggaGVfZGNtOjE7XG4gNzU4Olx0XHRcdH07XG4gNzU5Olx0XHRcdHN0cnVjdCB7XG4gNzYwOlx0XHRcdFx0dTggcnU6NDtcbiA3NjE6XHRcdFx0XHR1OCBnaToyO1xuIDc2MjpcdFx0XHR9IGVodDtcbiA3NjM6XHRcdH07XG4gNzY0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMzE3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBSWCBBZ2dyZWdhdGlvbiBCdWcgaW4gbXQ3NioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbXQ3NmAgY29kZSBhbmQgSSB0aGluayBJJiMzOTt2ZSBzcG90dGVkIGEgZnVuY3Rpb25hbCBidWcuIEl0IGxvb2tzIGxpa2UgdGhlIGxheW91dCBvZiB0aGUgYG10NzZfbW1pb2AgYW5kIGBtdDc2X3VzYmAgc3RydWN0cyBhcmUgb3ZlcmxhcHBpbmcsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgYHdlZGAgbWVtYmVyIGluIHRoZSBgbW1pb2Agc3RydWN0IGlzIGF0IG9mZnNldCAxNiAoYXNzdW1pbmcgNjQtYml0IHBvaW50ZXJzKSwgYW5kIGBzdGF0dXNfd29ya2VyYCBpcyBpbiBgbXQ3Nl91c2JgLiBUaGlzIG1lYW5zIHRoZXJlJiMzOTtzIGEgbWVtb3J5IG92ZXJsYXAsIGFuZCB0aGUgYG1taW9gJiMzOTtzIGBucHVgIGZpZWxkIGlzIGxpa2VseSBhbHNvIG92ZXJsYXBwaW5nIHdpdGggdGhpbmdzIGluIGBtdDc2X3VzYmAsIGxpa2UgYGluX2VwYCBvciBgbWN1YC4gVGhlIHByb2JsZW0gYXJpc2VzIHdoZW4gc29tZSBub24temVybyB2YWx1ZXMgaW4gdGhlIFVTQiBzaWRlIG9mIHRoaW5ncyBtYWtlIGl0IGxvb2sgbGlrZSB0aGUgYG1taW9gJiMzOTtzIGBucHVgIGZpZWxkIGlzIGFjdGl2ZSB3aGVuIGl0IHNob3VsZG4mIzM5O3QgYmUuCgpDb25zZXF1ZW50bHksIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBjYW4gaW5jb3JyZWN0bHkgcmV0dXJuIHRydWUuIFRoZW4gaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIHRoZSBjb2RlIGVuZHMgdXAgcXVldWluZyBwYWNrZXRzIHdpdGggYF9fc2tiX3F1ZXVlX3RhaWxgIGluc3RlYWQgb2YgcGVyZm9ybWluZyB0aGUgYXBwcm9wcmlhdGUgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZywgYnJlYWtpbmcgdGhlIFVTQiBkZXZpY2UgYmVoYXZpb3IuIEl0IHNlZW1zIHRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGBtdDc2X2lzX21taW8oZGV2KWAgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlIGRldmljZSBpcyBhY3R1YWxseSBhY3RpdmUgd2l0aGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgaGVyZS4gIEkgd29uZGVyIGlmIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIGhhcyB0aGUgc2FtZSBidWcsIHNpbmNlIGl0JiMzOTtzIGFsc28gY2FsbGVkIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBMZXQmIzM5O3MgY2hlY2sgdGhlIGNvZGUuLi4gYWgsIHllcywgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgKmFsc28qIHNlZW1zIHN1c2NlcHRpYmxlIHRvIHRoZSBvdmVybGFwIGlzc3VlLCBhcyBpdCB1c2VzIHRoZSBzYW1lIGB3ZWRgIGZpZWxkLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgaXQgY2hlY2tzIGAhIShfZGV2KS0mZ3Q7b3BzYCwgd2hpY2ggb2ZmZXJzICpzb21lKiBwcm90ZWN0aW9uLiAgSWYgYGRldi0mZ3Q7bW1pby53ZWQub3BzYCBvdmVybGFwcyB3aXRoIHNvbWUgbm9uLXplcm8gVVNCIGZpZWxkLCBpdCBtaWdodCBzdGlsbCByZXR1cm4gdHJ1ZSwgaG93ZXZlciB0aGUgcGF0Y2ggaXMgbGltaXRlZCBpbiBhZGRyZXNzaW5nIHRoaXMgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGViYXNlLgoKU28sIGluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgVVNCIGFuZCBTRElPIGRldmljZXMsIGFkZGluZyBhIGNoZWNrIGZvciBgbXQ3Nl9pc19tbWlvYCBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gTm93LCBJIHJlYWxseSB0aGluayB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGNhdWdodCBhbmQgaGFuZGxlZC4KCkZvY3VzaW5nIGluLCBJJiMzOTttIHRoaW5raW5nIG9mIGxvb2tpbmcgYXQgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYCwgYW5kIGFsc28gYG10NzZfZG1hX3J4X2NsZWFudXBgIGFuZCBgbXQ3Nl9kbWFfcnhfcmVzZXRgLiBXYWl0LCBgbXQ3Nl9kbWFfcnhfY2xlYW51cGAgaXMgb25seSBmb3IgRE1BIGRldmljZXMsIHNvIHRoYXQmIzM5O3Mgbm90IHJlbGV2YW50IGhlcmUgc2luY2Ugd2UmIzM5O3JlIGZpeGluZyBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0JiMzOTtzIHNoYXJlZCBiZXR3ZWVuIGJvdGggZGV2aWNlIHR5cGVzLCBsaWtlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4gSSB3YW50IHRvIGNoZWNrIHdoZXJlIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBpcyB1c2VkLCBhbHNvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3BwZV9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTczNz1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc0MjpzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDAxNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBVbnVzZWQgVmFyaWFibGUgaW4gbXQ3NioqCgpPa2F5LCBzbyBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuLi4gdGhhdCYjMzk7cyBhIGJpdCBvZGQuIEkmIzM5O20gcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIGBtdDc2YCBkcml2ZXIsIGFuZCB0aGF0IG5hbWUgZG9lc24mIzM5O3QgaW1tZWRpYXRlbHkgcmluZyBhIGJlbGwuIE15IGluaXRpYWwgc3VzcGljaW9uIGlzIHRoYXQgaXQgbWlnaHQgYmUgdW51c2VkLCBvciwgYXQgYmVzdCwgdW5kZXJ1dGlsaXplZC4gVGhlIGNvZGUgaXMgdXN1YWxseSB3ZWxsLW9yZ2FuaXplZCwgc28gZmluZGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIGlzIHVudXN1YWwuCgpMZXQmIzM5O3MgY29uZmlybSB0aGlzIGJ5IHNlYXJjaGluZyB0aGUgZW50aXJlIHNvdXJjZSB0cmVlIGZvciB0aGUgdmFyaWFibGUgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBiZWZvcmUgY29uY2x1ZGluZyBhbnl0aGluZy4gSXQmIzM5O3MgcG9zc2libGUgaXQmIzM5O3MgdXNlZCBpbiBzb21lIG9ic2N1cmUgY29ybmVyIG9mIHRoZSBjb2RlYmFzZSwgb3IgbWF5YmUgaXQmIzM5O3MgdXNlZCBjb25kaXRpb25hbGx5LCBhbmQgSSBtaXNzZWQgaXQgcHJldmlvdXNseS4gQSBjb21wcmVoZW5zaXZlIHNlYXJjaCB3aWxsIGdpdmUgdXMgdGhlIGRlZmluaXRpdmUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3BwZV9kZXZpY2VfYWN0aXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3Mzc9c3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDI6c3RhdGljIGlubGluZSBib29sIG10NzZfcHBlX2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMDk6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0NDEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgVXNhZ2Ugb2YgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGJpdCBvZiBjb2RlIGFuZCBJIHNlZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAuLi5hbmQgaXQmIzM5O3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgd2hlcmUgaXQmIzM5O3MgYmVpbmcgKmRpcmVjdGx5KiBjYWxsZWQuIEhtbSwgY291bGQgaXQgYmUgcGFydCBvZiBhIGxhcmdlciBwYXRjaCwgb3IgaXMgaXQgcGVyaGFwcyBqdXN0IGEgdXRpbGl0eSBmdW5jdGlvbj8gTmVlZCB0byBkaWcgZGVlcGVyLgoKTGV0JiMzOTtzIHNlZeKApiBJIGtub3cgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgICppcyogdXNlZCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYG10NzZfbnB1X2NoZWNrX3BwZWAsIGFuZCBgbXQ3Nl9ucHVfbmV0X3NldHVwX3RjYC4gSW50ZXJlc3RpbmcuIEkgc2VlbSB0byByZWNhbGwgdGhhdCBgbXQ3Nl9ucHVfY2hlY2tfcHBlYCBpcyBzb21ldGltZXMgaW52b2tlZCBmcm9tIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCBzbyBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdOKApiBub3BlLCBsZXTigJlzIGRvdWJsZS1jaGVjayBob3cgYG10NzZfbnB1X2NoZWNrX3BwZWAgaXRzZWxmIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X25wdV9jaGVja19wcGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNjQ4PWludCBtdDc2X3Rlc3Rtb2RlX2FsbG9jX3NrYihzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgdTMyIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY1MC0jaWZkZWYgQ09ORklHX01UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNjUxOnZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY1Mi1cdFx0XHR1MzIgaW5mbyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTY2Nz1pbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NzAtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE2NzE6c3RhdGljIGlubGluZSB2b2lkIG10NzZfbnB1X2NoZWNrX3BwZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NzItXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz00MTE9bXQ3OTk2X21hY19maWxsX3J4KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy02ODMtXHRcdFx0XHQgICAgICppbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjY4NDpcdFx0bXQ3Nl9ucHVfY2hlY2tfcHBlKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBza2IsICppbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTY4NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jPTYyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXQ3Nl9ucHVfZGVxdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTExNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MTE2OnZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xMTctXHRcdFx0dTMyIGluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xNDEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxNDI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9ucHVfY2hlY2tfcHBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTQzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTYyMwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDgyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzYgTlBVIERldmljZSBBY3RpdmUgQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTk2X21hY19maWxsX3J4YCBmdW5jdGlvbiwgYW5kIGl0IGNhbGxzIGBtdDc2X25wdV9jaGVja19wcGVgLiBJIGtub3cgYG10Nzk5NmAgaXMgUENJZS1vbmx5LCBzbyB0aGUgb25seSBwbGFjZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgZ2V0cyBjYWxsZWQgZm9yIFVTQi9TRElPIGRldmljZXMgaXMgd2l0aGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBMZXQgbWUgY2lyY2xlIGJhY2sgdG8gdGhhdCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBmdW5jdGlvbi4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIGFuZCBgbXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZWAuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uOgoKKiAgIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgCiogICBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAKKiAgIGBtdDc2c19wcm9jZXNzX3J4X3F1ZXVlYAoKT2theSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBpcyBpbmRlZWQgcmVhY2hhYmxlLiBZdXAsIGl0JiMzOTtzIGluIHRoZSBOQVBJIHBvbGwgbG9vcCBmb3IgVVNCIFJYLiBXaGVuIGEgcGFja2V0IGFycml2ZXMgdmlhIFVTQiwgYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIGdldHMgY2FsbGVkLiBUaGlzIGRlcXVldWVzIFNLQnMgYW5kIHRoZW4gY2FsbHMgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGluY29ycmVjdGx5IHJldHVybnMgdHJ1ZSwgd2UgZW5kIHVwIGNhbGxpbmcgYF9fc2tiX3F1ZXVlX3RhaWxgIGluc3RlYWQgb2YgYG10NzZfcnhfYWdncl9yZW9yZGVyYC4gVGhpcyBtZWFucyB3ZSBieXBhc3MgdGhlIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgbG9naWMuIFRoYXQmIzM5O3MgYSBiYWQgdGhpbmcuIEl0IGNvdWxkIGNhdXNlIG91dC1vZi1vcmRlciBwYWNrZXRzIG9yIGV2ZW4gbWVtb3J5IGxlYWtzIGlmIHRoZSByZW9yZGVyIGJ1ZmZlciBoYXMgZGVwZW5kZW5jaWVzLiBCeSBmaXhpbmcgdGhpcywgcGFja2V0cyB3aWxsIGZsb3cgdGhyb3VnaCBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIHByb3Blcmx5LgoKTm93LCB3aGljaCBjb25maWd1cmF0aW9ucyBkbyBJIG5lZWQgdG8gZW5hYmxlIHRvIHRyaWdnZXIgdGhpcz8KCkkmIzM5O3ZlIGdvdDoKCiogICBgTVQ3Nl9DT1JFYAoqICAgYE1UNzZfVVNCYAoqICAgYE1UNzZfU0RJT2AKKiAgIGBNVDc5MjFVYAoqICAgYE1UNzkyNVVgCiogICBgTVQ3NngwVWAKKiAgIGBNVDc2eDJVYAoqICAgYE1UNzY2M1VgCiogICBgTVQ3NjYzU2AKKiAgIGBNVDc5MjFTYAoKTGV0IG1lIHF1aWNrbHkgbGlzdCB0aGVtOgoKKiAgIGBNVDc2X0NPUkVgCiogICBgTVQ3Nl9VU0JgCiogICBgTVQ3Nl9TRElPYAoqICAgYE1UNzZ4MFVgCiogICBgTVQ3NngyVWAKKiAgIGBNVDc2NjNVYAoqICAgYE1UNzY2M1NgCiogICBgTVQ3OTIxVWAKKiAgIGBNVDc5MjFTYAoqICAgYE1UNzkyNVVgCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBgTVQ3Nl9OUFVgLiBTaG91bGQgSSBhZGQgdGhhdCB0b28/IFRoZSBmaXggYWRkcmVzc2VzIHRoZSBjYXNlIHdoZXJlIGBNVDc2X05QVWAgbWlnaHQgYmUgZW5hYmxlZCAob3IgYSBwb2ludGVyIGlzIGFjY2Vzc2VkKSBidXQgdGhlIGRldmljZSBpc24mIzM5O3QgTU1JTy4gQnV0IGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhY2Nlc3NlcyBgZGV2LSZndDttbWlvLm5wdWAuIElmIGBNVDc2X05QVWAgaXNuJiMzOTt0IGVuYWJsZWQsIGRvZXMgdGhhdCBtZWFuIGBkZXYtJmd0O21taW8ubnB1YCBkb2VzbiYjMzk7dCBleGlzdD8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYHN0cnVjdCBtdDc2X21taW9gIGRlZmluaXRpb24uIFJpZ2h0LCBgc3RydWN0IGFpcm9oYV9ucHUgX19yY3UgKm5wdTtgIGlzICphbHdheXMqIHRoZXJlLCBpdCYjMzk7cyBub3QgdW5kZXIgYW4gYCNpZmRlZiBDT05GSUdfTVQ3Nl9OUFVgLiBIbW0sIGJ1dCBgTVQ3Nl9OUFVgIG1pZ2h0IHN0aWxsIGJlIG5lZWRlZCB0byBjb21waWxlIGBucHUuY2AuIFRvIGJlIHNhZmUsIGxldCYjMzk7cyBpbmNsdWRlIGBNVDc2X05QVWAuCgpPa2F5LCB0aGUgcmVmaW5lZCBmb2N1cyBzeW1ib2xzIG5vdyBiZWNvbWU6CgoqICAgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAKKiAgIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYAoqICAgYG10NzZzX3Byb2Nlc3NfcnhfcXVldWVgCiogICBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIChiZWNhdXNlIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGdldHMgY2FsbGVkKQoKQW5kIGZpbmFsbHksIGxldCYjMzk7cyBjaGVjayBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3J4X2FnZ3JfcmVvcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM9OTA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6OTE6bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jLTkyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jPTExOT1tdDc2X3J4X2FnZ3JfY2hlY2tfY3RsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jLTE0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6MTQ4OnZvaWQgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM9MjQ0PWludCBtdDc2X3J4X2FnZ3Jfc3RhcnQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsIHU4IHRpZG5vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMjU4LVx0dGlkLVx1MDAzZW51bSA9IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYzoyNTk6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0aWQtXHUwMDNlcmVvcmRlcl93b3JrLCBtdDc2X3J4X2FnZ3JfcmVvcmRlcl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMjYwLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dGlkLVx1MDAzZWxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNTU0PXZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjctXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTY4Olx0XHRcdG10NzZfcnhfYWdncl9yZW9yZGVyKHNrYiwgXHUwMDI2ZnJhbWVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3OTU9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3OTYtXHRcdFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3OTc6dm9pZCBtdDc2X3J4X2FnZ3JfcmVvcmRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpmcmFtZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5OC12b2lkIG10NzZfdGVzdG1vZGVfdHhfcGVuZGluZyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjYwCgkJCQkJCQlvdXRwdXQ6IDMzNwoJCQkJCQkJdGhvdWdodHM6IDM2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJYIEFnZ3JlZ2F0aW9uIEZpeCoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCwgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmAgYXMgdGhlIGNydWNpYWwgZm9jdXMgc3ltYm9sLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgcmVhc29uaW5nLCBiZWNhdXNlIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkLCB3ZWxsLWRlZmluZWQgcHJvYmxlbS4KClRoZSBpc3N1ZSBzdGVtcyBmcm9tIGEgc3VidGxlIGZsYXcgd2l0aGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBJdCBzZWVtcyB0aGVzZSBmdW5jdGlvbnMgd2VyZSwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBtaXNpZGVudGlmeWluZyBub24tTU1JTyBkZXZpY2VzIOKAkyBzcGVjaWZpY2FsbHkgVVNCIGFuZCBTRElPIG9uZXMg4oCTIGFzIGFjdGl2ZSBNTUlPIGRldmljZXMuIFRoaXMgb2NjdXJzIGJlY2F1c2UgdGhlIGZ1bmN0aW9ucyB3ZXJlIGFjY2Vzc2luZyBmaWVsZHMgd2l0aGluIGEgdW5pb24gc3RydWN0dXJlLiBUaGUgZGF0YSBsYXlvdXQgb3ZlcmxhcHBlZCBiZXR3ZWVuIE1NSU8gYW5kIFVTQi9TRElPIHNwZWNpZmljIGRhdGEsIGxlYWRpbmcgdG8gdGhlIGluY29ycmVjdCB0cnVlIHJldHVybi4KClRoZSByaXBwbGUgZWZmZWN0IGlzIHNpZ25pZmljYW50LiBUaGlzIGluY29ycmVjdCByZXR1cm4gdmFsdWUgd291bGQgY2F1c2UgdGhlIFJYIHBhdGgsIHdpdGhpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgdG8gYnlwYXNzIHRoZSBjcnVjaWFsIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgc3RlcCBpbXBsZW1lbnRlZCBpbiBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIGZvciB0aGVzZSBVU0IvU0RJTyBkZXZpY2VzLiBUaGF0JiMzOTtzIGEgZGlyZWN0IHJvdXRlIHRvIHBhY2tldCBsb3NzIGFuZCBvdXQtb2Ytb3JkZXIgZGVsaXZlcnkuIE5vdCBnb29kLCBhbmQgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB5b3UmIzM5O2QgdW5jb3ZlciB0aHJvdWdoIFVTQiBmdXp6aW5nLgoKVGhlIGZpeCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyBzdHJhaWdodGZvcndhcmQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2suIFRoaXMgc2ltcGxlIGFkZGl0aW9uIGlzIGFsbCB0aGF0JiMzOTtzIG5lZWRlZCB0byBwcm9wZXJseSBpZGVudGlmeSB3aGV0aGVyIGEgZGV2aWNlIGlzLCBpbiBmYWN0LCBhbiBNTUlPIGRldmljZS4gVGhpcyBhdm9pZHMgdGhlIGZhdWx0eSBsb2dpYyBpbiB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGFuZCBlbnN1cmVzIHRoZSBjb3JyZWN0IFJYIHBhdGggaXMgdGFrZW4gZm9yIHRoZSBhZmZlY3RlZCBVU0IvU0RJTyBkZXZpY2VzLCB0aHVzIHJlc3RvcmluZyB0aGUgYWdncmVnYXRpb24gcmVvcmRlcmluZy4gVGhlIHBvdGVudGlhbCBmb3IgdGhpcyB0byBtYW5pZmVzdCB1bmRlciBVU0IgZnV6emluZyBtYWtlcyBpdCBhIHNvbGlkIGZ1bmN0aW9uYWwgZml4LCBhIGdvb2QgY2F0Y2guCgpNeSBmb2N1cyBzeW1ib2xzIGFyZTogYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYCwgYG10NzZzX3Byb2Nlc3NfcnhfcXVldWVgLCBhbmQgZXNwZWNpYWxseSwgYG10NzZfcnhfYWdncl9yZW9yZGVyYC4KClRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBzZWVtIHRvIGJlOiBgTVQ3Nl9DT1JFYCwgYE1UNzZfVVNCYCwgYE1UNzZfU0RJT2AsIGFuZCBhbnkgb2YgdGhlIFVTQiBkZXZpY2UgZHJpdmVycyAoIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgIGFuZCBgTVQ3NjYzU2AsIGBNVDc5MjFTYCkuCgpPa2F5LCB3aXRoIHRoYXQgY2xlYXIgaW4gbXkgbWluZCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3Nl9DT1JFJiMzNDssCiAgICAmIzM0O01UNzZfVVNCJiMzNDssCiAgICAmIzM0O01UNzZfU0RJTyYjMzQ7LAogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OywKICAgICYjMzQ7TVQ3NjYzVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNTJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTIxUyYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzZfTlBVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3Nl9yeF9wb2xsX2NvbXBsZXRlJiMzNDssCiAgICAmIzM0O210NzZ1X3Byb2Nlc3NfcnhfcXVldWUmIzM0OywKICAgICYjMzQ7bXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZSYjMzQ7LAogICAgJiMzNDttdDc2X3J4X2FnZ3JfcmVvcmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCB3aGVyZSB0aGV5IGNvdWxkIGluY29ycmVjdGx5IHJldHVybiB0cnVlIGZvciBub24tTU1JTyBkZXZpY2VzIChsaWtlIFVTQiBvciBTRElPKSBieSBhY2Nlc3NpbmcgZmllbGRzIGluIGEgdW5pb24gdGhhdCBvdmVybGFwIHdpdGggVVNCL1NESU8gc3BlY2lmaWMgZGF0YS4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIGNhdXNlZCB0aGUgUlggcGF0aCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCB0byBieXBhc3MgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyAoYG10NzZfcnhfYWdncl9yZW9yZGVyYCkgZm9yIFVTQi9TRElPIGRldmljZXMuIEJ5IGFkZGluZyB0aGUgYG10NzZfaXNfbW1pbyhkZXYpYCBjaGVjaywgdGhlIGNvZGUgY29ycmVjdGx5IGlkZW50aWZpZXMgTU1JTyBkZXZpY2VzIGFuZCByZXN0b3JlcyB0aGUgcHJvcGVyIFJYIHBhdGggZm9yIFVTQi9TRElPIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2X0NPUkUmIzM0OywKICAgICYjMzQ7TVQ3Nl9VU0ImIzM0OywKICAgICYjMzQ7TVQ3Nl9TRElPJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzY2M1MmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFTJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3Nl9OUFUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3J4X3BvbGxfY29tcGxldGUmIzM0OywKICAgICYjMzQ7bXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZSYjMzQ7LAogICAgJiMzNDttdDc2c19wcm9jZXNzX3J4X3F1ZXVlJiMzNDssCiAgICAmIzM0O210NzZfcnhfYWdncl9yZW9yZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgIHdoZXJlIHRoZXkgY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIHRydWUgZm9yIG5vbi1NTUlPIGRldmljZXMgKGxpa2UgVVNCIG9yIFNESU8pIGJ5IGFjY2Vzc2luZyBmaWVsZHMgaW4gYSB1bmlvbiB0aGF0IG92ZXJsYXAgd2l0aCBVU0IvU0RJTyBzcGVjaWZpYyBkYXRhLiBUaGlzIGluY29ycmVjdCByZXR1cm4gdmFsdWUgY2F1c2VkIHRoZSBSWCBwYXRoIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIHRvIGJ5cGFzcyBSWCBhZ2dyZWdhdGlvbiByZW9yZGVyaW5nIChgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgKSBmb3IgVVNCL1NESU8gZGV2aWNlcy4gQnkgYWRkaW5nIHRoZSBgbXQ3Nl9pc19tbWlvKGRldilgIGNoZWNrLCB0aGUgY29kZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBNTUlPIGRldmljZXMgYW5kIHJlc3RvcmVzIHRoZSBwcm9wZXIgUlggcGF0aCBmb3IgVVNCL1NESU8gZGV2aWNlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODozNy45MjQ3NzQ2ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYzNTUxNzE2NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3Nl9DT1JFXCIsXG4gICAgXCJNVDc2X1VTQlwiLFxuICAgIFwiTVQ3Nl9TRElPXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc2NjNTXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjFTXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc2X05QVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZfcnhfcG9sbF9jb21wbGV0ZVwiLFxuICAgIFwibXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCB3aGVyZSB0aGV5IGNvdWxkIGluY29ycmVjdGx5IHJldHVybiB0cnVlIGZvciBub24tTU1JTyBkZXZpY2VzIChsaWtlIFVTQiBvciBTRElPKSBieSBhY2Nlc3NpbmcgZmllbGRzIGluIGEgdW5pb24gdGhhdCBvdmVybGFwIHdpdGggVVNCL1NESU8gc3BlY2lmaWMgZGF0YS4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIGNhdXNlZCB0aGUgUlggcGF0aCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCB0byBieXBhc3MgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyAoYG10NzZfcnhfYWdncl9yZW9yZGVyYCkgZm9yIFVTQi9TRElPIGRldmljZXMuIEJ5IGFkZGluZyB0aGUgYG10NzZfaXNfbW1pbyhkZXYpYCBjaGVjaywgdGhlIGNvZGUgY29ycmVjdGx5IGlkZW50aWZpZXMgTU1JTyBkZXZpY2VzIGFuZCByZXN0b3JlcyB0aGUgcHJvcGVyIFJYIHBhdGggZm9yIFVTQi9TRElPIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODozNy45MjQ3ODQ3MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MTA4ODk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1ZWM0MTY3MWI2MzIxZGU4NWMyNzUxMjIwOWExNDQzY2JjMjg2NmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMDg6NTg6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxcbmluZGV4IDA3OTU1NTU1Zjg0ZDgzLi5hMzJiYTdjMjNmOTJiMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXFxuQEAgLTE3MzYsMTIgKzE3MzYsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxcbiBcXG4gc3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuIHtcXG4tXFx0cmV0dXJuICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cXHUwMDNlbW1pby5ucHUpO1xcbitcXHRyZXR1cm4gbXQ3Nl9pc19tbWlvKGRldikgXFx1MDAyNlxcdTAwMjYgISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVxcdTAwM2VtbWlvLm5wdSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiB7XFxuLVxcdHJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZW1taW8ucHBlX2Rldik7XFxuK1xcdHJldHVybiBtdDc2X2lzX21taW8oZGV2KSBcXHUwMDI2XFx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZW1taW8ucHBlX2Rldik7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgaW50IG10NzZfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODozOC40NzcxNDY4NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjU4MDI3ODc5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3Nl9DT1JFXCIsXG4gICAgXCJNVDc2X1VTQlwiLFxuICAgIFwiTVQ3Nl9TRElPXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc2NjNTXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjFTXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc2X05QVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZfcnhfcG9sbF9jb21wbGV0ZVwiLFxuICAgIFwibXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZVwiLFxuICAgIFwibXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCB3aGVyZSB0aGV5IGNvdWxkIGluY29ycmVjdGx5IHJldHVybiB0cnVlIGZvciBub24tTU1JTyBkZXZpY2VzIChsaWtlIFVTQiBvciBTRElPKSBieSBhY2Nlc3NpbmcgZmllbGRzIGluIGEgdW5pb24gdGhhdCBvdmVybGFwIHdpdGggVVNCL1NESU8gc3BlY2lmaWMgZGF0YS4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIGNhdXNlZCB0aGUgUlggcGF0aCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCB0byBieXBhc3MgUlggYWdncmVnYXRpb24gcmVvcmRlcmluZyAoYG10NzZfcnhfYWdncl9yZW9yZGVyYCkgZm9yIFVTQi9TRElPIGRldmljZXMuIEJ5IGFkZGluZyB0aGUgYG10NzZfaXNfbW1pbyhkZXYpYCBjaGVjaywgdGhlIGNvZGUgY29ycmVjdGx5IGlkZW50aWZpZXMgTU1JTyBkZXZpY2VzIGFuZCByZXN0b3JlcyB0aGUgcHJvcGVyIFJYIHBhdGggZm9yIFVTQi9TRElPIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ1ZWM0MTY3MWI2MzIxZGU4NWMyNzUxMjIwOWExNDQzY2JjMjg2NmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAwODo1ODozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbmluZGV4IDA3OTU1NTU1Zjg0ZDgzLi5hMzJiYTdjMjNmOTJiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuQEAgLTE3MzYsMTIgKzE3MzYsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuIHtcbi1cdHJldHVybiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5ucHUpO1xuK1x0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNlbW1pby5ucHUpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiB7XG4tXHRyZXR1cm4gISFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZW1taW8ucHBlX2Rldik7XG4rXHRyZXR1cm4gbXQ3Nl9pc19tbWlvKGRldikgXHUwMDI2XHUwMDI2ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2VtbWlvLnBwZV9kZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGludCBtdDc2X25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU4OjM4LjQ3NzE0OTMxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDM2MjI3NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBpbiBgbXQ3Ni5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYG10NzZfaXNfbW1pbyhkZXYpIFx1MDAyNlx1MDAyNmAgdG8gYm90aCBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoYXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gdGhpbmtpbmcsIGNhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBjb2RlIHBhdGggaWYgdGhlIGhhcmR3YXJlIGlzIHZpcnR1YWxpemVkP1xuXG5gbXQ3NmAgaXMgdGhlIGRyaXZlciBmb3IgTWVkaWFUZWsgd2lyZWxlc3MgZGV2aWNlcywgcmlnaHQ/IFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIGVmZmVjdGl2ZWx5IGVtdWxhdGUgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSB3aXRoaW4gUUVNVT8gVHlwaWNhbGx5LCB5b3UgY2FuIGdldCBhd2F5IHdpdGggUENJIG9yIFVTQiBkZXZpY2UgZW11bGF0aW9uIG9yIHBhc3MtdGhyb3VnaCwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcywgd2UgZG9uJ3QgdXN1YWxseSBmaW5kIE1lZGlhVGVrIHdpcmVsZXNzIGhhcmR3YXJlIHJlYWRpbHkgYXZhaWxhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gVW5sZXNzIHdlJ3JlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0IGF2b2lkcyBgbXQ3NmAgZW50aXJlbHkuIEFuZCBVU0IgZW11bGF0aW9uLi4uIHdlbGwsIGBtdDc2YCBkb2VzIGhhdmUgVVNCIGRyaXZlcnMsIGxpa2UgdGhlIGBtdDc2eDB1YCwgYG10NzZ4MnVgLCBvciBgbXQ3OTIxdWAgd2hpY2ggd2UgbWlnaHQgdXNlLCB5ZXMuXG5cbkJ1dCBoYW5nIG9u4oCmIGBtdDc2X2lzX21taW8oZGV2KWAuLi4gdGhhdCdzIGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgTWVtb3J5LU1hcHBlZCBJL08uIFNvLCB0aGlzIGJvaWxzIGRvd24gdG86IEFyZSB3ZSB1c2luZyBhIG1lbW9yeS1tYXBwZWQgSS9PIGFwcHJvYWNoIG9yIG5vdD8gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYG10NzZfaXNfbW1pb2AgaXRzZWxmIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIGl0J3MgYWNjdXJhdGUuIEdvdHRhIGxvb2sgYXQgdGhhdCBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTg6NDguNTEzMzc5NzA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjM1NzE4OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9pc19tbWlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jPTI5PW10NzZfbmFwaV90aHJlYWRlZF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjMzOlxcdGlmICghbXQ3Nl9pc19tbWlvKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMzQtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTYxNj1pbnQgbXQ3Nl9jcmVhdGVfcGFnZV9wb29sKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjY0NDpcXHRpZiAobXQ3Nl9pc19tbWlvKGRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNjQ1LVxcdFxcdC8qIHJlbHkgb24gcGFnZV9wb29sIGZvciBETUEgbWFwcGluZyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTU9c3RydWN0IG10NzZfYnVzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMTAtI2RlZmluZSBtdDc2X2lzX3VzYihkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMTE6I2RlZmluZSBtdDc2X2lzX21taW8oZGV2KSAoKGRldiktXFx1MDAzZWJ1cy1cXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTExMi0jZGVmaW5lIG10NzZfaXNfc2RpbyhkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzM3PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3Mzk6XFx0cmV0dXJuIG10NzZfaXNfbW1pbyhkZXYpIFxcdTAwMjZcXHUwMDI2ICEhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cXHUwMDNlbW1pby5ucHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTc0Mj1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzQ0OlxcdHJldHVybiBtdDc2X2lzX21taW8oZGV2KSBcXHUwMDI2XFx1MDAyNiAhIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZW1taW8ucHBlX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYz0zMzA9c3RhdGljIGludCBtdDc2MTVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTM4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYzozOTA6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNiAocnhkMCBcXHUwMDI2IGNzdW1fbWFzaykgPT0gY3N1bV9tYXNrIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtMzkxLVxcdCAgICAhKGNzdW1fc3RhdHVzIFxcdTAwMjYgKEJJVCgwKSB8IEJJVCgyKSB8IEJJVCgzKSkpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM9NzA5PWludCBtdDc2MTVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzYxNV9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmMtNzIxLVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBpbmZvLVxcdTAwM2Vjb250cm9sLnZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYzo3MjI6XFx0Ym9vbCBpc19tbWlvID0gbXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTcyMy1cXHR1MzIgdmFsLCBzel90eGQgPSBpc19tbWlvID8gTVRfVFhEX1NJWkUgOiBNVF9VU0JfVFhEX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWMuYz0xMDk0PXZvaWQgbXQ3NjE1X21hY19zZXRfcmF0ZXMoc3RydWN0IG10NzYxNV9waHkgKnBoeSwgc3RydWN0IG10NzYxNV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTExMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFjLmM6MTEwNDpcXHRpZiAoIW10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21hYy5jLTExMDUtXFx0XFx0bXQ3NjE1X21hY19xdWV1ZV9yYXRlX3VwZGF0ZShwaHksIHN0YSwgcHJvYmVfcmF0ZSwgcmF0ZXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTMzNT1zdGF0aWMgaW50IG10NzYxNV9zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0zOTItXFx0bXQ3Nl93Y2lkX2tleV9zZXR1cChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCB3Y2lkLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYzozOTM6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMzk0LVxcdFxcdGVyciA9IG10NzYxNV9tYWNfd3RibF9zZXRfa2V5KGRldiwgd2NpZCwga2V5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NDEwPW10NzZfY29ubmFjMl9tYWNfd3JpdGVfdHh3aV84MDIxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo0OTM6XFx0aWYgKG10NzZfaXNfbW1pbyhkZXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00OTQtXFx0XFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQ3X1RZUEUsIGZjX3R5cGUpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUxMy1cXHR1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDAsIGJhbmRfaWR4ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjUxNDpcXHR1MzIgdmFsLCBzel90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDogTVRfU0RJT19UWERfU0laRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUxNS1cXHRib29sIGlzXzgwMjMgPSBpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTUzOS1cXHR9IGVsc2UgaWYgKHFpZCBcXHUwMDNlPSBNVF9UWFFfUFNEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo1NDA6XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTQxLVxcdFxcdHFfaWR4ID0gTVRfTE1BQ19BTFRYMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NTQzOlxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0NC1cXHRcXHRxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz0xMjcyPWludCBtdDc2X2Nvbm5hY19tY3Vfc3RhX3dlZF91cGRhdGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0xMjczLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjEyNzQ6XFx0aWYgKCFtdDc2X2lzX21taW8oZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTEyNzUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTI1NjY9bXQ3Nl9jb25uYWNfbWN1X3NldF93b3dfY3RybChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjI2MDc6XFx0aWYgKG10NzZfaXNfbW1pbyhkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjYwOC1cXHRcXHRyZXEud293X2N0cmxfdGx2Lndha2V1cF9oaWYgPSBXT1dfUENJRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjYxOT1pbnQgbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgYm9vbCBzdXNwZW5kLCBib29sIHdhaXRfcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjI2NDM6XFx0aWYgKG10NzZfaXNfbW1pbyhkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY0NC1cXHRcXHRyZXEuaGRyLmhpZl90eXBlID0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21haW4uYz0xMT1pbnQgbXQ3NngwX3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21haW4uYy0xNS1cXHRtdDc2eDAyX3ByZV90YnR0X2VuYWJsZShkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmM6MTY6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMTctXFx0XFx0dGFza2xldF9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZWRmc19wZC5kZnNfdGFza2xldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWFpbi5jOjI0OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tYWluLmMtMjUtXFx0XFx0bXQ3NngwMl9kZnNfaW5pdF9wYXJhbXMoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MTBlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDozMzpcXHRpZiAoIW10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0zNC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz0xNjg9bXQ3NngwX3BoeV9yZl9jc3Jfd3JfcnAoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xNzgtI2RlZmluZSBSRl9SQU5ET01fV1JJVEUoZGV2LCB0YWIpIGRvIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6MTc5OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTE4MC1cXHRcXHRtdDc2eDBfcGh5X3JmX2Nzcl93cl9ycChkZXYsIHRhYiwgQVJSQVlfU0laRSh0YWIpKTtcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz02OTc9bXQ3NngwX3BoeV9nZXRfZGVsdGFfcG93ZXIoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHU4IHR4X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy03NDgtXFx0XFx0ZGF0YSA9IG10NzZfcnIoZGV2LCBNVF9CQlAoQ09SRSwgMSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjc0OTpcXHRcXHRpZiAoaXNfbXQ3NjMwKGRldikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtNzUwLVxcdFxcdFxcdGludCBvZmZzZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz0xMTE2PXN0YXRpYyB2b2lkIG10NzZ4MF9yZl9wYXRjaF9yZWdfYXJyYXkoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMTI2LVxcdFxcdGNhc2UgTVRfUkYoMCwgMyk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM6MTEyNzpcXHRcXHRcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTEyOC1cXHRcXHRcXHRcXHRpZiAoaXNfbXQ3NjMwKGRldikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmM9MTE3PWludCBtdDc2eDAyX21jdV9jYWxpYnJhdGUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGludCB0eXBlLCB1MzIgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfbWN1LmMtMTI1LVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21jdS5jOjEyNjpcXHRib29sIGlzX210NzZ4MmUgPSBtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgaXNfbXQ3NngyKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX21jdS5jLTEyNy1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3V0aWwuYz02MjI9dm9pZCBtdDc2eDAyX3N0YV9wcyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYyOS1cXHRtdDc2X3N0b3BfdHhfcXVldWVzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHN0YSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3V0aWwuYzo2MzA6XFx0aWYgKG10NzZfaXNfbW1pbyhtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXRpbC5jLTYzMS1cXHRcXHRtdDc2eDAyX21hY193Y2lkX3NldF9kcm9wKGRldiwgaWR4LCBwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjY0PWludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNzA6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjcxLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwieG1pdC1xdWV1ZXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTE3MD1pbnQgbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjE4OlxcdGlmICghbXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMTktXFx0XFx0aHctXFx1MDAzZWV4dHJhX3R4X2hlYWRyb29tICs9IE1UX1NESU9fVFhEX1NJWkUgKyBNVF9TRElPX0hEUl9TSVpFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9MTY5PW10NzkyMV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjI0MDpcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IChyeGQwIFxcdTAwMjYgY3N1bV9tYXNrKSA9PSBjc3VtX21hc2sgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yNDEtXFx0ICAgICEoY3N1bV9zdGF0dXMgXFx1MDAyNiAoQklUKDApIHwgQklUKDIpIHwgQklUKDMpKSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MjI3PWludCBfX210NzkyMV9zdGFydChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1Mi1cXHRcXHRcXHRcXHQgICAgIE1UNzkyeF9XQVRDSERPR19USU1FKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjUzOlxcdGlmIChtdDc2X2lzX21taW8obXBoeS1cXHUwMDNlZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTQtXFx0XFx0ZXJyID0gbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChwaHktXFx1MDAzZWRldiwgRVhUX0NNRF9SQURJT19MRURfQ1RSTF9FTkFCTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTI4ND1zdGF0aWMgdm9pZCBtdDc5MjFfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjg5OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkwLVxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz00MTA9c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MjY6XFx0aWYgKG10NzZfaXNfbW1pbyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQyNy1cXHRcXHRyZXQgPSBtdDc5MjFfbWN1X3JlYWRfZWVwcm9tKGRldiwgTVRfRUVfSFdfVFlQRSwgXFx1MDAyNmh3X2VuY2FwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODk9aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5NTpcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTYtXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ4bWl0LXF1ZXVlc1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjA2PWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNTI6XFx0aWYgKCFtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRcXHRody1cXHUwMDNlZXh0cmFfdHhfaGVhZHJvb20gKz0gTVRfU0RJT19UWERfU0laRSArIE1UX1NESU9fSERSX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0zNTk9bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy00MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NDI0OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgKHJ4ZDMgXFx1MDAyNiBjc3VtX21hc2spID09IGNzdW1fbWFzayBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTQyNS1cXHQgICAgIShjc3VtX3N0YXR1cyBcXHUwMDI2IChCSVQoMCkgfCBCSVQoMikgfCBCSVQoMykpKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTczMD1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTczNy1cXHR1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDAsIGJhbmRfaWR4ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3Mzg6XFx0dTMyIHZhbCwgc3pfdHhkID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWERfU0laRSA6IE1UX1NESU9fVFhEX1NJWkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzM5LVxcdGJvb2wgaXNfODAyMyA9IGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc2My1cXHR9IGVsc2UgaWYgKHFpZCBcXHUwMDNlPSBNVF9UWFFfUFNEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzY0OlxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03NjUtXFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc2Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc2NzpcXHRcXHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzY4LVxcdFxcdHFfaWR4ID0gd21tX2lkeCAqIE1UNzZfQ09OTkFDX01BWF9XTU1fU0VUUyArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNjA9bXQ3OTI1X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIwMjpcXHRpZiAobXQ3Nl9pc19tbWlvKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjAzLVxcdFxcdHJlcS53b3dfY3RybF90bHYud2FrZXVwX2hpZiA9IFdPV19QQ0lFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9Nzk4PXN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy04MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6ODE0OlxcdGlmIChtdDc2X2lzX21taW8oXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy04MTUtXFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX2VlcHJvbShkZXYsIE1UX0VFX0hXX1RZUEUsIFxcdTAwMjZod19lbmNhcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU4OjQ5LjUzNjk1NzQzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzc1OTcyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGBtdDc2YCBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCB0b3VjaGVzIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLiBOYXR1cmFsbHksIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgYG10NzZgIGZyYW1ld29yay4gSnVzdCBrbm93aW5nIHRoZXkncmUgbW9kaWZpZWQgaXNuJ3QgZW5vdWdoOyBJIG5lZWQgdGhlIGNhbGxpbmcgY29udGV4dC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgY29uZGl0aW9uYWwgY2hhbmdlLCBvciBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbCB0byB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgbG9naWM/IFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgY2FsbCBwYXRocyBhbmQgc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbnZvbHZlZC4gTGV0J3Mgc2VlIGhvdyBkZWVwIHRoaXMgcmFiYml0IGhvbGUgZ29lcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODg0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTg6NTIuODc0NTU2Njg0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDk0NTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X25wdV9kZXZpY2VfYWN0aXZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9MTkwPW10NzZfZG1hX3N5bmNfaWR4KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTkyLVxcdGlmICgocS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNVF9RRkxBR19XRURfUlJPX0VOKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTkzOlxcdCAgICAoIWlzX210Nzk5MihkZXYpIHx8ICFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTk0LVxcdFxcdFFfV1JJVEUocSwgcmluZ19zaXplLCBNVF9ETUFfUlJPX0VOIHwgcS1cXHUwMDNlbmRlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz02NDA9bXQ3Nl9kbWFfdHhfcXVldWVfc2tiKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjYxLVxcdC8qIFRPRE86IFRha2UgaW50byBhY2NvdW50IHVubGluZWFyIHNrYnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjY2MjpcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpIFxcdTAwMjZcXHUwMDI2IHNrYl9saW5lYXJpemUoc2tiKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY2My1cXHRcXHRnb3RvIGZyZWVfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy03MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo3MTQ6XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTcxNS1cXHRcXHRyZXR1cm4gbXQ3Nl9ucHVfZG1hX2FkZF9idWYocGh5LCBxLCBza2IsIFxcdTAwMjZ0eF9pbmZvLmJ1ZlsxXSwgdHh3aSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTg2MT1tdDc2X2RtYV9yeF9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtODg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6ODg2OlxcdFxcdGlmIChtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4Ny1cXHRcXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz05MDU9bXQ3Nl9kbWFfcnhfcmVzZXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy05MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo5MzI6XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTMzLVxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTU1ND12b2lkIG10NzZfcnhfcG9sbF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NjQtXFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTU2NTpcXHRcXHQgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY2LVxcdFxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmZyYW1lcywgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3Mjk9c3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTczNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzM3OnN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9MTA9aW50IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBpbnQgaWR4LCBpbnQgbl9kZXNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MjY6XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMjctXFx0XFx0ZmxhZ3MgPSBNVF9OUFVfUV9UWChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWJhbmRfaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTQ2PXN0YXRpYyB2b2lkIG10Nzk5Nl9kbWFfY29uZmlnKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMzEtXFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEzMjpcXHRcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEzMy1cXHRcXHRcXHRcXHRUWFFfQ09ORklHKDAsIFdGRE1BMCwgTVRfSU5UX1RYX0RPTkVfQkFORDIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz0zMDY9dm9pZCBtdDc5OTZfZG1hX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgcmVzZXQsIGJvb2wgd2VkX3Jlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjM2MjpcXHRpZiAoIW10Nzk5Nl9oYXNfd2EoZGV2KSB8fCBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM2My1cXHRcXHRpcnFfbWFzayBcXHUwMDI2PSB+KE1UX0lOVF9SWChNVF9SWFFfTUFJTl9XQSkgfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTM2NC1cXHRcXHRcXHQgICAgICBNVF9JTlRfUlgoTVRfUlhRX0JBTkQxX1dBKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MzY1OlxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zNjYtXFx0XFx0aXJxX21hc2sgXFx1MDAyNj0gfihNVF9JTlRfUlgoTVRfUlhRX1RYRlJFRV9CQU5EMCkgfFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9Mzc0PXN0YXRpYyB2b2lkIG10Nzk5Nl9kbWFfZW5hYmxlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgcmVzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NDgtXFx0XFx0aWYgKGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjQ0OTpcXHRcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NTAtXFx0XFx0XFx0XFx0bXQ3Nl9zZXQoZGV2LCBNVF9XRkRNQV9IT1NUX0NPTkZJRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTQ2NC1cXHRcXHRpZiAoIWlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjQ2NTpcXHRcXHQgICAgIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy00NjYtXFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlaGlmMi1cXHUwMDNlc3BlZWQgXFx1MDAzYyBQQ0lFX1NQRUVEXzVfMEdUIHx8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz01MjE9aW50IG10Nzk5Nl9kbWFfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTUzMS1cXHRcXHRcXHRtZGV2LVxcdTAwM2VxX3J4W01UX1JYUV9SUk9fUlhETUFEX0NdLndlZCA9IFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1MzI6XFx0XFx0ZWxzZSBpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTMzLVxcdFxcdFxcdG1kZXYtXFx1MDAzZXFfcnhbTVRfUlhRX1JST19SWERNQURfQ10uZmxhZ3MgfD0gTVRfUUZMQUdfRU1JX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjU3NDpcXHRzaXplID0gaXNfbXQ3OTk2KG1kZXYpIFxcdTAwMjZcXHUwMDI2IG10NzZfbnB1X2RldmljZV9hY3RpdmUobWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NzUtXFx0ICAgICAgID8gTVQ3OTk2X05QVV9SWF9SSU5HX1NJWkUgLyA0IDogTVQ3OTk2X1JYX1JJTkdfU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1OTE6XFx0XFx0c2l6ZSA9IGlzX210Nzk5NihtZGV2KSBcXHUwMDI2XFx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKG1kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTkyLVxcdFxcdCAgICAgICA/IE1UNzk5Nl9OUFVfUlhfUklOR19TSVpFIC8gMiA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NjA5OlxcdFxcdHNpemUgPSBpc19tdDc5OTYobWRldikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTYxMC1cXHRcXHQgICAgICAgPyBNVDc5OTZfTlBVX1JYX1JJTkdfU0laRSA6IE1UNzk5Nl9SWF9SSU5HX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYz02MjI9dm9pZCBtdDc5OTZfZG1hX3Jyb19zdGFydChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjY2MDpcXHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjYxLVxcdFxcdG10Nzk5Nl9pcnFfZW5hYmxlKGRldiwgTVRfSU5UX1JST19SWF9ET05FKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTY2ND1pbnQgbXQ3OTk2X2RtYV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02ODEtXFx0LyogaW5pdCB0eCBxdWV1ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjY4MjpcXHRpZiAoaXNfbXQ3OTk2KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IG10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNjgzLVxcdFxcdHJldCA9IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHksIE1UX1RYUV9JRCgwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc1OS1cXHR9IGVsc2UgaWYgKGlzX210Nzk5MihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjc2MDpcXHRcXHQgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzYxLVxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX05QVV9RX1RYRlJFRSgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg5My1cXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfVFhGUkVFX0JBTkQwXS53ZWQgPSB3ZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODk0OlxcdFxcdFxcdH0gZWxzZSBpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg5NS1cXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfVFhGUkVFX0JBTkQwXS5mbGFncyA9IE1UX05QVV9RX1RYRlJFRSgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTkxOC1cXHRcXHRcXHRzaXplID0gaXNfbXQ3OTk2KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTE5OlxcdFxcdFxcdCAgICAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTIwLVxcdFxcdFxcdCAgICAgICA/IE1UNzk5Nl9OUFVfUlhfUklOR19TSVpFIDogTVQ3OTk2X1JYX1JJTkdfU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz00Nzg9bXQ3OTk2X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdGtfd2VkX2RldmljZSAqd2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5Mi1cXHRody1cXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzID0gTkVUSUZfRl9SWENTVU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjQ5MzpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgfHwgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNDk0LVxcdFxcdGh3LVxcdTAwM2VuZXRkZXZfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19UQztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02MTA9dm9pZCBtdDc5OTZfbWFjX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy02MjctXFx0aWYgKGRldi1cXHUwMDNlaGlmMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo2Mjg6XFx0XFx0aWYgKG10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTYyOS1cXHRcXHRcXHRyeF9wYXRoX3R5cGUgPSBpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgPyA2IDogODtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNjk1LVxcdCAgICAgKGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNiBiYW5kID09IE1UX0JBTkQyIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjY5NjpcXHQgICAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTY5Ny1cXHRcXHRoaWYxX29mcyA9IE1UX1dGRE1BMF9QQ0lFMSgwKSAtIE1UX1dGRE1BMCgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MzctXFx0ICAgICgoYmFuZCA9PSBNVF9CQU5EMSBcXHUwMDI2XFx1MDAyNiAhZGV2LVxcdTAwM2VoaWYyKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3Mzg6XFx0ICAgICAoYmFuZCA9PSBNVF9CQU5EMiBcXHUwMDI2XFx1MDAyNiBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtNzM5LVxcdFxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc0NC1cXHRcXHRpbnQgc2l6ZSA9IGlzX210Nzk5NihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3NDU6XFx0XFx0XFx0ICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03NDYtXFx0XFx0XFx0ICAgPyBNVDc5OTZfTlBVX1RYX1JJTkdfU0laRSAvIDIgOiBNVDc5OTZfVFhfUklOR19TSVpFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTg2OD12b2lkIG10Nzk5Nl9ycm9faHdfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg4OC1cXHRcXHRcXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4ODk6XFx0XFx0XFx0ICAgICFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg5MC1cXHRcXHRcXHRcXHRtdDc2X3NldChkZXYsIE1UX1JST18zXzFfR0xPQkFMX0NPTkZJRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz05NDk9c3RhdGljIGludCBtdDc5OTZfd2VkX3Jyb19pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtOTkyLVxcdFxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6OTkzOlxcdFxcdCAgICBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTQtXFx0XFx0XFx0bXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgMCwgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMDU4OlxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTA1OS1cXHRcXHRtdDc2X25wdV9zZW5kX3R4cnhfYWRkcihcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCAxLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTExMjc9c3RhdGljIHZvaWQgbXQ3OTk2X3dlZF9ycm9fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTE0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTE0ODpcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMTQ5LVxcdFxcdFxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDUxPXZvaWQgbXQ3OTk2X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjUxOTpcXHRcXHRpZiAobXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MjAtXFx0XFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTgxOlxcdFxcdGlmIChtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU4Mi1cXHRcXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucV9yeFtpXSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjM4MT1tdDc5OTZfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MDktXFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDEwOlxcdCAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxMS1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDE5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDIwOlxcdGlmIChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNDIxLVxcdCAgICBtc3RhX2xpbmstXFx1MDAzZXdjaWQucGh5X2lkeCA9PSBNVF9CQU5EMilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jPTUwMD1pbnQgbXQ3OTk2X25wdV9yeF9xdWV1ZXNfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbnB1LmMtNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L25wdS5jOjUwNDpcXHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbnB1LmMtNTA1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYz0xMTY9dm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTEyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jOjEyMjpcXHRpZiAoIW10NzZfbnB1X2RldmljZV9hY3RpdmUoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTEyMy1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jPTM3MT1pbnQgbXQ3Nl9ucHVfbmV0X3NldHVwX3RjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0zNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzozODA6XFx0aWYgKCFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKHBoeS1cXHUwMDNlZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTM4MS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU4OjUzLjI2NTUxMDI3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODYxNjgwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCBmb3IgbXQ3NiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2sgd2l0aGluIHRoZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbnMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGEgdmVyeSBnb29kIGlkZWEuIFRoZSBjb3JlIGNvbmNlcm4gaGVyZSBpcyBhYm91dCBwcmV2ZW50aW5nIGNyYXNoZXMgb3IsIGV2ZW4gd29yc2UsIHN1YnRsZSBjb3JydXB0aW9uIHdoZW4gdGhlIGNvZGUgdHJpZXMgdG8gYWNjZXNzIGBkZXYtXHUwMDNlbW1pby5ucHVgIG9yIGBkZXYtXHUwMDNlbW1pby5wcGVfZGV2YCBvbiBkZXZpY2VzIHRoYXQgKmFyZW4ndCogbWVtb3J5LW1hcHBlZCBJL08gKE1NSU8pLiBVU0Igb3IgU0RJTyBkZXZpY2VzLCBmb3IgZXhhbXBsZSwgd291bGRuJ3QgaGF2ZSB0aGVzZSBNTUlPIGFkZHJlc3NlcyBkaXJlY3RseSBhY2Nlc3NpYmxlLlxuXG5BIHJlZCBmbGFnIGltbWVkaWF0ZWx5IGdvZXMgdXAsIHRob3VnaDogSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBhYm91dCB0aGUgYGRldi1cdTAwM2VtbWlvYCBzdHJ1Y3R1cmUuIElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdCwgb3IsIGV2ZW4gbW9yZSBsaWtlbHkgaW4gYSBkcml2ZXIgbGlrZSB0aGlzLCBhIHVuaW9uLCBvciBhIHN0cnVjdCB0aGF0IHBvdGVudGlhbGx5IG92ZXJsYXBzIHdpdGggb3RoZXIgZmllbGRzIHdpdGhpbiBgc3RydWN0IG10NzZfZGV2YD8gVGhpcyBpcyBjcml0aWNhbC4gSWYgaXQncyBhIHVuaW9uLCBhY2Nlc3NpbmcgdGhlc2UgZmllbGRzIHdoZW4gaXQncyAqbm90KiBhbiBNTUlPIGRldmljZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiB1bmV4cGVjdGVkIGJlaGF2aW9yLCBtZW1vcnkgY29ycnVwdGlvbiwgb3IgZXZlbiBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuXG5cbkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbXQ3Ni5oYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24sIGFuZCBjb25maXJtIG15IHN1c3BpY2lvbiBhYm91dCB0aGUgdW5pb24gb3Igb3ZlcmxhcHBpbmcgZmllbGRzLiBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoIGFuZCBzZWUgaWYgaXQgYWRlcXVhdGVseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBwcm9ibGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1ODo1OC4wNTE2ODEwMDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMzY4MTIwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgbXQ3Nl9kZXYgXFxcXHtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9ODU1PXN0cnVjdCBtdDc2X3BoeSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTIxOnN0cnVjdCBtdDc2X2RldiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTIyLVxcdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTg6NTkuNzY1MzY1NzE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MTAzMzU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYG10NzZfZGV2YCBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNZWRpYXRlayA4MDIuMTEgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBNeSBpbml0aWFsIGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBgc3RydWN0IG10NzZfZGV2YCBkZWZpbml0aW9uIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJdCdzIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlLCB0aGUgY29udHJvbCBjZW50ZXIsIGlmIHlvdSB3aWxsLCBmb3IgdGhlIE1lZGlhdGVrIGRldmljZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUga2VybmVsLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBhY2Nlc3NpYmxlIHRocm91Z2ggdGhpcyBzdHJ1Y3R1cmUsIHBvdGVudGlhbGx5IGEgZGVzY3JpcHRvciBmb3IgdGhlIERNQSBlbmdpbmUsIGFuZCwgb2YgY291cnNlLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHJlbGF0ZWQgY29tcG9uZW50cy4gRXNzZW50aWFsbHksIHRoaXMgaXMgd2hlcmUgdGhlICptYWdpYyogaGFwcGVucywgd2hlcmUgdGhlIHNvZnR3YXJlIG1hcHMgdG8gdGhlIHNpbGljb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCBpdHMgbWVtYmVycyB0byBmb3JtIGFuIGVmZmVjdGl2ZSBtZW50YWwgbW9kZWwgb2YgaXRzIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0NTAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTowMy4yMDY0MDE5MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkyMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5MjE6XFx0c3RydWN0IG10NzZfZGV2IHtcXG4gOTIyOlxcdFxcdHN0cnVjdCBtdDc2X3BoeSBwaHk7IC8qIG11c3QgYmUgZmlyc3QgKi9cXG4gOTIzOlxcdFxcdHN0cnVjdCBtdDc2X3BoeSAqcGh5c1tfX01UX01BWF9CQU5EXTtcXG4gOTI0OlxcdFxcdHN0cnVjdCBtdDc2X3BoeSAqYmFuZF9waHlzW05VTV9OTDgwMjExX0JBTkRTXTtcXG4gOTI1OlxcdFxcbiA5MjY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuIDkyNzpcXHRcXG4gOTI4OlxcdFxcdHNwaW5sb2NrX3Qgd2VkX2xvY2s7XFxuIDkyOTpcXHRcXHRzcGlubG9ja190IGxvY2s7XFxuIDkzMDpcXHRcXHRzcGlubG9ja190IGNjX2xvY2s7XFxuIDkzMTpcXHRcXG4gOTMyOlxcdFxcdHUzMiBjdXJfY2NfYnNzX3J4O1xcbiA5MzM6XFx0XFxuIDkzNDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9yeF9zdGF0dXMgcnhfYW1wZHVfc3RhdHVzO1xcbiA5MzU6XFx0XFx0dTMyIHJ4X2FtcGR1X2xlbjtcXG4gOTM2OlxcdFxcdHUzMiByeF9hbXBkdV9yZWY7XFxuIDkzNzpcXHRcXG4gOTM4OlxcdFxcdHN0cnVjdCBtdXRleCBtdXRleDtcXG4gOTM5OlxcdFxcbiA5NDA6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfYnVzX29wcyAqYnVzO1xcbiA5NDE6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfZHJpdmVyX29wcyAqZHJ2O1xcbiA5NDI6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyAqbWN1X29wcztcXG4gOTQzOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4gOTQ0OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXY7XFxuIDk0NTpcXHRcXG4gOTQ2OlxcdFxcdHN0cnVjdCBtdDc2X21jdSBtY3U7XFxuIDk0NzpcXHRcXG4gOTQ4OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuYXBpX2RldjtcXG4gOTQ5OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICp0eF9uYXBpX2RldjtcXG4gOTUwOlxcdFxcdHNwaW5sb2NrX3QgcnhfbG9jaztcXG4gOTUxOlxcdFxcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpW19fTVRfUlhRX01BWF07XFxuIDk1MjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHJ4X3NrYltfX01UX1JYUV9NQVhdO1xcbiA5NTM6XFx0XFx0c3RydWN0IHRhc2tsZXRfc3RydWN0IGlycV90YXNrbGV0O1xcbiA5NTQ6XFx0XFxuIDk1NTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHR4d2lfY2FjaGU7XFxuIDk1NjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4d2lfY2FjaGU7XFxuIDk1NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcV9tY3VbX19NVF9NQ1VRX01BWF07XFxuIDk1ODpcXHRcXHRzdHJ1Y3QgbXQ3Nl9xdWV1ZSBxX3J4W19fTVRfUlhRX01BWF07XFxuIDk1OTpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgKnF1ZXVlX29wcztcXG4gOTYwOlxcdFxcdGludCB0eF9kbWFfaWR4WzRdO1xcbiA5NjE6XFx0XFx0ZW51bSBtdDc2X2h3cnJvX21vZGUgaHdycm9fbW9kZTtcXG4gOTYyOlxcdFxcbiA5NjM6XFx0XFx0c3RydWN0IG10NzZfd29ya2VyIHR4X3dvcmtlcjtcXG4gOTY0OlxcdFxcdHN0cnVjdCBuYXBpX3N0cnVjdCB0eF9uYXBpO1xcbiA5NjU6XFx0XFxuIDk2NjpcXHRcXHRzcGlubG9ja190IHRva2VuX2xvY2s7XFxuIDk2NzpcXHRcXHRzdHJ1Y3QgaWRyIHRva2VuO1xcbiA5Njg6XFx0XFx0dTE2IHdlZF90b2tlbl9jb3VudDtcXG4gOTY5OlxcdFxcdHUxNiB0b2tlbl9jb3VudDtcXG4gOTcwOlxcdFxcdHUxNiB0b2tlbl9zdGFydDtcXG4gOTcxOlxcdFxcdHUxNiB0b2tlbl9zaXplO1xcbiA5NzI6XFx0XFxuIDk3MzpcXHRcXHRzcGlubG9ja190IHJ4X3Rva2VuX2xvY2s7XFxuIDk3NDpcXHRcXHRzdHJ1Y3QgaWRyIHJ4X3Rva2VuO1xcbiA5NzU6XFx0XFx0dTE2IHJ4X3Rva2VuX3NpemU7XFxuIDk3NjpcXHRcXG4gOTc3OlxcdFxcdHdhaXRfcXVldWVfaGVhZF90IHR4X3dhaXQ7XFxuIDk3ODpcXHRcXHQvKiBzcGluY2xvY2sgdXNlZCB0byBwcm90ZWN0IHdjaWQgcGt0aWQgbGlua2VkIGxpc3QgKi9cXG4gOTc5OlxcdFxcdHNwaW5sb2NrX3Qgc3RhdHVzX2xvY2s7XFxuIDk4MDpcXHRcXG4gOTgxOlxcdFxcdHUzMiB3Y2lkX21hc2tbRElWX1JPVU5EX1VQKE1UNzZfTl9XQ0lEUywgMzIpXTtcXG4gOTgyOlxcdFxcbiA5ODM6XFx0XFx0dTY0IHZpZl9tYXNrO1xcbiA5ODQ6XFx0XFxuIDk4NTpcXHRcXHRzdHJ1Y3QgbXQ3Nl93Y2lkIGdsb2JhbF93Y2lkO1xcbiA5ODY6XFx0XFx0c3RydWN0IG10NzZfd2NpZCBfX3JjdSAqd2NpZFtNVDc2X05fV0NJRFNdO1xcbiA5ODc6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCB3Y2lkX2xpc3Q7XFxuIDk4ODpcXHRcXG4gOTg5OlxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgc3RhX3BvbGxfbGlzdDtcXG4gOTkwOlxcdFxcdHNwaW5sb2NrX3Qgc3RhX3BvbGxfbG9jaztcXG4gOTkxOlxcdFxcbiA5OTI6XFx0XFx0dTMyIHJldjtcXG4gOTkzOlxcdFxcbiA5OTQ6XFx0XFx0c3RydWN0IHRhc2tsZXRfc3RydWN0IHByZV90YnR0X3Rhc2tsZXQ7XFxuIDk5NTpcXHRcXHRpbnQgYmVhY29uX2ludDtcXG4gOTk2OlxcdFxcdHU4IGJlYWNvbl9tYXNrO1xcbiA5OTc6XFx0XFxuIDk5ODpcXHRcXHRzdHJ1Y3QgZGVidWdmc19ibG9iX3dyYXBwZXIgZWVwcm9tO1xcbiA5OTk6XFx0XFx0c3RydWN0IGRlYnVnZnNfYmxvYl93cmFwcGVyIG90cDtcXG4xMDAwOlxcdFxcbjEwMDE6XFx0XFx0Y2hhciBhbHBoYTJbM107XFxuMTAwMjpcXHRcXHRlbnVtIG5sODAyMTFfZGZzX3JlZ2lvbnMgcmVnaW9uO1xcbjEwMDM6XFx0XFxuMTAwNDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9zY2FuX3Jucl9wYXJhbSBybnI7XFxuMTAwNTpcXHRcXG4xMDA2OlxcdFxcdHUzMiBkZWJ1Z2ZzX3JlZztcXG4xMDA3OlxcdFxcbjEwMDg6XFx0XFx0dTggY3NhX2NvbXBsZXRlO1xcbjEwMDk6XFx0XFxuMTAxMDpcXHRcXHR1MzIgcnhmaWx0ZXI7XFxuMTAxMTpcXHRcXG4xMDEyOlxcdFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgc2Nhbl93b3JrO1xcbjEwMTM6XFx0XFx0c3BpbmxvY2tfdCBzY2FuX2xvY2s7XFxuMTAxNDpcXHRcXHRzdHJ1Y3Qge1xcbjEwMTU6XFx0XFx0XFx0c3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxO1xcbjEwMTY6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuO1xcbjEwMTc6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcXG4xMDE4OlxcdFxcdFxcdHN0cnVjdCBtdDc2X3ZpZl9saW5rICptbGluaztcXG4xMDE5OlxcdFxcdFxcdHN0cnVjdCBtdDc2X3BoeSAqcGh5O1xcbjEwMjA6XFx0XFx0XFx0aW50IGNoYW5faWR4O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTowMy4yMDY2MjI1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTMwNzM4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIGBzdHJ1Y3QgbXQ3Nl9kZXZgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gXCJMZXQncyByZWFkIG1vcmUgb2YgYHN0cnVjdCBtdDc2X2RldmAuXCIgVGhhdCBtZWFucyBpdCdzIHRpbWUgdG8gZHJpbGwgZG93bi4gSSdtIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgZ2VuZXJhbCBhcmNoaXRlY3R1cmUgb2YgdGhlIG10NzYgZHJpdmVyLCBvZiBjb3Vyc2UsIGFuZCBJIGtub3cgd2hlcmUgdGhpcyBzdHJ1Y3R1cmUgZml0cyBpbiBhdCBhIGhpZ2ggbGV2ZWwuIEJ1dCB0aGUgZGV2aWwncyBpbiB0aGUgZGV0YWlscy4gV2hhdCBhcmUgd2UgKnJlYWxseSogZGVhbGluZyB3aXRoIGluc2lkZSB0aGlzIGNydWNpYWwgZGF0YSBzdHJ1Y3R1cmU/IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBsaWtlbHksIHRoZSB2YXJpb3VzIGRldmljZS1zcGVjaWZpYyBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIFdpRmkgcmFkaW8gaXRzZWxmLlxuXG5JIHdhbnQgdG8ga25vdzpcblxuKiAgICoqSW50ZXJuYWwgRmllbGRzOioqIFdoaWNoIGZpZWxkcyBhcmUgY3JpdGljYWwgZm9yIGJhc2ljIGRldmljZSBvcGVyYXRpb24gdmVyc3VzIHRob3NlIHRoYXQgcGVydGFpbiB0byBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciB2YXJpYXRpb25zPyBBcmUgdGhlcmUgYW55IGJpdGZpZWxkcyBvciB1bmlvbnMgdGhhdCByZXF1aXJlIGNhcmVmdWwgYW5hbHlzaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zP1xuKiAgICoqRGF0YSBTdHJ1Y3R1cmVzIHdpdGhpbjoqKiBXaGF0IGFyZSB0aGUga2V5IHBvaW50ZXJzIHdpdGhpbiBgbXQ3Nl9kZXZgIHBvaW50aW5nIHRvPyBBcmUgdGhleSBhbGxvY2F0aW5nIG1lbW9yeSBmcm9tIHRoZSBoZWFwIG9yIGFyZSB0aGV5IGVtYmVkZGVkIHdpdGhpbiB0aGUgc3RydWN0dXJlIGl0c2VsZj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRob3NlIGFyZSB1c2VkIHRvIG1hcCBkZXZpY2UgcmVnaXN0ZXJzLCBtYW5hZ2UgRklGT3MsIGFuZCB0cmFjayBmaXJtd2FyZSBsb2FkaW5nLlxuKiAgICoqQ29uY3VycmVuY3kgQ29uc2lkZXJhdGlvbnM6KiogRG9lcyB0aGUgc3RydWN0dXJlIGFjY291bnQgZm9yIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBzdWNoIGFzIG11dGV4ZXMgb3Igc3BpbmxvY2tzPyBXaGVyZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIG9uIHRoZSBsb29rb3V0IGZvcj9cbiogICAqKkRyaXZlciBMaWZlY3ljbGUgSG9va3M6KiogSG93IGRvZXMgYG10NzZfZGV2YCBmaXQgaW50byB0aGUgZHJpdmVyJ3Mgb3ZlcmFsbCBsaWZlY3ljbGU/IEFyZSB0aGVyZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgY2xlYW51cCBmdW5jdGlvbnMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMgdGhhdCByZWx5IG9uIHRoaXMgc3RydWN0dXJlPyBJIHdhbnQgdG8gY29ubmVjdCB0aGUgZG90cyBiZXR3ZWVuIHRoaXMgc3RydWN0dXJlIGFuZCB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbCwgZXNwZWNpYWxseSBob3cgZGV2aWNlIHJlc291cmNlcyBhcmUgbWFuYWdlZCwgYWxsb2NhdGVkIGFuZCByZWxlYXNlZC5cbiogICAqKkhhcmR3YXJlIEFic3RyYWN0aW9uOioqIFdoYXQga2luZCBvZiBoYXJkd2FyZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBkb2VzIHRoZSBgc3RydWN0IG10NzZfZGV2YCBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGUgYW5kIHdoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZG9lcyBpdCB1c2UgdG8gaGlkZSB0aGUgbG93ZXItbGV2ZWwgZGV0YWlscz8gSSdtIGhvcGluZyB0byBzZWUgYSB3ZWxsIGRlZmluZWQgQVBJIHRvIGhhbmRsZSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmtzLlxuXG5TbywgeWVhaCwgdGltZSB0byBkaWcgaW50byB0aGF0IGRlZmluaXRpb24uIEl0J3MgdGltZSB0byBnZXQgYSBnb29kIG1lbnRhbCBtb2RlbCBvZiB0aGlzIGJlYXN0LiBVbmRlcnN0YW5kaW5nIGBzdHJ1Y3QgbXQ3Nl9kZXZgIGlzIGVzc2VudGlhbCB0byByZWFsbHkgZ3Jhc3AgdGhlIGRyaXZlcidzIGlubmVyIHdvcmtpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE5OSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6MDguNzM3MzY0MTA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxMDIxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAyMTpcXHRcXHRcXHRib29sIGJlYWNvbl93YWl0O1xcbjEwMjI6XFx0XFx0XFx0Ym9vbCBiZWFjb25fcmVjZWl2ZWQ7XFxuMTAyMzpcXHRcXHR9IHNjYW47XFxuMTAyNDpcXHRcXG4xMDI1OlxcdCNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxcbjEwMjY6XFx0XFx0Y29uc3Qgc3RydWN0IG10NzZfdGVzdG1vZGVfb3BzICp0ZXN0X29wcztcXG4xMDI3OlxcdFxcdHN0cnVjdCB7XFxuMTAyODpcXHRcXHRcXHRjb25zdCBjaGFyICpuYW1lO1xcbjEwMjk6XFx0XFx0XFx0dTMyIG9mZnNldDtcXG4xMDMwOlxcdFxcdH0gdGVzdF9tdGQ7XFxuMTAzMTpcXHQjZW5kaWZcXG4xMDMyOlxcdFxcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTtcXG4xMDMzOlxcdFxcbjEwMzQ6XFx0XFx0dW5pb24ge1xcbjEwMzU6XFx0XFx0XFx0c3RydWN0IG10NzZfbW1pbyBtbWlvO1xcbjEwMzY6XFx0XFx0XFx0c3RydWN0IG10NzZfdXNiIHVzYjtcXG4xMDM3OlxcdFxcdFxcdHN0cnVjdCBtdDc2X3NkaW8gc2RpbztcXG4xMDM4OlxcdFxcdH07XFxuMTAzOTpcXHRcXG4xMDQwOlxcdFxcdGF0b21pY190IGJ1c19odW5nO1xcbjEwNDE6XFx0fTtcXG4xMDQyOlxcdFxcbjEwNDM6XFx0LyogcGVyLXBoeSBzdGF0cy4gICovXFxuMTA0NDpcXHRzdHJ1Y3QgbXQ3Nl9taWJfc3RhdHMge1xcbjEwNDU6XFx0XFx0dTMyIGFja19mYWlsX2NudDtcXG4xMDQ2OlxcdFxcdHUzMiBmY3NfZXJyX2NudDtcXG4xMDQ3OlxcdFxcdHUzMiBydHNfY250O1xcbjEwNDg6XFx0XFx0dTMyIHJ0c19yZXRyaWVzX2NudDtcXG4xMDQ5OlxcdFxcdHUzMiBiYV9taXNzX2NudDtcXG4xMDUwOlxcdFxcdHUzMiB0eF9iZl9jbnQ7XFxuMTA1MTpcXHRcXHR1MzIgdHhfbXVfYmZfY250O1xcbjEwNTI6XFx0XFx0dTMyIHR4X211X21wZHVfY250O1xcbjEwNTM6XFx0XFx0dTMyIHR4X211X2Fja2VkX21wZHVfY250O1xcbjEwNTQ6XFx0XFx0dTMyIHR4X3N1X2Fja2VkX21wZHVfY250O1xcbjEwNTU6XFx0XFx0dTMyIHR4X2JmX2liZl9wcGR1X2NudDtcXG4xMDU2OlxcdFxcdHUzMiB0eF9iZl9lYmZfcHBkdV9jbnQ7XFxuMTA1NzpcXHRcXG4xMDU4OlxcdFxcdHUzMiB0eF9iZl9yeF9mYl9hbGxfY250O1xcbjEwNTk6XFx0XFx0dTMyIHR4X2JmX3J4X2ZiX2VodF9jbnQ7XFxuMTA2MDpcXHRcXHR1MzIgdHhfYmZfcnhfZmJfaGVfY250O1xcbjEwNjE6XFx0XFx0dTMyIHR4X2JmX3J4X2ZiX3ZodF9jbnQ7XFxuMTA2MjpcXHRcXHR1MzIgdHhfYmZfcnhfZmJfaHRfY250O1xcbjEwNjM6XFx0XFxuMTA2NDpcXHRcXHR1MzIgdHhfYmZfcnhfZmJfYnc7IC8qIHZhbHVlIG9mIGxhc3Qgc2FtcGxlLCBub3QgY3VtdWxhdGl2ZSAqL1xcbjEwNjU6XFx0XFx0dTMyIHR4X2JmX3J4X2ZiX25jX2NudDtcXG4xMDY2OlxcdFxcdHUzMiB0eF9iZl9yeF9mYl9ucl9jbnQ7XFxuMTA2NzpcXHRcXHR1MzIgdHhfYmZfZmJfY3BsX2NudDtcXG4xMDY4OlxcdFxcdHUzMiB0eF9iZl9mYl90cmlnX2NudDtcXG4xMDY5OlxcdFxcbjEwNzA6XFx0XFx0dTMyIHR4X2FtcGR1X2NudDtcXG4xMDcxOlxcdFxcdHUzMiB0eF9zdG9wX3FfZW1wdHlfY250O1xcbjEwNzI6XFx0XFx0dTMyIHR4X21wZHVfYXR0ZW1wdHNfY250O1xcbjEwNzM6XFx0XFx0dTMyIHR4X21wZHVfc3VjY2Vzc19jbnQ7XFxuMTA3NDpcXHRcXHR1MzIgdHhfcGt0X2ViZl9jbnQ7XFxuMTA3NTpcXHRcXHR1MzIgdHhfcGt0X2liZl9jbnQ7XFxuMTA3NjpcXHRcXG4xMDc3OlxcdFxcdHUzMiB0eF9yd3BfZmFpbF9jbnQ7XFxuMTA3ODpcXHRcXHR1MzIgdHhfcndwX25lZWRfY250O1xcbjEwNzk6XFx0XFxuMTA4MDpcXHRcXHQvKiByeCBzdGF0cyAqL1xcbjEwODE6XFx0XFx0dTMyIHJ4X2ZpZm9fZnVsbF9jbnQ7XFxuMTA4MjpcXHRcXHR1MzIgY2hhbm5lbF9pZGxlX2NudDtcXG4xMDgzOlxcdFxcdHUzMiBwcmltYXJ5X2NjYV9idXN5X3RpbWU7XFxuMTA4NDpcXHRcXHR1MzIgc2Vjb25kYXJ5X2NjYV9idXN5X3RpbWU7XFxuMTA4NTpcXHRcXHR1MzIgcHJpbWFyeV9lbmVyZ3lfZGV0ZWN0X3RpbWU7XFxuMTA4NjpcXHRcXHR1MzIgY2NrX21kcmR5X3RpbWU7XFxuMTA4NzpcXHRcXHR1MzIgb2ZkbV9tZHJkeV90aW1lO1xcbjEwODg6XFx0XFx0dTMyIGdyZWVuX21kcmR5X3RpbWU7XFxuMTA4OTpcXHRcXHR1MzIgcnhfdmVjdG9yX21pc21hdGNoX2NudDtcXG4xMDkwOlxcdFxcdHUzMiByeF9kZWxpbWl0ZXJfZmFpbF9jbnQ7XFxuMTA5MTpcXHRcXHR1MzIgcnhfbXJkeV9jbnQ7XFxuMTA5MjpcXHRcXHR1MzIgcnhfbGVuX21pc21hdGNoX2NudDtcXG4xMDkzOlxcdFxcdHUzMiByeF9tcGR1X2NudDtcXG4xMDk0OlxcdFxcdHUzMiByeF9hbXBkdV9jbnQ7XFxuMTA5NTpcXHRcXHR1MzIgcnhfYW1wZHVfYnl0ZXNfY250O1xcbjEwOTY6XFx0XFx0dTMyIHJ4X2FtcGR1X3ZhbGlkX3N1YmZyYW1lX2NudDtcXG4xMDk3OlxcdFxcdHUzMiByeF9hbXBkdV92YWxpZF9zdWJmcmFtZV9ieXRlc19jbnQ7XFxuMTA5ODpcXHRcXHR1MzIgcnhfcGZkcm9wX2NudDtcXG4xMDk5OlxcdFxcdHUzMiByeF92ZWNfcXVldWVfb3ZlcmZsb3dfZHJvcF9jbnQ7XFxuMTEwMDpcXHRcXHR1MzIgcnhfYmFfY250O1xcbjExMDE6XFx0XFxuMTEwMjpcXHRcXHR1MzIgdHhfYW1zZHVbOF07XFxuMTEwMzpcXHRcXHR1MzIgdHhfYW1zZHVfY250O1xcbjExMDQ6XFx0XFxuMTEwNTpcXHRcXHQvKiBtY3VfbXVydV9zdGF0cyAqL1xcbjExMDY6XFx0XFx0dTMyIGRsX2Nja19jbnQ7XFxuMTEwNzpcXHRcXHR1MzIgZGxfb2ZkbV9jbnQ7XFxuMTEwODpcXHRcXHR1MzIgZGxfaHRtaXhfY250O1xcbjExMDk6XFx0XFx0dTMyIGRsX2h0Z2ZfY250O1xcbjExMTA6XFx0XFx0dTMyIGRsX3ZodF9zdV9jbnQ7XFxuMTExMTpcXHRcXHR1MzIgZGxfdmh0XzJtdV9jbnQ7XFxuMTExMjpcXHRcXHR1MzIgZGxfdmh0XzNtdV9jbnQ7XFxuMTExMzpcXHRcXHR1MzIgZGxfdmh0XzRtdV9jbnQ7XFxuMTExNDpcXHRcXHR1MzIgZGxfaGVfc3VfY250O1xcbjExMTU6XFx0XFx0dTMyIGRsX2hlX2V4dF9zdV9jbnQ7XFxuMTExNjpcXHRcXHR1MzIgZGxfaGVfMnJ1X2NudDtcXG4xMTE3OlxcdFxcdHUzMiBkbF9oZV8ybXVfY250O1xcbjExMTg6XFx0XFx0dTMyIGRsX2hlXzNydV9jbnQ7XFxuMTExOTpcXHRcXHR1MzIgZGxfaGVfM211X2NudDtcXG4xMTIwOlxcdFxcdHUzMiBkbF9oZV80cnVfY250O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTowOC43Mzc1OTAxOTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMxODc3MTU0ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHVuaW9uYCBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBNVDc2IGRyaXZlciwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIE1NSU8sIFVTQiwgYW5kIFNESU8gZGV2aWNlcy4gSSBzZWUgdGhhdCBhY2Nlc3NpbmcgYGRldi1cdTAwM2VtbWlvLm5wdWAgb3IgYGRldi1cdTAwM2VtbWlvLnBwZV9kZXZgIGlzIG9ubHkgdmFsaWQgd2hlbiBkZWFsaW5nIHdpdGggYW4gTU1JTyBkZXZpY2UuIElmIHdlJ3JlIHdvcmtpbmcgd2l0aCBVU0Igb3IgU0RJTywgYWNjZXNzaW5nIHRob3NlIGZpZWxkcyBpcyBsaWtlbHkgZ29pbmcgdG8gcmVhZCBmcm9tIHRoZSBvdGhlciBkZXZpY2Utc3BlY2lmaWMgc3RydWN0dXJlcywgd2hpY2ggY291bGQgYmUgdmFsaWQgYnV0IGxlYWQgdG8gY3Jhc2hlcyBvciB1bmRlZmluZWQgYmVoYXZpb3IuXG5cblRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyB0aGF0IGJ5IGFkZGluZyBhIGNoZWNrIHVzaW5nIGBtdDc2X2lzX21taW8oZGV2KSBcdTAwMjZcdTAwMjZgIHRvIGVuc3VyZSB0aG9zZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGZvciB0aGUgY29ycmVjdCBkZXZpY2UgdHlwZSBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBjbGVhciBidWcgZml4LlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaG93IHJlYWNoYWJsZSBpcyB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyBIbW0sIHdlbGwsIE1UNzYgaGFzIHNldmVyYWwgVVNCIGRyaXZlcnMsIGxpa2UgYG10NzZ4MHVgLCBgbXQ3NngydWAsIGBtdDc5MjF1YCwgYW5kIGBtdDc5MjV1YC4gQW5kLCBvZiBjb3Vyc2UsIFVTQiBkZXZpY2VzIGNhbiBkZWZpbml0ZWx5IGJlIGVtdWxhdGVkIGluIFFFTVUsIHVzaW5nIGVpdGhlciBgZHVtbXlfaGNkYCBvciBgdmhjaS1oY2RgLiBJIGtub3cgc3l6a2FsbGVyIGZyZXF1ZW50bHkgbGV2ZXJhZ2VzIGB2aGNpLWhjZGAgZm9yIFVTQiBmdXp6aW5nLiBTbywgeWVzLCB0aGlzIGNvZGUgaXMgYWJzb2x1dGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLlxuXG5IYW5nIG9u4oCmIExldCBtZSBqdXN0IGNsYXJpZnkuIFRoZSBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBiZWhhdmlvciBvZiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gVGhvc2UgZnVuY3Rpb25zIGFyZSBwcmV0dHkgaW1wb3J0YW50IGFuZCB1c2VkIGluIGEgYnVuY2ggb2YgcGxhY2VzIOKAkyBgbXQ3Nl9kbWFfdHhfcXVldWVfc2tiYCwgYG10NzZfZG1hX3J4X2NsZWFudXBgLCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYW5kIG90aGVycy4gU28sIGlmIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCB3ZXJlIHRvIGJlIGluY29ycmVjdGx5IGNhbGxlZCBmb3IgYSBVU0IgZGV2aWNlLCBpdCBtaWdodCByZXR1cm4gdHJ1ZSBlcnJvbmVvdXNseSwgYW5kIHRoYXQgY291bGQgZGVmaW5pdGVseSBsZWFkIHRvIGNyYXNoZXMsIG9yIGF0IGxlYXN0IGluY29ycmVjdCBvcGVyYXRpb24uIFllcCwgaXQncyBhIGJ1ZyBmaXggdGhhdCBwcmV2ZW50cyBjcmFzaGVzIGluIFVTQi9TRElPIGNvbmZpZ3VyYXRpb25zLlxuXG5BbHJpZ2h0LCB0aGF0IHNldHRsZXMgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiBhIGRyaXZlciB0aGF0IHdlIGNhbiBhYnNvbHV0ZWx5IHJlYWNoIHRocm91Z2ggVVNCIGZ1enppbmcuIFRoaXMgaXMgd29ydGggZnV6emluZy5cblxuTm93LCBsZXQgbWUgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWdz4oCmIEknbSBzZWVpbmcgYENPTkZJR19NVDc2X0NPUkVgLCBgQ09ORklHX01UNzZfVVNCYCwgYENPTkZJR19NVDc5MjFVYCwgYENPTkZJR19NVDc5MjVVYCwgYENPTkZJR19NVDc2eDBVYCwgYW5kIGBDT05GSUdfTVQ3NngyVWAuIEknbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZXNlIGFnYWluc3QgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjIxLjkyNTMwODIzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4MTkwOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjA6Y29uZmlnIE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnOjI6Y29uZmlnIE1UNzYwM0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYwM0UgKFBDSWUpIGFuZCBNVDc2eDggV0xBTiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6Mzpjb25maWcgTVQ3NjE1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6ODpjb25maWcgTVQ3NjE1RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjE1RSBhbmQgTVQ3NjYzRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzoyMTpjb25maWcgTVQ3NjIyX1dNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIk1UNzYyMiAoU29DKSBXTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzI6Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzY6Y29uZmlnIE1UNzY2M1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6NDc6Y29uZmlnIE1UNzY2M1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Mjpjb25maWcgTVQ3NngwX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjE5OmNvbmZpZyBNVDc2eDBFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4Ml9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MkUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6MTg6Y29uZmlnIE1UNzZ4MlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjIyLjQ1MzUwMzQ4MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAzMzA5OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRlZXAgRGl2ZSBpbnRvIENvbmZpZ3VyYXRpb24gRmlsZXMqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29tcGxldGUuIE5vdyBJIG5lZWQgdG8gZW5zdXJlIGEgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGlzIHN5c3RlbTsgdGhlIG9yaWdpbmFsIGRhdGEgYWxvbmUgaXNuJ3Qgc3VmZmljaWVudC4gVGhpcyBtZWFucyBhIHRob3JvdWdoIGludmVzdGlnYXRpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkgbmVlZCB0byBiZSBtZXRob2RpY2FsIGhlcmUuIEknbGwgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zLiBXaGF0IHNwZWNpZmljIGFyZWFzIGFyZSB0aGUgY29uZmlndXJhdGlvbnMgaW1wYWN0aW5nPyBJJ2xsIHJldmlldyBhbGwgdGhlIGNvbmZpZ3MuIEkgd2lsbCBiZSBsb29raW5nIGZvciBpbnRlcmFjdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW5jb25zaXN0ZW5jaWVzLiBJJ2xsIGRvdWJsZS1jaGVjayBhbGwgdGhlIGNvbmZpZ3MuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2MDcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjI1LjU1NjgxNTI5OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc0MjczNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI4PWNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzI6Y29uZmlnIE1UNzkyeF9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkxNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkxNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6MTc6Y29uZmlnIE1UNzk4WF9XTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJNVDc5OHggKFNvQykgV01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc5OTZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNy1cXHRib29sIFxcXCJNVDc5OTYgKFBDSWUpIE5QVSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OToyNS42NTQyNDcyMzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM5ODE1NTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBzZXQgb2YgY29uZmlndXJhdGlvbnMgaGVyZTogYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgcmVsZXZhbnQgbW9kdWxlcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy5cblxuQWxyaWdodCwgdGhlIHBhdGNoIHRvdWNoZXMgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zIGluIGBtdDc2LmhgLCBzbyBJIHNob3VsZCBub3RlIHRoZWlyIHVzYWdlLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgY2FsbGVkIGZyb20gcXVpdGUgYSBmZXcgcGxhY2VzOiBgbXQ3Nl9kbWFfdHhfcXVldWVfc2tiYCwgYG10NzZfZG1hX3J4X2NsZWFudXBgLCBgbXQ3Nl9kbWFfcnhfcmVzZXRgLCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYW5kIGEgd2hvbGUgc2xldyBvZiBgbXQ3OTk2X2AgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gRE1BIGNvbmZpZ3VyYXRpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgbmV0d29yayBzZXR1cC4gVGhhdCdzIGEgZGVjZW50LXNpemVkIHN1cmZhY2UgYXJlYSB0byBiZSByZXZpZXdpbmcuXG5cbkhvbGQgb24gYSBtaW51dGUsIGBtdDc5OTZgIGlzIFBDSWUtb25seSwgc28gdGhhdCBtb2R1bGUgYW5kIGl0cyBhc3NvY2lhdGVkIGZ1bmN0aW9ucyBzaG91bGRuJ3QgYmUgcmVsZXZhbnQgZm9yIFVTQiBmdXp6aW5nLiBUaGF0J3MgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGtlZXAgaW4gbWluZC4gTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3Mgc29tZXRoaW5nLiBJIHdhcyBvcmlnaW5hbGx5IGZvY3VzZWQgb24gdGhlIGBtdDc2X2RtYV90eF9xdWV1ZV9za2JgIGZ1bmN0aW9uLCBhcyB0aGF0IG9uZSdzIGluIGBkbWEuY2AuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgaXMgdXNlZCBieSBVU0IgZGV2aWNlcyBvciBub3QuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBwYXRoIHRocm91Z2ggdGhhdCBmdW5jdGlvbiBmb3IgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTUxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjM0LjA1MjQwNDkyN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzOTA3MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfZG1hX3R4X3F1ZXVlX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTYwNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2MDc6bXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MDgtXFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdHhfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9NjM5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjY0MDptdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjQxLVxcdFxcdCAgICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMgbXQ3Nl9kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTUxLVxcdC5yZXNldF9xID0gbXQ3Nl9kbWFfcXVldWVfcmVzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzoxMTUyOlxcdC50eF9xdWV1ZV9za2JfcmF3ID0gbXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjExNTM6XFx0LnR4X3F1ZXVlX3NrYiA9IG10NzZfZG1hX3R4X3F1ZXVlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNTQtXFx0LnR4X2NsZWFudXAgPSBtdDc2X2RtYV90eF9jbGVhbnVwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTozNC40NjYzMjAzMjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMjQzMzU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgRE1BIE9wZXJhdGlvbnMgSW5xdWlyeSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGp1c3QgdGhpbmtpbmcgYWJvdXQgRE1BIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBgbXQ3NmAgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgYG10NzZfZG1hX29wc2AuIEJ1dCwgdGhhdCdzIGZvciBQQ0llIG9yIE1NSU8sIHJpZ2h0PyBJJ20gZm9yZ2V0dGluZyBzb21ldGhpbmcgY3J1Y2lhbCBoZXJlLi4uIHdoYXQgYWJvdXQgVVNCPyBJdCdzIG5vdCB0aGUgc2FtZS4gVVNCIGhhcyBpdHMgb3duIHNldCBvZiBvcGVyYXRpb25zLCBhbmQgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHRoZXkncmUgaGFuZGxlZCB2aWEgYG10NzZfdXNiX29wc2AuIFJpZ2h0LCB0aGF0IGZlZWxzIG1vcmUgY29ycmVjdC4gVGltZSB0byBjb25maXJtIG15IHN1c3BpY2lvbi4gTGV0J3MgZGlnIGludG8gYHVzYi5jYCBhbmQgbWFrZSBzdXJlIG15IG1lbW9yeSBzZXJ2ZXMgbWUgY29ycmVjdGx5LiBJdCdzIHRpbWUgdG8gcmVmcmVzaCBteXNlbGYgb24gaG93IHRoZSBVU0Igc2lkZSBvZiBgbXQ3NmAgaXMgc3RydWN0dXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NzAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTozNy45Nzg3NTcxODJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1OTIzNTYyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3VzYl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjM4LjA3NDY4NzAwNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYyMjg4MDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyBgbXQ3Nl9xdWV1ZV9vcHNgLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBtdDc2X3F1ZXVlX29wc2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY2hlY2sgb3V0IGBtdDc2X3F1ZXVlX29wc2AuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzICpoYXMqIHRvIGJlIHRoZSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgb3BlcmF0aW9uYWwgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIHRoZSBNVDc2J3MgaW50ZXJuYWwgcXVldWUgbWFuYWdlbWVudC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byByZWNhbGwgdGhlIGdlbmVyYWwgTVQ3NiBhcmNoaXRlY3R1cmUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGRlZGljYXRlZCBoYXJkd2FyZSBxdWV1ZXM/IFNvZnR3YXJlIGVtdWxhdGlvbj8gSHlicmlkPyBUaGF0J3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgSSdtIGxvb2tpbmcgZm9yLlxuXG5JJ20gaW5zdGFudGx5IGdvaW5nIHRvIGJlIGludGVyZXN0ZWQgaW4gdGhlIHR5cGljYWwgc3VzcGVjdHM6IGB0eF9lbnF1ZXVlYCwgYHR4X2RlcXVldWVgLCBgcnhfZW5xdWV1ZWAsIGByeF9kZXF1ZXVlYCwgYHF1ZXVlX2luaXRgLCBgcXVldWVfZGVpbml0YC4gQWxzbywgbGV0J3Mgc2VlLCB3aGF0IGFib3V0IGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIHBlci1xdWV1ZSBzdGF0cyBjb3VudGVycyBleHBvc2VkIHZpYSB0aGlzIHN0cnVjdD8gUHJvYmFibHkuIEknbGwgbmVlZCB0byBsb29rIGZvciB0aG9zZS5cblxuR2l2ZW4gdGhlIE1UNzYncyBjb21tb24gdXNlIHdpdGggUENJZSBhbmQgVVNCIGludGVyZmFjZXMsIEkgZXhwZWN0IHNvbWUgZnVuY3Rpb25zIHdpbGwgYmUgcmVsYXRlZCB0byBkZXNjcmlwdG9yIG1hbmFnZW1lbnQsIERNQSBvcGVyYXRpb25zLCBhbmQgcGVyaGFwcyBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCB0byB0aGUgcXVldWVzLiBJJ2xsIGJlIGxvb2tpbmcgdG8gc2VlIGlmIHRoZXNlIGZ1bmN0aW9ucyBtYW5hZ2UgdGhlIGhhcmR3YXJlIGRpcmVjdGx5IG9yIHVzZSBhbiBpbnRlcm1lZGlhcnkgbGF5ZXIgb2Ygc29mdHdhcmUgcXVldWVzLlxuXG5BcmUgdGhlcmUgbGlrZWx5IHRvIGJlIHJhdGUgbGltaXRpbmcgb3IgdHJhZmZpYyBzaGFwaW5nIGZ1bmN0aW9ucyBoZXJlPyBRdWl0ZSBwb3NzaWJseSwgZXNwZWNpYWxseSBpZiB0aGlzIGNvdmVycyBtdWx0aXBsZSBxdWV1ZXMgd2l0aCBkaWZmZXJpbmcgcHJpb3JpdGllcy4gQWxzbywgZG9lcyBpdCBjb250YWluIGZ1bmN0aW9ucyBmb3IgcG93ZXIgbWFuYWdlbWVudCBvciBxdWV1ZSBkcmFpbmluZyBvbiBzdXNwZW5kL3Jlc3VtZT8gVGhlc2UgYXJlIHRoaW5ncyB0byBsb29rIGZvci5cblxuSSdtIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc3R1ZmYsIHBvdGVudGlhbGx5IGludm9sdmluZyBtZW1vcnkgYmFycmllcnMgYW5kIGNhcmVmdWwgc3luY2hyb25pemF0aW9uLiBJZiB0aGlzIGlzIGEgbW9kZXJuIE1UNzYgZHJpdmVyLCBJJ20gaG9waW5nIHRvIHNlZSB3ZWxsLWNvbW1lbnRlZCBjb2RlLCBidXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGdldCBteSBob3BlcyB1cC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODI2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NDIuOTM2OTc4OTU1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwMjMxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG10NzZfcXVldWVfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9MTEwOD1tdDc2X2RtYV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE0ODpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIG10NzZfZG1hX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExNDktXFx0LmluaXQgPSBtdDc2X2RtYV9pbml0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjcwPXN0cnVjdCBtdDc2X21jdV9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjI5MjpzdHJ1Y3QgbXQ3Nl9xdWV1ZV9vcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTI5My1cXHRpbnQgKCppbml0KShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTkyMT1zdHJ1Y3QgbXQ3Nl9kZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTU4LVxcdHN0cnVjdCBtdDc2X3F1ZXVlIHFfcnhbX19NVF9SWFFfTUFYXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5NTk6XFx0Y29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzICpxdWV1ZV9vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTYwLVxcdGludCB0eF9kbWFfaWR4WzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9NTg3PXN0YXRpYyB2b2lkIG10NzZzX3R4X2tpY2soc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jOjU5NDpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIHNkaW9fcXVldWVfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTU5NS1cXHQudHhfcXVldWVfc2tiID0gbXQ3NnNfdHhfcXVldWVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYz0xMDY5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ1X2FsbG9jX3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmM6MTA3MTpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfcXVldWVfb3BzIHVzYl9xdWV1ZV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy0xMDcyLVxcdC50eF9xdWV1ZV9za2IgPSBtdDc2dV90eF9xdWV1ZV9za2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjQzLjA2NTAwNjgzNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzMwMzI3NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBDYWxsKipcblxuT2theSwgc28gSSB3YXMgbG9va2luZyBhdCB0aGUgYG10NzZfZG1hX3R4X3F1ZXVlX3NrYmAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBpdCdzIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIGRldmljZXMgdGhhdCByZWx5IG9uIERpcmVjdCBNZW1vcnkgQWNjZXNzLCBsaWtlIFBDSWUgYW5kIE1NSU8gYmFzZWQgaGFyZHdhcmUuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gQnV0IHRoZW4gSSBoaXQgYSBzbmFnLiBUaGUgZnVuY3Rpb24gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgLCB0aGUgb25lIEkgd2FzIGFjdHVhbGx5IGZvY3VzZWQgb24sIGlzIHNlZW1pbmdseSAqb25seSogY2FsbGVkIGZyb20gd2l0aGluIERNQS1yZWxhdGVkIHNlY3Rpb25zIG9mIHRoZSBjb2RlLiBUaGF0J3MgYSByZWQgZmxhZy4gSWYgaXQncyAqb25seSogY2FsbGVkIGZyb20gRE1BIGNvbnRleHRzLCBob3cgaW4gdGhlIHdvcmxkIGNvdWxkIGl0IGJlIHRyaWdnZXJlZCBmb3IgYSBVU0IgZGV2aWNlPyBUaGUgbG9naWMganVzdCBkb2Vzbid0IGZvbGxvdy5cblxuQWxyaWdodCwgbGV0J3Mgc3RlcCBiYWNrIGFuZCB0YWtlIGEgbW9yZSBncmFudWxhciBhcHByb2FjaC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gYmFjayB0byBpdHMgb3JpZ2lucy4gTGV0IG1lIHNlZS4uLiB3aGVyZSAqZWxzZSogaXMgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGJlaW5nIGNhbGxlZD8gQWggaGEhIEkgZm91bmQgaXQgLSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBpbiBgbWFjODAyMTEuY2AuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBkYXRhIHBvaW50LiBOb3cgSSBoYXZlIGFub3RoZXIgcGxhY2UgdG8gZm9jdXMgb24gdG8gYnVpbGQgdGhpcyBtZW50YWwgbW9kZWwuIFRoaXMgbWFrZXMgbW9yZSBzZW5zZSBub3csIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgYW5kIGhvdyBpdCBtaWdodCBjYWxsLCBvciBub3QgY2FsbCwgdGhlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBmdW5jdGlvbiBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAzMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTo0Ny43OTUzMzgyNDdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDA4MTI1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3J4X3BvbGxfY29tcGxldGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz0xMDczPWludCBtdDc2X2RtYV9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtMTA4NC1cXHRcXHRjdXIgPSBtdDc2X2RtYV9yeF9wcm9jZXNzKGRldiwgXFx1MDAyNmRldi1cXHUwMDNlcV9yeFtxaWRdLCBidWRnZXQgLSBkb25lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjEwODU6XFx0XFx0bXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKGRldiwgcWlkLCBuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEwODYtXFx0XFx0ZG9uZSArPSBjdXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTUxND12b2lkIG10NzZfcnhfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTU0OnZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NTUtXFx0XFx0XFx0ICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTczOkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcnhfcG9sbF9jb21wbGV0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzkzPXZvaWQgbXQ3Nl9yeF9jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3OTQtXFx0XFx0ICAgICAgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzk1OnZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYz0xNDQ9c3RhdGljIGludCBtdDc2X25wdV9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmMtMTY1LVxcdFxcdGRldi1cXHUwMDNlZHJ2LVxcdTAwM2VyeF9za2IoZGV2LCBxaWQsIHNrYiwgXFx1MDAyNmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM6MTY2OlxcdFxcdG10NzZfcnhfcG9sbF9jb21wbGV0ZShkZXYsIHFpZCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xNjctXFx0XFx0ZG9uZSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM9MzgzPW10NzZzX3Byb2Nlc3NfcnhfcXVldWUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNDAyLVxcdGlmIChxaWQgPT0gTVRfUlhRX01BSU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NDAzOlxcdFxcdG10NzZfcnhfcG9sbF9jb21wbGV0ZShkZXYsIE1UX1JYUV9NQUlOLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy00MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jPTYwMj1tdDc2dV9wcm9jZXNzX3J4X3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdXNiLmMtNjIyLVxcdFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jOjYyMzpcXHRcXHRtdDc2X3J4X3BvbGxfY29tcGxldGUoZGV2LCBNVF9SWFFfTUFJTiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni91c2IuYy02MjQtXFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA4OjU5OjQ4LjE0OTQyNjM2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Nzc5OTMxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGRlYnVnZ2luZyB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlRyYWNpbmcgdGhlIFJlY2VpdmUgUGF0aCoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyByZWNlaXZlIHBhdGguLi4gSSdtIHByZXR0eSBzdXJlIEkgcmVtZW1iZXIgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgYmVpbmcgY2FsbGVkIGZyb20gYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIOKAkyB5ZXAsIHRoYXQncyBpbiBgdXNiLmNgLCBleGFjdGx5IHdoZXJlIEknZCBleHBlY3QgaXQuIFRoZSBuZXh0IHRoaW5nIEknbSBzZWVpbmcgaXMgYSBjaGVjazogYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaXMgY2FsbGluZyBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpYC4gVGhpcyBpcyBpbnRlcmVzdGluZywgYSBjb25kaXRpb25hbCBjYWxsLCBzbyBsZXQncyBzZWUgd2hhdCBpcyBoYXBwZW5pbmcgaW4gdGhlIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIGZ1bmN0aW9uLiBMb29rcyBsaWtlIEknbGwgbmVlZCB0byBqdW1wIG92ZXIgdG8gYG1hYzgwMjExLmNgIHRvIHRyYWNlIHRoaXMgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MzEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwODo1OTo1MS42Mjc0MjI1NDlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTU0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTU0OlxcdHZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuMTU1NTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuMTU1NjpcXHR7XFxuMTU1NzpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGZyYW1lcztcXG4xNTU4OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuMTU1OTpcXHRcXG4xNTYwOlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2ZnJhbWVzKTtcXG4xNTYxOlxcdFxcbjE1NjI6XFx0XFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZkZXYtXFx1MDAzZXJ4X3NrYltxXSkpICE9IE5VTEwpIHtcXG4xNTYzOlxcdFxcdFxcdG10NzZfY2hlY2tfc3RhKGRldiwgc2tiKTtcXG4xNTY0OlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpIHx8XFxuMTU2NTpcXHRcXHRcXHQgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpKVxcbjE1NjY6XFx0XFx0XFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2ZnJhbWVzLCBza2IpO1xcbjE1Njc6XFx0XFx0XFx0ZWxzZVxcbjE1Njg6XFx0XFx0XFx0XFx0bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXIoc2tiLCBcXHUwMDI2ZnJhbWVzKTtcXG4xNTY5OlxcdFxcdH1cXG4xNTcwOlxcdFxcbjE1NzE6XFx0XFx0bXQ3Nl9yeF9jb21wbGV0ZShkZXYsIFxcdTAwMjZmcmFtZXMsIG5hcGkpO1xcbjE1NzI6XFx0fVxcbjE1NzM6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NTEuNjI3NjE0NzU5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mzk1OTkxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBGdW5jdGlvbidzIEJlaGF2aW9yKipcblxuT2theSwgc28gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaXMgZGVmaW5pdGVseSBiZWluZyBpbnZva2VkIGZvciBVU0IgZGV2aWNlcy4gVGhhdCdzIGdvb2QsIGJ1dCBpdCdzIGxlYWRpbmcgdG8gc29tZSBwb3RlbnRpYWwgaXNzdWVzIEkgbmVlZCB0byBhZGRyZXNzLiBTcGVjaWZpY2FsbHksIGl0J3MgY2FsbGluZyBib3RoIGBtdGtfd2VkX2RldmljZV9hY3RpdmUoXHUwMDI2ZGV2LVx1MDAzZW1taW8ud2VkKWAgYW5kIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlKGRldilgLiBUaGUgcHJvYmxlbSBpcywgZm9yIFVTQiBkZXZpY2VzLCBgZGV2LVx1MDAzZW1taW9gIGlzIGludmFsaWQ7IGl0J3Mgb3ZlcmxhcHBpbmcgbWVtb3J5IHdpdGggYGRldi1cdTAwM2V1c2JgLiBUaGlzIG1lYW5zIHRoZXNlIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IHRoZSBvbmVzIHRoYXQgY2hlY2sgZm9yIGFjdGl2ZSBkZXZpY2VzLCBhcmUgbGlrZWx5IHJlYWRpbmcgZ2FyYmFnZSBkYXRhIGZyb20gYGRldi1cdTAwM2V1c2JgLiBUaGF0J3Mgbm90IGlkZWFsLlxuXG5UaGlzIGNhbiByZXN1bHQgaW4gZWl0aGVyIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIG9yIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCByZXR1cm5pbmcgYSBub24temVybyB2YWx1ZSB3aGVuIHRoZXkgc2hvdWxkbid0LiBJZiB0aGlzIGhhcHBlbnMsIGluc3RlYWQgb2YgcHJvcGVybHkgdXNpbmcgYG10NzZfcnhfYWdncl9yZW9yZGVyYCwgdGhlIGNvZGUgaW5jb3JyZWN0bHkgZ29lcyB0byBgX19za2JfcXVldWVfdGFpbGAuIFRoaXMgY29tcGxldGVseSBicmVha3MgdGhlIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgbWVjaGFuaXNtIGZvciBVU0IgZGV2aWNlcy4gRnVydGhlcm1vcmUsIHRoZXJlJ3MgYSByZWFsIHBvc3NpYmlsaXR5IG9mIGl0IGNhdXNpbmcgY3Jhc2hlcyBpZiBpdCBhdHRlbXB0cyB0byBkZXJlZmVyZW5jZSBzb21ldGhpbmcgdW5leHBlY3RlZCBvciBpbnZhbGlkLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bC5cblxuV2FpdCwgbG9va2luZyBhdCBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCBhZ2FpbiwgaXQncyBhbHNvIGFjY2Vzc2luZyBgZGV2LVx1MDAzZW1taW8ud2VkYC4gRG9lcyBpdCBoYXZlIGEgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgb3BlcmF0aW5nIG9uIGFuIE1NSU8gZGV2aWNlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQ7IGl0J3MgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8gZ2V0IGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzE4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NTcuMTY3MjE2NTU4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE4Nzg1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRrX3dlZF9kZXZpY2VfYWN0aXZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTAzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTgwMj1tdDc2X2RtYV9hbGxvY19xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjg0NjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtODQ3LVxcdFxcdGlmICgobXRrX3dlZF9nZXRfcnhfY2FwYShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjYgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpKSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz04NjE9bXQ3Nl9kbWFfcnhfY2xlYW51cChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTg4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjg4MjpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtODgzLVxcdFxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTkwNT1tdDc2X2RtYV9yeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTkyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjkyODpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtOTI5LVxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTExNjc9dm9pZCBtdDc2X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM6MTE5ODpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTExOTktXFx0XFx0bXRrX3dlZF9kZXZpY2VfZGV0YWNoKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTEyMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzoxMjAxOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWRfaGlmMikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy0xMjAyLVxcdFxcdG10a193ZWRfZGV2aWNlX2RldGFjaChcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZF9oaWYyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9MTc1PW10NzZfZG1hX3Jlc2V0X3R4X3F1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtMTc5LVxcdGRldi1cXHUwMDNlcXVldWVfb3BzLVxcdTAwM2VyZXNldF9xKGRldiwgcSwgcmVzZXRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjE4MDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTE4MS1cXHRcXHRtdDc2X3dlZF9kbWFfc2V0dXAoZGV2LCBxLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xNTU0PXZvaWQgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2My1cXHRcXHRtdDc2X2NoZWNrX3N0YShkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE1NjQ6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTU2NS1cXHRcXHQgICAgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmM9Nzc9dm9pZCBtdDc2X3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21taW8uYy04NS1cXHRpZiAoYWRkcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jOjg2OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jLTg3LVxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0Ny1cXHRcXHQvKiBtdDc5MTUgV0Egb25seSBjb3VudHMgV0VEIHBhdGggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU0ODpcXHRcXHRpZiAoaXNfbXQ3OTE1KGRldikgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU0OS1cXHRcXHRcXHR3Y2lkLVxcdTAwM2VzdGF0cy50eF9wYWNrZXRzKys7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTYyND1ib29sIG10NzZfY29ubmFjMl9tYWNfZmlsbF90eHMoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTYzNi1cXHQvKiBQUERVIGJhc2VkIHJlcG9ydGluZyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NjM3OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02MzgtXFx0ICAgIEZJRUxEX0dFVChNVF9UWFMwX1RYU19GT1JNQVQsIHR4cykgXFx1MDAzZSAxKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTEyNzI9aW50IG10NzZfY29ubmFjX21jdV9zdGFfd2VkX3VwZGF0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjEyNzc6XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMTI3OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTk9bXQ3OTE1X2luaXRfdHhfcXVldWVzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGludCBpZHgsIGludCBuX2Rlc2MsIGludCByaW5nX2Jhc2UpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzoxNDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtMTUtXFx0XFx0aWYgKGlzX210Nzk4eChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTQxPXN0YXRpYyB2b2lkIG10NzkxNV9kbWFfY29uZmlnKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo4NzpcXHRcXHRpZiAoaXNfbXQ3OTE2KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTg4LVxcdFxcdFxcdFJYUV9DT05GSUcoTVRfUlhRX01BSU4sIFdGRE1BMCwgTVRfSU5UX1dFRF9SWF9ET05FX0JBTkQwX01UNzkxNixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTI1NT1pbnQgbXQ3OTE1X2RtYV9zdGFydChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIHJlc2V0LCBib29sIHdlZF9yZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTMwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzozMDk6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNiB3ZWRfcmVzZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy0zMTAtXFx0XFx0dTMyIHdlZF9pcnFfbWFzayA9IGlycV9tYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM9NDA4PWludCBtdDc5MTVfZG1hX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy00MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NDI0OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTQyNS1cXHRcXHRpZiAoIWlzX210Nzk4eChtZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNDkzLVxcdC8qIGV2ZW50IGZyb20gV0EgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo0OTQ6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2IGlzX210NzkxNShtZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTQ5NS1cXHRcXHR3YV9yeF9iYXNlID0gTVRfV0VEX1JYX1JJTkdfQkFTRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUxMC1cXHRpZiAoIWRldi1cXHUwMDNlcGh5Lm10NzYtXFx1MDAzZWJhbmRfaWR4KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NTExOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUxMi1cXHRcXHQgICAgbXRrX3dlZF9nZXRfcnhfY2FwYShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYy01MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmM6NTMzOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTUzNC1cXHRcXHRcXHRtZGV2LVxcdTAwM2VxX3J4W01UX1JYUV9NQUlOX1dBXS5mbGFncyA9IE1UX1dFRF9RX1RYRlJFRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTU0OS1cXHRpZiAoZGV2LVxcdTAwM2VkYmRjX3N1cHBvcnQgfHwgZGV2LVxcdTAwM2VwaHkubXQ3Ni1cXHUwMDNlYmFuZF9pZHgpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYzo1NTA6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNTUxLVxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jPTU5MD1pbnQgbXQ3OTE1X2RtYV9yZXNldChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjYxMzpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNjE0LVxcdFxcdG10a193ZWRfZGV2aWNlX2RtYV9yZXNldCh3ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMtNjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jOjY0MTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgaXNfbXQ3OTE1KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jLTY0Mi1cXHRcXHRtdDc2X3JtdyhkZXYsIE1UX1dGRE1BMF9FWFQwX0NGRywgTVRfV0ZETUEwX0VYVDBfUlhXQl9LRUVQLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTM1OD1tdDc5MTVfaW5pdF93aXBoeShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6MzcxOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtMzcyLVxcdFxcdGh3LVxcdTAwM2VuZXRkZXZfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19UQztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz00ODQ9bXQ3OTE1X21hY19pbml0X2JhbmQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NDktXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjU1MDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy01NTEtXFx0XFx0bXQ3Nl9zZXQoZGV2LCBNVF9BR0dfQUNSNChiYW5kKSwgTVRfQUdHX0FDUl9QUERVX1RYUzJIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jPTg2Nz1tdDc5MTVfbWFjX3R4X2ZyZWUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTkxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzo5MTQ6XFx0XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNiB3Y2lkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtOTE1LVxcdFxcdFxcdHUzMiB0eF9yZXRyaWVzID0gMCwgdHhfZmFpbGVkID0gMCwgY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz0xNDczPXZvaWQgbXQ3OTE1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE1MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM6MTUzNDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTE1MzUtXFx0XFx0bXRrX3dlZF9kZXZpY2Vfc3RvcChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xMTU3PXN0YXRpYyB2b2lkIG10NzkxNV9zdGFfc3RhdGlzdGljcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xMTg5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxMTkwOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNnBoeS1cXHUwMDNlZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xMTkxLVxcdFxcdHNpbmZvLVxcdTAwM2V0eF9ieXRlcyA9IG1zdGEtXFx1MDAzZXdjaWQuc3RhdHMudHhfYnl0ZXM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM9MTcyMz1tdDc5MTVfbmV0X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE3MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE3MzU6XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTczNi1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIzODQ9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDE4OlxcdGlmICgobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQxOS1cXHQgICAgIGlzX210NzkxNShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQzNjpcXHRyZXR1cm4gbXQ3OTE1X21jdV9zZXRfcmVkKGRldiwgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yNDM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz03OTM9dm9pZCBtdDc5MTVfZHVhbF9oaWZfc2V0X2lycV9tYXNrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODA1LVxcdGlmICh3cml0ZV9yZWcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM6ODA2OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODA3LVxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmM9ODI2PXN0YXRpYyB2b2lkIG10NzkxNV9pcnFfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tbWlvLmMtODMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYzo4MzI6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTgzMy1cXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2sod2VkLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYz04OTY9aXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21taW8uYy05MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jOjkwMTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbW1pby5jLTkwMi1cXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2sod2VkLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jPTEwMz1zdGF0aWMgaW50IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYy0xOTItZnJlZV93ZWRfb3JfaXJxX3ZlY3RvcjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYzoxOTM6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jLTE5NC1cXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3NvYy5jPTEyMjA9c3RhdGljIGludCBtdDc5OHhfd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvc29jLmMtMTI3Mi1mcmVlX2RldmljZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYzoxMjczOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9zb2MuYy0xMjc0LVxcdFxcdG10a193ZWRfZGV2aWNlX2RldGFjaChcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9MTA9aW50IG10Nzk5Nl9pbml0X3R4X3F1ZXVlcyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBpbnQgaWR4LCBpbnQgbl9kZXNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTY6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTctXFx0XFx0cmluZ19iYXNlICs9IE1UX1RYUV9JRCgwKSAqIE1UX1JJTkdfU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTMwNj12b2lkIG10Nzk5Nl9kbWFfc3RhcnQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCByZXNldCwgYm9vbCB3ZWRfcmVzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0zMTYtXFx0aWYgKCFyZXNldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjMxNzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTMxOC1cXHRcXHRcXHRtdDc2X3NldChkZXYsIE1UX1dGRE1BMF9HTE9fQ0ZHLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjM1NDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgd2VkX3Jlc2V0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMzU1LVxcdFxcdHUzMiB3ZWRfaXJxX21hc2sgPSBpcnFfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTM3ND1zdGF0aWMgdm9pZCBtdDc5OTZfZG1hX2VuYWJsZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHJlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTAyLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjUwMzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTA0LVxcdFxcdCAgICBtdDc5OTZfaGFzX2h3cnJvKGRldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTUyMT1pbnQgbXQ3OTk2X2RtYV9ycm9faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTI5LVxcdFxcdG1kZXYtXFx1MDAzZXFfcnhbTVRfUlhRX1JST19SWERNQURfQ10uZmxhZ3MgPSBNVF9XRURfUlJPX1FfUlhETUFEX0M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTMwOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01MzEtXFx0XFx0XFx0bWRldi1cXHUwMDNlcV9yeFtNVF9SWFFfUlJPX1JYRE1BRF9DXS53ZWQgPSBcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTQyOlxcdFxcdGlmICghbXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NDMtXFx0XFx0XFx0LyogV2UgbmVlZCB0byBzZXQgY3B1IGlkeCBwb2ludGVyIGJlZm9yZSByZXNldHRpbmcgdGhlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NTYtXFx0bWRldi1cXHUwMDNlcV9yeFtNVF9SWFFfUlJPX0lORF0uZmxhZ3MgPSBNVF9XRURfUlJPX1FfSU5EO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjU1NzpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy01NTgtXFx0ICAgIG10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU2OS1cXHRcXHRNVF9XRURfUlJPX1FfTVNEVV9QRygwKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NTcwOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTU3MS1cXHQgICAgbXRrX3dlZF9nZXRfcnhfY2FwYShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTg2LVxcdFxcdFxcdE1UX1dFRF9SUk9fUV9NU0RVX1BHKDEpIHwgTVRfUUZMQUdfV0VEX1JST19FTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo1ODc6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNTg4LVxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDQtXFx0XFx0XFx0TVRfV0VEX1JST19RX01TRFVfUEcoMikgfCBNVF9RRkxBR19XRURfUlJPX0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjYwNTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MDYtXFx0XFx0ICAgIG10a193ZWRfZ2V0X3J4X2NhcGEoXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTYyMj12b2lkIG10Nzk5Nl9kbWFfcnJvX3N0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NjI2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy02MjctXFx0XFx0aXJxX21hc2sgPSBkZXYtXFx1MDAzZW10NzYubW1pby5pcnFtYXNrIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jPTY2ND1pbnQgbXQ3OTk2X2RtYV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03MzktXFx0LyogcnggZGF0YSBxdWV1ZSBmb3IgYmFuZDAgYW5kIG10Nzk5NiBiYW5kMSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjc0MDpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzQxLVxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9NQUlOXS5mbGFncyA9IE1UX1dFRF9RX1JYKDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtNzUzLVxcdC8qIHR4IGZyZWUgbm90aWZ5IGV2ZW50IGZyb20gV0EgZm9yIGJhbmQwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6NzU0OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc1NS1cXHQgICAgKChpc19tdDc5OTYoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikgXFx1MDAyNlxcdTAwMjYgIW10Nzk5Nl9oYXNfaHdycm8oZGV2KSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc3Mi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjc3MzpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03NzQtXFx0XFx0XFx0ZGV2LVxcdTAwM2VtdDc2LnFfcnhbTVRfUlhRX1RYRlJFRV9CQU5EMF0uZmxhZ3MgPSBNVF9XRURfUV9UWEZSRUU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy03ODYtXFx0aWYgKCFtdDc5OTZfaGFzX3dhKGRldikgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VoaWYyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6Nzg3OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTc4OC1cXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfVFhGUkVFX0JBTkQxXS5mbGFncyA9IE1UX1dFRF9RX1RYRlJFRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgxMy1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4MTQ6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWRfaGlmMikgXFx1MDAyNlxcdTAwMjYgIW10Nzk5Nl9oYXNfaHdycm8oZGV2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgxNS1cXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDJfV0FdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODI4LVxcdFxcdHJ4X2Jhc2UgPSBNVF9SWFFfUklOR19CQVNFKE1UX1JYUV9CQU5EMSkgKyBoaWYxX29mcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo4Mjk6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTgzMC1cXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDFdLmZsYWdzID0gTVRfV0VEX1FfUlgoMSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy04NDQtXFx0XFx0XFx0cnhfYmFzZSA9IE1UX1JYUV9SSU5HX0JBU0UoTVRfUlhRX0JBTkQxX1dBKSArIGhpZjFfb2ZzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjg0NTpcXHRcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZF9oaWYyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg0Ni1cXHRcXHRcXHRcXHRkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfQkFORDFfV0FdLmZsYWdzID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg2NC1cXHRcXHRcXHRNVF9XRURfUlJPX1FfREFUQSgwKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODY1OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODY2LVxcdFxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9SUk9fQkFORDBdLndlZCA9IHdlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg3Ny1cXHRcXHRcXHRcXHRNVF9XRURfUlJPX1FfREFUQSgxKSB8IE1UX1FGTEFHX1dFRF9SUk9fRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODc4OlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg3OS1cXHRcXHRcXHQgICAgbXRrX3dlZF9nZXRfcnhfY2FwYSh3ZWQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtODg5LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6ODkwOlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTg5MS1cXHRcXHRcXHRcXHQvKiB0eCBmcmVlIG5vdGlmeSBldmVudCBmcm9tIFdBIGZvciBiYW5kMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTEzLVxcdFxcdFxcdFxcdE1UX1dFRF9SUk9fUV9EQVRBKDEpIHwgTVRfUUZMQUdfV0VEX1JST19FTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo5MTQ6XFx0XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTE1LVxcdFxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy05MjgtXFx0XFx0XFx0LyogdHggZnJlZSBub3RpZnkgZXZlbnQgZnJvbSBNQUMgZm9yIGJhbmQyICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6OTI5OlxcdFxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkX2hpZjIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTMwLVxcdFxcdFxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5xX3J4W01UX1JYUV9UWEZSRUVfQkFORDJdLmZsYWdzID0gTVRfV0VEX1FfVFhGUkVFO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM9OTYwPXZvaWQgbXQ3OTk2X2RtYV9yZXNldChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIGZvcmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTk0LVxcdGlmIChtdDc5OTZfaGFzX2h3cnJvKGRldikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzo5OTU6XFx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtOTk2LVxcdFxcdG10Nzk5Nl9ycm9fbXNkdV9wYWdlX21hcF9mcmVlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jOjEwMDI6XFx0aWYgKGRldi1cXHUwMDNlaGlmMiBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDAzLVxcdFxcdG10a193ZWRfZGV2aWNlX2RtYV9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmM6MTAwNTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwMDYtXFx0XFx0bXRrX3dlZF9kZXZpY2VfZG1hX3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZG1hLmMtMTAyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzoxMDI3OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDI4LVxcdFxcdFxcdGlmIChtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RtYS5jLTEwNDAtXFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYzoxMDQxOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjYgZm9yY2UgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kbWEuYy0xMDQyLVxcdFxcdCAgICAobXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2luZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pIHx8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9NDc4PW10Nzk5Nl9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXRrX3dlZF9kZXZpY2UgKndlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy00OTItXFx0aHctXFx1MDAzZW5ldGRldl9mZWF0dXJlcyA9IE5FVElGX0ZfUlhDU1VNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo0OTM6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIHx8IG10NzZfbnB1X2RldmljZV9hY3RpdmUobWRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTQ5NC1cXHRcXHRody1cXHUwMDNlbmV0ZGV2X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVEM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9NjgyPXN0YXRpYyBpbnQgbXQ3OTk2X3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBlbnVtIG10NzZfYmFuZF9pZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6NzYwOlxcdGlmICh3ZWQgPT0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTc2MS1cXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTgyNT1zdGF0aWMgdm9pZCBtdDc5OTZfcnJvX2h3X2luaXRfdjMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzMtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4MzQ6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2IG10a193ZWRfZ2V0X3J4X2NhcGEod2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy04MzUtXFx0XFx0d2VkLVxcdTAwM2V3bGFuLmluZF9jbWQud2luX3NpemUgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6ODQ5OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSBcXHUwMDI2XFx1MDAyNiBtdGtfd2VkX2dldF9yeF9jYXBhKHdlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODUwLVxcdFxcdG10NzZfd3IoZGV2LCBNVF9SUk9fSU5EX0NNRF9TSUdOQVRVUkVfQkFTRTAsIDB4MTUwMTBlMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTg2OD12b2lkIG10Nzk5Nl9ycm9faHdfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTg4Ny1cXHRcXHRcXHRcXHQgTVRfUlJPXzNfMV9HTE9CQUxfQ09ORklHX1JYRE1BRF9TRUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo4ODg6XFx0XFx0XFx0aWYgKCFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtODg5LVxcdFxcdFxcdCAgICAhbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTk0OT1zdGF0aWMgaW50IG10Nzk5Nl93ZWRfcnJvX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy05OTgtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo5OTk6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDAwLVxcdFxcdCAgICBtdGtfd2VkX2dldF9yeF9jYXBhKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTAyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTAyMzpcXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMDI0LVxcdCAgICBkZXYtXFx1MDAzZW10NzYuaHdycm9fbW9kZSA9PSBNVDc2X0hXUlJPX1YzXzEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzk4PXZvaWQgbXQ3OTk2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTgxMS1cXHRpZiAobXQ3OTk2X2hhc19od3JybyhkZXYpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE4MTI6XFx0ICAgICFtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE4MTMtXFx0XFx0bXQ3OTk2X3Jyb19tc2R1X3BhZ2VfbWFwX2ZyZWUoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTE0MDY9bXQ3OTk2X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTQzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxNDQwOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjYgd2NpZC1cXHUwMDNlc3RhKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTQ0MS1cXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MTYyMD12b2lkIG10Nzk5Nl9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjM4LVxcdGNhc2UgUEtUX1RZUEVfVFhSWF9OT1RJRlk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MTYzOTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xNjQwLVxcdFxcdCAgICBxID09IE1UX1JYUV9UWEZSRUVfQkFORDIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTIyMjA9bXQ3OTk2X21hY19yZXN0YXJ0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjQ4LVxcdG10NzZfZm9yX2VhY2hfcV9yeChtZGV2LCBpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjI0OTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI1MC1cXHRcXHQgICAgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKFxcdTAwMjZtZGV2LVxcdTAwM2VxX3J4W2ldKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIyNjQtXFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KG1kZXYsIGkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyMjY1OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjY2LVxcdFxcdCAgICBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8oXFx1MDAyNm1kZXYtXFx1MDAzZXFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjI5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyMjk2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMjk3LVxcdCAgICBtdDc5OTZfaGFzX2h3cnJvKGRldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTIzMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjMxNTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yMzE2LVxcdFxcdG10NzZfd3IoZGV2LCBNVF9JTlRfUENJRTFfTUFTS19DU1IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz0yNDUxPXZvaWQgbXQ3OTk2X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI0OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjQ5MjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5My1cXHRcXHRtdGtfd2VkX2RldmljZV9zdG9wKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWRfaGlmMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNDk1OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjQ5Ni1cXHRcXHRtdGtfd2VkX2RldmljZV9zdG9wKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjUxNC1cXHRtdDc2X2Zvcl9lYWNoX3FfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgaSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1MTU6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1MTYtXFx0XFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoyNTUzOlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTU0LVxcdFxcdHUzMiB3ZWRfaXJxX21hc2sgPSBNVF9JTlRfVFhfRE9ORV9CQU5EMiB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yNTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1NjQ6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU2NS1cXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX1BDSUUxX01BU0tfQ1NSLCBNVF9JTlRfVFhfUlhfRE9ORV9FWFQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMjU3Ni1cXHRtdDc2X2Zvcl9lYWNoX3FfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgaSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjI1Nzc6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTI1NzgtXFx0XFx0ICAgIG10NzZfcXVldWVfaXNfd2VkX3JybyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbaV0pKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM9MjkwMT12b2lkIG10Nzk5Nl9tYWNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTE4LVxcdFxcdG10Nzk5Nl9tY3VfZ2V0X2FsbF9zdGFfaW5mbyhwaHksIFVOSV9BTExfU1RBX1RYUlhfUkFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6MjkxOTpcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZwaHktXFx1MDAzZWRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0yOTIwLVxcdFxcdFxcdG10Nzk5Nl9tY3VfZ2V0X2FsbF9zdGFfaW5mbyhwaHksIFVOSV9BTExfU1RBX1RYUlhfQURNX1NUQVQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jPTE4NjE9c3RhdGljIHZvaWQgbXQ3OTk2X3N0YV9zdGF0aXN0aWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTE5MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjE5MDI6XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0xOTAzLVxcdFxcdHNpbmZvLVxcdTAwM2V0eF9ieXRlcyA9IG1zdGFfbGluay1cXHUwMDNld2NpZC5zdGF0cy50eF9ieXRlcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYz0yMzgxPW10Nzk5Nl9uZXRfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM6MjQwOTpcXHRpZiAoIW10a193ZWRfZGV2aWNlX2FjdGl2ZSh3ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTAtXFx0ICAgICFtdDc2X25wdV9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI0MTUtI2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNDE2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUod2VkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjQxNy1cXHRcXHRwYXRoLVxcdTAwM2VtdGtfd2RtYS53ZG1hX2lkeCA9IHdlZC1cXHUwMDNld2RtYV9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM9Njc5PXZvaWQgbXQ3OTk2X2R1YWxfaGlmX3NldF9pcnFfbWFzayhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHdyaXRlX3JlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTAtXFx0aWYgKHdyaXRlX3JlZykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYzo2OTE6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2bWRldi1cXHUwMDNlbW1pby53ZWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTY5Mi1cXHRcXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXFx1MDAyNm1kZXYtXFx1MDAzZW1taW8ud2VkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIG1kZXYtXFx1MDAzZW1taW8uaXJxbWFzayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjY5NDpcXHRcXHRcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZF9oaWYyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy02OTUtXFx0XFx0XFx0XFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKFxcdTAwMjZtZGV2LVxcdTAwM2VtbWlvLndlZF9oaWYyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTcyNT1zdGF0aWMgdm9pZCBtdDc5OTZfaXJxX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTczMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6NzMyOlxcdGlmIChkZXYtXFx1MDAzZWhpZjIgXFx1MDAyNlxcdTAwMjYgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZF9oaWYyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03MzMtXFx0XFx0bXRrX3dlZF9kZXZpY2VfaXJxX3NldF9tYXNrKHdlZF9oaWYyLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21taW8uYy03NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jOjc0NjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKHdlZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtNzQ3LVxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayh3ZWQsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jPTc5Mj1pcnFyZXR1cm5fdCBtdDc5OTZfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6Nzk2OlxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbW1pby5jLTc5Ny1cXHRcXHRtdGtfd2VkX2RldmljZV9pcnFfc2V0X21hc2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtODAxLVxcdGlmIChkZXYtXFx1MDAzZWhpZjIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmM6ODAyOlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tbWlvLmMtODAzLVxcdFxcdFxcdG10a193ZWRfZGV2aWNlX2lycV9zZXRfbWFzayhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9OTk9c3RhdGljIGludCBtdDc5OTZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjA1LVxcdGlmIChkZXYtXFx1MDAzZWhpZjIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzoyMDY6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm1taW8ud2VkX2hpZjIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIwNy1cXHRcXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZF9oaWYyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIxNS1mcmVlX3dlZF9vcl9pcnFfdmVjdG9yOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjIxNjpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubW1pby53ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTIxNy1cXHRcXHRtdGtfd2VkX2RldmljZV9kZXRhY2goXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tbWlvLndlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9MTIyPW10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtMTM5LVxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkUpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzoxNDA6XFx0XFx0aWYgKG10a193ZWRfZGV2aWNlX2FjdGl2ZShcXHUwMDI2ZGV2LVxcdTAwM2VtbWlvLndlZCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtMTQxLVxcdFxcdCAgICAoKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUCkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz04NjA9aW50IG10NzZfdG9rZW5fY29uc3VtZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqKnB0eHdpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg3OC0jaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg3OTpcXHRpZiAobXRrX3dlZF9kZXZpY2VfYWN0aXZlKFxcdTAwMjZkZXYtXFx1MDAzZW1taW8ud2VkKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04ODAtXFx0ICAgIHRva2VuIFxcdTAwM2U9IGRldi1cXHUwMDNlbW1pby53ZWQud2xhbi50b2tlbl9zdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz05MTI9bXQ3Nl90b2tlbl9yZWxlYXNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgdG9rZW4sIGJvb2wgKndha2UpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtOTI4LSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6OTI5OlxcdFxcdGlmIChtdGtfd2VkX2RldmljZV9hY3RpdmUoXFx1MDAyNmRldi1cXHUwMDNlbW1pby53ZWQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTkzMC1cXHRcXHQgICAgdG9rZW4gXFx1MDAzZT0gZGV2LVxcdTAwM2VtbWlvLndlZC53bGFuLnRva2VuX3N0YXJ0IFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jPTkzPWludCBtdDc2X3dlZF9kbWFfc2V0dXAoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLCBib29sIHJlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xMDEtXFx0ZmxhZ3MgPSBxLVxcdTAwM2VmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3dlZC5jOjEwMjpcXHRpZiAoIXEtXFx1MDAzZXdlZCB8fCAhbXRrX3dlZF9kZXZpY2VfYWN0aXZlKHEtXFx1MDAzZXdlZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni93ZWQuYy0xMDMtXFx0XFx0cS1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfk1UX1FGTEFHX1dFRDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvd2VkLmM9MTgzPWludCBtdDc2X3dlZF9uZXRfc2V0dXBfdGMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDg6NTk6NTcuMjY5MTAxODk5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTc2MTMwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGBtdGtfd2VkX2RldmljZV9hY3RpdmVgIHZhcmlhYmxlIGlzIGRlZmluZWQuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCdzIGxpa2VseSByZXNpZGluZyB3aXRoaW4gdGhlIGBpbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmhgIGhlYWRlciBmaWxlLiBJdCBzZWVtcyBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0aW5nIGEgTWVkaWFUZWsgV2lkZWJhbmQgRWNobyBDYW5jZWxsYXRpb24gKFdFRCkgY29udGV4dC4gVGltZSB0byBjb25maXJtIHRoaXMgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnlpbmcgdGhlIGRlZmluaXRpb24ncyBsb2NhdGlvbiBhbmQgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5ODUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMDowMi41NjY3MTc0NjdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjQzODMzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdGtfd2VkX2RldmljZV9hY3RpdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oPTI2ND1zdGF0aWMgaW5saW5lIGJvb2wgbXRrX3dlZF9pc19hbXNkdV9zdXBwb3J0ZWQoc3RydWN0IG10a193ZWRfZGV2aWNlICpkZXYpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmgtMjczLSNpZmRlZiBDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRURcXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmg6Mjc0OiNkZWZpbmUgbXRrX3dlZF9kZXZpY2VfYWN0aXZlKF9kZXYpICEhKF9kZXYpLVxcdTAwM2VvcHNcXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmgtMjc1LSNkZWZpbmUgbXRrX3dlZF9kZXZpY2VfZGV0YWNoKF9kZXYpIChfZGV2KS1cXHUwMDNlb3BzLVxcdTAwM2VkZXRhY2goX2RldilcXG4tLVxcbmluY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210a193ZWQuaC0zMDgtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGtfd2VkLmg6MzA5OnN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2RldmljZV9hY3RpdmUoc3RydWN0IG10a193ZWRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrX3dlZC5oLTMxMC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjAyLjk4OTE2MjMyNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODM0ODExMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgbXRrX3dlZF9kZXZpY2VfYWN0aXZlYCByZWFsbHkganVzdCBkb2VzIGEgc2ltcGxlIGNoZWNrOiBgISEoX2RldiktXHUwMDNlb3BzYC4gIE5vdGhpbmcgdG9vIGNvbXBsZXggdGhlcmUuIEJ1dCwgaG9sZCBvbi4uLiBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBVU0IgZGV2aWNlLCBgZGV2LVx1MDAzZW1taW9gIGlzbid0IGFjdHVhbGx5IHZhbGlkLiBUaGF0J3MgYSBrZXkgcG9pbnQuIFRoaXMgbWVhbnMgYGRldi1cdTAwM2VtbWlvLndlZC5vcHNgIGlzIGdvaW5nIHRvIGJlIHJlYWRpbmcgZ2FyYmFnZSBkaXJlY3RseSBmcm9tIGBkZXYtXHUwMDNldXNiYC4gQW5kIHRoYXQgKmNvdWxkKiByZXN1bHQgaW4gYSBub24tTlVMTCB2YWx1ZSwgd2hpY2ggd291bGQgYmUgcHJvYmxlbWF0aWMuXG5cblJpZ2h0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZGV2LVx1MDAzZW1taW8ud2VkYCBpcyBhdCBzb21lIGZpeGVkIG9mZnNldCB3aXRoaW4gYGRldi1cdTAwM2VtbWlvYC4gIFdoZW4gaXQncyBhIFVTQiBkZXZpY2UsIHRoZSBzeXN0ZW0gdXNlcyBgZGV2LVx1MDAzZXVzYmAgaW5zdGVhZCBvZiBgZGV2LVx1MDAzZW1taW9gLiBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHRoZSBkZWZpbml0aW9ucyBmb3IgYHN0cnVjdCBtdDc2X3VzYmAgYW5kIGBzdHJ1Y3QgbXQ3Nl9tbWlvYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhvc2Ugc3RydWN0dXJlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk0NDMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6MDkuODIzOTc2MjAyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE0MzY3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG10NzZfdXNiIFxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTY0OT1zdHJ1Y3QgbXQ3Nl9tY3Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjYyLSNkZWZpbmUgTUNVX1JFU1BfVVJCX1NJWkVcXHQxMDI0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjYzOnN0cnVjdCBtdDc2X3VzYiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjY0LVxcdHN0cnVjdCBtdXRleCB1c2JfY3RybF9tdHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjA5Ljk2NTQxNzA2MVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTYxMzIzNjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkRpdmluZyBEZWVwIGludG8gbXQ3NiBTdHJ1Y3R1cmVzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgbXQ3NiBkcml2ZXIgaXMgc3RydWN0dXJlZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbXBhcmluZyB0aGUgYHN0cnVjdCBtdDc2X3VzYmAgYW5kIGBzdHJ1Y3QgbXQ3Nl9tbWlvYCBkZWZpbml0aW9ucy4gQXMgYW4gZXhwZXJ0LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUga2V5IGRpZmZlcmVuY2VzOiBob3cgdGhlIGhhcmR3YXJlIGFjY2VzcyBpcyBoYW5kbGVkLCBpbnRlcnJ1cHQgbWVjaGFuaXNtcywgYW5kIHRoZSBvdmVyYWxsIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93LiBgbXQ3Nl91c2JgIHNob3VsZCBoYXZlIGEgVVNCLXNwZWNpZmljIGRlc2NyaXB0b3IsIGxpa2VseSBmb3IgaGFuZGxpbmcgZW5kcG9pbnRzIGFuZCB0cmFuc2ZlciBidWZmZXJzLiBgbXQ3Nl9tbWlvYCwgb24gdGhlIG90aGVyIGhhbmQsIHdpbGwgcHJvYmFibHkgaGF2ZSByZWdpc3RlciBvZmZzZXRzIGFuZCBwb3NzaWJseSBQQ0kgb3Igb3RoZXIgbWVtb3J5IG1hcHBlZCBJTyBkZXRhaWxzLiBJJ2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGRpZmZlcmVuY2VzIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBkaXZlcmdlbmNlIG9mIGRlc2lnbi4gVGhpcyBjb21wYXJpc29uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgY29yZSBtdDc2IGZ1bmN0aW9uYWxpdHkgaXMgYWRhcHRlZCBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIGludGVyZmFjZXMuIEknbGwgYmUgbG9va2luZyBmb3Igc2hhcmVkIGVsZW1lbnRzLCBpbmRpY2F0aW5nIGEgY29tbW9uIGNvcmUsIGFuZCBhbHNvIHRoZSBhZGFwdGVyLXNwZWNpZmljIHBhcnRzIHRoYXQgSSdsbCBuZWVkIHRvIGlzb2xhdGUgaWYgSSdtIHBsYW5uaW5nIHRvIHdvcmsgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTc2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6MTYuNTI2NzQ0NjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MzpcXHRzdHJ1Y3QgbXQ3Nl91c2Ige1xcbiA2NjQ6XFx0XFx0c3RydWN0IG11dGV4IHVzYl9jdHJsX210eDtcXG4gNjY1OlxcdFxcdHU4ICpkYXRhO1xcbiA2NjY6XFx0XFx0dTE2IGRhdGFfbGVuO1xcbiA2Njc6XFx0XFxuIDY2ODpcXHRcXHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdHVzX3dvcmtlcjtcXG4gNjY5OlxcdFxcdHN0cnVjdCBtdDc2X3dvcmtlciByeF93b3JrZXI7XFxuIDY3MDpcXHRcXG4gNjcxOlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdCBzdGF0X3dvcms7XFxuIDY3MjpcXHRcXG4gNjczOlxcdFxcdHU4IG91dF9lcFtfX01UX0VQX09VVF9NQVhdO1xcbiA2NzQ6XFx0XFx0dTggaW5fZXBbX19NVF9FUF9JTl9NQVhdO1xcbiA2NzU6XFx0XFx0Ym9vbCBzZ19lbjtcXG4gNjc2OlxcdFxcbiA2Nzc6XFx0XFx0c3RydWN0IG10NzZ1X21jdSB7XFxuIDY3ODpcXHRcXHRcXHR1OCAqZGF0YTtcXG4gNjc5OlxcdFxcdFxcdC8qIG11bHRpcGxlIHJlYWRzICovXFxuIDY4MDpcXHRcXHRcXHRzdHJ1Y3QgbXQ3Nl9yZWdfcGFpciAqcnA7XFxuIDY4MTpcXHRcXHRcXHRpbnQgcnBfbGVuO1xcbiA2ODI6XFx0XFx0XFx0dTMyIGJhc2U7XFxuIDY4MzpcXHRcXHR9IG1jdTtcXG4gNjg0OlxcdH07XFxuIDY4NTpcXHRcXG4gNjg2OlxcdCNkZWZpbmUgTVQ3NlNfWE1JVF9CVUZfU1pcXHQweDNmZTAwXFxuIDY4NzpcXHQjZGVmaW5lIE1UNzZTX05VTV9UWF9FTlRSSUVTXFx0MjU2XFxuIDY4ODpcXHQjZGVmaW5lIE1UNzZTX05VTV9SWF9FTlRSSUVTXFx0NTEyXFxuIDY4OTpcXHRzdHJ1Y3QgbXQ3Nl9zZGlvIHtcXG4gNjkwOlxcdFxcdHN0cnVjdCBtdDc2X3dvcmtlciB0eHJ4X3dvcmtlcjtcXG4gNjkxOlxcdFxcdHN0cnVjdCBtdDc2X3dvcmtlciBzdGF0dXNfd29ya2VyO1xcbiA2OTI6XFx0XFx0c3RydWN0IG10NzZfd29ya2VyIG5ldF93b3JrZXI7XFxuIDY5MzpcXHRcXHRzdHJ1Y3QgbXQ3Nl93b3JrZXIgc3RhdF93b3JrZXI7XFxuIDY5NDpcXHRcXG4gNjk1OlxcdFxcdHU4ICp4bWl0X2J1ZjtcXG4gNjk2OlxcdFxcdHUzMiB4bWl0X2J1Zl9zejtcXG4gNjk3OlxcdFxcbiA2OTg6XFx0XFx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcXG4gNjk5OlxcdFxcdHZvaWQgKmludHJfZGF0YTtcXG4gNzAwOlxcdFxcdHU4IGh3X3ZlcjtcXG4gNzAxOlxcdFxcdHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7XFxuIDcwMjpcXHRcXG4gNzAzOlxcdFxcdGludCBwc2VfbWN1X3F1b3RhX21heDtcXG4gNzA0OlxcdFxcdHN0cnVjdCB7XFxuIDcwNTpcXHRcXHRcXHRpbnQgcHNlX2RhdGFfcXVvdGE7XFxuIDcwNjpcXHRcXHRcXHRpbnQgcGxlX2RhdGFfcXVvdGE7XFxuIDcwNzpcXHRcXHRcXHRpbnQgcHNlX21jdV9xdW90YTtcXG4gNzA4OlxcdFxcdFxcdGludCBwc2VfcGFnZV9zaXplO1xcbiA3MDk6XFx0XFx0XFx0aW50IGRlZmljaXQ7XFxuIDcxMDpcXHRcXHR9IHNjaGVkO1xcbiA3MTE6XFx0XFxuIDcxMjpcXHRcXHRpbnQgKCpwYXJzZV9pcnEpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3NnNfaW50ciAqaW50cik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjE2LjUyNjk3NzkzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNzI0NTE1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYHN0cnVjdCBtdDc2X21taW9gKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRpbWUgdG8gZGlzc2VjdCBgc3RydWN0IG10NzZfbW1pb2AuIEkga25vdyBpdCdzIGEgY3JpdGljYWwgc3RydWN0dXJlLCBsaWtlbHkgaG9sZGluZyB0aGUgYmFzZSBhZGRyZXNzZXMgYW5kIHJlbGF0ZWQgcGFyYW1ldGVycyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTWVkaWFUZWsgNzZ4eCBXaUZpIGhhcmR3YXJlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgaGludHMgYWJvdXQgaG93IHRoZSBkcml2ZXIgbWFwcyB0aGUgcGh5c2ljYWwgTU1JTyByZWdpb25zIGludG8gdmlydHVhbCBtZW1vcnksIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgYWRkcmVzcyByZW1hcHBpbmcgaWYgdGhlIGRldmljZSBpc24ndCBpbiBhIGZpeGVkIGxvY2F0aW9uLiBJJ20gaW1tZWRpYXRlbHkgc2Nhbm5pbmcgZm9yIG1lbWJlcnMgdGhhdCBsb29rIGxpa2UgcmVnaXN0ZXIgb2Zmc2V0cywgYW5kIGFsc28gZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IGluZGljYXRlIGJ1cy1zcGVjaWZpYyBjb25maWd1cmF0aW9uLCBtYXliZSBQQ0llIEJBUiBpbmZvcm1hdGlvbiBvciBzb21lIGtpbmQgb2YgSU9NTVUgc2V0dXAgaWYgdGhpcyBpcyB1c2VkLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBvciBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCBhcm91bmQgdGhpcyBzdHJ1Y3QgdG8gZW5zdXJlIHByb3BlciBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGludGVycnVwdCBoYW5kbGVycy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBidWdzKSBhcmUgb2Z0ZW4gZm91bmQuIEZpbmFsbHksIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVmaW5pdGlvbidzIHNpemUgYW5kIGFueSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzOyB0aGF0IGNhbiByZXZlYWwgYSBsb3QgYWJvdXQgdGhlIGFyY2hpdGVjdHVyYWwgYXNzdW1wdGlvbnMgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwMDAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjI0Ljc5OTQzNDQ2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzODMzMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBtdDc2X21taW8gXFxcXHtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9Njg5PXN0cnVjdCBtdDc2X3NkaW8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjcxNTpzdHJ1Y3QgbXQ3Nl9tbWlvIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03MTYtXFx0dm9pZCBfX2lvbWVtICpyZWdzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMDoyNS4wNTMyNzE5MzZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI4OTg5MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBtdDc2X21taW9gIFN0cnVjdHVyZSoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc2X21taW9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGF5b3V0LCBtZW1iZXJzLCBhbmQgcHVycG9zZSBvZiB0aGlzIHN0cnVjdHVyZS4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGV4YWN0IGRlZmluaXRpb24gaXRzZWxmLiBJdCdzIGNydWNpYWwgdG8gaGF2ZSBhIGNvbmNyZXRlIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBzdHJ1Y3R1cmUgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcy4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBpbiBteSBtaW5kIHJlZ2FyZGluZyBob3cgdGhlIHJlZ2lzdGVycyBhcmUgbWFwcGVkLCB0aGUgYml0ZmllbGRzIHVzZWQsIGFuZCBob3cgaXQgYWxsIGhhbmdzIHRvZ2V0aGVyLiBPbmx5IHRoZW4gY2FuIEkgYmUgY29uZmlkZW50IGluIG15IG5leHQgc3RlcHMsIHdoZXRoZXIgSSdtIGRlYnVnZ2luZywgb3B0aW1pemluZywgb3IgcmVmYWN0b3JpbmcgcmVsYXRlZCBjb2RlLiBHcmFiYmluZyB0aGUgZGVmaW5pdGlvbiBpcyB0aGUgb25seSB3YXkgdG8gZG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDQzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6MzMuMzQzMTY2MzJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcxNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDcxNTpcXHRzdHJ1Y3QgbXQ3Nl9tbWlvIHtcXG4gNzE2OlxcdFxcdHZvaWQgX19pb21lbSAqcmVncztcXG4gNzE3OlxcdFxcdHNwaW5sb2NrX3QgaXJxX2xvY2s7XFxuIDcxODpcXHRcXHR1MzIgaXJxbWFzaztcXG4gNzE5OlxcdFxcbiA3MjA6XFx0XFx0c3RydWN0IG10a193ZWRfZGV2aWNlIHdlZDtcXG4gNzIxOlxcdFxcdHN0cnVjdCBtdGtfd2VkX2RldmljZSB3ZWRfaGlmMjtcXG4gNzIyOlxcdFxcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldDtcXG4gNzIzOlxcdFxcdHN0cnVjdCBjb21wbGV0aW9uIHdlZF9yZXNldF9jb21wbGV0ZTtcXG4gNzI0OlxcdFxcbiA3MjU6XFx0XFx0c3RydWN0IGFpcm9oYV9wcGVfZGV2IF9fcmN1ICpwcGVfZGV2O1xcbiA3MjY6XFx0XFx0c3RydWN0IGFpcm9oYV9ucHUgX19yY3UgKm5wdTtcXG4gNzI3OlxcdFxcdHBoeXNfYWRkcl90IHBoeV9hZGRyO1xcbiA3Mjg6XFx0XFx0aW50IG5wdV90eXBlO1xcbiA3Mjk6XFx0fTtcXG4gNzMwOlxcdFxcbiA3MzE6XFx0c3RydWN0IG10NzZfcnhfc3RhdHVzIHtcXG4gNzMyOlxcdFxcdHVuaW9uIHtcXG4gNzMzOlxcdFxcdFxcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQ7XFxuIDczNDpcXHRcXHRcXHR1MTYgd2NpZF9pZHg7XFxuIDczNTpcXHRcXHR9O1xcbiA3MzY6XFx0XFxuIDczNzpcXHRcXHR1MzIgcmVvcmRlcl90aW1lO1xcbiA3Mzg6XFx0XFxuIDczOTpcXHRcXHR1MzIgYW1wZHVfcmVmO1xcbiA3NDA6XFx0XFx0dTMyIHRpbWVzdGFtcDtcXG4gNzQxOlxcdFxcbiA3NDI6XFx0XFx0dTggaXZbNl07XFxuIDc0MzpcXHRcXG4gNzQ0OlxcdFxcdHU4IHBoeV9pZHg6MjtcXG4gNzQ1OlxcdFxcdHU4IGFnZ3I6MTtcXG4gNzQ2OlxcdFxcdHU4IHFvc19jdGw7XFxuIDc0NzpcXHRcXHR1MTYgc2Vxbm87XFxuIDc0ODpcXHRcXG4gNzQ5OlxcdFxcdHUxNiBmcmVxO1xcbiA3NTA6XFx0XFx0dTMyIGZsYWc7XFxuIDc1MTpcXHRcXHR1OCBlbmNfZmxhZ3M7XFxuIDc1MjpcXHRcXHR1OCBlbmNvZGluZzozLCBidzo0O1xcbiA3NTM6XFx0XFx0dW5pb24ge1xcbiA3NTQ6XFx0XFx0XFx0c3RydWN0IHtcXG4gNzU1OlxcdFxcdFxcdFxcdHU4IGhlX3J1OjM7XFxuIDc1NjpcXHRcXHRcXHRcXHR1OCBoZV9naToyO1xcbiA3NTc6XFx0XFx0XFx0XFx0dTggaGVfZGNtOjE7XFxuIDc1ODpcXHRcXHRcXHR9O1xcbiA3NTk6XFx0XFx0XFx0c3RydWN0IHtcXG4gNzYwOlxcdFxcdFxcdFxcdHU4IHJ1OjQ7XFxuIDc2MTpcXHRcXHRcXHRcXHR1OCBnaToyO1xcbiA3NjI6XFx0XFx0XFx0fSBlaHQ7XFxuIDc2MzpcXHRcXHR9O1xcbiA3NjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjMzLjM0MzMzOTY5WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjg4OTkxMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSWCBBZ2dyZWdhdGlvbiBCdWcgaW4gbXQ3NioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZgIGNvZGUgYW5kIEkgdGhpbmsgSSd2ZSBzcG90dGVkIGEgZnVuY3Rpb25hbCBidWcuIEl0IGxvb2tzIGxpa2UgdGhlIGxheW91dCBvZiB0aGUgYG10NzZfbW1pb2AgYW5kIGBtdDc2X3VzYmAgc3RydWN0cyBhcmUgb3ZlcmxhcHBpbmcsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgYHdlZGAgbWVtYmVyIGluIHRoZSBgbW1pb2Agc3RydWN0IGlzIGF0IG9mZnNldCAxNiAoYXNzdW1pbmcgNjQtYml0IHBvaW50ZXJzKSwgYW5kIGBzdGF0dXNfd29ya2VyYCBpcyBpbiBgbXQ3Nl91c2JgLiBUaGlzIG1lYW5zIHRoZXJlJ3MgYSBtZW1vcnkgb3ZlcmxhcCwgYW5kIHRoZSBgbW1pb2AncyBgbnB1YCBmaWVsZCBpcyBsaWtlbHkgYWxzbyBvdmVybGFwcGluZyB3aXRoIHRoaW5ncyBpbiBgbXQ3Nl91c2JgLCBsaWtlIGBpbl9lcGAgb3IgYG1jdWAuIFRoZSBwcm9ibGVtIGFyaXNlcyB3aGVuIHNvbWUgbm9uLXplcm8gdmFsdWVzIGluIHRoZSBVU0Igc2lkZSBvZiB0aGluZ3MgbWFrZSBpdCBsb29rIGxpa2UgdGhlIGBtbWlvYCdzIGBucHVgIGZpZWxkIGlzIGFjdGl2ZSB3aGVuIGl0IHNob3VsZG4ndCBiZS5cblxuQ29uc2VxdWVudGx5LCBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgY2FuIGluY29ycmVjdGx5IHJldHVybiB0cnVlLiBUaGVuIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCB0aGUgY29kZSBlbmRzIHVwIHF1ZXVpbmcgcGFja2V0cyB3aXRoIGBfX3NrYl9xdWV1ZV90YWlsYCBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgdGhlIGFwcHJvcHJpYXRlIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcsIGJyZWFraW5nIHRoZSBVU0IgZGV2aWNlIGJlaGF2aW9yLiBJdCBzZWVtcyB0aGUgcGF0Y2ggZml4ZXMgdGhpcyBieSBjaGVja2luZyBgbXQ3Nl9pc19tbWlvKGRldilgICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgYWN0dWFsbHkgYWN0aXZlIHdpdGhpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0aGlua2luZyBhYm91dCB0aGUgY29tcGxldGUgcGljdHVyZSBoZXJlLiAgSSB3b25kZXIgaWYgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgaGFzIHRoZSBzYW1lIGJ1Zywgc2luY2UgaXQncyBhbHNvIGNhbGxlZCBpbiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYC4gTGV0J3MgY2hlY2sgdGhlIGNvZGUuLi4gYWgsIHllcywgYG10a193ZWRfZGV2aWNlX2FjdGl2ZWAgKmFsc28qIHNlZW1zIHN1c2NlcHRpYmxlIHRvIHRoZSBvdmVybGFwIGlzc3VlLCBhcyBpdCB1c2VzIHRoZSBzYW1lIGB3ZWRgIGZpZWxkLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgaXQgY2hlY2tzIGAhIShfZGV2KS1cdTAwM2VvcHNgLCB3aGljaCBvZmZlcnMgKnNvbWUqIHByb3RlY3Rpb24uICBJZiBgZGV2LVx1MDAzZW1taW8ud2VkLm9wc2Agb3ZlcmxhcHMgd2l0aCBzb21lIG5vbi16ZXJvIFVTQiBmaWVsZCwgaXQgbWlnaHQgc3RpbGwgcmV0dXJuIHRydWUsIGhvd2V2ZXIgdGhlIHBhdGNoIGlzIGxpbWl0ZWQgaW4gYWRkcmVzc2luZyB0aGlzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlYmFzZS5cblxuU28sIGluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGZpeCBmb3IgVVNCIGFuZCBTRElPIGRldmljZXMsIGFkZGluZyBhIGNoZWNrIGZvciBgbXQ3Nl9pc19tbWlvYCBpbiBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgYW5kIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYC4gTm93LCBJIHJlYWxseSB0aGluayB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGNhdWdodCBhbmQgaGFuZGxlZC5cblxuRm9jdXNpbmcgaW4sIEknbSB0aGlua2luZyBvZiBsb29raW5nIGF0IGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLCBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAsIGFuZCBhbHNvIGBtdDc2X2RtYV9yeF9jbGVhbnVwYCBhbmQgYG10NzZfZG1hX3J4X3Jlc2V0YC4gV2FpdCwgYG10NzZfZG1hX3J4X2NsZWFudXBgIGlzIG9ubHkgZm9yIERNQSBkZXZpY2VzLCBzbyB0aGF0J3Mgbm90IHJlbGV2YW50IGhlcmUgc2luY2Ugd2UncmUgZml4aW5nIGEgYnVnIGluIHRoZSBjb2RlIHRoYXQncyBzaGFyZWQgYmV0d2VlbiBib3RoIGRldmljZSB0eXBlcywgbGlrZSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4gSSB3YW50IHRvIGNoZWNrIHdoZXJlIGBtdDc2X3BwZV9kZXZpY2VfYWN0aXZlYCBpcyB1c2VkLCBhbHNvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjMxNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjQ0LjYzMjMzMzc5MVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MTE4Nzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcHBlX2RldmljZV9hY3RpdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTczNz1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc0MjpzdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6NDQuNzY4NDU2NTJaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3MDk0NTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVudXNlZCBWYXJpYWJsZSBpbiBtdDc2KipcblxuT2theSwgc28gYG10NzZfcHBlX2RldmljZV9hY3RpdmVgLi4uIHRoYXQncyBhIGJpdCBvZGQuIEknbSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgYG10NzZgIGRyaXZlciwgYW5kIHRoYXQgbmFtZSBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBpbml0aWFsIHN1c3BpY2lvbiBpcyB0aGF0IGl0IG1pZ2h0IGJlIHVudXNlZCwgb3IsIGF0IGJlc3QsIHVuZGVydXRpbGl6ZWQuIFRoZSBjb2RlIGlzIHVzdWFsbHkgd2VsbC1vcmdhbml6ZWQsIHNvIGZpbmRpbmcgc29tZXRoaW5nIGxpa2UgdGhpcyBpcyB1bnVzdWFsLlxuXG5MZXQncyBjb25maXJtIHRoaXMgYnkgc2VhcmNoaW5nIHRoZSBlbnRpcmUgc291cmNlIHRyZWUgZm9yIHRoZSB2YXJpYWJsZSBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIFdlIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBjb25jbHVkaW5nIGFueXRoaW5nLiBJdCdzIHBvc3NpYmxlIGl0J3MgdXNlZCBpbiBzb21lIG9ic2N1cmUgY29ybmVyIG9mIHRoZSBjb2RlYmFzZSwgb3IgbWF5YmUgaXQncyB1c2VkIGNvbmRpdGlvbmFsbHksIGFuZCBJIG1pc3NlZCBpdCBwcmV2aW91c2x5LiBBIGNvbXByZWhlbnNpdmUgc2VhcmNoIHdpbGwgZ2l2ZSB1cyB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDE3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6NDguNDM5NDA1ODE0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQxMjcwNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcHBlX2RldmljZV9hY3RpdmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3Mzc9c3RhdGljIGlubGluZSBib29sIG10NzZfbnB1X2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDI6c3RhdGljIGlubGluZSBib29sIG10NzZfcHBlX2RldmljZV9hY3RpdmUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc0My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAwOjUwLjg4MDcxNDY4NFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ4OTMzMTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGUgYW5kIEkgc2VlIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYC4uLmFuZCBpdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHdoZXJlIGl0J3MgYmVpbmcgKmRpcmVjdGx5KiBjYWxsZWQuIEhtbSwgY291bGQgaXQgYmUgcGFydCBvZiBhIGxhcmdlciBwYXRjaCwgb3IgaXMgaXQgcGVyaGFwcyBqdXN0IGEgdXRpbGl0eSBmdW5jdGlvbj8gTmVlZCB0byBkaWcgZGVlcGVyLlxuXG5MZXQncyBzZWXigKYgSSBrbm93IGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCAqaXMqIHVzZWQgaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIGBtdDc2X25wdV9jaGVja19wcGVgLCBhbmQgYG10NzZfbnB1X25ldF9zZXR1cF90Y2AuIEludGVyZXN0aW5nLiBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgYG10NzZfbnB1X2NoZWNrX3BwZWAgaXMgc29tZXRpbWVzIGludm9rZWQgZnJvbSBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgc28gbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXTigKYgbm9wZSwgbGV04oCZcyBkb3VibGUtY2hlY2sgaG93IGBtdDc2X25wdV9jaGVja19wcGVgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuIFRoYXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDQ0MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMDo1NS42Mjk2NTI1ODVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDA5ODkyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X25wdV9jaGVja19wcGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTY0OD1pbnQgbXQ3Nl90ZXN0bW9kZV9hbGxvY19za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHUzMiBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY1MC0jaWZkZWYgQ09ORklHX01UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTY1MTp2b2lkIG10NzZfbnB1X2NoZWNrX3BwZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjUyLVxcdFxcdFxcdHUzMiBpbmZvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE2Njc9aW50IG10NzZfbnB1X3NlbmRfdHhyeF9hZGRyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgaWZpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NzAtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNjcxOnN0YXRpYyBpbmxpbmUgdm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTY3Mi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTQxMT1tdDc5OTZfbWFjX2ZpbGxfcngoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtNjgzLVxcdFxcdFxcdFxcdCAgICAgKmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jOjY4NDpcXHRcXHRtdDc2X25wdV9jaGVja19wcGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgc2tiLCAqaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtNjg1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbnB1LmM9NjI9c3RhdGljIHN0cnVjdCBza19idWZmICptdDc2X25wdV9kZXF1ZXVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxMTY6dm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYy0xMTctXFx0XFx0XFx0dTMyIGluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTE0MS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9ucHUuYzoxNDI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9ucHVfY2hlY2tfcHBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L25wdS5jLTE0My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDA6NTUuODUzNzU1MTY3WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NzAxMjI3OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3NiBOUFUgRGV2aWNlIEFjdGl2ZSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTk2X21hY19maWxsX3J4YCBmdW5jdGlvbiwgYW5kIGl0IGNhbGxzIGBtdDc2X25wdV9jaGVja19wcGVgLiBJIGtub3cgYG10Nzk5NmAgaXMgUENJZS1vbmx5LCBzbyB0aGUgb25seSBwbGFjZSBgbXQ3Nl9ucHVfZGV2aWNlX2FjdGl2ZWAgZ2V0cyBjYWxsZWQgZm9yIFVTQi9TRElPIGRldmljZXMgaXMgd2l0aGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgLiBMZXQgbWUgY2lyY2xlIGJhY2sgdG8gdGhhdCBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCBmdW5jdGlvbi4gUmlnaHQsIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWAgYW5kIGBtdDc2c19wcm9jZXNzX3J4X3F1ZXVlYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb246XG5cbiogICBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYFxuKiAgIGBtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlYFxuKiAgIGBtdDc2c19wcm9jZXNzX3J4X3F1ZXVlYFxuXG5Pa2F5LCBsZXQncyBjb25maXJtIHRoYXQgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgaXMgaW5kZWVkIHJlYWNoYWJsZS4gWXVwLCBpdCdzIGluIHRoZSBOQVBJIHBvbGwgbG9vcCBmb3IgVVNCIFJYLiBXaGVuIGEgcGFja2V0IGFycml2ZXMgdmlhIFVTQiwgYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgIGdldHMgY2FsbGVkLiBUaGlzIGRlcXVldWVzIFNLQnMgYW5kIHRoZW4gY2FsbHMgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGluY29ycmVjdGx5IHJldHVybnMgdHJ1ZSwgd2UgZW5kIHVwIGNhbGxpbmcgYF9fc2tiX3F1ZXVlX3RhaWxgIGluc3RlYWQgb2YgYG10NzZfcnhfYWdncl9yZW9yZGVyYC4gVGhpcyBtZWFucyB3ZSBieXBhc3MgdGhlIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgbG9naWMuIFRoYXQncyBhIGJhZCB0aGluZy4gSXQgY291bGQgY2F1c2Ugb3V0LW9mLW9yZGVyIHBhY2tldHMgb3IgZXZlbiBtZW1vcnkgbGVha3MgaWYgdGhlIHJlb3JkZXIgYnVmZmVyIGhhcyBkZXBlbmRlbmNpZXMuIEJ5IGZpeGluZyB0aGlzLCBwYWNrZXRzIHdpbGwgZmxvdyB0aHJvdWdoIGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmAgcHJvcGVybHkuXG5cbk5vdywgd2hpY2ggY29uZmlndXJhdGlvbnMgZG8gSSBuZWVkIHRvIGVuYWJsZSB0byB0cmlnZ2VyIHRoaXM/XG5cbkkndmUgZ290OlxuXG4qICAgYE1UNzZfQ09SRWBcbiogICBgTVQ3Nl9VU0JgXG4qICAgYE1UNzZfU0RJT2BcbiogICBgTVQ3OTIxVWBcbiogICBgTVQ3OTI1VWBcbiogICBgTVQ3NngwVWBcbiogICBgTVQ3NngyVWBcbiogICBgTVQ3NjYzVWBcbiogICBgTVQ3NjYzU2BcbiogICBgTVQ3OTIxU2BcblxuTGV0IG1lIHF1aWNrbHkgbGlzdCB0aGVtOlxuXG4qICAgYE1UNzZfQ09SRWBcbiogICBgTVQ3Nl9VU0JgXG4qICAgYE1UNzZfU0RJT2BcbiogICBgTVQ3NngwVWBcbiogICBgTVQ3NngyVWBcbiogICBgTVQ3NjYzVWBcbiogICBgTVQ3NjYzU2BcbiogICBgTVQ3OTIxVWBcbiogICBgTVQ3OTIxU2BcbiogICBgTVQ3OTI1VWBcblxuV2FpdCBhIHNlY29uZCwgdGhlcmUncyBgTVQ3Nl9OUFVgLiBTaG91bGQgSSBhZGQgdGhhdCB0b28/IFRoZSBmaXggYWRkcmVzc2VzIHRoZSBjYXNlIHdoZXJlIGBNVDc2X05QVWAgbWlnaHQgYmUgZW5hYmxlZCAob3IgYSBwb2ludGVyIGlzIGFjY2Vzc2VkKSBidXQgdGhlIGRldmljZSBpc24ndCBNTUlPLiBCdXQgYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFjY2Vzc2VzIGBkZXYtXHUwMDNlbW1pby5ucHVgLiBJZiBgTVQ3Nl9OUFVgIGlzbid0IGVuYWJsZWQsIGRvZXMgdGhhdCBtZWFuIGBkZXYtXHUwMDNlbW1pby5ucHVgIGRvZXNuJ3QgZXhpc3Q/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBzdHJ1Y3QgbXQ3Nl9tbWlvYCBkZWZpbml0aW9uLiBSaWdodCwgYHN0cnVjdCBhaXJvaGFfbnB1IF9fcmN1ICpucHU7YCBpcyAqYWx3YXlzKiB0aGVyZSwgaXQncyBub3QgdW5kZXIgYW4gYCNpZmRlZiBDT05GSUdfTVQ3Nl9OUFVgLiBIbW0sIGJ1dCBgTVQ3Nl9OUFVgIG1pZ2h0IHN0aWxsIGJlIG5lZWRlZCB0byBjb21waWxlIGBucHUuY2AuIFRvIGJlIHNhZmUsIGxldCdzIGluY2x1ZGUgYE1UNzZfTlBVYC5cblxuT2theSwgdGhlIHJlZmluZWQgZm9jdXMgc3ltYm9scyBub3cgYmVjb21lOlxuXG4qICAgYG10NzZfcnhfcG9sbF9jb21wbGV0ZWBcbiogICBgbXQ3NnVfcHJvY2Vzc19yeF9xdWV1ZWBcbiogICBgbXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZWBcbiogICBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIChiZWNhdXNlIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGdldHMgY2FsbGVkKVxuXG5BbmQgZmluYWxseSwgbGV0J3MgY2hlY2sgYG10NzZfcnhfYWdncl9yZW9yZGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2MjMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMDk6MDE6MTMuNTU0OTg1NTA5WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTY4MjMwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYz05MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6OTE6bXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jPTExOT1tdDc2X3J4X2FnZ3JfY2hlY2tfY3RsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM6MTQ4OnZvaWQgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZnJhbWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmM9MjQ0PWludCBtdDc2X3J4X2FnZ3Jfc3RhcnQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsIHU4IHRpZG5vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9hZ2ctcnguYy0yNTgtXFx0dGlkLVxcdTAwM2VudW0gPSB0aWRubztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2FnZy1yeC5jOjI1OTpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dGlkLVxcdTAwM2VyZW9yZGVyX3dvcmssIG10NzZfcnhfYWdncl9yZW9yZGVyX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYWdnLXJ4LmMtMjYwLVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZ0aWQtXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE1NTQ9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY3LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTU2ODpcXHRcXHRcXHRtdDc2X3J4X2FnZ3JfcmVvcmRlcihza2IsIFxcdTAwMjZmcmFtZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNTY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3OTU9dm9pZCBtdDc2X3J4X3BvbGxfY29tcGxldGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzk2LVxcdFxcdFxcdCAgIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc5Nzp2b2lkIG10NzZfcnhfYWdncl9yZW9yZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmZyYW1lcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc5OC12b2lkIG10NzZfdGVzdG1vZGVfdHhfcGVuZGluZyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDA5OjAxOjEzLjg1MTgxNjc3NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMwMDA1MDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJYIEFnZ3JlZ2F0aW9uIEZpeCoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBJJ20gemVyb2luZyBpbiBvbiBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgIGFzIHRoZSBjcnVjaWFsIGZvY3VzIHN5bWJvbC4gTGV0J3MgYnJlYWsgZG93biB0aGUgcmVhc29uaW5nLCBiZWNhdXNlIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkLCB3ZWxsLWRlZmluZWQgcHJvYmxlbS5cblxuVGhlIGlzc3VlIHN0ZW1zIGZyb20gYSBzdWJ0bGUgZmxhdyB3aXRoaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAuIEl0IHNlZW1zIHRoZXNlIGZ1bmN0aW9ucyB3ZXJlLCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIG1pc2lkZW50aWZ5aW5nIG5vbi1NTUlPIGRldmljZXMg4oCTIHNwZWNpZmljYWxseSBVU0IgYW5kIFNESU8gb25lcyDigJMgYXMgYWN0aXZlIE1NSU8gZGV2aWNlcy4gVGhpcyBvY2N1cnMgYmVjYXVzZSB0aGUgZnVuY3Rpb25zIHdlcmUgYWNjZXNzaW5nIGZpZWxkcyB3aXRoaW4gYSB1bmlvbiBzdHJ1Y3R1cmUuIFRoZSBkYXRhIGxheW91dCBvdmVybGFwcGVkIGJldHdlZW4gTU1JTyBhbmQgVVNCL1NESU8gc3BlY2lmaWMgZGF0YSwgbGVhZGluZyB0byB0aGUgaW5jb3JyZWN0IHRydWUgcmV0dXJuLlxuXG5UaGUgcmlwcGxlIGVmZmVjdCBpcyBzaWduaWZpY2FudC4gVGhpcyBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIHdvdWxkIGNhdXNlIHRoZSBSWCBwYXRoLCB3aXRoaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAsIHRvIGJ5cGFzcyB0aGUgY3J1Y2lhbCBSWCBhZ2dyZWdhdGlvbiByZW9yZGVyaW5nIHN0ZXAgaW1wbGVtZW50ZWQgaW4gYG10NzZfcnhfYWdncl9yZW9yZGVyYCBmb3IgdGhlc2UgVVNCL1NESU8gZGV2aWNlcy4gVGhhdCdzIGEgZGlyZWN0IHJvdXRlIHRvIHBhY2tldCBsb3NzIGFuZCBvdXQtb2Ytb3JkZXIgZGVsaXZlcnkuIE5vdCBnb29kLCBhbmQgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB5b3UnZCB1bmNvdmVyIHRocm91Z2ggVVNCIGZ1enppbmcuXG5cblRoZSBmaXgsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhbiBgbXQ3Nl9pc19tbWlvKGRldilgIGNoZWNrLiBUaGlzIHNpbXBsZSBhZGRpdGlvbiBpcyBhbGwgdGhhdCdzIG5lZWRlZCB0byBwcm9wZXJseSBpZGVudGlmeSB3aGV0aGVyIGEgZGV2aWNlIGlzLCBpbiBmYWN0LCBhbiBNTUlPIGRldmljZS4gVGhpcyBhdm9pZHMgdGhlIGZhdWx0eSBsb2dpYyBpbiB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGFuZCBlbnN1cmVzIHRoZSBjb3JyZWN0IFJYIHBhdGggaXMgdGFrZW4gZm9yIHRoZSBhZmZlY3RlZCBVU0IvU0RJTyBkZXZpY2VzLCB0aHVzIHJlc3RvcmluZyB0aGUgYWdncmVnYXRpb24gcmVvcmRlcmluZy4gVGhlIHBvdGVudGlhbCBmb3IgdGhpcyB0byBtYW5pZmVzdCB1bmRlciBVU0IgZnV6emluZyBtYWtlcyBpdCBhIHNvbGlkIGZ1bmN0aW9uYWwgZml4LCBhIGdvb2QgY2F0Y2guXG5cbk15IGZvY3VzIHN5bWJvbHMgYXJlOiBgbXQ3Nl9yeF9wb2xsX2NvbXBsZXRlYCwgYG10NzZ1X3Byb2Nlc3NfcnhfcXVldWVgLCBgbXQ3NnNfcHJvY2Vzc19yeF9xdWV1ZWAsIGFuZCBlc3BlY2lhbGx5LCBgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgLlxuXG5UaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgc2VlbSB0byBiZTogYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2X1NESU9gLCBhbmQgYW55IG9mIHRoZSBVU0IgZGV2aWNlIGRyaXZlcnMgKCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCBhbmQgYE1UNzY2M1NgLCBgTVQ3OTIxU2ApLlxuXG5Pa2F5LCB3aXRoIHRoYXQgY2xlYXIgaW4gbXkgbWluZCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MjYwLCJPdXRwdXRUb2tlbnMiOjMzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQwOTowMToyNC4xNTE4NzA3NzRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwNjAwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3Nl9VU0JcIixcbiAgICBcIk1UNzZfU0RJT1wiLFxuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiLFxuICAgIFwiTVQ3NjYzVVwiLFxuICAgIFwiTVQ3NjYzU1wiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTIxU1wiLFxuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3Nl9OUFVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3J4X3BvbGxfY29tcGxldGVcIixcbiAgICBcIm10NzZ1X3Byb2Nlc3NfcnhfcXVldWVcIixcbiAgICBcIm10NzZzX3Byb2Nlc3NfcnhfcXVldWVcIixcbiAgICBcIm10NzZfcnhfYWdncl9yZW9yZGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG10NzZfbnB1X2RldmljZV9hY3RpdmVgIGFuZCBgbXQ3Nl9wcGVfZGV2aWNlX2FjdGl2ZWAgd2hlcmUgdGhleSBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gdHJ1ZSBmb3Igbm9uLU1NSU8gZGV2aWNlcyAobGlrZSBVU0Igb3IgU0RJTykgYnkgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIHVuaW9uIHRoYXQgb3ZlcmxhcCB3aXRoIFVTQi9TRElPIHNwZWNpZmljIGRhdGEuIFRoaXMgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSBjYXVzZWQgdGhlIFJYIHBhdGggaW4gYG10NzZfcnhfcG9sbF9jb21wbGV0ZWAgdG8gYnlwYXNzIFJYIGFnZ3JlZ2F0aW9uIHJlb3JkZXJpbmcgKGBtdDc2X3J4X2FnZ3JfcmVvcmRlcmApIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBCeSBhZGRpbmcgdGhlIGBtdDc2X2lzX21taW8oZGV2KWAgY2hlY2ssIHRoZSBjb2RlIGNvcnJlY3RseSBpZGVudGlmaWVzIE1NSU8gZGV2aWNlcyBhbmQgcmVzdG9yZXMgdGhlIHByb3BlciBSWCBwYXRoIGZvciBVU0IvU0RJTyBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc2X0NPUkVcIixcbiAgICBcIk1UNzZfVVNCXCIsXG4gICAgXCJNVDc2X1NESU9cIixcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzY2M1NcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyMVNcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzZfTlBVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9yeF9wb2xsX2NvbXBsZXRlXCIsXG4gICAgXCJtdDc2dV9wcm9jZXNzX3J4X3F1ZXVlXCIsXG4gICAgXCJtdDc2c19wcm9jZXNzX3J4X3F1ZXVlXCIsXG4gICAgXCJtdDc2X3J4X2FnZ3JfcmVvcmRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBtdDc2X25wdV9kZXZpY2VfYWN0aXZlYCBhbmQgYG10NzZfcHBlX2RldmljZV9hY3RpdmVgIHdoZXJlIHRoZXkgY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIHRydWUgZm9yIG5vbi1NTUlPIGRldmljZXMgKGxpa2UgVVNCIG9yIFNESU8pIGJ5IGFjY2Vzc2luZyBmaWVsZHMgaW4gYSB1bmlvbiB0aGF0IG92ZXJsYXAgd2l0aCBVU0IvU0RJTyBzcGVjaWZpYyBkYXRhLiBUaGlzIGluY29ycmVjdCByZXR1cm4gdmFsdWUgY2F1c2VkIHRoZSBSWCBwYXRoIGluIGBtdDc2X3J4X3BvbGxfY29tcGxldGVgIHRvIGJ5cGFzcyBSWCBhZ2dyZWdhdGlvbiByZW9yZGVyaW5nIChgbXQ3Nl9yeF9hZ2dyX3Jlb3JkZXJgKSBmb3IgVVNCL1NESU8gZGV2aWNlcy4gQnkgYWRkaW5nIHRoZSBgbXQ3Nl9pc19tbWlvKGRldilgIGNoZWNrLCB0aGUgY29kZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBNTUlPIGRldmljZXMgYW5kIHJlc3RvcmVzIHRoZSBwcm9wZXIgUlggcGF0aCBmb3IgVVNCL1NESU8gZGV2aWNlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowh966j[1] Phase: Succeeded StartedAt: 2026-07-21 09:01:35 +0000 UTC FinishedAt: 2026-07-21 09:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 09:01:35 +0000 UTC FinishedAt: 2026-07-21 09:01:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2] Phase: Succeeded StartedAt: 2026-07-21 09:01:35 +0000 UTC FinishedAt: 2026-07-21 10:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:01:35 +0000 UTC FinishedAt: 2026-07-21 10:31:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:01:35 +0000 UTC FinishedAt: 2026-07-21 09:01:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:01:35 +0000 UTC FinishedAt: 2026-07-21 09:01:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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-workflowh966j/series-workflowh966j-convert-artifact-321000610/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:01:56 +0000 UTC FinishedAt: 2026-07-21 09:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:01:56 +0000 UTC FinishedAt: 2026-07-21 09:38:32 +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:*52ca8ba1-7d0b-4b2c-b017-6b22783e3c22,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-workflowh966j/series-workflowh966j-convert-artifact-321000610/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": "0d15f9dd-1fd2-4fd7-8d47-5a795650c765", "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-workflowh966j/series-workflowh966j-build-action-3206518368/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:01:56 +0000 UTC FinishedAt: 2026-07-21 09:38:22 +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:*52ca8ba1-7d0b-4b2c-b017-6b22783e3c22,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-workflowh966j/series-workflowh966j-convert-artifact-321000610/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": "0d15f9dd-1fd2-4fd7-8d47-5a795650c765", "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-workflowh966j/series-workflowh966j-build-action-3206518368/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:38:32 +0000 UTC FinishedAt: 2026-07-21 09:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:38:32 +0000 UTC FinishedAt: 2026-07-21 09:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:38:32 +0000 UTC FinishedAt: 2026-07-21 09:38:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:38:32 +0000 UTC FinishedAt: 2026-07-21 09:38:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-workflowh966j/series-workflowh966j-convert-artifact-1163652093/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:38:42 +0000 UTC FinishedAt: 2026-07-21 09:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:38:42 +0000 UTC FinishedAt: 2026-07-21 09:40:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d15f9dd-1fd2-4fd7-8d47-5a795650c765,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-workflowh966j/series-workflowh966j-build-action-3206518368/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-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:40:53 +0000 UTC FinishedAt: 2026-07-21 09:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:40:53 +0000 UTC FinishedAt: 2026-07-21 09:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:40:53 +0000 UTC FinishedAt: 2026-07-21 10:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:40:53 +0000 UTC FinishedAt: 2026-07-21 10:27: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:*52ca8ba1-7d0b-4b2c-b017-6b22783e3c22,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-workflowh966j/series-workflowh966j-convert-artifact-1163652093/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": "549c4df2-3892-4308-aacd-f138c86fe9d5", "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-workflowh966j/series-workflowh966j-build-action-2379983961/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 09:40:53 +0000 UTC FinishedAt: 2026-07-21 10:27:10 +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:*52ca8ba1-7d0b-4b2c-b017-6b22783e3c22,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-workflowh966j/series-workflowh966j-convert-artifact-1163652093/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": "549c4df2-3892-4308-aacd-f138c86fe9d5", "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-workflowh966j/series-workflowh966j-build-action-2379983961/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:27:20 +0000 UTC FinishedAt: 2026-07-21 10:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:27:20 +0000 UTC FinishedAt: 2026-07-21 10:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:27:20 +0000 UTC FinishedAt: 2026-07-21 10:29:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:27:20 +0000 UTC FinishedAt: 2026-07-21 10:29:25 +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:*549c4df2-3892-4308-aacd-f138c86fe9d5,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-workflowh966j/series-workflowh966j-build-action-2379983961/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-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:31:52 +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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"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:*0d15f9dd-1fd2-4fd7-8d47-5a795650c765,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*549c4df2-3892-4308-aacd-f138c86fe9d5,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-workflowh966j/series-workflowh966j-build-action-3206518368/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-workflowh966j/series-workflowh966j-build-action-2379983961/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:30:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:29:40 +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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"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-workflowh966j/series-workflowh966j-convert-artifact-1825105538/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:29:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:29:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:29:35 +0000 UTC FinishedAt: 2026-07-21 10:29:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:30:06 +0000 UTC FinishedAt: 2026-07-21 10:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh966j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"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":["mt76_rx_poll_complete","mt76u_process_rx_queue","mt76s_process_rx_queue","mt76_rx_aggr_reorder"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b95f03f04d475aa6719d15a636ddf32222d55657","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT76_USB","MT76_SDIO","MT76x0U","MT76x2U","MT7663U","MT7663S","MT7921U","MT7921S","MT7925U","MT76_NPU"],"series_id":"0d98ea1b-3ad2-48c8-981c-7296369987d8","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-21 10:30:06 +0000 UTC FinishedAt: 2026-07-21 10:31:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d15f9dd-1fd2-4fd7-8d47-5a795650c765,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*549c4df2-3892-4308-aacd-f138c86fe9d5,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-workflowh966j/series-workflowh966j-build-action-3206518368/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-workflowh966j/series-workflowh966j-build-action-2379983961/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-workflowh966j/series-workflowh966j-convert-artifact-1825105538/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,}