Name: series-workflow2bt29 Phase: Succeeded StartedAt: 2026-06-26 20:10:33 +0000 UTC FinishedAt: 2026-06-26 22:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[0] Phase: Succeeded StartedAt: 2026-06-26 20:10:33 +0000 UTC FinishedAt: 2026-06-26 20:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 20:10:33 +0000 UTC FinishedAt: 2026-06-26 20:24:30 +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": "51cb1aa1250c36269474b8b6ca6b6319e170f5a5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM", "VFIO_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "51cb1aa1250c36269474b8b6ca6b6319e170f5a5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM", "VFIO_PCI" ], "series_id": "47f8bf05-82ef-4a43-8c71-2435fe783e2c" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_pci_zdev_feature_fmb_enable", "vfio_pci_zdev_feature_fmb_read", "zpci_fmb_reenable_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUmIzM0OywKICAgICYjMzQ7dmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkJiMzNDssCiAgICAmIzM0O3pwY2lfZm1iX3JlZW5hYmxlX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHR3byBuZXcgVkZJTyBkZXZpY2UgZmVhdHVyZXMgKFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFIGFuZCBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQpIGZvciBzMzkweCBhcmNoaXRlY3R1cmUuIFRoZXNlIGZlYXR1cmVzIGFsbG93IHVzZXJzcGFjZSB0byBlbmFibGUvZGlzYWJsZSBhbmQgcmVhZCB0aGUgRnVuY3Rpb24gTWVhc3VyZW1lbnQgQmxvY2sgKEZNQikgb2YgYSB6UENJIGRldmljZS4gSXQgYWRkcyBjb3JyZXNwb25kaW5nIGlvY3RsIGhhbmRsZXJzIGFuZCBjb3JlIGxvZ2ljIHRvIHJlLWVuYWJsZSBGTUIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBleHBvc2luZyBuZXcgaW9jdGxzIHRvIHVzZXJzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMxMWYwMzgyYWNmMmM1NDk0YzRkMzk3NzQzMDRlZDM3YWYwYWU2NjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMDoyMDo0NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmhcbmluZGV4IDVkY2YzNWYwZjMyNWY1Li42NTAxNGU1MmQ1NTk2MCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXG5AQCAtMzIzLDYgJiM0MzszMjMsNyBAQCB2b2lkIHpwY2lfcmVtb3ZlX3BhcmVudF9tc2lfZG9tYWluKHN0cnVjdCB6cGNpX2J1cyAqemJ1cyk7XG4gLyogRk1CICovXG4gaW50IHpwY2lfZm1iX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICopO1xuIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XG4mIzQzO2ludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTtcbiBcbiAvKiBEZWJ1ZyAqL1xuIGludCB6cGNpX2RlYnVnX2luaXQodm9pZCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2kuYyBiL2FyY2gvczM5MC9wY2kvcGNpLmNcbmluZGV4IDM5YmQyYWRmYzI0MGZkLi4xZWI2YWE3NzJlYjNmMyAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9wY2kvcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9wY2kvcGNpLmNcbkBAIC0xNzMsNiAmIzQzOzE3Myw4IEBAIGludCB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuIFx0aWYgKHpkZXYtXHUwMDNlZm1iIHx8IHNpemVvZigqemRldi1cdTAwM2VmbWIpIFx1MDAzYyB6ZGV2LVx1MDAzZWZtYl9sZW5ndGgpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuQEAgLTIxMSw2ICYjNDM7MjEzLDggQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHN0cnVjdCB6cGNpX2ZpYiBmaWIgPSB7MH07XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuIFx0aWYgKCF6ZGV2LVx1MDAzZWZtYilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG5AQCAtMjI3LDYgJiM0MzsyMzEsMzQgQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdH1cbiBcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfZGlzYWJsZV9kZXZpY2UpO1xuJiM0MztcbiYjNDM7aW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4mIzQzO3tcbiYjNDM7XHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXHUwMDNlZmgsIDAsIFpQQ0lfTU9EX0ZDX1NFVF9NRUFTVVJFKTtcbiYjNDM7XHRzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9O1xuJiM0MztcdHU4IGNjLCBzdGF0dXM7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmICghemRldi1cdTAwM2VmbWIpXG4mIzQzO1x0XHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XG4mIzQzO1x0ZmliLmdkID0gemRldi1cdTAwM2VnaXNhO1xuJiM0MztcdGNjID0genBjaV9tb2RfZmMocmVxLCBcdTAwMjZmaWIsIFx1MDAyNnN0YXR1cyk7IC8qIERpc2FibGUgZnVuY3Rpb24gbWVhc3VyZW1lbnQgKi9cbiYjNDM7XG4mIzQzO1x0LyogVW5saWtlIGluIHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKCksIGNjID09IDMgaXMgbm90IGEgdmFsaWQgc3RhdGUgaGVyZVxuJiM0MztcdCAqIGJlY2F1c2Ugd2UgYXJlIHJlLWVuYWJsaW5nIGZ1bmN0aW9uIG1lYXN1cmVtZW50IGZvciB0aGUgc2FtZSBmdW5jdGlvblxuJiM0MztcdCAqIGhhbmRsZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoY2MpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4mIzQzO1x0a21lbV9jYWNoZV9mcmVlKHpkZXZfZm1iX2NhY2hlLCB6ZGV2LVx1MDAzZWZtYik7XG4mIzQzO1x0emRldi1cdTAwM2VmbWIgPSBOVUxMO1xuJiM0MztcdHJldHVybiB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHpkZXYpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSk7XG4gXG4gc3RhdGljIGludCB6cGNpX2NmZ19sb2FkKHN0cnVjdCB6cGNpX2RldiAqemRldiwgaW50IG9mZnNldCwgdTMyICp2YWwsIHU4IGxlbilcbiB7XG5AQCAtNjM5LDcgJiM0Mzs2NzEsOSBAQCBpbnQgcGNpYmlvc19lbmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbWFzaylcbiBcdHN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7XG4gXG4gXHR6cGNpX2RlYnVnX2luaXRfZGV2aWNlKHpkZXYsIGRldl9uYW1lKFx1MDAyNnBkZXYtXHUwMDNlZGV2KSk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiBcdHpwY2lfZm1iX2VuYWJsZV9kZXZpY2UoemRldik7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuIFxuIFx0cmV0dXJuIHBjaV9lbmFibGVfcmVzb3VyY2VzKHBkZXYsIG1hc2spO1xuIH1cbkBAIC02NDgsNyAmIzQzOzY4Miw5IEBAIHZvaWQgcGNpYmlvc19kaXNhYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKHBkZXYpO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHR6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHR6cGNpX2RlYnVnX2V4aXRfZGV2aWNlKHpkZXYpO1xuIH1cbiBcbkBAIC03MjksOSAmIzQzOzc2NSwxMyBAQCBpbnQgenBjaV9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxuIFx0fVxuIFxuIFx0cmMgPSB6cGNpX2lvbW11X3JlZ2lzdGVyX2lvYXQoemRldiwgXHUwMDI2c3RhdHVzKTtcbi1cdGlmIChyYylcbiYjNDM7XHRpZiAocmMpIHtcbiBcdFx0enBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XHRcdHJldHVybiByYztcbiYjNDM7XHR9XG4gXG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuJiM0MztcdHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9yZWVuYWJsZV9kZXZpY2UpO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmMgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXG5pbmRleCBjN2VkN2JmMjU0YjVlOS4uMjNlYjdlNzJjODcwZGIgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXG5AQCAtMTUzLDYgJiM0MzsxNTMsMTIgQEAgc3RhdGljIHNzaXplX3QgcGNpX3BlcmZfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcbiBcdGlmIChyYylcbiBcdFx0cmV0dXJuIHJjO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VremRldl9sb2NrKTtcbiYjNDM7XHRpZiAoemRldi1cdTAwM2VremRldikge1xuJiM0MztcdFx0cmMgPSAtRVBFUk07XG4mIzQzO1x0XHRnb3RvIG91dF91bmxvY2tfa3pkZXY7XG4mIzQzO1x0fVxuJiM0MztcbiBcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHRzd2l0Y2ggKHZhbCkge1xuIFx0Y2FzZSAwOlxuQEAgLTE2Myw2ICYjNDM7MTY5LDkgQEAgc3RhdGljIHNzaXplX3QgcGNpX3BlcmZfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuJiM0MztvdXRfdW5sb2NrX2t6ZGV2OlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWt6ZGV2X2xvY2spO1xuIFx0cmV0dXJuIHJjID8gcmMgOiBjb3VudDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggYTI4ZjFlOTkzNjJjMWUuLmE0YjA3MTdiYThkNjdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtMTU3Miw2ICYjNDM7MTU3MiwxMCBAQCBpbnQgdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKHN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB1MzIgZmxhZ3MsXG4gXHRcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfdG9rZW4odmRldiwgZmxhZ3MsIGFyZywgYXJnc3opO1xuIFx0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX0RNQV9CVUY6XG4gXHRcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfZG1hX2J1Zih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4mIzQzO1x0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRTpcbiYjNDM7XHRcdHJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSh2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4mIzQzO1x0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQ6XG4mIzQzO1x0XHRyZXR1cm4gdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRU5PVFRZO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmhcbmluZGV4IGZjYTlkMGRmYWM5MGY4Li5iN2RiMDY0YTZhOTVhMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaFxuQEAgLTkzLDYgJiM0Mzs5MywxMCBAQCBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdFx0XHRcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcbiBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcbiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuJiM0MztcdFx0XHRcdCAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTtcbiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncyxcbiYjNDM7XHRcdFx0XHQgICB2b2lkIF9fdXNlciAqYXJnLCBzaXplX3QgYXJnc3opO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdFx0XHRcdFx0ICAgICAgc3RydWN0IHZmaW9faW5mb19jYXAgKmNhcHMpXG5AQCAtMTA3LDYgJiM0MzsxMTEsMjAgQEAgc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiB7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuJiM0MztcdFx0XHRcdFx0XHQgICB1MzIgZmxhZ3MsIHZvaWQgX191c2VyICphcmcsXG4mIzQzO1x0XHRcdFx0XHRcdCAgIHNpemVfdCBhcmdzeilcbiYjNDM7e1xuJiM0MztcdHJldHVybiAtRU5PVFRZO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuJiM0MztcdFx0XHRcdFx0XHQgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLFxuJiM0MztcdFx0XHRcdFx0XHQgc2l6ZV90IGFyZ3N6KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIC1FTk9UVFk7XG4mIzQzO31cbiAjZW5kaWZcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgdmZpb19wY2lfaXNfdmdhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcbmluZGV4IDA5OTBmZGIxNDZiNzgyLi4xYmQzNTlhZDZlNGE1NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY1xuQEAgLTE2NywzICYjNDM7MTY3LDYzIEBAIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFx0aWYgKHpwY2lfa3ZtX2hvb2sua3ZtX3VucmVnaXN0ZXIpXG4gXHRcdHpwY2lfa3ZtX2hvb2sua3ZtX3VucmVnaXN0ZXIoemRldik7XG4gfVxuJiM0MztcbiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuJiM0MztcdFx0XHRcdCAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuJiM0MztcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSBmbWJfZW5hYmxlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHZmaW9fY2hlY2tfZmVhdHVyZShmbGFncywgYXJnc3osIFZGSU9fREVWSUNFX0ZFQVRVUkVfU0VULCBzaXplb2YoZm1iX2VuYWJsZSkpO1xuJiM0MztcdGlmIChyZXQgIT0gMSlcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHpkZXYgPSB0b196cGNpKHZkZXYtXHUwMDNlcGRldik7XG4mIzQzO1x0aWYgKCF6ZGV2KVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZmbWJfZW5hYmxlLCBhcmcsIHNpemVvZihmbWJfZW5hYmxlKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoZm1iX2VuYWJsZS5lbmFibGVkKVxuJiM0MztcdFx0cmV0dXJuIHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XHRyZXR1cm4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoemRldik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXG4mIzQzO1x0XHRcdFx0ICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuJiM0MztcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgZm1iX3JlYWQ7XG4mIzQzO1x0c3RydWN0IHpwY2lfZm1iIGZtYl9ib3VuY2U7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHNpemVvZihmbWJfcmVhZCkpO1xuJiM0MztcdGlmIChyZXQgIT0gMSlcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHpkZXYgPSB0b196cGNpKHZkZXYtXHUwMDNlcGRldik7XG4mIzQzO1x0aWYgKCF6ZGV2KVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZmbWJfcmVhZCwgYXJnLCBzaXplb2YoZm1iX3JlYWQpKSlcbiYjNDM7XHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdGlmICghZm1iX3JlYWQuZGF0YSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuJiM0MztcdGlmICghemRldi1cdTAwM2VmbWIpIHtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiYjNDM7XHRcdHJldHVybiAtRU5PTVNHO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bWVtY3B5KFx1MDAyNmZtYl9ib3VuY2UsIHpkZXYtXHUwMDNlZm1iLCB6ZGV2LVx1MDAzZWZtYl9sZW5ndGgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoZm1iX3JlYWQuZGF0YSksIFx1MDAyNmZtYl9ib3VuY2UsIHpkZXYtXHUwMDNlZm1iX2xlbmd0aCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oXG5pbmRleCA1ZGU2MThhM2E1ZWVlZS4uMmIxYjY2ZWVlZjEyMzEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oXG5AQCAtMTUzNCw2ICYjNDM7MTUzNCwzNSBAQCBzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9kbWFfYnVmIHtcbiAgKi9cbiAjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfTUlHX1BSRUNPUFlfSU5GT3YyICAxMlxuIFxuJiM0MzsvKipcbiYjNDM7ICogVXBvbiBWRklPX0RFVklDRV9GRUFUVVJFX1NFVCwgZW5hYmxlIG9yIGRpc2FibGUgRk1CIGZvciB0aGUgVkZJTyB6UENJIGRldmljZS5cbiYjNDM7ICpcbiYjNDM7ICogZW5hYmxlZCBpcyB0cmVhdGVkIGFzIGEgYm9vbCwgc28gYW55IG5vbi16ZXJvIHZhbHVlIGV2YWx1YXRlcyB0byB0cnVlLiBOZXN0ZWRcbiYjNDM7ICogZW5hYmxpbmcgcmVzZXRzIHRoZSBGTUIgY291bnRlcnMgdG8gemVybywgYW5kIG5lc3RlZCBkaXNhYmxpbmcgZmFpbHMuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgLTEgYW5kIGVycm5vIHNldCBhcHByb3ByaWF0ZWx5IG9uIGVycm9yLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSAxM1xuJiM0MztcbiYjNDM7c3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfenBjaV9mbWJfZW5hYmxlIHtcbiYjNDM7XHRfX3U4IGVuYWJsZWQ7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogVXBvbiBWRklPX0RFVklDRV9GRUFUVVJFX0dFVCwgcHJvdmlkZSBGTUIgcGFzc3Rocm91Z2ggZm9yIFZGSU8gelBDSSBkZXZpY2VzLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgdXNlci1wcm92aWRlZCBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBmbWJfbGVuZ3RoIGxhcmdlLCB3aGVyZSBmbWJfbGVuZ3RoXG4mIzQzOyAqIGlzIHJlcG9ydGVkIGluIFZGSU9fREVWSUNFX0lORk9fQ0FQX1pQQ0lfQkFTRS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuIGVycm5vPT1FTk9NU0dcbiYjNDM7ICogd2hlbiB0aGUgRk1CIGlzIG5vdCBlbmFibGVkLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQgMTRcbiYjNDM7XG4mIzQzO3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQge1xuJiM0MztcdF9fYWxpZ25lZF91NjQgZGF0YTtcbiYjNDM7fTtcbiYjNDM7XG4gLyogLS0tLS0tLS0gQVBJIGZvciBUeXBlMSBWRklPIElPTU1VIC0tLS0tLS0tICovXG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQmIzM0OywKICAgICYjMzQ7enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBWRklPIGRldmljZSBmZWF0dXJlcyAoVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEUgYW5kIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRCkgZm9yIHMzOTB4IGFyY2hpdGVjdHVyZS4gVGhlc2UgZmVhdHVyZXMgYWxsb3cgdXNlcnNwYWNlIHRvIGVuYWJsZS9kaXNhYmxlIGFuZCByZWFkIHRoZSBGdW5jdGlvbiBNZWFzdXJlbWVudCBCbG9jayAoRk1CKSBvZiBhIHpQQ0kgZGV2aWNlLiBJdCBhZGRzIGNvcnJlc3BvbmRpbmcgaW9jdGwgaGFuZGxlcnMgYW5kIGNvcmUgbG9naWMgdG8gcmUtZW5hYmxlIEZNQi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGV4cG9zaW5nIG5ldyBpb2N0bHMgdG8gdXNlcnNwYWNlLCB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMTFmMDM4MmFjZjJjNTQ5NGM0ZDM5Nzc0MzA0ZWQzN2FmMGFlNjY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMjA6MjA6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgKaW5kZXggNWRjZjM1ZjBmMzI1ZjUuLjY1MDE0ZTUyZDU1OTYwIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oCkBAIC0zMjMsNiAmIzQzOzMyMyw3IEBAIHZvaWQgenBjaV9yZW1vdmVfcGFyZW50X21zaV9kb21haW4oc3RydWN0IHpwY2lfYnVzICp6YnVzKTsKIC8qIEZNQiAqLwogaW50IHpwY2lfZm1iX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICopOwogaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTsKJiM0MztpbnQgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldik7CiAKIC8qIERlYnVnICovCiBpbnQgenBjaV9kZWJ1Z19pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2kuYyBiL2FyY2gvczM5MC9wY2kvcGNpLmMKaW5kZXggMzliZDJhZGZjMjQwZmQuLjFlYjZhYTc3MmViM2YzIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvcGNpL3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9wY2kvcGNpLmMKQEAgLTE3Myw2ICYjNDM7MTczLDggQEAgaW50IHpwY2lfZm1iX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTggY2MsIHN0YXR1czsKIAomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwogCWlmICh6ZGV2LSZndDtmbWIgfHwgc2l6ZW9mKCp6ZGV2LSZndDtmbWIpICZsdDsgemRldi0mZ3Q7Zm1iX2xlbmd0aCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTIxMSw2ICYjNDM7MjEzLDggQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldikKIAlzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9OwogCXU4IGNjLCBzdGF0dXM7CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsKIAlpZiAoIXpkZXYtJmd0O2ZtYikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTIyNyw2ICYjNDM7MjMxLDM0IEBAIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpCiAJfQogCXJldHVybiBjYyA/IC1FSU8gOiAwOwogfQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKTsKJiM0MzsKJiM0MztpbnQgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldikKJiM0Mzt7CiYjNDM7CXU2NCByZXEgPSBaUENJX0NSRUFURV9SRVEoemRldi0mZ3Q7ZmgsIDAsIFpQQ0lfTU9EX0ZDX1NFVF9NRUFTVVJFKTsKJiM0MzsJc3RydWN0IHpwY2lfZmliIGZpYiA9IHswfTsKJiM0MzsJdTggY2MsIHN0YXR1czsKJiM0MzsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKCF6ZGV2LSZndDtmbWIpCiYjNDM7CQlyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTsKJiM0MzsKJiM0MzsJZmliLmdkID0gemRldi0mZ3Q7Z2lzYTsKJiM0MzsJY2MgPSB6cGNpX21vZF9mYyhyZXEsICZhbXA7ZmliLCAmYW1wO3N0YXR1cyk7IC8qIERpc2FibGUgZnVuY3Rpb24gbWVhc3VyZW1lbnQgKi8KJiM0MzsKJiM0MzsJLyogVW5saWtlIGluIHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKCksIGNjID09IDMgaXMgbm90IGEgdmFsaWQgc3RhdGUgaGVyZQomIzQzOwkgKiBiZWNhdXNlIHdlIGFyZSByZS1lbmFibGluZyBmdW5jdGlvbiBtZWFzdXJlbWVudCBmb3IgdGhlIHNhbWUgZnVuY3Rpb24KJiM0MzsJICogaGFuZGxlLgomIzQzOwkgKi8KJiM0MzsJaWYgKGNjKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CWttZW1fY2FjaGVfZnJlZSh6ZGV2X2ZtYl9jYWNoZSwgemRldi0mZ3Q7Zm1iKTsKJiM0MzsJemRldi0mZ3Q7Zm1iID0gTlVMTDsKJiM0MzsJcmV0dXJuIHpwY2lfZm1iX2VuYWJsZV9kZXZpY2UoemRldik7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSk7CiAKIHN0YXRpYyBpbnQgenBjaV9jZmdfbG9hZChzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIGludCBvZmZzZXQsIHUzMiAqdmFsLCB1OCBsZW4pCiB7CkBAIC02MzksNyAmIzQzOzY3MSw5IEBAIGludCBwY2liaW9zX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBtYXNrKQogCXN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7CiAKIAl6cGNpX2RlYnVnX2luaXRfZGV2aWNlKHpkZXYsIGRldl9uYW1lKCZhbXA7cGRldi0mZ3Q7ZGV2KSk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiAJenBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwogCiAJcmV0dXJuIHBjaV9lbmFibGVfcmVzb3VyY2VzKHBkZXYsIG1hc2spOwogfQpAQCAtNjQ4LDcgJiM0Mzs2ODIsOSBAQCB2b2lkIHBjaWJpb3NfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CiAJc3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShwZGV2KTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwogCXpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHpkZXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiAJenBjaV9kZWJ1Z19leGl0X2RldmljZSh6ZGV2KTsKIH0KIApAQCAtNzI5LDkgJiM0Mzs3NjUsMTMgQEAgaW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldikKIAl9CiAKIAlyYyA9IHpwY2lfaW9tbXVfcmVnaXN0ZXJfaW9hdCh6ZGV2LCAmYW1wO3N0YXR1cyk7Ci0JaWYgKHJjKQomIzQzOwlpZiAocmMpIHsKIAkJenBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTsKJiM0MzsJCXJldHVybiByYzsKJiM0MzsJfQogCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsJenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpOwogCXJldHVybiByYzsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfcmVlbmFibGVfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmMgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jCmluZGV4IGM3ZWQ3YmYyNTRiNWU5Li4yM2ViN2U3MmM4NzBkYiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jCkBAIC0xNTMsNiAmIzQzOzE1MywxMiBAQCBzdGF0aWMgc3NpemVfdCBwY2lfcGVyZl9zZXFfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDt6ZGV2LSZndDtremRldl9sb2NrKTsKJiM0MzsJaWYgKHpkZXYtJmd0O2t6ZGV2KSB7CiYjNDM7CQlyYyA9IC1FUEVSTTsKJiM0MzsJCWdvdG8gb3V0X3VubG9ja19remRldjsKJiM0MzsJfQomIzQzOwogCW11dGV4X2xvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiAJc3dpdGNoICh2YWwpIHsKIAljYXNlIDA6CkBAIC0xNjMsNiAmIzQzOzE2OSw5IEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCiAJCWJyZWFrOwogCX0KIAltdXRleF91bmxvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiYjNDM7CiYjNDM7b3V0X3VubG9ja19remRldjoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7a3pkZXZfbG9jayk7CiAJcmV0dXJuIHJjID8gcmMgOiBjb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCBhMjhmMWU5OTM2MmMxZS4uYTRiMDcxN2JhOGQ2N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCkBAIC0xNTcyLDYgJiM0MzsxNTcyLDEwIEBAIGludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncywKIAkJcmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV90b2tlbih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7CiAJY2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX0RNQV9CVUY6CiAJCXJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfZG1hX2J1Zih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7CiYjNDM7CWNhc2UgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEU6CiYjNDM7CQlyZXR1cm4gdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUodmRldiwgZmxhZ3MsIGFyZywgYXJnc3opOwomIzQzOwljYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRDoKJiM0MzsJCXJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQodmRldiwgZmxhZ3MsIGFyZywgYXJnc3opOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRU5PVFRZOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgKaW5kZXggZmNhOWQwZGZhYzkwZjguLmI3ZGIwNjRhNmE5NWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaApAQCAtOTMsNiAmIzQzOzkzLDEwIEBAIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LAogCQkJCXN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTsKIGludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7CiB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7CiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLAomIzQzOwkJCQkgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7CiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncywKJiM0MzsJCQkJICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LAogCQkJCQkgICAgICBzdHJ1Y3QgdmZpb19pbmZvX2NhcCAqY2FwcykKQEAgLTEwNyw2ICYjNDM7MTExLDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQoge30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsCiYjNDM7CQkJCQkJICAgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLAomIzQzOwkJCQkJCSAgIHNpemVfdCBhcmdzeikKJiM0Mzt7CiYjNDM7CXJldHVybiAtRU5PVFRZOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LAomIzQzOwkJCQkJCSB1MzIgZmxhZ3MsIHZvaWQgX191c2VyICphcmcsCiYjNDM7CQkJCQkJIHNpemVfdCBhcmdzeikKJiM0Mzt7CiYjNDM7CXJldHVybiAtRU5PVFRZOwomIzQzO30KICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGJvb2wgdmZpb19wY2lfaXNfdmdhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYwppbmRleCAwOTkwZmRiMTQ2Yjc4Mi4uMWJkMzU5YWQ2ZTRhNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jCkBAIC0xNjcsMyAmIzQzOzE2Nyw2MyBAQCB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldikKIAlpZiAoenBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3RlcikKIAkJenBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3Rlcih6ZGV2KTsKIH0KJiM0MzsKJiM0MztpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsCiYjNDM7CQkJCSAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KQomIzQzO3sKJiM0MzsJc3RydWN0IHpwY2lfZGV2ICp6ZGV2OwomIzQzOwlzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9lbmFibGUgZm1iX2VuYWJsZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIHNpemVvZihmbWJfZW5hYmxlKSk7CiYjNDM7CWlmIChyZXQgIT0gMSkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXpkZXYgPSB0b196cGNpKHZkZXYtJmd0O3BkZXYpOwomIzQzOwlpZiAoIXpkZXYpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7Zm1iX2VuYWJsZSwgYXJnLCBzaXplb2YoZm1iX2VuYWJsZSkpKQomIzQzOwkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKGZtYl9lbmFibGUuZW5hYmxlZCkKJiM0MzsJCXJldHVybiB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7CiYjNDM7CXJldHVybiB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncywKJiM0MzsJCQkJICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KQomIzQzO3sKJiM0MzsJc3RydWN0IHpwY2lfZGV2ICp6ZGV2OwomIzQzOwlzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9yZWFkIGZtYl9yZWFkOwomIzQzOwlzdHJ1Y3QgenBjaV9mbWIgZm1iX2JvdW5jZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHNpemVvZihmbWJfcmVhZCkpOwomIzQzOwlpZiAocmV0ICE9IDEpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwl6ZGV2ID0gdG9fenBjaSh2ZGV2LSZndDtwZGV2KTsKJiM0MzsJaWYgKCF6ZGV2KQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWlmIChjb3B5X2Zyb21fdXNlcigmYW1wO2ZtYl9yZWFkLCBhcmcsIHNpemVvZihmbWJfcmVhZCkpKQomIzQzOwkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CWlmICghZm1iX3JlYWQuZGF0YSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwlpZiAoIXpkZXYtJmd0O2ZtYikgewomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwkJcmV0dXJuIC1FTk9NU0c7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbWVtY3B5KCZhbXA7Zm1iX2JvdW5jZSwgemRldi0mZ3Q7Zm1iLCB6ZGV2LSZndDtmbWJfbGVuZ3RoKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwomIzQzOwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihmbWJfcmVhZC5kYXRhKSwgJmFtcDtmbWJfYm91bmNlLCB6ZGV2LSZndDtmbWJfbGVuZ3RoKSkKJiM0MzsJCXJldHVybiAtRUZBVUxUOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaAppbmRleCA1ZGU2MThhM2E1ZWVlZS4uMmIxYjY2ZWVlZjEyMzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaApAQCAtMTUzNCw2ICYjNDM7MTUzNCwzNSBAQCBzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9kbWFfYnVmIHsKICAqLwogI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX01JR19QUkVDT1BZX0lORk92MiAgMTIKIAomIzQzOy8qKgomIzQzOyAqIFVwb24gVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIGVuYWJsZSBvciBkaXNhYmxlIEZNQiBmb3IgdGhlIFZGSU8gelBDSSBkZXZpY2UuCiYjNDM7ICoKJiM0MzsgKiBlbmFibGVkIGlzIHRyZWF0ZWQgYXMgYSBib29sLCBzbyBhbnkgbm9uLXplcm8gdmFsdWUgZXZhbHVhdGVzIHRvIHRydWUuIE5lc3RlZAomIzQzOyAqIGVuYWJsaW5nIHJlc2V0cyB0aGUgRk1CIGNvdW50ZXJzIHRvIHplcm8sIGFuZCBuZXN0ZWQgZGlzYWJsaW5nIGZhaWxzLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSAxMwomIzQzOwomIzQzO3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSB7CiYjNDM7CV9fdTggZW5hYmxlZDsKJiM0Mzt9OwomIzQzOwomIzQzOy8qKgomIzQzOyAqIFVwb24gVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHByb3ZpZGUgRk1CIHBhc3N0aHJvdWdoIGZvciBWRklPIHpQQ0kgZGV2aWNlcy4KJiM0MzsgKgomIzQzOyAqIFRoZSB1c2VyLXByb3ZpZGVkIGJ1ZmZlciBtdXN0IGJlIGF0IGxlYXN0IGZtYl9sZW5ndGggbGFyZ2UsIHdoZXJlIGZtYl9sZW5ndGgKJiM0MzsgKiBpcyByZXBvcnRlZCBpbiBWRklPX0RFVklDRV9JTkZPX0NBUF9aUENJX0JBU0UuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIGFuZCBlcnJubyBzZXQgYXBwcm9wcmlhdGVseSBvbiBlcnJvci4gZXJybm89PUVOT01TRwomIzQzOyAqIHdoZW4gdGhlIEZNQiBpcyBub3QgZW5hYmxlZC4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRCAxNAomIzQzOwomIzQzO3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgewomIzQzOwlfX2FsaWduZWRfdTY0IGRhdGE7CiYjNDM7fTsKJiM0MzsKIC8qIC0tLS0tLS0tIEFQSSBmb3IgVHlwZTEgVkZJTyBJT01NVSAtLS0tLS0tLSAqLwogCiAvKioKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc4OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBsYW4gZm9yIE5ldyBWRklPIEZlYXR1cmVzIG9uIHMzOTAqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIGhlcmUuIEl0JiMzOTtzIHRvdWNoaW5nIGJvdGggczM5MCBQQ0kgY29kZSBhbmQgVkZJTyBQQ0kgY29kZSDigJMgc3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgdHdvIG5vdmVsIFZGSU8gZGV2aWNlIGZlYXR1cmVzOiBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZXNlIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCBmaWxlIGFuZCBtYXAgdG8gY2FsbHMgdG8gYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCBhbmQgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSB0byBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBhbmQgYHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlYCBmdW5jdGlvbnMsIGFuZCByZWFkIGZyb20gYHpkZXYtJmd0O2ZtYmAsIHNvIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGRldmljZSBtZW1vcnkgYmxvY2sgY29udHJvbC4KClRoZSBwYXRjaCBhbHNvIGhhcyBjaGFuZ2VzIGluIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCwgc3BlY2lmaWNhbGx5IGZvciBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCwgd2hpY2ggc3VnZ2VzdHMgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXMgZGVlcGx5IGludm9sdmVkLgoKVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBhZGRpdGlvbiDigJMgbmV3IGlvY3RsIGZlYXR1cmVzIGZvciBWRklPIGRldmljZXMgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBHaXZlbiB0aGF0IGl0IHRvdWNoZXMgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBWRklPLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmUuIFdlIG5lZWQgdG8gZXhwb3NlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBoeXBlcnZpc29yLCB0aGUgVkZJTyBkcml2ZXIsIGFuZCB0aGUgczM5MCBoYXJkd2FyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBjb2RlIHJlc2lkZXMgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCBhbmQgYGFyY2gvczM5MC9wY2kvcGNpLmNgLiBUaGUgYGFyY2gvczM5MC9wY2kvcGNpLmNgIHBhcnQgaXMgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBjb250aW5nZW50IG9uIGBDT05GSUdfUENJYCBiZWluZyBlbmFibGVkIGZvciBzMzkwLiBGb3IgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyB0aWVkIHRvIGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gLCBvciBzb21ldGhpbmcgc2ltaWxhciwgZm9yIGl0cyBjb21waWxhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBiZSBjZXJ0YWluIGFuZCBnZXQgYSBjb3JyZWN0IGJ1aWxkIHNldHVwIGJlZm9yZSBJIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX3pkZXYubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZTo0OnZmaW8tcGNpLWNvcmUtJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSB2ZmlvX3BjaV96ZGV2Lm9cbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGUtNS12ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgJiM0Mzs9IHZmaW9fcGNpX2RtYWJ1Zi5vXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTM0PWludCB2ZmlvX3BjaV9jb3JlX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTc5LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NTgwOlx0cmV0ID0gdmZpb19wY2lfemRldl9vcGVuX2RldmljZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU4MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9OTI9aW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC05My1cdFx0XHRcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oOjk0OmludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC05NS12b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9MTAxPXN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA2LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6MTA3OnN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xMTY9aW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTQzLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM6MTQ0OmludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTE0NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ5OQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVkZJTy1QQ0ktWkRFVi1LVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gIGlzIGEgcmVxdWlyZW1lbnQgaGVyZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgbGV0IG1lIGp1c3QgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHJlY2FsbCB0aGF0IGB2ZmlvX3BjaV96ZGV2LmNgICpzaG91bGQqIGJlIGNvbXBpbGVkIHdoZW4gYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAgaXMgZW5hYmxlZCwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB0aGF0LiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGZvciBgVkZJT19QQ0lfWkRFVl9LVk1gIGFyZSBsYWlkIG91dCwgc28gdGhhdCYjMzk7cyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBpdHMgaW5jbHVzaW9uLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvbGlkIGFuZCBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGV0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSV9aREVWX0tWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg5OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBEZXZpY2UgUmUtRW5hYmxpbmcgb24gczM5MCBBcmNoaXRlY3R1cmUqKgoKQWxyaWdodCwgdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGRldmljZSByZS1lbmFibGluZyBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIFBDSSBjb250ZXh0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCBmaWxlLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIFBDSSBkcml2ZXIgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGF0IGFyY2hpdGVjdHVyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgUENJIGluaXRpYWxpemF0aW9uIGFuZCBkZXZpY2UgZW51bWVyYXRpb24gcm91dGluZXMgdGhlcmUsIGJ1dCBJJiMzOTttIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciB0aGUgcmUtZW5hYmxlIGxvZ2ljLgoKR2l2ZW4gdGhlIHBocmFzaW5nLCBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBzb3VuZHMgbGlrZSBpdCBob2xkcyB0aGUga2V5IHRvIHRoZSByZS1lbmFibGluZyBmdW5jdGlvbmFsaXR5LiBUaGlzIGZ1bmN0aW9uIG5hbWUgaXMgaGlnaGx5IHN1Z2dlc3RpdmUsIGVzcGVjaWFsbHkgd2l0aCAmIzM0O3pwY2kmIzM0OyB3aGljaCB0ZWxscyBtZSBpdCB3aWxsIGRlYWwgd2l0aCB6UENJIGRldmljZSBoYW5kbGluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIHRoZSBGTUIsIHdoaWNoLCBrbm93aW5nIHMzOTAsIEkgaW1tZWRpYXRlbHkgYXNzdW1lIHBlcnRhaW5zIHRvIHRoZSBGYWNpbGl0eSBNYW5hZ2VtZW50IEJsb2NrLCBpbXBseWluZyBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBzeXN0ZW0tbGV2ZWwgcmVzb3VyY2Ugb3IgbWFuYWdlbWVudCBpbnRlcmZhY2UuIFRoaXMgZnVuY3Rpb24gbGlrZWx5IG9yY2hlc3RyYXRlcyB0aGUgZGV2aWNlIHJlLWVuYWJsZSBvcGVyYXRpb24sIHBlcmhhcHMgZm9sbG93aW5nIGEgaG90cGx1ZyBldmVudCwgYSBmaXJtd2FyZSB1cGRhdGUsIG9yIG1heWJlIGEgcmVjb3Zlcnkgc2NlbmFyaW8uIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VgIGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIFBDSSBpbmZyYXN0cnVjdHVyZSwgbG9va2luZyBmb3IgYW55IGVycm9yIGhhbmRsaW5nLCBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcywgb3IgYW55IHNwZWNpYWwgczM5MC1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBsaWtlIEkvTyBhZGRyZXNzIHNwYWNlIG1hcHBpbmcgb3IgaW50ZXJydXB0IHJvdXRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaD0zMjU9aW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaDozMjY6aW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oLTMyNy1cbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTIzND1FWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSk7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTIzNS1cbmFyY2gvczM5MC9wY2kvcGNpLmM6MjM2OmludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxuYXJjaC9zMzkwL3BjaS9wY2kuYy0yMzcte1xuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmMtMjYwLX1cbmFyY2gvczM5MC9wY2kvcGNpLmM6MjYxOkVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSk7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTI2Mi1cbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTc1Mj1pbnQgenBjaV9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmMtNzczLVx0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuYXJjaC9zMzkwL3BjaS9wY2kuYzo3NzQ6XHR6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc3NS1cdHJldHVybiByYztcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xNzE9aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTE5MS1cdGlmIChmbWJfZW5hYmxlLmVuYWJsZWQpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYzoxOTI6XHRcdHJldHVybiB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYy0xOTMtXHRyZXR1cm4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoemRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyMAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8gUENJIERldmljZSBGZWF0dXJlIEFkZGl0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZ2V0dGluZyBhdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gSXQmIzM5O3MgaW50cm9kdWNpbmcgbmV3IGZlYXR1cmVzLCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYCwgYW5kIHRoZXkmIzM5O3JlIGhvb2tlZCB1cCB0byBpb2N0bHMgZm9yIFZGSU8gUENJIGRldmljZXMuIE15IGltbWVkaWF0ZSBpbnRlcmVzdCBpcyBwaXF1ZWQgLSBzb3VuZHMgbGlrZSB3ZSYjMzk7cmUgZW5hYmxpbmcgc29tZSBmb3JtIG9mIGZ1bmN0aW9uYWxpdHkgb3IgYWNjZXNzIHJlbGF0ZWQgdG8gRmxleGlibGUgTWVtb3J5IEJ1ZmZlcnMgb24gelBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lIGhlcmUgYXJlIGB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZWAsIGB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWRgLCBhbmQgYWxzbyBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCwgd2hpY2ggd2lsbCBsaWtlbHkgYmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZXNlIHRvIHVuZGVyc3RhbmQgdGhlIGxvdy1sZXZlbCBpbXBsaWNhdGlvbnMuCgpUaGUgY29uZmlncyBpbnZvbHZlZCBhcmUgYFZGSU9fUENJYCwgYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGltcGxpY2l0bHksIGBQQ0lgICh3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgczM5MCBQQ0kgY29udGV4dCkuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIFdhaXQsIGhhbmcgb24uLi4gYFZGSU9fUENJX1pERVZfS1ZNYCBpcyBhIGJvb2xlYW4gY29uZmlnLCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIGVpdGhlciBvbiBvciBvZmYgYW5kIGRldGVybWluZXMgZW5hYmxlbWVudCBvciBub3QuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VwcG9ydGluZyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOyBJIG5lZWQgdG8gZXhwbG9yZSB0aGUgb3RoZXIgY29uZmlnIG9wdGlvbnMgYXZhaWxhYmxlLiBUaGF0JiMzOTtzIG5leHQgb24gbXkgbGlzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU6Y29uZmlnIFZGSU9fUENJX0NPUkVcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy02LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctOS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxMDpjb25maWcgVkZJT19QQ0lfSU5UWFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTExLVx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMy1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxNDpjb25maWcgVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZVwmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yMz1pZiBWRklPX1BDSVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjI0OmNvbmZpZyBWRklPX1BDSV9WR0FcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBWRklPIFBDSSBzdXBwb3J0IGZvciBWR0EgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0zMy1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzozNDpjb25maWcgVkZJT19QQ0lfSUdEXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzUtXHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgSW50ZWwgZ3JhcGhpY3MgKEdWVC1kKVwmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNTctXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NTg6Y29uZmlnIFZGSU9fUENJX0RNQUJVRlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU5LVx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFx1MDAyNlx1MDAyNiBQQ0lfUDJQRE1BIFx1MDAyNlx1MDAyNiBETUFfU0hBUkVEX0JVRkZFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAwOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVkZJTy1QQ0kgWi1EZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGBWRklPX1BDSV9aREVWX0tWTWAsIHdoaWNoLCBvZiBjb3Vyc2UsIGltcGxpZXMgYFZGSU9fUENJYCBpcyBhbHNvIGluIHBsYXkuIE15IHByaW1hcnkgaW50ZXJlc3Qgbm93IGlzIHRvIHNlZSBpZiB0aGlzIGlzIGFsbCB0aGF0JiMzOTtzIGludm9sdmVkLCBjb25maWd1cmF0aW9uLXdpc2UuCgpJIG5lZWQgdG8gZGlnIGludG8gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCwgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAsIGFuZCBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB3YXJyYW50IGF0dGVudGlvbj8KCkFscmlnaHQsIEkgc2VlIHRoYXQgYm90aCBgenBjaV9mbWJfZGlzYWJsZV9kZXZpY2VgIGFuZCBgenBjaV9mbWJfZW5hYmxlX2RldmljZWAgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIGluY2x1ZGUgYGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7YC4gSW50ZXJlc3RpbmcuIEFuZCBgenBjaV9yZWVuYWJsZV9kZXZpY2VgIG5vdyBjYWxscyBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYC4gSSB3YW50IHRvIGludmVzdGlnYXRlIGB6cGNpX3JlZW5hYmxlX2RldmljZWAgZnVydGhlciB0byBjb25maXJtIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enBjaV9yZWVuYWJsZV9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oPTIyNz1pbnQgenBjaV9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaDoyMjg6aW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldik7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgtMjI5LWludCB6cGNpX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTQzMD1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9yZWdpc3Rlcl9rdm0odm9pZCAqb3BhcXVlLCBzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy00NzgtXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjQ3OTpcdHJjID0genBjaV9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5hcmNoL3MzOTAva3ZtL3BjaS5jLTQ4MC1cdGlmIChyYylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTUwNT1zdGF0aWMgdm9pZCBrdm1fczM5MF9wY2lfdW5yZWdpc3Rlcl9rdm0odm9pZCAqb3BhcXVlKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtNTQxLVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo1NDI6XHR6cGNpX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTQzLVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmM9NzUwPUVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZW5hYmxlX2RldmljZSk7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc1MS1cbmFyY2gvczM5MC9wY2kvcGNpLmM6NzUyOmludCB6cGNpX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc1My17XG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYy03NzYtfVxuYXJjaC9zMzkwL3BjaS9wY2kuYzo3Nzc6RVhQT1JUX1NZTUJPTF9HUEwoenBjaV9yZWVuYWJsZV9kZXZpY2UpO1xuYXJjaC9zMzkwL3BjaS9wY2kuYy03NzgtXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYz04MjY9aW50IHpwY2lfaG90X3Jlc2V0X2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYy04NDUtXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjg0NjpcdHJjID0genBjaV9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTg0Ny1cbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9zeXNmcy5jPTU1PXN0YXRpYyBpbnQgX2RvX3JlY292ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCB6cGNpX2RldiAqemRldilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9zeXNmcy5jLTczLVxuYXJjaC9zMzkwL3BjaS9wY2lfc3lzZnMuYzo3NDpcdHJldCA9IHpwY2lfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xuYXJjaC9zMzkwL3BjaS9wY2lfc3lzZnMuYy03NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzQKCQkJCQkJCW91dHB1dDogMjA4CgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBgenBjaV9yZWVuYWJsZV9kZXZpY2VgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24uIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGEgZmV3IGRpZmZlcmVudCBwbGFjZXM6IGBrdm1fczM5MF9wY2lfcmVnaXN0ZXJfa3ZtYCwgYGt2bV9zMzkwX3BjaV91bnJlZ2lzdGVyX2t2bWAsIGB6cGNpX2hvdF9yZXNldF9kZXZpY2VgLCBhbmQsIGltcG9ydGFudGx5LCBgX2RvX3JlY292ZXJgLiBUaGF0IHBhdHRlcm4gcmFpc2VzIG15IGV5ZWJyb3dzIGEgYml0OyBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0cyBtZWFuIGRpZmZlcmVudCBwb3RlbnRpYWwgc3RhdGVzIGFuZCBlZGdlIGNhc2VzIHRvIGNvbnNpZGVyLiBEZWZpbml0ZWx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuCgpNeSBndXQgZmVlbGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgKnR3byogbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIOKAkyBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYCDigJMgc3BlY2lmaWNhbGx5IGZvciBzMzkweCwgYW5kIGV4cG9zaW5nIG5ldyBpb2N0bCBoYW5kbGVycywgc2NyZWFtcyAmIzM0O3BvdGVudGlhbCBmb3IgaW50ZXJlc3RpbmcgZnV6emluZyBjb3ZlcmFnZS4mIzM0OyBUaGVzZSBuZXcgZmVhdHVyZXMgYXJlIGNvbmNlcm5lZCB3aXRoIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgcmVhZGluZyB0aGUgRnVuY3Rpb24gTWVhc3VyZW1lbnQgQmxvY2sgKEZNQikgb2YgYSB6UENJIGRldmljZSwgd2hpY2ggaXMgbmV3LCBlc3BlY2lhbGx5IGZvciB1c2Vyc3BhY2UgY29udHJvbC4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHMsIHBhcnRpY3VsYXJseSB0aG9zZSByZWxhdGVkIHRvIEZNQiByZS1lbmFibGVtZW50OiBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVgLCBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkYCwgYW5kIGVzcGVjaWFsbHkgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhvc2UgaW9jdGxzIGludGVyYWN0IHdpdGggdGhlIHJlLWVuYWJsZSBsb2dpYy4KCkFsc28sIEkgc2hvdWxkIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXM6IGBWRklPX1BDSV9aREVWX0tWTWAgYW5kIGBWRklPX1BDSWAuIEkgd2FudCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwcmVjb25kaXRpb25zIGZvciB0aGlzIGNvZGUgdG8gYmUgYWN0aXZlLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIHRvIHRoZSBGTUIgZHVyaW5nIHRoZSBlbmFibGUvZGlzYWJsZSBjeWNsZSwgYW5kIGhvdyB0aGF0IHN0YXRlIGlzIG1hbmFnZWQuIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHVzZXJzcGFjZSBjb250cm9sIGFuZCB0aGUga2VybmVsJiMzOTtzIGludGVybmFsIHN0YXRlIGlzIHdoZXJlIHRoZSBtb3N0IGludGVyZXN0aW5nIGJ1Z3MgdXN1YWxseSBoaWRlLiBUaGlzIHBhdGNoIHByZXNlbnRzIGEgbmV3IGF0dGFjayBzdXJmYWNlLCBhbmQgaXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBmdWxseSBleHBsb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQmIzM0OywKICAgICYjMzQ7enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBWRklPIGRldmljZSBmZWF0dXJlcyAoVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEUgYW5kIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRCkgZm9yIHMzOTB4IGFyY2hpdGVjdHVyZS4gVGhlc2UgZmVhdHVyZXMgYWxsb3cgdXNlcnNwYWNlIHRvIGVuYWJsZS9kaXNhYmxlIGFuZCByZWFkIHRoZSBGdW5jdGlvbiBNZWFzdXJlbWVudCBCbG9jayAoRk1CKSBvZiBhIHpQQ0kgZGV2aWNlLiBJdCBhZGRzIGNvcnJlc3BvbmRpbmcgaW9jdGwgaGFuZGxlcnMgYW5kIGNvcmUgbG9naWMgdG8gcmUtZW5hYmxlIEZNQi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGV4cG9zaW5nIG5ldyBpb2N0bHMgdG8gdXNlcnNwYWNlLCB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7LAogICAgJiMzNDtWRklPX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZCYjMzQ7LAogICAgJiMzNDt6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMDo0Ny4zNjE4ODE1ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM4Njc1ODcxOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZFwiLFxuICAgIFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIwOjQ3LjM2MTg4NjE2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3MDY0MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzExZjAzODJhY2YyYzU0OTRjNGQzOTc3NDMwNGVkMzdhZjBhZTY2NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAyMDoyMDo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmhcXG5pbmRleCA1ZGNmMzVmMGYzMjVmNS4uNjUwMTRlNTJkNTU5NjAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXFxuQEAgLTMyMyw2ICszMjMsNyBAQCB2b2lkIHpwY2lfcmVtb3ZlX3BhcmVudF9tc2lfZG9tYWluKHN0cnVjdCB6cGNpX2J1cyAqemJ1cyk7XFxuIC8qIEZNQiAqL1xcbiBpbnQgenBjaV9mbWJfZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XFxuIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XFxuK2ludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTtcXG4gXFxuIC8qIERlYnVnICovXFxuIGludCB6cGNpX2RlYnVnX2luaXQodm9pZCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpLmMgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXFxuaW5kZXggMzliZDJhZGZjMjQwZmQuLjFlYjZhYTc3MmViM2YzIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9wY2kvcGNpLmNcXG4rKysgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXFxuQEAgLTE3Myw2ICsxNzMsOCBAQCBpbnQgenBjaV9mbWJfZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHU4IGNjLCBzdGF0dXM7XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbiBcXHRpZiAoemRldi1cXHUwMDNlZm1iIHx8IHNpemVvZigqemRldi1cXHUwMDNlZm1iKSBcXHUwMDNjIHpkZXYtXFx1MDAzZWZtYl9sZW5ndGgpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG5AQCAtMjExLDYgKzIxMyw4IEBAIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuIFxcdHN0cnVjdCB6cGNpX2ZpYiBmaWIgPSB7MH07XFxuIFxcdHU4IGNjLCBzdGF0dXM7XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbiBcXHRpZiAoIXpkZXYtXFx1MDAzZWZtYilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbkBAIC0yMjcsNiArMjMxLDM0IEBAIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuIFxcdH1cXG4gXFx0cmV0dXJuIGNjID8gLUVJTyA6IDA7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfZGlzYWJsZV9kZXZpY2UpO1xcbitcXG4raW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuK3tcXG4rXFx0dTY0IHJlcSA9IFpQQ0lfQ1JFQVRFX1JFUSh6ZGV2LVxcdTAwM2VmaCwgMCwgWlBDSV9NT0RfRkNfU0VUX01FQVNVUkUpO1xcbitcXHRzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9O1xcbitcXHR1OCBjYywgc3RhdHVzO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbitcXG4rXFx0aWYgKCF6ZGV2LVxcdTAwM2VmbWIpXFxuK1xcdFxcdHJldHVybiB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHpkZXYpO1xcbitcXG4rXFx0ZmliLmdkID0gemRldi1cXHUwMDNlZ2lzYTtcXG4rXFx0Y2MgPSB6cGNpX21vZF9mYyhyZXEsIFxcdTAwMjZmaWIsIFxcdTAwMjZzdGF0dXMpOyAvKiBEaXNhYmxlIGZ1bmN0aW9uIG1lYXN1cmVtZW50ICovXFxuK1xcbitcXHQvKiBVbmxpa2UgaW4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoKSwgY2MgPT0gMyBpcyBub3QgYSB2YWxpZCBzdGF0ZSBoZXJlXFxuK1xcdCAqIGJlY2F1c2Ugd2UgYXJlIHJlLWVuYWJsaW5nIGZ1bmN0aW9uIG1lYXN1cmVtZW50IGZvciB0aGUgc2FtZSBmdW5jdGlvblxcbitcXHQgKiBoYW5kbGUuXFxuK1xcdCAqL1xcbitcXHRpZiAoY2MpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4rXFx0a21lbV9jYWNoZV9mcmVlKHpkZXZfZm1iX2NhY2hlLCB6ZGV2LVxcdTAwM2VmbWIpO1xcbitcXHR6ZGV2LVxcdTAwM2VmbWIgPSBOVUxMO1xcbitcXHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UpO1xcbiBcXG4gc3RhdGljIGludCB6cGNpX2NmZ19sb2FkKHN0cnVjdCB6cGNpX2RldiAqemRldiwgaW50IG9mZnNldCwgdTMyICp2YWwsIHU4IGxlbilcXG4ge1xcbkBAIC02MzksNyArNjcxLDkgQEAgaW50IHBjaWJpb3NfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG1hc2spXFxuIFxcdHN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7XFxuIFxcbiBcXHR6cGNpX2RlYnVnX2luaXRfZGV2aWNlKHpkZXYsIGRldl9uYW1lKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpKTtcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbiBcXHR6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHpkZXYpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4gXFxuIFxcdHJldHVybiBwY2lfZW5hYmxlX3Jlc291cmNlcyhwZGV2LCBtYXNrKTtcXG4gfVxcbkBAIC02NDgsNyArNjgyLDkgQEAgdm9pZCBwY2liaW9zX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuIFxcdHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHpkZXYpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4gXFx0enBjaV9kZWJ1Z19leGl0X2RldmljZSh6ZGV2KTtcXG4gfVxcbiBcXG5AQCAtNzI5LDkgKzc2NSwxMyBAQCBpbnQgenBjaV9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbiBcXHR9XFxuIFxcbiBcXHRyYyA9IHpwY2lfaW9tbXVfcmVnaXN0ZXJfaW9hdCh6ZGV2LCBcXHUwMDI2c3RhdHVzKTtcXG4tXFx0aWYgKHJjKVxcbitcXHRpZiAocmMpIHtcXG4gXFx0XFx0enBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTtcXG4rXFx0XFx0cmV0dXJuIHJjO1xcbitcXHR9XFxuIFxcbitcXHRndWFyZChtdXRleCkoXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4rXFx0enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xcbiBcXHRyZXR1cm4gcmM7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9yZWVuYWJsZV9kZXZpY2UpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jIGIvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuY1xcbmluZGV4IGM3ZWQ3YmYyNTRiNWU5Li4yM2ViN2U3MmM4NzBkYiAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXFxuKysrIGIvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuY1xcbkBAIC0xNTMsNiArMTUzLDEyIEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2emRldi1cXHUwMDNla3pkZXZfbG9jayk7XFxuK1xcdGlmICh6ZGV2LVxcdTAwM2VremRldikge1xcbitcXHRcXHRyYyA9IC1FUEVSTTtcXG4rXFx0XFx0Z290byBvdXRfdW5sb2NrX2t6ZGV2O1xcbitcXHR9XFxuK1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuIFxcdHN3aXRjaCAodmFsKSB7XFxuIFxcdGNhc2UgMDpcXG5AQCAtMTYzLDYgKzE2OSw5IEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbitcXG4rb3V0X3VubG9ja19remRldjpcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VremRldl9sb2NrKTtcXG4gXFx0cmV0dXJuIHJjID8gcmMgOiBjb3VudDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbmluZGV4IGEyOGYxZTk5MzYyYzFlLi5hNGIwNzE3YmE4ZDY3YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuQEAgLTE1NzIsNiArMTU3MiwxMCBAQCBpbnQgdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKHN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB1MzIgZmxhZ3MsXFxuIFxcdFxcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfdG9rZW4odmRldiwgZmxhZ3MsIGFyZywgYXJnc3opO1xcbiBcXHRjYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfRE1BX0JVRjpcXG4gXFx0XFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV9kbWFfYnVmKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcXG4rXFx0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRTpcXG4rXFx0XFx0cmV0dXJuIHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcXG4rXFx0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQ6XFxuK1xcdFxcdHJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQodmRldiwgZmxhZ3MsIGFyZywgYXJnc3opO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRyZXR1cm4gLUVOT1RUWTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaCBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXFxuaW5kZXggZmNhOWQwZGZhYzkwZjguLmI3ZGIwNjRhNmE5NWEzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXFxuKysrIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmhcXG5AQCAtOTMsNiArOTMsMTAgQEAgaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcXG4gaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcXG4gdm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdCAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTtcXG4raW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncyxcXG4rXFx0XFx0XFx0XFx0ICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTtcXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHZmaW9faW5mb19jYXAgKmNhcHMpXFxuQEAgLTEwNyw2ICsxMTEsMjAgQEAgc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbiB7fVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICB1MzIgZmxhZ3MsIHZvaWQgX191c2VyICphcmcsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRyZXR1cm4gLUVOT1RUWTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHUzMiBmbGFncywgdm9pZCBfX3VzZXIgKmFyZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRyZXR1cm4gLUVOT1RUWTtcXG4rfVxcbiAjZW5kaWZcXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZmlvX3BjaV9pc192Z2Eoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcXG5pbmRleCAwOTkwZmRiMTQ2Yjc4Mi4uMWJkMzU5YWQ2ZTRhNTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY1xcbkBAIC0xNjcsMyArMTY3LDYzIEBAIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbiBcXHRpZiAoenBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3RlcilcXG4gXFx0XFx0enBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3Rlcih6ZGV2KTtcXG4gfVxcbitcXG4raW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxcbitcXHRcXHRcXHRcXHQgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuK1xcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSBmbWJfZW5hYmxlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIHNpemVvZihmbWJfZW5hYmxlKSk7XFxuK1xcdGlmIChyZXQgIT0gMSlcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHpkZXYgPSB0b196cGNpKHZkZXYtXFx1MDAzZXBkZXYpO1xcbitcXHRpZiAoIXpkZXYpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZmbWJfZW5hYmxlLCBhcmcsIHNpemVvZihmbWJfZW5hYmxlKSkpXFxuK1xcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbitcXHRpZiAoZm1iX2VuYWJsZS5lbmFibGVkKVxcbitcXHRcXHRyZXR1cm4genBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xcbitcXHRyZXR1cm4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoemRldik7XFxuK31cXG4rXFxuK2ludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdCAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuK1xcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgZm1iX3JlYWQ7XFxuK1xcdHN0cnVjdCB6cGNpX2ZtYiBmbWJfYm91bmNlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHNpemVvZihmbWJfcmVhZCkpO1xcbitcXHRpZiAocmV0ICE9IDEpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHR6ZGV2ID0gdG9fenBjaSh2ZGV2LVxcdTAwM2VwZGV2KTtcXG4rXFx0aWYgKCF6ZGV2KVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Zm1iX3JlYWQsIGFyZywgc2l6ZW9mKGZtYl9yZWFkKSkpXFxuK1xcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXHRpZiAoIWZtYl9yZWFkLmRhdGEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbitcXHRpZiAoIXpkZXYtXFx1MDAzZWZtYikge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9NU0c7XFxuK1xcdH1cXG4rXFxuK1xcdG1lbWNweShcXHUwMDI2Zm1iX2JvdW5jZSwgemRldi1cXHUwMDNlZm1iLCB6ZGV2LVxcdTAwM2VmbWJfbGVuZ3RoKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbitcXHRpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihmbWJfcmVhZC5kYXRhKSwgXFx1MDAyNmZtYl9ib3VuY2UsIHpkZXYtXFx1MDAzZWZtYl9sZW5ndGgpKVxcbitcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaCBiL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmhcXG5pbmRleCA1ZGU2MThhM2E1ZWVlZS4uMmIxYjY2ZWVlZjEyMzEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmhcXG5AQCAtMTUzNCw2ICsxNTM0LDM1IEBAIHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2RtYV9idWYge1xcbiAgKi9cXG4gI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX01JR19QUkVDT1BZX0lORk92MiAgMTJcXG4gXFxuKy8qKlxcbisgKiBVcG9uIFZGSU9fREVWSUNFX0ZFQVRVUkVfU0VULCBlbmFibGUgb3IgZGlzYWJsZSBGTUIgZm9yIHRoZSBWRklPIHpQQ0kgZGV2aWNlLlxcbisgKlxcbisgKiBlbmFibGVkIGlzIHRyZWF0ZWQgYXMgYSBib29sLCBzbyBhbnkgbm9uLXplcm8gdmFsdWUgZXZhbHVhdGVzIHRvIHRydWUuIE5lc3RlZFxcbisgKiBlbmFibGluZyByZXNldHMgdGhlIEZNQiBjb3VudGVycyB0byB6ZXJvLCBhbmQgbmVzdGVkIGRpc2FibGluZyBmYWlscy5cXG4rICpcXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuXFxuKyAqL1xcbisjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFIDEzXFxuK1xcbitzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9lbmFibGUge1xcbitcXHRfX3U4IGVuYWJsZWQ7XFxuK307XFxuK1xcbisvKipcXG4rICogVXBvbiBWRklPX0RFVklDRV9GRUFUVVJFX0dFVCwgcHJvdmlkZSBGTUIgcGFzc3Rocm91Z2ggZm9yIFZGSU8gelBDSSBkZXZpY2VzLlxcbisgKlxcbisgKiBUaGUgdXNlci1wcm92aWRlZCBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBmbWJfbGVuZ3RoIGxhcmdlLCB3aGVyZSBmbWJfbGVuZ3RoXFxuKyAqIGlzIHJlcG9ydGVkIGluIFZGSU9fREVWSUNFX0lORk9fQ0FQX1pQQ0lfQkFTRS5cXG4rICpcXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuIGVycm5vPT1FTk9NU0dcXG4rICogd2hlbiB0aGUgRk1CIGlzIG5vdCBlbmFibGVkLlxcbisgKi9cXG4rI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQgMTRcXG4rXFxuK3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQge1xcbitcXHRfX2FsaWduZWRfdTY0IGRhdGE7XFxuK307XFxuK1xcbiAvKiAtLS0tLS0tLSBBUEkgZm9yIFR5cGUxIFZGSU8gSU9NTVUgLS0tLS0tLS0gKi9cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMDo0Ny45MDk3NDY1MTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzMxOTcxMjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZVwiLFxuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkXCIsXG4gICAgXCJ6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHR3byBuZXcgVkZJTyBkZXZpY2UgZmVhdHVyZXMgKFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFIGFuZCBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQpIGZvciBzMzkweCBhcmNoaXRlY3R1cmUuIFRoZXNlIGZlYXR1cmVzIGFsbG93IHVzZXJzcGFjZSB0byBlbmFibGUvZGlzYWJsZSBhbmQgcmVhZCB0aGUgRnVuY3Rpb24gTWVhc3VyZW1lbnQgQmxvY2sgKEZNQikgb2YgYSB6UENJIGRldmljZS4gSXQgYWRkcyBjb3JyZXNwb25kaW5nIGlvY3RsIGhhbmRsZXJzIGFuZCBjb3JlIGxvZ2ljIHRvIHJlLWVuYWJsZSBGTUIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBleHBvc2luZyBuZXcgaW9jdGxzIHRvIHVzZXJzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMTFmMDM4MmFjZjJjNTQ5NGM0ZDM5Nzc0MzA0ZWQzN2FmMGFlNjY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjA6MjA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmhcbmluZGV4IDVkY2YzNWYwZjMyNWY1Li42NTAxNGU1MmQ1NTk2MCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXG5AQCAtMzIzLDYgKzMyMyw3IEBAIHZvaWQgenBjaV9yZW1vdmVfcGFyZW50X21zaV9kb21haW4oc3RydWN0IHpwY2lfYnVzICp6YnVzKTtcbiAvKiBGTUIgKi9cbiBpbnQgenBjaV9mbWJfZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XG4gaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbitpbnQgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldik7XG4gXG4gLyogRGVidWcgKi9cbiBpbnQgenBjaV9kZWJ1Z19pbml0KHZvaWQpO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpLmMgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXG5pbmRleCAzOWJkMmFkZmMyNDBmZC4uMWViNmFhNzcyZWIzZjMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvcGNpL3BjaS5jXG4rKysgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXG5AQCAtMTczLDYgKzE3Myw4IEBAIGludCB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcbiBcdGlmICh6ZGV2LVx1MDAzZWZtYiB8fCBzaXplb2YoKnpkZXYtXHUwMDNlZm1iKSBcdTAwM2MgemRldi1cdTAwM2VmbWJfbGVuZ3RoKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC0yMTEsNiArMjEzLDggQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHN0cnVjdCB6cGNpX2ZpYiBmaWIgPSB7MH07XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcbiBcdGlmICghemRldi1cdTAwM2VmbWIpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuQEAgLTIyNyw2ICsyMzEsMzQgQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdH1cbiBcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbitFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSk7XG4rXG4raW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4re1xuK1x0dTY0IHJlcSA9IFpQQ0lfQ1JFQVRFX1JFUSh6ZGV2LVx1MDAzZWZoLCAwLCBaUENJX01PRF9GQ19TRVRfTUVBU1VSRSk7XG4rXHRzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9O1xuK1x0dTggY2MsIHN0YXR1cztcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4rXG4rXHRpZiAoIXpkZXYtXHUwMDNlZm1iKVxuK1x0XHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcbitcbitcdGZpYi5nZCA9IHpkZXYtXHUwMDNlZ2lzYTtcbitcdGNjID0genBjaV9tb2RfZmMocmVxLCBcdTAwMjZmaWIsIFx1MDAyNnN0YXR1cyk7IC8qIERpc2FibGUgZnVuY3Rpb24gbWVhc3VyZW1lbnQgKi9cbitcbitcdC8qIFVubGlrZSBpbiB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSgpLCBjYyA9PSAzIGlzIG5vdCBhIHZhbGlkIHN0YXRlIGhlcmVcbitcdCAqIGJlY2F1c2Ugd2UgYXJlIHJlLWVuYWJsaW5nIGZ1bmN0aW9uIG1lYXN1cmVtZW50IGZvciB0aGUgc2FtZSBmdW5jdGlvblxuK1x0ICogaGFuZGxlLlxuK1x0ICovXG4rXHRpZiAoY2MpXG4rXHRcdHJldHVybiAtRUlPO1xuK1xuK1x0a21lbV9jYWNoZV9mcmVlKHpkZXZfZm1iX2NhY2hlLCB6ZGV2LVx1MDAzZWZtYik7XG4rXHR6ZGV2LVx1MDAzZWZtYiA9IE5VTEw7XG4rXHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKTtcbiBcbiBzdGF0aWMgaW50IHpwY2lfY2ZnX2xvYWQoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBpbnQgb2Zmc2V0LCB1MzIgKnZhbCwgdTggbGVuKVxuIHtcbkBAIC02MzksNyArNjcxLDkgQEAgaW50IHBjaWJpb3NfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG1hc2spXG4gXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKHBkZXYpO1xuIFxuIFx0enBjaV9kZWJ1Z19pbml0X2RldmljZSh6ZGV2LCBkZXZfbmFtZShcdTAwMjZwZGV2LVx1MDAzZWRldikpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiBcdHpwY2lfZm1iX2VuYWJsZV9kZXZpY2UoemRldik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXG4gXHRyZXR1cm4gcGNpX2VuYWJsZV9yZXNvdXJjZXMocGRldiwgbWFzayk7XG4gfVxuQEAgLTY0OCw3ICs2ODIsOSBAQCB2b2lkIHBjaWJpb3NfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4ge1xuIFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShwZGV2KTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHR6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiBcdHpwY2lfZGVidWdfZXhpdF9kZXZpY2UoemRldik7XG4gfVxuIFxuQEAgLTcyOSw5ICs3NjUsMTMgQEAgaW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdH1cbiBcbiBcdHJjID0genBjaV9pb21tdV9yZWdpc3Rlcl9pb2F0KHpkZXYsIFx1MDAyNnN0YXR1cyk7XG4tXHRpZiAocmMpXG4rXHRpZiAocmMpIHtcbiBcdFx0enBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbitcdFx0cmV0dXJuIHJjO1xuK1x0fVxuIFxuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuK1x0enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xuIFx0cmV0dXJuIHJjO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX3JlZW5hYmxlX2RldmljZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuYyBiL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmNcbmluZGV4IGM3ZWQ3YmYyNTRiNWU5Li4yM2ViN2U3MmM4NzBkYiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmNcbisrKyBiL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmNcbkBAIC0xNTMsNiArMTUzLDEyIEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VremRldl9sb2NrKTtcbitcdGlmICh6ZGV2LVx1MDAzZWt6ZGV2KSB7XG4rXHRcdHJjID0gLUVQRVJNO1xuK1x0XHRnb3RvIG91dF91bmxvY2tfa3pkZXY7XG4rXHR9XG4rXG4gXHRtdXRleF9sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuIFx0c3dpdGNoICh2YWwpIHtcbiBcdGNhc2UgMDpcbkBAIC0xNjMsNiArMTY5LDkgQEAgc3RhdGljIHNzaXplX3QgcGNpX3BlcmZfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4rXG4rb3V0X3VubG9ja19remRldjpcbitcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWt6ZGV2X2xvY2spO1xuIFx0cmV0dXJuIHJjID8gcmMgOiBjb3VudDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggYTI4ZjFlOTkzNjJjMWUuLmE0YjA3MTdiYThkNjdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtMTU3Miw2ICsxNTcyLDEwIEBAIGludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcbiBcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV90b2tlbih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4gXHRjYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfRE1BX0JVRjpcbiBcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV9kbWFfYnVmKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcbitcdGNhc2UgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEU6XG4rXHRcdHJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSh2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4rXHRjYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRDpcbitcdFx0cmV0dXJuIHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZCh2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVOT1RUWTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaCBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXG5pbmRleCBmY2E5ZDBkZmFjOTBmOC4uYjdkYjA2NGE2YTk1YTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaFxuKysrIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmhcbkBAIC05Myw2ICs5MywxMCBAQCBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdFx0XHRcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcbiBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXG4rXHRcdFx0XHQgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7XG4raW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncyxcbitcdFx0XHRcdCAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIFx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19pbmZvX2NhcCAqY2FwcylcbkBAIC0xMDcsNiArMTExLDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4ge31cbitcbitzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4rXHRcdFx0XHRcdFx0ICAgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLFxuK1x0XHRcdFx0XHRcdCAgIHNpemVfdCBhcmdzeilcbit7XG4rXHRyZXR1cm4gLUVOT1RUWTtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbitcdFx0XHRcdFx0XHQgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLFxuK1x0XHRcdFx0XHRcdCBzaXplX3QgYXJnc3opXG4re1xuK1x0cmV0dXJuIC1FTk9UVFk7XG4rfVxuICNlbmRpZlxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZmlvX3BjaV9pc192Z2Eoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY1xuaW5kZXggMDk5MGZkYjE0NmI3ODIuLjFiZDM1OWFkNmU0YTU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jXG5AQCAtMTY3LDMgKzE2Nyw2MyBAQCB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdGlmICh6cGNpX2t2bV9ob29rLmt2bV91bnJlZ2lzdGVyKVxuIFx0XHR6cGNpX2t2bV9ob29rLmt2bV91bnJlZ2lzdGVyKHpkZXYpO1xuIH1cbitcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXG4rXHRcdFx0XHQgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcbit7XG4rXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XG4rXHRzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9lbmFibGUgZm1iX2VuYWJsZTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSB2ZmlvX2NoZWNrX2ZlYXR1cmUoZmxhZ3MsIGFyZ3N6LCBWRklPX0RFVklDRV9GRUFUVVJFX1NFVCwgc2l6ZW9mKGZtYl9lbmFibGUpKTtcbitcdGlmIChyZXQgIT0gMSlcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHpkZXYgPSB0b196cGNpKHZkZXYtXHUwMDNlcGRldik7XG4rXHRpZiAoIXpkZXYpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmZtYl9lbmFibGUsIGFyZywgc2l6ZW9mKGZtYl9lbmFibGUpKSlcbitcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXG4rXHRndWFyZChtdXRleCkoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4rXG4rXHRpZiAoZm1iX2VuYWJsZS5lbmFibGVkKVxuK1x0XHRyZXR1cm4genBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xuK1x0cmV0dXJuIHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHpkZXYpO1xuK31cbitcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuK1x0XHRcdFx0ICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuK3tcbitcdHN0cnVjdCB6cGNpX2RldiAqemRldjtcbitcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgZm1iX3JlYWQ7XG4rXHRzdHJ1Y3QgenBjaV9mbWIgZm1iX2JvdW5jZTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSB2ZmlvX2NoZWNrX2ZlYXR1cmUoZmxhZ3MsIGFyZ3N6LCBWRklPX0RFVklDRV9GRUFUVVJFX0dFVCwgc2l6ZW9mKGZtYl9yZWFkKSk7XG4rXHRpZiAocmV0ICE9IDEpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHR6ZGV2ID0gdG9fenBjaSh2ZGV2LVx1MDAzZXBkZXYpO1xuK1x0aWYgKCF6ZGV2KVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZmbWJfcmVhZCwgYXJnLCBzaXplb2YoZm1iX3JlYWQpKSlcbitcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXHRpZiAoIWZtYl9yZWFkLmRhdGEpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcdGlmICghemRldi1cdTAwM2VmbWIpIHtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuK1x0XHRyZXR1cm4gLUVOT01TRztcbitcdH1cbitcbitcdG1lbWNweShcdTAwMjZmbWJfYm91bmNlLCB6ZGV2LVx1MDAzZWZtYiwgemRldi1cdTAwM2VmbWJfbGVuZ3RoKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcbitcdGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGZtYl9yZWFkLmRhdGEpLCBcdTAwMjZmbWJfYm91bmNlLCB6ZGV2LVx1MDAzZWZtYl9sZW5ndGgpKVxuK1x0XHRyZXR1cm4gLUVGQVVMVDtcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxuaW5kZXggNWRlNjE4YTNhNWVlZWUuLjJiMWI2NmVlZWYxMjMxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxuQEAgLTE1MzQsNiArMTUzNCwzNSBAQCBzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9kbWFfYnVmIHtcbiAgKi9cbiAjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfTUlHX1BSRUNPUFlfSU5GT3YyICAxMlxuIFxuKy8qKlxuKyAqIFVwb24gVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIGVuYWJsZSBvciBkaXNhYmxlIEZNQiBmb3IgdGhlIFZGSU8gelBDSSBkZXZpY2UuXG4rICpcbisgKiBlbmFibGVkIGlzIHRyZWF0ZWQgYXMgYSBib29sLCBzbyBhbnkgbm9uLXplcm8gdmFsdWUgZXZhbHVhdGVzIHRvIHRydWUuIE5lc3RlZFxuKyAqIGVuYWJsaW5nIHJlc2V0cyB0aGUgRk1CIGNvdW50ZXJzIHRvIHplcm8sIGFuZCBuZXN0ZWQgZGlzYWJsaW5nIGZhaWxzLlxuKyAqXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuXG4rICovXG4rI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSAxM1xuK1xuK3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSB7XG4rXHRfX3U4IGVuYWJsZWQ7XG4rfTtcbitcbisvKipcbisgKiBVcG9uIFZGSU9fREVWSUNFX0ZFQVRVUkVfR0VULCBwcm92aWRlIEZNQiBwYXNzdGhyb3VnaCBmb3IgVkZJTyB6UENJIGRldmljZXMuXG4rICpcbisgKiBUaGUgdXNlci1wcm92aWRlZCBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBmbWJfbGVuZ3RoIGxhcmdlLCB3aGVyZSBmbWJfbGVuZ3RoXG4rICogaXMgcmVwb3J0ZWQgaW4gVkZJT19ERVZJQ0VfSU5GT19DQVBfWlBDSV9CQVNFLlxuKyAqXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuIGVycm5vPT1FTk9NU0dcbisgKiB3aGVuIHRoZSBGTUIgaXMgbm90IGVuYWJsZWQuXG4rICovXG4rI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQgMTRcbitcbitzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9yZWFkIHtcbitcdF9fYWxpZ25lZF91NjQgZGF0YTtcbit9O1xuK1xuIC8qIC0tLS0tLS0tIEFQSSBmb3IgVHlwZTEgVkZJTyBJT01NVSAtLS0tLS0tLSAqL1xuIFxuIC8qKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjA6NDcuOTA5NzQ4MDkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQyMDU3OTY4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQbGFuIGZvciBOZXcgVkZJTyBGZWF0dXJlcyBvbiBzMzkwKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBuZXcgcGF0Y2ggaGVyZS4gSXQncyB0b3VjaGluZyBib3RoIHMzOTAgUENJIGNvZGUgYW5kIFZGSU8gUENJIGNvZGUg4oCTIHNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgdHdvIG5vdmVsIFZGSU8gZGV2aWNlIGZlYXR1cmVzOiBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZXNlIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCBmaWxlIGFuZCBtYXAgdG8gY2FsbHMgdG8gYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCBhbmQgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSB0byBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBhbmQgYHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlYCBmdW5jdGlvbnMsIGFuZCByZWFkIGZyb20gYHpkZXYtXHUwMDNlZm1iYCwgc28gdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgZGV2aWNlIG1lbW9yeSBibG9jayBjb250cm9sLlxuXG5UaGUgcGF0Y2ggYWxzbyBoYXMgY2hhbmdlcyBpbiBgYXJjaC9zMzkwL3BjaS9wY2kuY2AsIHNwZWNpZmljYWxseSBmb3IgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAsIHdoaWNoIHN1Z2dlc3RzIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIGRlZXBseSBpbnZvbHZlZC5cblxuVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBhZGRpdGlvbiDigJMgbmV3IGlvY3RsIGZlYXR1cmVzIGZvciBWRklPIGRldmljZXMgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBHaXZlbiB0aGF0IGl0IHRvdWNoZXMgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBWRklPLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmUuIFdlIG5lZWQgdG8gZXhwb3NlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBoeXBlcnZpc29yLCB0aGUgVkZJTyBkcml2ZXIsIGFuZCB0aGUgczM5MCBoYXJkd2FyZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGUgY29kZSByZXNpZGVzIGluIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY2AgYW5kIGBhcmNoL3MzOTAvcGNpL3BjaS5jYC4gVGhlIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCBwYXJ0IGlzIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBjb250aW5nZW50IG9uIGBDT05GSUdfUENJYCBiZWluZyBlbmFibGVkIGZvciBzMzkwLiBGb3IgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCdzIHRpZWQgdG8gYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBmb3IgaXRzIGNvbXBpbGF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgdG8gYmUgY2VydGFpbiBhbmQgZ2V0IGEgY29ycmVjdCBidWlsZCBzZXR1cCBiZWZvcmUgSSBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc4OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIxOjEyLjExNTU0NjYwOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc4ODI0Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX3pkZXYub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xcbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGU6NDp2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSB2ZmlvX3BjaV96ZGV2Lm9cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTUtdmZpby1wY2ktY29yZS0kKENPTkZJR19WRklPX1BDSV9ETUFCVUYpICs9IHZmaW9fcGNpX2RtYWJ1Zi5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01MzQ9aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU3OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1ODA6XFx0cmV0ID0gdmZpb19wY2lfemRldl9vcGVuX2RldmljZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01ODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oPTkyPWludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTkzLVxcdFxcdFxcdFxcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDo5NDppbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTk1LXZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oPTEwMT1zdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oOjEwNzpzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC0xMDgte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM9MTE2PWludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTQzLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jOjE0NDppbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTQ1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6MTUuMzk0Mzc2MjI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI2MTc3ODM5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBWRklPLVBDSS1aREVWLUtWTSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gIGlzIGEgcmVxdWlyZW1lbnQgaGVyZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgbGV0IG1lIGp1c3QgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHJlY2FsbCB0aGF0IGB2ZmlvX3BjaV96ZGV2LmNgICpzaG91bGQqIGJlIGNvbXBpbGVkIHdoZW4gYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAgaXMgZW5hYmxlZCwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB0aGF0LiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgYFZGSU9fUENJX1pERVZfS1ZNYCBhcmUgbGFpZCBvdXQsIHNvIHRoYXQncyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBpdHMgaW5jbHVzaW9uLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgc29saWQgYW5kIEknbSBub3QgbWlzc2luZyBhbnkgc3VidGxldGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ5OSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIxOjM4LjAxMjE2MjIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzUzMjQwMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NDc6Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6MzkuODg3NDkwNjE2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2ODQ2MzYzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIERldmljZSBSZS1FbmFibGluZyBvbiBzMzkwIEFyY2hpdGVjdHVyZSoqXG5cbkFscmlnaHQsIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCBob3cgd2UncmUgZGVhbGluZyB3aXRoIGRldmljZSByZS1lbmFibGluZyBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIFBDSSBjb250ZXh0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCBmaWxlLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIFBDSSBkcml2ZXIgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGF0IGFyY2hpdGVjdHVyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgUENJIGluaXRpYWxpemF0aW9uIGFuZCBkZXZpY2UgZW51bWVyYXRpb24gcm91dGluZXMgdGhlcmUsIGJ1dCBJJ20gbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIHRoZSByZS1lbmFibGUgbG9naWMuXG5cbkdpdmVuIHRoZSBwaHJhc2luZywgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgc291bmRzIGxpa2UgaXQgaG9sZHMgdGhlIGtleSB0byB0aGUgcmUtZW5hYmxpbmcgZnVuY3Rpb25hbGl0eS4gVGhpcyBmdW5jdGlvbiBuYW1lIGlzIGhpZ2hseSBzdWdnZXN0aXZlLCBlc3BlY2lhbGx5IHdpdGggXCJ6cGNpXCIgd2hpY2ggdGVsbHMgbWUgaXQgd2lsbCBkZWFsIHdpdGggelBDSSBkZXZpY2UgaGFuZGxpbmcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIHRoZSBGTUIsIHdoaWNoLCBrbm93aW5nIHMzOTAsIEkgaW1tZWRpYXRlbHkgYXNzdW1lIHBlcnRhaW5zIHRvIHRoZSBGYWNpbGl0eSBNYW5hZ2VtZW50IEJsb2NrLCBpbXBseWluZyBpdCdzIHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIHN5c3RlbS1sZXZlbCByZXNvdXJjZSBvciBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgb3JjaGVzdHJhdGVzIHRoZSBkZXZpY2UgcmUtZW5hYmxlIG9wZXJhdGlvbiwgcGVyaGFwcyBmb2xsb3dpbmcgYSBob3RwbHVnIGV2ZW50LCBhIGZpcm13YXJlIHVwZGF0ZSwgb3IgbWF5YmUgYSByZWNvdmVyeSBzY2VuYXJpby4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBhbmQgc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBQQ0kgaW5mcmFzdHJ1Y3R1cmUsIGxvb2tpbmcgZm9yIGFueSBlcnJvciBoYW5kbGluZywgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMsIG9yIGFueSBzcGVjaWFsIHMzOTAtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgbGlrZSBJL08gYWRkcmVzcyBzcGFjZSBtYXBwaW5nIG9yIGludGVycnVwdCByb3V0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODk5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6NDMuNTU1OTU2MzU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDg4ODU2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaD0zMjU9aW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmg6MzI2OmludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgtMzI3LVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYz0yMzQ9RVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfZGlzYWJsZV9kZXZpY2UpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjM1LVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6MjM2OmludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjM3LXtcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjYwLX1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjI2MTpFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjYyLVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYz03NTI9aW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtNzczLVxcdGd1YXJkKG11dGV4KShcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbmFyY2gvczM5MC9wY2kvcGNpLmM6Nzc0OlxcdHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc3NS1cXHRyZXR1cm4gcmM7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xNzE9aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTkxLVxcdGlmIChmbWJfZW5hYmxlLmVuYWJsZWQpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM6MTkyOlxcdFxcdHJldHVybiB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTkzLVxcdHJldHVybiB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6NDUuMjY0ODQ4Nzg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI3NTg0Njg0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPIFBDSSBEZXZpY2UgRmVhdHVyZSBBZGRpdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZ2V0dGluZyBhdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gSXQncyBpbnRyb2R1Y2luZyBuZXcgZmVhdHVyZXMsIGBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRWAgYW5kIGBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQURgLCBhbmQgdGhleSdyZSBob29rZWQgdXAgdG8gaW9jdGxzIGZvciBWRklPIFBDSSBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgaW50ZXJlc3QgaXMgcGlxdWVkIC0gc291bmRzIGxpa2Ugd2UncmUgZW5hYmxpbmcgc29tZSBmb3JtIG9mIGZ1bmN0aW9uYWxpdHkgb3IgYWNjZXNzIHJlbGF0ZWQgdG8gRmxleGlibGUgTWVtb3J5IEJ1ZmZlcnMgb24gelBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaGVyZSBhcmUgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCwgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAsIGFuZCBhbHNvIGB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VgLCB3aGljaCB3aWxsIGxpa2VseSBiZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGVzZSB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgaW1wbGljYXRpb25zLlxuXG5UaGUgY29uZmlncyBpbnZvbHZlZCBhcmUgYFZGSU9fUENJYCwgYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGltcGxpY2l0bHksIGBQQ0lgICh3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgczM5MCBQQ0kgY29udGV4dCkuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIFdhaXQsIGhhbmcgb24uLi4gYFZGSU9fUENJX1pERVZfS1ZNYCBpcyBhIGJvb2xlYW4gY29uZmlnLCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIGVpdGhlciBvbiBvciBvZmYgYW5kIGRldGVybWluZXMgZW5hYmxlbWVudCBvciBub3QuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VwcG9ydGluZyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOyBJIG5lZWQgdG8gZXhwbG9yZSB0aGUgb3RoZXIgY29uZmlnIG9wdGlvbnMgYXZhaWxhYmxlLiBUaGF0J3MgbmV4dCBvbiBteSBsaXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTIwLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIxOjU4LjAyMzMxOTE4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3ODk3MTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTI9bWVudSBcXFwiVkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1OmNvbmZpZyBWRklPX1BDSV9DT1JFXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy05LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxMDpjb25maWcgVkZJT19QQ0lfSU5UWFxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMS1cXHRkZWZfYm9vbCB5IGlmICFTMzkwXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTMtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjE0OmNvbmZpZyBWRklPX1BDSVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTIzPWlmIFZGSU9fUENJXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjI0OmNvbmZpZyBWRklPX1BDSV9WR0FcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiR2VuZXJpYyBWRklPIFBDSSBzdXBwb3J0IGZvciBWR0EgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MzQ6Y29uZmlnIFZGSU9fUENJX0lHRFxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0zNS1cXHRib29sIFxcXCJHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDYtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cXHRib29sIFxcXCJWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNTctXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU4OmNvbmZpZyBWRklPX1BDSV9ETUFCVUZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNTktXFx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFxcdTAwMjZcXHUwMDI2IFBDSV9QMlBETUEgXFx1MDAyNlxcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjI6MDAuMDAyMjk1Njc2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNDUyMjQxNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWRklPLVBDSSBaLURldmljZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGBWRklPX1BDSV9aREVWX0tWTWAsIHdoaWNoLCBvZiBjb3Vyc2UsIGltcGxpZXMgYFZGSU9fUENJYCBpcyBhbHNvIGluIHBsYXkuIE15IHByaW1hcnkgaW50ZXJlc3Qgbm93IGlzIHRvIHNlZSBpZiB0aGlzIGlzIGFsbCB0aGF0J3MgaW52b2x2ZWQsIGNvbmZpZ3VyYXRpb24td2lzZS5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIExldCdzIHN0YXJ0IHdpdGggYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCwgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAsIGFuZCBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB3YXJyYW50IGF0dGVudGlvbj9cblxuQWxyaWdodCwgSSBzZWUgdGhhdCBib3RoIGB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZWAgYW5kIGB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlYCBoYXZlIGJlZW4gbW9kaWZpZWQgdG8gaW5jbHVkZSBgbG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtgLiBJbnRlcmVzdGluZy4gQW5kIGB6cGNpX3JlZW5hYmxlX2RldmljZWAgbm93IGNhbGxzIGB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VgLiBJIHdhbnQgdG8gaW52ZXN0aWdhdGUgYHpwY2lfcmVlbmFibGVfZGV2aWNlYCBmdXJ0aGVyIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAwOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMjoyMi40NTQ1Mzk0NDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjY4MjU0MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienBjaV9yZWVuYWJsZV9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oPTIyNz1pbnQgenBjaV9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmg6MjI4OmludCB6cGNpX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaC0yMjktaW50IHpwY2lfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICopO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz00MzA9c3RhdGljIGludCBrdm1fczM5MF9wY2lfcmVnaXN0ZXJfa3ZtKHZvaWQgKm9wYXF1ZSwgc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy00NzgtXFxuYXJjaC9zMzkwL2t2bS9wY2kuYzo0Nzk6XFx0cmMgPSB6cGNpX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTQ4MC1cXHRpZiAocmMpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTUwNT1zdGF0aWMgdm9pZCBrdm1fczM5MF9wY2lfdW5yZWdpc3Rlcl9rdm0odm9pZCAqb3BhcXVlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy01NDEtXFxuYXJjaC9zMzkwL2t2bS9wY2kuYzo1NDI6XFx0enBjaV9yZWVuYWJsZV9kZXZpY2UoemRldik7XFxuYXJjaC9zMzkwL2t2bS9wY2kuYy01NDMtXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTc1MD1FWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2VuYWJsZV9kZXZpY2UpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtNzUxLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6NzUyOmludCB6cGNpX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuYXJjaC9zMzkwL3BjaS9wY2kuYy03NTMte1xcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYy03NzYtfVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6Nzc3OkVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfcmVlbmFibGVfZGV2aWNlKTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc3OC1cXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM9ODI2PWludCB6cGNpX2hvdF9yZXNldF9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYy04NDUtXFxuYXJjaC9zMzkwL3BjaS9wY2kuYzo4NDY6XFx0cmMgPSB6cGNpX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTg0Ny1cXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX3N5c2ZzLmM9NTU9c3RhdGljIGludCBfZG9fcmVjb3ZlcihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfc3lzZnMuYy03My1cXG5hcmNoL3MzOTAvcGNpL3BjaV9zeXNmcy5jOjc0OlxcdHJldCA9IHpwY2lfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xcbmFyY2gvczM5MC9wY2kvcGNpX3N5c2ZzLmMtNzUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIyOjI0LjQ4MTM2OTk5M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjYxNzQ2ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYHpwY2lfcmVlbmFibGVfZGV2aWNlYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBJdCdzIGNhbGxlZCBmcm9tIGEgZmV3IGRpZmZlcmVudCBwbGFjZXM6IGBrdm1fczM5MF9wY2lfcmVnaXN0ZXJfa3ZtYCwgYGt2bV9zMzkwX3BjaV91bnJlZ2lzdGVyX2t2bWAsIGB6cGNpX2hvdF9yZXNldF9kZXZpY2VgLCBhbmQsIGltcG9ydGFudGx5LCBgX2RvX3JlY292ZXJgLiBUaGF0IHBhdHRlcm4gcmFpc2VzIG15IGV5ZWJyb3dzIGEgYml0OyBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0cyBtZWFuIGRpZmZlcmVudCBwb3RlbnRpYWwgc3RhdGVzIGFuZCBlZGdlIGNhc2VzIHRvIGNvbnNpZGVyLiBEZWZpbml0ZWx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGZhY3QgdGhhdCBpdCdzIGludHJvZHVjaW5nICp0d28qIG5ldyBWRklPIGRldmljZSBmZWF0dXJlcyDigJMgYFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFYCBhbmQgYFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRGAg4oCTIHNwZWNpZmljYWxseSBmb3IgczM5MHgsIGFuZCBleHBvc2luZyBuZXcgaW9jdGwgaGFuZGxlcnMsIHNjcmVhbXMgXCJwb3RlbnRpYWwgZm9yIGludGVyZXN0aW5nIGZ1enppbmcgY292ZXJhZ2UuXCIgVGhlc2UgbmV3IGZlYXR1cmVzIGFyZSBjb25jZXJuZWQgd2l0aCBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHJlYWRpbmcgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UsIHdoaWNoIGlzIG5ldywgZXNwZWNpYWxseSBmb3IgdXNlcnNwYWNlIGNvbnRyb2wuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHMsIHBhcnRpY3VsYXJseSB0aG9zZSByZWxhdGVkIHRvIEZNQiByZS1lbmFibGVtZW50OiBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVgLCBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkYCwgYW5kIGVzcGVjaWFsbHkgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhvc2UgaW9jdGxzIGludGVyYWN0IHdpdGggdGhlIHJlLWVuYWJsZSBsb2dpYy5cblxuQWxzbywgSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llczogYFZGSU9fUENJX1pERVZfS1ZNYCBhbmQgYFZGSU9fUENJYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHByZWNvbmRpdGlvbnMgZm9yIHRoaXMgY29kZSB0byBiZSBhY3RpdmUuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyB0byB0aGUgRk1CIGR1cmluZyB0aGUgZW5hYmxlL2Rpc2FibGUgY3ljbGUsIGFuZCBob3cgdGhhdCBzdGF0ZSBpcyBtYW5hZ2VkLiBUaGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB1c2Vyc3BhY2UgY29udHJvbCBhbmQgdGhlIGtlcm5lbCdzIGludGVybmFsIHN0YXRlIGlzIHdoZXJlIHRoZSBtb3N0IGludGVyZXN0aW5nIGJ1Z3MgdXN1YWxseSBoaWRlLiBUaGlzIHBhdGNoIHByZXNlbnRzIGEgbmV3IGF0dGFjayBzdXJmYWNlLCBhbmQgaXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IGV4cGxvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjc0LCJPdXRwdXRUb2tlbnMiOjIwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMjozMS4xNDMxMTg1NDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjMzNjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZFwiLFxuICAgIFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZFwiLFxuICAgIFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow2bt29[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 20:10:33 +0000 UTC FinishedAt: 2026-06-26 20:22:32 +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": "51cb1aa1250c36269474b8b6ca6b6319e170f5a5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM", "VFIO_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "51cb1aa1250c36269474b8b6ca6b6319e170f5a5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM", "VFIO_PCI" ], "series_id": "47f8bf05-82ef-4a43-8c71-2435fe783e2c" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_pci_zdev_feature_fmb_enable", "vfio_pci_zdev_feature_fmb_read", "zpci_fmb_reenable_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUmIzM0OywKICAgICYjMzQ7dmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkJiMzNDssCiAgICAmIzM0O3pwY2lfZm1iX3JlZW5hYmxlX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHR3byBuZXcgVkZJTyBkZXZpY2UgZmVhdHVyZXMgKFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFIGFuZCBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQpIGZvciBzMzkweCBhcmNoaXRlY3R1cmUuIFRoZXNlIGZlYXR1cmVzIGFsbG93IHVzZXJzcGFjZSB0byBlbmFibGUvZGlzYWJsZSBhbmQgcmVhZCB0aGUgRnVuY3Rpb24gTWVhc3VyZW1lbnQgQmxvY2sgKEZNQikgb2YgYSB6UENJIGRldmljZS4gSXQgYWRkcyBjb3JyZXNwb25kaW5nIGlvY3RsIGhhbmRsZXJzIGFuZCBjb3JlIGxvZ2ljIHRvIHJlLWVuYWJsZSBGTUIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBleHBvc2luZyBuZXcgaW9jdGxzIHRvIHVzZXJzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMxMWYwMzgyYWNmMmM1NDk0YzRkMzk3NzQzMDRlZDM3YWYwYWU2NjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMDoyMDo0NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmhcbmluZGV4IDVkY2YzNWYwZjMyNWY1Li42NTAxNGU1MmQ1NTk2MCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXG5AQCAtMzIzLDYgJiM0MzszMjMsNyBAQCB2b2lkIHpwY2lfcmVtb3ZlX3BhcmVudF9tc2lfZG9tYWluKHN0cnVjdCB6cGNpX2J1cyAqemJ1cyk7XG4gLyogRk1CICovXG4gaW50IHpwY2lfZm1iX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICopO1xuIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XG4mIzQzO2ludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTtcbiBcbiAvKiBEZWJ1ZyAqL1xuIGludCB6cGNpX2RlYnVnX2luaXQodm9pZCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2kuYyBiL2FyY2gvczM5MC9wY2kvcGNpLmNcbmluZGV4IDM5YmQyYWRmYzI0MGZkLi4xZWI2YWE3NzJlYjNmMyAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9wY2kvcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9wY2kvcGNpLmNcbkBAIC0xNzMsNiAmIzQzOzE3Myw4IEBAIGludCB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuIFx0aWYgKHpkZXYtXHUwMDNlZm1iIHx8IHNpemVvZigqemRldi1cdTAwM2VmbWIpIFx1MDAzYyB6ZGV2LVx1MDAzZWZtYl9sZW5ndGgpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuQEAgLTIxMSw2ICYjNDM7MjEzLDggQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHN0cnVjdCB6cGNpX2ZpYiBmaWIgPSB7MH07XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuIFx0aWYgKCF6ZGV2LVx1MDAzZWZtYilcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG5AQCAtMjI3LDYgJiM0MzsyMzEsMzQgQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdH1cbiBcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfZGlzYWJsZV9kZXZpY2UpO1xuJiM0MztcbiYjNDM7aW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4mIzQzO3tcbiYjNDM7XHR1NjQgcmVxID0gWlBDSV9DUkVBVEVfUkVRKHpkZXYtXHUwMDNlZmgsIDAsIFpQQ0lfTU9EX0ZDX1NFVF9NRUFTVVJFKTtcbiYjNDM7XHRzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9O1xuJiM0MztcdHU4IGNjLCBzdGF0dXM7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmICghemRldi1cdTAwM2VmbWIpXG4mIzQzO1x0XHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XG4mIzQzO1x0ZmliLmdkID0gemRldi1cdTAwM2VnaXNhO1xuJiM0MztcdGNjID0genBjaV9tb2RfZmMocmVxLCBcdTAwMjZmaWIsIFx1MDAyNnN0YXR1cyk7IC8qIERpc2FibGUgZnVuY3Rpb24gbWVhc3VyZW1lbnQgKi9cbiYjNDM7XG4mIzQzO1x0LyogVW5saWtlIGluIHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKCksIGNjID09IDMgaXMgbm90IGEgdmFsaWQgc3RhdGUgaGVyZVxuJiM0MztcdCAqIGJlY2F1c2Ugd2UgYXJlIHJlLWVuYWJsaW5nIGZ1bmN0aW9uIG1lYXN1cmVtZW50IGZvciB0aGUgc2FtZSBmdW5jdGlvblxuJiM0MztcdCAqIGhhbmRsZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoY2MpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4mIzQzO1x0a21lbV9jYWNoZV9mcmVlKHpkZXZfZm1iX2NhY2hlLCB6ZGV2LVx1MDAzZWZtYik7XG4mIzQzO1x0emRldi1cdTAwM2VmbWIgPSBOVUxMO1xuJiM0MztcdHJldHVybiB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHpkZXYpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSk7XG4gXG4gc3RhdGljIGludCB6cGNpX2NmZ19sb2FkKHN0cnVjdCB6cGNpX2RldiAqemRldiwgaW50IG9mZnNldCwgdTMyICp2YWwsIHU4IGxlbilcbiB7XG5AQCAtNjM5LDcgJiM0Mzs2NzEsOSBAQCBpbnQgcGNpYmlvc19lbmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbWFzaylcbiBcdHN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7XG4gXG4gXHR6cGNpX2RlYnVnX2luaXRfZGV2aWNlKHpkZXYsIGRldl9uYW1lKFx1MDAyNnBkZXYtXHUwMDNlZGV2KSk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiBcdHpwY2lfZm1iX2VuYWJsZV9kZXZpY2UoemRldik7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuIFxuIFx0cmV0dXJuIHBjaV9lbmFibGVfcmVzb3VyY2VzKHBkZXYsIG1hc2spO1xuIH1cbkBAIC02NDgsNyAmIzQzOzY4Miw5IEBAIHZvaWQgcGNpYmlvc19kaXNhYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKHBkZXYpO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHR6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHR6cGNpX2RlYnVnX2V4aXRfZGV2aWNlKHpkZXYpO1xuIH1cbiBcbkBAIC03MjksOSAmIzQzOzc2NSwxMyBAQCBpbnQgenBjaV9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxuIFx0fVxuIFxuIFx0cmMgPSB6cGNpX2lvbW11X3JlZ2lzdGVyX2lvYXQoemRldiwgXHUwMDI2c3RhdHVzKTtcbi1cdGlmIChyYylcbiYjNDM7XHRpZiAocmMpIHtcbiBcdFx0enBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XHRcdHJldHVybiByYztcbiYjNDM7XHR9XG4gXG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuJiM0MztcdHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9yZWVuYWJsZV9kZXZpY2UpO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmMgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXG5pbmRleCBjN2VkN2JmMjU0YjVlOS4uMjNlYjdlNzJjODcwZGIgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXG5AQCAtMTUzLDYgJiM0MzsxNTMsMTIgQEAgc3RhdGljIHNzaXplX3QgcGNpX3BlcmZfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcbiBcdGlmIChyYylcbiBcdFx0cmV0dXJuIHJjO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VremRldl9sb2NrKTtcbiYjNDM7XHRpZiAoemRldi1cdTAwM2VremRldikge1xuJiM0MztcdFx0cmMgPSAtRVBFUk07XG4mIzQzO1x0XHRnb3RvIG91dF91bmxvY2tfa3pkZXY7XG4mIzQzO1x0fVxuJiM0MztcbiBcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHRzd2l0Y2ggKHZhbCkge1xuIFx0Y2FzZSAwOlxuQEAgLTE2Myw2ICYjNDM7MTY5LDkgQEAgc3RhdGljIHNzaXplX3QgcGNpX3BlcmZfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4mIzQzO1xuJiM0MztvdXRfdW5sb2NrX2t6ZGV2OlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWt6ZGV2X2xvY2spO1xuIFx0cmV0dXJuIHJjID8gcmMgOiBjb3VudDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggYTI4ZjFlOTkzNjJjMWUuLmE0YjA3MTdiYThkNjdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtMTU3Miw2ICYjNDM7MTU3MiwxMCBAQCBpbnQgdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKHN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB1MzIgZmxhZ3MsXG4gXHRcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfdG9rZW4odmRldiwgZmxhZ3MsIGFyZywgYXJnc3opO1xuIFx0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX0RNQV9CVUY6XG4gXHRcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfZG1hX2J1Zih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4mIzQzO1x0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRTpcbiYjNDM7XHRcdHJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSh2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4mIzQzO1x0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQ6XG4mIzQzO1x0XHRyZXR1cm4gdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRU5PVFRZO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmhcbmluZGV4IGZjYTlkMGRmYWM5MGY4Li5iN2RiMDY0YTZhOTVhMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaFxuQEAgLTkzLDYgJiM0Mzs5MywxMCBAQCBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdFx0XHRcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcbiBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcbiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuJiM0MztcdFx0XHRcdCAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTtcbiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncyxcbiYjNDM7XHRcdFx0XHQgICB2b2lkIF9fdXNlciAqYXJnLCBzaXplX3QgYXJnc3opO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdFx0XHRcdFx0ICAgICAgc3RydWN0IHZmaW9faW5mb19jYXAgKmNhcHMpXG5AQCAtMTA3LDYgJiM0MzsxMTEsMjAgQEAgc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiB7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuJiM0MztcdFx0XHRcdFx0XHQgICB1MzIgZmxhZ3MsIHZvaWQgX191c2VyICphcmcsXG4mIzQzO1x0XHRcdFx0XHRcdCAgIHNpemVfdCBhcmdzeilcbiYjNDM7e1xuJiM0MztcdHJldHVybiAtRU5PVFRZO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuJiM0MztcdFx0XHRcdFx0XHQgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLFxuJiM0MztcdFx0XHRcdFx0XHQgc2l6ZV90IGFyZ3N6KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIC1FTk9UVFk7XG4mIzQzO31cbiAjZW5kaWZcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgdmZpb19wY2lfaXNfdmdhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcbmluZGV4IDA5OTBmZGIxNDZiNzgyLi4xYmQzNTlhZDZlNGE1NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY1xuQEAgLTE2NywzICYjNDM7MTY3LDYzIEBAIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFx0aWYgKHpwY2lfa3ZtX2hvb2sua3ZtX3VucmVnaXN0ZXIpXG4gXHRcdHpwY2lfa3ZtX2hvb2sua3ZtX3VucmVnaXN0ZXIoemRldik7XG4gfVxuJiM0MztcbiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuJiM0MztcdFx0XHRcdCAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuJiM0MztcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSBmbWJfZW5hYmxlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHZmaW9fY2hlY2tfZmVhdHVyZShmbGFncywgYXJnc3osIFZGSU9fREVWSUNFX0ZFQVRVUkVfU0VULCBzaXplb2YoZm1iX2VuYWJsZSkpO1xuJiM0MztcdGlmIChyZXQgIT0gMSlcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHpkZXYgPSB0b196cGNpKHZkZXYtXHUwMDNlcGRldik7XG4mIzQzO1x0aWYgKCF6ZGV2KVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZmbWJfZW5hYmxlLCBhcmcsIHNpemVvZihmbWJfZW5hYmxlKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XG4mIzQzO1x0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoZm1iX2VuYWJsZS5lbmFibGVkKVxuJiM0MztcdFx0cmV0dXJuIHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcbiYjNDM7XHRyZXR1cm4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoemRldik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXG4mIzQzO1x0XHRcdFx0ICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuJiM0MztcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgZm1iX3JlYWQ7XG4mIzQzO1x0c3RydWN0IHpwY2lfZm1iIGZtYl9ib3VuY2U7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHNpemVvZihmbWJfcmVhZCkpO1xuJiM0MztcdGlmIChyZXQgIT0gMSlcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdHpkZXYgPSB0b196cGNpKHZkZXYtXHUwMDNlcGRldik7XG4mIzQzO1x0aWYgKCF6ZGV2KVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZmbWJfcmVhZCwgYXJnLCBzaXplb2YoZm1iX3JlYWQpKSlcbiYjNDM7XHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdGlmICghZm1iX3JlYWQuZGF0YSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuJiM0MztcdGlmICghemRldi1cdTAwM2VmbWIpIHtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiYjNDM7XHRcdHJldHVybiAtRU5PTVNHO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bWVtY3B5KFx1MDAyNmZtYl9ib3VuY2UsIHpkZXYtXHUwMDNlZm1iLCB6ZGV2LVx1MDAzZWZtYl9sZW5ndGgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoZm1iX3JlYWQuZGF0YSksIFx1MDAyNmZtYl9ib3VuY2UsIHpkZXYtXHUwMDNlZm1iX2xlbmd0aCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oXG5pbmRleCA1ZGU2MThhM2E1ZWVlZS4uMmIxYjY2ZWVlZjEyMzEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oXG5AQCAtMTUzNCw2ICYjNDM7MTUzNCwzNSBAQCBzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9kbWFfYnVmIHtcbiAgKi9cbiAjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfTUlHX1BSRUNPUFlfSU5GT3YyICAxMlxuIFxuJiM0MzsvKipcbiYjNDM7ICogVXBvbiBWRklPX0RFVklDRV9GRUFUVVJFX1NFVCwgZW5hYmxlIG9yIGRpc2FibGUgRk1CIGZvciB0aGUgVkZJTyB6UENJIGRldmljZS5cbiYjNDM7ICpcbiYjNDM7ICogZW5hYmxlZCBpcyB0cmVhdGVkIGFzIGEgYm9vbCwgc28gYW55IG5vbi16ZXJvIHZhbHVlIGV2YWx1YXRlcyB0byB0cnVlLiBOZXN0ZWRcbiYjNDM7ICogZW5hYmxpbmcgcmVzZXRzIHRoZSBGTUIgY291bnRlcnMgdG8gemVybywgYW5kIG5lc3RlZCBkaXNhYmxpbmcgZmFpbHMuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgLTEgYW5kIGVycm5vIHNldCBhcHByb3ByaWF0ZWx5IG9uIGVycm9yLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSAxM1xuJiM0MztcbiYjNDM7c3RydWN0IHZmaW9fZGV2aWNlX2ZlYXR1cmVfenBjaV9mbWJfZW5hYmxlIHtcbiYjNDM7XHRfX3U4IGVuYWJsZWQ7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogVXBvbiBWRklPX0RFVklDRV9GRUFUVVJFX0dFVCwgcHJvdmlkZSBGTUIgcGFzc3Rocm91Z2ggZm9yIFZGSU8gelBDSSBkZXZpY2VzLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgdXNlci1wcm92aWRlZCBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBmbWJfbGVuZ3RoIGxhcmdlLCB3aGVyZSBmbWJfbGVuZ3RoXG4mIzQzOyAqIGlzIHJlcG9ydGVkIGluIFZGSU9fREVWSUNFX0lORk9fQ0FQX1pQQ0lfQkFTRS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuIGVycm5vPT1FTk9NU0dcbiYjNDM7ICogd2hlbiB0aGUgRk1CIGlzIG5vdCBlbmFibGVkLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQgMTRcbiYjNDM7XG4mIzQzO3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQge1xuJiM0MztcdF9fYWxpZ25lZF91NjQgZGF0YTtcbiYjNDM7fTtcbiYjNDM7XG4gLyogLS0tLS0tLS0gQVBJIGZvciBUeXBlMSBWRklPIElPTU1VIC0tLS0tLS0tICovXG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQmIzM0OywKICAgICYjMzQ7enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBWRklPIGRldmljZSBmZWF0dXJlcyAoVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEUgYW5kIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRCkgZm9yIHMzOTB4IGFyY2hpdGVjdHVyZS4gVGhlc2UgZmVhdHVyZXMgYWxsb3cgdXNlcnNwYWNlIHRvIGVuYWJsZS9kaXNhYmxlIGFuZCByZWFkIHRoZSBGdW5jdGlvbiBNZWFzdXJlbWVudCBCbG9jayAoRk1CKSBvZiBhIHpQQ0kgZGV2aWNlLiBJdCBhZGRzIGNvcnJlc3BvbmRpbmcgaW9jdGwgaGFuZGxlcnMgYW5kIGNvcmUgbG9naWMgdG8gcmUtZW5hYmxlIEZNQi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGV4cG9zaW5nIG5ldyBpb2N0bHMgdG8gdXNlcnNwYWNlLCB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMTFmMDM4MmFjZjJjNTQ5NGM0ZDM5Nzc0MzA0ZWQzN2FmMGFlNjY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMjA6MjA6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgKaW5kZXggNWRjZjM1ZjBmMzI1ZjUuLjY1MDE0ZTUyZDU1OTYwIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oCkBAIC0zMjMsNiAmIzQzOzMyMyw3IEBAIHZvaWQgenBjaV9yZW1vdmVfcGFyZW50X21zaV9kb21haW4oc3RydWN0IHpwY2lfYnVzICp6YnVzKTsKIC8qIEZNQiAqLwogaW50IHpwY2lfZm1iX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICopOwogaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTsKJiM0MztpbnQgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldik7CiAKIC8qIERlYnVnICovCiBpbnQgenBjaV9kZWJ1Z19pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2kuYyBiL2FyY2gvczM5MC9wY2kvcGNpLmMKaW5kZXggMzliZDJhZGZjMjQwZmQuLjFlYjZhYTc3MmViM2YzIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvcGNpL3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9wY2kvcGNpLmMKQEAgLTE3Myw2ICYjNDM7MTczLDggQEAgaW50IHpwY2lfZm1iX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTggY2MsIHN0YXR1czsKIAomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwogCWlmICh6ZGV2LSZndDtmbWIgfHwgc2l6ZW9mKCp6ZGV2LSZndDtmbWIpICZsdDsgemRldi0mZ3Q7Zm1iX2xlbmd0aCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTIxMSw2ICYjNDM7MjEzLDggQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldikKIAlzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9OwogCXU4IGNjLCBzdGF0dXM7CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsKIAlpZiAoIXpkZXYtJmd0O2ZtYikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTIyNyw2ICYjNDM7MjMxLDM0IEBAIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpCiAJfQogCXJldHVybiBjYyA/IC1FSU8gOiAwOwogfQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKTsKJiM0MzsKJiM0MztpbnQgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldikKJiM0Mzt7CiYjNDM7CXU2NCByZXEgPSBaUENJX0NSRUFURV9SRVEoemRldi0mZ3Q7ZmgsIDAsIFpQQ0lfTU9EX0ZDX1NFVF9NRUFTVVJFKTsKJiM0MzsJc3RydWN0IHpwY2lfZmliIGZpYiA9IHswfTsKJiM0MzsJdTggY2MsIHN0YXR1czsKJiM0MzsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKCF6ZGV2LSZndDtmbWIpCiYjNDM7CQlyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTsKJiM0MzsKJiM0MzsJZmliLmdkID0gemRldi0mZ3Q7Z2lzYTsKJiM0MzsJY2MgPSB6cGNpX21vZF9mYyhyZXEsICZhbXA7ZmliLCAmYW1wO3N0YXR1cyk7IC8qIERpc2FibGUgZnVuY3Rpb24gbWVhc3VyZW1lbnQgKi8KJiM0MzsKJiM0MzsJLyogVW5saWtlIGluIHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKCksIGNjID09IDMgaXMgbm90IGEgdmFsaWQgc3RhdGUgaGVyZQomIzQzOwkgKiBiZWNhdXNlIHdlIGFyZSByZS1lbmFibGluZyBmdW5jdGlvbiBtZWFzdXJlbWVudCBmb3IgdGhlIHNhbWUgZnVuY3Rpb24KJiM0MzsJICogaGFuZGxlLgomIzQzOwkgKi8KJiM0MzsJaWYgKGNjKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CWttZW1fY2FjaGVfZnJlZSh6ZGV2X2ZtYl9jYWNoZSwgemRldi0mZ3Q7Zm1iKTsKJiM0MzsJemRldi0mZ3Q7Zm1iID0gTlVMTDsKJiM0MzsJcmV0dXJuIHpwY2lfZm1iX2VuYWJsZV9kZXZpY2UoemRldik7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSk7CiAKIHN0YXRpYyBpbnQgenBjaV9jZmdfbG9hZChzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIGludCBvZmZzZXQsIHUzMiAqdmFsLCB1OCBsZW4pCiB7CkBAIC02MzksNyAmIzQzOzY3MSw5IEBAIGludCBwY2liaW9zX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBtYXNrKQogCXN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7CiAKIAl6cGNpX2RlYnVnX2luaXRfZGV2aWNlKHpkZXYsIGRldl9uYW1lKCZhbXA7cGRldi0mZ3Q7ZGV2KSk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiAJenBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwogCiAJcmV0dXJuIHBjaV9lbmFibGVfcmVzb3VyY2VzKHBkZXYsIG1hc2spOwogfQpAQCAtNjQ4LDcgJiM0Mzs2ODIsOSBAQCB2b2lkIHBjaWJpb3NfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CiAJc3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShwZGV2KTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwogCXpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHpkZXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiAJenBjaV9kZWJ1Z19leGl0X2RldmljZSh6ZGV2KTsKIH0KIApAQCAtNzI5LDkgJiM0Mzs3NjUsMTMgQEAgaW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldikKIAl9CiAKIAlyYyA9IHpwY2lfaW9tbXVfcmVnaXN0ZXJfaW9hdCh6ZGV2LCAmYW1wO3N0YXR1cyk7Ci0JaWYgKHJjKQomIzQzOwlpZiAocmMpIHsKIAkJenBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTsKJiM0MzsJCXJldHVybiByYzsKJiM0MzsJfQogCiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsJenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpOwogCXJldHVybiByYzsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfcmVlbmFibGVfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmMgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jCmluZGV4IGM3ZWQ3YmYyNTRiNWU5Li4yM2ViN2U3MmM4NzBkYiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jCkBAIC0xNTMsNiAmIzQzOzE1MywxMiBAQCBzdGF0aWMgc3NpemVfdCBwY2lfcGVyZl9zZXFfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDt6ZGV2LSZndDtremRldl9sb2NrKTsKJiM0MzsJaWYgKHpkZXYtJmd0O2t6ZGV2KSB7CiYjNDM7CQlyYyA9IC1FUEVSTTsKJiM0MzsJCWdvdG8gb3V0X3VubG9ja19remRldjsKJiM0MzsJfQomIzQzOwogCW11dGV4X2xvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiAJc3dpdGNoICh2YWwpIHsKIAljYXNlIDA6CkBAIC0xNjMsNiAmIzQzOzE2OSw5IEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCiAJCWJyZWFrOwogCX0KIAltdXRleF91bmxvY2soJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7CiYjNDM7CiYjNDM7b3V0X3VubG9ja19remRldjoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7a3pkZXZfbG9jayk7CiAJcmV0dXJuIHJjID8gcmMgOiBjb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCBhMjhmMWU5OTM2MmMxZS4uYTRiMDcxN2JhOGQ2N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCkBAIC0xNTcyLDYgJiM0MzsxNTcyLDEwIEBAIGludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncywKIAkJcmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV90b2tlbih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7CiAJY2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX0RNQV9CVUY6CiAJCXJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfZG1hX2J1Zih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7CiYjNDM7CWNhc2UgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEU6CiYjNDM7CQlyZXR1cm4gdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUodmRldiwgZmxhZ3MsIGFyZywgYXJnc3opOwomIzQzOwljYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRDoKJiM0MzsJCXJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQodmRldiwgZmxhZ3MsIGFyZywgYXJnc3opOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRU5PVFRZOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgKaW5kZXggZmNhOWQwZGZhYzkwZjguLmI3ZGIwNjRhNmE5NWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaApAQCAtOTMsNiAmIzQzOzkzLDEwIEBAIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LAogCQkJCXN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTsKIGludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7CiB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7CiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLAomIzQzOwkJCQkgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7CiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncywKJiM0MzsJCQkJICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LAogCQkJCQkgICAgICBzdHJ1Y3QgdmZpb19pbmZvX2NhcCAqY2FwcykKQEAgLTEwNyw2ICYjNDM7MTExLDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KQoge30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsCiYjNDM7CQkJCQkJICAgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLAomIzQzOwkJCQkJCSAgIHNpemVfdCBhcmdzeikKJiM0Mzt7CiYjNDM7CXJldHVybiAtRU5PVFRZOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LAomIzQzOwkJCQkJCSB1MzIgZmxhZ3MsIHZvaWQgX191c2VyICphcmcsCiYjNDM7CQkJCQkJIHNpemVfdCBhcmdzeikKJiM0Mzt7CiYjNDM7CXJldHVybiAtRU5PVFRZOwomIzQzO30KICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGJvb2wgdmZpb19wY2lfaXNfdmdhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYwppbmRleCAwOTkwZmRiMTQ2Yjc4Mi4uMWJkMzU5YWQ2ZTRhNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jCkBAIC0xNjcsMyAmIzQzOzE2Nyw2MyBAQCB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldikKIAlpZiAoenBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3RlcikKIAkJenBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3Rlcih6ZGV2KTsKIH0KJiM0MzsKJiM0MztpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsCiYjNDM7CQkJCSAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KQomIzQzO3sKJiM0MzsJc3RydWN0IHpwY2lfZGV2ICp6ZGV2OwomIzQzOwlzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9lbmFibGUgZm1iX2VuYWJsZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIHNpemVvZihmbWJfZW5hYmxlKSk7CiYjNDM7CWlmIChyZXQgIT0gMSkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXpkZXYgPSB0b196cGNpKHZkZXYtJmd0O3BkZXYpOwomIzQzOwlpZiAoIXpkZXYpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJaWYgKGNvcHlfZnJvbV91c2VyKCZhbXA7Zm1iX2VuYWJsZSwgYXJnLCBzaXplb2YoZm1iX2VuYWJsZSkpKQomIzQzOwkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO3pkZXYtJmd0O2ZtYl9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKGZtYl9lbmFibGUuZW5hYmxlZCkKJiM0MzsJCXJldHVybiB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7CiYjNDM7CXJldHVybiB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncywKJiM0MzsJCQkJICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KQomIzQzO3sKJiM0MzsJc3RydWN0IHpwY2lfZGV2ICp6ZGV2OwomIzQzOwlzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9yZWFkIGZtYl9yZWFkOwomIzQzOwlzdHJ1Y3QgenBjaV9mbWIgZm1iX2JvdW5jZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHNpemVvZihmbWJfcmVhZCkpOwomIzQzOwlpZiAocmV0ICE9IDEpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwl6ZGV2ID0gdG9fenBjaSh2ZGV2LSZndDtwZGV2KTsKJiM0MzsJaWYgKCF6ZGV2KQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CWlmIChjb3B5X2Zyb21fdXNlcigmYW1wO2ZtYl9yZWFkLCBhcmcsIHNpemVvZihmbWJfcmVhZCkpKQomIzQzOwkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CWlmICghZm1iX3JlYWQuZGF0YSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwlpZiAoIXpkZXYtJmd0O2ZtYikgewomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwkJcmV0dXJuIC1FTk9NU0c7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbWVtY3B5KCZhbXA7Zm1iX2JvdW5jZSwgemRldi0mZ3Q7Zm1iLCB6ZGV2LSZndDtmbWJfbGVuZ3RoKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7emRldi0mZ3Q7Zm1iX2xvY2spOwomIzQzOwomIzQzOwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihmbWJfcmVhZC5kYXRhKSwgJmFtcDtmbWJfYm91bmNlLCB6ZGV2LSZndDtmbWJfbGVuZ3RoKSkKJiM0MzsJCXJldHVybiAtRUZBVUxUOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaAppbmRleCA1ZGU2MThhM2E1ZWVlZS4uMmIxYjY2ZWVlZjEyMzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaApAQCAtMTUzNCw2ICYjNDM7MTUzNCwzNSBAQCBzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9kbWFfYnVmIHsKICAqLwogI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX01JR19QUkVDT1BZX0lORk92MiAgMTIKIAomIzQzOy8qKgomIzQzOyAqIFVwb24gVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIGVuYWJsZSBvciBkaXNhYmxlIEZNQiBmb3IgdGhlIFZGSU8gelBDSSBkZXZpY2UuCiYjNDM7ICoKJiM0MzsgKiBlbmFibGVkIGlzIHRyZWF0ZWQgYXMgYSBib29sLCBzbyBhbnkgbm9uLXplcm8gdmFsdWUgZXZhbHVhdGVzIHRvIHRydWUuIE5lc3RlZAomIzQzOyAqIGVuYWJsaW5nIHJlc2V0cyB0aGUgRk1CIGNvdW50ZXJzIHRvIHplcm8sIGFuZCBuZXN0ZWQgZGlzYWJsaW5nIGZhaWxzLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSAxMwomIzQzOwomIzQzO3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSB7CiYjNDM7CV9fdTggZW5hYmxlZDsKJiM0Mzt9OwomIzQzOwomIzQzOy8qKgomIzQzOyAqIFVwb24gVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHByb3ZpZGUgRk1CIHBhc3N0aHJvdWdoIGZvciBWRklPIHpQQ0kgZGV2aWNlcy4KJiM0MzsgKgomIzQzOyAqIFRoZSB1c2VyLXByb3ZpZGVkIGJ1ZmZlciBtdXN0IGJlIGF0IGxlYXN0IGZtYl9sZW5ndGggbGFyZ2UsIHdoZXJlIGZtYl9sZW5ndGgKJiM0MzsgKiBpcyByZXBvcnRlZCBpbiBWRklPX0RFVklDRV9JTkZPX0NBUF9aUENJX0JBU0UuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIGFuZCBlcnJubyBzZXQgYXBwcm9wcmlhdGVseSBvbiBlcnJvci4gZXJybm89PUVOT01TRwomIzQzOyAqIHdoZW4gdGhlIEZNQiBpcyBub3QgZW5hYmxlZC4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRCAxNAomIzQzOwomIzQzO3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgewomIzQzOwlfX2FsaWduZWRfdTY0IGRhdGE7CiYjNDM7fTsKJiM0MzsKIC8qIC0tLS0tLS0tIEFQSSBmb3IgVHlwZTEgVkZJTyBJT01NVSAtLS0tLS0tLSAqLwogCiAvKioKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc4OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBsYW4gZm9yIE5ldyBWRklPIEZlYXR1cmVzIG9uIHMzOTAqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIGhlcmUuIEl0JiMzOTtzIHRvdWNoaW5nIGJvdGggczM5MCBQQ0kgY29kZSBhbmQgVkZJTyBQQ0kgY29kZSDigJMgc3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgdHdvIG5vdmVsIFZGSU8gZGV2aWNlIGZlYXR1cmVzOiBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZXNlIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCBmaWxlIGFuZCBtYXAgdG8gY2FsbHMgdG8gYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCBhbmQgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSB0byBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBhbmQgYHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlYCBmdW5jdGlvbnMsIGFuZCByZWFkIGZyb20gYHpkZXYtJmd0O2ZtYmAsIHNvIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGRldmljZSBtZW1vcnkgYmxvY2sgY29udHJvbC4KClRoZSBwYXRjaCBhbHNvIGhhcyBjaGFuZ2VzIGluIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCwgc3BlY2lmaWNhbGx5IGZvciBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCwgd2hpY2ggc3VnZ2VzdHMgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXMgZGVlcGx5IGludm9sdmVkLgoKVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBhZGRpdGlvbiDigJMgbmV3IGlvY3RsIGZlYXR1cmVzIGZvciBWRklPIGRldmljZXMgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBHaXZlbiB0aGF0IGl0IHRvdWNoZXMgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBWRklPLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmUuIFdlIG5lZWQgdG8gZXhwb3NlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBoeXBlcnZpc29yLCB0aGUgVkZJTyBkcml2ZXIsIGFuZCB0aGUgczM5MCBoYXJkd2FyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBjb2RlIHJlc2lkZXMgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCBhbmQgYGFyY2gvczM5MC9wY2kvcGNpLmNgLiBUaGUgYGFyY2gvczM5MC9wY2kvcGNpLmNgIHBhcnQgaXMgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBjb250aW5nZW50IG9uIGBDT05GSUdfUENJYCBiZWluZyBlbmFibGVkIGZvciBzMzkwLiBGb3IgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyB0aWVkIHRvIGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gLCBvciBzb21ldGhpbmcgc2ltaWxhciwgZm9yIGl0cyBjb21waWxhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBiZSBjZXJ0YWluIGFuZCBnZXQgYSBjb3JyZWN0IGJ1aWxkIHNldHVwIGJlZm9yZSBJIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX3pkZXYubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZTo0OnZmaW8tcGNpLWNvcmUtJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSB2ZmlvX3BjaV96ZGV2Lm9cbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGUtNS12ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgJiM0Mzs9IHZmaW9fcGNpX2RtYWJ1Zi5vXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTM0PWludCB2ZmlvX3BjaV9jb3JlX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTc5LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NTgwOlx0cmV0ID0gdmZpb19wY2lfemRldl9vcGVuX2RldmljZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU4MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9OTI9aW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC05My1cdFx0XHRcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oOjk0OmludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC05NS12b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9MTAxPXN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA2LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6MTA3OnN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xMTY9aW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTQzLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM6MTQ0OmludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTE0NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ5OQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVkZJTy1QQ0ktWkRFVi1LVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gIGlzIGEgcmVxdWlyZW1lbnQgaGVyZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgbGV0IG1lIGp1c3QgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHJlY2FsbCB0aGF0IGB2ZmlvX3BjaV96ZGV2LmNgICpzaG91bGQqIGJlIGNvbXBpbGVkIHdoZW4gYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAgaXMgZW5hYmxlZCwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB0aGF0LiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGZvciBgVkZJT19QQ0lfWkRFVl9LVk1gIGFyZSBsYWlkIG91dCwgc28gdGhhdCYjMzk7cyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBpdHMgaW5jbHVzaW9uLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvbGlkIGFuZCBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGV0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSV9aREVWX0tWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg5OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBEZXZpY2UgUmUtRW5hYmxpbmcgb24gczM5MCBBcmNoaXRlY3R1cmUqKgoKQWxyaWdodCwgdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGRldmljZSByZS1lbmFibGluZyBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIFBDSSBjb250ZXh0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCBmaWxlLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIFBDSSBkcml2ZXIgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGF0IGFyY2hpdGVjdHVyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgUENJIGluaXRpYWxpemF0aW9uIGFuZCBkZXZpY2UgZW51bWVyYXRpb24gcm91dGluZXMgdGhlcmUsIGJ1dCBJJiMzOTttIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciB0aGUgcmUtZW5hYmxlIGxvZ2ljLgoKR2l2ZW4gdGhlIHBocmFzaW5nLCBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBzb3VuZHMgbGlrZSBpdCBob2xkcyB0aGUga2V5IHRvIHRoZSByZS1lbmFibGluZyBmdW5jdGlvbmFsaXR5LiBUaGlzIGZ1bmN0aW9uIG5hbWUgaXMgaGlnaGx5IHN1Z2dlc3RpdmUsIGVzcGVjaWFsbHkgd2l0aCAmIzM0O3pwY2kmIzM0OyB3aGljaCB0ZWxscyBtZSBpdCB3aWxsIGRlYWwgd2l0aCB6UENJIGRldmljZSBoYW5kbGluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIHRoZSBGTUIsIHdoaWNoLCBrbm93aW5nIHMzOTAsIEkgaW1tZWRpYXRlbHkgYXNzdW1lIHBlcnRhaW5zIHRvIHRoZSBGYWNpbGl0eSBNYW5hZ2VtZW50IEJsb2NrLCBpbXBseWluZyBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBzeXN0ZW0tbGV2ZWwgcmVzb3VyY2Ugb3IgbWFuYWdlbWVudCBpbnRlcmZhY2UuIFRoaXMgZnVuY3Rpb24gbGlrZWx5IG9yY2hlc3RyYXRlcyB0aGUgZGV2aWNlIHJlLWVuYWJsZSBvcGVyYXRpb24sIHBlcmhhcHMgZm9sbG93aW5nIGEgaG90cGx1ZyBldmVudCwgYSBmaXJtd2FyZSB1cGRhdGUsIG9yIG1heWJlIGEgcmVjb3Zlcnkgc2NlbmFyaW8uIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VgIGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIFBDSSBpbmZyYXN0cnVjdHVyZSwgbG9va2luZyBmb3IgYW55IGVycm9yIGhhbmRsaW5nLCBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcywgb3IgYW55IHNwZWNpYWwgczM5MC1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBsaWtlIEkvTyBhZGRyZXNzIHNwYWNlIG1hcHBpbmcgb3IgaW50ZXJydXB0IHJvdXRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaD0zMjU9aW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaDozMjY6aW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpO1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oLTMyNy1cbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTIzND1FWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSk7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTIzNS1cbmFyY2gvczM5MC9wY2kvcGNpLmM6MjM2OmludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxuYXJjaC9zMzkwL3BjaS9wY2kuYy0yMzcte1xuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmMtMjYwLX1cbmFyY2gvczM5MC9wY2kvcGNpLmM6MjYxOkVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSk7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTI2Mi1cbi0tXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTc1Mj1pbnQgenBjaV9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmMtNzczLVx0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuYXJjaC9zMzkwL3BjaS9wY2kuYzo3NzQ6XHR6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc3NS1cdHJldHVybiByYztcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xNzE9aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jLTE5MS1cdGlmIChmbWJfZW5hYmxlLmVuYWJsZWQpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYzoxOTI6XHRcdHJldHVybiB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYy0xOTMtXHRyZXR1cm4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoemRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyMAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8gUENJIERldmljZSBGZWF0dXJlIEFkZGl0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZ2V0dGluZyBhdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gSXQmIzM5O3MgaW50cm9kdWNpbmcgbmV3IGZlYXR1cmVzLCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYCwgYW5kIHRoZXkmIzM5O3JlIGhvb2tlZCB1cCB0byBpb2N0bHMgZm9yIFZGSU8gUENJIGRldmljZXMuIE15IGltbWVkaWF0ZSBpbnRlcmVzdCBpcyBwaXF1ZWQgLSBzb3VuZHMgbGlrZSB3ZSYjMzk7cmUgZW5hYmxpbmcgc29tZSBmb3JtIG9mIGZ1bmN0aW9uYWxpdHkgb3IgYWNjZXNzIHJlbGF0ZWQgdG8gRmxleGlibGUgTWVtb3J5IEJ1ZmZlcnMgb24gelBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lIGhlcmUgYXJlIGB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZWAsIGB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWRgLCBhbmQgYWxzbyBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCwgd2hpY2ggd2lsbCBsaWtlbHkgYmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZXNlIHRvIHVuZGVyc3RhbmQgdGhlIGxvdy1sZXZlbCBpbXBsaWNhdGlvbnMuCgpUaGUgY29uZmlncyBpbnZvbHZlZCBhcmUgYFZGSU9fUENJYCwgYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGltcGxpY2l0bHksIGBQQ0lgICh3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgczM5MCBQQ0kgY29udGV4dCkuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIFdhaXQsIGhhbmcgb24uLi4gYFZGSU9fUENJX1pERVZfS1ZNYCBpcyBhIGJvb2xlYW4gY29uZmlnLCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIGVpdGhlciBvbiBvciBvZmYgYW5kIGRldGVybWluZXMgZW5hYmxlbWVudCBvciBub3QuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VwcG9ydGluZyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOyBJIG5lZWQgdG8gZXhwbG9yZSB0aGUgb3RoZXIgY29uZmlnIG9wdGlvbnMgYXZhaWxhYmxlLiBUaGF0JiMzOTtzIG5leHQgb24gbXkgbGlzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU6Y29uZmlnIFZGSU9fUENJX0NPUkVcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy02LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctOS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxMDpjb25maWcgVkZJT19QQ0lfSU5UWFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTExLVx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMy1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxNDpjb25maWcgVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZVwmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yMz1pZiBWRklPX1BDSVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjI0OmNvbmZpZyBWRklPX1BDSV9WR0FcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBWRklPIFBDSSBzdXBwb3J0IGZvciBWR0EgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0zMy1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzozNDpjb25maWcgVkZJT19QQ0lfSUdEXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzUtXHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgSW50ZWwgZ3JhcGhpY3MgKEdWVC1kKVwmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNTctXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NTg6Y29uZmlnIFZGSU9fUENJX0RNQUJVRlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU5LVx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFx1MDAyNlx1MDAyNiBQQ0lfUDJQRE1BIFx1MDAyNlx1MDAyNiBETUFfU0hBUkVEX0JVRkZFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAwOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVkZJTy1QQ0kgWi1EZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGBWRklPX1BDSV9aREVWX0tWTWAsIHdoaWNoLCBvZiBjb3Vyc2UsIGltcGxpZXMgYFZGSU9fUENJYCBpcyBhbHNvIGluIHBsYXkuIE15IHByaW1hcnkgaW50ZXJlc3Qgbm93IGlzIHRvIHNlZSBpZiB0aGlzIGlzIGFsbCB0aGF0JiMzOTtzIGludm9sdmVkLCBjb25maWd1cmF0aW9uLXdpc2UuCgpJIG5lZWQgdG8gZGlnIGludG8gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCwgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAsIGFuZCBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB3YXJyYW50IGF0dGVudGlvbj8KCkFscmlnaHQsIEkgc2VlIHRoYXQgYm90aCBgenBjaV9mbWJfZGlzYWJsZV9kZXZpY2VgIGFuZCBgenBjaV9mbWJfZW5hYmxlX2RldmljZWAgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIGluY2x1ZGUgYGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDt6ZGV2LSZndDtmbWJfbG9jayk7YC4gSW50ZXJlc3RpbmcuIEFuZCBgenBjaV9yZWVuYWJsZV9kZXZpY2VgIG5vdyBjYWxscyBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYC4gSSB3YW50IHRvIGludmVzdGlnYXRlIGB6cGNpX3JlZW5hYmxlX2RldmljZWAgZnVydGhlciB0byBjb25maXJtIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enBjaV9yZWVuYWJsZV9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oPTIyNz1pbnQgenBjaV9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaDoyMjg6aW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldik7XG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgtMjI5LWludCB6cGNpX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTQzMD1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9yZWdpc3Rlcl9rdm0odm9pZCAqb3BhcXVlLCBzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy00NzgtXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjQ3OTpcdHJjID0genBjaV9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5hcmNoL3MzOTAva3ZtL3BjaS5jLTQ4MC1cdGlmIChyYylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTUwNT1zdGF0aWMgdm9pZCBrdm1fczM5MF9wY2lfdW5yZWdpc3Rlcl9rdm0odm9pZCAqb3BhcXVlKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtNTQxLVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo1NDI6XHR6cGNpX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTQzLVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpLmM9NzUwPUVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfZW5hYmxlX2RldmljZSk7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc1MS1cbmFyY2gvczM5MC9wY2kvcGNpLmM6NzUyOmludCB6cGNpX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc1My17XG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYy03NzYtfVxuYXJjaC9zMzkwL3BjaS9wY2kuYzo3Nzc6RVhQT1JUX1NZTUJPTF9HUEwoenBjaV9yZWVuYWJsZV9kZXZpY2UpO1xuYXJjaC9zMzkwL3BjaS9wY2kuYy03NzgtXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYz04MjY9aW50IHpwY2lfaG90X3Jlc2V0X2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4tLVxuYXJjaC9zMzkwL3BjaS9wY2kuYy04NDUtXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjg0NjpcdHJjID0genBjaV9yZWVuYWJsZV9kZXZpY2UoemRldik7XG5hcmNoL3MzOTAvcGNpL3BjaS5jLTg0Ny1cbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9zeXNmcy5jPTU1PXN0YXRpYyBpbnQgX2RvX3JlY292ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCB6cGNpX2RldiAqemRldilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9zeXNmcy5jLTczLVxuYXJjaC9zMzkwL3BjaS9wY2lfc3lzZnMuYzo3NDpcdHJldCA9IHpwY2lfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xuYXJjaC9zMzkwL3BjaS9wY2lfc3lzZnMuYy03NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzQKCQkJCQkJCW91dHB1dDogMjA4CgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBgenBjaV9yZWVuYWJsZV9kZXZpY2VgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24uIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGEgZmV3IGRpZmZlcmVudCBwbGFjZXM6IGBrdm1fczM5MF9wY2lfcmVnaXN0ZXJfa3ZtYCwgYGt2bV9zMzkwX3BjaV91bnJlZ2lzdGVyX2t2bWAsIGB6cGNpX2hvdF9yZXNldF9kZXZpY2VgLCBhbmQsIGltcG9ydGFudGx5LCBgX2RvX3JlY292ZXJgLiBUaGF0IHBhdHRlcm4gcmFpc2VzIG15IGV5ZWJyb3dzIGEgYml0OyBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0cyBtZWFuIGRpZmZlcmVudCBwb3RlbnRpYWwgc3RhdGVzIGFuZCBlZGdlIGNhc2VzIHRvIGNvbnNpZGVyLiBEZWZpbml0ZWx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuCgpNeSBndXQgZmVlbGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgKnR3byogbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIOKAkyBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYCDigJMgc3BlY2lmaWNhbGx5IGZvciBzMzkweCwgYW5kIGV4cG9zaW5nIG5ldyBpb2N0bCBoYW5kbGVycywgc2NyZWFtcyAmIzM0O3BvdGVudGlhbCBmb3IgaW50ZXJlc3RpbmcgZnV6emluZyBjb3ZlcmFnZS4mIzM0OyBUaGVzZSBuZXcgZmVhdHVyZXMgYXJlIGNvbmNlcm5lZCB3aXRoIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgcmVhZGluZyB0aGUgRnVuY3Rpb24gTWVhc3VyZW1lbnQgQmxvY2sgKEZNQikgb2YgYSB6UENJIGRldmljZSwgd2hpY2ggaXMgbmV3LCBlc3BlY2lhbGx5IGZvciB1c2Vyc3BhY2UgY29udHJvbC4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHMsIHBhcnRpY3VsYXJseSB0aG9zZSByZWxhdGVkIHRvIEZNQiByZS1lbmFibGVtZW50OiBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVgLCBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkYCwgYW5kIGVzcGVjaWFsbHkgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhvc2UgaW9jdGxzIGludGVyYWN0IHdpdGggdGhlIHJlLWVuYWJsZSBsb2dpYy4KCkFsc28sIEkgc2hvdWxkIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXM6IGBWRklPX1BDSV9aREVWX0tWTWAgYW5kIGBWRklPX1BDSWAuIEkgd2FudCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwcmVjb25kaXRpb25zIGZvciB0aGlzIGNvZGUgdG8gYmUgYWN0aXZlLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIHRvIHRoZSBGTUIgZHVyaW5nIHRoZSBlbmFibGUvZGlzYWJsZSBjeWNsZSwgYW5kIGhvdyB0aGF0IHN0YXRlIGlzIG1hbmFnZWQuIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHVzZXJzcGFjZSBjb250cm9sIGFuZCB0aGUga2VybmVsJiMzOTtzIGludGVybmFsIHN0YXRlIGlzIHdoZXJlIHRoZSBtb3N0IGludGVyZXN0aW5nIGJ1Z3MgdXN1YWxseSBoaWRlLiBUaGlzIHBhdGNoIHByZXNlbnRzIGEgbmV3IGF0dGFjayBzdXJmYWNlLCBhbmQgaXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBmdWxseSBleHBsb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSYjMzQ7LAogICAgJiMzNDt2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQmIzM0OywKICAgICYjMzQ7enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBWRklPIGRldmljZSBmZWF0dXJlcyAoVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEUgYW5kIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRCkgZm9yIHMzOTB4IGFyY2hpdGVjdHVyZS4gVGhlc2UgZmVhdHVyZXMgYWxsb3cgdXNlcnNwYWNlIHRvIGVuYWJsZS9kaXNhYmxlIGFuZCByZWFkIHRoZSBGdW5jdGlvbiBNZWFzdXJlbWVudCBCbG9jayAoRk1CKSBvZiBhIHpQQ0kgZGV2aWNlLiBJdCBhZGRzIGNvcnJlc3BvbmRpbmcgaW9jdGwgaGFuZGxlcnMgYW5kIGNvcmUgbG9naWMgdG8gcmUtZW5hYmxlIEZNQi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGV4cG9zaW5nIG5ldyBpb2N0bHMgdG8gdXNlcnNwYWNlLCB3aGljaCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7LAogICAgJiMzNDtWRklPX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlJiMzNDssCiAgICAmIzM0O3ZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZCYjMzQ7LAogICAgJiMzNDt6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMDo0Ny4zNjE4ODE1ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM4Njc1ODcxOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZFwiLFxuICAgIFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIwOjQ3LjM2MTg4NjE2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3MDY0MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzExZjAzODJhY2YyYzU0OTRjNGQzOTc3NDMwNGVkMzdhZjBhZTY2NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAyMDoyMDo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmhcXG5pbmRleCA1ZGNmMzVmMGYzMjVmNS4uNjUwMTRlNTJkNTU5NjAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXFxuQEAgLTMyMyw2ICszMjMsNyBAQCB2b2lkIHpwY2lfcmVtb3ZlX3BhcmVudF9tc2lfZG9tYWluKHN0cnVjdCB6cGNpX2J1cyAqemJ1cyk7XFxuIC8qIEZNQiAqL1xcbiBpbnQgenBjaV9mbWJfZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XFxuIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XFxuK2ludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTtcXG4gXFxuIC8qIERlYnVnICovXFxuIGludCB6cGNpX2RlYnVnX2luaXQodm9pZCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpLmMgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXFxuaW5kZXggMzliZDJhZGZjMjQwZmQuLjFlYjZhYTc3MmViM2YzIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9wY2kvcGNpLmNcXG4rKysgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXFxuQEAgLTE3Myw2ICsxNzMsOCBAQCBpbnQgenBjaV9mbWJfZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHU4IGNjLCBzdGF0dXM7XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbiBcXHRpZiAoemRldi1cXHUwMDNlZm1iIHx8IHNpemVvZigqemRldi1cXHUwMDNlZm1iKSBcXHUwMDNjIHpkZXYtXFx1MDAzZWZtYl9sZW5ndGgpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG5AQCAtMjExLDYgKzIxMyw4IEBAIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuIFxcdHN0cnVjdCB6cGNpX2ZpYiBmaWIgPSB7MH07XFxuIFxcdHU4IGNjLCBzdGF0dXM7XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbiBcXHRpZiAoIXpkZXYtXFx1MDAzZWZtYilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbkBAIC0yMjcsNiArMjMxLDM0IEBAIGludCB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuIFxcdH1cXG4gXFx0cmV0dXJuIGNjID8gLUVJTyA6IDA7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfZGlzYWJsZV9kZXZpY2UpO1xcbitcXG4raW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuK3tcXG4rXFx0dTY0IHJlcSA9IFpQQ0lfQ1JFQVRFX1JFUSh6ZGV2LVxcdTAwM2VmaCwgMCwgWlBDSV9NT0RfRkNfU0VUX01FQVNVUkUpO1xcbitcXHRzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9O1xcbitcXHR1OCBjYywgc3RhdHVzO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbitcXG4rXFx0aWYgKCF6ZGV2LVxcdTAwM2VmbWIpXFxuK1xcdFxcdHJldHVybiB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHpkZXYpO1xcbitcXG4rXFx0ZmliLmdkID0gemRldi1cXHUwMDNlZ2lzYTtcXG4rXFx0Y2MgPSB6cGNpX21vZF9mYyhyZXEsIFxcdTAwMjZmaWIsIFxcdTAwMjZzdGF0dXMpOyAvKiBEaXNhYmxlIGZ1bmN0aW9uIG1lYXN1cmVtZW50ICovXFxuK1xcbitcXHQvKiBVbmxpa2UgaW4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoKSwgY2MgPT0gMyBpcyBub3QgYSB2YWxpZCBzdGF0ZSBoZXJlXFxuK1xcdCAqIGJlY2F1c2Ugd2UgYXJlIHJlLWVuYWJsaW5nIGZ1bmN0aW9uIG1lYXN1cmVtZW50IGZvciB0aGUgc2FtZSBmdW5jdGlvblxcbitcXHQgKiBoYW5kbGUuXFxuK1xcdCAqL1xcbitcXHRpZiAoY2MpXFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXG4rXFx0a21lbV9jYWNoZV9mcmVlKHpkZXZfZm1iX2NhY2hlLCB6ZGV2LVxcdTAwM2VmbWIpO1xcbitcXHR6ZGV2LVxcdTAwM2VmbWIgPSBOVUxMO1xcbitcXHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UpO1xcbiBcXG4gc3RhdGljIGludCB6cGNpX2NmZ19sb2FkKHN0cnVjdCB6cGNpX2RldiAqemRldiwgaW50IG9mZnNldCwgdTMyICp2YWwsIHU4IGxlbilcXG4ge1xcbkBAIC02MzksNyArNjcxLDkgQEAgaW50IHBjaWJpb3NfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG1hc2spXFxuIFxcdHN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7XFxuIFxcbiBcXHR6cGNpX2RlYnVnX2luaXRfZGV2aWNlKHpkZXYsIGRldl9uYW1lKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpKTtcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbiBcXHR6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHpkZXYpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4gXFxuIFxcdHJldHVybiBwY2lfZW5hYmxlX3Jlc291cmNlcyhwZGV2LCBtYXNrKTtcXG4gfVxcbkBAIC02NDgsNyArNjgyLDkgQEAgdm9pZCBwY2liaW9zX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCB6cGNpX2RldiAqemRldiA9IHRvX3pwY2kocGRldik7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuIFxcdHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHpkZXYpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4gXFx0enBjaV9kZWJ1Z19leGl0X2RldmljZSh6ZGV2KTtcXG4gfVxcbiBcXG5AQCAtNzI5LDkgKzc2NSwxMyBAQCBpbnQgenBjaV9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbiBcXHR9XFxuIFxcbiBcXHRyYyA9IHpwY2lfaW9tbXVfcmVnaXN0ZXJfaW9hdCh6ZGV2LCBcXHUwMDI2c3RhdHVzKTtcXG4tXFx0aWYgKHJjKVxcbitcXHRpZiAocmMpIHtcXG4gXFx0XFx0enBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTtcXG4rXFx0XFx0cmV0dXJuIHJjO1xcbitcXHR9XFxuIFxcbitcXHRndWFyZChtdXRleCkoXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4rXFx0enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xcbiBcXHRyZXR1cm4gcmM7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9yZWVuYWJsZV9kZXZpY2UpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jIGIvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuY1xcbmluZGV4IGM3ZWQ3YmYyNTRiNWU5Li4yM2ViN2U3MmM4NzBkYiAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvcGNpL3BjaV9kZWJ1Zy5jXFxuKysrIGIvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuY1xcbkBAIC0xNTMsNiArMTUzLDEyIEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXFxuIFxcdGlmIChyYylcXG4gXFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2emRldi1cXHUwMDNla3pkZXZfbG9jayk7XFxuK1xcdGlmICh6ZGV2LVxcdTAwM2VremRldikge1xcbitcXHRcXHRyYyA9IC1FUEVSTTtcXG4rXFx0XFx0Z290byBvdXRfdW5sb2NrX2t6ZGV2O1xcbitcXHR9XFxuK1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuIFxcdHN3aXRjaCAodmFsKSB7XFxuIFxcdGNhc2UgMDpcXG5AQCAtMTYzLDYgKzE2OSw5IEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbitcXG4rb3V0X3VubG9ja19remRldjpcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VremRldl9sb2NrKTtcXG4gXFx0cmV0dXJuIHJjID8gcmMgOiBjb3VudDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbmluZGV4IGEyOGYxZTk5MzYyYzFlLi5hNGIwNzE3YmE4ZDY3YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuQEAgLTE1NzIsNiArMTU3MiwxMCBAQCBpbnQgdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKHN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlLCB1MzIgZmxhZ3MsXFxuIFxcdFxcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfdG9rZW4odmRldiwgZmxhZ3MsIGFyZywgYXJnc3opO1xcbiBcXHRjYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfRE1BX0JVRjpcXG4gXFx0XFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV9kbWFfYnVmKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcXG4rXFx0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRTpcXG4rXFx0XFx0cmV0dXJuIHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcXG4rXFx0Y2FzZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQ6XFxuK1xcdFxcdHJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQodmRldiwgZmxhZ3MsIGFyZywgYXJnc3opO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRyZXR1cm4gLUVOT1RUWTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaCBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXFxuaW5kZXggZmNhOWQwZGZhYzkwZjguLmI3ZGIwNjRhNmE5NWEzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXFxuKysrIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmhcXG5AQCAtOTMsNiArOTMsMTAgQEAgaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcXG4gaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcXG4gdm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdCAgICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTtcXG4raW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncyxcXG4rXFx0XFx0XFx0XFx0ICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KTtcXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHZmaW9faW5mb19jYXAgKmNhcHMpXFxuQEAgLTEwNyw2ICsxMTEsMjAgQEAgc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbiB7fVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICB1MzIgZmxhZ3MsIHZvaWQgX191c2VyICphcmcsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRyZXR1cm4gLUVOT1RUWTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHUzMiBmbGFncywgdm9pZCBfX3VzZXIgKmFyZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRyZXR1cm4gLUVOT1RUWTtcXG4rfVxcbiAjZW5kaWZcXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZmlvX3BjaV9pc192Z2Eoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcXG5pbmRleCAwOTkwZmRiMTQ2Yjc4Mi4uMWJkMzU5YWQ2ZTRhNTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY1xcbkBAIC0xNjcsMyArMTY3LDYzIEBAIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbiBcXHRpZiAoenBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3RlcilcXG4gXFx0XFx0enBjaV9rdm1faG9vay5rdm1fdW5yZWdpc3Rlcih6ZGV2KTtcXG4gfVxcbitcXG4raW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxcbitcXHRcXHRcXHRcXHQgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuK1xcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSBmbWJfZW5hYmxlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIHNpemVvZihmbWJfZW5hYmxlKSk7XFxuK1xcdGlmIChyZXQgIT0gMSlcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHpkZXYgPSB0b196cGNpKHZkZXYtXFx1MDAzZXBkZXYpO1xcbitcXHRpZiAoIXpkZXYpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZmbWJfZW5hYmxlLCBhcmcsIHNpemVvZihmbWJfZW5hYmxlKSkpXFxuK1xcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXG4rXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbitcXHRpZiAoZm1iX2VuYWJsZS5lbmFibGVkKVxcbitcXHRcXHRyZXR1cm4genBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xcbitcXHRyZXR1cm4genBjaV9mbWJfZGlzYWJsZV9kZXZpY2UoemRldik7XFxuK31cXG4rXFxuK2ludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX3JlYWQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdCAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcXG4re1xcbitcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuK1xcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgZm1iX3JlYWQ7XFxuK1xcdHN0cnVjdCB6cGNpX2ZtYiBmbWJfYm91bmNlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gdmZpb19jaGVja19mZWF0dXJlKGZsYWdzLCBhcmdzeiwgVkZJT19ERVZJQ0VfRkVBVFVSRV9HRVQsIHNpemVvZihmbWJfcmVhZCkpO1xcbitcXHRpZiAocmV0ICE9IDEpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHR6ZGV2ID0gdG9fenBjaSh2ZGV2LVxcdTAwM2VwZGV2KTtcXG4rXFx0aWYgKCF6ZGV2KVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2Zm1iX3JlYWQsIGFyZywgc2l6ZW9mKGZtYl9yZWFkKSkpXFxuK1xcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXHRpZiAoIWZtYl9yZWFkLmRhdGEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbitcXHRpZiAoIXpkZXYtXFx1MDAzZWZtYikge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnpkZXYtXFx1MDAzZWZtYl9sb2NrKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9NU0c7XFxuK1xcdH1cXG4rXFxuK1xcdG1lbWNweShcXHUwMDI2Zm1iX2JvdW5jZSwgemRldi1cXHUwMDNlZm1iLCB6ZGV2LVxcdTAwM2VmbWJfbGVuZ3RoKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ6ZGV2LVxcdTAwM2VmbWJfbG9jayk7XFxuK1xcbitcXHRpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihmbWJfcmVhZC5kYXRhKSwgXFx1MDAyNmZtYl9ib3VuY2UsIHpkZXYtXFx1MDAzZWZtYl9sZW5ndGgpKVxcbitcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaCBiL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmhcXG5pbmRleCA1ZGU2MThhM2E1ZWVlZS4uMmIxYjY2ZWVlZjEyMzEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92ZmlvLmhcXG5AQCAtMTUzNCw2ICsxNTM0LDM1IEBAIHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX2RtYV9idWYge1xcbiAgKi9cXG4gI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX01JR19QUkVDT1BZX0lORk92MiAgMTJcXG4gXFxuKy8qKlxcbisgKiBVcG9uIFZGSU9fREVWSUNFX0ZFQVRVUkVfU0VULCBlbmFibGUgb3IgZGlzYWJsZSBGTUIgZm9yIHRoZSBWRklPIHpQQ0kgZGV2aWNlLlxcbisgKlxcbisgKiBlbmFibGVkIGlzIHRyZWF0ZWQgYXMgYSBib29sLCBzbyBhbnkgbm9uLXplcm8gdmFsdWUgZXZhbHVhdGVzIHRvIHRydWUuIE5lc3RlZFxcbisgKiBlbmFibGluZyByZXNldHMgdGhlIEZNQiBjb3VudGVycyB0byB6ZXJvLCBhbmQgbmVzdGVkIGRpc2FibGluZyBmYWlscy5cXG4rICpcXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuXFxuKyAqL1xcbisjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFIDEzXFxuK1xcbitzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9lbmFibGUge1xcbitcXHRfX3U4IGVuYWJsZWQ7XFxuK307XFxuK1xcbisvKipcXG4rICogVXBvbiBWRklPX0RFVklDRV9GRUFUVVJFX0dFVCwgcHJvdmlkZSBGTUIgcGFzc3Rocm91Z2ggZm9yIFZGSU8gelBDSSBkZXZpY2VzLlxcbisgKlxcbisgKiBUaGUgdXNlci1wcm92aWRlZCBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBmbWJfbGVuZ3RoIGxhcmdlLCB3aGVyZSBmbWJfbGVuZ3RoXFxuKyAqIGlzIHJlcG9ydGVkIGluIFZGSU9fREVWSUNFX0lORk9fQ0FQX1pQQ0lfQkFTRS5cXG4rICpcXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuIGVycm5vPT1FTk9NU0dcXG4rICogd2hlbiB0aGUgRk1CIGlzIG5vdCBlbmFibGVkLlxcbisgKi9cXG4rI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQgMTRcXG4rXFxuK3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQge1xcbitcXHRfX2FsaWduZWRfdTY0IGRhdGE7XFxuK307XFxuK1xcbiAvKiAtLS0tLS0tLSBBUEkgZm9yIFR5cGUxIFZGSU8gSU9NTVUgLS0tLS0tLS0gKi9cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMDo0Ny45MDk3NDY1MTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzMxOTcxMjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZVwiLFxuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkXCIsXG4gICAgXCJ6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHR3byBuZXcgVkZJTyBkZXZpY2UgZmVhdHVyZXMgKFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFIGFuZCBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQpIGZvciBzMzkweCBhcmNoaXRlY3R1cmUuIFRoZXNlIGZlYXR1cmVzIGFsbG93IHVzZXJzcGFjZSB0byBlbmFibGUvZGlzYWJsZSBhbmQgcmVhZCB0aGUgRnVuY3Rpb24gTWVhc3VyZW1lbnQgQmxvY2sgKEZNQikgb2YgYSB6UENJIGRldmljZS4gSXQgYWRkcyBjb3JyZXNwb25kaW5nIGlvY3RsIGhhbmRsZXJzIGFuZCBjb3JlIGxvZ2ljIHRvIHJlLWVuYWJsZSBGTUIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBleHBvc2luZyBuZXcgaW9jdGxzIHRvIHVzZXJzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMTFmMDM4MmFjZjJjNTQ5NGM0ZDM5Nzc0MzA0ZWQzN2FmMGFlNjY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjA6MjA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmhcbmluZGV4IDVkY2YzNWYwZjMyNWY1Li42NTAxNGU1MmQ1NTk2MCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaFxuKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oXG5AQCAtMzIzLDYgKzMyMyw3IEBAIHZvaWQgenBjaV9yZW1vdmVfcGFyZW50X21zaV9kb21haW4oc3RydWN0IHpwY2lfYnVzICp6YnVzKTtcbiAvKiBGTUIgKi9cbiBpbnQgenBjaV9mbWJfZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKik7XG4gaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcbitpbnQgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldik7XG4gXG4gLyogRGVidWcgKi9cbiBpbnQgenBjaV9kZWJ1Z19pbml0KHZvaWQpO1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9wY2kvcGNpLmMgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXG5pbmRleCAzOWJkMmFkZmMyNDBmZC4uMWViNmFhNzcyZWIzZjMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvcGNpL3BjaS5jXG4rKysgYi9hcmNoL3MzOTAvcGNpL3BjaS5jXG5AQCAtMTczLDYgKzE3Myw4IEBAIGludCB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcbiBcdGlmICh6ZGV2LVx1MDAzZWZtYiB8fCBzaXplb2YoKnpkZXYtXHUwMDNlZm1iKSBcdTAwM2MgemRldi1cdTAwM2VmbWJfbGVuZ3RoKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC0yMTEsNiArMjEzLDggQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHN0cnVjdCB6cGNpX2ZpYiBmaWIgPSB7MH07XG4gXHR1OCBjYywgc3RhdHVzO1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcbiBcdGlmICghemRldi1cdTAwM2VmbWIpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuQEAgLTIyNyw2ICsyMzEsMzQgQEAgaW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdH1cbiBcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbitFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSk7XG4rXG4raW50IHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4re1xuK1x0dTY0IHJlcSA9IFpQQ0lfQ1JFQVRFX1JFUSh6ZGV2LVx1MDAzZWZoLCAwLCBaUENJX01PRF9GQ19TRVRfTUVBU1VSRSk7XG4rXHRzdHJ1Y3QgenBjaV9maWIgZmliID0gezB9O1xuK1x0dTggY2MsIHN0YXR1cztcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4rXG4rXHRpZiAoIXpkZXYtXHUwMDNlZm1iKVxuK1x0XHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcbitcbitcdGZpYi5nZCA9IHpkZXYtXHUwMDNlZ2lzYTtcbitcdGNjID0genBjaV9tb2RfZmMocmVxLCBcdTAwMjZmaWIsIFx1MDAyNnN0YXR1cyk7IC8qIERpc2FibGUgZnVuY3Rpb24gbWVhc3VyZW1lbnQgKi9cbitcbitcdC8qIFVubGlrZSBpbiB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSgpLCBjYyA9PSAzIGlzIG5vdCBhIHZhbGlkIHN0YXRlIGhlcmVcbitcdCAqIGJlY2F1c2Ugd2UgYXJlIHJlLWVuYWJsaW5nIGZ1bmN0aW9uIG1lYXN1cmVtZW50IGZvciB0aGUgc2FtZSBmdW5jdGlvblxuK1x0ICogaGFuZGxlLlxuK1x0ICovXG4rXHRpZiAoY2MpXG4rXHRcdHJldHVybiAtRUlPO1xuK1xuK1x0a21lbV9jYWNoZV9mcmVlKHpkZXZfZm1iX2NhY2hlLCB6ZGV2LVx1MDAzZWZtYik7XG4rXHR6ZGV2LVx1MDAzZWZtYiA9IE5VTEw7XG4rXHRyZXR1cm4genBjaV9mbWJfZW5hYmxlX2RldmljZSh6ZGV2KTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKTtcbiBcbiBzdGF0aWMgaW50IHpwY2lfY2ZnX2xvYWQoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBpbnQgb2Zmc2V0LCB1MzIgKnZhbCwgdTggbGVuKVxuIHtcbkBAIC02MzksNyArNjcxLDkgQEAgaW50IHBjaWJpb3NfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG1hc2spXG4gXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXYgPSB0b196cGNpKHBkZXYpO1xuIFxuIFx0enBjaV9kZWJ1Z19pbml0X2RldmljZSh6ZGV2LCBkZXZfbmFtZShcdTAwMjZwZGV2LVx1MDAzZWRldikpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiBcdHpwY2lfZm1iX2VuYWJsZV9kZXZpY2UoemRldik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXG4gXHRyZXR1cm4gcGNpX2VuYWJsZV9yZXNvdXJjZXMocGRldiwgbWFzayk7XG4gfVxuQEAgLTY0OCw3ICs2ODIsOSBAQCB2b2lkIHBjaWJpb3NfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4ge1xuIFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2ID0gdG9fenBjaShwZGV2KTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4gXHR6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbiBcdHpwY2lfZGVidWdfZXhpdF9kZXZpY2UoemRldik7XG4gfVxuIFxuQEAgLTcyOSw5ICs3NjUsMTMgQEAgaW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdH1cbiBcbiBcdHJjID0genBjaV9pb21tdV9yZWdpc3Rlcl9pb2F0KHpkZXYsIFx1MDAyNnN0YXR1cyk7XG4tXHRpZiAocmMpXG4rXHRpZiAocmMpIHtcbiBcdFx0enBjaV9kaXNhYmxlX2RldmljZSh6ZGV2KTtcbitcdFx0cmV0dXJuIHJjO1xuK1x0fVxuIFxuK1x0Z3VhcmQobXV0ZXgpKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuK1x0enBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xuIFx0cmV0dXJuIHJjO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX3JlZW5hYmxlX2RldmljZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2lfZGVidWcuYyBiL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmNcbmluZGV4IGM3ZWQ3YmYyNTRiNWU5Li4yM2ViN2U3MmM4NzBkYiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmNcbisrKyBiL2FyY2gvczM5MC9wY2kvcGNpX2RlYnVnLmNcbkBAIC0xNTMsNiArMTUzLDEyIEBAIHN0YXRpYyBzc2l6ZV90IHBjaV9wZXJmX3NlcV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4gXHRpZiAocmMpXG4gXHRcdHJldHVybiByYztcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2emRldi1cdTAwM2VremRldl9sb2NrKTtcbitcdGlmICh6ZGV2LVx1MDAzZWt6ZGV2KSB7XG4rXHRcdHJjID0gLUVQRVJNO1xuK1x0XHRnb3RvIG91dF91bmxvY2tfa3pkZXY7XG4rXHR9XG4rXG4gXHRtdXRleF9sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuIFx0c3dpdGNoICh2YWwpIHtcbiBcdGNhc2UgMDpcbkBAIC0xNjMsNiArMTY5LDkgQEAgc3RhdGljIHNzaXplX3QgcGNpX3BlcmZfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4rXG4rb3V0X3VubG9ja19remRldjpcbitcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWt6ZGV2X2xvY2spO1xuIFx0cmV0dXJuIHJjID8gcmMgOiBjb3VudDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggYTI4ZjFlOTkzNjJjMWUuLmE0YjA3MTdiYThkNjdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtMTU3Miw2ICsxNTcyLDEwIEBAIGludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcbiBcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV90b2tlbih2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4gXHRjYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfRE1BX0JVRjpcbiBcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfZmVhdHVyZV9kbWFfYnVmKHZkZXYsIGZsYWdzLCBhcmcsIGFyZ3N6KTtcbitcdGNhc2UgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEU6XG4rXHRcdHJldHVybiB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZSh2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4rXHRjYXNlIFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRDpcbitcdFx0cmV0dXJuIHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZCh2ZGV2LCBmbGFncywgYXJnLCBhcmdzeik7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVOT1RUWTtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaCBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oXG5pbmRleCBmY2E5ZDBkZmFjOTBmOC4uYjdkYjA2NGE2YTk1YTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaFxuKysrIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmhcbkBAIC05Myw2ICs5MywxMCBAQCBpbnQgdmZpb19wY2lfaW5mb196ZGV2X2FkZF9jYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdFx0XHRcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcbiBpbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xuIHZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXG4rXHRcdFx0XHQgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7XG4raW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsIHUzMiBmbGFncyxcbitcdFx0XHRcdCAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIFx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19pbmZvX2NhcCAqY2FwcylcbkBAIC0xMDcsNiArMTExLDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZmaW9fcGNpX3pkZXZfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCB2ZmlvX3BjaV96ZGV2X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4ge31cbitcbitzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X2ZlYXR1cmVfZm1iX2VuYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4rXHRcdFx0XHRcdFx0ICAgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLFxuK1x0XHRcdFx0XHRcdCAgIHNpemVfdCBhcmdzeilcbit7XG4rXHRyZXR1cm4gLUVOT1RUWTtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbitcdFx0XHRcdFx0XHQgdTMyIGZsYWdzLCB2b2lkIF9fdXNlciAqYXJnLFxuK1x0XHRcdFx0XHRcdCBzaXplX3QgYXJnc3opXG4re1xuK1x0cmV0dXJuIC1FTk9UVFk7XG4rfVxuICNlbmRpZlxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCB2ZmlvX3BjaV9pc192Z2Eoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY1xuaW5kZXggMDk5MGZkYjE0NmI3ODIuLjFiZDM1OWFkNmU0YTU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jXG5AQCAtMTY3LDMgKzE2Nyw2MyBAQCB2b2lkIHZmaW9fcGNpX3pkZXZfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcdGlmICh6cGNpX2t2bV9ob29rLmt2bV91bnJlZ2lzdGVyKVxuIFx0XHR6cGNpX2t2bV9ob29rLmt2bV91bnJlZ2lzdGVyKHpkZXYpO1xuIH1cbitcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LCB1MzIgZmxhZ3MsXG4rXHRcdFx0XHQgICAgIHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcbit7XG4rXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XG4rXHRzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9lbmFibGUgZm1iX2VuYWJsZTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSB2ZmlvX2NoZWNrX2ZlYXR1cmUoZmxhZ3MsIGFyZ3N6LCBWRklPX0RFVklDRV9GRUFUVVJFX1NFVCwgc2l6ZW9mKGZtYl9lbmFibGUpKTtcbitcdGlmIChyZXQgIT0gMSlcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdHpkZXYgPSB0b196cGNpKHZkZXYtXHUwMDNlcGRldik7XG4rXHRpZiAoIXpkZXYpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNmZtYl9lbmFibGUsIGFyZywgc2l6ZW9mKGZtYl9lbmFibGUpKSlcbitcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXG4rXHRndWFyZChtdXRleCkoXHUwMDI2emRldi1cdTAwM2VmbWJfbG9jayk7XG4rXG4rXHRpZiAoZm1iX2VuYWJsZS5lbmFibGVkKVxuK1x0XHRyZXR1cm4genBjaV9mbWJfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xuK1x0cmV0dXJuIHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHpkZXYpO1xuK31cbitcbitpbnQgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxuK1x0XHRcdFx0ICAgdm9pZCBfX3VzZXIgKmFyZywgc2l6ZV90IGFyZ3N6KVxuK3tcbitcdHN0cnVjdCB6cGNpX2RldiAqemRldjtcbitcdHN0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX3JlYWQgZm1iX3JlYWQ7XG4rXHRzdHJ1Y3QgenBjaV9mbWIgZm1iX2JvdW5jZTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSB2ZmlvX2NoZWNrX2ZlYXR1cmUoZmxhZ3MsIGFyZ3N6LCBWRklPX0RFVklDRV9GRUFUVVJFX0dFVCwgc2l6ZW9mKGZtYl9yZWFkKSk7XG4rXHRpZiAocmV0ICE9IDEpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHR6ZGV2ID0gdG9fenBjaSh2ZGV2LVx1MDAzZXBkZXYpO1xuK1x0aWYgKCF6ZGV2KVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZmbWJfcmVhZCwgYXJnLCBzaXplb2YoZm1iX3JlYWQpKSlcbitcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXHRpZiAoIWZtYl9yZWFkLmRhdGEpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcdGlmICghemRldi1cdTAwM2VmbWIpIHtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnpkZXYtXHUwMDNlZm1iX2xvY2spO1xuK1x0XHRyZXR1cm4gLUVOT01TRztcbitcdH1cbitcbitcdG1lbWNweShcdTAwMjZmbWJfYm91bmNlLCB6ZGV2LVx1MDAzZWZtYiwgemRldi1cdTAwM2VmbWJfbGVuZ3RoKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtcbitcbitcdGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGZtYl9yZWFkLmRhdGEpLCBcdTAwMjZmbWJfYm91bmNlLCB6ZGV2LVx1MDAzZWZtYl9sZW5ndGgpKVxuK1x0XHRyZXR1cm4gLUVGQVVMVDtcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxuaW5kZXggNWRlNjE4YTNhNWVlZWUuLjJiMWI2NmVlZWYxMjMxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaFxuQEAgLTE1MzQsNiArMTUzNCwzNSBAQCBzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV9kbWFfYnVmIHtcbiAgKi9cbiAjZGVmaW5lIFZGSU9fREVWSUNFX0ZFQVRVUkVfTUlHX1BSRUNPUFlfSU5GT3YyICAxMlxuIFxuKy8qKlxuKyAqIFVwb24gVkZJT19ERVZJQ0VfRkVBVFVSRV9TRVQsIGVuYWJsZSBvciBkaXNhYmxlIEZNQiBmb3IgdGhlIFZGSU8gelBDSSBkZXZpY2UuXG4rICpcbisgKiBlbmFibGVkIGlzIHRyZWF0ZWQgYXMgYSBib29sLCBzbyBhbnkgbm9uLXplcm8gdmFsdWUgZXZhbHVhdGVzIHRvIHRydWUuIE5lc3RlZFxuKyAqIGVuYWJsaW5nIHJlc2V0cyB0aGUgRk1CIGNvdW50ZXJzIHRvIHplcm8sIGFuZCBuZXN0ZWQgZGlzYWJsaW5nIGZhaWxzLlxuKyAqXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuXG4rICovXG4rI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSAxM1xuK1xuK3N0cnVjdCB2ZmlvX2RldmljZV9mZWF0dXJlX3pwY2lfZm1iX2VuYWJsZSB7XG4rXHRfX3U4IGVuYWJsZWQ7XG4rfTtcbitcbisvKipcbisgKiBVcG9uIFZGSU9fREVWSUNFX0ZFQVRVUkVfR0VULCBwcm92aWRlIEZNQiBwYXNzdGhyb3VnaCBmb3IgVkZJTyB6UENJIGRldmljZXMuXG4rICpcbisgKiBUaGUgdXNlci1wcm92aWRlZCBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBmbWJfbGVuZ3RoIGxhcmdlLCB3aGVyZSBmbWJfbGVuZ3RoXG4rICogaXMgcmVwb3J0ZWQgaW4gVkZJT19ERVZJQ0VfSU5GT19DQVBfWlBDSV9CQVNFLlxuKyAqXG4rICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBhbmQgZXJybm8gc2V0IGFwcHJvcHJpYXRlbHkgb24gZXJyb3IuIGVycm5vPT1FTk9NU0dcbisgKiB3aGVuIHRoZSBGTUIgaXMgbm90IGVuYWJsZWQuXG4rICovXG4rI2RlZmluZSBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQUQgMTRcbitcbitzdHJ1Y3QgdmZpb19kZXZpY2VfZmVhdHVyZV96cGNpX2ZtYl9yZWFkIHtcbitcdF9fYWxpZ25lZF91NjQgZGF0YTtcbit9O1xuK1xuIC8qIC0tLS0tLS0tIEFQSSBmb3IgVHlwZTEgVkZJTyBJT01NVSAtLS0tLS0tLSAqL1xuIFxuIC8qKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjA6NDcuOTA5NzQ4MDkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQyMDU3OTY4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQbGFuIGZvciBOZXcgVkZJTyBGZWF0dXJlcyBvbiBzMzkwKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBuZXcgcGF0Y2ggaGVyZS4gSXQncyB0b3VjaGluZyBib3RoIHMzOTAgUENJIGNvZGUgYW5kIFZGSU8gUENJIGNvZGUg4oCTIHNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgdHdvIG5vdmVsIFZGSU8gZGV2aWNlIGZlYXR1cmVzOiBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9FTkFCTEVgIGFuZCBgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEYC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZXNlIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCBmaWxlIGFuZCBtYXAgdG8gY2FsbHMgdG8gYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCBhbmQgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSB0byBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBhbmQgYHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlYCBmdW5jdGlvbnMsIGFuZCByZWFkIGZyb20gYHpkZXYtXHUwMDNlZm1iYCwgc28gdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgZGV2aWNlIG1lbW9yeSBibG9jayBjb250cm9sLlxuXG5UaGUgcGF0Y2ggYWxzbyBoYXMgY2hhbmdlcyBpbiBgYXJjaC9zMzkwL3BjaS9wY2kuY2AsIHNwZWNpZmljYWxseSBmb3IgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAsIHdoaWNoIHN1Z2dlc3RzIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGlzIGRlZXBseSBpbnZvbHZlZC5cblxuVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBhZGRpdGlvbiDigJMgbmV3IGlvY3RsIGZlYXR1cmVzIGZvciBWRklPIGRldmljZXMgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBHaXZlbiB0aGF0IGl0IHRvdWNoZXMgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBWRklPLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmUuIFdlIG5lZWQgdG8gZXhwb3NlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBoeXBlcnZpc29yLCB0aGUgVkZJTyBkcml2ZXIsIGFuZCB0aGUgczM5MCBoYXJkd2FyZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGUgY29kZSByZXNpZGVzIGluIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuY2AgYW5kIGBhcmNoL3MzOTAvcGNpL3BjaS5jYC4gVGhlIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCBwYXJ0IGlzIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBjb250aW5nZW50IG9uIGBDT05GSUdfUENJYCBiZWluZyBlbmFibGVkIGZvciBzMzkwLiBGb3IgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCdzIHRpZWQgdG8gYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBmb3IgaXRzIGNvbXBpbGF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgdG8gYmUgY2VydGFpbiBhbmQgZ2V0IGEgY29ycmVjdCBidWlsZCBzZXR1cCBiZWZvcmUgSSBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc4OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIxOjEyLjExNTU0NjYwOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc4ODI0Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX3pkZXYub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xcbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGU6NDp2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSB2ZmlvX3BjaV96ZGV2Lm9cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTUtdmZpby1wY2ktY29yZS0kKENPTkZJR19WRklPX1BDSV9ETUFCVUYpICs9IHZmaW9fcGNpX2RtYWJ1Zi5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01MzQ9aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU3OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1ODA6XFx0cmV0ID0gdmZpb19wY2lfemRldl9vcGVuX2RldmljZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01ODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oPTkyPWludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTkzLVxcdFxcdFxcdFxcdHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDo5NDppbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTk1LXZvaWQgdmZpb19wY2lfemRldl9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oPTEwMT1zdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtMTA2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oOjEwNzpzdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV96ZGV2X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC0xMDgte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM9MTE2PWludCB2ZmlvX3BjaV9pbmZvX3pkZXZfYWRkX2NhcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTQzLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfemRldi5jOjE0NDppbnQgdmZpb19wY2lfemRldl9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTQ1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6MTUuMzk0Mzc2MjI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI2MTc3ODM5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBWRklPLVBDSS1aREVWLUtWTSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gIGlzIGEgcmVxdWlyZW1lbnQgaGVyZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgbGV0IG1lIGp1c3QgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHJlY2FsbCB0aGF0IGB2ZmlvX3BjaV96ZGV2LmNgICpzaG91bGQqIGJlIGNvbXBpbGVkIHdoZW4gYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAgaXMgZW5hYmxlZCwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB0aGF0LiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgYFZGSU9fUENJX1pERVZfS1ZNYCBhcmUgbGFpZCBvdXQsIHNvIHRoYXQncyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBpdHMgaW5jbHVzaW9uLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgc29saWQgYW5kIEknbSBub3QgbWlzc2luZyBhbnkgc3VidGxldGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ5OSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIxOjM4LjAxMjE2MjIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzUzMjQwMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NDc6Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6MzkuODg3NDkwNjE2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2ODQ2MzYzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIERldmljZSBSZS1FbmFibGluZyBvbiBzMzkwIEFyY2hpdGVjdHVyZSoqXG5cbkFscmlnaHQsIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCBob3cgd2UncmUgZGVhbGluZyB3aXRoIGRldmljZSByZS1lbmFibGluZyBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIFBDSSBjb250ZXh0LiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBhcmNoL3MzOTAvcGNpL3BjaS5jYCBmaWxlLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIFBDSSBkcml2ZXIgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGF0IGFyY2hpdGVjdHVyZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgUENJIGluaXRpYWxpemF0aW9uIGFuZCBkZXZpY2UgZW51bWVyYXRpb24gcm91dGluZXMgdGhlcmUsIGJ1dCBJJ20gbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIHRoZSByZS1lbmFibGUgbG9naWMuXG5cbkdpdmVuIHRoZSBwaHJhc2luZywgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgc291bmRzIGxpa2UgaXQgaG9sZHMgdGhlIGtleSB0byB0aGUgcmUtZW5hYmxpbmcgZnVuY3Rpb25hbGl0eS4gVGhpcyBmdW5jdGlvbiBuYW1lIGlzIGhpZ2hseSBzdWdnZXN0aXZlLCBlc3BlY2lhbGx5IHdpdGggXCJ6cGNpXCIgd2hpY2ggdGVsbHMgbWUgaXQgd2lsbCBkZWFsIHdpdGggelBDSSBkZXZpY2UgaGFuZGxpbmcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIHRoZSBGTUIsIHdoaWNoLCBrbm93aW5nIHMzOTAsIEkgaW1tZWRpYXRlbHkgYXNzdW1lIHBlcnRhaW5zIHRvIHRoZSBGYWNpbGl0eSBNYW5hZ2VtZW50IEJsb2NrLCBpbXBseWluZyBpdCdzIHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIHN5c3RlbS1sZXZlbCByZXNvdXJjZSBvciBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgb3JjaGVzdHJhdGVzIHRoZSBkZXZpY2UgcmUtZW5hYmxlIG9wZXJhdGlvbiwgcGVyaGFwcyBmb2xsb3dpbmcgYSBob3RwbHVnIGV2ZW50LCBhIGZpcm13YXJlIHVwZGF0ZSwgb3IgbWF5YmUgYSByZWNvdmVyeSBzY2VuYXJpby4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYCBhbmQgc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBQQ0kgaW5mcmFzdHJ1Y3R1cmUsIGxvb2tpbmcgZm9yIGFueSBlcnJvciBoYW5kbGluZywgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMsIG9yIGFueSBzcGVjaWFsIHMzOTAtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgbGlrZSBJL08gYWRkcmVzcyBzcGFjZSBtYXBwaW5nIG9yIGludGVycnVwdCByb3V0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODk5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6NDMuNTU1OTU2MzU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDg4ODU2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaD0zMjU9aW50IHpwY2lfZm1iX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmg6MzI2OmludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmgtMzI3LVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYz0yMzQ9RVhQT1JUX1NZTUJPTF9HUEwoenBjaV9mbWJfZGlzYWJsZV9kZXZpY2UpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjM1LVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6MjM2OmludCB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjM3LXtcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjYwLX1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jOjI2MTpFWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtMjYyLVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYz03NTI9aW50IHpwY2lfcmVlbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqemRldilcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmMtNzczLVxcdGd1YXJkKG11dGV4KShcXHUwMDI2emRldi1cXHUwMDNlZm1iX2xvY2spO1xcbmFyY2gvczM5MC9wY2kvcGNpLmM6Nzc0OlxcdHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc3NS1cXHRyZXR1cm4gcmM7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3pkZXYuYz0xNzE9aW50IHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwgdTMyIGZsYWdzLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTkxLVxcdGlmIChmbWJfZW5hYmxlLmVuYWJsZWQpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmM6MTkyOlxcdFxcdHJldHVybiB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2UoemRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMtMTkzLVxcdHJldHVybiB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZSh6ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjE6NDUuMjY0ODQ4Nzg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI3NTg0Njg0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPIFBDSSBEZXZpY2UgRmVhdHVyZSBBZGRpdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZ2V0dGluZyBhdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gSXQncyBpbnRyb2R1Y2luZyBuZXcgZmVhdHVyZXMsIGBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRWAgYW5kIGBWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX1JFQURgLCBhbmQgdGhleSdyZSBob29rZWQgdXAgdG8gaW9jdGxzIGZvciBWRklPIFBDSSBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgaW50ZXJlc3QgaXMgcGlxdWVkIC0gc291bmRzIGxpa2Ugd2UncmUgZW5hYmxpbmcgc29tZSBmb3JtIG9mIGZ1bmN0aW9uYWxpdHkgb3IgYWNjZXNzIHJlbGF0ZWQgdG8gRmxleGlibGUgTWVtb3J5IEJ1ZmZlcnMgb24gelBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaGVyZSBhcmUgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCwgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAsIGFuZCBhbHNvIGB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VgLCB3aGljaCB3aWxsIGxpa2VseSBiZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGVzZSB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgaW1wbGljYXRpb25zLlxuXG5UaGUgY29uZmlncyBpbnZvbHZlZCBhcmUgYFZGSU9fUENJYCwgYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGltcGxpY2l0bHksIGBQQ0lgICh3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgczM5MCBQQ0kgY29udGV4dCkuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIFdhaXQsIGhhbmcgb24uLi4gYFZGSU9fUENJX1pERVZfS1ZNYCBpcyBhIGJvb2xlYW4gY29uZmlnLCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIGVpdGhlciBvbiBvciBvZmYgYW5kIGRldGVybWluZXMgZW5hYmxlbWVudCBvciBub3QuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VwcG9ydGluZyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOyBJIG5lZWQgdG8gZXhwbG9yZSB0aGUgb3RoZXIgY29uZmlnIG9wdGlvbnMgYXZhaWxhYmxlLiBUaGF0J3MgbmV4dCBvbiBteSBsaXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTIwLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIxOjU4LjAyMzMxOTE4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3ODk3MTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTI9bWVudSBcXFwiVkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1OmNvbmZpZyBWRklPX1BDSV9DT1JFXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy05LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxMDpjb25maWcgVkZJT19QQ0lfSU5UWFxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMS1cXHRkZWZfYm9vbCB5IGlmICFTMzkwXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTMtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjE0OmNvbmZpZyBWRklPX1BDSVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTIzPWlmIFZGSU9fUENJXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjI0OmNvbmZpZyBWRklPX1BDSV9WR0FcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiR2VuZXJpYyBWRklPIFBDSSBzdXBwb3J0IGZvciBWR0EgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MzQ6Y29uZmlnIFZGSU9fUENJX0lHRFxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0zNS1cXHRib29sIFxcXCJHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDYtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cXHRib29sIFxcXCJWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNTctXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU4OmNvbmZpZyBWRklPX1BDSV9ETUFCVUZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNTktXFx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFxcdTAwMjZcXHUwMDI2IFBDSV9QMlBETUEgXFx1MDAyNlxcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjI6MDAuMDAyMjk1Njc2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNDUyMjQxNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWRklPLVBDSSBaLURldmljZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGBWRklPX1BDSV9aREVWX0tWTWAsIHdoaWNoLCBvZiBjb3Vyc2UsIGltcGxpZXMgYFZGSU9fUENJYCBpcyBhbHNvIGluIHBsYXkuIE15IHByaW1hcnkgaW50ZXJlc3Qgbm93IGlzIHRvIHNlZSBpZiB0aGlzIGlzIGFsbCB0aGF0J3MgaW52b2x2ZWQsIGNvbmZpZ3VyYXRpb24td2lzZS5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIExldCdzIHN0YXJ0IHdpdGggYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfZW5hYmxlYCwgYHZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZGAsIGFuZCBgenBjaV9mbWJfcmVlbmFibGVfZGV2aWNlYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB3YXJyYW50IGF0dGVudGlvbj9cblxuQWxyaWdodCwgSSBzZWUgdGhhdCBib3RoIGB6cGNpX2ZtYl9kaXNhYmxlX2RldmljZWAgYW5kIGB6cGNpX2ZtYl9lbmFibGVfZGV2aWNlYCBoYXZlIGJlZW4gbW9kaWZpZWQgdG8gaW5jbHVkZSBgbG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ6ZGV2LVx1MDAzZWZtYl9sb2NrKTtgLiBJbnRlcmVzdGluZy4gQW5kIGB6cGNpX3JlZW5hYmxlX2RldmljZWAgbm93IGNhbGxzIGB6cGNpX2ZtYl9yZWVuYWJsZV9kZXZpY2VgLiBJIHdhbnQgdG8gaW52ZXN0aWdhdGUgYHpwY2lfcmVlbmFibGVfZGV2aWNlYCBmdXJ0aGVyIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAwOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMjoyMi40NTQ1Mzk0NDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjY4MjU0MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienBjaV9yZWVuYWJsZV9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BjaS5oPTIyNz1pbnQgenBjaV9lbmFibGVfZGV2aWNlKHN0cnVjdCB6cGNpX2RldiAqKTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGNpLmg6MjI4OmludCB6cGNpX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpO1xcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wY2kuaC0yMjktaW50IHpwY2lfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICopO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz00MzA9c3RhdGljIGludCBrdm1fczM5MF9wY2lfcmVnaXN0ZXJfa3ZtKHZvaWQgKm9wYXF1ZSwgc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy00NzgtXFxuYXJjaC9zMzkwL2t2bS9wY2kuYzo0Nzk6XFx0cmMgPSB6cGNpX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTQ4MC1cXHRpZiAocmMpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTUwNT1zdGF0aWMgdm9pZCBrdm1fczM5MF9wY2lfdW5yZWdpc3Rlcl9rdm0odm9pZCAqb3BhcXVlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy01NDEtXFxuYXJjaC9zMzkwL2t2bS9wY2kuYzo1NDI6XFx0enBjaV9yZWVuYWJsZV9kZXZpY2UoemRldik7XFxuYXJjaC9zMzkwL2t2bS9wY2kuYy01NDMtXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaS5jPTc1MD1FWFBPUlRfU1lNQk9MX0dQTCh6cGNpX2VuYWJsZV9kZXZpY2UpO1xcbmFyY2gvczM5MC9wY2kvcGNpLmMtNzUxLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6NzUyOmludCB6cGNpX3JlZW5hYmxlX2RldmljZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXFxuYXJjaC9zMzkwL3BjaS9wY2kuYy03NTMte1xcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYy03NzYtfVxcbmFyY2gvczM5MC9wY2kvcGNpLmM6Nzc3OkVYUE9SVF9TWU1CT0xfR1BMKHpwY2lfcmVlbmFibGVfZGV2aWNlKTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTc3OC1cXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpLmM9ODI2PWludCB6cGNpX2hvdF9yZXNldF9kZXZpY2Uoc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2kuYy04NDUtXFxuYXJjaC9zMzkwL3BjaS9wY2kuYzo4NDY6XFx0cmMgPSB6cGNpX3JlZW5hYmxlX2RldmljZSh6ZGV2KTtcXG5hcmNoL3MzOTAvcGNpL3BjaS5jLTg0Ny1cXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX3N5c2ZzLmM9NTU9c3RhdGljIGludCBfZG9fcmVjb3ZlcihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHpwY2lfZGV2ICp6ZGV2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfc3lzZnMuYy03My1cXG5hcmNoL3MzOTAvcGNpL3BjaV9zeXNmcy5jOjc0OlxcdHJldCA9IHpwY2lfcmVlbmFibGVfZGV2aWNlKHpkZXYpO1xcbmFyY2gvczM5MC9wY2kvcGNpX3N5c2ZzLmMtNzUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjIyOjI0LjQ4MTM2OTk5M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjYxNzQ2ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYHpwY2lfcmVlbmFibGVfZGV2aWNlYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBJdCdzIGNhbGxlZCBmcm9tIGEgZmV3IGRpZmZlcmVudCBwbGFjZXM6IGBrdm1fczM5MF9wY2lfcmVnaXN0ZXJfa3ZtYCwgYGt2bV9zMzkwX3BjaV91bnJlZ2lzdGVyX2t2bWAsIGB6cGNpX2hvdF9yZXNldF9kZXZpY2VgLCBhbmQsIGltcG9ydGFudGx5LCBgX2RvX3JlY292ZXJgLiBUaGF0IHBhdHRlcm4gcmFpc2VzIG15IGV5ZWJyb3dzIGEgYml0OyBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0cyBtZWFuIGRpZmZlcmVudCBwb3RlbnRpYWwgc3RhdGVzIGFuZCBlZGdlIGNhc2VzIHRvIGNvbnNpZGVyLiBEZWZpbml0ZWx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGZhY3QgdGhhdCBpdCdzIGludHJvZHVjaW5nICp0d28qIG5ldyBWRklPIGRldmljZSBmZWF0dXJlcyDigJMgYFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfRU5BQkxFYCBhbmQgYFZGSU9fREVWSUNFX0ZFQVRVUkVfWlBDSV9GTUJfUkVBRGAg4oCTIHNwZWNpZmljYWxseSBmb3IgczM5MHgsIGFuZCBleHBvc2luZyBuZXcgaW9jdGwgaGFuZGxlcnMsIHNjcmVhbXMgXCJwb3RlbnRpYWwgZm9yIGludGVyZXN0aW5nIGZ1enppbmcgY292ZXJhZ2UuXCIgVGhlc2UgbmV3IGZlYXR1cmVzIGFyZSBjb25jZXJuZWQgd2l0aCBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHJlYWRpbmcgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UsIHdoaWNoIGlzIG5ldywgZXNwZWNpYWxseSBmb3IgdXNlcnNwYWNlIGNvbnRyb2wuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHMsIHBhcnRpY3VsYXJseSB0aG9zZSByZWxhdGVkIHRvIEZNQiByZS1lbmFibGVtZW50OiBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVgLCBgdmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9yZWFkYCwgYW5kIGVzcGVjaWFsbHkgYHpwY2lfZm1iX3JlZW5hYmxlX2RldmljZWAuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhvc2UgaW9jdGxzIGludGVyYWN0IHdpdGggdGhlIHJlLWVuYWJsZSBsb2dpYy5cblxuQWxzbywgSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llczogYFZGSU9fUENJX1pERVZfS1ZNYCBhbmQgYFZGSU9fUENJYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHByZWNvbmRpdGlvbnMgZm9yIHRoaXMgY29kZSB0byBiZSBhY3RpdmUuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyB0byB0aGUgRk1CIGR1cmluZyB0aGUgZW5hYmxlL2Rpc2FibGUgY3ljbGUsIGFuZCBob3cgdGhhdCBzdGF0ZSBpcyBtYW5hZ2VkLiBUaGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB1c2Vyc3BhY2UgY29udHJvbCBhbmQgdGhlIGtlcm5lbCdzIGludGVybmFsIHN0YXRlIGlzIHdoZXJlIHRoZSBtb3N0IGludGVyZXN0aW5nIGJ1Z3MgdXN1YWxseSBoaWRlLiBUaGlzIHBhdGNoIHByZXNlbnRzIGEgbmV3IGF0dGFjayBzdXJmYWNlLCBhbmQgaXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IGV4cGxvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjc0LCJPdXRwdXRUb2tlbnMiOjIwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyMjozMS4xNDMxMTg1NDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjMzNjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZFwiLFxuICAgIFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfemRldl9mZWF0dXJlX2ZtYl9lbmFibGVcIixcbiAgICBcInZmaW9fcGNpX3pkZXZfZmVhdHVyZV9mbWJfcmVhZFwiLFxuICAgIFwienBjaV9mbWJfcmVlbmFibGVfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IFZGSU8gZGV2aWNlIGZlYXR1cmVzIChWRklPX0RFVklDRV9GRUFUVVJFX1pQQ0lfRk1CX0VOQUJMRSBhbmQgVkZJT19ERVZJQ0VfRkVBVFVSRV9aUENJX0ZNQl9SRUFEKSBmb3IgczM5MHggYXJjaGl0ZWN0dXJlLiBUaGVzZSBmZWF0dXJlcyBhbGxvdyB1c2Vyc3BhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYW5kIHJlYWQgdGhlIEZ1bmN0aW9uIE1lYXN1cmVtZW50IEJsb2NrIChGTUIpIG9mIGEgelBDSSBkZXZpY2UuIEl0IGFkZHMgY29ycmVzcG9uZGluZyBpb2N0bCBoYW5kbGVycyBhbmQgY29yZSBsb2dpYyB0byByZS1lbmFibGUgRk1CLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZXhwb3NpbmcgbmV3IGlvY3RscyB0byB1c2Vyc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow2bt29[1] Phase: Succeeded StartedAt: 2026-06-26 20:24:30 +0000 UTC FinishedAt: 2026-06-26 20:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 20:24:30 +0000 UTC FinishedAt: 2026-06-26 20:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2] Phase: Succeeded StartedAt: 2026-06-26 20:24:30 +0000 UTC FinishedAt: 2026-06-26 22:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-26 20:24:30 +0000 UTC FinishedAt: 2026-06-26 22:07:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:24:30 +0000 UTC FinishedAt: 2026-06-26 20:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:24:30 +0000 UTC FinishedAt: 2026-06-26 20:24:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-workflow2bt29/series-workflow2bt29-convert-artifact-983792996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:24:40 +0000 UTC FinishedAt: 2026-06-26 20:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:24:40 +0000 UTC FinishedAt: 2026-06-26 20:52:03 +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:*b88828ed-51c6-488d-bab5-87236ac9903e,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-workflow2bt29/series-workflow2bt29-convert-artifact-983792996/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": "08951497-85c1-4f83-9bd5-435a0ef5b6c5", "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-workflow2bt29/series-workflow2bt29-build-action-1708072354/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:24:40 +0000 UTC FinishedAt: 2026-06-26 20:51:38 +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:*b88828ed-51c6-488d-bab5-87236ac9903e,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-workflow2bt29/series-workflow2bt29-convert-artifact-983792996/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": "08951497-85c1-4f83-9bd5-435a0ef5b6c5", "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-workflow2bt29/series-workflow2bt29-build-action-1708072354/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:52:03 +0000 UTC FinishedAt: 2026-06-26 20:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:52:03 +0000 UTC FinishedAt: 2026-06-26 20:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:52:03 +0000 UTC FinishedAt: 2026-06-26 20:52:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:52:03 +0000 UTC FinishedAt: 2026-06-26 20:52:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-workflow2bt29/series-workflow2bt29-convert-artifact-1527269475/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:52:13 +0000 UTC FinishedAt: 2026-06-26 20:54:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:52:13 +0000 UTC FinishedAt: 2026-06-26 20:54:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*08951497-85c1-4f83-9bd5-435a0ef5b6c5,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-workflow2bt29/series-workflow2bt29-build-action-1708072354/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-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:54:12 +0000 UTC FinishedAt: 2026-06-26 20:54:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:54:12 +0000 UTC FinishedAt: 2026-06-26 20:54:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:54:12 +0000 UTC FinishedAt: 2026-06-26 21:29:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:54:12 +0000 UTC FinishedAt: 2026-06-26 21:29:44 +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:*b88828ed-51c6-488d-bab5-87236ac9903e,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-workflow2bt29/series-workflow2bt29-convert-artifact-1527269475/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": "49d5c235-68a5-4633-8eb1-147ef36d3d27", "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-workflow2bt29/series-workflow2bt29-build-action-3911030039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 20:54:12 +0000 UTC FinishedAt: 2026-06-26 21:29:34 +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:*b88828ed-51c6-488d-bab5-87236ac9903e,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-workflow2bt29/series-workflow2bt29-convert-artifact-1527269475/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": "49d5c235-68a5-4633-8eb1-147ef36d3d27", "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-workflow2bt29/series-workflow2bt29-build-action-3911030039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:29:44 +0000 UTC FinishedAt: 2026-06-26 21:29:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:29:44 +0000 UTC FinishedAt: 2026-06-26 21:29:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:29:44 +0000 UTC FinishedAt: 2026-06-26 21:31:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:29:44 +0000 UTC FinishedAt: 2026-06-26 21:31:34 +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:*49d5c235-68a5-4633-8eb1-147ef36d3d27,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-workflow2bt29/series-workflow2bt29-build-action-3911030039/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-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 22:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 22:07:30 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"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:*08951497-85c1-4f83-9bd5-435a0ef5b6c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49d5c235-68a5-4633-8eb1-147ef36d3d27,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-workflow2bt29/series-workflow2bt29-build-action-1708072354/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-workflow2bt29/series-workflow2bt29-build-action-3911030039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 21:32:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 21:31:53 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"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-workflow2bt29/series-workflow2bt29-convert-artifact-3276548476/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 21:31:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 21:31:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:31:44 +0000 UTC FinishedAt: 2026-06-26 21:31:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:32:23 +0000 UTC FinishedAt: 2026-06-26 22:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bt29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_zdev_feature_fmb_enable","vfio_pci_zdev_feature_fmb_read","zpci_fmb_reenable_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51cb1aa1250c36269474b8b6ca6b6319e170f5a5","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM","VFIO_PCI"],"series_id":"47f8bf05-82ef-4a43-8c71-2435fe783e2c","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-06-26 21:32:23 +0000 UTC FinishedAt: 2026-06-26 22:07:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*08951497-85c1-4f83-9bd5-435a0ef5b6c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49d5c235-68a5-4633-8eb1-147ef36d3d27,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-workflow2bt29/series-workflow2bt29-build-action-1708072354/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-workflow2bt29/series-workflow2bt29-build-action-3911030039/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-workflow2bt29/series-workflow2bt29-convert-artifact-3276548476/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,}