Name: series-workflow5nbr8 Phase: Succeeded StartedAt: 2026-08-06 16:55:58 +0000 UTC FinishedAt: 2026-08-06 21:00:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[0] Phase: Succeeded StartedAt: 2026-08-06 16:55:58 +0000 UTC FinishedAt: 2026-08-06 17:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 16:55:58 +0000 UTC FinishedAt: 2026-08-06 17:16:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_NVMEM", "NVMEM", "OF", "BT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_NVMEM", "NVMEM", "OF", "BT" ], "series_id": "480cd0e9-b447-4a47-a276-a35f72203bb9" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "net" ], "focus_symbols": [ "blk_nvmem_reg_read", "blk_nvmem_add", "blk_nvmem_del", "hci_dev_get_bd_addr_from_nvmem", "of_get_nvmem_eui48" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19OVk1FTSYjMzQ7LAogICAgJiMzNDtOVk1FTSYjMzQ7LAogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa19udm1lbV9yZWdfcmVhZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fYWRkJiMzNDssCiAgICAmIzM0O2Jsa19udm1lbV9kZWwmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtJiMzNDssCiAgICAmIzM0O29mX2dldF9udm1lbV9ldWk0OCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTUyN2M3YTE4ZTg2NTVlOWZkNGY3YzYxNzIwYzViZjBiOGZhYTQ4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTc6MTQ6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXG5pbmRleCBhNjFkNmM5NmRmNzU5Li4wNDIyODk0NTA4NDc4IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWxcbkBAIC0zOCw3ICYjNDM7MzgsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcbiAgICAgcHJvcGVydGllczpcbiAgICAgICBjb21wYXRpYmxlOlxuICAgICAgICAgY29udGFpbnM6XG4tICAgICAgICAgIGNvbnN0OiBmaXhlZC1wYXJ0aXRpb25zXG4mIzQzOyAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAtIGZpeGVkLXBhcnRpdGlvbnNcbiYjNDM7ICAgICAgICAgICAgLSBmaXhlZC1sYXlvdXRcbiBcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuQEAgLTg2LDYgJiM0Mzs4OCwyNSBAQCBleGFtcGxlczpcbiAgICAgICAgICAgICAgICAgICAgIHJlYWQtb25seTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgcGFydGl0aW9ucy1ib290MiB7XG4mIzQzOyAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7Zml4ZWQtbGF5b3V0XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgICAgICAgICBtYWMtYWRkckA0NDAwIHtcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7bWFjLWJhc2VcJiMzNDs7XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMHg0NDAwIDB4Nlx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgICAgIGJkLWFkZHJANTQwMCB7XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O21hYy1iYXNlXCYjMzQ7O1xuJiM0MzsgICAgICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4NTQwMCAweDZcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgI252bWVtLWNlbGwtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICAgICAgfTtcbiYjNDM7ICAgICAgICAgICAgfTtcbiAgICAgICAgIH07XG4gICAgIH07XG4gXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxuaW5kZXggYzhlOWM1NWMxYWZiNC4uN2NiMjhmMzBjOWFmMCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxuQEAgLTIyLDQgJiM0MzsyMiwxMyBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBib290IGZpcm13YXJlIGlzIGluY29ycmVjdGx5IHBhc3NpbmcgdGhlIGFkZHJlc3MgaW4gYmlnLWVuZGlhbiBvcmRlclxuIFxuJiM0MzsgIG52bWVtLWNlbGxzOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBOdm1lbSBkYXRhIGNlbGwgdGhhdCBjb250YWlucyBhIDYgYnl0ZSBCRCBhZGRyZXNzIHdpdGggdGhlIG1vc3RcbiYjNDM7ICAgICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAoYmlnLWVuZGlhbikuXG4mIzQzO1xuJiM0MzsgIG52bWVtLWNlbGwtbmFtZXM6XG4mIzQzOyAgICBjb25zdDogbG9jYWwtYmQtYWRkcmVzc1xuJiM0MztcbiBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuaW5kZXggZDRmNGQ3MmVlMGQzOC4uN2Y5ZDE2Y2I3YzE0MyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway55YW1sXG5AQCAtOTIsNiAmIzQzOzkyLDIyIEBAIHByb3BlcnRpZXM6XG4gXG4gICBpZWVlODAyMTEtZnJlcS1saW1pdDogdHJ1ZVxuIFxuJiM0MzsgIG52bWVtLWNlbGxzOlxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7ICAgIG1heEl0ZW1zOiAzXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgUmVmZXJlbmNlcyB0byBudm1lbSBjZWxscyBmb3IgTUFDIGFkZHJlc3MgYW5kL29yIGNhbGlicmF0aW9uIGRhdGEuXG4mIzQzOyAgICAgIFN1cHBvcnRlZCBjZWxsIG5hbWVzIGFyZSBtYWMtYWRkcmVzcywgY2FsaWJyYXRpb24sIGFuZCBwcmUtY2FsaWJyYXRpb24uXG4mIzQzO1xuJiM0MzsgIG52bWVtLWNlbGwtbmFtZXM6XG4mIzQzOyAgICBtaW5JdGVtczogMVxuJiM0MzsgICAgbWF4SXRlbXM6IDNcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICBlbnVtOlxuJiM0MzsgICAgICAgIC0gbWFjLWFkZHJlc3NcbiYjNDM7ICAgICAgICAtIGNhbGlicmF0aW9uXG4mIzQzOyAgICAgICAgLSBwcmUtY2FsaWJyYXRpb25cbiYjNDM7XG4gICBxY29tLGNhbGlicmF0aW9uLWRhdGE6XG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQ4LWFycmF5XG4gICAgIGRlc2NyaXB0aW9uOlxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcbmluZGV4IGJmMDg4ZmE5ODA3ZjAuLjM4ODM5YjhhMzYxZTcgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0c1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcbkBAIC00MDksNyAmIzQzOzQwOSwzMyBAQCBcdTAwMjZzZGhjXzEge1xuIFx0bm8tc2RpbztcbiBcdG5vLXNkO1xuIFxuJiM0MztcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuIFx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0OztcbiYjNDM7XG4mIzQzO1x0Y2FyZEAwIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttbWMtY2FyZFwmIzM0OztcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0cGFydGl0aW9ucy1ib290MSB7XG4mIzQzO1x0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmaXhlZC1sYXlvdXRcJiMzNDs7XG4mIzQzO1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdFx0d2lmaV9tYWNfYWRkcjogbWFjLWFkZHJANDQwMCB7XG4mIzQzO1x0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21hYy1iYXNlXCYjMzQ7O1xuJiM0MztcdFx0XHRcdHJlZyA9IFx1MDAzYzB4NDQwMCAweDZcdTAwM2U7XG4mIzQzO1x0XHRcdFx0I252bWVtLWNlbGwtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHR9O1xuJiM0MztcbiYjNDM7XHRcdFx0YmRfYWRkcjogYmQtYWRkckA1NDAwIHtcbiYjNDM7XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFjLWJhc2VcJiMzNDs7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMHg1NDAwIDB4Nlx1MDAzZTtcbiYjNDM7XHRcdFx0XHQjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1x0XHR9O1xuJiM0MztcdH07XG4gfTtcbiBcbiBcdTAwMjZzcGk1IHtcbkBAIC01MTIsNiAmIzQzOzUzOCw5IEBAIGJsdWV0b290aCB7XG4gXHRcdHZkZGNoMC1zdXBwbHkgPSBcdTAwM2NcdTAwMjZwbTQxMjVfbDIyXHUwMDNlO1xuIFx0XHRlbmFibGUtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZ0bG1tIDg3IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4gXHRcdG1heC1zcGVlZCA9IFx1MDAzYzMwMDAwMDBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0bnZtZW0tY2VsbHMgPSBcdTAwM2NcdTAwMjZiZF9hZGRyIDBcdTAwM2U7XG4mIzQzO1x0XHRudm1lbS1jZWxsLW5hbWVzID0gXCYjMzQ7bG9jYWwtYmQtYWRkcmVzc1wmIzM0OztcbiBcdH07XG4gfTtcbiBcbkBAIC01NTcsNiAmIzQzOzU4Niw5IEBAIFx1MDAyNndpZmkge1xuIFx0cWNvbSxhdGgxMGstY2FsaWJyYXRpb24tdmFyaWFudCA9IFwmIzM0O0FyZHVpbm9JbW9sYVwmIzM0OztcbiBcdGZpcm13YXJlLW5hbWUgPSBcJiMzNDtxY20yMjkwXCYjMzQ7O1xuIFxuJiM0MztcdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2d2lmaV9tYWNfYWRkciAwXHUwMDNlO1xuJiM0MztcdG52bWVtLWNlbGwtbmFtZXMgPSBcJiMzNDttYWMtYWRkcmVzc1wmIzM0OztcbiYjNDM7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZyBiL2Jsb2NrL0tjb25maWdcbmluZGV4IDcwZTRhNjZkOTQxZmYuLjQ4OTlhZDU3MmM3MWYgMTAwNjQ0XG4tLS0gYS9ibG9jay9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9LY29uZmlnXG5AQCAtMjA5LDYgJiM0MzsyMDksMTcgQEAgY29uZmlnIEJMS19JTkxJTkVfRU5DUllQVElPTl9GQUxMQkFDS1xuIFx0ICBieSBmYWxsaW5nIGJhY2sgdG8gdGhlIGtlcm5lbCBjcnlwdG8gQVBJIHdoZW4gaW5saW5lXG4gXHQgIGVuY3J5cHRpb24gaGFyZHdhcmUgaXMgbm90IHByZXNlbnQuXG4gXG4mIzQzO2NvbmZpZyBCTEtfTlZNRU1cbiYjNDM7XHRib29sIFwmIzM0O0Jsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlclwmIzM0O1xuJiM0MztcdGRlcGVuZHMgb24gT0ZcbiYjNDM7XHRkZXBlbmRzIG9uIE5WTUVNXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgQWxsb3cgYmxvY2sgZGV2aWNlcyAob3IgcGFydGl0aW9ucykgdG8gYWN0IGFzIE5WTUVNIHByb3ZpZGVycyxcbiYjNDM7XHQgIGV4cG9zaW5nIGZhY3RvcnktcHJvdmlzaW9uZWQgZGF0YSBzdWNoIGFzIE1BQyBhZGRyZXNzZXMgb3IgV2ktRmlcbiYjNDM7XHQgIGNhbGlicmF0aW9uIGJsb2JzIHRvIHRoZSBkcml2ZXJzIHRoYXQgY29uc3VtZSB0aGVtLiBUaGlzIGlzXG4mIzQzO1x0ICB0eXBpY2FsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHdoZXJlIHN1Y2ggZGF0YSBpcyBzdG9yZWQgaW4gYVxuJiM0MztcdCAgZGVkaWNhdGVkIGFyZWEgb2YgYW4gZU1NQywgaW5zdGVhZCBvZiBhIHNlcGFyYXRlIEVFUFJPTSBvciBPVFAuXG4mIzQzO1xuIHNvdXJjZSBcJiMzNDtibG9jay9wYXJ0aXRpb25zL0tjb25maWdcJiMzNDtcbiBcbiBjb25maWcgQkxLX1BNXG5kaWZmIC0tZ2l0IGEvYmxvY2svTWFrZWZpbGUgYi9ibG9jay9NYWtlZmlsZVxuaW5kZXggZTdiZDMyMGUzZDY5Ny4uODIwMDI5N2ZiY2JhYiAxMDA2NDRcbi0tLSBhL2Jsb2NrL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9NYWtlZmlsZVxuQEAgLTM5LDMgJiM0MzszOSw0IEBAIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT04pXHQmIzQzOz0gYmxrLWNyeXB0by5vIGJsay1jcnlwdG8tcHJvZmlsZS5vIFxcXG4gXHRcdFx0XHRcdCAgIGJsay1jcnlwdG8tc3lzZnMub1xuIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0spXHQmIzQzOz0gYmxrLWNyeXB0by1mYWxsYmFjay5vXG4gb2JqLSQoQ09ORklHX0JMT0NLX0hPTERFUl9ERVBSRUNBVEVEKVx0JiM0Mzs9IGhvbGRlci5vXG4mIzQzO29iai0kKENPTkZJR19CTEtfTlZNRU0pICAgICAgICAgICAgICAgICYjNDM7PSBibGstbnZtZW0ub1xuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1udm1lbS5jIGIvYmxvY2svYmxrLW52bWVtLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42OWI2OTE4NGUxNjMwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbnZtZW0uY1xuQEAgLTAsMCAmIzQzOzEsMTEyIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4mIzQzOy8qXG4mIzQzOyAqIGJsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlclxuJiM0MzsgKlxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRGFuaWVsIEdvbGxlIFx1MDAzY2RhbmllbEBtYWtyb3RvcGlhLm9yZ1x1MDAzZVxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiYjNDM7ICpcbiYjNDM7ICogVXNlZnVsIG9uIGRldmljZXMgdXNpbmcgYSB3aG9sZSBkaXNrIG9yIGEgcGFydGl0aW9uIChlLmcuIGFuIGVNTUMgYm9vdFxuJiM0MzsgKiBwYXJ0aXRpb24pIHRvIHN0b3JlIE1BQyBhZGRyZXNzZXMsIEJsdWV0b290aCBhZGRyZXNzZXMgb3IgV2ktRmlcbiYjNDM7ICogY2FsaWJyYXRpb24gRUVQUk9NIGRhdGEuXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBOVk1FTSBkZXZpY2UgaXMgYSBzaWRlIGNoYW5uZWwgb250byBhIGJsb2NrIGRldmljZSB0aGF0IHN0YXlzIGZ1bGx5XG4mIzQzOyAqIHVzYWJsZS4gVGhpcyBpcyBzb21ld2hhdCBtaXRpZ2F0ZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIGV4Y2x1c2l2ZWx5LlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZpbGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L252bWVtLXByb3ZpZGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbnZtZW0tY29uc3VtZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2Jsay5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcbiYjNDM7XHRcdFx0ICAgICAgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gcHJpdjtcbiYjNDM7XHRzdHJ1Y3QgZmlsZSAqYmRldl9maWxlO1xuJiM0MztcdGxvZmZfdCBwb3MgPSBmcm9tO1xuJiM0MztcdHNzaXplX3QgcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBvcGVuIGFuZCBwcmV2ZW50IG90aGVyIGV4Y2x1c2l2ZSBvcGVuZXJzICovXG4mIzQzO1x0YmRldl9maWxlID0gYmRldl9maWxlX29wZW5fYnlfZGV2KGJkZXYtXHUwMDNlYmRfZGV2LFxuJiM0MztcdFx0XHRcdFx0ICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCxcbiYjNDM7XHRcdFx0XHRcdCAgYmxrX252bWVtX3JlZ19yZWFkLCBOVUxMKTtcbiYjNDM7XHRpZiAoSVNfRVJSKGJkZXZfZmlsZSkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihiZGV2X2ZpbGUpO1xuJiM0MztcbiYjNDM7XHRpZiAoZmlsZV9iZGV2KGJkZXZfZmlsZSkgIT0gYmRldikge1xuJiM0MztcdFx0ZnB1dChiZGV2X2ZpbGUpO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBrZXJuZWxfcmVhZChiZGV2X2ZpbGUsIHZhbCwgYnl0ZXMsIFx1MDAyNnBvcyk7XG4mIzQzO1x0ZnB1dChiZGV2X2ZpbGUpO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRpZiAocmV0ICE9IGJ5dGVzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZiZGV2LVx1MDAzZWJkX2RldmljZTtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgbnZtZW1fY29uZmlnIGNvbmZpZyA9IHtcbiYjNDM7XHRcdC5pZFx0XHQ9IE5WTUVNX0RFVklEX05PTkUsXG4mIzQzO1x0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiYjNDM7XHRcdC53b3JkX3NpemVcdD0gMSxcbiYjNDM7XHRcdC5zdHJpZGVcdFx0PSAxLFxuJiM0MztcdFx0LnJlYWRfb25seVx0PSB0cnVlLFxuJiM0MztcdFx0LnJvb3Rfb25seVx0PSB0cnVlLFxuJiM0MztcdFx0Lmlnbm9yZV93cFx0PSB0cnVlLFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IG52bWVtX2RldmljZSAqbnZtZW07XG4mIzQzO1x0c3RydWN0IGRldmljZV9ub2RlICpjaGlsZDtcbiYjNDM7XG4mIzQzO1x0Lyogc2tpcCBkZXZpY2VzIHdoaWNoIGRvIG5vdCBoYXZlIGEgZGV2aWNlIHRyZWUgbm9kZSAqL1xuJiM0MztcdGlmICghbnApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgbGF5b3V0IGlzIGRlc2NyaWJlZCBlaXRoZXIgYnkgYW4gXCYjMzQ7bnZtZW0tbGF5b3V0XCYjMzQ7IGNoaWxkIG5vZGUgb3JcbiYjNDM7XHQgKiBieSB0aGUgZGV2aWNlIG5vZGUgaXRzZWxmIGJlaW5nIGEgXCYjMzQ7Zml4ZWQtbGF5b3V0XCYjMzQ7IGNvbnRhaW5lci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRjaGlsZCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDtudm1lbS1sYXlvdXRcJiMzNDspO1xuJiM0MztcdGlmIChjaGlsZClcbiYjNDM7XHRcdG9mX25vZGVfcHV0KGNoaWxkKTtcbiYjNDM7XHRlbHNlIGlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwmIzM0O2ZpeGVkLWxheW91dFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJkZXZfbnJfYnl0ZXMoYmRldikgXHUwMDNlIElOVF9NQVgpIHtcbiYjNDM7XHRcdGRldl93YXJuKGRldiwgXCYjMzQ7YmxvY2sgZGV2aWNlIHRvbyBsYXJnZSB0byBiZSBhbiBOVk1FTVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGNvbmZpZy5kZXYgPSBkZXY7XG4mIzQzO1x0Y29uZmlnLm5hbWUgPSBkZXZfbmFtZShkZXYpO1xuJiM0MztcdGNvbmZpZy5wcml2ID0gYmRldjtcbiYjNDM7XHRjb25maWcucmVnX3JlYWQgPSBibGtfbnZtZW1fcmVnX3JlYWQ7XG4mIzQzO1x0Y29uZmlnLnNpemUgPSBiZGV2X25yX2J5dGVzKGJkZXYpO1xuJiM0MztcdGNvbmZpZy5vZl9ub2RlID0gbnA7XG4mIzQzO1xuJiM0MztcdG52bWVtID0gbnZtZW1fcmVnaXN0ZXIoXHUwMDI2Y29uZmlnKTtcbiYjNDM7XHRpZiAoSVNfRVJSKG52bWVtKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgTlZNRU0gZGV2aWNlXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0YmRldi1cdTAwM2ViZF9udm1lbSA9IG52bWVtO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXG4mIzQzO3tcbiYjNDM7XHRudm1lbV91bnJlZ2lzdGVyKGJkZXYtXHUwMDNlYmRfbnZtZW0pO1xuJiM0MztcdGJkZXYtXHUwMDNlYmRfbnZtZW0gPSBOVUxMO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaFxuaW5kZXggZWFhYzA1ODE1Y2IwMy4uMDc5ZWRiOWZiYzM3YSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGsuaFxuQEAgLTgxNyw0ICYjNDM7ODE3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibGtfZGVidWdmc191bmxvY2soc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsXG4gXHRtZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpO1xuIH1cbiBcbiYjNDM7I2lmZGVmIENPTkZJR19CTEtfTlZNRU1cbiYjNDM7aW50IGJsa19udm1lbV9hZGQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7XG4mIzQzO3ZvaWQgYmxrX252bWVtX2RlbChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTtcbiYjNDM7I2Vsc2VcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KSB7IHJldHVybiAwOyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiAjZW5kaWYgLyogQkxLX0lOVEVSTkFMX0ggKi9cbmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuY1xuaW5kZXggZGYyYzNjNjliNDY3ZC4uZmM2MzIxMjJmYWU4YSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2dlbmhkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2dlbmhkLmNcbkBAIC00MTcsNiAmIzQzOzQxNyw4IEBAIHN0YXRpYyB2b2lkIGFkZF9kaXNrX2ZpbmFsKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuIFx0XHQgKi9cbiBcdFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGRldiwgMCk7XG4gXHRcdGRpc2tfdWV2ZW50KGRpc2ssIEtPQkpfQUREKTtcbiYjNDM7XG4mIzQzO1x0XHRibGtfbnZtZW1fYWRkKGRpc2stXHUwMDNlcGFydDApO1xuIFx0fVxuIFxuIFx0YmxrX2FwcGx5X2JkaV9saW1pdHMoZGlzay1cdTAwM2ViZGksIFx1MDAyNmRpc2stXHUwMDNlcXVldWUtXHUwMDNlbGltaXRzKTtcbkBAIC03MDAsNiAmIzQzOzcwMiw4IEBAIHN0YXRpYyB2b2lkIF9fZGVsX2dlbmRpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spXG4gXG4gXHRkaXNrX2RlbF9ldmVudHMoZGlzayk7XG4gXG4mIzQzO1x0YmxrX252bWVtX2RlbChkaXNrLVx1MDAzZXBhcnQwKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogUHJldmVudCBuZXcgb3BlbmVycyBieSB1bmxpbmtlZCB0aGUgYmRldiBpbm9kZS5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaCBiL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaFxuaW5kZXggYjA5OTc0NjdiNjFhNS4uMzI2MDgxNDk5ZDlhNiAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaFxuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oXG5AQCAtMTcsNiAmIzQzOzE3LDcgQEAgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zIHtcbiBcdFx0aW50IGZsYWdzO1xuIFx0XHRib29sIGhhc19pbmZvO1xuIFx0XHRzdHJ1Y3QgcGFydGl0aW9uX21ldGFfaW5mbyBpbmZvO1xuJiM0MztcdFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZTtcbiBcdH0gKnBhcnRzO1xuIFx0aW50IG5leHQ7XG4gXHRpbnQgbGltaXQ7XG5kaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMgYi9ibG9jay9wYXJ0aXRpb25zL2NvcmUuY1xuaW5kZXggYjVjNTliNzljYTdjYi4uYzgzMjI3NzEwNTg0YSAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9wYXJ0aXRpb25zL2NvcmUuY1xuQEAgLTExLDYgJiM0MzsxMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2N0eXBlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JhaWQvZGV0ZWN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtjaGVjay5oXCYjMzQ7XG4gXG5AQCAtMTEwLDggJiM0MzsxMTEsMTcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqYWxsb2NhdGVfcGFydGl0aW9ucyhzdHJ1Y3QgZ2VuZGlzayAqaGQpXG4gXHRyZXR1cm4gc3RhdGU7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuJiM0Mzt7XG4mIzQzO1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHN0YXRlLVx1MDAzZWxpbWl0OyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zndub2RlX2hhbmRsZV9wdXQoc3RhdGUtXHUwMDNlcGFydHNbaV0uZndub2RlKTtcbiYjNDM7XHRcdHN0YXRlLVx1MDAzZXBhcnRzW2ldLmZ3bm9kZSA9IE5VTEw7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGZyZWVfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuIHtcbiYjNDM7XHRkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdGF0ZSk7XG4gXHR2ZnJlZShzdGF0ZS1cdTAwM2VwYXJ0cyk7XG4gXHRrZnJlZShzdGF0ZSk7XG4gfVxuQEAgLTEzOSw2ICYjNDM7MTQ5LDcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqY2hlY2tfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpoZClcbiBcbiBcdGkgPSByZXMgPSBlcnIgPSAwO1xuIFx0d2hpbGUgKCFyZXMgXHUwMDI2XHUwMDI2IGNoZWNrX3BhcnRbaV0pIHtcbiYjNDM7XHRcdGRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0YXRlKTtcbiBcdFx0bWVtc2V0KHN0YXRlLVx1MDAzZXBhcnRzLCAwLCBzdGF0ZS1cdTAwM2VsaW1pdCAqIHNpemVvZihzdGF0ZS1cdTAwM2VwYXJ0c1swXSkpO1xuIFx0XHRyZXMgPSBjaGVja19wYXJ0W2kmIzQzOyYjNDM7XShzdGF0ZSk7XG4gXHRcdGlmIChyZXMgXHUwMDNjIDApIHtcbkBAIC0yNDcsNiAmIzQzOzI1OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpwYXJ0X2F0dHJfZ3JvdXBzW10gPSB7XG4gXG4gc3RhdGljIHZvaWQgcGFydF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4mIzQzO1x0Zndub2RlX2hhbmRsZV9wdXQoZGV2X2Z3bm9kZShkZXYpKTtcbiBcdHB1dF9kaXNrKGRldl90b19iZGV2KGRldiktXHUwMDNlYmRfZGlzayk7XG4gXHRiZGV2X2Ryb3AoZGV2X3RvX2JkZXYoZGV2KSk7XG4gfVxuQEAgLTI3Nyw2ICYjNDM7Mjg5LDggQEAgdm9pZCBkcm9wX3BhcnRpdGlvbihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpwYXJ0KVxuIFx0eGFfZXJhc2UoXHUwMDI2cGFydC1cdTAwM2ViZF9kaXNrLVx1MDAzZXBhcnRfdGJsLCBiZGV2X3BhcnRubyhwYXJ0KSk7XG4gXHRrb2JqZWN0X3B1dChwYXJ0LVx1MDAzZWJkX2hvbGRlcl9kaXIpO1xuIFxuJiM0MztcdGJsa19udm1lbV9kZWwocGFydCk7XG4mIzQzO1xuIFx0ZGV2aWNlX2RlbChcdTAwMjZwYXJ0LVx1MDAzZWJkX2RldmljZSk7XG4gXHRwdXRfZGV2aWNlKFx1MDAyNnBhcnQtXHUwMDNlYmRfZGV2aWNlKTtcbiB9XG5AQCAtMjk0LDcgJiM0MzszMDgsOCBAQCBzdGF0aWMgY29uc3QgREVWSUNFX0FUVFIod2hvbGVfZGlzaywgMDQ0NCwgd2hvbGVfZGlza19zaG93LCBOVUxMKTtcbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubyxcbiBcdFx0XHRcdHNlY3Rvcl90IHN0YXJ0LCBzZWN0b3JfdCBsZW4sIGludCBmbGFncyxcbi1cdFx0XHRcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvKVxuJiM0MztcdFx0XHRcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvLFxuJiM0MztcdFx0XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXG4ge1xuIFx0ZGV2X3QgZGV2dCA9IE1LREVWKDAsIDApO1xuIFx0c3RydWN0IGRldmljZSAqZGRldiA9IGRpc2tfdG9fZGV2KGRpc2spO1xuQEAgLTM0Myw2ICYjNDM7MzU4LDcgQEAgc3RhdGljIHN0cnVjdCBibG9ja19kZXZpY2UgKmFkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sXG4gXHRwZGV2LVx1MDAzZWNsYXNzID0gXHUwMDI2YmxvY2tfY2xhc3M7XG4gXHRwZGV2LVx1MDAzZXR5cGUgPSBcdTAwMjZwYXJ0X3R5cGU7XG4gXHRwZGV2LVx1MDAzZXBhcmVudCA9IGRkZXY7XG4mIzQzO1x0ZGV2aWNlX3NldF9ub2RlKHBkZXYsIGZ3bm9kZV9oYW5kbGVfZ2V0KGZ3bm9kZSkpO1xuIFxuIFx0LyogaW4gY29uc2VjdXRpdmUgbWlub3IgcmFuZ2U/ICovXG4gXHRpZiAoYmRldl9wYXJ0bm8oYmRldikgXHUwMDNjIGRpc2stXHUwMDNlbWlub3JzKSB7XG5AQCAtMzkyLDYgJiM0Mzs0MDgsOSBAQCBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubyxcbiBcdC8qIHN1cHByZXNzIHVldmVudCBpZiB0aGUgZGlzayBzdXBwcmVzc2VzIGl0ICovXG4gXHRpZiAoIWRldl9nZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYpKVxuIFx0XHRrb2JqZWN0X3VldmVudChcdTAwMjZwZGV2LVx1MDAzZWtvYmosIEtPQkpfQUREKTtcbiYjNDM7XG4mIzQzO1x0YmxrX252bWVtX2FkZChiZGV2KTtcbiYjNDM7XG4gXHRyZXR1cm4gYmRldjtcbiBcbiBvdXRfZGVsOlxuQEAgLTQ0OSw3ICYjNDM7NDY4LDcgQEAgaW50IGJkZXZfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubywgc2VjdG9yX3Qgc3RhcnQsXG4gXHR9XG4gXG4gXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwYXJ0bm8sIHN0YXJ0LCBsZW5ndGgsXG4tXHRcdFx0QUREUEFSVF9GTEFHX05PTkUsIE5VTEwpO1xuJiM0MztcdFx0XHRBRERQQVJUX0ZMQUdfTk9ORSwgTlVMTCwgTlVMTCk7XG4gXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8ocGFydCk7XG4gb3V0OlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpc2stXHUwMDNlb3Blbl9tdXRleCk7XG5AQCAtNTY0LDcgJiM0Mzs1ODMsNyBAQCBzdGF0aWMgYm9vbCBibGtfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzayxcbiBcdH1cbiBcbiBcdHBhcnQgPSBhZGRfcGFydGl0aW9uKGRpc2ssIHAsIGZyb20sIHNpemUsIHN0YXRlLVx1MDAzZXBhcnRzW3BdLmZsYWdzLFxuLVx0XHRcdCAgICAgXHUwMDI2c3RhdGUtXHUwMDNlcGFydHNbcF0uaW5mbyk7XG4mIzQzO1x0XHRcdCAgICAgXHUwMDI2c3RhdGUtXHUwMDNlcGFydHNbcF0uaW5mbywgc3RhdGUtXHUwMDNlcGFydHNbcF0uZndub2RlKTtcbiBcdGlmIChJU19FUlIocGFydCkpIHtcbiBcdFx0aWYgKFBUUl9FUlIocGFydCkgIT0gLUVOWElPKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fRVJSIFwmIzM0OyAlczogcCVkIGNvdWxkIG5vdCBiZSBhZGRlZDogJXBlXFxuXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xuaW5kZXggNTM2NjRlYTA2YjY1NC4uNGZjN2M4MGM0MDdkZSAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9vZi5jXG5AQCAtMyw2ICYjNDM7Myw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYmxrZGV2LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tYWpvci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtjaGVjay5oXCYjMzQ7XG4gXG5AQCAtNjIsNiAmIzQzOzYzLDggQEAgc3RhdGljIHZvaWQgYWRkX29mX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBpbnQgc2xvdCxcbiBcdFx0cGFydG5hbWUgPSBvZl9nZXRfcHJvcGVydHkobnAsIFwmIzM0O25hbWVcJiMzNDssIFx1MDAyNmxlbik7XG4gXHRzdHJzY3B5KGluZm8tXHUwMDNldm9sbmFtZSwgcGFydG5hbWUsIHNpemVvZihpbmZvLVx1MDAzZXZvbG5hbWUpKTtcbiBcbiYjNDM7XHRzdGF0ZS1cdTAwM2VwYXJ0c1tzbG90XS5md25vZGUgPSBmd25vZGVfaGFuZGxlX2dldChvZl9md25vZGVfaGFuZGxlKG5wKSk7XG4mIzQzO1xuIFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsoJXMpXCYjMzQ7LCBpbmZvLVx1MDAzZXZvbG5hbWUpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xuaW5kZXggMTBjNDk2ZWFlYTJjMS4uM2M2ZjAyMWI3NjIxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmNcbkBAIC03MjMsOCAmIzQzOzcyMywxMSBAQCBzdGF0aWMgaW50IHFjYV9jaGVja19iZGFkZHIoc3RydWN0IGhjaV9kZXYgKmhkZXYsIGNvbnN0IHN0cnVjdCBxY2FfZndfY29uZmlnICpjb1xuIFx0fVxuIFxuIFx0YmRhID0gKHN0cnVjdCBoY2lfcnBfcmVhZF9iZF9hZGRyICopc2tiLVx1MDAzZWRhdGE7XG4tXHRpZiAoIWJhY21wKFx1MDAyNmJkYS1cdTAwM2ViZGFkZHIsIFx1MDAyNmNvbmZpZy1cdTAwM2ViZGFkZHIpKVxuJiM0MztcdGlmICghYmFjbXAoXHUwMDI2YmRhLVx1MDAzZWJkYWRkciwgXHUwMDI2Y29uZmlnLVx1MDAzZWJkYWRkcikpIHtcbiBcdFx0aGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSk7XG4mIzQzO1x0XHRoY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTtcbiYjNDM7XHRcdGhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSk7XG4mIzQzO1x0fVxuIFxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuaW5kZXggYjkwNTg0ZTFiOTllYS4uZWZhNjMxY2U3MjgzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuQEAgLTE2Nyw3ICYjNDM7MTY3LDE4IEBAIHN0YXRpYyBpbnQgbnZtZW1fbGF5b3V0X2J1c19wb3B1bGF0ZShzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSxcbiBcbiBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX252bWVtX2xheW91dF9nZXRfY29udGFpbmVyKHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtKVxuIHtcbi1cdHJldHVybiBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bnZtZW0tbGF5b3V0XCYjMzQ7KTtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xuJiM0MztcbiYjNDM7XHQvKiBTZWFyY2ggZm9yIG52bWVtLWxheW91dCBjaGlsZCAqL1xuJiM0MztcdG5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnZtZW0tXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O252bWVtLWxheW91dFwmIzM0Oyk7XG4mIzQzO1x0aWYgKG5wKVxuJiM0MztcdFx0cmV0dXJuIG5wO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgbnZtZW0gb2Zfbm9kZSBpcyBpdHNlbGYgYSBmaXhlZC1sYXlvdXQgbm9kZSAqL1xuJiM0MztcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7Zml4ZWQtbGF5b3V0XCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybiBvZl9ub2RlX2dldChudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChvZl9udm1lbV9sYXlvdXRfZ2V0X2NvbnRhaW5lcik7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcbmluZGV4IDg4MDhlZTc2ZTczYzAuLjZlZDE3M2M2NDkwMjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiBzdHJ1Y3QgYmlvX3NldDtcbiBzdHJ1Y3QgYmlvO1xuIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQ7XG4mIzQzO3N0cnVjdCBudm1lbV9kZXZpY2U7XG4gc3RydWN0IHBhZ2U7XG4gc3RydWN0IGlvX2NvbnRleHQ7XG4gc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7XG5AQCAtNzMsNiAmIzQzOzc0LDkgQEAgc3RydWN0IGJsb2NrX2RldmljZSB7XG4gXHRpbnRcdFx0XHRiZF93cml0ZXJzO1xuICNpZmRlZiBDT05GSUdfU0VDVVJJVFlcbiBcdHZvaWRcdFx0XHQqYmRfc2VjdXJpdHk7XG4mIzQzOyNlbmRpZlxuJiM0MzsjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxuJiM0MztcdHN0cnVjdCBudm1lbV9kZXZpY2VcdCpiZF9udm1lbTtcbiAjZW5kaWZcbiBcdC8qXG4gXHQgKiBrZWVwIHRoaXMgb3V0LW9mLWxpbmUgYXMgaXQmIzM5O3MgYm90aCBiaWcgYW5kIG5vdCBuZWVkZWQgaW4gdGhlIGZhc3RcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29mX25ldC5oIGIvaW5jbHVkZS9saW51eC9vZl9uZXQuaFxuaW5kZXggZDg4NzE1YTBiM2E1Mi4uNzg1NGJhNTU1ZDlhNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcbkBAIC0xNSw2ICYjNDM7MTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTtcbiBleHRlcm4gaW50IG9mX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBwaHlfaW50ZXJmYWNlX3QgKmludGVyZmFjZSk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4mIzQzO2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcik7XG4gaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbiBleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKm9mX2ZpbmRfbmV0X2RldmljZV9ieV9ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuICNlbHNlXG5AQCAtMzQsNiAmIzQzOzM1LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKVxuIFx0cmV0dXJuIC1FTk9ERVY7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCxcbiYjNDM7XHRcdFx0XHQgICAgICBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0cmV0dXJuIC1FTk9ERVY7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oXG5pbmRleCA1MGYwZWVmNzFmYjE5Li43NGZhNDAyNTA0MDEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmhcbkBAIC0xNjEsNiAmIzQzOzE2MSwyNCBAQCBlbnVtIHtcbiBcdCAqL1xuIFx0SENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sXG4gXG4mIzQzO1x0LyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIHB1YmxpYyBCbHVldG9vdGggYWRkcmVzc1xuJiM0MztcdCAqIGluaXRpYWxseSByZXBvcnRlZCBieSBIQ0kgUmVhZCBCRCBBZGRyZXNzIGNvbW1hbmRcbiYjNDM7XHQgKiBpcyBjb25zaWRlcmVkIGludmFsaWQuIFRoZSBwdWJsaWMgQkQgQWRkcmVzcyBjYW4gYmVcbiYjNDM7XHQgKiByZXRyaWV2ZWQgdmlhIGEgJiMzOTtsb2NhbC1iZC1hZGRyZXNzJiMzOTsgTlZNRU0gY2VsbC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIFRoaXMgcXVpcmsgY2FuIGJlIHNldCBiZWZvcmUgaGNpX3JlZ2lzdGVyX2RldiBpcyBjYWxsZWQgb3JcbiYjNDM7XHQgKiBkdXJpbmcgdGhlIGhkZXYtXHUwMDNlc2V0dXAgdmVuZG9yIGNhbGxiYWNrLlxuJiM0MztcdCAqL1xuJiM0MztcdEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNLFxuJiM0MztcbiYjNDM7XHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIHByb3ZpZGVkIGJ5XG4mIzQzO1x0ICogdGhlICYjMzk7bG9jYWwtYmQtYWRkcmVzcyYjMzk7IE5WTUVNIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuIG9yZGVyLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvclxuJiM0MztcdCAqIGR1cmluZyB0aGUgaGRldi1cdTAwM2VzZXR1cCB2ZW5kb3IgY2FsbGJhY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0SENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSxcbiYjNDM7XG4gXHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgZHVwbGljYXRlIGZpbHRlcmluZyBkdXJpbmdcbiBcdCAqIHNjYW5uaW5nIGlzIGJhc2VkIG9uIEJsdWV0b290aCBkZXZpY2VzIGFkZHJlc3Nlcy4gVG8gYWxsb3dcbiBcdCAqIFJTU0kgYmFzZWQgdXBkYXRlcywgcmVzdGFydCBzY2FubmluZyBpZiBuZWVkZWQuXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jIGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG5pbmRleCBjOGQxNDEyOGMzNjNkLi44MTMyYTE0ODdhYzI1IDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbkBAIC03LDYgJiM0Mzs3LDcgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2JsdWV0b290aC9ibHVldG9vdGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ibHVldG9vdGgvaGNpX2NvcmUuaFx1MDAzZVxuQEAgLTM3MDEsNiAmIzQzOzM3MDIsMzkgQEAgaW50IGhjaV9wb3dlcmVkX3VwZGF0ZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtIC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3NcbiYjNDM7ICpcdFx0XHRcdCAgICAoQkRfQUREUikgZm9yIGEgSENJIGRldmljZSBmcm9tXG4mIzQzOyAqXHRcdFx0XHQgICAgYW4gTlZNRU0gY2VsbC5cbiYjNDM7ICogQGhkZXY6XHRUaGUgSENJIGRldmljZVxuJiM0MzsgKlxuJiM0MzsgKiBTZWFyY2ggZm9yICYjMzk7bG9jYWwtYmQtYWRkcmVzcyYjMzk7IE5WTUVNIGNlbGwgaW4gdGhlIGRldmljZSBmaXJtd2FyZSBub2RlLlxuJiM0MzsgKlxuJiM0MzsgKiBBbGwtemVybyBCRCBhZGRyZXNzZXMgYXJlIHJlamVjdGVkICh1bnByb3Zpc2lvbmVkKS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoaGRldi1cdTAwM2VkZXYucGFyZW50KTtcbiYjNDM7XHR1OCBiYVtzaXplb2YoYmRhZGRyX3QpXTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoIW5wKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGVyciA9IG9mX2dldF9udm1lbV9ldWk0OChucCwgXCYjMzQ7bG9jYWwtYmQtYWRkcmVzc1wmIzM0OywgYmEpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSkpXG4mIzQzO1x0XHRiYXN3YXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgKGJkYWRkcl90ICopYmEpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdGJhY3B5KFx1MDAyNmhkZXYtXHUwMDNlcHVibGljX2FkZHIsIChiZGFkZHJfdCAqKWJhKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX3Byb3BlcnR5IC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3NcbiAgKlx0XHRcdFx0ICAgICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cbkBAIC01MTgwLDEyICYjNDM7NTIxNCwxNyBAQCBzdGF0aWMgaW50IGhjaV9kZXZfc2V0dXBfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdCAqIGl0cyBzZXR1cCBjYWxsYmFjay5cbiBcdCAqL1xuIFx0aW52YWxpZF9iZGFkZHIgPSBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8XG4tXHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTtcbiYjNDM7XHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSB8fFxuJiM0MztcdFx0XHQgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pO1xuIFx0aWYgKCFyZXQpIHtcbiBcdFx0aWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSlcbiBcdFx0XHRoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fcHJvcGVydHkoaGRldik7XG4gXG4mIzQzO1x0XHRpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSlcbiYjNDM7XHRcdFx0aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtKGhkZXYpO1xuJiM0MztcbiBcdFx0aWYgKGludmFsaWRfYmRhZGRyIFx1MDAyNlx1MDAyNiBiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhkZXYtXHUwMDNlc2V0X2JkYWRkcikge1xuIFx0XHRcdHJldCA9IGhkZXYtXHUwMDNlc2V0X2JkYWRkcihoZGV2LCBcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyKTtcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL21nbXQuYyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5pbmRleCAxNjdkNzVlMzQ1MjY2Li5hMzlkNzYzYTQyMjVhIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9tZ210LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5AQCAtNjE0LDcgJiM0Mzs2MTQsOCBAQCBzdGF0aWMgYm9vbCBpc19jb25maWd1cmVkKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRpZiAoKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19JTlZBTElEX0JEQUREUikgfHxcbi1cdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSB8fFxuJiM0MztcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC02MzAsNyAmIzQzOzYzMSw4IEBAIHN0YXRpYyBfX2xlMzIgZ2V0X21pc3Npbmdfb3B0aW9ucyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdFx0b3B0aW9ucyB8PSBNR01UX09QVElPTl9FWFRFUk5BTF9DT05GSUc7XG4gXG4gXHRpZiAoKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19JTlZBTElEX0JEQUREUikgfHxcbi1cdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSB8fFxuJiM0MztcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdG9wdGlvbnMgfD0gTUdNVF9PUFRJT05fUFVCTElDX0FERFJFU1M7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvb2ZfbmV0LmMgYi9uZXQvY29yZS9vZl9uZXQuY1xuaW5kZXggOTNlYTQyNWI5MjQ4YS4uOTk5Y2EwZTkyNThjNCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL29mX25ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9vZl9uZXQuY1xuQEAgLTYxLDkgJiM0Mzs2MSw3IEBAIHN0YXRpYyBpbnQgb2ZfZ2V0X21hY19hZGRyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGNvbnN0IGNoYXIgKm5hbWUsIHU4ICphZGRyKVxuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKmFkZHIpXG4ge1xuIFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUobnApO1xuLVx0c3RydWN0IG52bWVtX2NlbGwgKmNlbGw7XG4tXHRjb25zdCB2b2lkICptYWM7XG4tXHRzaXplX3QgbGVuO1xuJiM0MztcdHU4IG1hY1tFVEhfQUxFTl0gX19hbGlnbmVkKHNpemVvZih1MTYpKTtcbiBcdGludCByZXQ7XG4gXG4gXHQvKiBUcnkgbG9va3VwIGJ5IGRldmljZSBmaXJzdCwgdGhlcmUgbWlnaHQgYmUgYSBudm1lbV9jZWxsX2xvb2t1cFxuQEAgLTc1LDI3ICYjNDM7NzMsNTcgQEAgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDspO1xuJiM0MztcdHJldCA9IG9mX2dldF9udm1lbV9ldWk0OChucCwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDssIG1hYyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdG1lbWNweShhZGRyLCBtYWMsIEVUSF9BTEVOKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC5cbiYjNDM7ICogQG5wOlx0XHREZXZpY2Ugbm9kZSB0byBsb29rIHVwIHRoZSBOVk1FTSBjZWxsIGZyb20uXG4mIzQzOyAqIEBjZWxsX25hbWU6XHROYW1lIG9mIHRoZSBOVk1FTSBjZWxsIChlLmcuIFwmIzM0O21hYy1hZGRyZXNzXCYjMzQ7LCBcJiMzNDtsb2NhbC1iZC1hZGRyZXNzXCYjMzQ7KS5cbiYjNDM7ICogQGFkZHI6XHRPdXRwdXQgYnVmZmVyIGZvciB0aGUgNi1ieXRlIGFkZHJlc3MuXG4mIzQzOyAqXG4mIzQzOyAqIFJlYWRzIHRoZSBuYW1lZCBOVk1FTSBjZWxsIGFuZCB2YWxpZGF0ZXMgdGhhdCBpdCBjb250YWlucyBhIG5vbi16ZXJvIDYtYnl0ZVxuJiM0MzsgKiBhZGRyZXNzLiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBudm1lbV9jZWxsICpjZWxsO1xuJiM0MztcdGNvbnN0IHZvaWQgKmV1aTQ4O1xuJiM0MztcdHNpemVfdCBsZW47XG4mIzQzO1xuJiM0MztcdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgY2VsbF9uYW1lKTtcbiBcdGlmIChJU19FUlIoY2VsbCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNlbGwpO1xuIFxuLVx0bWFjID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsIFx1MDAyNmxlbik7XG4mIzQzO1x0ZXVpNDggPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXHUwMDI2bGVuKTtcbiBcdG52bWVtX2NlbGxfcHV0KGNlbGwpO1xuIFxuLVx0aWYgKElTX0VSUihtYWMpKVxuLVx0XHRyZXR1cm4gUFRSX0VSUihtYWMpO1xuJiM0MztcdGlmIChJU19FUlIoZXVpNDgpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIoZXVpNDgpO1xuIFxuLVx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XG4tXHRcdGtmcmVlKG1hYyk7XG4mIzQzO1x0LyogUmVqZWN0IHVucHJvZ3JhbW1lZCBjZWxscyB0aGF0IHJlYWQgYXMgYWxsLXplcm9lcyBvciBhbGwtb25lcyAqL1xuJiM0MztcdGlmIChsZW4gIT0gRVRIX0FMRU4gfHxcbiYjNDM7XHQgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4MDAsIEVUSF9BTEVOKSB8fFxuJiM0MztcdCAgICAhbWVtY2hyX2ludihldWk0OCwgMHhmZiwgRVRIX0FMRU4pKSB7XG4mIzQzO1x0XHRrZnJlZShldWk0OCk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0bWVtY3B5KGFkZHIsIG1hYywgRVRIX0FMRU4pO1xuLVx0a2ZyZWUobWFjKTtcbiYjNDM7XHRtZW1jcHkoYWRkciwgZXVpNDgsIEVUSF9BTEVOKTtcbiYjNDM7XHRrZnJlZShldWk0OCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4tRVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChvZl9nZXRfbnZtZW1fZXVpNDgpO1xuIFxuIC8qKlxuICAqIG9mX2dldF9tYWNfYWRkcmVzcygpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19OVk1FTSYjMzQ7LAogICAgJiMzNDtOVk1FTSYjMzQ7LAogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa19udm1lbV9yZWdfcmVhZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fYWRkJiMzNDssCiAgICAmIzM0O2Jsa19udm1lbV9kZWwmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtJiMzNDssCiAgICAmIzM0O29mX2dldF9udm1lbV9ldWk0OCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTUyN2M3YTE4ZTg2NTVlOWZkNGY3YzYxNzIwYzViZjBiOGZhYTQ4OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTc6MTQ6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWwKaW5kZXggYTYxZDZjOTZkZjc1OS4uMDQyMjg5NDUwODQ3OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbApAQCAtMzgsNyAmIzQzOzM4LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6CiAgICAgcHJvcGVydGllczoKICAgICAgIGNvbXBhdGlibGU6CiAgICAgICAgIGNvbnRhaW5zOgotICAgICAgICAgIGNvbnN0OiBmaXhlZC1wYXJ0aXRpb25zCiYjNDM7ICAgICAgICAgIGVudW06CiYjNDM7ICAgICAgICAgICAgLSBmaXhlZC1wYXJ0aXRpb25zCiYjNDM7ICAgICAgICAgICAgLSBmaXhlZC1sYXlvdXQKIAogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQpAQCAtODYsNiAmIzQzOzg4LDI1IEBAIGV4YW1wbGVzOgogICAgICAgICAgICAgICAgICAgICByZWFkLW9ubHk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH07CiYjNDM7CiYjNDM7ICAgICAgICAgICAgcGFydGl0aW9ucy1ib290MiB7CiYjNDM7ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2ZpeGVkLWxheW91dCYjMzQ7OwomIzQzOwomIzQzOyAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CiYjNDM7ICAgICAgICAgICAgICAgIG1hYy1hZGRyQDQ0MDAgewomIzQzOyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7bWFjLWJhc2UmIzM0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgIHJlZyA9ICZsdDsweDQ0MDAgMHg2Jmd0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgICAgICAgICB9OwomIzQzOwomIzQzOyAgICAgICAgICAgICAgICBiZC1hZGRyQDU0MDAgewomIzQzOyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7bWFjLWJhc2UmIzM0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgIHJlZyA9ICZsdDsweDU0MDAgMHg2Jmd0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgICAgICAgICB9OwomIzQzOyAgICAgICAgICAgIH07CiAgICAgICAgIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbAppbmRleCBjOGU5YzU1YzFhZmI0Li43Y2IyOGYzMGM5YWYwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbApAQCAtMjIsNCAmIzQzOzIyLDEzIEBAIHByb3BlcnRpZXM6CiAgICAgZGVzY3JpcHRpb246CiAgICAgICBib290IGZpcm13YXJlIGlzIGluY29ycmVjdGx5IHBhc3NpbmcgdGhlIGFkZHJlc3MgaW4gYmlnLWVuZGlhbiBvcmRlcgogCiYjNDM7ICBudm1lbS1jZWxsczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgTnZtZW0gZGF0YSBjZWxsIHRoYXQgY29udGFpbnMgYSA2IGJ5dGUgQkQgYWRkcmVzcyB3aXRoIHRoZSBtb3N0CiYjNDM7ICAgICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAoYmlnLWVuZGlhbikuCiYjNDM7CiYjNDM7ICBudm1lbS1jZWxsLW5hbWVzOgomIzQzOyAgICBjb25zdDogbG9jYWwtYmQtYWRkcmVzcwomIzQzOwogYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbAppbmRleCBkNGY0ZDcyZWUwZDM4Li43ZjlkMTZjYjdjMTQzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3Fjb20sYXRoMTBrLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway55YW1sCkBAIC05Miw2ICYjNDM7OTIsMjIgQEAgcHJvcGVydGllczoKIAogICBpZWVlODAyMTEtZnJlcS1saW1pdDogdHJ1ZQogCiYjNDM7ICBudm1lbS1jZWxsczoKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgbWF4SXRlbXM6IDMKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUmVmZXJlbmNlcyB0byBudm1lbSBjZWxscyBmb3IgTUFDIGFkZHJlc3MgYW5kL29yIGNhbGlicmF0aW9uIGRhdGEuCiYjNDM7ICAgICAgU3VwcG9ydGVkIGNlbGwgbmFtZXMgYXJlIG1hYy1hZGRyZXNzLCBjYWxpYnJhdGlvbiwgYW5kIHByZS1jYWxpYnJhdGlvbi4KJiM0MzsKJiM0MzsgIG52bWVtLWNlbGwtbmFtZXM6CiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7ICAgIG1heEl0ZW1zOiAzCiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIGVudW06CiYjNDM7ICAgICAgICAtIG1hYy1hZGRyZXNzCiYjNDM7ICAgICAgICAtIGNhbGlicmF0aW9uCiYjNDM7ICAgICAgICAtIHByZS1jYWxpYnJhdGlvbgomIzQzOwogICBxY29tLGNhbGlicmF0aW9uLWRhdGE6CiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDgtYXJyYXkKICAgICBkZXNjcmlwdGlvbjoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMKaW5kZXggYmYwODhmYTk4MDdmMC4uMzg4MzliOGEzNjFlNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMKQEAgLTQwOSw3ICYjNDM7NDA5LDMzIEBAICZhbXA7c2RoY18xIHsKIAluby1zZGlvOwogCW5vLXNkOwogCiYjNDM7CSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKJiM0MzsKJiM0MzsJY2FyZEAwIHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O21tYy1jYXJkJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MCZndDs7CiYjNDM7CiYjNDM7CQlwYXJ0aXRpb25zLWJvb3QxIHsKJiM0MzsJCQljb21wYXRpYmxlID0gJiMzNDtmaXhlZC1sYXlvdXQmIzM0OzsKJiM0MzsJCQkjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJCQkjc2l6ZS1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsKJiM0MzsJCQl3aWZpX21hY19hZGRyOiBtYWMtYWRkckA0NDAwIHsKJiM0MzsJCQkJY29tcGF0aWJsZSA9ICYjMzQ7bWFjLWJhc2UmIzM0OzsKJiM0MzsJCQkJcmVnID0gJmx0OzB4NDQwMCAweDYmZ3Q7OwomIzQzOwkJCQkjbnZtZW0tY2VsbC1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJCQl9OwomIzQzOwomIzQzOwkJCWJkX2FkZHI6IGJkLWFkZHJANTQwMCB7CiYjNDM7CQkJCWNvbXBhdGlibGUgPSAmIzM0O21hYy1iYXNlJiMzNDs7CiYjNDM7CQkJCXJlZyA9ICZsdDsweDU0MDAgMHg2Jmd0OzsKJiM0MzsJCQkJI252bWVtLWNlbGwtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CQkJfTsKJiM0MzsJCX07CiYjNDM7CX07CiB9OwogCiAmYW1wO3NwaTUgewpAQCAtNTEyLDYgJiM0Mzs1MzgsOSBAQCBibHVldG9vdGggewogCQl2ZGRjaDAtc3VwcGx5ID0gJmx0OyZhbXA7cG00MTI1X2wyMiZndDs7CiAJCWVuYWJsZS1ncGlvcyA9ICZsdDsmYW1wO3RsbW0gODcgR1BJT19BQ1RJVkVfSElHSCZndDs7CiAJCW1heC1zcGVlZCA9ICZsdDszMDAwMDAwJmd0OzsKJiM0MzsKJiM0MzsJCW52bWVtLWNlbGxzID0gJmx0OyZhbXA7YmRfYWRkciAwJmd0OzsKJiM0MzsJCW52bWVtLWNlbGwtbmFtZXMgPSAmIzM0O2xvY2FsLWJkLWFkZHJlc3MmIzM0OzsKIAl9OwogfTsKIApAQCAtNTU3LDYgJiM0Mzs1ODYsOSBAQCAmYW1wO3dpZmkgewogCXFjb20sYXRoMTBrLWNhbGlicmF0aW9uLXZhcmlhbnQgPSAmIzM0O0FyZHVpbm9JbW9sYSYjMzQ7OwogCWZpcm13YXJlLW5hbWUgPSAmIzM0O3FjbTIyOTAmIzM0OzsKIAomIzQzOwludm1lbS1jZWxscyA9ICZsdDsmYW1wO3dpZmlfbWFjX2FkZHIgMCZndDs7CiYjNDM7CW52bWVtLWNlbGwtbmFtZXMgPSAmIzM0O21hYy1hZGRyZXNzJiMzNDs7CiYjNDM7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiB9OwogCmRpZmYgLS1naXQgYS9ibG9jay9LY29uZmlnIGIvYmxvY2svS2NvbmZpZwppbmRleCA3MGU0YTY2ZDk0MWZmLi40ODk5YWQ1NzJjNzFmIDEwMDY0NAotLS0gYS9ibG9jay9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL0tjb25maWcKQEAgLTIwOSw2ICYjNDM7MjA5LDE3IEBAIGNvbmZpZyBCTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0sKIAkgIGJ5IGZhbGxpbmcgYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkgd2hlbiBpbmxpbmUKIAkgIGVuY3J5cHRpb24gaGFyZHdhcmUgaXMgbm90IHByZXNlbnQuCiAKJiM0Mztjb25maWcgQkxLX05WTUVNCiYjNDM7CWJvb2wgJiMzNDtCbG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXImIzM0OwomIzQzOwlkZXBlbmRzIG9uIE9GCiYjNDM7CWRlcGVuZHMgb24gTlZNRU0KJiM0MzsJaGVscAomIzQzOwkgIEFsbG93IGJsb2NrIGRldmljZXMgKG9yIHBhcnRpdGlvbnMpIHRvIGFjdCBhcyBOVk1FTSBwcm92aWRlcnMsCiYjNDM7CSAgZXhwb3NpbmcgZmFjdG9yeS1wcm92aXNpb25lZCBkYXRhIHN1Y2ggYXMgTUFDIGFkZHJlc3NlcyBvciBXaS1GaQomIzQzOwkgIGNhbGlicmF0aW9uIGJsb2JzIHRvIHRoZSBkcml2ZXJzIHRoYXQgY29uc3VtZSB0aGVtLiBUaGlzIGlzCiYjNDM7CSAgdHlwaWNhbGx5IHVzZWQgb24gZW1iZWRkZWQgZGV2aWNlcyB3aGVyZSBzdWNoIGRhdGEgaXMgc3RvcmVkIGluIGEKJiM0MzsJICBkZWRpY2F0ZWQgYXJlYSBvZiBhbiBlTU1DLCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgRUVQUk9NIG9yIE9UUC4KJiM0MzsKIHNvdXJjZSAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZyYjMzQ7CiAKIGNvbmZpZyBCTEtfUE0KZGlmZiAtLWdpdCBhL2Jsb2NrL01ha2VmaWxlIGIvYmxvY2svTWFrZWZpbGUKaW5kZXggZTdiZDMyMGUzZDY5Ny4uODIwMDI5N2ZiY2JhYiAxMDA2NDQKLS0tIGEvYmxvY2svTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svTWFrZWZpbGUKQEAgLTM5LDMgJiM0MzszOSw0IEBAIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT04pCSYjNDM7PSBibGstY3J5cHRvLm8gYmxrLWNyeXB0by1wcm9maWxlLm8gXAogCQkJCQkgICBibGstY3J5cHRvLXN5c2ZzLm8KIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0spCSYjNDM7PSBibGstY3J5cHRvLWZhbGxiYWNrLm8KIG9iai0kKENPTkZJR19CTE9DS19IT0xERVJfREVQUkVDQVRFRCkJJiM0Mzs9IGhvbGRlci5vCiYjNDM7b2JqLSQoQ09ORklHX0JMS19OVk1FTSkgICAgICAgICAgICAgICAgJiM0Mzs9IGJsay1udm1lbS5vCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbnZtZW0uYyBiL2Jsb2NrL2Jsay1udm1lbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY5YjY5MTg0ZTE2MzAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbnZtZW0uYwpAQCAtMCwwICYjNDM7MSwxMTIgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgomIzQzOy8qCiYjNDM7ICogYmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyCiYjNDM7ICoKJiM0MzsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRGFuaWVsIEdvbGxlICZsdDtkYW5pZWxAbWFrcm90b3BpYS5vcmcmZ3Q7CiYjNDM7ICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCiYjNDM7ICoKJiM0MzsgKiBVc2VmdWwgb24gZGV2aWNlcyB1c2luZyBhIHdob2xlIGRpc2sgb3IgYSBwYXJ0aXRpb24gKGUuZy4gYW4gZU1NQyBib290CiYjNDM7ICogcGFydGl0aW9uKSB0byBzdG9yZSBNQUMgYWRkcmVzc2VzLCBCbHVldG9vdGggYWRkcmVzc2VzIG9yIFdpLUZpCiYjNDM7ICogY2FsaWJyYXRpb24gRUVQUk9NIGRhdGEuCiYjNDM7ICoKJiM0MzsgKiBUaGUgTlZNRU0gZGV2aWNlIGlzIGEgc2lkZSBjaGFubmVsIG9udG8gYSBibG9jayBkZXZpY2UgdGhhdCBzdGF5cyBmdWxseQomIzQzOyAqIHVzYWJsZS4gVGhpcyBpcyBzb21ld2hhdCBtaXRpZ2F0ZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIGV4Y2x1c2l2ZWx5LgomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZmlsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9udm1lbS1wcm92aWRlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9udm1lbS1jb25zdW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7YmxrLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyBpbnQgYmxrX252bWVtX3JlZ19yZWFkKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBmcm9tLAomIzQzOwkJCSAgICAgIHZvaWQgKnZhbCwgc2l6ZV90IGJ5dGVzKQomIzQzO3sKJiM0MzsJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHByaXY7CiYjNDM7CXN0cnVjdCBmaWxlICpiZGV2X2ZpbGU7CiYjNDM7CWxvZmZfdCBwb3MgPSBmcm9tOwomIzQzOwlzc2l6ZV90IHJldDsKJiM0MzsKJiM0MzsJLyogb3BlbiBhbmQgcHJldmVudCBvdGhlciBleGNsdXNpdmUgb3BlbmVycyAqLwomIzQzOwliZGV2X2ZpbGUgPSBiZGV2X2ZpbGVfb3Blbl9ieV9kZXYoYmRldi0mZ3Q7YmRfZGV2LAomIzQzOwkJCQkJICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCwKJiM0MzsJCQkJCSAgYmxrX252bWVtX3JlZ19yZWFkLCBOVUxMKTsKJiM0MzsJaWYgKElTX0VSUihiZGV2X2ZpbGUpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIoYmRldl9maWxlKTsKJiM0MzsKJiM0MzsJaWYgKGZpbGVfYmRldihiZGV2X2ZpbGUpICE9IGJkZXYpIHsKJiM0MzsJCWZwdXQoYmRldl9maWxlKTsKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IGtlcm5lbF9yZWFkKGJkZXZfZmlsZSwgdmFsLCBieXRlcywgJmFtcDtwb3MpOwomIzQzOwlmcHV0KGJkZXZfZmlsZSk7CiYjNDM7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJaWYgKHJldCAhPSBieXRlcykKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IGJsa19udm1lbV9hZGQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7YmRldi0mZ3Q7YmRfZGV2aWNlOwomIzQzOwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoZGV2KTsKJiM0MzsJc3RydWN0IG52bWVtX2NvbmZpZyBjb25maWcgPSB7CiYjNDM7CQkuaWQJCT0gTlZNRU1fREVWSURfTk9ORSwKJiM0MzsJCS5vd25lcgkJPSBUSElTX01PRFVMRSwKJiM0MzsJCS53b3JkX3NpemUJPSAxLAomIzQzOwkJLnN0cmlkZQkJPSAxLAomIzQzOwkJLnJlYWRfb25seQk9IHRydWUsCiYjNDM7CQkucm9vdF9vbmx5CT0gdHJ1ZSwKJiM0MzsJCS5pZ25vcmVfd3AJPSB0cnVlLAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbTsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpjaGlsZDsKJiM0MzsKJiM0MzsJLyogc2tpcCBkZXZpY2VzIHdoaWNoIGRvIG5vdCBoYXZlIGEgZGV2aWNlIHRyZWUgbm9kZSAqLwomIzQzOwlpZiAoIW5wKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBsYXlvdXQgaXMgZGVzY3JpYmVkIGVpdGhlciBieSBhbiAmIzM0O252bWVtLWxheW91dCYjMzQ7IGNoaWxkIG5vZGUgb3IKJiM0MzsJICogYnkgdGhlIGRldmljZSBub2RlIGl0c2VsZiBiZWluZyBhICYjMzQ7Zml4ZWQtbGF5b3V0JiMzNDsgY29udGFpbmVyLgomIzQzOwkgKi8KJiM0MzsJY2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgJiMzNDtudm1lbS1sYXlvdXQmIzM0Oyk7CiYjNDM7CWlmIChjaGlsZCkKJiM0MzsJCW9mX25vZGVfcHV0KGNoaWxkKTsKJiM0MzsJZWxzZSBpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCAmIzM0O2ZpeGVkLWxheW91dCYjMzQ7KSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlpZiAoYmRldl9ucl9ieXRlcyhiZGV2KSAmZ3Q7IElOVF9NQVgpIHsKJiM0MzsJCWRldl93YXJuKGRldiwgJiMzNDtibG9jayBkZXZpY2UgdG9vIGxhcmdlIHRvIGJlIGFuIE5WTUVNXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwomIzQzOwljb25maWcuZGV2ID0gZGV2OwomIzQzOwljb25maWcubmFtZSA9IGRldl9uYW1lKGRldik7CiYjNDM7CWNvbmZpZy5wcml2ID0gYmRldjsKJiM0MzsJY29uZmlnLnJlZ19yZWFkID0gYmxrX252bWVtX3JlZ19yZWFkOwomIzQzOwljb25maWcuc2l6ZSA9IGJkZXZfbnJfYnl0ZXMoYmRldik7CiYjNDM7CWNvbmZpZy5vZl9ub2RlID0gbnA7CiYjNDM7CiYjNDM7CW52bWVtID0gbnZtZW1fcmVnaXN0ZXIoJmFtcDtjb25maWcpOwomIzQzOwlpZiAoSVNfRVJSKG52bWVtKSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksCiYjNDM7CQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgTlZNRU0gZGV2aWNlXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CWJkZXYtJmd0O2JkX252bWVtID0gbnZtZW07CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKJiM0Mzt7CiYjNDM7CW52bWVtX3VucmVnaXN0ZXIoYmRldi0mZ3Q7YmRfbnZtZW0pOwomIzQzOwliZGV2LSZndDtiZF9udm1lbSA9IE5VTEw7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaAppbmRleCBlYWFjMDU4MTVjYjAzLi4wNzllZGI5ZmJjMzdhIDEwMDY0NAotLS0gYS9ibG9jay9ibGsuaAomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGsuaApAQCAtODE3LDQgJiM0Mzs4MTcsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGJsa19kZWJ1Z2ZzX3VubG9jayhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAltZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpOwogfQogCiYjNDM7I2lmZGVmIENPTkZJR19CTEtfTlZNRU0KJiM0MztpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsKJiM0Mzt2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CiYjNDM7I2Vsc2UKJiM0MztzdGF0aWMgaW5saW5lIGludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHsgcmV0dXJuIDA7IH0KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgYmxrX252bWVtX2RlbChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KSB7fQomIzQzOyNlbmRpZgomIzQzOwogI2VuZGlmIC8qIEJMS19JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuYwppbmRleCBkZjJjM2M2OWI0NjdkLi5mYzYzMjEyMmZhZThhIDEwMDY0NAotLS0gYS9ibG9jay9nZW5oZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2dlbmhkLmMKQEAgLTQxNyw2ICYjNDM7NDE3LDggQEAgc3RhdGljIHZvaWQgYWRkX2Rpc2tfZmluYWwoc3RydWN0IGdlbmRpc2sgKmRpc2spCiAJCSAqLwogCQlkZXZfc2V0X3VldmVudF9zdXBwcmVzcyhkZGV2LCAwKTsKIAkJZGlza191ZXZlbnQoZGlzaywgS09CSl9BREQpOwomIzQzOwomIzQzOwkJYmxrX252bWVtX2FkZChkaXNrLSZndDtwYXJ0MCk7CiAJfQogCiAJYmxrX2FwcGx5X2JkaV9saW1pdHMoZGlzay0mZ3Q7YmRpLCAmYW1wO2Rpc2stJmd0O3F1ZXVlLSZndDtsaW1pdHMpOwpAQCAtNzAwLDYgJiM0Mzs3MDIsOCBAQCBzdGF0aWMgdm9pZCBfX2RlbF9nZW5kaXNrKHN0cnVjdCBnZW5kaXNrICpkaXNrKQogCiAJZGlza19kZWxfZXZlbnRzKGRpc2spOwogCiYjNDM7CWJsa19udm1lbV9kZWwoZGlzay0mZ3Q7cGFydDApOwomIzQzOwogCS8qCiAJICogUHJldmVudCBuZXcgb3BlbmVycyBieSB1bmxpbmtlZCB0aGUgYmRldiBpbm9kZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaCBiL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaAppbmRleCBiMDk5NzQ2N2I2MWE1Li4zMjYwODE0OTlkOWE2IDEwMDY0NAotLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmgKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oCkBAIC0xNyw2ICYjNDM7MTcsNyBAQCBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgewogCQlpbnQgZmxhZ3M7CiAJCWJvb2wgaGFzX2luZm87CiAJCXN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvIGluZm87CiYjNDM7CQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlOwogCX0gKnBhcnRzOwogCWludCBuZXh0OwogCWludCBsaW1pdDsKZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jIGIvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMKaW5kZXggYjVjNTliNzljYTdjYi4uYzgzMjI3NzEwNTg0YSAxMDA2NDQKLS0tIGEvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMKQEAgLTExLDYgJiM0MzsxMSw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc3lzZnMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jdHlwZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yYWlkL2RldGVjdC5oJmd0OwogI2luY2x1ZGUgJiMzNDtjaGVjay5oJiMzNDsKIApAQCAtMTEwLDggJiM0MzsxMTEsMTcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqYWxsb2NhdGVfcGFydGl0aW9ucyhzdHJ1Y3QgZ2VuZGlzayAqaGQpCiAJcmV0dXJuIHN0YXRlOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSkKJiM0Mzt7CiYjNDM7CWZvciAoaW50IGkgPSAwOyBpICZsdDsgc3RhdGUtJmd0O2xpbWl0OyBpJiM0MzsmIzQzOykgewomIzQzOwkJZndub2RlX2hhbmRsZV9wdXQoc3RhdGUtJmd0O3BhcnRzW2ldLmZ3bm9kZSk7CiYjNDM7CQlzdGF0ZS0mZ3Q7cGFydHNbaV0uZndub2RlID0gTlVMTDsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGZyZWVfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKQogewomIzQzOwlkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdGF0ZSk7CiAJdmZyZWUoc3RhdGUtJmd0O3BhcnRzKTsKIAlrZnJlZShzdGF0ZSk7CiB9CkBAIC0xMzksNiAmIzQzOzE0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKmNoZWNrX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqaGQpCiAKIAlpID0gcmVzID0gZXJyID0gMDsKIAl3aGlsZSAoIXJlcyAmYW1wOyZhbXA7IGNoZWNrX3BhcnRbaV0pIHsKJiM0MzsJCWRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0YXRlKTsKIAkJbWVtc2V0KHN0YXRlLSZndDtwYXJ0cywgMCwgc3RhdGUtJmd0O2xpbWl0ICogc2l6ZW9mKHN0YXRlLSZndDtwYXJ0c1swXSkpOwogCQlyZXMgPSBjaGVja19wYXJ0W2kmIzQzOyYjNDM7XShzdGF0ZSk7CiAJCWlmIChyZXMgJmx0OyAwKSB7CkBAIC0yNDcsNiAmIzQzOzI1OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpwYXJ0X2F0dHJfZ3JvdXBzW10gPSB7CiAKIHN0YXRpYyB2b2lkIHBhcnRfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiYjNDM7CWZ3bm9kZV9oYW5kbGVfcHV0KGRldl9md25vZGUoZGV2KSk7CiAJcHV0X2Rpc2soZGV2X3RvX2JkZXYoZGV2KS0mZ3Q7YmRfZGlzayk7CiAJYmRldl9kcm9wKGRldl90b19iZGV2KGRldikpOwogfQpAQCAtMjc3LDYgJiM0MzsyODksOCBAQCB2b2lkIGRyb3BfcGFydGl0aW9uKHN0cnVjdCBibG9ja19kZXZpY2UgKnBhcnQpCiAJeGFfZXJhc2UoJmFtcDtwYXJ0LSZndDtiZF9kaXNrLSZndDtwYXJ0X3RibCwgYmRldl9wYXJ0bm8ocGFydCkpOwogCWtvYmplY3RfcHV0KHBhcnQtJmd0O2JkX2hvbGRlcl9kaXIpOwogCiYjNDM7CWJsa19udm1lbV9kZWwocGFydCk7CiYjNDM7CiAJZGV2aWNlX2RlbCgmYW1wO3BhcnQtJmd0O2JkX2RldmljZSk7CiAJcHV0X2RldmljZSgmYW1wO3BhcnQtJmd0O2JkX2RldmljZSk7CiB9CkBAIC0yOTQsNyAmIzQzOzMwOCw4IEBAIHN0YXRpYyBjb25zdCBERVZJQ0VfQVRUUih3aG9sZV9kaXNrLCAwNDQ0LCB3aG9sZV9kaXNrX3Nob3csIE5VTEwpOwogICovCiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubywKIAkJCQlzZWN0b3JfdCBzdGFydCwgc2VjdG9yX3QgbGVuLCBpbnQgZmxhZ3MsCi0JCQkJc3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm8pCiYjNDM7CQkJCXN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvLAomIzQzOwkJCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQogewogCWRldl90IGRldnQgPSBNS0RFVigwLCAwKTsKIAlzdHJ1Y3QgZGV2aWNlICpkZGV2ID0gZGlza190b19kZXYoZGlzayk7CkBAIC0zNDMsNiAmIzQzOzM1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLAogCXBkZXYtJmd0O2NsYXNzID0gJmFtcDtibG9ja19jbGFzczsKIAlwZGV2LSZndDt0eXBlID0gJmFtcDtwYXJ0X3R5cGU7CiAJcGRldi0mZ3Q7cGFyZW50ID0gZGRldjsKJiM0MzsJZGV2aWNlX3NldF9ub2RlKHBkZXYsIGZ3bm9kZV9oYW5kbGVfZ2V0KGZ3bm9kZSkpOwogCiAJLyogaW4gY29uc2VjdXRpdmUgbWlub3IgcmFuZ2U/ICovCiAJaWYgKGJkZXZfcGFydG5vKGJkZXYpICZsdDsgZGlzay0mZ3Q7bWlub3JzKSB7CkBAIC0zOTIsNiAmIzQzOzQwOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLAogCS8qIHN1cHByZXNzIHVldmVudCBpZiB0aGUgZGlzayBzdXBwcmVzc2VzIGl0ICovCiAJaWYgKCFkZXZfZ2V0X3VldmVudF9zdXBwcmVzcyhkZGV2KSkKIAkJa29iamVjdF91ZXZlbnQoJmFtcDtwZGV2LSZndDtrb2JqLCBLT0JKX0FERCk7CiYjNDM7CiYjNDM7CWJsa19udm1lbV9hZGQoYmRldik7CiYjNDM7CiAJcmV0dXJuIGJkZXY7CiAKIG91dF9kZWw6CkBAIC00NDksNyAmIzQzOzQ2OCw3IEBAIGludCBiZGV2X2FkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sIHNlY3Rvcl90IHN0YXJ0LAogCX0KIAogCXBhcnQgPSBhZGRfcGFydGl0aW9uKGRpc2ssIHBhcnRubywgc3RhcnQsIGxlbmd0aCwKLQkJCUFERFBBUlRfRkxBR19OT05FLCBOVUxMKTsKJiM0MzsJCQlBRERQQVJUX0ZMQUdfTk9ORSwgTlVMTCwgTlVMTCk7CiAJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHBhcnQpOwogb3V0OgogCW11dGV4X3VubG9jaygmYW1wO2Rpc2stJmd0O29wZW5fbXV0ZXgpOwpAQCAtNTY0LDcgJiM0Mzs1ODMsNyBAQCBzdGF0aWMgYm9vbCBibGtfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywKIAl9CiAKIAlwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwLCBmcm9tLCBzaXplLCBzdGF0ZS0mZ3Q7cGFydHNbcF0uZmxhZ3MsCi0JCQkgICAgICZhbXA7c3RhdGUtJmd0O3BhcnRzW3BdLmluZm8pOwomIzQzOwkJCSAgICAgJmFtcDtzdGF0ZS0mZ3Q7cGFydHNbcF0uaW5mbywgc3RhdGUtJmd0O3BhcnRzW3BdLmZ3bm9kZSk7CiAJaWYgKElTX0VSUihwYXJ0KSkgewogCQlpZiAoUFRSX0VSUihwYXJ0KSAhPSAtRU5YSU8pIHsKIAkJCXByaW50ayhLRVJOX0VSUiAmIzM0OyAlczogcCVkIGNvdWxkIG5vdCBiZSBhZGRlZDogJXBlXG4mIzM0OywKZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuYwppbmRleCA1MzY2NGVhMDZiNjU0Li40ZmM3YzgwYzQwN2RlIDEwMDY0NAotLS0gYS9ibG9jay9wYXJ0aXRpb25zL29mLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9vZi5jCkBAIC0zLDYgJiM0MzszLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9ibGtkZXYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tYWpvci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3RyaW5nLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O2NoZWNrLmgmIzM0OwogCkBAIC02Miw2ICYjNDM7NjMsOCBAQCBzdGF0aWMgdm9pZCBhZGRfb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGludCBzbG90LAogCQlwYXJ0bmFtZSA9IG9mX2dldF9wcm9wZXJ0eShucCwgJiMzNDtuYW1lJiMzNDssICZhbXA7bGVuKTsKIAlzdHJzY3B5KGluZm8tJmd0O3ZvbG5hbWUsIHBhcnRuYW1lLCBzaXplb2YoaW5mby0mZ3Q7dm9sbmFtZSkpOwogCiYjNDM7CXN0YXRlLSZndDtwYXJ0c1tzbG90XS5md25vZGUgPSBmd25vZGVfaGFuZGxlX2dldChvZl9md25vZGVfaGFuZGxlKG5wKSk7CiYjNDM7CiAJc2VxX2J1Zl9wcmludGYoJmFtcDtzdGF0ZS0mZ3Q7cHBfYnVmLCAmIzM0OyglcykmIzM0OywgaW5mby0mZ3Q7dm9sbmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jCmluZGV4IDEwYzQ5NmVhZWEyYzEuLjNjNmYwMjFiNzYyMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuYwpAQCAtNzIzLDggJiM0Mzs3MjMsMTEgQEAgc3RhdGljIGludCBxY2FfY2hlY2tfYmRhZGRyKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBjb25zdCBzdHJ1Y3QgcWNhX2Z3X2NvbmZpZyAqY28KIAl9CiAKIAliZGEgPSAoc3RydWN0IGhjaV9ycF9yZWFkX2JkX2FkZHIgKilza2ItJmd0O2RhdGE7Ci0JaWYgKCFiYWNtcCgmYW1wO2JkYS0mZ3Q7YmRhZGRyLCAmYW1wO2NvbmZpZy0mZ3Q7YmRhZGRyKSkKJiM0MzsJaWYgKCFiYWNtcCgmYW1wO2JkYS0mZ3Q7YmRhZGRyLCAmYW1wO2NvbmZpZy0mZ3Q7YmRhZGRyKSkgewogCQloY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTsKJiM0MzsJCWhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pOwomIzQzOwkJaGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfQkRBRERSX05WTUVNX0JFKTsKJiM0MzsJfQogCiAJa2ZyZWVfc2tiKHNrYik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy5jIGIvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMKaW5kZXggYjkwNTg0ZTFiOTllYS4uZWZhNjMxY2U3MjgzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMKQEAgLTE2Nyw3ICYjNDM7MTY3LDE4IEBAIHN0YXRpYyBpbnQgbnZtZW1fbGF5b3V0X2J1c19wb3B1bGF0ZShzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSwKIAogc3RydWN0IGRldmljZV9ub2RlICpvZl9udm1lbV9sYXlvdXRfZ2V0X2NvbnRhaW5lcihzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSkKIHsKLQlyZXR1cm4gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnZtZW0tJmd0O2Rldi5vZl9ub2RlLCAmIzM0O252bWVtLWxheW91dCYjMzQ7KTsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpucDsKJiM0MzsKJiM0MzsJLyogU2VhcmNoIGZvciBudm1lbS1sYXlvdXQgY2hpbGQgKi8KJiM0MzsJbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS0mZ3Q7ZGV2Lm9mX25vZGUsICYjMzQ7bnZtZW0tbGF5b3V0JiMzNDspOwomIzQzOwlpZiAobnApCiYjNDM7CQlyZXR1cm4gbnA7CiYjNDM7CiYjNDM7CS8qIFRoZSBudm1lbSBvZl9ub2RlIGlzIGl0c2VsZiBhIGZpeGVkLWxheW91dCBub2RlICovCiYjNDM7CWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShudm1lbS0mZ3Q7ZGV2Lm9mX25vZGUsICYjMzQ7Zml4ZWQtbGF5b3V0JiMzNDspKQomIzQzOwkJcmV0dXJuIG9mX25vZGVfZ2V0KG52bWVtLSZndDtkZXYub2Zfbm9kZSk7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwogfQogRVhQT1JUX1NZTUJPTF9HUEwob2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRleCA4ODA4ZWU3NmU3M2MwLi42ZWQxNzNjNjQ5MDI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiBzdHJ1Y3QgYmlvX3NldDsKIHN0cnVjdCBiaW87CiBzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkOwomIzQzO3N0cnVjdCBudm1lbV9kZXZpY2U7CiBzdHJ1Y3QgcGFnZTsKIHN0cnVjdCBpb19jb250ZXh0Owogc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7CkBAIC03Myw2ICYjNDM7NzQsOSBAQCBzdHJ1Y3QgYmxvY2tfZGV2aWNlIHsKIAlpbnQJCQliZF93cml0ZXJzOwogI2lmZGVmIENPTkZJR19TRUNVUklUWQogCXZvaWQJCQkqYmRfc2VjdXJpdHk7CiYjNDM7I2VuZGlmCiYjNDM7I2lmZGVmIENPTkZJR19CTEtfTlZNRU0KJiM0MzsJc3RydWN0IG52bWVtX2RldmljZQkqYmRfbnZtZW07CiAjZW5kaWYKIAkvKgogCSAqIGtlZXAgdGhpcyBvdXQtb2YtbGluZSBhcyBpdCYjMzk7cyBib3RoIGJpZyBhbmQgbm90IG5lZWRlZCBpbiB0aGUgZmFzdApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaCBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmgKaW5kZXggZDg4NzE1YTBiM2E1Mi4uNzg1NGJhNTU1ZDlhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L29mX25ldC5oCkBAIC0xNSw2ICYjNDM7MTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTsKIGV4dGVybiBpbnQgb2ZfZ2V0X3BoeV9tb2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHBoeV9pbnRlcmZhY2VfdCAqaW50ZXJmYWNlKTsKIGV4dGVybiBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICptYWMpOwogZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7CiYjNDM7aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKTsKIGludCBvZl9nZXRfZXRoZGV2X2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiBleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKm9mX2ZpbmRfbmV0X2RldmljZV9ieV9ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwogI2Vsc2UKQEAgLTM0LDYgJiM0MzszNSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYykKIAlyZXR1cm4gLUVOT0RFVjsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAomIzQzOwkJCQkgICAgICBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKQomIzQzO3sKJiM0MzsJcmV0dXJuIC1FTk9ERVY7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJcmV0dXJuIC1FTk9ERVY7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmgKaW5kZXggNTBmMGVlZjcxZmIxOS4uNzRmYTQwMjUwNDAxMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaApAQCAtMTYxLDYgJiM0MzsxNjEsMjQgQEAgZW51bSB7CiAJICovCiAJSENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sCiAKJiM0MzsJLyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIHB1YmxpYyBCbHVldG9vdGggYWRkcmVzcwomIzQzOwkgKiBpbml0aWFsbHkgcmVwb3J0ZWQgYnkgSENJIFJlYWQgQkQgQWRkcmVzcyBjb21tYW5kCiYjNDM7CSAqIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4gVGhlIHB1YmxpYyBCRCBBZGRyZXNzIGNhbiBiZQomIzQzOwkgKiByZXRyaWV2ZWQgdmlhIGEgJiMzOTtsb2NhbC1iZC1hZGRyZXNzJiMzOTsgTlZNRU0gY2VsbC4KJiM0MzsJICoKJiM0MzsJICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvcgomIzQzOwkgKiBkdXJpbmcgdGhlIGhkZXYtJmd0O3NldHVwIHZlbmRvciBjYWxsYmFjay4KJiM0MzsJICovCiYjNDM7CUhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNLAomIzQzOwomIzQzOwkvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIHByb3ZpZGVkIGJ5CiYjNDM7CSAqIHRoZSAmIzM5O2xvY2FsLWJkLWFkZHJlc3MmIzM5OyBOVk1FTSBpcyBzdG9yZWQgaW4gYmlnLWVuZGlhbiBvcmRlci4KJiM0MzsJICoKJiM0MzsJICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvcgomIzQzOwkgKiBkdXJpbmcgdGhlIGhkZXYtJmd0O3NldHVwIHZlbmRvciBjYWxsYmFjay4KJiM0MzsJICovCiYjNDM7CUhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUsCiYjNDM7CiAJLyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIGR1cGxpY2F0ZSBmaWx0ZXJpbmcgZHVyaW5nCiAJICogc2Nhbm5pbmcgaXMgYmFzZWQgb24gQmx1ZXRvb3RoIGRldmljZXMgYWRkcmVzc2VzLiBUbyBhbGxvdwogCSAqIFJTU0kgYmFzZWQgdXBkYXRlcywgcmVzdGFydCBzY2FubmluZyBpZiBuZWVkZWQuCmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMKaW5kZXggYzhkMTQxMjhjMzYzZC4uODEzMmExNDg3YWMyNSAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYwpAQCAtNyw2ICYjNDM7Nyw3IEBACiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7bmV0L2JsdWV0b290aC9ibHVldG9vdGguaCZndDsKICNpbmNsdWRlICZsdDtuZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmgmZ3Q7CkBAIC0zNzAxLDYgJiM0MzszNzAyLDM5IEBAIGludCBoY2lfcG93ZXJlZF91cGRhdGVfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldikKIAlyZXR1cm4gMDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzCiYjNDM7ICoJCQkJICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb20KJiM0MzsgKgkJCQkgICAgYW4gTlZNRU0gY2VsbC4KJiM0MzsgKiBAaGRldjoJVGhlIEhDSSBkZXZpY2UKJiM0MzsgKgomIzQzOyAqIFNlYXJjaCBmb3IgJiMzOTtsb2NhbC1iZC1hZGRyZXNzJiMzOTsgTlZNRU0gY2VsbCBpbiB0aGUgZGV2aWNlIGZpcm13YXJlIG5vZGUuCiYjNDM7ICoKJiM0MzsgKiBBbGwtemVybyBCRCBhZGRyZXNzZXMgYXJlIHJlamVjdGVkICh1bnByb3Zpc2lvbmVkKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShzdHJ1Y3QgaGNpX2RldiAqaGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXZfb2Zfbm9kZShoZGV2LSZndDtkZXYucGFyZW50KTsKJiM0MzsJdTggYmFbc2l6ZW9mKGJkYWRkcl90KV07CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmICghbnApCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJZXJyID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCAmIzM0O2xvY2FsLWJkLWFkZHJlc3MmIzM0OywgYmEpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUpKQomIzQzOwkJYmFzd2FwKCZhbXA7aGRldi0mZ3Q7cHVibGljX2FkZHIsIChiZGFkZHJfdCAqKWJhKTsKJiM0MzsJZWxzZQomIzQzOwkJYmFjcHkoJmFtcDtoZGV2LSZndDtwdWJsaWNfYWRkciwgKGJkYWRkcl90ICopYmEpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzCiAgKgkJCQkgICAgICAgKEJEX0FERFIpIGZvciBhIEhDSSBkZXZpY2UgZnJvbQpAQCAtNTE4MCwxMiAmIzQzOzUyMTQsMTcgQEAgc3RhdGljIGludCBoY2lfZGV2X3NldHVwX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJICogaXRzIHNldHVwIGNhbGxiYWNrLgogCSAqLwogCWludmFsaWRfYmRhZGRyID0gaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fAotCQkJIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTsKJiM0MzsJCQkgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8CiYjNDM7CQkJIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTsKIAlpZiAoIXJldCkgewogCQlpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpICZhbXA7JmFtcDsKIAkJICAgICFiYWNtcCgmYW1wO2hkZXYtJmd0O3B1YmxpY19hZGRyLCBCREFERFJfQU5ZKSkKIAkJCWhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eShoZGV2KTsKIAomIzQzOwkJaWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIWJhY21wKCZhbXA7aGRldi0mZ3Q7cHVibGljX2FkZHIsIEJEQUREUl9BTlkpKQomIzQzOwkJCWhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShoZGV2KTsKJiM0MzsKIAkJaWYgKGludmFsaWRfYmRhZGRyICZhbXA7JmFtcDsgYmFjbXAoJmFtcDtoZGV2LSZndDtwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkgJmFtcDsmYW1wOwogCQkgICAgaGRldi0mZ3Q7c2V0X2JkYWRkcikgewogCQkJcmV0ID0gaGRldi0mZ3Q7c2V0X2JkYWRkcihoZGV2LCAmYW1wO2hkZXYtJmd0O3B1YmxpY19hZGRyKTsKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvbWdtdC5jIGIvbmV0L2JsdWV0b290aC9tZ210LmMKaW5kZXggMTY3ZDc1ZTM0NTI2Ni4uYTM5ZDc2M2E0MjI1YSAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9tZ210LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9tZ210LmMKQEAgLTYxNCw3ICYjNDM7NjE0LDggQEAgc3RhdGljIGJvb2wgaXNfY29uZmlndXJlZChzdHJ1Y3QgaGNpX2RldiAqaGRldikKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8Ci0JICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpICZhbXA7JmFtcDsKJiM0MzsJICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHwKJiM0MzsJICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSkpICZhbXA7JmFtcDsKIAkgICAgIWJhY21wKCZhbXA7aGRldi0mZ3Q7cHVibGljX2FkZHIsIEJEQUREUl9BTlkpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTYzMCw3ICYjNDM7NjMxLDggQEAgc3RhdGljIF9fbGUzMiBnZXRfbWlzc2luZ19vcHRpb25zKHN0cnVjdCBoY2lfZGV2ICpoZGV2KQogCQlvcHRpb25zIHw9IE1HTVRfT1BUSU9OX0VYVEVSTkFMX0NPTkZJRzsKIAogCWlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fAotCSAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8CiYjNDM7CSAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSAmYW1wOyZhbXA7CiAJICAgICFiYWNtcCgmYW1wO2hkZXYtJmd0O3B1YmxpY19hZGRyLCBCREFERFJfQU5ZKSkKIAkJb3B0aW9ucyB8PSBNR01UX09QVElPTl9QVUJMSUNfQUREUkVTUzsKIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvb2ZfbmV0LmMgYi9uZXQvY29yZS9vZl9uZXQuYwppbmRleCA5M2VhNDI1YjkyNDhhLi45OTljYTBlOTI1OGM0IDEwMDY0NAotLS0gYS9uZXQvY29yZS9vZl9uZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9vZl9uZXQuYwpAQCAtNjEsOSAmIzQzOzYxLDcgQEAgc3RhdGljIGludCBvZl9nZXRfbWFjX2FkZHIoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqbmFtZSwgdTggKmFkZHIpCiBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICphZGRyKQogewogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKG5wKTsKLQlzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDsKLQljb25zdCB2b2lkICptYWM7Ci0Jc2l6ZV90IGxlbjsKJiM0MzsJdTggbWFjW0VUSF9BTEVOXSBfX2FsaWduZWQoc2l6ZW9mKHUxNikpOwogCWludCByZXQ7CiAKIAkvKiBUcnkgbG9va3VwIGJ5IGRldmljZSBmaXJzdCwgdGhlcmUgbWlnaHQgYmUgYSBudm1lbV9jZWxsX2xvb2t1cApAQCAtNzUsMjcgJiM0Mzs3Myw1NyBAQCBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICphZGRyKQogCQlyZXR1cm4gcmV0OwogCX0KIAotCWNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgJiMzNDttYWMtYWRkcmVzcyYjMzQ7KTsKJiM0MzsJcmV0ID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCAmIzM0O21hYy1hZGRyZXNzJiMzNDssIG1hYyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIobWFjKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwltZW1jcHkoYWRkciwgbWFjLCBFVEhfQUxFTik7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC4KJiM0MzsgKiBAbnA6CQlEZXZpY2Ugbm9kZSB0byBsb29rIHVwIHRoZSBOVk1FTSBjZWxsIGZyb20uCiYjNDM7ICogQGNlbGxfbmFtZToJTmFtZSBvZiB0aGUgTlZNRU0gY2VsbCAoZS5nLiAmIzM0O21hYy1hZGRyZXNzJiMzNDssICYjMzQ7bG9jYWwtYmQtYWRkcmVzcyYjMzQ7KS4KJiM0MzsgKiBAYWRkcjoJT3V0cHV0IGJ1ZmZlciBmb3IgdGhlIDYtYnl0ZSBhZGRyZXNzLgomIzQzOyAqCiYjNDM7ICogUmVhZHMgdGhlIG5hbWVkIE5WTUVNIGNlbGwgYW5kIHZhbGlkYXRlcyB0aGF0IGl0IGNvbnRhaW5zIGEgbm9uLXplcm8gNi1ieXRlCiYjNDM7ICogYWRkcmVzcy4gUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCiYjNDM7ICovCiYjNDM7aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKQomIzQzO3sKJiM0MzsJc3RydWN0IG52bWVtX2NlbGwgKmNlbGw7CiYjNDM7CWNvbnN0IHZvaWQgKmV1aTQ4OwomIzQzOwlzaXplX3QgbGVuOwomIzQzOwomIzQzOwljZWxsID0gb2ZfbnZtZW1fY2VsbF9nZXQobnAsIGNlbGxfbmFtZSk7CiAJaWYgKElTX0VSUihjZWxsKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2VsbCk7CiAKLQltYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgJmFtcDtsZW4pOwomIzQzOwlldWk0OCA9IG52bWVtX2NlbGxfcmVhZChjZWxsLCAmYW1wO2xlbik7CiAJbnZtZW1fY2VsbF9wdXQoY2VsbCk7CiAKLQlpZiAoSVNfRVJSKG1hYykpCi0JCXJldHVybiBQVFJfRVJSKG1hYyk7CiYjNDM7CWlmIChJU19FUlIoZXVpNDgpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIoZXVpNDgpOwogCi0JaWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7Ci0JCWtmcmVlKG1hYyk7CiYjNDM7CS8qIFJlamVjdCB1bnByb2dyYW1tZWQgY2VsbHMgdGhhdCByZWFkIGFzIGFsbC16ZXJvZXMgb3IgYWxsLW9uZXMgKi8KJiM0MzsJaWYgKGxlbiAhPSBFVEhfQUxFTiB8fAomIzQzOwkgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4MDAsIEVUSF9BTEVOKSB8fAomIzQzOwkgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4ZmYsIEVUSF9BTEVOKSkgewomIzQzOwkJa2ZyZWUoZXVpNDgpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQltZW1jcHkoYWRkciwgbWFjLCBFVEhfQUxFTik7Ci0Ja2ZyZWUobWFjKTsKJiM0MzsJbWVtY3B5KGFkZHIsIGV1aTQ4LCBFVEhfQUxFTik7CiYjNDM7CWtmcmVlKGV1aTQ4KTsKIAogCXJldHVybiAwOwogfQotRVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pOwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKG9mX2dldF9udm1lbV9ldWk0OCk7CiAKIC8qKgogICogb2ZfZ2V0X21hY19hZGRyZXNzKCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NDcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IE5WTUVNIGFuZCBCbG9jay9OZXR3b3JrIEludGVyZmFjZSBJbnRlZ3JhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaW5kaWNhdGVzIHRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjZXMgcG90ZW50aWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgKmRlZmluaXRlbHkqIHdhcnJhbnQgZnV6emluZy4gV2UgaGF2ZSBzZXZlcmFsIGFyZWFzIGhlcmUsIHNvIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0IG9mIGVhY2guCgpGaXJzdCwgdGhlcmUgYXJlIGRvY3VtZW50YXRpb24gYW5kIERldmljZSBUcmVlIGNoYW5nZXMgKGRldmljZXRyZWUgYmluZGluZ3MgYW5kIHFyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMpLiBUaGVzZSBhcmUgdW5saWtlbHkgdG8gYmUgZnV6eiB0YXJnZXRzIGRpcmVjdGx5LCB0aG91Z2ggaW5jb3JyZWN0IGRvY3VtZW50YXRpb24gY2FuIGxlYWQgdG8gaW5kaXJlY3QgaXNzdWVzLgoKSG93ZXZlciwgdGhlIG1lYXQgb2YgdGhlIHNlcmllcyBpcyBtb3JlIGludGVyZXN0aW5nLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIG5ldyBOVk1FTSBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBibG9jayBsYXllciAoQ09ORklHX0JMS19OVk1FTSkuIFRoaXMgaW52b2x2ZXMgYWRkaW5nIGBibGstbnZtZW0uY2AgYW5kIG1vZGlmeWluZyBleGlzdGluZyBibG9jayBsYXllciBmaWxlcyAoYGdlbmhkLmNgLCBgY29yZS5jYCwgYG9mLmNgKSB0byByZWdpc3RlciBOVk1FTSBkZXZpY2VzIGZvciBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zLiBUaGUgQmx1ZXRvb3RoIGNoYW5nZXMgYXJlIGFsc28gcmVsZXZhbnQgYXMgaXQgc2V0cyBhIHF1aXJrIChgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU1gKSBhbmQgbW9kaWZpZXMgQmx1ZXRvb3RoIGNvZGUgKGBidHFjYS5jYCwgYGhjaV9zeW5jLmNgLCBgbWdtdC5jYCkgdG8gcmVhZCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIChCRF9BRERSKSBmcm9tIE5WTUVNLiBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIE5WTUVNIGxheW91dCAoYGxheW91dHMuY2ApIHRvIHN1cHBvcnQgZml4ZWQtbGF5b3V0IG5vZGVzIGFuZCwgZmluYWxseSwgY2hhbmdlcyB0byBOZXQgY29yZSAoYG9mX25ldC5jYCkgdG8gYWRkIGBvZl9nZXRfbnZtZW1fZXVpNDhgIGFuZCByZWZhY3RvciBgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtYC4KCkNydWNpYWxseSwgdGhlIGJsb2NrIGxheWVyIGNoYW5nZXMgYW5kIHRoZSBuZXQgY29yZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGludGVyYWN0aW9uIHdpdGggYG9mX2dldF9udm1lbV9ldWk0OGAgYXJlIGRpcmVjdGx5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4gVGhlIGJsb2NrIGxheWVyIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gYSBibG9jayBkZXZpY2UgaXMgYWRkZWQsIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfQkxLX05WTUVNYC4gVGhlIEJsdWV0b290aCBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgQmx1ZXRvb3RoIGRldmljZSBpcyBpbml0aWFsaXplZCwgaWYgdGhlIHF1aXJrIGlzIHNldC4KCkxldCYjMzk7cyBkaWcgaW4uIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYENPTkZJR19CTEtfTlZNRU1gIGNhbiBiZSBlbmFibGVkIG9yIGlzIGVuYWJsZWQuIEl0IGRlcGVuZHMgb24gYE9GYCBhbmQgYE5WTUVNYCwgd2hpY2ggYXJlIGxpa2VseSBlbmFibGVkIG9uIGFueSBtb2Rlcm4gc3lzdGVtLiBGdXJ0aGVyLCBgYmxrX252bWVtX2FkZGAgaXMgY2FsbGVkIGZyb20gYGFkZF9kaXNrX2ZpbmFsYCBhbmQgYGFkZF9wYXJ0aXRpb25gLCBtZWFuaW5nIGl0IGlzIGRpcmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIGJsb2NrIGRldmljZSBvcGVyYXRpb25zLiBBbmQgYG9mX2dldF9udm1lbV9ldWk0OGAgaXMgY2FsbGVkIGZyb20gYG9mX2dldF9tYWNfYWRkcmVzc19udm1lbWAgYW5kIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBzbyB3ZSBjYW4gcmVhY2ggdGhpcyB3aXRoIGEgQlQgZGV2aWNlLgoKU28sIGlzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSEgV2UmIzM5O3JlIGFkZGluZyBhICpuZXcqIG1ldGhvZCB0byBleHBvc2UgYmxvY2sgZGV2aWNlcyBhcyBOVk1FTSBwcm92aWRlcnMsIGFuZCB0aGlzIGludm9sdmVzIHJlYWRpbmcgTUFDL0JEIGFkZHJlc3NlcyBmcm9tIE5WTUVNLiBUaGUgYmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyIHJlYWRzIGZyb20gdGhlIGJsb2NrIGRldmljZSB1c2luZyBga2VybmVsX3JlYWRgIG9uIGEgYmxvY2sgZGV2aWNlIGZpbGUuIFdhaXQsIGV2ZW4gYmV0dGVyLCBgYmxrX252bWVtX3JlZ19yZWFkYCBvcGVucyB0aGUgYmxvY2sgZGV2aWNlICpleGNsdXNpdmVseSogYW5kIHJlYWRzIGZyb20gaXQsIHdoaWNoIG1lYW5zIHdlIGNhbiB0cmlnZ2VyIHRoaXMgcmVhZCB0aHJvdWdoIHRoZSBOVk1FTSBzeXNmcyBpbnRlcmZhY2UsIG9yIGluZGlyZWN0bHkgdGhyb3VnaCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyB0aGF0IGNvbnN1bWUgTlZNRU0uIFRoaXMgY291bGQgcmV2ZWFsIGludGVyZXN0aW5nIGludGVyYWN0aW9ucy4KClRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczoKKiAgIGBibGtfbnZtZW1fcmVnX3JlYWRgCiogICBgYmxrX252bWVtX2FkZGAKKiAgIGBibGtfbnZtZW1fZGVsYAoqICAgYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAKKiAgIGBvZl9nZXRfbnZtZW1fZXVpNDhgCgpGb3IgdGhlIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgdGhlc2U6CiogICBgQkxLX05WTUVNYAoqICAgYE5WTUVNYAoqICAgYE9GYAoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRob3NlIGNvbmZpZyBvcHRpb25zIGFuZCBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgaG9sZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX05WTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWc9MjAyPWNvbmZpZyBCTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0tcbi0tXG5ibG9jay9LY29uZmlnLTIxMS1cbmJsb2NrL0tjb25maWc6MjEyOmNvbmZpZyBCTEtfTlZNRU1cbmJsb2NrL0tjb25maWctMjEzLVx0Ym9vbCBcJiMzNDtCbG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMzMQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBOb24tVm9sYXRpbGUgTWVtb3J5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBCTEtfTlZNRU1gLCBgTlZNRU1gLCBhbmQgYE9GYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgYE9GYC4uLnRoYXQmIzM5O3MgT3BlbiBGaXJtd2FyZSwgcmlnaHQ/JiMzNDsgVGhhdCB0eXBpY2FsbHkgc2hvd3MgdXAgaW4gQVJNIG9yIFBvd2VyUEMgc3lzdGVtcywgdXN1YWxseSBjb3VwbGVkIHdpdGggRGV2aWNlIFRyZWUuIEkgcmVtZW1iZXIgdGhlcmUmIzM5O3MgYSBwb3NzaWJpbGl0eSB0byBlbmFibGUgaXQgb24geDg2LCBtYXliZSB0aHJvdWdoIGBPRl9VTklUVEVTVGAgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gQWN0dWFsbHksIGxldCBtZSBjbGFyaWZ5LCBgT0ZgIGNvcnJlc3BvbmRzIHRvIGBDT05GSUdfT0ZgLgoKSnVzdCB0byBjb25maXJtLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBgb2ZfZ2V0X252bWVtX2V1aTQ4YCBpbiB0aGUgYG5ldC9jb3JlL29mX25ldC5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgbW9yZSBkaXJlY3QgdW5kZXJzdGFuZGluZyBvZiBob3cgT3BlbiBGaXJtd2FyZSBpcyByZWxhdGVkIHRvIG5vbi12b2xhdGlsZSBtZW1vcnkgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBvZl9nZXRfbnZtZW1fZXVpNDgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9vZl9uZXQuaD0xNz1leHRlcm4gaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKTtcbmluY2x1ZGUvbGludXgvb2ZfbmV0Lmg6MTg6aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKTtcbmluY2x1ZGUvbGludXgvb2ZfbmV0LmgtMTktaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX25ldC5oPTMzPXN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKVxuLS1cbmluY2x1ZGUvbGludXgvb2ZfbmV0LmgtMzctXG5pbmNsdWRlL2xpbnV4L29mX25ldC5oOjM4OnN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuaW5jbHVkZS9saW51eC9vZl9uZXQuaC0zOS1cdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpXG4tLVxubmV0L2NvcmUvb2ZfbmV0LmM9ODY9RVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xuLS1cbm5ldC9jb3JlL29mX25ldC5jLTk2LSAqL1xubmV0L2NvcmUvb2ZfbmV0LmM6OTc6aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxubmV0L2NvcmUvb2ZfbmV0LmMtOTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDEyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgY29kZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYGJsa19udm1lbV9yZWdfcmVhZGAqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIGZ1bmN0aW9uIG5hbWUsIGBibGtfbnZtZW1fcmVnX3JlYWRgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgb25lIHdlIHVzZSBmb3IgcmVhZGluZyB0aG9zZSBub24tdm9sYXRpbGUgbWVtb3J5IHJlZ2lzdGVycyB3aXRoaW4gdGhlIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBteSB1bmRlcnN0YW5kaW5nOiBJdCYjMzk7cyBsaWtlbHkgaGFuZGxpbmcgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiwgYWJzdHJhY3RpbmcgYXdheSBzb21lIG9mIHRoZSBoYXJkd2FyZSBkZXRhaWxzIGZvciB0aGUgdXBwZXIgbGF5ZXJzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaXRzIHJvbGUgaW4gdGhlIGNvbXBsZXRlIHdvcmtmbG93IGFuZCBkb3VibGUgY2hlY2sgaXRzIGV4YWN0IHB1cnBvc2UgaW4gY29udGV4dC4gTGV0JiMzOTtzIHNlZSBob3cgaXTigJlzIGltcGxlbWVudGVkIGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgcmVhZGluZyBmcm9tIGEgbm9uLXZvbGF0aWxlIG1lbW9yeSByZWdpb24sIHdoYXQgZXJyb3IgY2hlY2tzIGFyZSBpbXBsZW1lbnRlZCwgYW5kIGhvdyBpdCByZXBvcnRzIHBvdGVudGlhbCBpc3N1ZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIGFuZCBJIG5lZWQgdG8gYmUgY29tcGxldGVseSBjbGVhciBvbiBpdHMgYmVoYXZpb3IgYmVmb3JlIEkgY29udGludWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrX252bWVtX3JlZ19yZWFkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1udm1lbS5jLTI1LVxuYmxvY2svYmxrLW52bWVtLmM6MjY6c3RhdGljIGludCBibGtfbnZtZW1fcmVnX3JlYWQodm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGZyb20sXG5ibG9jay9ibGstbnZtZW0uYy0yNy1cdFx0XHQgICAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcylcbi0tXG5ibG9jay9ibGstbnZtZW0uYy0zNi1cdFx0XHRcdFx0ICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCxcbmJsb2NrL2Jsay1udm1lbS5jOjM3Olx0XHRcdFx0XHQgIGJsa19udm1lbV9yZWdfcmVhZCwgTlVMTCk7XG5ibG9jay9ibGstbnZtZW0uYy0zOC1cdGlmIChJU19FUlIoYmRldl9maWxlKSlcbi0tXG5ibG9jay9ibGstbnZtZW0uYz01Nj1pbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KVxuLS1cbmJsb2NrL2Jsay1udm1lbS5jLTkzLVx0Y29uZmlnLnByaXYgPSBiZGV2O1xuYmxvY2svYmxrLW52bWVtLmM6OTQ6XHRjb25maWcucmVnX3JlYWQgPSBibGtfbnZtZW1fcmVnX3JlYWQ7XG5ibG9jay9ibGstbnZtZW0uYy05NS1cdGNvbmZpZy5zaXplID0gYmRldl9ucl9ieXRlcyhiZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDU0MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLZXkgRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb3JlIGNoYW5nZXMgYW5kIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgdGhlIHByaW1hcnkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBgYmxrX252bWVtX3JlZ19yZWFkYCwgYGJsa19udm1lbV9hZGRgLCBgYmxrX252bWVtX2RlbGAsIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBhbmQgYG9mX2dldF9udm1lbV9ldWk0OGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRyaXZpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IHRpZWQgaW50byBOVk1lIG1lbW9yeS4KCk5vdywgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9ucy4gYEJMS19OVk1FTWAgaXMgb2J2aW91c2x5IHRoZSBtb3N0IGltcG9ydGFudCBvbmUgaGVyZTsgaXQmIzM5O3MgdGhlIGNvcmUgZW5hYmxlciBvZiB0aGlzIGVudGlyZSBmZWF0dXJlLiBUaGVuIHdlIGhhdmUgYmx1ZXRvb3RoLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBCVF9IQ0lVQVJUX1FDQWAgYmVjYXVzZSBJIHNhdyBgYnRxY2EuY2AgbWVudGlvbmVkLiBCdXQsIHRoZSBxdWlyayBoYW5kbGluZyBhcHBlYXJzIHRvIGJlIGluIHRoZSBjb3JlIGJsdWV0b290aCBjb2RlLCBtZWFuaW5nIGp1c3QgYEJUYCBzaG91bGQgY292ZXIgY29yZSBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhlIHF1aXJrICppcyogc2V0IHdpdGhpbiBgYnRxY2EuY2AsIGFuZCB0aGF0IGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gIGlzIGluIGBoY2lfc3luYy5jYCB3aGljaCBpcyBjb3JlIGJsdWV0b290aC4gU28sIGl0IG1pZ2h0IGJlIHRoYXQgYEJUX1FDQWAgb3IgZXZlbiBgQlRfSENJVUFSVF9RQ0FgIGFyZSBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBxdWlyayBhY3RpdmF0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIFVsdGltYXRlbHksIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyBpbiBgYnRxY2EuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCVF9IQ0lVQVJUX1FDQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9LY29uZmlnPTIyNz1jb25maWcgQlRfSENJVUFSVF9SVExcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnLTI0MC1cbmRyaXZlcnMvYmx1ZXRvb3RoL0tjb25maWc6MjQxOmNvbmZpZyBCVF9IQ0lVQVJUX1FDQVxuZHJpdmVycy9ibHVldG9vdGgvS2NvbmZpZy0yNDItXHRib29sIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTIwNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgQmx1ZXRvb3RoIEhDSSBJbml0aWFsaXphdGlvbiB3aXRoIE5WTUVNIGFuZCBPRioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gbWFrZSBzdXJlIHRoZSBCbHVldG9vdGggSENJIGluaXRpYWxpemF0aW9uIGlzIGNvcnJlY3RseSBoYW5kbGVkLCB3aGljaCBtZWFucyBJIGFic29sdXRlbHkgKm11c3QqIGFjY291bnQgZm9yIGBCTEtfTlZNRU1gIGFuZCBgQlRfSENJVUFSVF9RQ0FgLCBvciBqdXN0IGBCVGAgaW4gZ2VuZXJhbCwgZHVyaW5nIHRoaXMgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgSSBhbHNvIGtub3cgdGhhdCBgT0ZgIGlzIGVzc2VudGlhbCB3aGVuIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEJMS19OVk1FTWAuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZywgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlIEJsdWV0b290aCBkZXZpY2UmIzM5O3MgQkQgYWRkcmVzcyBpcyByZXRyaWV2ZWQgZnJvbSBOViBtZW1vcnkuIFRvIGRvIHRoaXMsIEkgd2lsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAsIHNwZWNpZmljYWxseSBsb29raW5nIGluIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBsb2dpYyB0aGVyZSBwcm9wZXJseSBpbnRlZ3JhdGVzIHdpdGggYm90aCB0aGUgTlZNRU0gaGFuZGxpbmcgYW5kIGFueSBxdWlya3MgcmVsYXRlZCB0byBRQ0EgYmFzZWQgVUFSVCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBtaWdodCBiZSBwcmVzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTM2NDc9aW50IGhjaV9wb3dlcmVkX3VwZGF0ZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzA1LS8qKlxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjM3MDY6ICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtIC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3Ncbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzA3LSAqXHRcdFx0XHQgICAgKEJEX0FERFIpIGZvciBhIEhDSSBkZXZpY2UgZnJvbVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzE2LSAqL1xubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjM3MTc6c3RhdGljIGludCBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oc3RydWN0IGhjaV9kZXYgKmhkZXYpXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtMzcxOC17XG4tLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTUxOTA9c3RhdGljIGludCBoY2lfZGV2X3NldHVwX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4tLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTUyMjUtXHRcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmM6NTIyNjpcdFx0XHRoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTIyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4NTgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCbG9jayBEZXZpY2UgTlZNRU0gSW50ZWdyYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIGNvb2wgbmV3IGZ1bmN0aW9uYWxpdHk6IG1ha2luZyBibG9jayBkZXZpY2VzIGFjY2Vzc2libGUgYXMgTlZNRU0gcHJvdmlkZXJzLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhbHJlYWR5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzdGFydC4gVGhlIGNvcmUgaWRlYSBzZWVtcyB0byBiZSByZWFkaW5nIE1BQy9CRCBhZGRyZXNzZXMgZGlyZWN0bHkgZnJvbSB0aGUgTlZNRU0uCgpNeSBmb2N1cyBpcyBuYXR1cmFsbHkgZHJhd24gdG8gdGhlc2Ugc3ltYm9sczogYGJsa19udm1lbV9yZWdfcmVhZGAsIGBibGtfbnZtZW1fYWRkYCwgYGJsa19udm1lbV9kZWxgLCBgaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtYCwgYW5kIGBvZl9nZXRfbnZtZW1fZXVpNDhgLiBUaGV5IHByZXR0eSBtdWNoIHNwZWxsIG91dCB0aGUgaW1wbGVtZW50YXRpb246IHJlYWRpbmcsIGFkZGluZywgZGVsZXRpbmcsIGdldHRpbmcgQkQgYWRkcmVzc2VzLCBhbmQgcmV0cmlldmluZyBFVUk0OCBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgcmVzcGVjdGl2ZWx5LiBJdCBnaXZlcyBtZSBhIGdvb2QgaWRlYSBvZiB0aGUgY29kZSYjMzk7cyBoaWdoLWxldmVsIGZsb3cuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWdzOiBgQkxLX05WTUVNYCwgYE9GYCwgYW5kIGBOVk1FTWAuIEkmIzM5O20gZ3Vlc3NpbmcgYEJMS19OVk1FTWAgaXMgdGhlIHByaW1hcnkgZmVhdHVyZSBmbGFnIGZvciB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LiBgT0ZgLCBvZiBjb3Vyc2UsIGlzIERldmljZSBUcmVlIHJlbGF0ZWQuIFRoZW4gdGhlcmUmIzM5O3MgYE5WTUVNYCwgYnV0IHdhaXQgYSBzZWNvbmQuLi4gYE5WTUVNYCBpcyBhICpzdWJzeXN0ZW0qISBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTlZNRU1gIGlzIGEgYm9vbCBvciB0cmlzdGF0ZS4gVGhhdCYjMzk7cyBjcnVjaWFsOyBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGhvdyBkZWVwbHkgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoIHRoZSBjb3JlIE5WTUVNIGluZnJhc3RydWN0dXJlLiBUaGlzIHdpbGwgdGVsbCBtZSBob3cgd2VsbCB0aGlzIG5ldyBmZWF0dXJlIGFkaGVyZXMgdG8gdGhlIGV4aXN0aW5nIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI6bWVudWNvbmZpZyBOVk1FTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMtXHRib29sIFwmIzM0O05WTUVNIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWc9MTM9aWYgTlZNRU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNC1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNTpjb25maWcgTlZNRU1fU1lTRlNcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7L3N5cy9idXMvbnZtZW0vZGV2aWNlcy8qL252bWVtIChzeXNmcyBpbnRlcmZhY2UpXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnPTI3PXNvdXJjZSBcJiMzNDtkcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMC1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozMTpjb25maWcgTlZNRU1fQU44ODU1X0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgQU44ODU1IGVGdXNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctNDEtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDI6Y29uZmlnIE5WTUVNX0FQUExFX0VGVVNFU1xuZHJpdmVycy9udm1lbS9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgZUZ1c2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo1Mzpjb25maWcgTlZNRU1fQVBQTEVfU1BNSVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgU1BNSSBOVk1FTVwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy02NS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo2Njpjb25maWcgTlZNRU1fQkNNX09DT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBPbi1DaGlwIE9UUCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctNzctXG5kcml2ZXJzL252bWVtL0tjb25maWc6Nzg6Y29uZmlnIE5WTUVNX0JSQ01fTlZSQU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tJiMzOTtzIE5WUkFNIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctODYtXG5kcml2ZXJzL252bWVtL0tjb25maWc6ODc6Y29uZmlnIE5WTUVNX0lNWF9JSU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O2kuTVggSUMgSWRlbnRpZmljYXRpb24gTW9kdWxlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctOTctXG5kcml2ZXJzL252bWVtL0tjb25maWc6OTg6Y29uZmlnIE5WTUVNX0lNWF9PQ09UUFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTk5LVx0dHJpc3RhdGUgXCYjMzQ7aS5NWCA2LzcvOCBPbi1DaGlwIE9UUCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMTA5LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjExMDpjb25maWcgTlZNRU1fSU1YX09DT1RQX0VMRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTExMS1cdHRyaXN0YXRlIFwmIzM0O2kuTVggT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTExOC1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMTk6Y29uZmlnIE5WTUVNX0lNWF9PQ09UUF9TQ1VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xMjAtXHR0cmlzdGF0ZSBcJiMzNDtpLk1YOCBTQ1UgT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMjc6Y29uZmlnIE5WTUVNX0paNDc4MF9FRlVTRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEyOC1cdHRyaXN0YXRlIFwmIzM0O0paNDc4MCBFRlVTRSBNZW1vcnkgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xMzgtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTM5OmNvbmZpZyBOVk1FTV9MQU45NjYyX09UUENcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNDAtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFOOTY2MiBPVFAgY29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE0Ni1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNDc6Y29uZmlnIE5WTUVNX0xBWUVSU0NBUEVfU0ZQXG5kcml2ZXJzL252bWVtL0tjb25maWctMTQ4LVx0dHJpc3RhdGUgXCYjMzQ7TGF5ZXJzY2FwZSBTRlAgKFNlY3VyaXR5IEZ1c2UgUHJvY2Vzc29yKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNjA6Y29uZmlnIE5WTUVNX0xQQzE4WFhfRUVQUk9NXG5kcml2ZXJzL252bWVtL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4WFggRUVQUk9NIE1lbW9yeSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE2OS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNzA6Y29uZmlnIE5WTUVNX0xQQzE4WFhfT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMTcxLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4WFggT1RQIE1lbW9yeSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE3OS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxODA6Y29uZmlnIE5WTUVNX01BWDc3NzU5XG5kcml2ZXJzL252bWVtL0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7TWF4aW0gSW50ZWdyYXRlZCBNQVg3Nzc1OSBOVk1FTSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE5MS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxOTI6Y29uZmlnIE5WTUVNX01FU09OX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBNZXNvbiBHWCBlRnVzZSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIwMS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyMDI6Y29uZmlnIE5WTUVNX01FU09OX01YX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMjAzLVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBNZXNvbjYvTWVzb244L01lc29uOGIgZUZ1c2UgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMTEtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjEyOmNvbmZpZyBOVk1FTV9NSUNST0NISVBfT1RQQ1xuZHJpdmVycy9udm1lbS9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBPVFBDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjE4LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjIxOTpjb25maWcgTlZNRU1fTVRLX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMjIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWF0ZWsgU29DcyBFRlVTRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIyOS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyMzA6Y29uZmlnIE5WTUVNX01YU19PQ09UUFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBNWFMgT24tQ2hpcCBPVFAgTWVtb3J5IFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjQxLVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI0Mjpjb25maWcgTlZNRU1fTklOVEVORE9fT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMjQzLVx0dHJpc3RhdGUgXCYjMzQ7TmludGVuZG8gV2lpIGFuZCBXaWkgVSBPVFAgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNTMtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjU0OmNvbmZpZyBOVk1FTV9TMzJHX09DT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMjU1LVx0dHJpc3RhdGUgXCYjMzQ7UzMyRyBTb0MgT0NPVFAgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNjMtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjY0OmNvbmZpZyBOVk1FTV9RQ09NX1FGUFJPTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI2NS1cdHRyaXN0YXRlIFwmIzM0O1FDT00gUUZQUk9NIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjc0LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI3NTpjb25maWcgTlZNRU1fUUNPTV9TRUNfUUZQUk9NXG5kcml2ZXJzL252bWVtL0tjb25maWctMjc2LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7UUNPTSBTRUNVUkUgUUZQUk9NIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjg3LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI4ODpjb25maWcgTlZNRU1fUU5BUF9NQ1VfRUVQUk9NXG5kcml2ZXJzL252bWVtL0tjb25maWctMjg5LVx0dHJpc3RhdGUgXCYjMzQ7UU5BUCBNQ1UgRUVQUk9NIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjk2LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI5Nzpjb25maWcgTlZNRU1fUkFWRV9TUF9FRVBST01cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yOTgtXHR0cmlzdGF0ZSBcJiMzNDtSYXZlIFNQIEVFUFJPTSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMwMi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozMDM6Y29uZmlnIE5WTUVNX1JDQVJfRUZVU0VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMDQtXHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFItQ2FyIEdlbjQgRS1GVVNFIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMzEzLVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMxNDpjb25maWcgTlZNRU1fUk1FTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMxNS1cdHRyaXN0YXRlIFwmIzM0O1Jlc2VydmVkIE1lbW9yeSBCYXNlZCBEcml2ZXIgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMjQtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzI1OmNvbmZpZyBOVk1FTV9ST0NLQ0hJUF9FRlVTRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMyNi1cdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGVGdXNlIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMzM1LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMzNjpjb25maWcgTlZNRU1fUk9DS0NISVBfT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMzM3LVx0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgT1RQIGNvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNDYtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzQ3OmNvbmZpZyBOVk1FTV9TQzI3WFhfRUZVU0VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNDgtXHR0cmlzdGF0ZSBcJiMzNDtTcHJlYWR0cnVtIFNDMjdYWCBlRnVzZSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM1Ny1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNTg6Y29uZmlnIE5WTUVNX1NOVlNfTFBHUFJcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNTktXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBMb3cgUG93ZXIgR2VuZXJhbCBQdXJwb3NlIFJlZ2lzdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM2Ny1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNjg6Y29uZmlnIE5WTUVNX1NQTUlfU0RBTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM2OS1cdHRyaXN0YXRlIFwmIzM0O1NQTUkgU0RBTSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM3NS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNzY6Y29uZmlnIE5WTUVNX1NQUkRfRUZVU0VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNzctXHR0cmlzdGF0ZSBcJiMzNDtTcHJlYWR0cnVtIFNvQyBlRnVzZSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM4Ni1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozODc6Y29uZmlnIE5WTUVNX1NUTTMyX0JTRUNfT1BURUVfVEFcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zODgtXHRkZWZfYm9vbCBOVk1FTV9TVE0zMl9ST01FTSBcdTAwMjZcdTAwMjYgT1BURUVcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMzk1LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjM5Njpjb25maWcgTlZNRU1fU1RNMzJfUk9NRU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zOTctXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1RNMzIgZmFjdG9yeS1wcm9ncmFtbWVkIG1lbW9yeSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0MDc6Y29uZmlnIE5WTUVNX1NVTlBMVVNfT0NPVFBcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTdW5wbHVzIFNvQyBPVFAgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MTgtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDE5OmNvbmZpZyBOVk1FTV9TVU5YSV9TSURcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MjAtXHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgU29DcyBTSUQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MjgtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDI5OmNvbmZpZyBOVk1FTV9VX0JPT1RfRU5WXG5kcml2ZXJzL252bWVtL0tjb25maWctNDMwLVx0dHJpc3RhdGUgXCYjMzQ7VS1Cb290IGVudmlyb25tZW50IHZhcmlhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ0MS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0NDI6Y29uZmlnIE5WTUVNX1VOSVBISUVSX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctNDQzLVx0dHJpc3RhdGUgXCYjMzQ7VW5pUGhpZXIgU29DcyBlRnVzZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ1Mi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0NTM6Y29uZmlnIE5WTUVNX1ZGNjEwX09DT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctNDU0LVx0dHJpc3RhdGUgXCYjMzQ7VkY2MTAgU29DIE9DT1RQIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctNDYzLVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjQ2NDpjb25maWcgTlZNRU1fWllOUU1QXG5kcml2ZXJzL252bWVtL0tjb25maWctNDY1LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IFpZTlFNUCBTb0MgbnZtZW0gZmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00NzMtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDc0OmNvbmZpZyBOVk1FTV9RT1JJUV9FRlVTRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ3NS1cdHRyaXN0YXRlIFwmIzM0O05YUCBRb3JJUSBlRnVzZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMi1cbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnOjM6Y29uZmlnIE5WTUVNX0xBWU9VVFNcbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnLTQtXHRib29sXG4tLVxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWc9OT1tZW51IFwmIzM0O0xheW91dCBUeXBlc1wmIzM0O1xuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMTAtXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoxMTpjb25maWcgTlZNRU1fTEFZT1VUX1NMMjhfVlBEXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O0tvbnRyb24gc2wyOCBWUEQgbGF5b3V0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnOjIwOmNvbmZpZyBOVk1FTV9MQVlPVVRfT05JRV9UTFZcbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7T05JRSB0bHYgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnLTI4LVxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWc6Mjk6Y29uZmlnIE5WTUVNX0xBWU9VVF9VX0JPT1RfRU5WXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1UtQm9vdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbGF5b3V0XCYjMzQ7XG4tLVxuZHJpdmVycy9wb3dlci9yZXNldC9LY29uZmlnPTMzMj1jb25maWcgUE9XRVJfUkVTRVRfU0MyN1hYXG4tLVxuZHJpdmVycy9wb3dlci9yZXNldC9LY29uZmlnLTM0MC1cbmRyaXZlcnMvcG93ZXIvcmVzZXQvS2NvbmZpZzozNDE6Y29uZmlnIE5WTUVNX1JFQk9PVF9NT0RFXG5kcml2ZXJzL3Bvd2VyL3Jlc2V0L0tjb25maWctMzQyLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBOVk1FTSByZWJvb3QgbW9kZSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NjIKCQkJCQkJCW91dHB1dDogMTc3CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9ibGVtOgoKKipBbmFseXppbmcgdGhlIERhdGEgRmxvdyBhbmQgUHJlcGFyaW5nIHRoZSBPdXRwdXQqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgcGllY2Ugb2YgaW5mb3JtYXRpb24gaGVyZSwgdGhlIGtleSB2YXJpYWJsZSBmb3IgdGhpcyBzZWN0aW9uLCBpcyBgTlZNRU1gLiBJdCYjMzk7cyBhIGJvb2xlYW4sIG1lYW5pbmcgaXQmIzM5O3MgZWl0aGVyIHRydWUgb3IgZmFsc2UuIEtub3dpbmcgdGhpcyBpcyBmdW5kYW1lbnRhbC4gTXkgYW5hbHlzaXMgaGluZ2VzIG9uIGNvcnJlY3RseSBpbnRlcnByZXRpbmcgYW5kIHV0aWxpemluZyBpdHMgc3RhdGUuCgpNeSBwbGFuIHRvIHByZXNlbnQgdGhlIHJlc3VsdCBpcyBhbHNvIGNsZWFyLiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIGBzZXQtcmVzdWx0c2AgdG8gcHJvcGVybHkgZXhwb3NlIG15IGZpbmRpbmdzIGZyb20gdGhlIGRhdGEgYW5hbHlzaXMuIFRoaXMgaXMgdGhlIGNvcnJlY3QgbWV0aG9kLCBhbmQgbWFrZXMgdGhlIGNvcnJlY3QgZnVuY3Rpb24gY2FsbCBpbiB0aGlzIHNpdHVhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19OVk1FTSYjMzQ7LAogICAgJiMzNDtOVk1FTSYjMzQ7LAogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa19udm1lbV9yZWdfcmVhZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fYWRkJiMzNDssCiAgICAmIzM0O2Jsa19udm1lbV9kZWwmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtJiMzNDssCiAgICAmIzM0O29mX2dldF9udm1lbV9ldWk0OCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfTlZNRU0mIzM0OywKICAgICYjMzQ7TlZNRU0mIzM0OywKICAgICYjMzQ7T0YmIzM0OywKICAgICYjMzQ7QlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbnZtZW1fcmVnX3JlYWQmIzM0OywKICAgICYjMzQ7YmxrX252bWVtX2FkZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fZGVsJiMzNDssCiAgICAmIzM0O2hjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSYjMzQ7LAogICAgJiMzNDtvZl9nZXRfbnZtZW1fZXVpNDgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBmZWF0dXJlIHRvIGV4cG9zZSBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zIGFzIE5WTUVNIHByb3ZpZGVycywgYWxsb3dpbmcgTUFDIGFuZCBCbHVldG9vdGggYWRkcmVzc2VzIHRvIGJlIHJlYWQgZnJvbSB0aGVtLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBCbHVldG9vdGggY29yZSB0byByZWFkIEJEX0FERFIgZnJvbSBOVk1FTS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgbG9naWMgaW4gdGhlIGJsb2NrIGxheWVyIGFuZCBuZXR3b3JraW5nL2JsdWV0b290aCBjb3JlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE0OjQxLjIwMDgyMjYxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNDE2NDkxNzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19OVk1FTVwiLFxuICAgIFwiTlZNRU1cIixcbiAgICBcIk9GXCIsXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa19udm1lbV9yZWdfcmVhZFwiLFxuICAgIFwiYmxrX252bWVtX2FkZFwiLFxuICAgIFwiYmxrX252bWVtX2RlbFwiLFxuICAgIFwiaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtXCIsXG4gICAgXCJvZl9nZXRfbnZtZW1fZXVpNDhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNDo0MS4yMDA4MjkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIwNDU2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNTI3YzdhMThlODY1NWU5ZmQ0ZjdjNjE3MjBjNWJmMGI4ZmFhNDg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTc6MTQ6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXFxuaW5kZXggYTYxZDZjOTZkZjc1OS4uMDQyMjg5NDUwODQ3OCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWxcXG5AQCAtMzgsNyArMzgsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgIHByb3BlcnRpZXM6XFxuICAgICAgIGNvbXBhdGlibGU6XFxuICAgICAgICAgY29udGFpbnM6XFxuLSAgICAgICAgICBjb25zdDogZml4ZWQtcGFydGl0aW9uc1xcbisgICAgICAgICAgZW51bTpcXG4rICAgICAgICAgICAgLSBmaXhlZC1wYXJ0aXRpb25zXFxuKyAgICAgICAgICAgIC0gZml4ZWQtbGF5b3V0XFxuIFxcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG5AQCAtODYsNiArODgsMjUgQEAgZXhhbXBsZXM6XFxuICAgICAgICAgICAgICAgICAgICAgcmVhZC1vbmx5O1xcbiAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgfTtcXG4rXFxuKyAgICAgICAgICAgIHBhcnRpdGlvbnMtYm9vdDIge1xcbisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJmaXhlZC1sYXlvdXRcXFwiO1xcbitcXG4rICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcbisgICAgICAgICAgICAgICAgbWFjLWFkZHJANDQwMCB7XFxuKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJtYWMtYmFzZVxcXCI7XFxuKyAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4NDQwMCAweDZcXHUwMDNlO1xcbisgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgICAgICAgfTtcXG4rXFxuKyAgICAgICAgICAgICAgICBiZC1hZGRyQDU0MDAge1xcbisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwibWFjLWJhc2VcXFwiO1xcbisgICAgICAgICAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDU0MDAgMHg2XFx1MDAzZTtcXG4rICAgICAgICAgICAgICAgICAgICAjbnZtZW0tY2VsbC1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAgICAgICAgIH07XFxuKyAgICAgICAgICAgIH07XFxuICAgICAgICAgfTtcXG4gICAgIH07XFxuIFxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sXFxuaW5kZXggYzhlOWM1NWMxYWZiNC4uN2NiMjhmMzBjOWFmMCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sXFxuQEAgLTIyLDQgKzIyLDEzIEBAIHByb3BlcnRpZXM6XFxuICAgICBkZXNjcmlwdGlvbjpcXG4gICAgICAgYm9vdCBmaXJtd2FyZSBpcyBpbmNvcnJlY3RseSBwYXNzaW5nIHRoZSBhZGRyZXNzIGluIGJpZy1lbmRpYW4gb3JkZXJcXG4gXFxuKyAgbnZtZW0tY2VsbHM6XFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIE52bWVtIGRhdGEgY2VsbCB0aGF0IGNvbnRhaW5zIGEgNiBieXRlIEJEIGFkZHJlc3Mgd2l0aCB0aGUgbW9zdFxcbisgICAgICBzaWduaWZpY2FudCBieXRlIGZpcnN0IChiaWctZW5kaWFuKS5cXG4rXFxuKyAgbnZtZW0tY2VsbC1uYW1lczpcXG4rICAgIGNvbnN0OiBsb2NhbC1iZC1hZGRyZXNzXFxuK1xcbiBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3Fjb20sYXRoMTBrLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3Fjb20sYXRoMTBrLnlhbWxcXG5pbmRleCBkNGY0ZDcyZWUwZDM4Li43ZjlkMTZjYjdjMTQzIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxcbkBAIC05Miw2ICs5MiwyMiBAQCBwcm9wZXJ0aWVzOlxcbiBcXG4gICBpZWVlODAyMTEtZnJlcS1saW1pdDogdHJ1ZVxcbiBcXG4rICBudm1lbS1jZWxsczpcXG4rICAgIG1pbkl0ZW1zOiAxXFxuKyAgICBtYXhJdGVtczogM1xcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJlZmVyZW5jZXMgdG8gbnZtZW0gY2VsbHMgZm9yIE1BQyBhZGRyZXNzIGFuZC9vciBjYWxpYnJhdGlvbiBkYXRhLlxcbisgICAgICBTdXBwb3J0ZWQgY2VsbCBuYW1lcyBhcmUgbWFjLWFkZHJlc3MsIGNhbGlicmF0aW9uLCBhbmQgcHJlLWNhbGlicmF0aW9uLlxcbitcXG4rICBudm1lbS1jZWxsLW5hbWVzOlxcbisgICAgbWluSXRlbXM6IDFcXG4rICAgIG1heEl0ZW1zOiAzXFxuKyAgICBpdGVtczpcXG4rICAgICAgZW51bTpcXG4rICAgICAgICAtIG1hYy1hZGRyZXNzXFxuKyAgICAgICAgLSBjYWxpYnJhdGlvblxcbisgICAgICAgIC0gcHJlLWNhbGlicmF0aW9uXFxuK1xcbiAgIHFjb20sY2FsaWJyYXRpb24tZGF0YTpcXG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQ4LWFycmF5XFxuICAgICBkZXNjcmlwdGlvbjpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0c1xcbmluZGV4IGJmMDg4ZmE5ODA3ZjAuLjM4ODM5YjhhMzYxZTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0c1xcbkBAIC00MDksNyArNDA5LDMzIEBAIFxcdTAwMjZzZGhjXzEge1xcbiBcXHRuby1zZGlvO1xcbiBcXHRuby1zZDtcXG4gXFxuK1xcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHQjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuIFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4rXFxuK1xcdGNhcmRAMCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwibW1jLWNhcmRcXFwiO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbitcXHRcXHRwYXJ0aXRpb25zLWJvb3QxIHtcXG4rXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmaXhlZC1sYXlvdXRcXFwiO1xcbitcXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcbitcXHRcXHRcXHR3aWZpX21hY19hZGRyOiBtYWMtYWRkckA0NDAwIHtcXG4rXFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtYWMtYmFzZVxcXCI7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDQ0MDAgMHg2XFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0I252bWVtLWNlbGwtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdFxcdFxcdH07XFxuK1xcbitcXHRcXHRcXHRiZF9hZGRyOiBiZC1hZGRyQDU0MDAge1xcbitcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1hYy1iYXNlXFxcIjtcXG4rXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NTQwMCAweDZcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHQjbnZtZW0tY2VsbC1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0fTtcXG4rXFx0XFx0fTtcXG4rXFx0fTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZzcGk1IHtcXG5AQCAtNTEyLDYgKzUzOCw5IEBAIGJsdWV0b290aCB7XFxuIFxcdFxcdHZkZGNoMC1zdXBwbHkgPSBcXHUwMDNjXFx1MDAyNnBtNDEyNV9sMjJcXHUwMDNlO1xcbiBcXHRcXHRlbmFibGUtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNnRsbW0gODcgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuIFxcdFxcdG1heC1zcGVlZCA9IFxcdTAwM2MzMDAwMDAwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdG52bWVtLWNlbGxzID0gXFx1MDAzY1xcdTAwMjZiZF9hZGRyIDBcXHUwMDNlO1xcbitcXHRcXHRudm1lbS1jZWxsLW5hbWVzID0gXFxcImxvY2FsLWJkLWFkZHJlc3NcXFwiO1xcbiBcXHR9O1xcbiB9O1xcbiBcXG5AQCAtNTU3LDYgKzU4Niw5IEBAIFxcdTAwMjZ3aWZpIHtcXG4gXFx0cWNvbSxhdGgxMGstY2FsaWJyYXRpb24tdmFyaWFudCA9IFxcXCJBcmR1aW5vSW1vbGFcXFwiO1xcbiBcXHRmaXJtd2FyZS1uYW1lID0gXFxcInFjbTIyOTBcXFwiO1xcbiBcXG4rXFx0bnZtZW0tY2VsbHMgPSBcXHUwMDNjXFx1MDAyNndpZmlfbWFjX2FkZHIgMFxcdTAwM2U7XFxuK1xcdG52bWVtLWNlbGwtbmFtZXMgPSBcXFwibWFjLWFkZHJlc3NcXFwiO1xcbitcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZyBiL2Jsb2NrL0tjb25maWdcXG5pbmRleCA3MGU0YTY2ZDk0MWZmLi40ODk5YWQ1NzJjNzFmIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL0tjb25maWdcXG4rKysgYi9ibG9jay9LY29uZmlnXFxuQEAgLTIwOSw2ICsyMDksMTcgQEAgY29uZmlnIEJMS19JTkxJTkVfRU5DUllQVElPTl9GQUxMQkFDS1xcbiBcXHQgIGJ5IGZhbGxpbmcgYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkgd2hlbiBpbmxpbmVcXG4gXFx0ICBlbmNyeXB0aW9uIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LlxcbiBcXG4rY29uZmlnIEJMS19OVk1FTVxcbitcXHRib29sIFxcXCJCbG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXJcXFwiXFxuK1xcdGRlcGVuZHMgb24gT0ZcXG4rXFx0ZGVwZW5kcyBvbiBOVk1FTVxcbitcXHRoZWxwXFxuK1xcdCAgQWxsb3cgYmxvY2sgZGV2aWNlcyAob3IgcGFydGl0aW9ucykgdG8gYWN0IGFzIE5WTUVNIHByb3ZpZGVycyxcXG4rXFx0ICBleHBvc2luZyBmYWN0b3J5LXByb3Zpc2lvbmVkIGRhdGEgc3VjaCBhcyBNQUMgYWRkcmVzc2VzIG9yIFdpLUZpXFxuK1xcdCAgY2FsaWJyYXRpb24gYmxvYnMgdG8gdGhlIGRyaXZlcnMgdGhhdCBjb25zdW1lIHRoZW0uIFRoaXMgaXNcXG4rXFx0ICB0eXBpY2FsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHdoZXJlIHN1Y2ggZGF0YSBpcyBzdG9yZWQgaW4gYVxcbitcXHQgIGRlZGljYXRlZCBhcmVhIG9mIGFuIGVNTUMsIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBFRVBST00gb3IgT1RQLlxcbitcXG4gc291cmNlIFxcXCJibG9jay9wYXJ0aXRpb25zL0tjb25maWdcXFwiXFxuIFxcbiBjb25maWcgQkxLX1BNXFxuZGlmZiAtLWdpdCBhL2Jsb2NrL01ha2VmaWxlIGIvYmxvY2svTWFrZWZpbGVcXG5pbmRleCBlN2JkMzIwZTNkNjk3Li44MjAwMjk3ZmJjYmFiIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL01ha2VmaWxlXFxuKysrIGIvYmxvY2svTWFrZWZpbGVcXG5AQCAtMzksMyArMzksNCBAQCBvYmotJChDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OKVxcdCs9IGJsay1jcnlwdG8ubyBibGstY3J5cHRvLXByb2ZpbGUubyBcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGJsay1jcnlwdG8tc3lzZnMub1xcbiBvYmotJChDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OX0ZBTExCQUNLKVxcdCs9IGJsay1jcnlwdG8tZmFsbGJhY2sub1xcbiBvYmotJChDT05GSUdfQkxPQ0tfSE9MREVSX0RFUFJFQ0FURUQpXFx0Kz0gaG9sZGVyLm9cXG4rb2JqLSQoQ09ORklHX0JMS19OVk1FTSkgICAgICAgICAgICAgICAgKz0gYmxrLW52bWVtLm9cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW52bWVtLmMgYi9ibG9jay9ibGstbnZtZW0uY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjliNjkxODRlMTYzMFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9ibG9jay9ibGstbnZtZW0uY1xcbkBAIC0wLDAgKzEsMTEyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxuKy8qXFxuKyAqIGJsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlclxcbisgKlxcbisgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRGFuaWVsIEdvbGxlIFxcdTAwM2NkYW5pZWxAbWFrcm90b3BpYS5vcmdcXHUwMDNlXFxuKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxcbisgKlxcbisgKiBVc2VmdWwgb24gZGV2aWNlcyB1c2luZyBhIHdob2xlIGRpc2sgb3IgYSBwYXJ0aXRpb24gKGUuZy4gYW4gZU1NQyBib290XFxuKyAqIHBhcnRpdGlvbikgdG8gc3RvcmUgTUFDIGFkZHJlc3NlcywgQmx1ZXRvb3RoIGFkZHJlc3NlcyBvciBXaS1GaVxcbisgKiBjYWxpYnJhdGlvbiBFRVBST00gZGF0YS5cXG4rICpcXG4rICogVGhlIE5WTUVNIGRldmljZSBpcyBhIHNpZGUgY2hhbm5lbCBvbnRvIGEgYmxvY2sgZGV2aWNlIHRoYXQgc3RheXMgZnVsbHlcXG4rICogdXNhYmxlLiBUaGlzIGlzIHNvbWV3aGF0IG1pdGlnYXRlZCBieSBvcGVuaW5nIHRoZSBkZXZpY2UgZXhjbHVzaXZlbHkuXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L252bWVtLXByb3ZpZGVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwiYmxrLmhcXFwiXFxuK1xcbitzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcXG4rXFx0XFx0XFx0ICAgICAgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpXFxuK3tcXG4rXFx0c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHByaXY7XFxuK1xcdHN0cnVjdCBmaWxlICpiZGV2X2ZpbGU7XFxuK1xcdGxvZmZfdCBwb3MgPSBmcm9tO1xcbitcXHRzc2l6ZV90IHJldDtcXG4rXFxuK1xcdC8qIG9wZW4gYW5kIHByZXZlbnQgb3RoZXIgZXhjbHVzaXZlIG9wZW5lcnMgKi9cXG4rXFx0YmRldl9maWxlID0gYmRldl9maWxlX29wZW5fYnlfZGV2KGJkZXYtXFx1MDAzZWJkX2RldixcXG4rXFx0XFx0XFx0XFx0XFx0ICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBibGtfbnZtZW1fcmVnX3JlYWQsIE5VTEwpO1xcbitcXHRpZiAoSVNfRVJSKGJkZXZfZmlsZSkpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKGJkZXZfZmlsZSk7XFxuK1xcbitcXHRpZiAoZmlsZV9iZGV2KGJkZXZfZmlsZSkgIT0gYmRldikge1xcbitcXHRcXHRmcHV0KGJkZXZfZmlsZSk7XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBrZXJuZWxfcmVhZChiZGV2X2ZpbGUsIHZhbCwgYnl0ZXMsIFxcdTAwMjZwb3MpO1xcbitcXHRmcHV0KGJkZXZfZmlsZSk7XFxuK1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0aWYgKHJldCAhPSBieXRlcylcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9kZXZpY2U7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXZfb2Zfbm9kZShkZXYpO1xcbitcXHRzdHJ1Y3QgbnZtZW1fY29uZmlnIGNvbmZpZyA9IHtcXG4rXFx0XFx0LmlkXFx0XFx0PSBOVk1FTV9ERVZJRF9OT05FLFxcbitcXHRcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbitcXHRcXHQud29yZF9zaXplXFx0PSAxLFxcbitcXHRcXHQuc3RyaWRlXFx0XFx0PSAxLFxcbitcXHRcXHQucmVhZF9vbmx5XFx0PSB0cnVlLFxcbitcXHRcXHQucm9vdF9vbmx5XFx0PSB0cnVlLFxcbitcXHRcXHQuaWdub3JlX3dwXFx0PSB0cnVlLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbTtcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpjaGlsZDtcXG4rXFxuK1xcdC8qIHNraXAgZGV2aWNlcyB3aGljaCBkbyBub3QgaGF2ZSBhIGRldmljZSB0cmVlIG5vZGUgKi9cXG4rXFx0aWYgKCFucClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgbGF5b3V0IGlzIGRlc2NyaWJlZCBlaXRoZXIgYnkgYW4gXFxcIm52bWVtLWxheW91dFxcXCIgY2hpbGQgbm9kZSBvclxcbitcXHQgKiBieSB0aGUgZGV2aWNlIG5vZGUgaXRzZWxmIGJlaW5nIGEgXFxcImZpeGVkLWxheW91dFxcXCIgY29udGFpbmVyLlxcbitcXHQgKi9cXG4rXFx0Y2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm52bWVtLWxheW91dFxcXCIpO1xcbitcXHRpZiAoY2hpbGQpXFxuK1xcdFxcdG9mX25vZGVfcHV0KGNoaWxkKTtcXG4rXFx0ZWxzZSBpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwiZml4ZWQtbGF5b3V0XFxcIikpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0aWYgKGJkZXZfbnJfYnl0ZXMoYmRldikgXFx1MDAzZSBJTlRfTUFYKSB7XFxuK1xcdFxcdGRldl93YXJuKGRldiwgXFxcImJsb2NrIGRldmljZSB0b28gbGFyZ2UgdG8gYmUgYW4gTlZNRU1cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0Y29uZmlnLmRldiA9IGRldjtcXG4rXFx0Y29uZmlnLm5hbWUgPSBkZXZfbmFtZShkZXYpO1xcbitcXHRjb25maWcucHJpdiA9IGJkZXY7XFxuK1xcdGNvbmZpZy5yZWdfcmVhZCA9IGJsa19udm1lbV9yZWdfcmVhZDtcXG4rXFx0Y29uZmlnLnNpemUgPSBiZGV2X25yX2J5dGVzKGJkZXYpO1xcbitcXHRjb25maWcub2Zfbm9kZSA9IG5wO1xcbitcXG4rXFx0bnZtZW0gPSBudm1lbV9yZWdpc3RlcihcXHUwMDI2Y29uZmlnKTtcXG4rXFx0aWYgKElTX0VSUihudm1lbSkpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byByZWdpc3RlciBOVk1FTSBkZXZpY2VcXFxcblxcXCIpO1xcbitcXG4rXFx0YmRldi1cXHUwMDNlYmRfbnZtZW0gPSBudm1lbTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldilcXG4re1xcbitcXHRudm1lbV91bnJlZ2lzdGVyKGJkZXYtXFx1MDAzZWJkX252bWVtKTtcXG4rXFx0YmRldi1cXHUwMDNlYmRfbnZtZW0gPSBOVUxMO1xcbit9XFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmhcXG5pbmRleCBlYWFjMDU4MTVjYjAzLi4wNzllZGI5ZmJjMzdhIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay5oXFxuKysrIGIvYmxvY2svYmxrLmhcXG5AQCAtODE3LDQgKzgxNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmxrX2RlYnVnZnNfdW5sb2NrKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxcbiBcXHRtZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpO1xcbiB9XFxuIFxcbisjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxcbitpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTtcXG4rdm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpO1xcbisjZWxzZVxcbitzdGF0aWMgaW5saW5lIGludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHsgcmV0dXJuIDA7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikge31cXG4rI2VuZGlmXFxuK1xcbiAjZW5kaWYgLyogQkxLX0lOVEVSTkFMX0ggKi9cXG5kaWZmIC0tZ2l0IGEvYmxvY2svZ2VuaGQuYyBiL2Jsb2NrL2dlbmhkLmNcXG5pbmRleCBkZjJjM2M2OWI0NjdkLi5mYzYzMjEyMmZhZThhIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2dlbmhkLmNcXG4rKysgYi9ibG9jay9nZW5oZC5jXFxuQEAgLTQxNyw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCBhZGRfZGlza19maW5hbChzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGRldl9zZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYsIDApO1xcbiBcXHRcXHRkaXNrX3VldmVudChkaXNrLCBLT0JKX0FERCk7XFxuK1xcbitcXHRcXHRibGtfbnZtZW1fYWRkKGRpc2stXFx1MDAzZXBhcnQwKTtcXG4gXFx0fVxcbiBcXG4gXFx0YmxrX2FwcGx5X2JkaV9saW1pdHMoZGlzay1cXHUwMDNlYmRpLCBcXHUwMDI2ZGlzay1cXHUwMDNlcXVldWUtXFx1MDAzZWxpbWl0cyk7XFxuQEAgLTcwMCw2ICs3MDIsOCBAQCBzdGF0aWMgdm9pZCBfX2RlbF9nZW5kaXNrKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbiBcXG4gXFx0ZGlza19kZWxfZXZlbnRzKGRpc2spO1xcbiBcXG4rXFx0YmxrX252bWVtX2RlbChkaXNrLVxcdTAwM2VwYXJ0MCk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBQcmV2ZW50IG5ldyBvcGVuZXJzIGJ5IHVubGlua2VkIHRoZSBiZGV2IGlub2RlLlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oIGIvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oXFxuaW5kZXggYjA5OTc0NjdiNjFhNS4uMzI2MDgxNDk5ZDlhNiAxMDA2NDRcXG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcXG4rKysgYi9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcXG5AQCAtMTcsNiArMTcsNyBAQCBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMge1xcbiBcXHRcXHRpbnQgZmxhZ3M7XFxuIFxcdFxcdGJvb2wgaGFzX2luZm87XFxuIFxcdFxcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvIGluZm87XFxuK1xcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGU7XFxuIFxcdH0gKnBhcnRzO1xcbiBcXHRpbnQgbmV4dDtcXG4gXFx0aW50IGxpbWl0O1xcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2NvcmUuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXFxuaW5kZXggYjVjNTliNzljYTdjYi4uYzgzMjI3NzEwNTg0YSAxMDA2NDRcXG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NvcmUuY1xcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXFxuQEAgLTExLDYgKzExLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N5c2ZzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jdHlwZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdm1hbGxvYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JhaWQvZGV0ZWN0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJjaGVjay5oXFxcIlxcbiBcXG5AQCAtMTEwLDggKzExMSwxNyBAQCBzdGF0aWMgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICphbGxvY2F0ZV9wYXJ0aXRpb25zKHN0cnVjdCBnZW5kaXNrICpoZClcXG4gXFx0cmV0dXJuIHN0YXRlO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbit7XFxuK1xcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2Mgc3RhdGUtXFx1MDAzZWxpbWl0OyBpKyspIHtcXG4rXFx0XFx0Zndub2RlX2hhbmRsZV9wdXQoc3RhdGUtXFx1MDAzZXBhcnRzW2ldLmZ3bm9kZSk7XFxuK1xcdFxcdHN0YXRlLVxcdTAwM2VwYXJ0c1tpXS5md25vZGUgPSBOVUxMO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGZyZWVfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbiB7XFxuK1xcdGRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0YXRlKTtcXG4gXFx0dmZyZWUoc3RhdGUtXFx1MDAzZXBhcnRzKTtcXG4gXFx0a2ZyZWUoc3RhdGUpO1xcbiB9XFxuQEAgLTEzOSw2ICsxNDksNyBAQCBzdGF0aWMgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpjaGVja19wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmhkKVxcbiBcXG4gXFx0aSA9IHJlcyA9IGVyciA9IDA7XFxuIFxcdHdoaWxlICghcmVzIFxcdTAwMjZcXHUwMDI2IGNoZWNrX3BhcnRbaV0pIHtcXG4rXFx0XFx0ZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RhdGUpO1xcbiBcXHRcXHRtZW1zZXQoc3RhdGUtXFx1MDAzZXBhcnRzLCAwLCBzdGF0ZS1cXHUwMDNlbGltaXQgKiBzaXplb2Yoc3RhdGUtXFx1MDAzZXBhcnRzWzBdKSk7XFxuIFxcdFxcdHJlcyA9IGNoZWNrX3BhcnRbaSsrXShzdGF0ZSk7XFxuIFxcdFxcdGlmIChyZXMgXFx1MDAzYyAwKSB7XFxuQEAgLTI0Nyw2ICsyNTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqcGFydF9hdHRyX2dyb3Vwc1tdID0ge1xcbiBcXG4gc3RhdGljIHZvaWQgcGFydF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4ge1xcbitcXHRmd25vZGVfaGFuZGxlX3B1dChkZXZfZndub2RlKGRldikpO1xcbiBcXHRwdXRfZGlzayhkZXZfdG9fYmRldihkZXYpLVxcdTAwM2ViZF9kaXNrKTtcXG4gXFx0YmRldl9kcm9wKGRldl90b19iZGV2KGRldikpO1xcbiB9XFxuQEAgLTI3Nyw2ICsyODksOCBAQCB2b2lkIGRyb3BfcGFydGl0aW9uKHN0cnVjdCBibG9ja19kZXZpY2UgKnBhcnQpXFxuIFxcdHhhX2VyYXNlKFxcdTAwMjZwYXJ0LVxcdTAwM2ViZF9kaXNrLVxcdTAwM2VwYXJ0X3RibCwgYmRldl9wYXJ0bm8ocGFydCkpO1xcbiBcXHRrb2JqZWN0X3B1dChwYXJ0LVxcdTAwM2ViZF9ob2xkZXJfZGlyKTtcXG4gXFxuK1xcdGJsa19udm1lbV9kZWwocGFydCk7XFxuK1xcbiBcXHRkZXZpY2VfZGVsKFxcdTAwMjZwYXJ0LVxcdTAwM2ViZF9kZXZpY2UpO1xcbiBcXHRwdXRfZGV2aWNlKFxcdTAwMjZwYXJ0LVxcdTAwM2ViZF9kZXZpY2UpO1xcbiB9XFxuQEAgLTI5NCw3ICszMDgsOCBAQCBzdGF0aWMgY29uc3QgREVWSUNFX0FUVFIod2hvbGVfZGlzaywgMDQ0NCwgd2hvbGVfZGlza19zaG93LCBOVUxMKTtcXG4gICovXFxuIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLFxcbiBcXHRcXHRcXHRcXHRzZWN0b3JfdCBzdGFydCwgc2VjdG9yX3QgbGVuLCBpbnQgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvKVxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcGFydGl0aW9uX21ldGFfaW5mbyAqaW5mbyxcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcXG4ge1xcbiBcXHRkZXZfdCBkZXZ0ID0gTUtERVYoMCwgMCk7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBkaXNrX3RvX2RldihkaXNrKTtcXG5AQCAtMzQzLDYgKzM1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLFxcbiBcXHRwZGV2LVxcdTAwM2VjbGFzcyA9IFxcdTAwMjZibG9ja19jbGFzcztcXG4gXFx0cGRldi1cXHUwMDNldHlwZSA9IFxcdTAwMjZwYXJ0X3R5cGU7XFxuIFxcdHBkZXYtXFx1MDAzZXBhcmVudCA9IGRkZXY7XFxuK1xcdGRldmljZV9zZXRfbm9kZShwZGV2LCBmd25vZGVfaGFuZGxlX2dldChmd25vZGUpKTtcXG4gXFxuIFxcdC8qIGluIGNvbnNlY3V0aXZlIG1pbm9yIHJhbmdlPyAqL1xcbiBcXHRpZiAoYmRldl9wYXJ0bm8oYmRldikgXFx1MDAzYyBkaXNrLVxcdTAwM2VtaW5vcnMpIHtcXG5AQCAtMzkyLDYgKzQwOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLFxcbiBcXHQvKiBzdXBwcmVzcyB1ZXZlbnQgaWYgdGhlIGRpc2sgc3VwcHJlc3NlcyBpdCAqL1xcbiBcXHRpZiAoIWRldl9nZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYpKVxcbiBcXHRcXHRrb2JqZWN0X3VldmVudChcXHUwMDI2cGRldi1cXHUwMDNla29iaiwgS09CSl9BREQpO1xcbitcXG4rXFx0YmxrX252bWVtX2FkZChiZGV2KTtcXG4rXFxuIFxcdHJldHVybiBiZGV2O1xcbiBcXG4gb3V0X2RlbDpcXG5AQCAtNDQ5LDcgKzQ2OCw3IEBAIGludCBiZGV2X2FkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sIHNlY3Rvcl90IHN0YXJ0LFxcbiBcXHR9XFxuIFxcbiBcXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwYXJ0bm8sIHN0YXJ0LCBsZW5ndGgsXFxuLVxcdFxcdFxcdEFERFBBUlRfRkxBR19OT05FLCBOVUxMKTtcXG4rXFx0XFx0XFx0QUREUEFSVF9GTEFHX05PTkUsIE5VTEwsIE5VTEwpO1xcbiBcXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8ocGFydCk7XFxuIG91dDpcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaXNrLVxcdTAwM2VvcGVuX211dGV4KTtcXG5AQCAtNTY0LDcgKzU4Myw3IEBAIHN0YXRpYyBib29sIGJsa19hZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLFxcbiBcXHR9XFxuIFxcbiBcXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwLCBmcm9tLCBzaXplLCBzdGF0ZS1cXHUwMDNlcGFydHNbcF0uZmxhZ3MsXFxuLVxcdFxcdFxcdCAgICAgXFx1MDAyNnN0YXRlLVxcdTAwM2VwYXJ0c1twXS5pbmZvKTtcXG4rXFx0XFx0XFx0ICAgICBcXHUwMDI2c3RhdGUtXFx1MDAzZXBhcnRzW3BdLmluZm8sIHN0YXRlLVxcdTAwM2VwYXJ0c1twXS5md25vZGUpO1xcbiBcXHRpZiAoSVNfRVJSKHBhcnQpKSB7XFxuIFxcdFxcdGlmIChQVFJfRVJSKHBhcnQpICE9IC1FTlhJTykge1xcbiBcXHRcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcIiAlczogcCVkIGNvdWxkIG5vdCBiZSBhZGRlZDogJXBlXFxcXG5cXFwiLFxcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL29mLmMgYi9ibG9jay9wYXJ0aXRpb25zL29mLmNcXG5pbmRleCA1MzY2NGVhMDZiNjU0Li40ZmM3YzgwYzQwN2RlIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xcbkBAIC0zLDYgKzMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYmxrZGV2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tYWpvci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdHJpbmcuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImNoZWNrLmhcXFwiXFxuIFxcbkBAIC02Miw2ICs2Myw4IEBAIHN0YXRpYyB2b2lkIGFkZF9vZl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgaW50IHNsb3QsXFxuIFxcdFxcdHBhcnRuYW1lID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCBcXFwibmFtZVxcXCIsIFxcdTAwMjZsZW4pO1xcbiBcXHRzdHJzY3B5KGluZm8tXFx1MDAzZXZvbG5hbWUsIHBhcnRuYW1lLCBzaXplb2YoaW5mby1cXHUwMDNldm9sbmFtZSkpO1xcbiBcXG4rXFx0c3RhdGUtXFx1MDAzZXBhcnRzW3Nsb3RdLmZ3bm9kZSA9IGZ3bm9kZV9oYW5kbGVfZ2V0KG9mX2Z3bm9kZV9oYW5kbGUobnApKTtcXG4rXFxuIFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiKCVzKVxcXCIsIGluZm8tXFx1MDAzZXZvbG5hbWUpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xcbmluZGV4IDEwYzQ5NmVhZWEyYzEuLjNjNmYwMjFiNzYyMTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xcbisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmNcXG5AQCAtNzIzLDggKzcyMywxMSBAQCBzdGF0aWMgaW50IHFjYV9jaGVja19iZGFkZHIoc3RydWN0IGhjaV9kZXYgKmhkZXYsIGNvbnN0IHN0cnVjdCBxY2FfZndfY29uZmlnICpjb1xcbiBcXHR9XFxuIFxcbiBcXHRiZGEgPSAoc3RydWN0IGhjaV9ycF9yZWFkX2JkX2FkZHIgKilza2ItXFx1MDAzZWRhdGE7XFxuLVxcdGlmICghYmFjbXAoXFx1MDAyNmJkYS1cXHUwMDNlYmRhZGRyLCBcXHUwMDI2Y29uZmlnLVxcdTAwM2ViZGFkZHIpKVxcbitcXHRpZiAoIWJhY21wKFxcdTAwMjZiZGEtXFx1MDAzZWJkYWRkciwgXFx1MDAyNmNvbmZpZy1cXHUwMDNlYmRhZGRyKSkge1xcbiBcXHRcXHRoY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTtcXG4rXFx0XFx0aGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSk7XFxuK1xcdFxcdGhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSk7XFxuK1xcdH1cXG4gXFxuIFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xcbmluZGV4IGI5MDU4NGUxYjk5ZWEuLmVmYTYzMWNlNzI4M2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmNcXG4rKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xcbkBAIC0xNjcsNyArMTY3LDE4IEBAIHN0YXRpYyBpbnQgbnZtZW1fbGF5b3V0X2J1c19wb3B1bGF0ZShzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSxcXG4gXFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0pXFxuIHtcXG4tXFx0cmV0dXJuIG9mX2dldF9jaGlsZF9ieV9uYW1lKG52bWVtLVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm52bWVtLWxheW91dFxcXCIpO1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbitcXG4rXFx0LyogU2VhcmNoIGZvciBudm1lbS1sYXlvdXQgY2hpbGQgKi9cXG4rXFx0bnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJudm1lbS1sYXlvdXRcXFwiKTtcXG4rXFx0aWYgKG5wKVxcbitcXHRcXHRyZXR1cm4gbnA7XFxuK1xcbitcXHQvKiBUaGUgbnZtZW0gb2Zfbm9kZSBpcyBpdHNlbGYgYSBmaXhlZC1sYXlvdXQgbm9kZSAqL1xcbitcXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnZtZW0tXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwiZml4ZWQtbGF5b3V0XFxcIikpXFxuK1xcdFxcdHJldHVybiBvZl9ub2RlX2dldChudm1lbS1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwob2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcXG5pbmRleCA4ODA4ZWU3NmU3M2MwLi42ZWQxNzNjNjQ5MDI1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gc3RydWN0IGJpb19zZXQ7XFxuIHN0cnVjdCBiaW87XFxuIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQ7XFxuK3N0cnVjdCBudm1lbV9kZXZpY2U7XFxuIHN0cnVjdCBwYWdlO1xcbiBzdHJ1Y3QgaW9fY29udGV4dDtcXG4gc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7XFxuQEAgLTczLDYgKzc0LDkgQEAgc3RydWN0IGJsb2NrX2RldmljZSB7XFxuIFxcdGludFxcdFxcdFxcdGJkX3dyaXRlcnM7XFxuICNpZmRlZiBDT05GSUdfU0VDVVJJVFlcXG4gXFx0dm9pZFxcdFxcdFxcdCpiZF9zZWN1cml0eTtcXG4rI2VuZGlmXFxuKyNpZmRlZiBDT05GSUdfQkxLX05WTUVNXFxuK1xcdHN0cnVjdCBudm1lbV9kZXZpY2VcXHQqYmRfbnZtZW07XFxuICNlbmRpZlxcbiBcXHQvKlxcbiBcXHQgKiBrZWVwIHRoaXMgb3V0LW9mLWxpbmUgYXMgaXQncyBib3RoIGJpZyBhbmQgbm90IG5lZWRlZCBpbiB0aGUgZmFzdFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29mX25ldC5oIGIvaW5jbHVkZS9saW51eC9vZl9uZXQuaFxcbmluZGV4IGQ4ODcxNWEwYjNhNTIuLjc4NTRiYTU1NWQ5YTUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcXG5AQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTtcXG4gZXh0ZXJuIGludCBvZl9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCwgcGh5X2ludGVyZmFjZV90ICppbnRlcmZhY2UpO1xcbiBleHRlcm4gaW50IG9mX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKTtcXG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XFxuK2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcik7XFxuIGludCBvZl9nZXRfZXRoZGV2X2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuIGV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqb2ZfZmluZF9uZXRfZGV2aWNlX2J5X25vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCk7XFxuICNlbHNlXFxuQEAgLTM0LDYgKzM1LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKVxcbiBcXHRyZXR1cm4gLUVOT0RFVjtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X252bWVtX2V1aTQ4KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuK1xcdFxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpXFxuK3tcXG4rXFx0cmV0dXJuIC1FTk9ERVY7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHJldHVybiAtRU5PREVWO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmhcXG5pbmRleCA1MGYwZWVmNzFmYjE5Li43NGZhNDAyNTA0MDEyIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxcbkBAIC0xNjEsNiArMTYxLDI0IEBAIGVudW0ge1xcbiBcXHQgKi9cXG4gXFx0SENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sXFxuIFxcbitcXHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgcHVibGljIEJsdWV0b290aCBhZGRyZXNzXFxuK1xcdCAqIGluaXRpYWxseSByZXBvcnRlZCBieSBIQ0kgUmVhZCBCRCBBZGRyZXNzIGNvbW1hbmRcXG4rXFx0ICogaXMgY29uc2lkZXJlZCBpbnZhbGlkLiBUaGUgcHVibGljIEJEIEFkZHJlc3MgY2FuIGJlXFxuK1xcdCAqIHJldHJpZXZlZCB2aWEgYSAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbC5cXG4rXFx0ICpcXG4rXFx0ICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvclxcbitcXHQgKiBkdXJpbmcgdGhlIGhkZXYtXFx1MDAzZXNldHVwIHZlbmRvciBjYWxsYmFjay5cXG4rXFx0ICovXFxuK1xcdEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNLFxcbitcXG4rXFx0LyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIEJsdWV0b290aCBEZXZpY2UgQWRkcmVzcyBwcm92aWRlZCBieVxcbitcXHQgKiB0aGUgJ2xvY2FsLWJkLWFkZHJlc3MnIE5WTUVNIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuIG9yZGVyLlxcbitcXHQgKlxcbitcXHQgKiBUaGlzIHF1aXJrIGNhbiBiZSBzZXQgYmVmb3JlIGhjaV9yZWdpc3Rlcl9kZXYgaXMgY2FsbGVkIG9yXFxuK1xcdCAqIGR1cmluZyB0aGUgaGRldi1cXHUwMDNlc2V0dXAgdmVuZG9yIGNhbGxiYWNrLlxcbitcXHQgKi9cXG4rXFx0SENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSxcXG4rXFxuIFxcdC8qIFdoZW4gdGhpcyBxdWlyayBpcyBzZXQsIHRoZSBkdXBsaWNhdGUgZmlsdGVyaW5nIGR1cmluZ1xcbiBcXHQgKiBzY2FubmluZyBpcyBiYXNlZCBvbiBCbHVldG9vdGggZGV2aWNlcyBhZGRyZXNzZXMuIFRvIGFsbG93XFxuIFxcdCAqIFJTU0kgYmFzZWQgdXBkYXRlcywgcmVzdGFydCBzY2FubmluZyBpZiBuZWVkZWQuXFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xcbmluZGV4IGM4ZDE0MTI4YzM2M2QuLjgxMzJhMTQ4N2FjMjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXFxuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXFxuQEAgLTcsNiArNyw3IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvYmx1ZXRvb3RoL2JsdWV0b290aC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2JsdWV0b290aC9oY2lfY29yZS5oXFx1MDAzZVxcbkBAIC0zNzAxLDYgKzM3MDIsMzkgQEAgaW50IGhjaV9wb3dlcmVkX3VwZGF0ZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXFxuKyAqXFx0XFx0XFx0XFx0ICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cXG4rICpcXHRcXHRcXHRcXHQgICAgYW4gTlZNRU0gY2VsbC5cXG4rICogQGhkZXY6XFx0VGhlIEhDSSBkZXZpY2VcXG4rICpcXG4rICogU2VhcmNoIGZvciAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbCBpbiB0aGUgZGV2aWNlIGZpcm13YXJlIG5vZGUuXFxuKyAqXFxuKyAqIEFsbC16ZXJvIEJEIGFkZHJlc3NlcyBhcmUgcmVqZWN0ZWQgKHVucHJvdmlzaW9uZWQpLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitzdGF0aWMgaW50IGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoaGRldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuK1xcdHU4IGJhW3NpemVvZihiZGFkZHJfdCldO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKCFucClcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHRlcnIgPSBvZl9nZXRfbnZtZW1fZXVpNDgobnAsIFxcXCJsb2NhbC1iZC1hZGRyZXNzXFxcIiwgYmEpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0aWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUpKVxcbitcXHRcXHRiYXN3YXAoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCAoYmRhZGRyX3QgKiliYSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0YmFjcHkoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCAoYmRhZGRyX3QgKiliYSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXFxuICAqXFx0XFx0XFx0XFx0ICAgICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cXG5AQCAtNTE4MCwxMiArNTIxNCwxNyBAQCBzdGF0aWMgaW50IGhjaV9kZXZfc2V0dXBfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4gXFx0ICogaXRzIHNldHVwIGNhbGxiYWNrLlxcbiBcXHQgKi9cXG4gXFx0aW52YWxpZF9iZGFkZHIgPSBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8XFxuLVxcdFxcdFxcdCBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSk7XFxuK1xcdFxcdFxcdCBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcXG4rXFx0XFx0XFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTtcXG4gXFx0aWYgKCFyZXQpIHtcXG4gXFx0XFx0aWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIWJhY21wKFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXFxuIFxcdFxcdFxcdGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eShoZGV2KTtcXG4gXFxuK1xcdFxcdGlmIChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFiYWNtcChcXHUwMDI2aGRldi1cXHUwMDNlcHVibGljX2FkZHIsIEJEQUREUl9BTlkpKVxcbitcXHRcXHRcXHRoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oaGRldik7XFxuK1xcbiBcXHRcXHRpZiAoaW52YWxpZF9iZGFkZHIgXFx1MDAyNlxcdTAwMjYgYmFjbXAoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGRldi1cXHUwMDNlc2V0X2JkYWRkcikge1xcbiBcXHRcXHRcXHRyZXQgPSBoZGV2LVxcdTAwM2VzZXRfYmRhZGRyKGhkZXYsIFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkcik7XFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvbWdtdC5jIGIvbmV0L2JsdWV0b290aC9tZ210LmNcXG5pbmRleCAxNjdkNzVlMzQ1MjY2Li5hMzlkNzYzYTQyMjVhIDEwMDY0NFxcbi0tLSBhL25ldC9ibHVldG9vdGgvbWdtdC5jXFxuKysrIGIvbmV0L2JsdWV0b290aC9tZ210LmNcXG5AQCAtNjE0LDcgKzYxNCw4IEBAIHN0YXRpYyBib29sIGlzX2NvbmZpZ3VyZWQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fFxcbi1cXHQgICAgIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcXG4rXFx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSkpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAhYmFjbXAoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG5AQCAtNjMwLDcgKzYzMSw4IEBAIHN0YXRpYyBfX2xlMzIgZ2V0X21pc3Npbmdfb3B0aW9ucyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4gXFx0XFx0b3B0aW9ucyB8PSBNR01UX09QVElPTl9FWFRFUk5BTF9DT05GSUc7XFxuIFxcbiBcXHRpZiAoKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19JTlZBTElEX0JEQUREUikgfHxcXG4tXFx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8XFxuK1xcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIWJhY21wKFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXFxuIFxcdFxcdG9wdGlvbnMgfD0gTUdNVF9PUFRJT05fUFVCTElDX0FERFJFU1M7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9vZl9uZXQuYyBiL25ldC9jb3JlL29mX25ldC5jXFxuaW5kZXggOTNlYTQyNWI5MjQ4YS4uOTk5Y2EwZTkyNThjNCAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9vZl9uZXQuY1xcbisrKyBiL25ldC9jb3JlL29mX25ldC5jXFxuQEAgLTYxLDkgKzYxLDcgQEAgc3RhdGljIGludCBvZl9nZXRfbWFjX2FkZHIoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqbmFtZSwgdTggKmFkZHIpXFxuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKmFkZHIpXFxuIHtcXG4gXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUobnApO1xcbi1cXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcXG4tXFx0Y29uc3Qgdm9pZCAqbWFjO1xcbi1cXHRzaXplX3QgbGVuO1xcbitcXHR1OCBtYWNbRVRIX0FMRU5dIF9fYWxpZ25lZChzaXplb2YodTE2KSk7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHQvKiBUcnkgbG9va3VwIGJ5IGRldmljZSBmaXJzdCwgdGhlcmUgbWlnaHQgYmUgYSBudm1lbV9jZWxsX2xvb2t1cFxcbkBAIC03NSwyNyArNzMsNTcgQEAgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4tXFx0Y2VsbCA9IG9mX252bWVtX2NlbGxfZ2V0KG5wLCBcXFwibWFjLWFkZHJlc3NcXFwiKTtcXG4rXFx0cmV0ID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCBcXFwibWFjLWFkZHJlc3NcXFwiLCBtYWMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKG1hYykpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0bWVtY3B5KGFkZHIsIG1hYywgRVRIX0FMRU4pO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XFxuK1xcbisvKipcXG4rICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC5cXG4rICogQG5wOlxcdFxcdERldmljZSBub2RlIHRvIGxvb2sgdXAgdGhlIE5WTUVNIGNlbGwgZnJvbS5cXG4rICogQGNlbGxfbmFtZTpcXHROYW1lIG9mIHRoZSBOVk1FTSBjZWxsIChlLmcuIFxcXCJtYWMtYWRkcmVzc1xcXCIsIFxcXCJsb2NhbC1iZC1hZGRyZXNzXFxcIikuXFxuKyAqIEBhZGRyOlxcdE91dHB1dCBidWZmZXIgZm9yIHRoZSA2LWJ5dGUgYWRkcmVzcy5cXG4rICpcXG4rICogUmVhZHMgdGhlIG5hbWVkIE5WTUVNIGNlbGwgYW5kIHZhbGlkYXRlcyB0aGF0IGl0IGNvbnRhaW5zIGEgbm9uLXplcm8gNi1ieXRlXFxuKyAqIGFkZHJlc3MuIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxcbisgKi9cXG4raW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxcbit7XFxuK1xcdHN0cnVjdCBudm1lbV9jZWxsICpjZWxsO1xcbitcXHRjb25zdCB2b2lkICpldWk0ODtcXG4rXFx0c2l6ZV90IGxlbjtcXG4rXFxuK1xcdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgY2VsbF9uYW1lKTtcXG4gXFx0aWYgKElTX0VSUihjZWxsKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2VsbCk7XFxuIFxcbi1cXHRtYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXFx1MDAyNmxlbik7XFxuK1xcdGV1aTQ4ID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsIFxcdTAwMjZsZW4pO1xcbiBcXHRudm1lbV9jZWxsX3B1dChjZWxsKTtcXG4gXFxuLVxcdGlmIChJU19FUlIobWFjKSlcXG4tXFx0XFx0cmV0dXJuIFBUUl9FUlIobWFjKTtcXG4rXFx0aWYgKElTX0VSUihldWk0OCkpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKGV1aTQ4KTtcXG4gXFxuLVxcdGlmIChsZW4gIT0gRVRIX0FMRU4gfHwgIWlzX3ZhbGlkX2V0aGVyX2FkZHIobWFjKSkge1xcbi1cXHRcXHRrZnJlZShtYWMpO1xcbitcXHQvKiBSZWplY3QgdW5wcm9ncmFtbWVkIGNlbGxzIHRoYXQgcmVhZCBhcyBhbGwtemVyb2VzIG9yIGFsbC1vbmVzICovXFxuK1xcdGlmIChsZW4gIT0gRVRIX0FMRU4gfHxcXG4rXFx0ICAgICFtZW1jaHJfaW52KGV1aTQ4LCAweDAwLCBFVEhfQUxFTikgfHxcXG4rXFx0ICAgICFtZW1jaHJfaW52KGV1aTQ4LCAweGZmLCBFVEhfQUxFTikpIHtcXG4rXFx0XFx0a2ZyZWUoZXVpNDgpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4tXFx0bWVtY3B5KGFkZHIsIG1hYywgRVRIX0FMRU4pO1xcbi1cXHRrZnJlZShtYWMpO1xcbitcXHRtZW1jcHkoYWRkciwgZXVpNDgsIEVUSF9BTEVOKTtcXG4rXFx0a2ZyZWUoZXVpNDgpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xcbitFWFBPUlRfU1lNQk9MX0dQTChvZl9nZXRfbnZtZW1fZXVpNDgpO1xcbiBcXG4gLyoqXFxuICAqIG9mX2dldF9tYWNfYWRkcmVzcygpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE0OjQxLjY4MzY2MDI3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcyOTMzNjQ1NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19OVk1FTVwiLFxuICAgIFwiTlZNRU1cIixcbiAgICBcIk9GXCIsXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa19udm1lbV9yZWdfcmVhZFwiLFxuICAgIFwiYmxrX252bWVtX2FkZFwiLFxuICAgIFwiYmxrX252bWVtX2RlbFwiLFxuICAgIFwiaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtXCIsXG4gICAgXCJvZl9nZXRfbnZtZW1fZXVpNDhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNTI3YzdhMThlODY1NWU5ZmQ0ZjdjNjE3MjBjNWJmMGI4ZmFhNDg4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNzoxNDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbFxuaW5kZXggYTYxZDZjOTZkZjc1OS4uMDQyMjg5NDUwODQ3OCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXG5AQCAtMzgsNyArMzgsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcbiAgICAgcHJvcGVydGllczpcbiAgICAgICBjb21wYXRpYmxlOlxuICAgICAgICAgY29udGFpbnM6XG4tICAgICAgICAgIGNvbnN0OiBmaXhlZC1wYXJ0aXRpb25zXG4rICAgICAgICAgIGVudW06XG4rICAgICAgICAgICAgLSBmaXhlZC1wYXJ0aXRpb25zXG4rICAgICAgICAgICAgLSBmaXhlZC1sYXlvdXRcbiBcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuQEAgLTg2LDYgKzg4LDI1IEBAIGV4YW1wbGVzOlxuICAgICAgICAgICAgICAgICAgICAgcmVhZC1vbmx5O1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIH07XG4rXG4rICAgICAgICAgICAgcGFydGl0aW9ucy1ib290MiB7XG4rICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcImZpeGVkLWxheW91dFwiO1xuK1xuKyAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcbisgICAgICAgICAgICAgICAgbWFjLWFkZHJANDQwMCB7XG4rICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCJtYWMtYmFzZVwiO1xuKyAgICAgICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMHg0NDAwIDB4Nlx1MDAzZTtcbisgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgICAgICAgfTtcbitcbisgICAgICAgICAgICAgICAgYmQtYWRkckA1NDAwIHtcbisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcIm1hYy1iYXNlXCI7XG4rICAgICAgICAgICAgICAgICAgICByZWcgPSBcdTAwM2MweDU0MDAgMHg2XHUwMDNlO1xuKyAgICAgICAgICAgICAgICAgICAgI252bWVtLWNlbGwtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICAgICAgICB9O1xuKyAgICAgICAgICAgIH07XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWxcbmluZGV4IGM4ZTljNTVjMWFmYjQuLjdjYjI4ZjMwYzlhZjAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWxcbkBAIC0yMiw0ICsyMiwxMyBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBib290IGZpcm13YXJlIGlzIGluY29ycmVjdGx5IHBhc3NpbmcgdGhlIGFkZHJlc3MgaW4gYmlnLWVuZGlhbiBvcmRlclxuIFxuKyAgbnZtZW0tY2VsbHM6XG4rICAgIG1heEl0ZW1zOiAxXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIE52bWVtIGRhdGEgY2VsbCB0aGF0IGNvbnRhaW5zIGEgNiBieXRlIEJEIGFkZHJlc3Mgd2l0aCB0aGUgbW9zdFxuKyAgICAgIHNpZ25pZmljYW50IGJ5dGUgZmlyc3QgKGJpZy1lbmRpYW4pLlxuK1xuKyAgbnZtZW0tY2VsbC1uYW1lczpcbisgICAgY29uc3Q6IGxvY2FsLWJkLWFkZHJlc3NcbitcbiBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuaW5kZXggZDRmNGQ3MmVlMGQzOC4uN2Y5ZDE2Y2I3YzE0MyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway55YW1sXG5AQCAtOTIsNiArOTIsMjIgQEAgcHJvcGVydGllczpcbiBcbiAgIGllZWU4MDIxMS1mcmVxLWxpbWl0OiB0cnVlXG4gXG4rICBudm1lbS1jZWxsczpcbisgICAgbWluSXRlbXM6IDFcbisgICAgbWF4SXRlbXM6IDNcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgUmVmZXJlbmNlcyB0byBudm1lbSBjZWxscyBmb3IgTUFDIGFkZHJlc3MgYW5kL29yIGNhbGlicmF0aW9uIGRhdGEuXG4rICAgICAgU3VwcG9ydGVkIGNlbGwgbmFtZXMgYXJlIG1hYy1hZGRyZXNzLCBjYWxpYnJhdGlvbiwgYW5kIHByZS1jYWxpYnJhdGlvbi5cbitcbisgIG52bWVtLWNlbGwtbmFtZXM6XG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIG1heEl0ZW1zOiAzXG4rICAgIGl0ZW1zOlxuKyAgICAgIGVudW06XG4rICAgICAgICAtIG1hYy1hZGRyZXNzXG4rICAgICAgICAtIGNhbGlicmF0aW9uXG4rICAgICAgICAtIHByZS1jYWxpYnJhdGlvblxuK1xuICAgcWNvbSxjYWxpYnJhdGlvbi1kYXRhOlxuICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50OC1hcnJheVxuICAgICBkZXNjcmlwdGlvbjpcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzXG5pbmRleCBiZjA4OGZhOTgwN2YwLi4zODgzOWI4YTM2MWU3IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzXG5AQCAtNDA5LDcgKzQwOSwzMyBAQCBcdTAwMjZzZGhjXzEge1xuIFx0bm8tc2RpbztcbiBcdG5vLXNkO1xuIFxuK1x0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuIFx0c3RhdHVzID0gXCJva2F5XCI7XG4rXG4rXHRjYXJkQDAge1xuK1x0XHRjb21wYXRpYmxlID0gXCJtbWMtY2FyZFwiO1xuK1x0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuK1xuK1x0XHRwYXJ0aXRpb25zLWJvb3QxIHtcbitcdFx0XHRjb21wYXRpYmxlID0gXCJmaXhlZC1sYXlvdXRcIjtcbitcdFx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1xuK1x0XHRcdHdpZmlfbWFjX2FkZHI6IG1hYy1hZGRyQDQ0MDAge1xuK1x0XHRcdFx0Y29tcGF0aWJsZSA9IFwibWFjLWJhc2VcIjtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzB4NDQwMCAweDZcdTAwM2U7XG4rXHRcdFx0XHQjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0fTtcbitcbitcdFx0XHRiZF9hZGRyOiBiZC1hZGRyQDU0MDAge1xuK1x0XHRcdFx0Y29tcGF0aWJsZSA9IFwibWFjLWJhc2VcIjtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzB4NTQwMCAweDZcdTAwM2U7XG4rXHRcdFx0XHQjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0fTtcbitcdFx0fTtcbitcdH07XG4gfTtcbiBcbiBcdTAwMjZzcGk1IHtcbkBAIC01MTIsNiArNTM4LDkgQEAgYmx1ZXRvb3RoIHtcbiBcdFx0dmRkY2gwLXN1cHBseSA9IFx1MDAzY1x1MDAyNnBtNDEyNV9sMjJcdTAwM2U7XG4gXHRcdGVuYWJsZS1ncGlvcyA9IFx1MDAzY1x1MDAyNnRsbW0gODcgR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbiBcdFx0bWF4LXNwZWVkID0gXHUwMDNjMzAwMDAwMFx1MDAzZTtcbitcbitcdFx0bnZtZW0tY2VsbHMgPSBcdTAwM2NcdTAwMjZiZF9hZGRyIDBcdTAwM2U7XG4rXHRcdG52bWVtLWNlbGwtbmFtZXMgPSBcImxvY2FsLWJkLWFkZHJlc3NcIjtcbiBcdH07XG4gfTtcbiBcbkBAIC01NTcsNiArNTg2LDkgQEAgXHUwMDI2d2lmaSB7XG4gXHRxY29tLGF0aDEway1jYWxpYnJhdGlvbi12YXJpYW50ID0gXCJBcmR1aW5vSW1vbGFcIjtcbiBcdGZpcm13YXJlLW5hbWUgPSBcInFjbTIyOTBcIjtcbiBcbitcdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2d2lmaV9tYWNfYWRkciAwXHUwMDNlO1xuK1x0bnZtZW0tY2VsbC1uYW1lcyA9IFwibWFjLWFkZHJlc3NcIjtcbitcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZyBiL2Jsb2NrL0tjb25maWdcbmluZGV4IDcwZTRhNjZkOTQxZmYuLjQ4OTlhZDU3MmM3MWYgMTAwNjQ0XG4tLS0gYS9ibG9jay9LY29uZmlnXG4rKysgYi9ibG9jay9LY29uZmlnXG5AQCAtMjA5LDYgKzIwOSwxNyBAQCBjb25maWcgQkxLX0lOTElORV9FTkNSWVBUSU9OX0ZBTExCQUNLXG4gXHQgIGJ5IGZhbGxpbmcgYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkgd2hlbiBpbmxpbmVcbiBcdCAgZW5jcnlwdGlvbiBoYXJkd2FyZSBpcyBub3QgcHJlc2VudC5cbiBcbitjb25maWcgQkxLX05WTUVNXG4rXHRib29sIFwiQmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyXCJcbitcdGRlcGVuZHMgb24gT0ZcbitcdGRlcGVuZHMgb24gTlZNRU1cbitcdGhlbHBcbitcdCAgQWxsb3cgYmxvY2sgZGV2aWNlcyAob3IgcGFydGl0aW9ucykgdG8gYWN0IGFzIE5WTUVNIHByb3ZpZGVycyxcbitcdCAgZXhwb3NpbmcgZmFjdG9yeS1wcm92aXNpb25lZCBkYXRhIHN1Y2ggYXMgTUFDIGFkZHJlc3NlcyBvciBXaS1GaVxuK1x0ICBjYWxpYnJhdGlvbiBibG9icyB0byB0aGUgZHJpdmVycyB0aGF0IGNvbnN1bWUgdGhlbS4gVGhpcyBpc1xuK1x0ICB0eXBpY2FsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHdoZXJlIHN1Y2ggZGF0YSBpcyBzdG9yZWQgaW4gYVxuK1x0ICBkZWRpY2F0ZWQgYXJlYSBvZiBhbiBlTU1DLCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgRUVQUk9NIG9yIE9UUC5cbitcbiBzb3VyY2UgXCJibG9jay9wYXJ0aXRpb25zL0tjb25maWdcIlxuIFxuIGNvbmZpZyBCTEtfUE1cbmRpZmYgLS1naXQgYS9ibG9jay9NYWtlZmlsZSBiL2Jsb2NrL01ha2VmaWxlXG5pbmRleCBlN2JkMzIwZTNkNjk3Li44MjAwMjk3ZmJjYmFiIDEwMDY0NFxuLS0tIGEvYmxvY2svTWFrZWZpbGVcbisrKyBiL2Jsb2NrL01ha2VmaWxlXG5AQCAtMzksMyArMzksNCBAQCBvYmotJChDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OKVx0Kz0gYmxrLWNyeXB0by5vIGJsay1jcnlwdG8tcHJvZmlsZS5vIFxcXG4gXHRcdFx0XHRcdCAgIGJsay1jcnlwdG8tc3lzZnMub1xuIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0spXHQrPSBibGstY3J5cHRvLWZhbGxiYWNrLm9cbiBvYmotJChDT05GSUdfQkxPQ0tfSE9MREVSX0RFUFJFQ0FURUQpXHQrPSBob2xkZXIub1xuK29iai0kKENPTkZJR19CTEtfTlZNRU0pICAgICAgICAgICAgICAgICs9IGJsay1udm1lbS5vXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW52bWVtLmMgYi9ibG9jay9ibGstbnZtZW0uY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjY5YjY5MTg0ZTE2MzBcbi0tLSAvZGV2L251bGxcbisrKyBiL2Jsb2NrL2Jsay1udm1lbS5jXG5AQCAtMCwwICsxLDExMiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4rLypcbisgKiBibG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXJcbisgKlxuKyAqIENvcHlyaWdodCAoYykgMjAyNCBEYW5pZWwgR29sbGUgXHUwMDNjZGFuaWVsQG1ha3JvdG9waWEub3JnXHUwMDNlXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4rICpcbisgKiBVc2VmdWwgb24gZGV2aWNlcyB1c2luZyBhIHdob2xlIGRpc2sgb3IgYSBwYXJ0aXRpb24gKGUuZy4gYW4gZU1NQyBib290XG4rICogcGFydGl0aW9uKSB0byBzdG9yZSBNQUMgYWRkcmVzc2VzLCBCbHVldG9vdGggYWRkcmVzc2VzIG9yIFdpLUZpXG4rICogY2FsaWJyYXRpb24gRUVQUk9NIGRhdGEuXG4rICpcbisgKiBUaGUgTlZNRU0gZGV2aWNlIGlzIGEgc2lkZSBjaGFubmVsIG9udG8gYSBibG9jayBkZXZpY2UgdGhhdCBzdGF5cyBmdWxseVxuKyAqIHVzYWJsZS4gVGhpcyBpcyBzb21ld2hhdCBtaXRpZ2F0ZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIGV4Y2x1c2l2ZWx5LlxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZmlsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L252bWVtLXByb3ZpZGVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbitcbisjaW5jbHVkZSBcImJsay5oXCJcbitcbitzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcbitcdFx0XHQgICAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcylcbit7XG4rXHRzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gcHJpdjtcbitcdHN0cnVjdCBmaWxlICpiZGV2X2ZpbGU7XG4rXHRsb2ZmX3QgcG9zID0gZnJvbTtcbitcdHNzaXplX3QgcmV0O1xuK1xuK1x0Lyogb3BlbiBhbmQgcHJldmVudCBvdGhlciBleGNsdXNpdmUgb3BlbmVycyAqL1xuK1x0YmRldl9maWxlID0gYmRldl9maWxlX29wZW5fYnlfZGV2KGJkZXYtXHUwMDNlYmRfZGV2LFxuK1x0XHRcdFx0XHQgIEJMS19PUEVOX1JFQUQgfCBCTEtfT1BFTl9FWENMLFxuK1x0XHRcdFx0XHQgIGJsa19udm1lbV9yZWdfcmVhZCwgTlVMTCk7XG4rXHRpZiAoSVNfRVJSKGJkZXZfZmlsZSkpXG4rXHRcdHJldHVybiBQVFJfRVJSKGJkZXZfZmlsZSk7XG4rXG4rXHRpZiAoZmlsZV9iZGV2KGJkZXZfZmlsZSkgIT0gYmRldikge1xuK1x0XHRmcHV0KGJkZXZfZmlsZSk7XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuK1xuK1x0cmV0ID0ga2VybmVsX3JlYWQoYmRldl9maWxlLCB2YWwsIGJ5dGVzLCBcdTAwMjZwb3MpO1xuK1x0ZnB1dChiZGV2X2ZpbGUpO1xuK1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHJldDtcbitcdGlmIChyZXQgIT0gYnl0ZXMpXG4rXHRcdHJldHVybiAtRUlPO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK2ludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2YmRldi1cdTAwM2ViZF9kZXZpY2U7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoZGV2KTtcbitcdHN0cnVjdCBudm1lbV9jb25maWcgY29uZmlnID0ge1xuK1x0XHQuaWRcdFx0PSBOVk1FTV9ERVZJRF9OT05FLFxuK1x0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbitcdFx0LndvcmRfc2l6ZVx0PSAxLFxuK1x0XHQuc3RyaWRlXHRcdD0gMSxcbitcdFx0LnJlYWRfb25seVx0PSB0cnVlLFxuK1x0XHQucm9vdF9vbmx5XHQ9IHRydWUsXG4rXHRcdC5pZ25vcmVfd3BcdD0gdHJ1ZSxcbitcdH07XG4rXHRzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbTtcbitcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQ7XG4rXG4rXHQvKiBza2lwIGRldmljZXMgd2hpY2ggZG8gbm90IGhhdmUgYSBkZXZpY2UgdHJlZSBub2RlICovXG4rXHRpZiAoIW5wKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qXG4rXHQgKiBUaGUgbGF5b3V0IGlzIGRlc2NyaWJlZCBlaXRoZXIgYnkgYW4gXCJudm1lbS1sYXlvdXRcIiBjaGlsZCBub2RlIG9yXG4rXHQgKiBieSB0aGUgZGV2aWNlIG5vZGUgaXRzZWxmIGJlaW5nIGEgXCJmaXhlZC1sYXlvdXRcIiBjb250YWluZXIuXG4rXHQgKi9cbitcdGNoaWxkID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwibnZtZW0tbGF5b3V0XCIpO1xuK1x0aWYgKGNoaWxkKVxuK1x0XHRvZl9ub2RlX3B1dChjaGlsZCk7XG4rXHRlbHNlIGlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwiZml4ZWQtbGF5b3V0XCIpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmIChiZGV2X25yX2J5dGVzKGJkZXYpIFx1MDAzZSBJTlRfTUFYKSB7XG4rXHRcdGRldl93YXJuKGRldiwgXCJibG9jayBkZXZpY2UgdG9vIGxhcmdlIHRvIGJlIGFuIE5WTUVNXFxuXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdGNvbmZpZy5kZXYgPSBkZXY7XG4rXHRjb25maWcubmFtZSA9IGRldl9uYW1lKGRldik7XG4rXHRjb25maWcucHJpdiA9IGJkZXY7XG4rXHRjb25maWcucmVnX3JlYWQgPSBibGtfbnZtZW1fcmVnX3JlYWQ7XG4rXHRjb25maWcuc2l6ZSA9IGJkZXZfbnJfYnl0ZXMoYmRldik7XG4rXHRjb25maWcub2Zfbm9kZSA9IG5wO1xuK1xuK1x0bnZtZW0gPSBudm1lbV9yZWdpc3RlcihcdTAwMjZjb25maWcpO1xuK1x0aWYgKElTX0VSUihudm1lbSkpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksXG4rXHRcdFx0XHQgICAgIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIE5WTUVNIGRldmljZVxcblwiKTtcbitcbitcdGJkZXYtXHUwMDNlYmRfbnZtZW0gPSBudm1lbTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbit2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldilcbit7XG4rXHRudm1lbV91bnJlZ2lzdGVyKGJkZXYtXHUwMDNlYmRfbnZtZW0pO1xuK1x0YmRldi1cdTAwM2ViZF9udm1lbSA9IE5VTEw7XG4rfVxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmhcbmluZGV4IGVhYWMwNTgxNWNiMDMuLjA3OWVkYjlmYmMzN2EgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGsuaFxuKysrIGIvYmxvY2svYmxrLmhcbkBAIC04MTcsNCArODE3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibGtfZGVidWdmc191bmxvY2soc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsXG4gXHRtZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpO1xuIH1cbiBcbisjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxuK2ludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpO1xuK3ZvaWQgYmxrX252bWVtX2RlbChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTtcbisjZWxzZVxuK3N0YXRpYyBpbmxpbmUgaW50IGJsa19udm1lbV9hZGQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikgeyByZXR1cm4gMDsgfVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHt9XG4rI2VuZGlmXG4rXG4gI2VuZGlmIC8qIEJMS19JTlRFUk5BTF9IICovXG5kaWZmIC0tZ2l0IGEvYmxvY2svZ2VuaGQuYyBiL2Jsb2NrL2dlbmhkLmNcbmluZGV4IGRmMmMzYzY5YjQ2N2QuLmZjNjMyMTIyZmFlOGEgMTAwNjQ0XG4tLS0gYS9ibG9jay9nZW5oZC5jXG4rKysgYi9ibG9jay9nZW5oZC5jXG5AQCAtNDE3LDYgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIGFkZF9kaXNrX2ZpbmFsKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuIFx0XHQgKi9cbiBcdFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGRldiwgMCk7XG4gXHRcdGRpc2tfdWV2ZW50KGRpc2ssIEtPQkpfQUREKTtcbitcbitcdFx0YmxrX252bWVtX2FkZChkaXNrLVx1MDAzZXBhcnQwKTtcbiBcdH1cbiBcbiBcdGJsa19hcHBseV9iZGlfbGltaXRzKGRpc2stXHUwMDNlYmRpLCBcdTAwMjZkaXNrLVx1MDAzZXF1ZXVlLVx1MDAzZWxpbWl0cyk7XG5AQCAtNzAwLDYgKzcwMiw4IEBAIHN0YXRpYyB2b2lkIF9fZGVsX2dlbmRpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spXG4gXG4gXHRkaXNrX2RlbF9ldmVudHMoZGlzayk7XG4gXG4rXHRibGtfbnZtZW1fZGVsKGRpc2stXHUwMDNlcGFydDApO1xuK1xuIFx0LypcbiBcdCAqIFByZXZlbnQgbmV3IG9wZW5lcnMgYnkgdW5saW5rZWQgdGhlIGJkZXYgaW5vZGUuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmggYi9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcbmluZGV4IGIwOTk3NDY3YjYxYTUuLjMyNjA4MTQ5OWQ5YTYgMTAwNjQ0XG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaFxuQEAgLTE3LDYgKzE3LDcgQEAgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zIHtcbiBcdFx0aW50IGZsYWdzO1xuIFx0XHRib29sIGhhc19pbmZvO1xuIFx0XHRzdHJ1Y3QgcGFydGl0aW9uX21ldGFfaW5mbyBpbmZvO1xuK1x0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlO1xuIFx0fSAqcGFydHM7XG4gXHRpbnQgbmV4dDtcbiBcdGludCBsaW1pdDtcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2NvcmUuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXG5pbmRleCBiNWM1OWI3OWNhN2NiLi5jODMyMjc3MTA1ODRhIDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9jb3JlLmNcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXG5AQCAtMTEsNiArMTEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jdHlwZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JhaWQvZGV0ZWN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcImNoZWNrLmhcIlxuIFxuQEAgLTExMCw4ICsxMTEsMTcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqYWxsb2NhdGVfcGFydGl0aW9ucyhzdHJ1Y3QgZ2VuZGlzayAqaGQpXG4gXHRyZXR1cm4gc3RhdGU7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4re1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHN0YXRlLVx1MDAzZWxpbWl0OyBpKyspIHtcbitcdFx0Zndub2RlX2hhbmRsZV9wdXQoc3RhdGUtXHUwMDNlcGFydHNbaV0uZndub2RlKTtcbitcdFx0c3RhdGUtXHUwMDNlcGFydHNbaV0uZndub2RlID0gTlVMTDtcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgZnJlZV9wYXJ0aXRpb25zKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4ge1xuK1x0ZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RhdGUpO1xuIFx0dmZyZWUoc3RhdGUtXHUwMDNlcGFydHMpO1xuIFx0a2ZyZWUoc3RhdGUpO1xuIH1cbkBAIC0xMzksNiArMTQ5LDcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqY2hlY2tfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpoZClcbiBcbiBcdGkgPSByZXMgPSBlcnIgPSAwO1xuIFx0d2hpbGUgKCFyZXMgXHUwMDI2XHUwMDI2IGNoZWNrX3BhcnRbaV0pIHtcbitcdFx0ZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RhdGUpO1xuIFx0XHRtZW1zZXQoc3RhdGUtXHUwMDNlcGFydHMsIDAsIHN0YXRlLVx1MDAzZWxpbWl0ICogc2l6ZW9mKHN0YXRlLVx1MDAzZXBhcnRzWzBdKSk7XG4gXHRcdHJlcyA9IGNoZWNrX3BhcnRbaSsrXShzdGF0ZSk7XG4gXHRcdGlmIChyZXMgXHUwMDNjIDApIHtcbkBAIC0yNDcsNiArMjU4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnBhcnRfYXR0cl9ncm91cHNbXSA9IHtcbiBcbiBzdGF0aWMgdm9pZCBwYXJ0X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbitcdGZ3bm9kZV9oYW5kbGVfcHV0KGRldl9md25vZGUoZGV2KSk7XG4gXHRwdXRfZGlzayhkZXZfdG9fYmRldihkZXYpLVx1MDAzZWJkX2Rpc2spO1xuIFx0YmRldl9kcm9wKGRldl90b19iZGV2KGRldikpO1xuIH1cbkBAIC0yNzcsNiArMjg5LDggQEAgdm9pZCBkcm9wX3BhcnRpdGlvbihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpwYXJ0KVxuIFx0eGFfZXJhc2UoXHUwMDI2cGFydC1cdTAwM2ViZF9kaXNrLVx1MDAzZXBhcnRfdGJsLCBiZGV2X3BhcnRubyhwYXJ0KSk7XG4gXHRrb2JqZWN0X3B1dChwYXJ0LVx1MDAzZWJkX2hvbGRlcl9kaXIpO1xuIFxuK1x0YmxrX252bWVtX2RlbChwYXJ0KTtcbitcbiBcdGRldmljZV9kZWwoXHUwMDI2cGFydC1cdTAwM2ViZF9kZXZpY2UpO1xuIFx0cHV0X2RldmljZShcdTAwMjZwYXJ0LVx1MDAzZWJkX2RldmljZSk7XG4gfVxuQEAgLTI5NCw3ICszMDgsOCBAQCBzdGF0aWMgY29uc3QgREVWSUNFX0FUVFIod2hvbGVfZGlzaywgMDQ0NCwgd2hvbGVfZGlza19zaG93LCBOVUxMKTtcbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubyxcbiBcdFx0XHRcdHNlY3Rvcl90IHN0YXJ0LCBzZWN0b3JfdCBsZW4sIGludCBmbGFncyxcbi1cdFx0XHRcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvKVxuK1x0XHRcdFx0c3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm8sXG4rXHRcdFx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxuIHtcbiBcdGRldl90IGRldnQgPSBNS0RFVigwLCAwKTtcbiBcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBkaXNrX3RvX2RldihkaXNrKTtcbkBAIC0zNDMsNiArMzU4LDcgQEAgc3RhdGljIHN0cnVjdCBibG9ja19kZXZpY2UgKmFkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sXG4gXHRwZGV2LVx1MDAzZWNsYXNzID0gXHUwMDI2YmxvY2tfY2xhc3M7XG4gXHRwZGV2LVx1MDAzZXR5cGUgPSBcdTAwMjZwYXJ0X3R5cGU7XG4gXHRwZGV2LVx1MDAzZXBhcmVudCA9IGRkZXY7XG4rXHRkZXZpY2Vfc2V0X25vZGUocGRldiwgZndub2RlX2hhbmRsZV9nZXQoZndub2RlKSk7XG4gXG4gXHQvKiBpbiBjb25zZWN1dGl2ZSBtaW5vciByYW5nZT8gKi9cbiBcdGlmIChiZGV2X3BhcnRubyhiZGV2KSBcdTAwM2MgZGlzay1cdTAwM2VtaW5vcnMpIHtcbkBAIC0zOTIsNiArNDA4LDkgQEAgc3RhdGljIHN0cnVjdCBibG9ja19kZXZpY2UgKmFkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sXG4gXHQvKiBzdXBwcmVzcyB1ZXZlbnQgaWYgdGhlIGRpc2sgc3VwcHJlc3NlcyBpdCAqL1xuIFx0aWYgKCFkZXZfZ2V0X3VldmVudF9zdXBwcmVzcyhkZGV2KSlcbiBcdFx0a29iamVjdF91ZXZlbnQoXHUwMDI2cGRldi1cdTAwM2Vrb2JqLCBLT0JKX0FERCk7XG4rXG4rXHRibGtfbnZtZW1fYWRkKGJkZXYpO1xuK1xuIFx0cmV0dXJuIGJkZXY7XG4gXG4gb3V0X2RlbDpcbkBAIC00NDksNyArNDY4LDcgQEAgaW50IGJkZXZfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubywgc2VjdG9yX3Qgc3RhcnQsXG4gXHR9XG4gXG4gXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwYXJ0bm8sIHN0YXJ0LCBsZW5ndGgsXG4tXHRcdFx0QUREUEFSVF9GTEFHX05PTkUsIE5VTEwpO1xuK1x0XHRcdEFERFBBUlRfRkxBR19OT05FLCBOVUxMLCBOVUxMKTtcbiBcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyhwYXJ0KTtcbiBvdXQ6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2ZGlzay1cdTAwM2VvcGVuX211dGV4KTtcbkBAIC01NjQsNyArNTgzLDcgQEAgc3RhdGljIGJvb2wgYmxrX2FkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssXG4gXHR9XG4gXG4gXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwLCBmcm9tLCBzaXplLCBzdGF0ZS1cdTAwM2VwYXJ0c1twXS5mbGFncyxcbi1cdFx0XHQgICAgIFx1MDAyNnN0YXRlLVx1MDAzZXBhcnRzW3BdLmluZm8pO1xuK1x0XHRcdCAgICAgXHUwMDI2c3RhdGUtXHUwMDNlcGFydHNbcF0uaW5mbywgc3RhdGUtXHUwMDNlcGFydHNbcF0uZndub2RlKTtcbiBcdGlmIChJU19FUlIocGFydCkpIHtcbiBcdFx0aWYgKFBUUl9FUlIocGFydCkgIT0gLUVOWElPKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fRVJSIFwiICVzOiBwJWQgY291bGQgbm90IGJlIGFkZGVkOiAlcGVcXG5cIixcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL29mLmMgYi9ibG9jay9wYXJ0aXRpb25zL29mLmNcbmluZGV4IDUzNjY0ZWEwNmI2NTQuLjRmYzdjODBjNDA3ZGUgMTAwNjQ0XG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL29mLmNcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xuQEAgLTMsNiArMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYmxrZGV2LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tYWpvci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFwiY2hlY2suaFwiXG4gXG5AQCAtNjIsNiArNjMsOCBAQCBzdGF0aWMgdm9pZCBhZGRfb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGludCBzbG90LFxuIFx0XHRwYXJ0bmFtZSA9IG9mX2dldF9wcm9wZXJ0eShucCwgXCJuYW1lXCIsIFx1MDAyNmxlbik7XG4gXHRzdHJzY3B5KGluZm8tXHUwMDNldm9sbmFtZSwgcGFydG5hbWUsIHNpemVvZihpbmZvLVx1MDAzZXZvbG5hbWUpKTtcbiBcbitcdHN0YXRlLVx1MDAzZXBhcnRzW3Nsb3RdLmZ3bm9kZSA9IGZ3bm9kZV9oYW5kbGVfZ2V0KG9mX2Z3bm9kZV9oYW5kbGUobnApKTtcbitcbiBcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCIoJXMpXCIsIGluZm8tXHUwMDNldm9sbmFtZSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jXG5pbmRleCAxMGM0OTZlYWVhMmMxLi4zYzZmMDIxYjc2MjE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xuKysrIGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xuQEAgLTcyMyw4ICs3MjMsMTEgQEAgc3RhdGljIGludCBxY2FfY2hlY2tfYmRhZGRyKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBjb25zdCBzdHJ1Y3QgcWNhX2Z3X2NvbmZpZyAqY29cbiBcdH1cbiBcbiBcdGJkYSA9IChzdHJ1Y3QgaGNpX3JwX3JlYWRfYmRfYWRkciAqKXNrYi1cdTAwM2VkYXRhO1xuLVx0aWYgKCFiYWNtcChcdTAwMjZiZGEtXHUwMDNlYmRhZGRyLCBcdTAwMjZjb25maWctXHUwMDNlYmRhZGRyKSlcbitcdGlmICghYmFjbXAoXHUwMDI2YmRhLVx1MDAzZWJkYWRkciwgXHUwMDI2Y29uZmlnLVx1MDAzZWJkYWRkcikpIHtcbiBcdFx0aGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSk7XG4rXHRcdGhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pO1xuK1x0XHRoY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUpO1xuK1x0fVxuIFxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuaW5kZXggYjkwNTg0ZTFiOTllYS4uZWZhNjMxY2U3MjgzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy5jXG4rKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuQEAgLTE2Nyw3ICsxNjcsMTggQEAgc3RhdGljIGludCBudm1lbV9sYXlvdXRfYnVzX3BvcHVsYXRlKHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtLFxuIFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0pXG4ge1xuLVx0cmV0dXJuIG9mX2dldF9jaGlsZF9ieV9uYW1lKG52bWVtLVx1MDAzZWRldi5vZl9ub2RlLCBcIm52bWVtLWxheW91dFwiKTtcbitcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4rXG4rXHQvKiBTZWFyY2ggZm9yIG52bWVtLWxheW91dCBjaGlsZCAqL1xuK1x0bnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSwgXCJudm1lbS1sYXlvdXRcIik7XG4rXHRpZiAobnApXG4rXHRcdHJldHVybiBucDtcbitcbitcdC8qIFRoZSBudm1lbSBvZl9ub2RlIGlzIGl0c2VsZiBhIGZpeGVkLWxheW91dCBub2RlICovXG4rXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnZtZW0tXHUwMDNlZGV2Lm9mX25vZGUsIFwiZml4ZWQtbGF5b3V0XCIpKVxuK1x0XHRyZXR1cm4gb2Zfbm9kZV9nZXQobnZtZW0tXHUwMDNlZGV2Lm9mX25vZGUpO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG9mX252bWVtX2xheW91dF9nZXRfY29udGFpbmVyKTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaFxuaW5kZXggODgwOGVlNzZlNzNjMC4uNmVkMTczYzY0OTAyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcbkBAIC0xNSw2ICsxNSw3IEBAXG4gc3RydWN0IGJpb19zZXQ7XG4gc3RydWN0IGJpbztcbiBzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkO1xuK3N0cnVjdCBudm1lbV9kZXZpY2U7XG4gc3RydWN0IHBhZ2U7XG4gc3RydWN0IGlvX2NvbnRleHQ7XG4gc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7XG5AQCAtNzMsNiArNzQsOSBAQCBzdHJ1Y3QgYmxvY2tfZGV2aWNlIHtcbiBcdGludFx0XHRcdGJkX3dyaXRlcnM7XG4gI2lmZGVmIENPTkZJR19TRUNVUklUWVxuIFx0dm9pZFx0XHRcdCpiZF9zZWN1cml0eTtcbisjZW5kaWZcbisjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxuK1x0c3RydWN0IG52bWVtX2RldmljZVx0KmJkX252bWVtO1xuICNlbmRpZlxuIFx0LypcbiBcdCAqIGtlZXAgdGhpcyBvdXQtb2YtbGluZSBhcyBpdCdzIGJvdGggYmlnIGFuZCBub3QgbmVlZGVkIGluIHRoZSBmYXN0XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaCBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcbmluZGV4IGQ4ODcxNWEwYjNhNTIuLjc4NTRiYTU1NWQ5YTUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L29mX25ldC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L29mX25ldC5oXG5AQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTtcbiBleHRlcm4gaW50IG9mX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBwaHlfaW50ZXJmYWNlX3QgKmludGVyZmFjZSk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4raW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKTtcbiBpbnQgb2ZfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuIGV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqb2ZfZmluZF9uZXRfZGV2aWNlX2J5X25vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCk7XG4gI2Vsc2VcbkBAIC0zNCw2ICszNSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYylcbiBcdHJldHVybiAtRU5PREVWO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCxcbitcdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpXG4re1xuK1x0cmV0dXJuIC1FTk9ERVY7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHJldHVybiAtRU5PREVWO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaCBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxuaW5kZXggNTBmMGVlZjcxZmIxOS4uNzRmYTQwMjUwNDAxMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxuKysrIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oXG5AQCAtMTYxLDYgKzE2MSwyNCBAQCBlbnVtIHtcbiBcdCAqL1xuIFx0SENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sXG4gXG4rXHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgcHVibGljIEJsdWV0b290aCBhZGRyZXNzXG4rXHQgKiBpbml0aWFsbHkgcmVwb3J0ZWQgYnkgSENJIFJlYWQgQkQgQWRkcmVzcyBjb21tYW5kXG4rXHQgKiBpcyBjb25zaWRlcmVkIGludmFsaWQuIFRoZSBwdWJsaWMgQkQgQWRkcmVzcyBjYW4gYmVcbitcdCAqIHJldHJpZXZlZCB2aWEgYSAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbC5cbitcdCAqXG4rXHQgKiBUaGlzIHF1aXJrIGNhbiBiZSBzZXQgYmVmb3JlIGhjaV9yZWdpc3Rlcl9kZXYgaXMgY2FsbGVkIG9yXG4rXHQgKiBkdXJpbmcgdGhlIGhkZXYtXHUwMDNlc2V0dXAgdmVuZG9yIGNhbGxiYWNrLlxuK1x0ICovXG4rXHRIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSxcbitcbitcdC8qIFdoZW4gdGhpcyBxdWlyayBpcyBzZXQsIHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3MgcHJvdmlkZWQgYnlcbitcdCAqIHRoZSAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gaXMgc3RvcmVkIGluIGJpZy1lbmRpYW4gb3JkZXIuXG4rXHQgKlxuK1x0ICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvclxuK1x0ICogZHVyaW5nIHRoZSBoZGV2LVx1MDAzZXNldHVwIHZlbmRvciBjYWxsYmFjay5cbitcdCAqL1xuK1x0SENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSxcbitcbiBcdC8qIFdoZW4gdGhpcyBxdWlyayBpcyBzZXQsIHRoZSBkdXBsaWNhdGUgZmlsdGVyaW5nIGR1cmluZ1xuIFx0ICogc2Nhbm5pbmcgaXMgYmFzZWQgb24gQmx1ZXRvb3RoIGRldmljZXMgYWRkcmVzc2VzLiBUbyBhbGxvd1xuIFx0ICogUlNTSSBiYXNlZCB1cGRhdGVzLCByZXN0YXJ0IHNjYW5uaW5nIGlmIG5lZWRlZC5cbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbmluZGV4IGM4ZDE0MTI4YzM2M2QuLjgxMzJhMTQ4N2FjMjUgMTAwNjQ0XG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuQEAgLTcsNiArNyw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2JsdWV0b290aC9ibHVldG9vdGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ibHVldG9vdGgvaGNpX2NvcmUuaFx1MDAzZVxuQEAgLTM3MDEsNiArMzcwMiwzOSBAQCBpbnQgaGNpX3Bvd2VyZWRfdXBkYXRlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyoqXG4rICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtIC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3NcbisgKlx0XHRcdFx0ICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cbisgKlx0XHRcdFx0ICAgIGFuIE5WTUVNIGNlbGwuXG4rICogQGhkZXY6XHRUaGUgSENJIGRldmljZVxuKyAqXG4rICogU2VhcmNoIGZvciAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbCBpbiB0aGUgZGV2aWNlIGZpcm13YXJlIG5vZGUuXG4rICpcbisgKiBBbGwtemVybyBCRCBhZGRyZXNzZXMgYXJlIHJlamVjdGVkICh1bnByb3Zpc2lvbmVkKS5cbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbisgKi9cbitzdGF0aWMgaW50IGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShzdHJ1Y3QgaGNpX2RldiAqaGRldilcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoaGRldi1cdTAwM2VkZXYucGFyZW50KTtcbitcdHU4IGJhW3NpemVvZihiZGFkZHJfdCldO1xuK1x0aW50IGVycjtcbitcbitcdGlmICghbnApXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZXJyID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCBcImxvY2FsLWJkLWFkZHJlc3NcIiwgYmEpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGlmIChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfQkRBRERSX05WTUVNX0JFKSlcbitcdFx0YmFzd2FwKFx1MDAyNmhkZXYtXHUwMDNlcHVibGljX2FkZHIsIChiZGFkZHJfdCAqKWJhKTtcbitcdGVsc2VcbitcdFx0YmFjcHkoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgKGJkYWRkcl90ICopYmEpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIC8qKlxuICAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXG4gICpcdFx0XHRcdCAgICAgICAoQkRfQUREUikgZm9yIGEgSENJIGRldmljZSBmcm9tXG5AQCAtNTE4MCwxMiArNTIxNCwxNyBAQCBzdGF0aWMgaW50IGhjaV9kZXZfc2V0dXBfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdCAqIGl0cyBzZXR1cCBjYWxsYmFjay5cbiBcdCAqL1xuIFx0aW52YWxpZF9iZGFkZHIgPSBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8XG4tXHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTtcbitcdFx0XHQgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8XG4rXHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTtcbiBcdGlmICghcmV0KSB7XG4gXHRcdGlmIChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdFx0aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX3Byb3BlcnR5KGhkZXYpO1xuIFxuK1x0XHRpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIWJhY21wKFx1MDAyNmhkZXYtXHUwMDNlcHVibGljX2FkZHIsIEJEQUREUl9BTlkpKVxuK1x0XHRcdGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShoZGV2KTtcbitcbiBcdFx0aWYgKGludmFsaWRfYmRhZGRyIFx1MDAyNlx1MDAyNiBiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhkZXYtXHUwMDNlc2V0X2JkYWRkcikge1xuIFx0XHRcdHJldCA9IGhkZXYtXHUwMDNlc2V0X2JkYWRkcihoZGV2LCBcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyKTtcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL21nbXQuYyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5pbmRleCAxNjdkNzVlMzQ1MjY2Li5hMzlkNzYzYTQyMjVhIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9tZ210LmNcbisrKyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5AQCAtNjE0LDcgKzYxNCw4IEBAIHN0YXRpYyBib29sIGlzX2NvbmZpZ3VyZWQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fFxuLVx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcbitcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC02MzAsNyArNjMxLDggQEAgc3RhdGljIF9fbGUzMiBnZXRfbWlzc2luZ19vcHRpb25zKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0XHRvcHRpb25zIHw9IE1HTVRfT1BUSU9OX0VYVEVSTkFMX0NPTkZJRztcbiBcbiBcdGlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fFxuLVx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcbitcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdG9wdGlvbnMgfD0gTUdNVF9PUFRJT05fUFVCTElDX0FERFJFU1M7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvb2ZfbmV0LmMgYi9uZXQvY29yZS9vZl9uZXQuY1xuaW5kZXggOTNlYTQyNWI5MjQ4YS4uOTk5Y2EwZTkyNThjNCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL29mX25ldC5jXG4rKysgYi9uZXQvY29yZS9vZl9uZXQuY1xuQEAgLTYxLDkgKzYxLDcgQEAgc3RhdGljIGludCBvZl9nZXRfbWFjX2FkZHIoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqbmFtZSwgdTggKmFkZHIpXG4gaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcbiB7XG4gXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShucCk7XG4tXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcbi1cdGNvbnN0IHZvaWQgKm1hYztcbi1cdHNpemVfdCBsZW47XG4rXHR1OCBtYWNbRVRIX0FMRU5dIF9fYWxpZ25lZChzaXplb2YodTE2KSk7XG4gXHRpbnQgcmV0O1xuIFxuIFx0LyogVHJ5IGxvb2t1cCBieSBkZXZpY2UgZmlyc3QsIHRoZXJlIG1pZ2h0IGJlIGEgbnZtZW1fY2VsbF9sb29rdXBcbkBAIC03NSwyNyArNzMsNTcgQEAgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgXCJtYWMtYWRkcmVzc1wiKTtcbitcdHJldCA9IG9mX2dldF9udm1lbV9ldWk0OChucCwgXCJtYWMtYWRkcmVzc1wiLCBtYWMpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdG1lbWNweShhZGRyLCBtYWMsIEVUSF9BTEVOKTtcbitcdHJldHVybiAwO1xuK31cbitFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XG4rXG4rLyoqXG4rICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC5cbisgKiBAbnA6XHRcdERldmljZSBub2RlIHRvIGxvb2sgdXAgdGhlIE5WTUVNIGNlbGwgZnJvbS5cbisgKiBAY2VsbF9uYW1lOlx0TmFtZSBvZiB0aGUgTlZNRU0gY2VsbCAoZS5nLiBcIm1hYy1hZGRyZXNzXCIsIFwibG9jYWwtYmQtYWRkcmVzc1wiKS5cbisgKiBAYWRkcjpcdE91dHB1dCBidWZmZXIgZm9yIHRoZSA2LWJ5dGUgYWRkcmVzcy5cbisgKlxuKyAqIFJlYWRzIHRoZSBuYW1lZCBOVk1FTSBjZWxsIGFuZCB2YWxpZGF0ZXMgdGhhdCBpdCBjb250YWlucyBhIG5vbi16ZXJvIDYtYnl0ZVxuKyAqIGFkZHJlc3MuIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcilcbit7XG4rXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcbitcdGNvbnN0IHZvaWQgKmV1aTQ4O1xuK1x0c2l6ZV90IGxlbjtcbitcbitcdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgY2VsbF9uYW1lKTtcbiBcdGlmIChJU19FUlIoY2VsbCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNlbGwpO1xuIFxuLVx0bWFjID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsIFx1MDAyNmxlbik7XG4rXHRldWk0OCA9IG52bWVtX2NlbGxfcmVhZChjZWxsLCBcdTAwMjZsZW4pO1xuIFx0bnZtZW1fY2VsbF9wdXQoY2VsbCk7XG4gXG4tXHRpZiAoSVNfRVJSKG1hYykpXG4tXHRcdHJldHVybiBQVFJfRVJSKG1hYyk7XG4rXHRpZiAoSVNfRVJSKGV1aTQ4KSlcbitcdFx0cmV0dXJuIFBUUl9FUlIoZXVpNDgpO1xuIFxuLVx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XG4tXHRcdGtmcmVlKG1hYyk7XG4rXHQvKiBSZWplY3QgdW5wcm9ncmFtbWVkIGNlbGxzIHRoYXQgcmVhZCBhcyBhbGwtemVyb2VzIG9yIGFsbC1vbmVzICovXG4rXHRpZiAobGVuICE9IEVUSF9BTEVOIHx8XG4rXHQgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4MDAsIEVUSF9BTEVOKSB8fFxuK1x0ICAgICFtZW1jaHJfaW52KGV1aTQ4LCAweGZmLCBFVEhfQUxFTikpIHtcbitcdFx0a2ZyZWUoZXVpNDgpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdG1lbWNweShhZGRyLCBtYWMsIEVUSF9BTEVOKTtcbi1cdGtmcmVlKG1hYyk7XG4rXHRtZW1jcHkoYWRkciwgZXVpNDgsIEVUSF9BTEVOKTtcbitcdGtmcmVlKGV1aTQ4KTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbi1FWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XG4rRVhQT1JUX1NZTUJPTF9HUEwob2ZfZ2V0X252bWVtX2V1aTQ4KTtcbiBcbiAvKipcbiAgKiBvZl9nZXRfbWFjX2FkZHJlc3MoKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTQ6NDEuNjgzNjYxNjMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3NTM3NTU1NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IE5WTUVNIGFuZCBCbG9jay9OZXR3b3JrIEludGVyZmFjZSBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGluZGljYXRlcyB0aGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2VzIHBvdGVudGlhbCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0ICpkZWZpbml0ZWx5KiB3YXJyYW50IGZ1enppbmcuIFdlIGhhdmUgc2V2ZXJhbCBhcmVhcyBoZXJlLCBzbyBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0IG9mIGVhY2guXG5cbkZpcnN0LCB0aGVyZSBhcmUgZG9jdW1lbnRhdGlvbiBhbmQgRGV2aWNlIFRyZWUgY2hhbmdlcyAoZGV2aWNldHJlZSBiaW5kaW5ncyBhbmQgcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0cykuIFRoZXNlIGFyZSB1bmxpa2VseSB0byBiZSBmdXp6IHRhcmdldHMgZGlyZWN0bHksIHRob3VnaCBpbmNvcnJlY3QgZG9jdW1lbnRhdGlvbiBjYW4gbGVhZCB0byBpbmRpcmVjdCBpc3N1ZXMuXG5cbkhvd2V2ZXIsIHRoZSBtZWF0IG9mIHRoZSBzZXJpZXMgaXMgbW9yZSBpbnRlcmVzdGluZy4gV2UncmUgbG9va2luZyBhdCBhIG5ldyBOVk1FTSBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBibG9jayBsYXllciAoQ09ORklHX0JMS19OVk1FTSkuIFRoaXMgaW52b2x2ZXMgYWRkaW5nIGBibGstbnZtZW0uY2AgYW5kIG1vZGlmeWluZyBleGlzdGluZyBibG9jayBsYXllciBmaWxlcyAoYGdlbmhkLmNgLCBgY29yZS5jYCwgYG9mLmNgKSB0byByZWdpc3RlciBOVk1FTSBkZXZpY2VzIGZvciBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zLiBUaGUgQmx1ZXRvb3RoIGNoYW5nZXMgYXJlIGFsc28gcmVsZXZhbnQgYXMgaXQgc2V0cyBhIHF1aXJrIChgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU1gKSBhbmQgbW9kaWZpZXMgQmx1ZXRvb3RoIGNvZGUgKGBidHFjYS5jYCwgYGhjaV9zeW5jLmNgLCBgbWdtdC5jYCkgdG8gcmVhZCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIChCRF9BRERSKSBmcm9tIE5WTUVNLiBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIE5WTUVNIGxheW91dCAoYGxheW91dHMuY2ApIHRvIHN1cHBvcnQgZml4ZWQtbGF5b3V0IG5vZGVzIGFuZCwgZmluYWxseSwgY2hhbmdlcyB0byBOZXQgY29yZSAoYG9mX25ldC5jYCkgdG8gYWRkIGBvZl9nZXRfbnZtZW1fZXVpNDhgIGFuZCByZWZhY3RvciBgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtYC5cblxuQ3J1Y2lhbGx5LCB0aGUgYmxvY2sgbGF5ZXIgY2hhbmdlcyBhbmQgdGhlIG5ldCBjb3JlIGNoYW5nZXMsIHNwZWNpZmljYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCBgb2ZfZ2V0X252bWVtX2V1aTQ4YCBhcmUgZGlyZWN0bHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLiBUaGUgYmxvY2sgbGF5ZXIgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIGJsb2NrIGRldmljZSBpcyBhZGRlZCwgY29uZGl0aW9uYWwgb24gYENPTkZJR19CTEtfTlZNRU1gLiBUaGUgQmx1ZXRvb3RoIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gYSBCbHVldG9vdGggZGV2aWNlIGlzIGluaXRpYWxpemVkLCBpZiB0aGUgcXVpcmsgaXMgc2V0LlxuXG5MZXQncyBkaWcgaW4uIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYENPTkZJR19CTEtfTlZNRU1gIGNhbiBiZSBlbmFibGVkIG9yIGlzIGVuYWJsZWQuIEl0IGRlcGVuZHMgb24gYE9GYCBhbmQgYE5WTUVNYCwgd2hpY2ggYXJlIGxpa2VseSBlbmFibGVkIG9uIGFueSBtb2Rlcm4gc3lzdGVtLiBGdXJ0aGVyLCBgYmxrX252bWVtX2FkZGAgaXMgY2FsbGVkIGZyb20gYGFkZF9kaXNrX2ZpbmFsYCBhbmQgYGFkZF9wYXJ0aXRpb25gLCBtZWFuaW5nIGl0IGlzIGRpcmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIGJsb2NrIGRldmljZSBvcGVyYXRpb25zLiBBbmQgYG9mX2dldF9udm1lbV9ldWk0OGAgaXMgY2FsbGVkIGZyb20gYG9mX2dldF9tYWNfYWRkcmVzc19udm1lbWAgYW5kIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBzbyB3ZSBjYW4gcmVhY2ggdGhpcyB3aXRoIGEgQlQgZGV2aWNlLlxuXG5TbywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5ISBXZSdyZSBhZGRpbmcgYSAqbmV3KiBtZXRob2QgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbmQgdGhpcyBpbnZvbHZlcyByZWFkaW5nIE1BQy9CRCBhZGRyZXNzZXMgZnJvbSBOVk1FTS4gVGhlIGJsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlciByZWFkcyBmcm9tIHRoZSBibG9jayBkZXZpY2UgdXNpbmcgYGtlcm5lbF9yZWFkYCBvbiBhIGJsb2NrIGRldmljZSBmaWxlLiBXYWl0LCBldmVuIGJldHRlciwgYGJsa19udm1lbV9yZWdfcmVhZGAgb3BlbnMgdGhlIGJsb2NrIGRldmljZSAqZXhjbHVzaXZlbHkqIGFuZCByZWFkcyBmcm9tIGl0LCB3aGljaCBtZWFucyB3ZSBjYW4gdHJpZ2dlciB0aGlzIHJlYWQgdGhyb3VnaCB0aGUgTlZNRU0gc3lzZnMgaW50ZXJmYWNlLCBvciBpbmRpcmVjdGx5IHRocm91Z2ggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdGhhdCBjb25zdW1lIE5WTUVNLiBUaGlzIGNvdWxkIHJldmVhbCBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMuXG5cblRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczpcbiogICBgYmxrX252bWVtX3JlZ19yZWFkYFxuKiAgIGBibGtfbnZtZW1fYWRkYFxuKiAgIGBibGtfbnZtZW1fZGVsYFxuKiAgIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gXG4qICAgYG9mX2dldF9udm1lbV9ldWk0OGBcblxuRm9yIHRoZSBjb25maWd1cmF0aW9uLCBJJ2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgdGhlc2U6XG4qICAgYEJMS19OVk1FTWBcbiogICBgTlZNRU1gXG4qICAgYE9GYFxuXG5Ob3csIGxldCdzIHZlcmlmeSB0aG9zZSBjb25maWcgb3B0aW9ucyBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGhvbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjQ3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6MDQuNDM3NDIwMDc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mjg4NTU1NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19OVk1FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9LY29uZmlnPTIwMj1jb25maWcgQkxLX0lOTElORV9FTkNSWVBUSU9OX0ZBTExCQUNLXFxuLS1cXG5ibG9jay9LY29uZmlnLTIxMS1cXG5ibG9jay9LY29uZmlnOjIxMjpjb25maWcgQkxLX05WTUVNXFxuYmxvY2svS2NvbmZpZy0yMTMtXFx0Ym9vbCBcXFwiQmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTowNi4xNjYyODAzODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUzNzkxODgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBOb24tVm9sYXRpbGUgTWVtb3J5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgQkxLX05WTUVNYCwgYE5WTUVNYCwgYW5kIGBPRmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldhaXQsIGBPRmAuLi50aGF0J3MgT3BlbiBGaXJtd2FyZSwgcmlnaHQ/XCIgVGhhdCB0eXBpY2FsbHkgc2hvd3MgdXAgaW4gQVJNIG9yIFBvd2VyUEMgc3lzdGVtcywgdXN1YWxseSBjb3VwbGVkIHdpdGggRGV2aWNlIFRyZWUuIEkgcmVtZW1iZXIgdGhlcmUncyBhIHBvc3NpYmlsaXR5IHRvIGVuYWJsZSBpdCBvbiB4ODYsIG1heWJlIHRocm91Z2ggYE9GX1VOSVRURVNUYCBvciBzb21ldGhpbmcgbGlrZSB0aGF0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBBY3R1YWxseSwgbGV0IG1lIGNsYXJpZnksIGBPRmAgY29ycmVzcG9uZHMgdG8gYENPTkZJR19PRmAuXG5cbkp1c3QgdG8gY29uZmlybSwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBgb2ZfZ2V0X252bWVtX2V1aTQ4YCBpbiB0aGUgYG5ldC9jb3JlL29mX25ldC5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgbW9yZSBkaXJlY3QgdW5kZXJzdGFuZGluZyBvZiBob3cgT3BlbiBGaXJtd2FyZSBpcyByZWxhdGVkIHRvIG5vbi12b2xhdGlsZSBtZW1vcnkgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMzMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNToxOC43MDQyMDEyNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MDc2NzQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgb2ZfZ2V0X252bWVtX2V1aTQ4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvb2ZfbmV0Lmg9MTc9ZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XFxuaW5jbHVkZS9saW51eC9vZl9uZXQuaDoxODppbnQgb2ZfZ2V0X252bWVtX2V1aTQ4KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpO1xcbmluY2x1ZGUvbGludXgvb2ZfbmV0LmgtMTktaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbmV0Lmg9MzM9c3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICptYWMpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX25ldC5oLTM3LVxcbmluY2x1ZGUvbGludXgvb2ZfbmV0Lmg6Mzg6c3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X252bWVtX2V1aTQ4KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuaW5jbHVkZS9saW51eC9vZl9uZXQuaC0zOS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxcbi0tXFxubmV0L2NvcmUvb2ZfbmV0LmM9ODY9RVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xcbi0tXFxubmV0L2NvcmUvb2ZfbmV0LmMtOTYtICovXFxubmV0L2NvcmUvb2ZfbmV0LmM6OTc6aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxcbm5ldC9jb3JlL29mX25ldC5jLTk4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6MjAuNDg0OTc2Nzk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxOTgxMDEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgY29kZSBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgYmxrX252bWVtX3JlZ19yZWFkYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIHRoZSBmdW5jdGlvbiBuYW1lLCBgYmxrX252bWVtX3JlZ19yZWFkYC4gUmlnaHQsIHRoYXQncyB0aGUgb25lIHdlIHVzZSBmb3IgcmVhZGluZyB0aG9zZSBub24tdm9sYXRpbGUgbWVtb3J5IHJlZ2lzdGVycyB3aXRoaW4gdGhlIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0uIEknbSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIG15IHVuZGVyc3RhbmRpbmc6IEl0J3MgbGlrZWx5IGhhbmRsaW5nIHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb24sIGFic3RyYWN0aW5nIGF3YXkgc29tZSBvZiB0aGUgaGFyZHdhcmUgZGV0YWlscyBmb3IgdGhlIHVwcGVyIGxheWVycy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGl0cyByb2xlIGluIHRoZSBjb21wbGV0ZSB3b3JrZmxvdyBhbmQgZG91YmxlIGNoZWNrIGl0cyBleGFjdCBwdXJwb3NlIGluIGNvbnRleHQuIExldCdzIHNlZSBob3cgaXTigJlzIGltcGxlbWVudGVkIGFuZCB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZC4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIHRoZSByZWFkaW5nIGZyb20gYSBub24tdm9sYXRpbGUgbWVtb3J5IHJlZ2lvbiwgd2hhdCBlcnJvciBjaGVja3MgYXJlIGltcGxlbWVudGVkLCBhbmQgaG93IGl0IHJlcG9ydHMgcG90ZW50aWFsIGlzc3Vlcy4gSXQncyBhIGNyaXRpY2FsIHBpZWNlLCBhbmQgSSBuZWVkIHRvIGJlIGNvbXBsZXRlbHkgY2xlYXIgb24gaXRzIGJlaGF2aW9yIGJlZm9yZSBJIGNvbnRpbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDAxMiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjI0LjcwNDc4OTk2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAwMzU5NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa19udm1lbV9yZWdfcmVhZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstbnZtZW0uYy0yNS1cXG5ibG9jay9ibGstbnZtZW0uYzoyNjpzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcXG5ibG9jay9ibGstbnZtZW0uYy0yNy1cXHRcXHRcXHQgICAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcylcXG4tLVxcbmJsb2NrL2Jsay1udm1lbS5jLTM2LVxcdFxcdFxcdFxcdFxcdCAgQkxLX09QRU5fUkVBRCB8IEJMS19PUEVOX0VYQ0wsXFxuYmxvY2svYmxrLW52bWVtLmM6Mzc6XFx0XFx0XFx0XFx0XFx0ICBibGtfbnZtZW1fcmVnX3JlYWQsIE5VTEwpO1xcbmJsb2NrL2Jsay1udm1lbS5jLTM4LVxcdGlmIChJU19FUlIoYmRldl9maWxlKSlcXG4tLVxcbmJsb2NrL2Jsay1udm1lbS5jPTU2PWludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXFxuLS1cXG5ibG9jay9ibGstbnZtZW0uYy05My1cXHRjb25maWcucHJpdiA9IGJkZXY7XFxuYmxvY2svYmxrLW52bWVtLmM6OTQ6XFx0Y29uZmlnLnJlZ19yZWFkID0gYmxrX252bWVtX3JlZ19yZWFkO1xcbmJsb2NrL2Jsay1udm1lbS5jLTk1LVxcdGNvbmZpZy5zaXplID0gYmRldl9ucl9ieXRlcyhiZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6MjYuMzA1MTU2MjE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQxMDExMjYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLZXkgRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29yZSBjaGFuZ2VzIGFuZCBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYGJsa19udm1lbV9yZWdfcmVhZGAsIGBibGtfbnZtZW1fYWRkYCwgYGJsa19udm1lbV9kZWxgLCBgaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtYCwgYW5kIGBvZl9nZXRfbnZtZW1fZXVpNDhgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkcml2aW5nIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSB0aWVkIGludG8gTlZNZSBtZW1vcnkuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9ucy4gYEJMS19OVk1FTWAgaXMgb2J2aW91c2x5IHRoZSBtb3N0IGltcG9ydGFudCBvbmUgaGVyZTsgaXQncyB0aGUgY29yZSBlbmFibGVyIG9mIHRoaXMgZW50aXJlIGZlYXR1cmUuIFRoZW4gd2UgaGF2ZSBibHVldG9vdGguIE15IGluaXRpYWwgdGhvdWdodCB3YXMgYEJUX0hDSVVBUlRfUUNBYCBiZWNhdXNlIEkgc2F3IGBidHFjYS5jYCBtZW50aW9uZWQuIEJ1dCwgdGhlIHF1aXJrIGhhbmRsaW5nIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGNvcmUgYmx1ZXRvb3RoIGNvZGUsIG1lYW5pbmcganVzdCBgQlRgIHNob3VsZCBjb3ZlciBjb3JlIGZ1bmN0aW9uYWxpdHkuIEhvd2V2ZXIsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGUgcXVpcmsgKmlzKiBzZXQgd2l0aGluIGBidHFjYS5jYCwgYW5kIHRoYXQgYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAgaXMgaW4gYGhjaV9zeW5jLmNgIHdoaWNoIGlzIGNvcmUgYmx1ZXRvb3RoLiBTbywgaXQgbWlnaHQgYmUgdGhhdCBgQlRfUUNBYCBvciBldmVuIGBCVF9IQ0lVQVJUX1FDQWAgYXJlIG5lY2Vzc2FyeSB0byBnZXQgdGhlIHF1aXJrIGFjdGl2YXRlZC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBVbHRpbWF0ZWx5LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyBpbiBgYnRxY2EuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTQxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjM0LjcxNTI3MTQ3NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0ODQ1NjQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlRfSENJVUFSVF9RQ0FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibHVldG9vdGgvS2NvbmZpZz0yMjc9Y29uZmlnIEJUX0hDSVVBUlRfUlRMXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnLTI0MC1cXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnOjI0MTpjb25maWcgQlRfSENJVUFSVF9RQ0FcXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJRdWFsY29tbSBBdGhlcm9zIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjM2LjM2MzczNTk1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjY1NjcxMzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEJsdWV0b290aCBIQ0kgSW5pdGlhbGl6YXRpb24gd2l0aCBOVk1FTSBhbmQgT0YqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIG1ha2Ugc3VyZSB0aGUgQmx1ZXRvb3RoIEhDSSBpbml0aWFsaXphdGlvbiBpcyBjb3JyZWN0bHkgaGFuZGxlZCwgd2hpY2ggbWVhbnMgSSBhYnNvbHV0ZWx5ICptdXN0KiBhY2NvdW50IGZvciBgQkxLX05WTUVNYCBhbmQgYEJUX0hDSVVBUlRfUUNBYCwgb3IganVzdCBgQlRgIGluIGdlbmVyYWwsIGR1cmluZyB0aGlzIHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIEkgYWxzbyBrbm93IHRoYXQgYE9GYCBpcyBlc3NlbnRpYWwgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggYEJMS19OVk1FTWAuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGUgQmx1ZXRvb3RoIGRldmljZSdzIEJEIGFkZHJlc3MgaXMgcmV0cmlldmVkIGZyb20gTlYgbWVtb3J5LiBUbyBkbyB0aGlzLCBJIHdpbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBzcGVjaWZpY2FsbHkgbG9va2luZyBpbiBgbmV0L2JsdWV0b290aC9oY2lfc3luYy5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgbG9naWMgdGhlcmUgcHJvcGVybHkgaW50ZWdyYXRlcyB3aXRoIGJvdGggdGhlIE5WTUVNIGhhbmRsaW5nIGFuZCBhbnkgcXVpcmtzIHJlbGF0ZWQgdG8gUUNBIGJhc2VkIFVBUlQgaW1wbGVtZW50YXRpb25zIHRoYXQgbWlnaHQgYmUgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyMDcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTo0Mi4wMjk0MTAwNTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzE5NTQxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz0zNjQ3PWludCBoY2lfcG93ZXJlZF91cGRhdGVfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzA1LS8qKlxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzozNzA2OiAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTM3MDctICpcXHRcXHRcXHRcXHQgICAgKEJEX0FERFIpIGZvciBhIEhDSSBkZXZpY2UgZnJvbVxcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTM3MTYtICovXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjM3MTc6c3RhdGljIGludCBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTM3MTgte1xcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTUxOTA9c3RhdGljIGludCBoY2lfZGV2X3NldHVwX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTIyNS1cXHRcXHQgICAgIWJhY21wKFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjUyMjY6XFx0XFx0XFx0aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtKGhkZXYpO1xcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01MjI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTo0My42MDEzNzA0MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNzA4MjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIERldmljZSBOVk1FTSBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBjb29sIG5ldyBmdW5jdGlvbmFsaXR5OiBtYWtpbmcgYmxvY2sgZGV2aWNlcyBhY2Nlc3NpYmxlIGFzIE5WTUVNIHByb3ZpZGVycy4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGFscmVhZHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHN0YXJ0LiBUaGUgY29yZSBpZGVhIHNlZW1zIHRvIGJlIHJlYWRpbmcgTUFDL0JEIGFkZHJlc3NlcyBkaXJlY3RseSBmcm9tIHRoZSBOVk1FTS5cblxuTXkgZm9jdXMgaXMgbmF0dXJhbGx5IGRyYXduIHRvIHRoZXNlIHN5bWJvbHM6IGBibGtfbnZtZW1fcmVnX3JlYWRgLCBgYmxrX252bWVtX2FkZGAsIGBibGtfbnZtZW1fZGVsYCwgYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAsIGFuZCBgb2ZfZ2V0X252bWVtX2V1aTQ4YC4gVGhleSBwcmV0dHkgbXVjaCBzcGVsbCBvdXQgdGhlIGltcGxlbWVudGF0aW9uOiByZWFkaW5nLCBhZGRpbmcsIGRlbGV0aW5nLCBnZXR0aW5nIEJEIGFkZHJlc3NlcywgYW5kIHJldHJpZXZpbmcgRVVJNDggZnJvbSB0aGUgZGV2aWNlIHRyZWUsIHJlc3BlY3RpdmVseS4gSXQgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2YgdGhlIGNvZGUncyBoaWdoLWxldmVsIGZsb3cuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnczogYEJMS19OVk1FTWAsIGBPRmAsIGFuZCBgTlZNRU1gLiBJJ20gZ3Vlc3NpbmcgYEJMS19OVk1FTWAgaXMgdGhlIHByaW1hcnkgZmVhdHVyZSBmbGFnIGZvciB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LiBgT0ZgLCBvZiBjb3Vyc2UsIGlzIERldmljZSBUcmVlIHJlbGF0ZWQuIFRoZW4gdGhlcmUncyBgTlZNRU1gLCBidXQgd2FpdCBhIHNlY29uZC4uLiBgTlZNRU1gIGlzIGEgKnN1YnN5c3RlbSohIEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgQ09ORklHX05WTUVNYCBpcyBhIGJvb2wgb3IgdHJpc3RhdGUuIFRoYXQncyBjcnVjaWFsOyBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGhvdyBkZWVwbHkgaXQncyBpbnRlZ3JhdGVkIHdpdGggdGhlIGNvcmUgTlZNRU0gaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyB3ZWxsIHRoaXMgbmV3IGZlYXR1cmUgYWRoZXJlcyB0byB0aGUgZXhpc3RpbmcgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg1OCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTo0OC41Mzg0NjAyODZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDg1MzU5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5WTUVNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyOm1lbnVjb25maWcgTlZNRU1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMy1cXHRib29sIFxcXCJOVk1FTSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnPTEzPWlmIE5WTUVNXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNTpjb25maWcgTlZNRU1fU1lTRlNcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTYtXFx0Ym9vbCBcXFwiL3N5cy9idXMvbnZtZW0vZGV2aWNlcy8qL252bWVtIChzeXNmcyBpbnRlcmZhY2UpXFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnPTI3PXNvdXJjZSBcXFwiZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMzAtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMxOmNvbmZpZyBOVk1FTV9BTjg4NTVfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjg4NTUgZUZ1c2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDI6Y29uZmlnIE5WTUVNX0FQUExFX0VGVVNFU1xcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgZUZ1c2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy01Mi1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NTM6Y29uZmlnIE5WTUVNX0FQUExFX1NQTUlcXG5kcml2ZXJzL252bWVtL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIFNQTUkgTlZNRU1cXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNjUtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjY2OmNvbmZpZyBOVk1FTV9CQ01fT0NPVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE9uLUNoaXAgT1RQIENvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy03Ny1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6Nzg6Y29uZmlnIE5WTUVNX0JSQ01fTlZSQU1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNzktXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tJ3MgTlZSQU0gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy04Ni1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6ODc6Y29uZmlnIE5WTUVNX0lNWF9JSU1cXG5kcml2ZXJzL252bWVtL0tjb25maWctODgtXFx0dHJpc3RhdGUgXFxcImkuTVggSUMgSWRlbnRpZmljYXRpb24gTW9kdWxlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctOTctXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjk4OmNvbmZpZyBOVk1FTV9JTVhfT0NPVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcImkuTVggNi83LzggT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEwOS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTEwOmNvbmZpZyBOVk1FTV9JTVhfT0NPVFBfRUxFXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTExMS1cXHR0cmlzdGF0ZSBcXFwiaS5NWCBPbi1DaGlwIE9UUCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTE4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMTk6Y29uZmlnIE5WTUVNX0lNWF9PQ09UUF9TQ1VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTIwLVxcdHRyaXN0YXRlIFxcXCJpLk1YOCBTQ1UgT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEyNi1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTI3OmNvbmZpZyBOVk1FTV9KWjQ3ODBfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTI4LVxcdHRyaXN0YXRlIFxcXCJKWjQ3ODAgRUZVU0UgTWVtb3J5IFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMzk6Y29uZmlnIE5WTUVNX0xBTjk2NjJfT1RQQ1xcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNDAtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU45NjYyIE9UUCBjb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTQ2LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNDc6Y29uZmlnIE5WTUVNX0xBWUVSU0NBUEVfU0ZQXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwiTGF5ZXJzY2FwZSBTRlAgKFNlY3VyaXR5IEZ1c2UgUHJvY2Vzc29yKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTYwOmNvbmZpZyBOVk1FTV9MUEMxOFhYX0VFUFJPTVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIk5YUCBMUEMxOFhYIEVFUFJPTSBNZW1vcnkgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNjktXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjE3MDpjb25maWcgTlZNRU1fTFBDMThYWF9PVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTcxLVxcdHRyaXN0YXRlIFxcXCJOWFAgTFBDMThYWCBPVFAgTWVtb3J5IFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTc5LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxODA6Y29uZmlnIE5WTUVNX01BWDc3NzU5XFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiTWF4aW0gSW50ZWdyYXRlZCBNQVg3Nzc1OSBOVk1FTSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE5MS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTkyOmNvbmZpZyBOVk1FTV9NRVNPTl9FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gR1ggZUZ1c2UgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMDEtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjIwMjpjb25maWcgTlZNRU1fTUVTT05fTVhfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMjAzLVxcdHRyaXN0YXRlIFxcXCJBbWxvZ2ljIE1lc29uNi9NZXNvbjgvTWVzb244YiBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIxMS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjEyOmNvbmZpZyBOVk1FTV9NSUNST0NISVBfT1RQQ1xcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMTMtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBPVFBDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMjE4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyMTk6Y29uZmlnIE5WTUVNX01US19FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhdGVrIFNvQ3MgRUZVU0Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMjktXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjIzMDpjb25maWcgTlZNRU1fTVhTX09DT1RQXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIzMS1cXHR0cmlzdGF0ZSBcXFwiRnJlZXNjYWxlIE1YUyBPbi1DaGlwIE9UUCBNZW1vcnkgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNDEtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI0Mjpjb25maWcgTlZNRU1fTklOVEVORE9fT1RQXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI0My1cXHR0cmlzdGF0ZSBcXFwiTmludGVuZG8gV2lpIGFuZCBXaWkgVSBPVFAgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNTMtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI1NDpjb25maWcgTlZNRU1fUzMyR19PQ09UUFxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNTUtXFx0dHJpc3RhdGUgXFxcIlMzMkcgU29DIE9DT1RQIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMjYzLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyNjQ6Y29uZmlnIE5WTUVNX1FDT01fUUZQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI2NS1cXHR0cmlzdGF0ZSBcXFwiUUNPTSBRRlBST00gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNzQtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI3NTpjb25maWcgTlZNRU1fUUNPTV9TRUNfUUZQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI3Ni0gICAgICAgIHRyaXN0YXRlIFxcXCJRQ09NIFNFQ1VSRSBRRlBST00gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yODctXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI4ODpjb25maWcgTlZNRU1fUU5BUF9NQ1VfRUVQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiUU5BUCBNQ1UgRUVQUk9NIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMjk2LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyOTc6Y29uZmlnIE5WTUVNX1JBVkVfU1BfRUVQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI5OC1cXHR0cmlzdGF0ZSBcXFwiUmF2ZSBTUCBFRVBST00gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMDItXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMwMzpjb25maWcgTlZNRU1fUkNBUl9FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMDQtXFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUi1DYXIgR2VuNCBFLUZVU0Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMTMtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMxNDpjb25maWcgTlZNRU1fUk1FTVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMTUtXFx0dHJpc3RhdGUgXFxcIlJlc2VydmVkIE1lbW9yeSBCYXNlZCBEcml2ZXIgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMjQtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMyNTpjb25maWcgTlZNRU1fUk9DS0NISVBfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzI2LVxcdHRyaXN0YXRlIFxcXCJSb2NrY2hpcCBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMzNS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzM2OmNvbmZpZyBOVk1FTV9ST0NLQ0hJUF9PVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzM3LVxcdHRyaXN0YXRlIFxcXCJSb2NrY2hpcCBPVFAgY29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM0Ni1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzQ3OmNvbmZpZyBOVk1FTV9TQzI3WFhfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzQ4LVxcdHRyaXN0YXRlIFxcXCJTcHJlYWR0cnVtIFNDMjdYWCBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM1Ny1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzU4OmNvbmZpZyBOVk1FTV9TTlZTX0xQR1BSXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM1OS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgTG93IFBvd2VyIEdlbmVyYWwgUHVycG9zZSBSZWdpc3RlclxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNjctXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjM2ODpjb25maWcgTlZNRU1fU1BNSV9TREFNXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM2OS1cXHR0cmlzdGF0ZSBcXFwiU1BNSSBTREFNIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMzc1LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNzY6Y29uZmlnIE5WTUVNX1NQUkRfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzc3LVxcdHRyaXN0YXRlIFxcXCJTcHJlYWR0cnVtIFNvQyBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM4Ni1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6Mzg3OmNvbmZpZyBOVk1FTV9TVE0zMl9CU0VDX09QVEVFX1RBXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM4OC1cXHRkZWZfYm9vbCBOVk1FTV9TVE0zMl9ST01FTSBcXHUwMDI2XFx1MDAyNiBPUFRFRVxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM5NS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6Mzk2OmNvbmZpZyBOVk1FTV9TVE0zMl9ST01FTVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVE0zMiBmYWN0b3J5LXByb2dyYW1tZWQgbWVtb3J5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0MDc6Y29uZmlnIE5WTUVNX1NVTlBMVVNfT0NPVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTdW5wbHVzIFNvQyBPVFAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MTgtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjQxOTpjb25maWcgTlZNRU1fU1VOWElfU0lEXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQyMC1cXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIFNvQ3MgU0lEIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNDI4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0Mjk6Y29uZmlnIE5WTUVNX1VfQk9PVF9FTlZcXG5kcml2ZXJzL252bWVtL0tjb25maWctNDMwLVxcdHRyaXN0YXRlIFxcXCJVLUJvb3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNDQxLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0NDI6Y29uZmlnIE5WTUVNX1VOSVBISUVSX0VGVVNFXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ0My1cXHR0cmlzdGF0ZSBcXFwiVW5pUGhpZXIgU29DcyBlRnVzZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ1Mi1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDUzOmNvbmZpZyBOVk1FTV9WRjYxMF9PQ09UUFxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00NTQtXFx0dHJpc3RhdGUgXFxcIlZGNjEwIFNvQyBPQ09UUCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ2My1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDY0OmNvbmZpZyBOVk1FTV9aWU5RTVBcXG5kcml2ZXJzL252bWVtL0tjb25maWctNDY1LVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggWllOUU1QIFNvQyBudm1lbSBmaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ3My1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDc0OmNvbmZpZyBOVk1FTV9RT1JJUV9FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00NzUtXFx0dHJpc3RhdGUgXFxcIk5YUCBRb3JJUSBlRnVzZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMi1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzozOmNvbmZpZyBOVk1FTV9MQVlPVVRTXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctNC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZz05PW1lbnUgXFxcIkxheW91dCBUeXBlc1xcXCJcXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoxMTpjb25maWcgTlZNRU1fTEFZT1VUX1NMMjhfVlBEXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMTItXFx0dHJpc3RhdGUgXFxcIktvbnRyb24gc2wyOCBWUEQgbGF5b3V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoyMDpjb25maWcgTlZNRU1fTEFZT1VUX09OSUVfVExWXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIk9OSUUgdGx2IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoyOTpjb25maWcgTlZNRU1fTEFZT1VUX1VfQk9PVF9FTlZcXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiVS1Cb290IGVudmlyb25tZW50IHZhcmlhYmxlcyBsYXlvdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3Bvd2VyL3Jlc2V0L0tjb25maWc9MzMyPWNvbmZpZyBQT1dFUl9SRVNFVF9TQzI3WFhcXG4tLVxcbmRyaXZlcnMvcG93ZXIvcmVzZXQvS2NvbmZpZy0zNDAtXFxuZHJpdmVycy9wb3dlci9yZXNldC9LY29uZmlnOjM0MTpjb25maWcgTlZNRU1fUkVCT09UX01PREVcXG5kcml2ZXJzL3Bvd2VyL3Jlc2V0L0tjb25maWctMzQyLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIE5WTUVNIHJlYm9vdCBtb2RlIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6NTAuMTg3MDAxNTc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTYwNjA2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvYmxlbTpcblxuKipBbmFseXppbmcgdGhlIERhdGEgRmxvdyBhbmQgUHJlcGFyaW5nIHRoZSBPdXRwdXQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBoZXJlLCB0aGUga2V5IHZhcmlhYmxlIGZvciB0aGlzIHNlY3Rpb24sIGlzIGBOVk1FTWAuIEl0J3MgYSBib29sZWFuLCBtZWFuaW5nIGl0J3MgZWl0aGVyIHRydWUgb3IgZmFsc2UuIEtub3dpbmcgdGhpcyBpcyBmdW5kYW1lbnRhbC4gTXkgYW5hbHlzaXMgaGluZ2VzIG9uIGNvcnJlY3RseSBpbnRlcnByZXRpbmcgYW5kIHV0aWxpemluZyBpdHMgc3RhdGUuXG5cbk15IHBsYW4gdG8gcHJlc2VudCB0aGUgcmVzdWx0IGlzIGFsc28gY2xlYXIuIEknbSBnb2luZyB0byBsZXZlcmFnZSBgc2V0LXJlc3VsdHNgIHRvIHByb3Blcmx5IGV4cG9zZSBteSBmaW5kaW5ncyBmcm9tIHRoZSBkYXRhIGFuYWx5c2lzLiBUaGlzIGlzIHRoZSBjb3JyZWN0IG1ldGhvZCwgYW5kIG1ha2VzIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGNhbGwgaW4gdGhpcyBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzYyLCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjU0LjU0MzA2NDY3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjM4NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfTlZNRU1cIixcbiAgICBcIk5WTUVNXCIsXG4gICAgXCJPRlwiLFxuICAgIFwiQlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbnZtZW1fcmVnX3JlYWRcIixcbiAgICBcImJsa19udm1lbV9hZGRcIixcbiAgICBcImJsa19udm1lbV9kZWxcIixcbiAgICBcImhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbVwiLFxuICAgIFwib2ZfZ2V0X252bWVtX2V1aTQ4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBmZWF0dXJlIHRvIGV4cG9zZSBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zIGFzIE5WTUVNIHByb3ZpZGVycywgYWxsb3dpbmcgTUFDIGFuZCBCbHVldG9vdGggYWRkcmVzc2VzIHRvIGJlIHJlYWQgZnJvbSB0aGVtLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBCbHVldG9vdGggY29yZSB0byByZWFkIEJEX0FERFIgZnJvbSBOVk1FTS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgbG9naWMgaW4gdGhlIGJsb2NrIGxheWVyIGFuZCBuZXR3b3JraW5nL2JsdWV0b290aCBjb3JlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfTlZNRU1cIixcbiAgICBcIk5WTUVNXCIsXG4gICAgXCJPRlwiLFxuICAgIFwiQlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbnZtZW1fcmVnX3JlYWRcIixcbiAgICBcImJsa19udm1lbV9hZGRcIixcbiAgICBcImJsa19udm1lbV9kZWxcIixcbiAgICBcImhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbVwiLFxuICAgIFwib2ZfZ2V0X252bWVtX2V1aTQ4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBmZWF0dXJlIHRvIGV4cG9zZSBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zIGFzIE5WTUVNIHByb3ZpZGVycywgYWxsb3dpbmcgTUFDIGFuZCBCbHVldG9vdGggYWRkcmVzc2VzIHRvIGJlIHJlYWQgZnJvbSB0aGVtLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBCbHVldG9vdGggY29yZSB0byByZWFkIEJEX0FERFIgZnJvbSBOVk1FTS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgbG9naWMgaW4gdGhlIGJsb2NrIGxheWVyIGFuZCBuZXR3b3JraW5nL2JsdWV0b290aCBjb3JlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 16:55:58 +0000 UTC FinishedAt: 2026-08-06 17:15:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_NVMEM", "NVMEM", "OF", "BT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b0057c68df711bf6a62033c072ac61c4f9d3cbc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_NVMEM", "NVMEM", "OF", "BT" ], "series_id": "480cd0e9-b447-4a47-a276-a35f72203bb9" }, "track": "KASAN", "fuzz": { "focus": [ "fs", "net" ], "focus_symbols": [ "blk_nvmem_reg_read", "blk_nvmem_add", "blk_nvmem_del", "hci_dev_get_bd_addr_from_nvmem", "of_get_nvmem_eui48" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19OVk1FTSYjMzQ7LAogICAgJiMzNDtOVk1FTSYjMzQ7LAogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa19udm1lbV9yZWdfcmVhZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fYWRkJiMzNDssCiAgICAmIzM0O2Jsa19udm1lbV9kZWwmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtJiMzNDssCiAgICAmIzM0O29mX2dldF9udm1lbV9ldWk0OCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTUyN2M3YTE4ZTg2NTVlOWZkNGY3YzYxNzIwYzViZjBiOGZhYTQ4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTc6MTQ6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXG5pbmRleCBhNjFkNmM5NmRmNzU5Li4wNDIyODk0NTA4NDc4IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWxcbkBAIC0zOCw3ICYjNDM7MzgsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcbiAgICAgcHJvcGVydGllczpcbiAgICAgICBjb21wYXRpYmxlOlxuICAgICAgICAgY29udGFpbnM6XG4tICAgICAgICAgIGNvbnN0OiBmaXhlZC1wYXJ0aXRpb25zXG4mIzQzOyAgICAgICAgICBlbnVtOlxuJiM0MzsgICAgICAgICAgICAtIGZpeGVkLXBhcnRpdGlvbnNcbiYjNDM7ICAgICAgICAgICAgLSBmaXhlZC1sYXlvdXRcbiBcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuQEAgLTg2LDYgJiM0Mzs4OCwyNSBAQCBleGFtcGxlczpcbiAgICAgICAgICAgICAgICAgICAgIHJlYWQtb25seTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgcGFydGl0aW9ucy1ib290MiB7XG4mIzQzOyAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7Zml4ZWQtbGF5b3V0XCYjMzQ7O1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgICAgICAgICBtYWMtYWRkckA0NDAwIHtcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7bWFjLWJhc2VcJiMzNDs7XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMHg0NDAwIDB4Nlx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgICAgICB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgICAgIGJkLWFkZHJANTQwMCB7XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O21hYy1iYXNlXCYjMzQ7O1xuJiM0MzsgICAgICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4NTQwMCAweDZcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgI252bWVtLWNlbGwtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICAgICAgfTtcbiYjNDM7ICAgICAgICAgICAgfTtcbiAgICAgICAgIH07XG4gICAgIH07XG4gXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxuaW5kZXggYzhlOWM1NWMxYWZiNC4uN2NiMjhmMzBjOWFmMCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxuQEAgLTIyLDQgJiM0MzsyMiwxMyBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBib290IGZpcm13YXJlIGlzIGluY29ycmVjdGx5IHBhc3NpbmcgdGhlIGFkZHJlc3MgaW4gYmlnLWVuZGlhbiBvcmRlclxuIFxuJiM0MzsgIG52bWVtLWNlbGxzOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBOdm1lbSBkYXRhIGNlbGwgdGhhdCBjb250YWlucyBhIDYgYnl0ZSBCRCBhZGRyZXNzIHdpdGggdGhlIG1vc3RcbiYjNDM7ICAgICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAoYmlnLWVuZGlhbikuXG4mIzQzO1xuJiM0MzsgIG52bWVtLWNlbGwtbmFtZXM6XG4mIzQzOyAgICBjb25zdDogbG9jYWwtYmQtYWRkcmVzc1xuJiM0MztcbiBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuaW5kZXggZDRmNGQ3MmVlMGQzOC4uN2Y5ZDE2Y2I3YzE0MyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway55YW1sXG5AQCAtOTIsNiAmIzQzOzkyLDIyIEBAIHByb3BlcnRpZXM6XG4gXG4gICBpZWVlODAyMTEtZnJlcS1saW1pdDogdHJ1ZVxuIFxuJiM0MzsgIG52bWVtLWNlbGxzOlxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7ICAgIG1heEl0ZW1zOiAzXG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgUmVmZXJlbmNlcyB0byBudm1lbSBjZWxscyBmb3IgTUFDIGFkZHJlc3MgYW5kL29yIGNhbGlicmF0aW9uIGRhdGEuXG4mIzQzOyAgICAgIFN1cHBvcnRlZCBjZWxsIG5hbWVzIGFyZSBtYWMtYWRkcmVzcywgY2FsaWJyYXRpb24sIGFuZCBwcmUtY2FsaWJyYXRpb24uXG4mIzQzO1xuJiM0MzsgIG52bWVtLWNlbGwtbmFtZXM6XG4mIzQzOyAgICBtaW5JdGVtczogMVxuJiM0MzsgICAgbWF4SXRlbXM6IDNcbiYjNDM7ICAgIGl0ZW1zOlxuJiM0MzsgICAgICBlbnVtOlxuJiM0MzsgICAgICAgIC0gbWFjLWFkZHJlc3NcbiYjNDM7ICAgICAgICAtIGNhbGlicmF0aW9uXG4mIzQzOyAgICAgICAgLSBwcmUtY2FsaWJyYXRpb25cbiYjNDM7XG4gICBxY29tLGNhbGlicmF0aW9uLWRhdGE6XG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQ4LWFycmF5XG4gICAgIGRlc2NyaXB0aW9uOlxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcbmluZGV4IGJmMDg4ZmE5ODA3ZjAuLjM4ODM5YjhhMzYxZTcgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0c1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcbkBAIC00MDksNyAmIzQzOzQwOSwzMyBAQCBcdTAwMjZzZGhjXzEge1xuIFx0bm8tc2RpbztcbiBcdG5vLXNkO1xuIFxuJiM0MztcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHQjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuIFx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0OztcbiYjNDM7XG4mIzQzO1x0Y2FyZEAwIHtcbiYjNDM7XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttbWMtY2FyZFwmIzM0OztcbiYjNDM7XHRcdHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0cGFydGl0aW9ucy1ib290MSB7XG4mIzQzO1x0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmaXhlZC1sYXlvdXRcJiMzNDs7XG4mIzQzO1x0XHRcdCNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7XHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdFx0d2lmaV9tYWNfYWRkcjogbWFjLWFkZHJANDQwMCB7XG4mIzQzO1x0XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O21hYy1iYXNlXCYjMzQ7O1xuJiM0MztcdFx0XHRcdHJlZyA9IFx1MDAzYzB4NDQwMCAweDZcdTAwM2U7XG4mIzQzO1x0XHRcdFx0I252bWVtLWNlbGwtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MztcdFx0XHR9O1xuJiM0MztcbiYjNDM7XHRcdFx0YmRfYWRkcjogYmQtYWRkckA1NDAwIHtcbiYjNDM7XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFjLWJhc2VcJiMzNDs7XG4mIzQzO1x0XHRcdFx0cmVnID0gXHUwMDNjMHg1NDAwIDB4Nlx1MDAzZTtcbiYjNDM7XHRcdFx0XHQjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzO1x0XHRcdH07XG4mIzQzO1x0XHR9O1xuJiM0MztcdH07XG4gfTtcbiBcbiBcdTAwMjZzcGk1IHtcbkBAIC01MTIsNiAmIzQzOzUzOCw5IEBAIGJsdWV0b290aCB7XG4gXHRcdHZkZGNoMC1zdXBwbHkgPSBcdTAwM2NcdTAwMjZwbTQxMjVfbDIyXHUwMDNlO1xuIFx0XHRlbmFibGUtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZ0bG1tIDg3IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4gXHRcdG1heC1zcGVlZCA9IFx1MDAzYzMwMDAwMDBcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0bnZtZW0tY2VsbHMgPSBcdTAwM2NcdTAwMjZiZF9hZGRyIDBcdTAwM2U7XG4mIzQzO1x0XHRudm1lbS1jZWxsLW5hbWVzID0gXCYjMzQ7bG9jYWwtYmQtYWRkcmVzc1wmIzM0OztcbiBcdH07XG4gfTtcbiBcbkBAIC01NTcsNiAmIzQzOzU4Niw5IEBAIFx1MDAyNndpZmkge1xuIFx0cWNvbSxhdGgxMGstY2FsaWJyYXRpb24tdmFyaWFudCA9IFwmIzM0O0FyZHVpbm9JbW9sYVwmIzM0OztcbiBcdGZpcm13YXJlLW5hbWUgPSBcJiMzNDtxY20yMjkwXCYjMzQ7O1xuIFxuJiM0MztcdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2d2lmaV9tYWNfYWRkciAwXHUwMDNlO1xuJiM0MztcdG52bWVtLWNlbGwtbmFtZXMgPSBcJiMzNDttYWMtYWRkcmVzc1wmIzM0OztcbiYjNDM7XG4gXHRzdGF0dXMgPSBcJiMzNDtva2F5XCYjMzQ7O1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZyBiL2Jsb2NrL0tjb25maWdcbmluZGV4IDcwZTRhNjZkOTQxZmYuLjQ4OTlhZDU3MmM3MWYgMTAwNjQ0XG4tLS0gYS9ibG9jay9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9LY29uZmlnXG5AQCAtMjA5LDYgJiM0MzsyMDksMTcgQEAgY29uZmlnIEJMS19JTkxJTkVfRU5DUllQVElPTl9GQUxMQkFDS1xuIFx0ICBieSBmYWxsaW5nIGJhY2sgdG8gdGhlIGtlcm5lbCBjcnlwdG8gQVBJIHdoZW4gaW5saW5lXG4gXHQgIGVuY3J5cHRpb24gaGFyZHdhcmUgaXMgbm90IHByZXNlbnQuXG4gXG4mIzQzO2NvbmZpZyBCTEtfTlZNRU1cbiYjNDM7XHRib29sIFwmIzM0O0Jsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlclwmIzM0O1xuJiM0MztcdGRlcGVuZHMgb24gT0ZcbiYjNDM7XHRkZXBlbmRzIG9uIE5WTUVNXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgQWxsb3cgYmxvY2sgZGV2aWNlcyAob3IgcGFydGl0aW9ucykgdG8gYWN0IGFzIE5WTUVNIHByb3ZpZGVycyxcbiYjNDM7XHQgIGV4cG9zaW5nIGZhY3RvcnktcHJvdmlzaW9uZWQgZGF0YSBzdWNoIGFzIE1BQyBhZGRyZXNzZXMgb3IgV2ktRmlcbiYjNDM7XHQgIGNhbGlicmF0aW9uIGJsb2JzIHRvIHRoZSBkcml2ZXJzIHRoYXQgY29uc3VtZSB0aGVtLiBUaGlzIGlzXG4mIzQzO1x0ICB0eXBpY2FsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHdoZXJlIHN1Y2ggZGF0YSBpcyBzdG9yZWQgaW4gYVxuJiM0MztcdCAgZGVkaWNhdGVkIGFyZWEgb2YgYW4gZU1NQywgaW5zdGVhZCBvZiBhIHNlcGFyYXRlIEVFUFJPTSBvciBPVFAuXG4mIzQzO1xuIHNvdXJjZSBcJiMzNDtibG9jay9wYXJ0aXRpb25zL0tjb25maWdcJiMzNDtcbiBcbiBjb25maWcgQkxLX1BNXG5kaWZmIC0tZ2l0IGEvYmxvY2svTWFrZWZpbGUgYi9ibG9jay9NYWtlZmlsZVxuaW5kZXggZTdiZDMyMGUzZDY5Ny4uODIwMDI5N2ZiY2JhYiAxMDA2NDRcbi0tLSBhL2Jsb2NrL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9NYWtlZmlsZVxuQEAgLTM5LDMgJiM0MzszOSw0IEBAIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT04pXHQmIzQzOz0gYmxrLWNyeXB0by5vIGJsay1jcnlwdG8tcHJvZmlsZS5vIFxcXG4gXHRcdFx0XHRcdCAgIGJsay1jcnlwdG8tc3lzZnMub1xuIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0spXHQmIzQzOz0gYmxrLWNyeXB0by1mYWxsYmFjay5vXG4gb2JqLSQoQ09ORklHX0JMT0NLX0hPTERFUl9ERVBSRUNBVEVEKVx0JiM0Mzs9IGhvbGRlci5vXG4mIzQzO29iai0kKENPTkZJR19CTEtfTlZNRU0pICAgICAgICAgICAgICAgICYjNDM7PSBibGstbnZtZW0ub1xuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1udm1lbS5jIGIvYmxvY2svYmxrLW52bWVtLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42OWI2OTE4NGUxNjMwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbnZtZW0uY1xuQEAgLTAsMCAmIzQzOzEsMTEyIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4mIzQzOy8qXG4mIzQzOyAqIGJsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlclxuJiM0MzsgKlxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRGFuaWVsIEdvbGxlIFx1MDAzY2RhbmllbEBtYWtyb3RvcGlhLm9yZ1x1MDAzZVxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiYjNDM7ICpcbiYjNDM7ICogVXNlZnVsIG9uIGRldmljZXMgdXNpbmcgYSB3aG9sZSBkaXNrIG9yIGEgcGFydGl0aW9uIChlLmcuIGFuIGVNTUMgYm9vdFxuJiM0MzsgKiBwYXJ0aXRpb24pIHRvIHN0b3JlIE1BQyBhZGRyZXNzZXMsIEJsdWV0b290aCBhZGRyZXNzZXMgb3IgV2ktRmlcbiYjNDM7ICogY2FsaWJyYXRpb24gRUVQUk9NIGRhdGEuXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBOVk1FTSBkZXZpY2UgaXMgYSBzaWRlIGNoYW5uZWwgb250byBhIGJsb2NrIGRldmljZSB0aGF0IHN0YXlzIGZ1bGx5XG4mIzQzOyAqIHVzYWJsZS4gVGhpcyBpcyBzb21ld2hhdCBtaXRpZ2F0ZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIGV4Y2x1c2l2ZWx5LlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZpbGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L252bWVtLXByb3ZpZGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbnZtZW0tY29uc3VtZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2Jsay5oXCYjMzQ7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcbiYjNDM7XHRcdFx0ICAgICAgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gcHJpdjtcbiYjNDM7XHRzdHJ1Y3QgZmlsZSAqYmRldl9maWxlO1xuJiM0MztcdGxvZmZfdCBwb3MgPSBmcm9tO1xuJiM0MztcdHNzaXplX3QgcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBvcGVuIGFuZCBwcmV2ZW50IG90aGVyIGV4Y2x1c2l2ZSBvcGVuZXJzICovXG4mIzQzO1x0YmRldl9maWxlID0gYmRldl9maWxlX29wZW5fYnlfZGV2KGJkZXYtXHUwMDNlYmRfZGV2LFxuJiM0MztcdFx0XHRcdFx0ICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCxcbiYjNDM7XHRcdFx0XHRcdCAgYmxrX252bWVtX3JlZ19yZWFkLCBOVUxMKTtcbiYjNDM7XHRpZiAoSVNfRVJSKGJkZXZfZmlsZSkpXG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihiZGV2X2ZpbGUpO1xuJiM0MztcbiYjNDM7XHRpZiAoZmlsZV9iZGV2KGJkZXZfZmlsZSkgIT0gYmRldikge1xuJiM0MztcdFx0ZnB1dChiZGV2X2ZpbGUpO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXQgPSBrZXJuZWxfcmVhZChiZGV2X2ZpbGUsIHZhbCwgYnl0ZXMsIFx1MDAyNnBvcyk7XG4mIzQzO1x0ZnB1dChiZGV2X2ZpbGUpO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRpZiAocmV0ICE9IGJ5dGVzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZiZGV2LVx1MDAzZWJkX2RldmljZTtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgbnZtZW1fY29uZmlnIGNvbmZpZyA9IHtcbiYjNDM7XHRcdC5pZFx0XHQ9IE5WTUVNX0RFVklEX05PTkUsXG4mIzQzO1x0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiYjNDM7XHRcdC53b3JkX3NpemVcdD0gMSxcbiYjNDM7XHRcdC5zdHJpZGVcdFx0PSAxLFxuJiM0MztcdFx0LnJlYWRfb25seVx0PSB0cnVlLFxuJiM0MztcdFx0LnJvb3Rfb25seVx0PSB0cnVlLFxuJiM0MztcdFx0Lmlnbm9yZV93cFx0PSB0cnVlLFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IG52bWVtX2RldmljZSAqbnZtZW07XG4mIzQzO1x0c3RydWN0IGRldmljZV9ub2RlICpjaGlsZDtcbiYjNDM7XG4mIzQzO1x0Lyogc2tpcCBkZXZpY2VzIHdoaWNoIGRvIG5vdCBoYXZlIGEgZGV2aWNlIHRyZWUgbm9kZSAqL1xuJiM0MztcdGlmICghbnApXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgbGF5b3V0IGlzIGRlc2NyaWJlZCBlaXRoZXIgYnkgYW4gXCYjMzQ7bnZtZW0tbGF5b3V0XCYjMzQ7IGNoaWxkIG5vZGUgb3JcbiYjNDM7XHQgKiBieSB0aGUgZGV2aWNlIG5vZGUgaXRzZWxmIGJlaW5nIGEgXCYjMzQ7Zml4ZWQtbGF5b3V0XCYjMzQ7IGNvbnRhaW5lci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRjaGlsZCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDtudm1lbS1sYXlvdXRcJiMzNDspO1xuJiM0MztcdGlmIChjaGlsZClcbiYjNDM7XHRcdG9mX25vZGVfcHV0KGNoaWxkKTtcbiYjNDM7XHRlbHNlIGlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwmIzM0O2ZpeGVkLWxheW91dFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKGJkZXZfbnJfYnl0ZXMoYmRldikgXHUwMDNlIElOVF9NQVgpIHtcbiYjNDM7XHRcdGRldl93YXJuKGRldiwgXCYjMzQ7YmxvY2sgZGV2aWNlIHRvbyBsYXJnZSB0byBiZSBhbiBOVk1FTVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGNvbmZpZy5kZXYgPSBkZXY7XG4mIzQzO1x0Y29uZmlnLm5hbWUgPSBkZXZfbmFtZShkZXYpO1xuJiM0MztcdGNvbmZpZy5wcml2ID0gYmRldjtcbiYjNDM7XHRjb25maWcucmVnX3JlYWQgPSBibGtfbnZtZW1fcmVnX3JlYWQ7XG4mIzQzO1x0Y29uZmlnLnNpemUgPSBiZGV2X25yX2J5dGVzKGJkZXYpO1xuJiM0MztcdGNvbmZpZy5vZl9ub2RlID0gbnA7XG4mIzQzO1xuJiM0MztcdG52bWVtID0gbnZtZW1fcmVnaXN0ZXIoXHUwMDI2Y29uZmlnKTtcbiYjNDM7XHRpZiAoSVNfRVJSKG52bWVtKSlcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksXG4mIzQzO1x0XHRcdFx0ICAgICBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgTlZNRU0gZGV2aWNlXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0YmRldi1cdTAwM2ViZF9udm1lbSA9IG52bWVtO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXG4mIzQzO3tcbiYjNDM7XHRudm1lbV91bnJlZ2lzdGVyKGJkZXYtXHUwMDNlYmRfbnZtZW0pO1xuJiM0MztcdGJkZXYtXHUwMDNlYmRfbnZtZW0gPSBOVUxMO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaFxuaW5kZXggZWFhYzA1ODE1Y2IwMy4uMDc5ZWRiOWZiYzM3YSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGsuaFxuQEAgLTgxNyw0ICYjNDM7ODE3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibGtfZGVidWdmc191bmxvY2soc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsXG4gXHRtZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpO1xuIH1cbiBcbiYjNDM7I2lmZGVmIENPTkZJR19CTEtfTlZNRU1cbiYjNDM7aW50IGJsa19udm1lbV9hZGQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7XG4mIzQzO3ZvaWQgYmxrX252bWVtX2RlbChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTtcbiYjNDM7I2Vsc2VcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KSB7IHJldHVybiAwOyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiAjZW5kaWYgLyogQkxLX0lOVEVSTkFMX0ggKi9cbmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuY1xuaW5kZXggZGYyYzNjNjliNDY3ZC4uZmM2MzIxMjJmYWU4YSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2dlbmhkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2dlbmhkLmNcbkBAIC00MTcsNiAmIzQzOzQxNyw4IEBAIHN0YXRpYyB2b2lkIGFkZF9kaXNrX2ZpbmFsKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuIFx0XHQgKi9cbiBcdFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGRldiwgMCk7XG4gXHRcdGRpc2tfdWV2ZW50KGRpc2ssIEtPQkpfQUREKTtcbiYjNDM7XG4mIzQzO1x0XHRibGtfbnZtZW1fYWRkKGRpc2stXHUwMDNlcGFydDApO1xuIFx0fVxuIFxuIFx0YmxrX2FwcGx5X2JkaV9saW1pdHMoZGlzay1cdTAwM2ViZGksIFx1MDAyNmRpc2stXHUwMDNlcXVldWUtXHUwMDNlbGltaXRzKTtcbkBAIC03MDAsNiAmIzQzOzcwMiw4IEBAIHN0YXRpYyB2b2lkIF9fZGVsX2dlbmRpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spXG4gXG4gXHRkaXNrX2RlbF9ldmVudHMoZGlzayk7XG4gXG4mIzQzO1x0YmxrX252bWVtX2RlbChkaXNrLVx1MDAzZXBhcnQwKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogUHJldmVudCBuZXcgb3BlbmVycyBieSB1bmxpbmtlZCB0aGUgYmRldiBpbm9kZS5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaCBiL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaFxuaW5kZXggYjA5OTc0NjdiNjFhNS4uMzI2MDgxNDk5ZDlhNiAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaFxuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oXG5AQCAtMTcsNiAmIzQzOzE3LDcgQEAgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zIHtcbiBcdFx0aW50IGZsYWdzO1xuIFx0XHRib29sIGhhc19pbmZvO1xuIFx0XHRzdHJ1Y3QgcGFydGl0aW9uX21ldGFfaW5mbyBpbmZvO1xuJiM0MztcdFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZTtcbiBcdH0gKnBhcnRzO1xuIFx0aW50IG5leHQ7XG4gXHRpbnQgbGltaXQ7XG5kaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMgYi9ibG9jay9wYXJ0aXRpb25zL2NvcmUuY1xuaW5kZXggYjVjNTliNzljYTdjYi4uYzgzMjI3NzEwNTg0YSAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9wYXJ0aXRpb25zL2NvcmUuY1xuQEAgLTExLDYgJiM0MzsxMSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2N0eXBlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JhaWQvZGV0ZWN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtjaGVjay5oXCYjMzQ7XG4gXG5AQCAtMTEwLDggJiM0MzsxMTEsMTcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqYWxsb2NhdGVfcGFydGl0aW9ucyhzdHJ1Y3QgZ2VuZGlzayAqaGQpXG4gXHRyZXR1cm4gc3RhdGU7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuJiM0Mzt7XG4mIzQzO1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHN0YXRlLVx1MDAzZWxpbWl0OyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zndub2RlX2hhbmRsZV9wdXQoc3RhdGUtXHUwMDNlcGFydHNbaV0uZndub2RlKTtcbiYjNDM7XHRcdHN0YXRlLVx1MDAzZXBhcnRzW2ldLmZ3bm9kZSA9IE5VTEw7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGZyZWVfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuIHtcbiYjNDM7XHRkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdGF0ZSk7XG4gXHR2ZnJlZShzdGF0ZS1cdTAwM2VwYXJ0cyk7XG4gXHRrZnJlZShzdGF0ZSk7XG4gfVxuQEAgLTEzOSw2ICYjNDM7MTQ5LDcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqY2hlY2tfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpoZClcbiBcbiBcdGkgPSByZXMgPSBlcnIgPSAwO1xuIFx0d2hpbGUgKCFyZXMgXHUwMDI2XHUwMDI2IGNoZWNrX3BhcnRbaV0pIHtcbiYjNDM7XHRcdGRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0YXRlKTtcbiBcdFx0bWVtc2V0KHN0YXRlLVx1MDAzZXBhcnRzLCAwLCBzdGF0ZS1cdTAwM2VsaW1pdCAqIHNpemVvZihzdGF0ZS1cdTAwM2VwYXJ0c1swXSkpO1xuIFx0XHRyZXMgPSBjaGVja19wYXJ0W2kmIzQzOyYjNDM7XShzdGF0ZSk7XG4gXHRcdGlmIChyZXMgXHUwMDNjIDApIHtcbkBAIC0yNDcsNiAmIzQzOzI1OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpwYXJ0X2F0dHJfZ3JvdXBzW10gPSB7XG4gXG4gc3RhdGljIHZvaWQgcGFydF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4mIzQzO1x0Zndub2RlX2hhbmRsZV9wdXQoZGV2X2Z3bm9kZShkZXYpKTtcbiBcdHB1dF9kaXNrKGRldl90b19iZGV2KGRldiktXHUwMDNlYmRfZGlzayk7XG4gXHRiZGV2X2Ryb3AoZGV2X3RvX2JkZXYoZGV2KSk7XG4gfVxuQEAgLTI3Nyw2ICYjNDM7Mjg5LDggQEAgdm9pZCBkcm9wX3BhcnRpdGlvbihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpwYXJ0KVxuIFx0eGFfZXJhc2UoXHUwMDI2cGFydC1cdTAwM2ViZF9kaXNrLVx1MDAzZXBhcnRfdGJsLCBiZGV2X3BhcnRubyhwYXJ0KSk7XG4gXHRrb2JqZWN0X3B1dChwYXJ0LVx1MDAzZWJkX2hvbGRlcl9kaXIpO1xuIFxuJiM0MztcdGJsa19udm1lbV9kZWwocGFydCk7XG4mIzQzO1xuIFx0ZGV2aWNlX2RlbChcdTAwMjZwYXJ0LVx1MDAzZWJkX2RldmljZSk7XG4gXHRwdXRfZGV2aWNlKFx1MDAyNnBhcnQtXHUwMDNlYmRfZGV2aWNlKTtcbiB9XG5AQCAtMjk0LDcgJiM0MzszMDgsOCBAQCBzdGF0aWMgY29uc3QgREVWSUNFX0FUVFIod2hvbGVfZGlzaywgMDQ0NCwgd2hvbGVfZGlza19zaG93LCBOVUxMKTtcbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubyxcbiBcdFx0XHRcdHNlY3Rvcl90IHN0YXJ0LCBzZWN0b3JfdCBsZW4sIGludCBmbGFncyxcbi1cdFx0XHRcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvKVxuJiM0MztcdFx0XHRcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvLFxuJiM0MztcdFx0XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXG4ge1xuIFx0ZGV2X3QgZGV2dCA9IE1LREVWKDAsIDApO1xuIFx0c3RydWN0IGRldmljZSAqZGRldiA9IGRpc2tfdG9fZGV2KGRpc2spO1xuQEAgLTM0Myw2ICYjNDM7MzU4LDcgQEAgc3RhdGljIHN0cnVjdCBibG9ja19kZXZpY2UgKmFkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sXG4gXHRwZGV2LVx1MDAzZWNsYXNzID0gXHUwMDI2YmxvY2tfY2xhc3M7XG4gXHRwZGV2LVx1MDAzZXR5cGUgPSBcdTAwMjZwYXJ0X3R5cGU7XG4gXHRwZGV2LVx1MDAzZXBhcmVudCA9IGRkZXY7XG4mIzQzO1x0ZGV2aWNlX3NldF9ub2RlKHBkZXYsIGZ3bm9kZV9oYW5kbGVfZ2V0KGZ3bm9kZSkpO1xuIFxuIFx0LyogaW4gY29uc2VjdXRpdmUgbWlub3IgcmFuZ2U/ICovXG4gXHRpZiAoYmRldl9wYXJ0bm8oYmRldikgXHUwMDNjIGRpc2stXHUwMDNlbWlub3JzKSB7XG5AQCAtMzkyLDYgJiM0Mzs0MDgsOSBAQCBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubyxcbiBcdC8qIHN1cHByZXNzIHVldmVudCBpZiB0aGUgZGlzayBzdXBwcmVzc2VzIGl0ICovXG4gXHRpZiAoIWRldl9nZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYpKVxuIFx0XHRrb2JqZWN0X3VldmVudChcdTAwMjZwZGV2LVx1MDAzZWtvYmosIEtPQkpfQUREKTtcbiYjNDM7XG4mIzQzO1x0YmxrX252bWVtX2FkZChiZGV2KTtcbiYjNDM7XG4gXHRyZXR1cm4gYmRldjtcbiBcbiBvdXRfZGVsOlxuQEAgLTQ0OSw3ICYjNDM7NDY4LDcgQEAgaW50IGJkZXZfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubywgc2VjdG9yX3Qgc3RhcnQsXG4gXHR9XG4gXG4gXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwYXJ0bm8sIHN0YXJ0LCBsZW5ndGgsXG4tXHRcdFx0QUREUEFSVF9GTEFHX05PTkUsIE5VTEwpO1xuJiM0MztcdFx0XHRBRERQQVJUX0ZMQUdfTk9ORSwgTlVMTCwgTlVMTCk7XG4gXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8ocGFydCk7XG4gb3V0OlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpc2stXHUwMDNlb3Blbl9tdXRleCk7XG5AQCAtNTY0LDcgJiM0Mzs1ODMsNyBAQCBzdGF0aWMgYm9vbCBibGtfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzayxcbiBcdH1cbiBcbiBcdHBhcnQgPSBhZGRfcGFydGl0aW9uKGRpc2ssIHAsIGZyb20sIHNpemUsIHN0YXRlLVx1MDAzZXBhcnRzW3BdLmZsYWdzLFxuLVx0XHRcdCAgICAgXHUwMDI2c3RhdGUtXHUwMDNlcGFydHNbcF0uaW5mbyk7XG4mIzQzO1x0XHRcdCAgICAgXHUwMDI2c3RhdGUtXHUwMDNlcGFydHNbcF0uaW5mbywgc3RhdGUtXHUwMDNlcGFydHNbcF0uZndub2RlKTtcbiBcdGlmIChJU19FUlIocGFydCkpIHtcbiBcdFx0aWYgKFBUUl9FUlIocGFydCkgIT0gLUVOWElPKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fRVJSIFwmIzM0OyAlczogcCVkIGNvdWxkIG5vdCBiZSBhZGRlZDogJXBlXFxuXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xuaW5kZXggNTM2NjRlYTA2YjY1NC4uNGZjN2M4MGM0MDdkZSAxMDA2NDRcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9vZi5jXG5AQCAtMyw2ICYjNDM7Myw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYmxrZGV2LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tYWpvci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtjaGVjay5oXCYjMzQ7XG4gXG5AQCAtNjIsNiAmIzQzOzYzLDggQEAgc3RhdGljIHZvaWQgYWRkX29mX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBpbnQgc2xvdCxcbiBcdFx0cGFydG5hbWUgPSBvZl9nZXRfcHJvcGVydHkobnAsIFwmIzM0O25hbWVcJiMzNDssIFx1MDAyNmxlbik7XG4gXHRzdHJzY3B5KGluZm8tXHUwMDNldm9sbmFtZSwgcGFydG5hbWUsIHNpemVvZihpbmZvLVx1MDAzZXZvbG5hbWUpKTtcbiBcbiYjNDM7XHRzdGF0ZS1cdTAwM2VwYXJ0c1tzbG90XS5md25vZGUgPSBmd25vZGVfaGFuZGxlX2dldChvZl9md25vZGVfaGFuZGxlKG5wKSk7XG4mIzQzO1xuIFx0c2VxX2J1Zl9wcmludGYoXHUwMDI2c3RhdGUtXHUwMDNlcHBfYnVmLCBcJiMzNDsoJXMpXCYjMzQ7LCBpbmZvLVx1MDAzZXZvbG5hbWUpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xuaW5kZXggMTBjNDk2ZWFlYTJjMS4uM2M2ZjAyMWI3NjIxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmNcbkBAIC03MjMsOCAmIzQzOzcyMywxMSBAQCBzdGF0aWMgaW50IHFjYV9jaGVja19iZGFkZHIoc3RydWN0IGhjaV9kZXYgKmhkZXYsIGNvbnN0IHN0cnVjdCBxY2FfZndfY29uZmlnICpjb1xuIFx0fVxuIFxuIFx0YmRhID0gKHN0cnVjdCBoY2lfcnBfcmVhZF9iZF9hZGRyICopc2tiLVx1MDAzZWRhdGE7XG4tXHRpZiAoIWJhY21wKFx1MDAyNmJkYS1cdTAwM2ViZGFkZHIsIFx1MDAyNmNvbmZpZy1cdTAwM2ViZGFkZHIpKVxuJiM0MztcdGlmICghYmFjbXAoXHUwMDI2YmRhLVx1MDAzZWJkYWRkciwgXHUwMDI2Y29uZmlnLVx1MDAzZWJkYWRkcikpIHtcbiBcdFx0aGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSk7XG4mIzQzO1x0XHRoY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTtcbiYjNDM7XHRcdGhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSk7XG4mIzQzO1x0fVxuIFxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuaW5kZXggYjkwNTg0ZTFiOTllYS4uZWZhNjMxY2U3MjgzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuQEAgLTE2Nyw3ICYjNDM7MTY3LDE4IEBAIHN0YXRpYyBpbnQgbnZtZW1fbGF5b3V0X2J1c19wb3B1bGF0ZShzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSxcbiBcbiBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX252bWVtX2xheW91dF9nZXRfY29udGFpbmVyKHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtKVxuIHtcbi1cdHJldHVybiBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bnZtZW0tbGF5b3V0XCYjMzQ7KTtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xuJiM0MztcbiYjNDM7XHQvKiBTZWFyY2ggZm9yIG52bWVtLWxheW91dCBjaGlsZCAqL1xuJiM0MztcdG5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnZtZW0tXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O252bWVtLWxheW91dFwmIzM0Oyk7XG4mIzQzO1x0aWYgKG5wKVxuJiM0MztcdFx0cmV0dXJuIG5wO1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgbnZtZW0gb2Zfbm9kZSBpcyBpdHNlbGYgYSBmaXhlZC1sYXlvdXQgbm9kZSAqL1xuJiM0MztcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7Zml4ZWQtbGF5b3V0XCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybiBvZl9ub2RlX2dldChudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChvZl9udm1lbV9sYXlvdXRfZ2V0X2NvbnRhaW5lcik7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcbmluZGV4IDg4MDhlZTc2ZTczYzAuLjZlZDE3M2M2NDkwMjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiBzdHJ1Y3QgYmlvX3NldDtcbiBzdHJ1Y3QgYmlvO1xuIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQ7XG4mIzQzO3N0cnVjdCBudm1lbV9kZXZpY2U7XG4gc3RydWN0IHBhZ2U7XG4gc3RydWN0IGlvX2NvbnRleHQ7XG4gc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7XG5AQCAtNzMsNiAmIzQzOzc0LDkgQEAgc3RydWN0IGJsb2NrX2RldmljZSB7XG4gXHRpbnRcdFx0XHRiZF93cml0ZXJzO1xuICNpZmRlZiBDT05GSUdfU0VDVVJJVFlcbiBcdHZvaWRcdFx0XHQqYmRfc2VjdXJpdHk7XG4mIzQzOyNlbmRpZlxuJiM0MzsjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxuJiM0MztcdHN0cnVjdCBudm1lbV9kZXZpY2VcdCpiZF9udm1lbTtcbiAjZW5kaWZcbiBcdC8qXG4gXHQgKiBrZWVwIHRoaXMgb3V0LW9mLWxpbmUgYXMgaXQmIzM5O3MgYm90aCBiaWcgYW5kIG5vdCBuZWVkZWQgaW4gdGhlIGZhc3RcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29mX25ldC5oIGIvaW5jbHVkZS9saW51eC9vZl9uZXQuaFxuaW5kZXggZDg4NzE1YTBiM2E1Mi4uNzg1NGJhNTU1ZDlhNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcbkBAIC0xNSw2ICYjNDM7MTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTtcbiBleHRlcm4gaW50IG9mX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBwaHlfaW50ZXJmYWNlX3QgKmludGVyZmFjZSk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4mIzQzO2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcik7XG4gaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbiBleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKm9mX2ZpbmRfbmV0X2RldmljZV9ieV9ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xuICNlbHNlXG5AQCAtMzQsNiAmIzQzOzM1LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKVxuIFx0cmV0dXJuIC1FTk9ERVY7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCxcbiYjNDM7XHRcdFx0XHQgICAgICBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0cmV0dXJuIC1FTk9ERVY7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oXG5pbmRleCA1MGYwZWVmNzFmYjE5Li43NGZhNDAyNTA0MDEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmhcbkBAIC0xNjEsNiAmIzQzOzE2MSwyNCBAQCBlbnVtIHtcbiBcdCAqL1xuIFx0SENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sXG4gXG4mIzQzO1x0LyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIHB1YmxpYyBCbHVldG9vdGggYWRkcmVzc1xuJiM0MztcdCAqIGluaXRpYWxseSByZXBvcnRlZCBieSBIQ0kgUmVhZCBCRCBBZGRyZXNzIGNvbW1hbmRcbiYjNDM7XHQgKiBpcyBjb25zaWRlcmVkIGludmFsaWQuIFRoZSBwdWJsaWMgQkQgQWRkcmVzcyBjYW4gYmVcbiYjNDM7XHQgKiByZXRyaWV2ZWQgdmlhIGEgJiMzOTtsb2NhbC1iZC1hZGRyZXNzJiMzOTsgTlZNRU0gY2VsbC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIFRoaXMgcXVpcmsgY2FuIGJlIHNldCBiZWZvcmUgaGNpX3JlZ2lzdGVyX2RldiBpcyBjYWxsZWQgb3JcbiYjNDM7XHQgKiBkdXJpbmcgdGhlIGhkZXYtXHUwMDNlc2V0dXAgdmVuZG9yIGNhbGxiYWNrLlxuJiM0MztcdCAqL1xuJiM0MztcdEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNLFxuJiM0MztcbiYjNDM7XHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIHByb3ZpZGVkIGJ5XG4mIzQzO1x0ICogdGhlICYjMzk7bG9jYWwtYmQtYWRkcmVzcyYjMzk7IE5WTUVNIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuIG9yZGVyLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvclxuJiM0MztcdCAqIGR1cmluZyB0aGUgaGRldi1cdTAwM2VzZXR1cCB2ZW5kb3IgY2FsbGJhY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0SENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSxcbiYjNDM7XG4gXHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgZHVwbGljYXRlIGZpbHRlcmluZyBkdXJpbmdcbiBcdCAqIHNjYW5uaW5nIGlzIGJhc2VkIG9uIEJsdWV0b290aCBkZXZpY2VzIGFkZHJlc3Nlcy4gVG8gYWxsb3dcbiBcdCAqIFJTU0kgYmFzZWQgdXBkYXRlcywgcmVzdGFydCBzY2FubmluZyBpZiBuZWVkZWQuXG5kaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jIGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG5pbmRleCBjOGQxNDEyOGMzNjNkLi44MTMyYTE0ODdhYzI1IDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbkBAIC03LDYgJiM0Mzs3LDcgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2JsdWV0b290aC9ibHVldG9vdGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ibHVldG9vdGgvaGNpX2NvcmUuaFx1MDAzZVxuQEAgLTM3MDEsNiAmIzQzOzM3MDIsMzkgQEAgaW50IGhjaV9wb3dlcmVkX3VwZGF0ZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtIC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3NcbiYjNDM7ICpcdFx0XHRcdCAgICAoQkRfQUREUikgZm9yIGEgSENJIGRldmljZSBmcm9tXG4mIzQzOyAqXHRcdFx0XHQgICAgYW4gTlZNRU0gY2VsbC5cbiYjNDM7ICogQGhkZXY6XHRUaGUgSENJIGRldmljZVxuJiM0MzsgKlxuJiM0MzsgKiBTZWFyY2ggZm9yICYjMzk7bG9jYWwtYmQtYWRkcmVzcyYjMzk7IE5WTUVNIGNlbGwgaW4gdGhlIGRldmljZSBmaXJtd2FyZSBub2RlLlxuJiM0MzsgKlxuJiM0MzsgKiBBbGwtemVybyBCRCBhZGRyZXNzZXMgYXJlIHJlamVjdGVkICh1bnByb3Zpc2lvbmVkKS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoaGRldi1cdTAwM2VkZXYucGFyZW50KTtcbiYjNDM7XHR1OCBiYVtzaXplb2YoYmRhZGRyX3QpXTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoIW5wKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdGVyciA9IG9mX2dldF9udm1lbV9ldWk0OChucCwgXCYjMzQ7bG9jYWwtYmQtYWRkcmVzc1wmIzM0OywgYmEpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSkpXG4mIzQzO1x0XHRiYXN3YXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgKGJkYWRkcl90ICopYmEpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdGJhY3B5KFx1MDAyNmhkZXYtXHUwMDNlcHVibGljX2FkZHIsIChiZGFkZHJfdCAqKWJhKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX3Byb3BlcnR5IC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3NcbiAgKlx0XHRcdFx0ICAgICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cbkBAIC01MTgwLDEyICYjNDM7NTIxNCwxNyBAQCBzdGF0aWMgaW50IGhjaV9kZXZfc2V0dXBfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdCAqIGl0cyBzZXR1cCBjYWxsYmFjay5cbiBcdCAqL1xuIFx0aW52YWxpZF9iZGFkZHIgPSBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8XG4tXHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTtcbiYjNDM7XHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSB8fFxuJiM0MztcdFx0XHQgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pO1xuIFx0aWYgKCFyZXQpIHtcbiBcdFx0aWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSlcbiBcdFx0XHRoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fcHJvcGVydHkoaGRldik7XG4gXG4mIzQzO1x0XHRpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSlcbiYjNDM7XHRcdFx0aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtKGhkZXYpO1xuJiM0MztcbiBcdFx0aWYgKGludmFsaWRfYmRhZGRyIFx1MDAyNlx1MDAyNiBiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhkZXYtXHUwMDNlc2V0X2JkYWRkcikge1xuIFx0XHRcdHJldCA9IGhkZXYtXHUwMDNlc2V0X2JkYWRkcihoZGV2LCBcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyKTtcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL21nbXQuYyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5pbmRleCAxNjdkNzVlMzQ1MjY2Li5hMzlkNzYzYTQyMjVhIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9tZ210LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5AQCAtNjE0LDcgJiM0Mzs2MTQsOCBAQCBzdGF0aWMgYm9vbCBpc19jb25maWd1cmVkKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRpZiAoKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19JTlZBTElEX0JEQUREUikgfHxcbi1cdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSB8fFxuJiM0MztcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC02MzAsNyAmIzQzOzYzMSw4IEBAIHN0YXRpYyBfX2xlMzIgZ2V0X21pc3Npbmdfb3B0aW9ucyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdFx0b3B0aW9ucyB8PSBNR01UX09QVElPTl9FWFRFUk5BTF9DT05GSUc7XG4gXG4gXHRpZiAoKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19JTlZBTElEX0JEQUREUikgfHxcbi1cdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSB8fFxuJiM0MztcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdG9wdGlvbnMgfD0gTUdNVF9PUFRJT05fUFVCTElDX0FERFJFU1M7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvb2ZfbmV0LmMgYi9uZXQvY29yZS9vZl9uZXQuY1xuaW5kZXggOTNlYTQyNWI5MjQ4YS4uOTk5Y2EwZTkyNThjNCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL29mX25ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9vZl9uZXQuY1xuQEAgLTYxLDkgJiM0Mzs2MSw3IEBAIHN0YXRpYyBpbnQgb2ZfZ2V0X21hY19hZGRyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGNvbnN0IGNoYXIgKm5hbWUsIHU4ICphZGRyKVxuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKmFkZHIpXG4ge1xuIFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUobnApO1xuLVx0c3RydWN0IG52bWVtX2NlbGwgKmNlbGw7XG4tXHRjb25zdCB2b2lkICptYWM7XG4tXHRzaXplX3QgbGVuO1xuJiM0MztcdHU4IG1hY1tFVEhfQUxFTl0gX19hbGlnbmVkKHNpemVvZih1MTYpKTtcbiBcdGludCByZXQ7XG4gXG4gXHQvKiBUcnkgbG9va3VwIGJ5IGRldmljZSBmaXJzdCwgdGhlcmUgbWlnaHQgYmUgYSBudm1lbV9jZWxsX2xvb2t1cFxuQEAgLTc1LDI3ICYjNDM7NzMsNTcgQEAgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDspO1xuJiM0MztcdHJldCA9IG9mX2dldF9udm1lbV9ldWk0OChucCwgXCYjMzQ7bWFjLWFkZHJlc3NcJiMzNDssIG1hYyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdG1lbWNweShhZGRyLCBtYWMsIEVUSF9BTEVOKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC5cbiYjNDM7ICogQG5wOlx0XHREZXZpY2Ugbm9kZSB0byBsb29rIHVwIHRoZSBOVk1FTSBjZWxsIGZyb20uXG4mIzQzOyAqIEBjZWxsX25hbWU6XHROYW1lIG9mIHRoZSBOVk1FTSBjZWxsIChlLmcuIFwmIzM0O21hYy1hZGRyZXNzXCYjMzQ7LCBcJiMzNDtsb2NhbC1iZC1hZGRyZXNzXCYjMzQ7KS5cbiYjNDM7ICogQGFkZHI6XHRPdXRwdXQgYnVmZmVyIGZvciB0aGUgNi1ieXRlIGFkZHJlc3MuXG4mIzQzOyAqXG4mIzQzOyAqIFJlYWRzIHRoZSBuYW1lZCBOVk1FTSBjZWxsIGFuZCB2YWxpZGF0ZXMgdGhhdCBpdCBjb250YWlucyBhIG5vbi16ZXJvIDYtYnl0ZVxuJiM0MzsgKiBhZGRyZXNzLiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBudm1lbV9jZWxsICpjZWxsO1xuJiM0MztcdGNvbnN0IHZvaWQgKmV1aTQ4O1xuJiM0MztcdHNpemVfdCBsZW47XG4mIzQzO1xuJiM0MztcdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgY2VsbF9uYW1lKTtcbiBcdGlmIChJU19FUlIoY2VsbCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNlbGwpO1xuIFxuLVx0bWFjID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsIFx1MDAyNmxlbik7XG4mIzQzO1x0ZXVpNDggPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXHUwMDI2bGVuKTtcbiBcdG52bWVtX2NlbGxfcHV0KGNlbGwpO1xuIFxuLVx0aWYgKElTX0VSUihtYWMpKVxuLVx0XHRyZXR1cm4gUFRSX0VSUihtYWMpO1xuJiM0MztcdGlmIChJU19FUlIoZXVpNDgpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIoZXVpNDgpO1xuIFxuLVx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XG4tXHRcdGtmcmVlKG1hYyk7XG4mIzQzO1x0LyogUmVqZWN0IHVucHJvZ3JhbW1lZCBjZWxscyB0aGF0IHJlYWQgYXMgYWxsLXplcm9lcyBvciBhbGwtb25lcyAqL1xuJiM0MztcdGlmIChsZW4gIT0gRVRIX0FMRU4gfHxcbiYjNDM7XHQgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4MDAsIEVUSF9BTEVOKSB8fFxuJiM0MztcdCAgICAhbWVtY2hyX2ludihldWk0OCwgMHhmZiwgRVRIX0FMRU4pKSB7XG4mIzQzO1x0XHRrZnJlZShldWk0OCk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0bWVtY3B5KGFkZHIsIG1hYywgRVRIX0FMRU4pO1xuLVx0a2ZyZWUobWFjKTtcbiYjNDM7XHRtZW1jcHkoYWRkciwgZXVpNDgsIEVUSF9BTEVOKTtcbiYjNDM7XHRrZnJlZShldWk0OCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4tRVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChvZl9nZXRfbnZtZW1fZXVpNDgpO1xuIFxuIC8qKlxuICAqIG9mX2dldF9tYWNfYWRkcmVzcygpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19OVk1FTSYjMzQ7LAogICAgJiMzNDtOVk1FTSYjMzQ7LAogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa19udm1lbV9yZWdfcmVhZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fYWRkJiMzNDssCiAgICAmIzM0O2Jsa19udm1lbV9kZWwmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtJiMzNDssCiAgICAmIzM0O29mX2dldF9udm1lbV9ldWk0OCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTUyN2M3YTE4ZTg2NTVlOWZkNGY3YzYxNzIwYzViZjBiOGZhYTQ4OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTc6MTQ6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWwKaW5kZXggYTYxZDZjOTZkZjc1OS4uMDQyMjg5NDUwODQ3OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbApAQCAtMzgsNyAmIzQzOzM4LDkgQEAgcGF0dGVyblByb3BlcnRpZXM6CiAgICAgcHJvcGVydGllczoKICAgICAgIGNvbXBhdGlibGU6CiAgICAgICAgIGNvbnRhaW5zOgotICAgICAgICAgIGNvbnN0OiBmaXhlZC1wYXJ0aXRpb25zCiYjNDM7ICAgICAgICAgIGVudW06CiYjNDM7ICAgICAgICAgICAgLSBmaXhlZC1wYXJ0aXRpb25zCiYjNDM7ICAgICAgICAgICAgLSBmaXhlZC1sYXlvdXQKIAogcmVxdWlyZWQ6CiAgIC0gY29tcGF0aWJsZQpAQCAtODYsNiAmIzQzOzg4LDI1IEBAIGV4YW1wbGVzOgogICAgICAgICAgICAgICAgICAgICByZWFkLW9ubHk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH07CiYjNDM7CiYjNDM7ICAgICAgICAgICAgcGFydGl0aW9ucy1ib290MiB7CiYjNDM7ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2ZpeGVkLWxheW91dCYjMzQ7OwomIzQzOwomIzQzOyAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CiYjNDM7ICAgICAgICAgICAgICAgIG1hYy1hZGRyQDQ0MDAgewomIzQzOyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7bWFjLWJhc2UmIzM0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgIHJlZyA9ICZsdDsweDQ0MDAgMHg2Jmd0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgICAgICAgICB9OwomIzQzOwomIzQzOyAgICAgICAgICAgICAgICBiZC1hZGRyQDU0MDAgewomIzQzOyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICYjMzQ7bWFjLWJhc2UmIzM0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgIHJlZyA9ICZsdDsweDU0MDAgMHg2Jmd0OzsKJiM0MzsgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOyAgICAgICAgICAgICAgICB9OwomIzQzOyAgICAgICAgICAgIH07CiAgICAgICAgIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbAppbmRleCBjOGU5YzU1YzFhZmI0Li43Y2IyOGYzMGM5YWYwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbApAQCAtMjIsNCAmIzQzOzIyLDEzIEBAIHByb3BlcnRpZXM6CiAgICAgZGVzY3JpcHRpb246CiAgICAgICBib290IGZpcm13YXJlIGlzIGluY29ycmVjdGx5IHBhc3NpbmcgdGhlIGFkZHJlc3MgaW4gYmlnLWVuZGlhbiBvcmRlcgogCiYjNDM7ICBudm1lbS1jZWxsczoKJiM0MzsgICAgbWF4SXRlbXM6IDEKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgTnZtZW0gZGF0YSBjZWxsIHRoYXQgY29udGFpbnMgYSA2IGJ5dGUgQkQgYWRkcmVzcyB3aXRoIHRoZSBtb3N0CiYjNDM7ICAgICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAoYmlnLWVuZGlhbikuCiYjNDM7CiYjNDM7ICBudm1lbS1jZWxsLW5hbWVzOgomIzQzOyAgICBjb25zdDogbG9jYWwtYmQtYWRkcmVzcwomIzQzOwogYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbAppbmRleCBkNGY0ZDcyZWUwZDM4Li43ZjlkMTZjYjdjMTQzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3Fjb20sYXRoMTBrLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway55YW1sCkBAIC05Miw2ICYjNDM7OTIsMjIgQEAgcHJvcGVydGllczoKIAogICBpZWVlODAyMTEtZnJlcS1saW1pdDogdHJ1ZQogCiYjNDM7ICBudm1lbS1jZWxsczoKJiM0MzsgICAgbWluSXRlbXM6IDEKJiM0MzsgICAgbWF4SXRlbXM6IDMKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUmVmZXJlbmNlcyB0byBudm1lbSBjZWxscyBmb3IgTUFDIGFkZHJlc3MgYW5kL29yIGNhbGlicmF0aW9uIGRhdGEuCiYjNDM7ICAgICAgU3VwcG9ydGVkIGNlbGwgbmFtZXMgYXJlIG1hYy1hZGRyZXNzLCBjYWxpYnJhdGlvbiwgYW5kIHByZS1jYWxpYnJhdGlvbi4KJiM0MzsKJiM0MzsgIG52bWVtLWNlbGwtbmFtZXM6CiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7ICAgIG1heEl0ZW1zOiAzCiYjNDM7ICAgIGl0ZW1zOgomIzQzOyAgICAgIGVudW06CiYjNDM7ICAgICAgICAtIG1hYy1hZGRyZXNzCiYjNDM7ICAgICAgICAtIGNhbGlicmF0aW9uCiYjNDM7ICAgICAgICAtIHByZS1jYWxpYnJhdGlvbgomIzQzOwogICBxY29tLGNhbGlicmF0aW9uLWRhdGE6CiAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMueWFtbCMvZGVmaW5pdGlvbnMvdWludDgtYXJyYXkKICAgICBkZXNjcmlwdGlvbjoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMKaW5kZXggYmYwODhmYTk4MDdmMC4uMzg4MzliOGEzNjFlNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMKQEAgLTQwOSw3ICYjNDM7NDA5LDMzIEBAICZhbXA7c2RoY18xIHsKIAluby1zZGlvOwogCW5vLXNkOwogCiYjNDM7CSNhZGRyZXNzLWNlbGxzID0gJmx0OzEmZ3Q7OwomIzQzOwkjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKIAlzdGF0dXMgPSAmIzM0O29rYXkmIzM0OzsKJiM0MzsKJiM0MzsJY2FyZEAwIHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O21tYy1jYXJkJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MCZndDs7CiYjNDM7CiYjNDM7CQlwYXJ0aXRpb25zLWJvb3QxIHsKJiM0MzsJCQljb21wYXRpYmxlID0gJiMzNDtmaXhlZC1sYXlvdXQmIzM0OzsKJiM0MzsJCQkjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJCQkjc2l6ZS1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsKJiM0MzsJCQl3aWZpX21hY19hZGRyOiBtYWMtYWRkckA0NDAwIHsKJiM0MzsJCQkJY29tcGF0aWJsZSA9ICYjMzQ7bWFjLWJhc2UmIzM0OzsKJiM0MzsJCQkJcmVnID0gJmx0OzB4NDQwMCAweDYmZ3Q7OwomIzQzOwkJCQkjbnZtZW0tY2VsbC1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsJCQl9OwomIzQzOwomIzQzOwkJCWJkX2FkZHI6IGJkLWFkZHJANTQwMCB7CiYjNDM7CQkJCWNvbXBhdGlibGUgPSAmIzM0O21hYy1iYXNlJiMzNDs7CiYjNDM7CQkJCXJlZyA9ICZsdDsweDU0MDAgMHg2Jmd0OzsKJiM0MzsJCQkJI252bWVtLWNlbGwtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7CQkJfTsKJiM0MzsJCX07CiYjNDM7CX07CiB9OwogCiAmYW1wO3NwaTUgewpAQCAtNTEyLDYgJiM0Mzs1MzgsOSBAQCBibHVldG9vdGggewogCQl2ZGRjaDAtc3VwcGx5ID0gJmx0OyZhbXA7cG00MTI1X2wyMiZndDs7CiAJCWVuYWJsZS1ncGlvcyA9ICZsdDsmYW1wO3RsbW0gODcgR1BJT19BQ1RJVkVfSElHSCZndDs7CiAJCW1heC1zcGVlZCA9ICZsdDszMDAwMDAwJmd0OzsKJiM0MzsKJiM0MzsJCW52bWVtLWNlbGxzID0gJmx0OyZhbXA7YmRfYWRkciAwJmd0OzsKJiM0MzsJCW52bWVtLWNlbGwtbmFtZXMgPSAmIzM0O2xvY2FsLWJkLWFkZHJlc3MmIzM0OzsKIAl9OwogfTsKIApAQCAtNTU3LDYgJiM0Mzs1ODYsOSBAQCAmYW1wO3dpZmkgewogCXFjb20sYXRoMTBrLWNhbGlicmF0aW9uLXZhcmlhbnQgPSAmIzM0O0FyZHVpbm9JbW9sYSYjMzQ7OwogCWZpcm13YXJlLW5hbWUgPSAmIzM0O3FjbTIyOTAmIzM0OzsKIAomIzQzOwludm1lbS1jZWxscyA9ICZsdDsmYW1wO3dpZmlfbWFjX2FkZHIgMCZndDs7CiYjNDM7CW52bWVtLWNlbGwtbmFtZXMgPSAmIzM0O21hYy1hZGRyZXNzJiMzNDs7CiYjNDM7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiB9OwogCmRpZmYgLS1naXQgYS9ibG9jay9LY29uZmlnIGIvYmxvY2svS2NvbmZpZwppbmRleCA3MGU0YTY2ZDk0MWZmLi40ODk5YWQ1NzJjNzFmIDEwMDY0NAotLS0gYS9ibG9jay9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL0tjb25maWcKQEAgLTIwOSw2ICYjNDM7MjA5LDE3IEBAIGNvbmZpZyBCTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0sKIAkgIGJ5IGZhbGxpbmcgYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkgd2hlbiBpbmxpbmUKIAkgIGVuY3J5cHRpb24gaGFyZHdhcmUgaXMgbm90IHByZXNlbnQuCiAKJiM0Mztjb25maWcgQkxLX05WTUVNCiYjNDM7CWJvb2wgJiMzNDtCbG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXImIzM0OwomIzQzOwlkZXBlbmRzIG9uIE9GCiYjNDM7CWRlcGVuZHMgb24gTlZNRU0KJiM0MzsJaGVscAomIzQzOwkgIEFsbG93IGJsb2NrIGRldmljZXMgKG9yIHBhcnRpdGlvbnMpIHRvIGFjdCBhcyBOVk1FTSBwcm92aWRlcnMsCiYjNDM7CSAgZXhwb3NpbmcgZmFjdG9yeS1wcm92aXNpb25lZCBkYXRhIHN1Y2ggYXMgTUFDIGFkZHJlc3NlcyBvciBXaS1GaQomIzQzOwkgIGNhbGlicmF0aW9uIGJsb2JzIHRvIHRoZSBkcml2ZXJzIHRoYXQgY29uc3VtZSB0aGVtLiBUaGlzIGlzCiYjNDM7CSAgdHlwaWNhbGx5IHVzZWQgb24gZW1iZWRkZWQgZGV2aWNlcyB3aGVyZSBzdWNoIGRhdGEgaXMgc3RvcmVkIGluIGEKJiM0MzsJICBkZWRpY2F0ZWQgYXJlYSBvZiBhbiBlTU1DLCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgRUVQUk9NIG9yIE9UUC4KJiM0MzsKIHNvdXJjZSAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvS2NvbmZpZyYjMzQ7CiAKIGNvbmZpZyBCTEtfUE0KZGlmZiAtLWdpdCBhL2Jsb2NrL01ha2VmaWxlIGIvYmxvY2svTWFrZWZpbGUKaW5kZXggZTdiZDMyMGUzZDY5Ny4uODIwMDI5N2ZiY2JhYiAxMDA2NDQKLS0tIGEvYmxvY2svTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svTWFrZWZpbGUKQEAgLTM5LDMgJiM0MzszOSw0IEBAIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT04pCSYjNDM7PSBibGstY3J5cHRvLm8gYmxrLWNyeXB0by1wcm9maWxlLm8gXAogCQkJCQkgICBibGstY3J5cHRvLXN5c2ZzLm8KIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0spCSYjNDM7PSBibGstY3J5cHRvLWZhbGxiYWNrLm8KIG9iai0kKENPTkZJR19CTE9DS19IT0xERVJfREVQUkVDQVRFRCkJJiM0Mzs9IGhvbGRlci5vCiYjNDM7b2JqLSQoQ09ORklHX0JMS19OVk1FTSkgICAgICAgICAgICAgICAgJiM0Mzs9IGJsay1udm1lbS5vCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbnZtZW0uYyBiL2Jsb2NrL2Jsay1udm1lbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY5YjY5MTg0ZTE2MzAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbnZtZW0uYwpAQCAtMCwwICYjNDM7MSwxMTIgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgomIzQzOy8qCiYjNDM7ICogYmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyCiYjNDM7ICoKJiM0MzsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRGFuaWVsIEdvbGxlICZsdDtkYW5pZWxAbWFrcm90b3BpYS5vcmcmZ3Q7CiYjNDM7ICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCiYjNDM7ICoKJiM0MzsgKiBVc2VmdWwgb24gZGV2aWNlcyB1c2luZyBhIHdob2xlIGRpc2sgb3IgYSBwYXJ0aXRpb24gKGUuZy4gYW4gZU1NQyBib290CiYjNDM7ICogcGFydGl0aW9uKSB0byBzdG9yZSBNQUMgYWRkcmVzc2VzLCBCbHVldG9vdGggYWRkcmVzc2VzIG9yIFdpLUZpCiYjNDM7ICogY2FsaWJyYXRpb24gRUVQUk9NIGRhdGEuCiYjNDM7ICoKJiM0MzsgKiBUaGUgTlZNRU0gZGV2aWNlIGlzIGEgc2lkZSBjaGFubmVsIG9udG8gYSBibG9jayBkZXZpY2UgdGhhdCBzdGF5cyBmdWxseQomIzQzOyAqIHVzYWJsZS4gVGhpcyBpcyBzb21ld2hhdCBtaXRpZ2F0ZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIGV4Y2x1c2l2ZWx5LgomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZmlsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9udm1lbS1wcm92aWRlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9udm1lbS1jb25zdW1lci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9vZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wcm9wZXJ0eS5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7YmxrLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyBpbnQgYmxrX252bWVtX3JlZ19yZWFkKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBmcm9tLAomIzQzOwkJCSAgICAgIHZvaWQgKnZhbCwgc2l6ZV90IGJ5dGVzKQomIzQzO3sKJiM0MzsJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHByaXY7CiYjNDM7CXN0cnVjdCBmaWxlICpiZGV2X2ZpbGU7CiYjNDM7CWxvZmZfdCBwb3MgPSBmcm9tOwomIzQzOwlzc2l6ZV90IHJldDsKJiM0MzsKJiM0MzsJLyogb3BlbiBhbmQgcHJldmVudCBvdGhlciBleGNsdXNpdmUgb3BlbmVycyAqLwomIzQzOwliZGV2X2ZpbGUgPSBiZGV2X2ZpbGVfb3Blbl9ieV9kZXYoYmRldi0mZ3Q7YmRfZGV2LAomIzQzOwkJCQkJICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCwKJiM0MzsJCQkJCSAgYmxrX252bWVtX3JlZ19yZWFkLCBOVUxMKTsKJiM0MzsJaWYgKElTX0VSUihiZGV2X2ZpbGUpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIoYmRldl9maWxlKTsKJiM0MzsKJiM0MzsJaWYgKGZpbGVfYmRldihiZGV2X2ZpbGUpICE9IGJkZXYpIHsKJiM0MzsJCWZwdXQoYmRldl9maWxlKTsKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IGtlcm5lbF9yZWFkKGJkZXZfZmlsZSwgdmFsLCBieXRlcywgJmFtcDtwb3MpOwomIzQzOwlmcHV0KGJkZXZfZmlsZSk7CiYjNDM7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJaWYgKHJldCAhPSBieXRlcykKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IGJsa19udm1lbV9hZGQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7YmRldi0mZ3Q7YmRfZGV2aWNlOwomIzQzOwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoZGV2KTsKJiM0MzsJc3RydWN0IG52bWVtX2NvbmZpZyBjb25maWcgPSB7CiYjNDM7CQkuaWQJCT0gTlZNRU1fREVWSURfTk9ORSwKJiM0MzsJCS5vd25lcgkJPSBUSElTX01PRFVMRSwKJiM0MzsJCS53b3JkX3NpemUJPSAxLAomIzQzOwkJLnN0cmlkZQkJPSAxLAomIzQzOwkJLnJlYWRfb25seQk9IHRydWUsCiYjNDM7CQkucm9vdF9vbmx5CT0gdHJ1ZSwKJiM0MzsJCS5pZ25vcmVfd3AJPSB0cnVlLAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbTsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpjaGlsZDsKJiM0MzsKJiM0MzsJLyogc2tpcCBkZXZpY2VzIHdoaWNoIGRvIG5vdCBoYXZlIGEgZGV2aWNlIHRyZWUgbm9kZSAqLwomIzQzOwlpZiAoIW5wKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBsYXlvdXQgaXMgZGVzY3JpYmVkIGVpdGhlciBieSBhbiAmIzM0O252bWVtLWxheW91dCYjMzQ7IGNoaWxkIG5vZGUgb3IKJiM0MzsJICogYnkgdGhlIGRldmljZSBub2RlIGl0c2VsZiBiZWluZyBhICYjMzQ7Zml4ZWQtbGF5b3V0JiMzNDsgY29udGFpbmVyLgomIzQzOwkgKi8KJiM0MzsJY2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgJiMzNDtudm1lbS1sYXlvdXQmIzM0Oyk7CiYjNDM7CWlmIChjaGlsZCkKJiM0MzsJCW9mX25vZGVfcHV0KGNoaWxkKTsKJiM0MzsJZWxzZSBpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCAmIzM0O2ZpeGVkLWxheW91dCYjMzQ7KSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlpZiAoYmRldl9ucl9ieXRlcyhiZGV2KSAmZ3Q7IElOVF9NQVgpIHsKJiM0MzsJCWRldl93YXJuKGRldiwgJiMzNDtibG9jayBkZXZpY2UgdG9vIGxhcmdlIHRvIGJlIGFuIE5WTUVNXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwomIzQzOwljb25maWcuZGV2ID0gZGV2OwomIzQzOwljb25maWcubmFtZSA9IGRldl9uYW1lKGRldik7CiYjNDM7CWNvbmZpZy5wcml2ID0gYmRldjsKJiM0MzsJY29uZmlnLnJlZ19yZWFkID0gYmxrX252bWVtX3JlZ19yZWFkOwomIzQzOwljb25maWcuc2l6ZSA9IGJkZXZfbnJfYnl0ZXMoYmRldik7CiYjNDM7CWNvbmZpZy5vZl9ub2RlID0gbnA7CiYjNDM7CiYjNDM7CW52bWVtID0gbnZtZW1fcmVnaXN0ZXIoJmFtcDtjb25maWcpOwomIzQzOwlpZiAoSVNfRVJSKG52bWVtKSkKJiM0MzsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksCiYjNDM7CQkJCSAgICAgJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgTlZNRU0gZGV2aWNlXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CWJkZXYtJmd0O2JkX252bWVtID0gbnZtZW07CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKJiM0Mzt7CiYjNDM7CW52bWVtX3VucmVnaXN0ZXIoYmRldi0mZ3Q7YmRfbnZtZW0pOwomIzQzOwliZGV2LSZndDtiZF9udm1lbSA9IE5VTEw7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaAppbmRleCBlYWFjMDU4MTVjYjAzLi4wNzllZGI5ZmJjMzdhIDEwMDY0NAotLS0gYS9ibG9jay9ibGsuaAomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGsuaApAQCAtODE3LDQgJiM0Mzs4MTcsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGJsa19kZWJ1Z2ZzX3VubG9jayhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAltZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpOwogfQogCiYjNDM7I2lmZGVmIENPTkZJR19CTEtfTlZNRU0KJiM0MztpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsKJiM0Mzt2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CiYjNDM7I2Vsc2UKJiM0MztzdGF0aWMgaW5saW5lIGludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHsgcmV0dXJuIDA7IH0KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgYmxrX252bWVtX2RlbChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KSB7fQomIzQzOyNlbmRpZgomIzQzOwogI2VuZGlmIC8qIEJMS19JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuYwppbmRleCBkZjJjM2M2OWI0NjdkLi5mYzYzMjEyMmZhZThhIDEwMDY0NAotLS0gYS9ibG9jay9nZW5oZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2dlbmhkLmMKQEAgLTQxNyw2ICYjNDM7NDE3LDggQEAgc3RhdGljIHZvaWQgYWRkX2Rpc2tfZmluYWwoc3RydWN0IGdlbmRpc2sgKmRpc2spCiAJCSAqLwogCQlkZXZfc2V0X3VldmVudF9zdXBwcmVzcyhkZGV2LCAwKTsKIAkJZGlza191ZXZlbnQoZGlzaywgS09CSl9BREQpOwomIzQzOwomIzQzOwkJYmxrX252bWVtX2FkZChkaXNrLSZndDtwYXJ0MCk7CiAJfQogCiAJYmxrX2FwcGx5X2JkaV9saW1pdHMoZGlzay0mZ3Q7YmRpLCAmYW1wO2Rpc2stJmd0O3F1ZXVlLSZndDtsaW1pdHMpOwpAQCAtNzAwLDYgJiM0Mzs3MDIsOCBAQCBzdGF0aWMgdm9pZCBfX2RlbF9nZW5kaXNrKHN0cnVjdCBnZW5kaXNrICpkaXNrKQogCiAJZGlza19kZWxfZXZlbnRzKGRpc2spOwogCiYjNDM7CWJsa19udm1lbV9kZWwoZGlzay0mZ3Q7cGFydDApOwomIzQzOwogCS8qCiAJICogUHJldmVudCBuZXcgb3BlbmVycyBieSB1bmxpbmtlZCB0aGUgYmRldiBpbm9kZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaCBiL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaAppbmRleCBiMDk5NzQ2N2I2MWE1Li4zMjYwODE0OTlkOWE2IDEwMDY0NAotLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmgKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oCkBAIC0xNyw2ICYjNDM7MTcsNyBAQCBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgewogCQlpbnQgZmxhZ3M7CiAJCWJvb2wgaGFzX2luZm87CiAJCXN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvIGluZm87CiYjNDM7CQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlOwogCX0gKnBhcnRzOwogCWludCBuZXh0OwogCWludCBsaW1pdDsKZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jIGIvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMKaW5kZXggYjVjNTliNzljYTdjYi4uYzgzMjI3NzEwNTg0YSAxMDA2NDQKLS0tIGEvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9jb3JlLmMKQEAgLTExLDYgJiM0MzsxMSw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc3lzZnMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jdHlwZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yYWlkL2RldGVjdC5oJmd0OwogI2luY2x1ZGUgJiMzNDtjaGVjay5oJiMzNDsKIApAQCAtMTEwLDggJiM0MzsxMTEsMTcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqYWxsb2NhdGVfcGFydGl0aW9ucyhzdHJ1Y3QgZ2VuZGlzayAqaGQpCiAJcmV0dXJuIHN0YXRlOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSkKJiM0Mzt7CiYjNDM7CWZvciAoaW50IGkgPSAwOyBpICZsdDsgc3RhdGUtJmd0O2xpbWl0OyBpJiM0MzsmIzQzOykgewomIzQzOwkJZndub2RlX2hhbmRsZV9wdXQoc3RhdGUtJmd0O3BhcnRzW2ldLmZ3bm9kZSk7CiYjNDM7CQlzdGF0ZS0mZ3Q7cGFydHNbaV0uZndub2RlID0gTlVMTDsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGZyZWVfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKQogewomIzQzOwlkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdGF0ZSk7CiAJdmZyZWUoc3RhdGUtJmd0O3BhcnRzKTsKIAlrZnJlZShzdGF0ZSk7CiB9CkBAIC0xMzksNiAmIzQzOzE0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKmNoZWNrX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqaGQpCiAKIAlpID0gcmVzID0gZXJyID0gMDsKIAl3aGlsZSAoIXJlcyAmYW1wOyZhbXA7IGNoZWNrX3BhcnRbaV0pIHsKJiM0MzsJCWRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0YXRlKTsKIAkJbWVtc2V0KHN0YXRlLSZndDtwYXJ0cywgMCwgc3RhdGUtJmd0O2xpbWl0ICogc2l6ZW9mKHN0YXRlLSZndDtwYXJ0c1swXSkpOwogCQlyZXMgPSBjaGVja19wYXJ0W2kmIzQzOyYjNDM7XShzdGF0ZSk7CiAJCWlmIChyZXMgJmx0OyAwKSB7CkBAIC0yNDcsNiAmIzQzOzI1OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpwYXJ0X2F0dHJfZ3JvdXBzW10gPSB7CiAKIHN0YXRpYyB2b2lkIHBhcnRfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiYjNDM7CWZ3bm9kZV9oYW5kbGVfcHV0KGRldl9md25vZGUoZGV2KSk7CiAJcHV0X2Rpc2soZGV2X3RvX2JkZXYoZGV2KS0mZ3Q7YmRfZGlzayk7CiAJYmRldl9kcm9wKGRldl90b19iZGV2KGRldikpOwogfQpAQCAtMjc3LDYgJiM0MzsyODksOCBAQCB2b2lkIGRyb3BfcGFydGl0aW9uKHN0cnVjdCBibG9ja19kZXZpY2UgKnBhcnQpCiAJeGFfZXJhc2UoJmFtcDtwYXJ0LSZndDtiZF9kaXNrLSZndDtwYXJ0X3RibCwgYmRldl9wYXJ0bm8ocGFydCkpOwogCWtvYmplY3RfcHV0KHBhcnQtJmd0O2JkX2hvbGRlcl9kaXIpOwogCiYjNDM7CWJsa19udm1lbV9kZWwocGFydCk7CiYjNDM7CiAJZGV2aWNlX2RlbCgmYW1wO3BhcnQtJmd0O2JkX2RldmljZSk7CiAJcHV0X2RldmljZSgmYW1wO3BhcnQtJmd0O2JkX2RldmljZSk7CiB9CkBAIC0yOTQsNyAmIzQzOzMwOCw4IEBAIHN0YXRpYyBjb25zdCBERVZJQ0VfQVRUUih3aG9sZV9kaXNrLCAwNDQ0LCB3aG9sZV9kaXNrX3Nob3csIE5VTEwpOwogICovCiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubywKIAkJCQlzZWN0b3JfdCBzdGFydCwgc2VjdG9yX3QgbGVuLCBpbnQgZmxhZ3MsCi0JCQkJc3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm8pCiYjNDM7CQkJCXN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvLAomIzQzOwkJCQlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQogewogCWRldl90IGRldnQgPSBNS0RFVigwLCAwKTsKIAlzdHJ1Y3QgZGV2aWNlICpkZGV2ID0gZGlza190b19kZXYoZGlzayk7CkBAIC0zNDMsNiAmIzQzOzM1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLAogCXBkZXYtJmd0O2NsYXNzID0gJmFtcDtibG9ja19jbGFzczsKIAlwZGV2LSZndDt0eXBlID0gJmFtcDtwYXJ0X3R5cGU7CiAJcGRldi0mZ3Q7cGFyZW50ID0gZGRldjsKJiM0MzsJZGV2aWNlX3NldF9ub2RlKHBkZXYsIGZ3bm9kZV9oYW5kbGVfZ2V0KGZ3bm9kZSkpOwogCiAJLyogaW4gY29uc2VjdXRpdmUgbWlub3IgcmFuZ2U/ICovCiAJaWYgKGJkZXZfcGFydG5vKGJkZXYpICZsdDsgZGlzay0mZ3Q7bWlub3JzKSB7CkBAIC0zOTIsNiAmIzQzOzQwOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLAogCS8qIHN1cHByZXNzIHVldmVudCBpZiB0aGUgZGlzayBzdXBwcmVzc2VzIGl0ICovCiAJaWYgKCFkZXZfZ2V0X3VldmVudF9zdXBwcmVzcyhkZGV2KSkKIAkJa29iamVjdF91ZXZlbnQoJmFtcDtwZGV2LSZndDtrb2JqLCBLT0JKX0FERCk7CiYjNDM7CiYjNDM7CWJsa19udm1lbV9hZGQoYmRldik7CiYjNDM7CiAJcmV0dXJuIGJkZXY7CiAKIG91dF9kZWw6CkBAIC00NDksNyAmIzQzOzQ2OCw3IEBAIGludCBiZGV2X2FkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sIHNlY3Rvcl90IHN0YXJ0LAogCX0KIAogCXBhcnQgPSBhZGRfcGFydGl0aW9uKGRpc2ssIHBhcnRubywgc3RhcnQsIGxlbmd0aCwKLQkJCUFERFBBUlRfRkxBR19OT05FLCBOVUxMKTsKJiM0MzsJCQlBRERQQVJUX0ZMQUdfTk9ORSwgTlVMTCwgTlVMTCk7CiAJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHBhcnQpOwogb3V0OgogCW11dGV4X3VubG9jaygmYW1wO2Rpc2stJmd0O29wZW5fbXV0ZXgpOwpAQCAtNTY0LDcgJiM0Mzs1ODMsNyBAQCBzdGF0aWMgYm9vbCBibGtfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywKIAl9CiAKIAlwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwLCBmcm9tLCBzaXplLCBzdGF0ZS0mZ3Q7cGFydHNbcF0uZmxhZ3MsCi0JCQkgICAgICZhbXA7c3RhdGUtJmd0O3BhcnRzW3BdLmluZm8pOwomIzQzOwkJCSAgICAgJmFtcDtzdGF0ZS0mZ3Q7cGFydHNbcF0uaW5mbywgc3RhdGUtJmd0O3BhcnRzW3BdLmZ3bm9kZSk7CiAJaWYgKElTX0VSUihwYXJ0KSkgewogCQlpZiAoUFRSX0VSUihwYXJ0KSAhPSAtRU5YSU8pIHsKIAkJCXByaW50ayhLRVJOX0VSUiAmIzM0OyAlczogcCVkIGNvdWxkIG5vdCBiZSBhZGRlZDogJXBlXG4mIzM0OywKZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuYwppbmRleCA1MzY2NGVhMDZiNjU0Li40ZmM3YzgwYzQwN2RlIDEwMDY0NAotLS0gYS9ibG9jay9wYXJ0aXRpb25zL29mLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9vZi5jCkBAIC0zLDYgJiM0MzszLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9ibGtkZXYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tYWpvci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3RyaW5nLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O2NoZWNrLmgmIzM0OwogCkBAIC02Miw2ICYjNDM7NjMsOCBAQCBzdGF0aWMgdm9pZCBhZGRfb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGludCBzbG90LAogCQlwYXJ0bmFtZSA9IG9mX2dldF9wcm9wZXJ0eShucCwgJiMzNDtuYW1lJiMzNDssICZhbXA7bGVuKTsKIAlzdHJzY3B5KGluZm8tJmd0O3ZvbG5hbWUsIHBhcnRuYW1lLCBzaXplb2YoaW5mby0mZ3Q7dm9sbmFtZSkpOwogCiYjNDM7CXN0YXRlLSZndDtwYXJ0c1tzbG90XS5md25vZGUgPSBmd25vZGVfaGFuZGxlX2dldChvZl9md25vZGVfaGFuZGxlKG5wKSk7CiYjNDM7CiAJc2VxX2J1Zl9wcmludGYoJmFtcDtzdGF0ZS0mZ3Q7cHBfYnVmLCAmIzM0OyglcykmIzM0OywgaW5mby0mZ3Q7dm9sbmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jCmluZGV4IDEwYzQ5NmVhZWEyYzEuLjNjNmYwMjFiNzYyMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuYwpAQCAtNzIzLDggJiM0Mzs3MjMsMTEgQEAgc3RhdGljIGludCBxY2FfY2hlY2tfYmRhZGRyKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBjb25zdCBzdHJ1Y3QgcWNhX2Z3X2NvbmZpZyAqY28KIAl9CiAKIAliZGEgPSAoc3RydWN0IGhjaV9ycF9yZWFkX2JkX2FkZHIgKilza2ItJmd0O2RhdGE7Ci0JaWYgKCFiYWNtcCgmYW1wO2JkYS0mZ3Q7YmRhZGRyLCAmYW1wO2NvbmZpZy0mZ3Q7YmRhZGRyKSkKJiM0MzsJaWYgKCFiYWNtcCgmYW1wO2JkYS0mZ3Q7YmRhZGRyLCAmYW1wO2NvbmZpZy0mZ3Q7YmRhZGRyKSkgewogCQloY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTsKJiM0MzsJCWhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pOwomIzQzOwkJaGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfQkRBRERSX05WTUVNX0JFKTsKJiM0MzsJfQogCiAJa2ZyZWVfc2tiKHNrYik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy5jIGIvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMKaW5kZXggYjkwNTg0ZTFiOTllYS4uZWZhNjMxY2U3MjgzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMKQEAgLTE2Nyw3ICYjNDM7MTY3LDE4IEBAIHN0YXRpYyBpbnQgbnZtZW1fbGF5b3V0X2J1c19wb3B1bGF0ZShzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSwKIAogc3RydWN0IGRldmljZV9ub2RlICpvZl9udm1lbV9sYXlvdXRfZ2V0X2NvbnRhaW5lcihzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSkKIHsKLQlyZXR1cm4gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnZtZW0tJmd0O2Rldi5vZl9ub2RlLCAmIzM0O252bWVtLWxheW91dCYjMzQ7KTsKJiM0MzsJc3RydWN0IGRldmljZV9ub2RlICpucDsKJiM0MzsKJiM0MzsJLyogU2VhcmNoIGZvciBudm1lbS1sYXlvdXQgY2hpbGQgKi8KJiM0MzsJbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS0mZ3Q7ZGV2Lm9mX25vZGUsICYjMzQ7bnZtZW0tbGF5b3V0JiMzNDspOwomIzQzOwlpZiAobnApCiYjNDM7CQlyZXR1cm4gbnA7CiYjNDM7CiYjNDM7CS8qIFRoZSBudm1lbSBvZl9ub2RlIGlzIGl0c2VsZiBhIGZpeGVkLWxheW91dCBub2RlICovCiYjNDM7CWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShudm1lbS0mZ3Q7ZGV2Lm9mX25vZGUsICYjMzQ7Zml4ZWQtbGF5b3V0JiMzNDspKQomIzQzOwkJcmV0dXJuIG9mX25vZGVfZ2V0KG52bWVtLSZndDtkZXYub2Zfbm9kZSk7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwogfQogRVhQT1JUX1NZTUJPTF9HUEwob2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRleCA4ODA4ZWU3NmU3M2MwLi42ZWQxNzNjNjQ5MDI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiBzdHJ1Y3QgYmlvX3NldDsKIHN0cnVjdCBiaW87CiBzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkOwomIzQzO3N0cnVjdCBudm1lbV9kZXZpY2U7CiBzdHJ1Y3QgcGFnZTsKIHN0cnVjdCBpb19jb250ZXh0Owogc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7CkBAIC03Myw2ICYjNDM7NzQsOSBAQCBzdHJ1Y3QgYmxvY2tfZGV2aWNlIHsKIAlpbnQJCQliZF93cml0ZXJzOwogI2lmZGVmIENPTkZJR19TRUNVUklUWQogCXZvaWQJCQkqYmRfc2VjdXJpdHk7CiYjNDM7I2VuZGlmCiYjNDM7I2lmZGVmIENPTkZJR19CTEtfTlZNRU0KJiM0MzsJc3RydWN0IG52bWVtX2RldmljZQkqYmRfbnZtZW07CiAjZW5kaWYKIAkvKgogCSAqIGtlZXAgdGhpcyBvdXQtb2YtbGluZSBhcyBpdCYjMzk7cyBib3RoIGJpZyBhbmQgbm90IG5lZWRlZCBpbiB0aGUgZmFzdApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaCBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmgKaW5kZXggZDg4NzE1YTBiM2E1Mi4uNzg1NGJhNTU1ZDlhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L29mX25ldC5oCkBAIC0xNSw2ICYjNDM7MTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTsKIGV4dGVybiBpbnQgb2ZfZ2V0X3BoeV9tb2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHBoeV9pbnRlcmZhY2VfdCAqaW50ZXJmYWNlKTsKIGV4dGVybiBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICptYWMpOwogZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7CiYjNDM7aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKTsKIGludCBvZl9nZXRfZXRoZGV2X2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiBleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKm9mX2ZpbmRfbmV0X2RldmljZV9ieV9ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwogI2Vsc2UKQEAgLTM0LDYgJiM0MzszNSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYykKIAlyZXR1cm4gLUVOT0RFVjsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAomIzQzOwkJCQkgICAgICBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKQomIzQzO3sKJiM0MzsJcmV0dXJuIC1FTk9ERVY7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJcmV0dXJuIC1FTk9ERVY7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmgKaW5kZXggNTBmMGVlZjcxZmIxOS4uNzRmYTQwMjUwNDAxMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaApAQCAtMTYxLDYgJiM0MzsxNjEsMjQgQEAgZW51bSB7CiAJICovCiAJSENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sCiAKJiM0MzsJLyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIHB1YmxpYyBCbHVldG9vdGggYWRkcmVzcwomIzQzOwkgKiBpbml0aWFsbHkgcmVwb3J0ZWQgYnkgSENJIFJlYWQgQkQgQWRkcmVzcyBjb21tYW5kCiYjNDM7CSAqIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4gVGhlIHB1YmxpYyBCRCBBZGRyZXNzIGNhbiBiZQomIzQzOwkgKiByZXRyaWV2ZWQgdmlhIGEgJiMzOTtsb2NhbC1iZC1hZGRyZXNzJiMzOTsgTlZNRU0gY2VsbC4KJiM0MzsJICoKJiM0MzsJICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvcgomIzQzOwkgKiBkdXJpbmcgdGhlIGhkZXYtJmd0O3NldHVwIHZlbmRvciBjYWxsYmFjay4KJiM0MzsJICovCiYjNDM7CUhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNLAomIzQzOwomIzQzOwkvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIHByb3ZpZGVkIGJ5CiYjNDM7CSAqIHRoZSAmIzM5O2xvY2FsLWJkLWFkZHJlc3MmIzM5OyBOVk1FTSBpcyBzdG9yZWQgaW4gYmlnLWVuZGlhbiBvcmRlci4KJiM0MzsJICoKJiM0MzsJICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvcgomIzQzOwkgKiBkdXJpbmcgdGhlIGhkZXYtJmd0O3NldHVwIHZlbmRvciBjYWxsYmFjay4KJiM0MzsJICovCiYjNDM7CUhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUsCiYjNDM7CiAJLyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIGR1cGxpY2F0ZSBmaWx0ZXJpbmcgZHVyaW5nCiAJICogc2Nhbm5pbmcgaXMgYmFzZWQgb24gQmx1ZXRvb3RoIGRldmljZXMgYWRkcmVzc2VzLiBUbyBhbGxvdwogCSAqIFJTU0kgYmFzZWQgdXBkYXRlcywgcmVzdGFydCBzY2FubmluZyBpZiBuZWVkZWQuCmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMKaW5kZXggYzhkMTQxMjhjMzYzZC4uODEzMmExNDg3YWMyNSAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYwpAQCAtNyw2ICYjNDM7Nyw3IEBACiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7bmV0L2JsdWV0b290aC9ibHVldG9vdGguaCZndDsKICNpbmNsdWRlICZsdDtuZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmgmZ3Q7CkBAIC0zNzAxLDYgJiM0MzszNzAyLDM5IEBAIGludCBoY2lfcG93ZXJlZF91cGRhdGVfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldikKIAlyZXR1cm4gMDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzCiYjNDM7ICoJCQkJICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb20KJiM0MzsgKgkJCQkgICAgYW4gTlZNRU0gY2VsbC4KJiM0MzsgKiBAaGRldjoJVGhlIEhDSSBkZXZpY2UKJiM0MzsgKgomIzQzOyAqIFNlYXJjaCBmb3IgJiMzOTtsb2NhbC1iZC1hZGRyZXNzJiMzOTsgTlZNRU0gY2VsbCBpbiB0aGUgZGV2aWNlIGZpcm13YXJlIG5vZGUuCiYjNDM7ICoKJiM0MzsgKiBBbGwtemVybyBCRCBhZGRyZXNzZXMgYXJlIHJlamVjdGVkICh1bnByb3Zpc2lvbmVkKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShzdHJ1Y3QgaGNpX2RldiAqaGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXZfb2Zfbm9kZShoZGV2LSZndDtkZXYucGFyZW50KTsKJiM0MzsJdTggYmFbc2l6ZW9mKGJkYWRkcl90KV07CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmICghbnApCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJZXJyID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCAmIzM0O2xvY2FsLWJkLWFkZHJlc3MmIzM0OywgYmEpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUpKQomIzQzOwkJYmFzd2FwKCZhbXA7aGRldi0mZ3Q7cHVibGljX2FkZHIsIChiZGFkZHJfdCAqKWJhKTsKJiM0MzsJZWxzZQomIzQzOwkJYmFjcHkoJmFtcDtoZGV2LSZndDtwdWJsaWNfYWRkciwgKGJkYWRkcl90ICopYmEpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzCiAgKgkJCQkgICAgICAgKEJEX0FERFIpIGZvciBhIEhDSSBkZXZpY2UgZnJvbQpAQCAtNTE4MCwxMiAmIzQzOzUyMTQsMTcgQEAgc3RhdGljIGludCBoY2lfZGV2X3NldHVwX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJICogaXRzIHNldHVwIGNhbGxiYWNrLgogCSAqLwogCWludmFsaWRfYmRhZGRyID0gaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fAotCQkJIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTsKJiM0MzsJCQkgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8CiYjNDM7CQkJIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTsKIAlpZiAoIXJldCkgewogCQlpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpICZhbXA7JmFtcDsKIAkJICAgICFiYWNtcCgmYW1wO2hkZXYtJmd0O3B1YmxpY19hZGRyLCBCREFERFJfQU5ZKSkKIAkJCWhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eShoZGV2KTsKIAomIzQzOwkJaWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIWJhY21wKCZhbXA7aGRldi0mZ3Q7cHVibGljX2FkZHIsIEJEQUREUl9BTlkpKQomIzQzOwkJCWhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShoZGV2KTsKJiM0MzsKIAkJaWYgKGludmFsaWRfYmRhZGRyICZhbXA7JmFtcDsgYmFjbXAoJmFtcDtoZGV2LSZndDtwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkgJmFtcDsmYW1wOwogCQkgICAgaGRldi0mZ3Q7c2V0X2JkYWRkcikgewogCQkJcmV0ID0gaGRldi0mZ3Q7c2V0X2JkYWRkcihoZGV2LCAmYW1wO2hkZXYtJmd0O3B1YmxpY19hZGRyKTsKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvbWdtdC5jIGIvbmV0L2JsdWV0b290aC9tZ210LmMKaW5kZXggMTY3ZDc1ZTM0NTI2Ni4uYTM5ZDc2M2E0MjI1YSAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9tZ210LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JsdWV0b290aC9tZ210LmMKQEAgLTYxNCw3ICYjNDM7NjE0LDggQEAgc3RhdGljIGJvb2wgaXNfY29uZmlndXJlZChzdHJ1Y3QgaGNpX2RldiAqaGRldikKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8Ci0JICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpICZhbXA7JmFtcDsKJiM0MzsJICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHwKJiM0MzsJICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSkpICZhbXA7JmFtcDsKIAkgICAgIWJhY21wKCZhbXA7aGRldi0mZ3Q7cHVibGljX2FkZHIsIEJEQUREUl9BTlkpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTYzMCw3ICYjNDM7NjMxLDggQEAgc3RhdGljIF9fbGUzMiBnZXRfbWlzc2luZ19vcHRpb25zKHN0cnVjdCBoY2lfZGV2ICpoZGV2KQogCQlvcHRpb25zIHw9IE1HTVRfT1BUSU9OX0VYVEVSTkFMX0NPTkZJRzsKIAogCWlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fAotCSAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8CiYjNDM7CSAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSAmYW1wOyZhbXA7CiAJICAgICFiYWNtcCgmYW1wO2hkZXYtJmd0O3B1YmxpY19hZGRyLCBCREFERFJfQU5ZKSkKIAkJb3B0aW9ucyB8PSBNR01UX09QVElPTl9QVUJMSUNfQUREUkVTUzsKIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvb2ZfbmV0LmMgYi9uZXQvY29yZS9vZl9uZXQuYwppbmRleCA5M2VhNDI1YjkyNDhhLi45OTljYTBlOTI1OGM0IDEwMDY0NAotLS0gYS9uZXQvY29yZS9vZl9uZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9vZl9uZXQuYwpAQCAtNjEsOSAmIzQzOzYxLDcgQEAgc3RhdGljIGludCBvZl9nZXRfbWFjX2FkZHIoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqbmFtZSwgdTggKmFkZHIpCiBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICphZGRyKQogewogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKG5wKTsKLQlzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDsKLQljb25zdCB2b2lkICptYWM7Ci0Jc2l6ZV90IGxlbjsKJiM0MzsJdTggbWFjW0VUSF9BTEVOXSBfX2FsaWduZWQoc2l6ZW9mKHUxNikpOwogCWludCByZXQ7CiAKIAkvKiBUcnkgbG9va3VwIGJ5IGRldmljZSBmaXJzdCwgdGhlcmUgbWlnaHQgYmUgYSBudm1lbV9jZWxsX2xvb2t1cApAQCAtNzUsMjcgJiM0Mzs3Myw1NyBAQCBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICphZGRyKQogCQlyZXR1cm4gcmV0OwogCX0KIAotCWNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgJiMzNDttYWMtYWRkcmVzcyYjMzQ7KTsKJiM0MzsJcmV0ID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCAmIzM0O21hYy1hZGRyZXNzJiMzNDssIG1hYyk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIobWFjKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwltZW1jcHkoYWRkciwgbWFjLCBFVEhfQUxFTik7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC4KJiM0MzsgKiBAbnA6CQlEZXZpY2Ugbm9kZSB0byBsb29rIHVwIHRoZSBOVk1FTSBjZWxsIGZyb20uCiYjNDM7ICogQGNlbGxfbmFtZToJTmFtZSBvZiB0aGUgTlZNRU0gY2VsbCAoZS5nLiAmIzM0O21hYy1hZGRyZXNzJiMzNDssICYjMzQ7bG9jYWwtYmQtYWRkcmVzcyYjMzQ7KS4KJiM0MzsgKiBAYWRkcjoJT3V0cHV0IGJ1ZmZlciBmb3IgdGhlIDYtYnl0ZSBhZGRyZXNzLgomIzQzOyAqCiYjNDM7ICogUmVhZHMgdGhlIG5hbWVkIE5WTUVNIGNlbGwgYW5kIHZhbGlkYXRlcyB0aGF0IGl0IGNvbnRhaW5zIGEgbm9uLXplcm8gNi1ieXRlCiYjNDM7ICogYWRkcmVzcy4gUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCiYjNDM7ICovCiYjNDM7aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKQomIzQzO3sKJiM0MzsJc3RydWN0IG52bWVtX2NlbGwgKmNlbGw7CiYjNDM7CWNvbnN0IHZvaWQgKmV1aTQ4OwomIzQzOwlzaXplX3QgbGVuOwomIzQzOwomIzQzOwljZWxsID0gb2ZfbnZtZW1fY2VsbF9nZXQobnAsIGNlbGxfbmFtZSk7CiAJaWYgKElTX0VSUihjZWxsKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2VsbCk7CiAKLQltYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgJmFtcDtsZW4pOwomIzQzOwlldWk0OCA9IG52bWVtX2NlbGxfcmVhZChjZWxsLCAmYW1wO2xlbik7CiAJbnZtZW1fY2VsbF9wdXQoY2VsbCk7CiAKLQlpZiAoSVNfRVJSKG1hYykpCi0JCXJldHVybiBQVFJfRVJSKG1hYyk7CiYjNDM7CWlmIChJU19FUlIoZXVpNDgpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIoZXVpNDgpOwogCi0JaWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7Ci0JCWtmcmVlKG1hYyk7CiYjNDM7CS8qIFJlamVjdCB1bnByb2dyYW1tZWQgY2VsbHMgdGhhdCByZWFkIGFzIGFsbC16ZXJvZXMgb3IgYWxsLW9uZXMgKi8KJiM0MzsJaWYgKGxlbiAhPSBFVEhfQUxFTiB8fAomIzQzOwkgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4MDAsIEVUSF9BTEVOKSB8fAomIzQzOwkgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4ZmYsIEVUSF9BTEVOKSkgewomIzQzOwkJa2ZyZWUoZXVpNDgpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQltZW1jcHkoYWRkciwgbWFjLCBFVEhfQUxFTik7Ci0Ja2ZyZWUobWFjKTsKJiM0MzsJbWVtY3B5KGFkZHIsIGV1aTQ4LCBFVEhfQUxFTik7CiYjNDM7CWtmcmVlKGV1aTQ4KTsKIAogCXJldHVybiAwOwogfQotRVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pOwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKG9mX2dldF9udm1lbV9ldWk0OCk7CiAKIC8qKgogICogb2ZfZ2V0X21hY19hZGRyZXNzKCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NDcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IE5WTUVNIGFuZCBCbG9jay9OZXR3b3JrIEludGVyZmFjZSBJbnRlZ3JhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaW5kaWNhdGVzIHRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjZXMgcG90ZW50aWFsIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgKmRlZmluaXRlbHkqIHdhcnJhbnQgZnV6emluZy4gV2UgaGF2ZSBzZXZlcmFsIGFyZWFzIGhlcmUsIHNvIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0IG9mIGVhY2guCgpGaXJzdCwgdGhlcmUgYXJlIGRvY3VtZW50YXRpb24gYW5kIERldmljZSBUcmVlIGNoYW5nZXMgKGRldmljZXRyZWUgYmluZGluZ3MgYW5kIHFyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMpLiBUaGVzZSBhcmUgdW5saWtlbHkgdG8gYmUgZnV6eiB0YXJnZXRzIGRpcmVjdGx5LCB0aG91Z2ggaW5jb3JyZWN0IGRvY3VtZW50YXRpb24gY2FuIGxlYWQgdG8gaW5kaXJlY3QgaXNzdWVzLgoKSG93ZXZlciwgdGhlIG1lYXQgb2YgdGhlIHNlcmllcyBpcyBtb3JlIGludGVyZXN0aW5nLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIG5ldyBOVk1FTSBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBibG9jayBsYXllciAoQ09ORklHX0JMS19OVk1FTSkuIFRoaXMgaW52b2x2ZXMgYWRkaW5nIGBibGstbnZtZW0uY2AgYW5kIG1vZGlmeWluZyBleGlzdGluZyBibG9jayBsYXllciBmaWxlcyAoYGdlbmhkLmNgLCBgY29yZS5jYCwgYG9mLmNgKSB0byByZWdpc3RlciBOVk1FTSBkZXZpY2VzIGZvciBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zLiBUaGUgQmx1ZXRvb3RoIGNoYW5nZXMgYXJlIGFsc28gcmVsZXZhbnQgYXMgaXQgc2V0cyBhIHF1aXJrIChgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU1gKSBhbmQgbW9kaWZpZXMgQmx1ZXRvb3RoIGNvZGUgKGBidHFjYS5jYCwgYGhjaV9zeW5jLmNgLCBgbWdtdC5jYCkgdG8gcmVhZCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIChCRF9BRERSKSBmcm9tIE5WTUVNLiBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIE5WTUVNIGxheW91dCAoYGxheW91dHMuY2ApIHRvIHN1cHBvcnQgZml4ZWQtbGF5b3V0IG5vZGVzIGFuZCwgZmluYWxseSwgY2hhbmdlcyB0byBOZXQgY29yZSAoYG9mX25ldC5jYCkgdG8gYWRkIGBvZl9nZXRfbnZtZW1fZXVpNDhgIGFuZCByZWZhY3RvciBgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtYC4KCkNydWNpYWxseSwgdGhlIGJsb2NrIGxheWVyIGNoYW5nZXMgYW5kIHRoZSBuZXQgY29yZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGludGVyYWN0aW9uIHdpdGggYG9mX2dldF9udm1lbV9ldWk0OGAgYXJlIGRpcmVjdGx5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4gVGhlIGJsb2NrIGxheWVyIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gYSBibG9jayBkZXZpY2UgaXMgYWRkZWQsIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfQkxLX05WTUVNYC4gVGhlIEJsdWV0b290aCBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGEgQmx1ZXRvb3RoIGRldmljZSBpcyBpbml0aWFsaXplZCwgaWYgdGhlIHF1aXJrIGlzIHNldC4KCkxldCYjMzk7cyBkaWcgaW4uIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYENPTkZJR19CTEtfTlZNRU1gIGNhbiBiZSBlbmFibGVkIG9yIGlzIGVuYWJsZWQuIEl0IGRlcGVuZHMgb24gYE9GYCBhbmQgYE5WTUVNYCwgd2hpY2ggYXJlIGxpa2VseSBlbmFibGVkIG9uIGFueSBtb2Rlcm4gc3lzdGVtLiBGdXJ0aGVyLCBgYmxrX252bWVtX2FkZGAgaXMgY2FsbGVkIGZyb20gYGFkZF9kaXNrX2ZpbmFsYCBhbmQgYGFkZF9wYXJ0aXRpb25gLCBtZWFuaW5nIGl0IGlzIGRpcmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIGJsb2NrIGRldmljZSBvcGVyYXRpb25zLiBBbmQgYG9mX2dldF9udm1lbV9ldWk0OGAgaXMgY2FsbGVkIGZyb20gYG9mX2dldF9tYWNfYWRkcmVzc19udm1lbWAgYW5kIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBzbyB3ZSBjYW4gcmVhY2ggdGhpcyB3aXRoIGEgQlQgZGV2aWNlLgoKU28sIGlzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSEgV2UmIzM5O3JlIGFkZGluZyBhICpuZXcqIG1ldGhvZCB0byBleHBvc2UgYmxvY2sgZGV2aWNlcyBhcyBOVk1FTSBwcm92aWRlcnMsIGFuZCB0aGlzIGludm9sdmVzIHJlYWRpbmcgTUFDL0JEIGFkZHJlc3NlcyBmcm9tIE5WTUVNLiBUaGUgYmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyIHJlYWRzIGZyb20gdGhlIGJsb2NrIGRldmljZSB1c2luZyBga2VybmVsX3JlYWRgIG9uIGEgYmxvY2sgZGV2aWNlIGZpbGUuIFdhaXQsIGV2ZW4gYmV0dGVyLCBgYmxrX252bWVtX3JlZ19yZWFkYCBvcGVucyB0aGUgYmxvY2sgZGV2aWNlICpleGNsdXNpdmVseSogYW5kIHJlYWRzIGZyb20gaXQsIHdoaWNoIG1lYW5zIHdlIGNhbiB0cmlnZ2VyIHRoaXMgcmVhZCB0aHJvdWdoIHRoZSBOVk1FTSBzeXNmcyBpbnRlcmZhY2UsIG9yIGluZGlyZWN0bHkgdGhyb3VnaCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyB0aGF0IGNvbnN1bWUgTlZNRU0uIFRoaXMgY291bGQgcmV2ZWFsIGludGVyZXN0aW5nIGludGVyYWN0aW9ucy4KClRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczoKKiAgIGBibGtfbnZtZW1fcmVnX3JlYWRgCiogICBgYmxrX252bWVtX2FkZGAKKiAgIGBibGtfbnZtZW1fZGVsYAoqICAgYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAKKiAgIGBvZl9nZXRfbnZtZW1fZXVpNDhgCgpGb3IgdGhlIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgdGhlc2U6CiogICBgQkxLX05WTUVNYAoqICAgYE5WTUVNYAoqICAgYE9GYAoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRob3NlIGNvbmZpZyBvcHRpb25zIGFuZCBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgaG9sZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX05WTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWc9MjAyPWNvbmZpZyBCTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0tcbi0tXG5ibG9jay9LY29uZmlnLTIxMS1cbmJsb2NrL0tjb25maWc6MjEyOmNvbmZpZyBCTEtfTlZNRU1cbmJsb2NrL0tjb25maWctMjEzLVx0Ym9vbCBcJiMzNDtCbG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMzMQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBOb24tVm9sYXRpbGUgTWVtb3J5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBCTEtfTlZNRU1gLCBgTlZNRU1gLCBhbmQgYE9GYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgYE9GYC4uLnRoYXQmIzM5O3MgT3BlbiBGaXJtd2FyZSwgcmlnaHQ/JiMzNDsgVGhhdCB0eXBpY2FsbHkgc2hvd3MgdXAgaW4gQVJNIG9yIFBvd2VyUEMgc3lzdGVtcywgdXN1YWxseSBjb3VwbGVkIHdpdGggRGV2aWNlIFRyZWUuIEkgcmVtZW1iZXIgdGhlcmUmIzM5O3MgYSBwb3NzaWJpbGl0eSB0byBlbmFibGUgaXQgb24geDg2LCBtYXliZSB0aHJvdWdoIGBPRl9VTklUVEVTVGAgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gQWN0dWFsbHksIGxldCBtZSBjbGFyaWZ5LCBgT0ZgIGNvcnJlc3BvbmRzIHRvIGBDT05GSUdfT0ZgLgoKSnVzdCB0byBjb25maXJtLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBgb2ZfZ2V0X252bWVtX2V1aTQ4YCBpbiB0aGUgYG5ldC9jb3JlL29mX25ldC5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgbW9yZSBkaXJlY3QgdW5kZXJzdGFuZGluZyBvZiBob3cgT3BlbiBGaXJtd2FyZSBpcyByZWxhdGVkIHRvIG5vbi12b2xhdGlsZSBtZW1vcnkgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBvZl9nZXRfbnZtZW1fZXVpNDgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9vZl9uZXQuaD0xNz1leHRlcm4gaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKTtcbmluY2x1ZGUvbGludXgvb2ZfbmV0Lmg6MTg6aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKTtcbmluY2x1ZGUvbGludXgvb2ZfbmV0LmgtMTktaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX25ldC5oPTMzPXN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKVxuLS1cbmluY2x1ZGUvbGludXgvb2ZfbmV0LmgtMzctXG5pbmNsdWRlL2xpbnV4L29mX25ldC5oOjM4OnN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuaW5jbHVkZS9saW51eC9vZl9uZXQuaC0zOS1cdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpXG4tLVxubmV0L2NvcmUvb2ZfbmV0LmM9ODY9RVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xuLS1cbm5ldC9jb3JlL29mX25ldC5jLTk2LSAqL1xubmV0L2NvcmUvb2ZfbmV0LmM6OTc6aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxubmV0L2NvcmUvb2ZfbmV0LmMtOTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDEyCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgY29kZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYGJsa19udm1lbV9yZWdfcmVhZGAqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIGZ1bmN0aW9uIG5hbWUsIGBibGtfbnZtZW1fcmVnX3JlYWRgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgb25lIHdlIHVzZSBmb3IgcmVhZGluZyB0aG9zZSBub24tdm9sYXRpbGUgbWVtb3J5IHJlZ2lzdGVycyB3aXRoaW4gdGhlIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBteSB1bmRlcnN0YW5kaW5nOiBJdCYjMzk7cyBsaWtlbHkgaGFuZGxpbmcgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiwgYWJzdHJhY3RpbmcgYXdheSBzb21lIG9mIHRoZSBoYXJkd2FyZSBkZXRhaWxzIGZvciB0aGUgdXBwZXIgbGF5ZXJzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaXRzIHJvbGUgaW4gdGhlIGNvbXBsZXRlIHdvcmtmbG93IGFuZCBkb3VibGUgY2hlY2sgaXRzIGV4YWN0IHB1cnBvc2UgaW4gY29udGV4dC4gTGV0JiMzOTtzIHNlZSBob3cgaXTigJlzIGltcGxlbWVudGVkIGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgcmVhZGluZyBmcm9tIGEgbm9uLXZvbGF0aWxlIG1lbW9yeSByZWdpb24sIHdoYXQgZXJyb3IgY2hlY2tzIGFyZSBpbXBsZW1lbnRlZCwgYW5kIGhvdyBpdCByZXBvcnRzIHBvdGVudGlhbCBpc3N1ZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIGFuZCBJIG5lZWQgdG8gYmUgY29tcGxldGVseSBjbGVhciBvbiBpdHMgYmVoYXZpb3IgYmVmb3JlIEkgY29udGludWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrX252bWVtX3JlZ19yZWFkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1udm1lbS5jLTI1LVxuYmxvY2svYmxrLW52bWVtLmM6MjY6c3RhdGljIGludCBibGtfbnZtZW1fcmVnX3JlYWQodm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGZyb20sXG5ibG9jay9ibGstbnZtZW0uYy0yNy1cdFx0XHQgICAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcylcbi0tXG5ibG9jay9ibGstbnZtZW0uYy0zNi1cdFx0XHRcdFx0ICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCxcbmJsb2NrL2Jsay1udm1lbS5jOjM3Olx0XHRcdFx0XHQgIGJsa19udm1lbV9yZWdfcmVhZCwgTlVMTCk7XG5ibG9jay9ibGstbnZtZW0uYy0zOC1cdGlmIChJU19FUlIoYmRldl9maWxlKSlcbi0tXG5ibG9jay9ibGstbnZtZW0uYz01Nj1pbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KVxuLS1cbmJsb2NrL2Jsay1udm1lbS5jLTkzLVx0Y29uZmlnLnByaXYgPSBiZGV2O1xuYmxvY2svYmxrLW52bWVtLmM6OTQ6XHRjb25maWcucmVnX3JlYWQgPSBibGtfbnZtZW1fcmVnX3JlYWQ7XG5ibG9jay9ibGstbnZtZW0uYy05NS1cdGNvbmZpZy5zaXplID0gYmRldl9ucl9ieXRlcyhiZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDU0MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLZXkgRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb3JlIGNoYW5nZXMgYW5kIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgdGhlIHByaW1hcnkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBgYmxrX252bWVtX3JlZ19yZWFkYCwgYGJsa19udm1lbV9hZGRgLCBgYmxrX252bWVtX2RlbGAsIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBhbmQgYG9mX2dldF9udm1lbV9ldWk0OGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRyaXZpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IHRpZWQgaW50byBOVk1lIG1lbW9yeS4KCk5vdywgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9ucy4gYEJMS19OVk1FTWAgaXMgb2J2aW91c2x5IHRoZSBtb3N0IGltcG9ydGFudCBvbmUgaGVyZTsgaXQmIzM5O3MgdGhlIGNvcmUgZW5hYmxlciBvZiB0aGlzIGVudGlyZSBmZWF0dXJlLiBUaGVuIHdlIGhhdmUgYmx1ZXRvb3RoLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBCVF9IQ0lVQVJUX1FDQWAgYmVjYXVzZSBJIHNhdyBgYnRxY2EuY2AgbWVudGlvbmVkLiBCdXQsIHRoZSBxdWlyayBoYW5kbGluZyBhcHBlYXJzIHRvIGJlIGluIHRoZSBjb3JlIGJsdWV0b290aCBjb2RlLCBtZWFuaW5nIGp1c3QgYEJUYCBzaG91bGQgY292ZXIgY29yZSBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhlIHF1aXJrICppcyogc2V0IHdpdGhpbiBgYnRxY2EuY2AsIGFuZCB0aGF0IGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gIGlzIGluIGBoY2lfc3luYy5jYCB3aGljaCBpcyBjb3JlIGJsdWV0b290aC4gU28sIGl0IG1pZ2h0IGJlIHRoYXQgYEJUX1FDQWAgb3IgZXZlbiBgQlRfSENJVUFSVF9RQ0FgIGFyZSBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBxdWlyayBhY3RpdmF0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIFVsdGltYXRlbHksIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyBpbiBgYnRxY2EuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCVF9IQ0lVQVJUX1FDQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9LY29uZmlnPTIyNz1jb25maWcgQlRfSENJVUFSVF9SVExcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnLTI0MC1cbmRyaXZlcnMvYmx1ZXRvb3RoL0tjb25maWc6MjQxOmNvbmZpZyBCVF9IQ0lVQVJUX1FDQVxuZHJpdmVycy9ibHVldG9vdGgvS2NvbmZpZy0yNDItXHRib29sIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTIwNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgQmx1ZXRvb3RoIEhDSSBJbml0aWFsaXphdGlvbiB3aXRoIE5WTUVNIGFuZCBPRioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gbWFrZSBzdXJlIHRoZSBCbHVldG9vdGggSENJIGluaXRpYWxpemF0aW9uIGlzIGNvcnJlY3RseSBoYW5kbGVkLCB3aGljaCBtZWFucyBJIGFic29sdXRlbHkgKm11c3QqIGFjY291bnQgZm9yIGBCTEtfTlZNRU1gIGFuZCBgQlRfSENJVUFSVF9RQ0FgLCBvciBqdXN0IGBCVGAgaW4gZ2VuZXJhbCwgZHVyaW5nIHRoaXMgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwgSSBhbHNvIGtub3cgdGhhdCBgT0ZgIGlzIGVzc2VudGlhbCB3aGVuIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEJMS19OVk1FTWAuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZywgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlIEJsdWV0b290aCBkZXZpY2UmIzM5O3MgQkQgYWRkcmVzcyBpcyByZXRyaWV2ZWQgZnJvbSBOViBtZW1vcnkuIFRvIGRvIHRoaXMsIEkgd2lsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAsIHNwZWNpZmljYWxseSBsb29raW5nIGluIGBuZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBsb2dpYyB0aGVyZSBwcm9wZXJseSBpbnRlZ3JhdGVzIHdpdGggYm90aCB0aGUgTlZNRU0gaGFuZGxpbmcgYW5kIGFueSBxdWlya3MgcmVsYXRlZCB0byBRQ0EgYmFzZWQgVUFSVCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBtaWdodCBiZSBwcmVzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTM2NDc9aW50IGhjaV9wb3dlcmVkX3VwZGF0ZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzA1LS8qKlxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjM3MDY6ICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtIC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3Ncbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzA3LSAqXHRcdFx0XHQgICAgKEJEX0FERFIpIGZvciBhIEhDSSBkZXZpY2UgZnJvbVxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzE2LSAqL1xubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjM3MTc6c3RhdGljIGludCBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oc3RydWN0IGhjaV9kZXYgKmhkZXYpXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtMzcxOC17XG4tLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTUxOTA9c3RhdGljIGludCBoY2lfZGV2X3NldHVwX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4tLVxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTUyMjUtXHRcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmM6NTIyNjpcdFx0XHRoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oaGRldik7XG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTIyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4NTgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCbG9jayBEZXZpY2UgTlZNRU0gSW50ZWdyYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIGNvb2wgbmV3IGZ1bmN0aW9uYWxpdHk6IG1ha2luZyBibG9jayBkZXZpY2VzIGFjY2Vzc2libGUgYXMgTlZNRU0gcHJvdmlkZXJzLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhbHJlYWR5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzdGFydC4gVGhlIGNvcmUgaWRlYSBzZWVtcyB0byBiZSByZWFkaW5nIE1BQy9CRCBhZGRyZXNzZXMgZGlyZWN0bHkgZnJvbSB0aGUgTlZNRU0uCgpNeSBmb2N1cyBpcyBuYXR1cmFsbHkgZHJhd24gdG8gdGhlc2Ugc3ltYm9sczogYGJsa19udm1lbV9yZWdfcmVhZGAsIGBibGtfbnZtZW1fYWRkYCwgYGJsa19udm1lbV9kZWxgLCBgaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtYCwgYW5kIGBvZl9nZXRfbnZtZW1fZXVpNDhgLiBUaGV5IHByZXR0eSBtdWNoIHNwZWxsIG91dCB0aGUgaW1wbGVtZW50YXRpb246IHJlYWRpbmcsIGFkZGluZywgZGVsZXRpbmcsIGdldHRpbmcgQkQgYWRkcmVzc2VzLCBhbmQgcmV0cmlldmluZyBFVUk0OCBmcm9tIHRoZSBkZXZpY2UgdHJlZSwgcmVzcGVjdGl2ZWx5LiBJdCBnaXZlcyBtZSBhIGdvb2QgaWRlYSBvZiB0aGUgY29kZSYjMzk7cyBoaWdoLWxldmVsIGZsb3cuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWdzOiBgQkxLX05WTUVNYCwgYE9GYCwgYW5kIGBOVk1FTWAuIEkmIzM5O20gZ3Vlc3NpbmcgYEJMS19OVk1FTWAgaXMgdGhlIHByaW1hcnkgZmVhdHVyZSBmbGFnIGZvciB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LiBgT0ZgLCBvZiBjb3Vyc2UsIGlzIERldmljZSBUcmVlIHJlbGF0ZWQuIFRoZW4gdGhlcmUmIzM5O3MgYE5WTUVNYCwgYnV0IHdhaXQgYSBzZWNvbmQuLi4gYE5WTUVNYCBpcyBhICpzdWJzeXN0ZW0qISBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTlZNRU1gIGlzIGEgYm9vbCBvciB0cmlzdGF0ZS4gVGhhdCYjMzk7cyBjcnVjaWFsOyBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGhvdyBkZWVwbHkgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoIHRoZSBjb3JlIE5WTUVNIGluZnJhc3RydWN0dXJlLiBUaGlzIHdpbGwgdGVsbCBtZSBob3cgd2VsbCB0aGlzIG5ldyBmZWF0dXJlIGFkaGVyZXMgdG8gdGhlIGV4aXN0aW5nIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI6bWVudWNvbmZpZyBOVk1FTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMtXHRib29sIFwmIzM0O05WTUVNIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWc9MTM9aWYgTlZNRU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNC1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNTpjb25maWcgTlZNRU1fU1lTRlNcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7L3N5cy9idXMvbnZtZW0vZGV2aWNlcy8qL252bWVtIChzeXNmcyBpbnRlcmZhY2UpXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnPTI3PXNvdXJjZSBcJiMzNDtkcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMC1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozMTpjb25maWcgTlZNRU1fQU44ODU1X0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgQU44ODU1IGVGdXNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctNDEtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDI6Y29uZmlnIE5WTUVNX0FQUExFX0VGVVNFU1xuZHJpdmVycy9udm1lbS9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgZUZ1c2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo1Mzpjb25maWcgTlZNRU1fQVBQTEVfU1BNSVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgU1BNSSBOVk1FTVwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy02NS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo2Njpjb25maWcgTlZNRU1fQkNNX09DT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBPbi1DaGlwIE9UUCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctNzctXG5kcml2ZXJzL252bWVtL0tjb25maWc6Nzg6Y29uZmlnIE5WTUVNX0JSQ01fTlZSQU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tJiMzOTtzIE5WUkFNIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctODYtXG5kcml2ZXJzL252bWVtL0tjb25maWc6ODc6Y29uZmlnIE5WTUVNX0lNWF9JSU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O2kuTVggSUMgSWRlbnRpZmljYXRpb24gTW9kdWxlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctOTctXG5kcml2ZXJzL252bWVtL0tjb25maWc6OTg6Y29uZmlnIE5WTUVNX0lNWF9PQ09UUFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTk5LVx0dHJpc3RhdGUgXCYjMzQ7aS5NWCA2LzcvOCBPbi1DaGlwIE9UUCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMTA5LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjExMDpjb25maWcgTlZNRU1fSU1YX09DT1RQX0VMRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTExMS1cdHRyaXN0YXRlIFwmIzM0O2kuTVggT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTExOC1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMTk6Y29uZmlnIE5WTUVNX0lNWF9PQ09UUF9TQ1VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xMjAtXHR0cmlzdGF0ZSBcJiMzNDtpLk1YOCBTQ1UgT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMjc6Y29uZmlnIE5WTUVNX0paNDc4MF9FRlVTRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEyOC1cdHRyaXN0YXRlIFwmIzM0O0paNDc4MCBFRlVTRSBNZW1vcnkgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xMzgtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTM5OmNvbmZpZyBOVk1FTV9MQU45NjYyX09UUENcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNDAtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFOOTY2MiBPVFAgY29udHJvbGxlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE0Ni1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNDc6Y29uZmlnIE5WTUVNX0xBWUVSU0NBUEVfU0ZQXG5kcml2ZXJzL252bWVtL0tjb25maWctMTQ4LVx0dHJpc3RhdGUgXCYjMzQ7TGF5ZXJzY2FwZSBTRlAgKFNlY3VyaXR5IEZ1c2UgUHJvY2Vzc29yKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNjA6Y29uZmlnIE5WTUVNX0xQQzE4WFhfRUVQUk9NXG5kcml2ZXJzL252bWVtL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4WFggRUVQUk9NIE1lbW9yeSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE2OS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNzA6Y29uZmlnIE5WTUVNX0xQQzE4WFhfT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMTcxLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4WFggT1RQIE1lbW9yeSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE3OS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxODA6Y29uZmlnIE5WTUVNX01BWDc3NzU5XG5kcml2ZXJzL252bWVtL0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7TWF4aW0gSW50ZWdyYXRlZCBNQVg3Nzc1OSBOVk1FTSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE5MS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxOTI6Y29uZmlnIE5WTUVNX01FU09OX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBNZXNvbiBHWCBlRnVzZSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIwMS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyMDI6Y29uZmlnIE5WTUVNX01FU09OX01YX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMjAzLVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBNZXNvbjYvTWVzb244L01lc29uOGIgZUZ1c2UgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMTEtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjEyOmNvbmZpZyBOVk1FTV9NSUNST0NISVBfT1RQQ1xuZHJpdmVycy9udm1lbS9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBPVFBDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjE4LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjIxOTpjb25maWcgTlZNRU1fTVRLX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctMjIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWF0ZWsgU29DcyBFRlVTRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIyOS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyMzA6Y29uZmlnIE5WTUVNX01YU19PQ09UUFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBNWFMgT24tQ2hpcCBPVFAgTWVtb3J5IFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjQxLVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI0Mjpjb25maWcgTlZNRU1fTklOVEVORE9fT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMjQzLVx0dHJpc3RhdGUgXCYjMzQ7TmludGVuZG8gV2lpIGFuZCBXaWkgVSBPVFAgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNTMtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjU0OmNvbmZpZyBOVk1FTV9TMzJHX09DT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMjU1LVx0dHJpc3RhdGUgXCYjMzQ7UzMyRyBTb0MgT0NPVFAgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNjMtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjY0OmNvbmZpZyBOVk1FTV9RQ09NX1FGUFJPTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI2NS1cdHRyaXN0YXRlIFwmIzM0O1FDT00gUUZQUk9NIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjc0LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI3NTpjb25maWcgTlZNRU1fUUNPTV9TRUNfUUZQUk9NXG5kcml2ZXJzL252bWVtL0tjb25maWctMjc2LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7UUNPTSBTRUNVUkUgUUZQUk9NIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjg3LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI4ODpjb25maWcgTlZNRU1fUU5BUF9NQ1VfRUVQUk9NXG5kcml2ZXJzL252bWVtL0tjb25maWctMjg5LVx0dHJpc3RhdGUgXCYjMzQ7UU5BUCBNQ1UgRUVQUk9NIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMjk2LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI5Nzpjb25maWcgTlZNRU1fUkFWRV9TUF9FRVBST01cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yOTgtXHR0cmlzdGF0ZSBcJiMzNDtSYXZlIFNQIEVFUFJPTSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMwMi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozMDM6Y29uZmlnIE5WTUVNX1JDQVJfRUZVU0VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMDQtXHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFItQ2FyIEdlbjQgRS1GVVNFIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMzEzLVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMxNDpjb25maWcgTlZNRU1fUk1FTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMxNS1cdHRyaXN0YXRlIFwmIzM0O1Jlc2VydmVkIE1lbW9yeSBCYXNlZCBEcml2ZXIgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMjQtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzI1OmNvbmZpZyBOVk1FTV9ST0NLQ0hJUF9FRlVTRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMyNi1cdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGVGdXNlIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMzM1LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMzNjpjb25maWcgTlZNRU1fUk9DS0NISVBfT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctMzM3LVx0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgT1RQIGNvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNDYtXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzQ3OmNvbmZpZyBOVk1FTV9TQzI3WFhfRUZVU0VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNDgtXHR0cmlzdGF0ZSBcJiMzNDtTcHJlYWR0cnVtIFNDMjdYWCBlRnVzZSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM1Ny1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNTg6Y29uZmlnIE5WTUVNX1NOVlNfTFBHUFJcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNTktXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBMb3cgUG93ZXIgR2VuZXJhbCBQdXJwb3NlIFJlZ2lzdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM2Ny1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNjg6Y29uZmlnIE5WTUVNX1NQTUlfU0RBTVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM2OS1cdHRyaXN0YXRlIFwmIzM0O1NQTUkgU0RBTSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM3NS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNzY6Y29uZmlnIE5WTUVNX1NQUkRfRUZVU0VcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNzctXHR0cmlzdGF0ZSBcJiMzNDtTcHJlYWR0cnVtIFNvQyBlRnVzZSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM4Ni1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozODc6Y29uZmlnIE5WTUVNX1NUTTMyX0JTRUNfT1BURUVfVEFcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zODgtXHRkZWZfYm9vbCBOVk1FTV9TVE0zMl9ST01FTSBcdTAwMjZcdTAwMjYgT1BURUVcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctMzk1LVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjM5Njpjb25maWcgTlZNRU1fU1RNMzJfUk9NRU1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zOTctXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1RNMzIgZmFjdG9yeS1wcm9ncmFtbWVkIG1lbW9yeSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0MDc6Y29uZmlnIE5WTUVNX1NVTlBMVVNfT0NPVFBcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTdW5wbHVzIFNvQyBPVFAgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MTgtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDE5OmNvbmZpZyBOVk1FTV9TVU5YSV9TSURcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MjAtXHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgU29DcyBTSUQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MjgtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDI5OmNvbmZpZyBOVk1FTV9VX0JPT1RfRU5WXG5kcml2ZXJzL252bWVtL0tjb25maWctNDMwLVx0dHJpc3RhdGUgXCYjMzQ7VS1Cb290IGVudmlyb25tZW50IHZhcmlhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ0MS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0NDI6Y29uZmlnIE5WTUVNX1VOSVBISUVSX0VGVVNFXG5kcml2ZXJzL252bWVtL0tjb25maWctNDQzLVx0dHJpc3RhdGUgXCYjMzQ7VW5pUGhpZXIgU29DcyBlRnVzZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ1Mi1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0NTM6Y29uZmlnIE5WTUVNX1ZGNjEwX09DT1RQXG5kcml2ZXJzL252bWVtL0tjb25maWctNDU0LVx0dHJpc3RhdGUgXCYjMzQ7VkY2MTAgU29DIE9DT1RQIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL0tjb25maWctNDYzLVxuZHJpdmVycy9udm1lbS9LY29uZmlnOjQ2NDpjb25maWcgTlZNRU1fWllOUU1QXG5kcml2ZXJzL252bWVtL0tjb25maWctNDY1LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IFpZTlFNUCBTb0MgbnZtZW0gZmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00NzMtXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDc0OmNvbmZpZyBOVk1FTV9RT1JJUV9FRlVTRVxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ3NS1cdHRyaXN0YXRlIFwmIzM0O05YUCBRb3JJUSBlRnVzZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMi1cbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnOjM6Y29uZmlnIE5WTUVNX0xBWU9VVFNcbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnLTQtXHRib29sXG4tLVxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWc9OT1tZW51IFwmIzM0O0xheW91dCBUeXBlc1wmIzM0O1xuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMTAtXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoxMTpjb25maWcgTlZNRU1fTEFZT1VUX1NMMjhfVlBEXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O0tvbnRyb24gc2wyOCBWUEQgbGF5b3V0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnOjIwOmNvbmZpZyBOVk1FTV9MQVlPVVRfT05JRV9UTFZcbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7T05JRSB0bHYgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZW0vbGF5b3V0cy9LY29uZmlnLTI4LVxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWc6Mjk6Y29uZmlnIE5WTUVNX0xBWU9VVF9VX0JPT1RfRU5WXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1UtQm9vdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbGF5b3V0XCYjMzQ7XG4tLVxuZHJpdmVycy9wb3dlci9yZXNldC9LY29uZmlnPTMzMj1jb25maWcgUE9XRVJfUkVTRVRfU0MyN1hYXG4tLVxuZHJpdmVycy9wb3dlci9yZXNldC9LY29uZmlnLTM0MC1cbmRyaXZlcnMvcG93ZXIvcmVzZXQvS2NvbmZpZzozNDE6Y29uZmlnIE5WTUVNX1JFQk9PVF9NT0RFXG5kcml2ZXJzL3Bvd2VyL3Jlc2V0L0tjb25maWctMzQyLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBOVk1FTSByZWJvb3QgbW9kZSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NjIKCQkJCQkJCW91dHB1dDogMTc3CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9ibGVtOgoKKipBbmFseXppbmcgdGhlIERhdGEgRmxvdyBhbmQgUHJlcGFyaW5nIHRoZSBPdXRwdXQqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgcGllY2Ugb2YgaW5mb3JtYXRpb24gaGVyZSwgdGhlIGtleSB2YXJpYWJsZSBmb3IgdGhpcyBzZWN0aW9uLCBpcyBgTlZNRU1gLiBJdCYjMzk7cyBhIGJvb2xlYW4sIG1lYW5pbmcgaXQmIzM5O3MgZWl0aGVyIHRydWUgb3IgZmFsc2UuIEtub3dpbmcgdGhpcyBpcyBmdW5kYW1lbnRhbC4gTXkgYW5hbHlzaXMgaGluZ2VzIG9uIGNvcnJlY3RseSBpbnRlcnByZXRpbmcgYW5kIHV0aWxpemluZyBpdHMgc3RhdGUuCgpNeSBwbGFuIHRvIHByZXNlbnQgdGhlIHJlc3VsdCBpcyBhbHNvIGNsZWFyLiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIGBzZXQtcmVzdWx0c2AgdG8gcHJvcGVybHkgZXhwb3NlIG15IGZpbmRpbmdzIGZyb20gdGhlIGRhdGEgYW5hbHlzaXMuIFRoaXMgaXMgdGhlIGNvcnJlY3QgbWV0aG9kLCBhbmQgbWFrZXMgdGhlIGNvcnJlY3QgZnVuY3Rpb24gY2FsbCBpbiB0aGlzIHNpdHVhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19OVk1FTSYjMzQ7LAogICAgJiMzNDtOVk1FTSYjMzQ7LAogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Jsa19udm1lbV9yZWdfcmVhZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fYWRkJiMzNDssCiAgICAmIzM0O2Jsa19udm1lbV9kZWwmIzM0OywKICAgICYjMzQ7aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtJiMzNDssCiAgICAmIzM0O29mX2dldF9udm1lbV9ldWk0OCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfTlZNRU0mIzM0OywKICAgICYjMzQ7TlZNRU0mIzM0OywKICAgICYjMzQ7T0YmIzM0OywKICAgICYjMzQ7QlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbnZtZW1fcmVnX3JlYWQmIzM0OywKICAgICYjMzQ7YmxrX252bWVtX2FkZCYjMzQ7LAogICAgJiMzNDtibGtfbnZtZW1fZGVsJiMzNDssCiAgICAmIzM0O2hjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSYjMzQ7LAogICAgJiMzNDtvZl9nZXRfbnZtZW1fZXVpNDgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBmZWF0dXJlIHRvIGV4cG9zZSBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zIGFzIE5WTUVNIHByb3ZpZGVycywgYWxsb3dpbmcgTUFDIGFuZCBCbHVldG9vdGggYWRkcmVzc2VzIHRvIGJlIHJlYWQgZnJvbSB0aGVtLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBCbHVldG9vdGggY29yZSB0byByZWFkIEJEX0FERFIgZnJvbSBOVk1FTS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgbG9naWMgaW4gdGhlIGJsb2NrIGxheWVyIGFuZCBuZXR3b3JraW5nL2JsdWV0b290aCBjb3JlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE0OjQxLjIwMDgyMjYxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNDE2NDkxNzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19OVk1FTVwiLFxuICAgIFwiTlZNRU1cIixcbiAgICBcIk9GXCIsXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa19udm1lbV9yZWdfcmVhZFwiLFxuICAgIFwiYmxrX252bWVtX2FkZFwiLFxuICAgIFwiYmxrX252bWVtX2RlbFwiLFxuICAgIFwiaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtXCIsXG4gICAgXCJvZl9nZXRfbnZtZW1fZXVpNDhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNDo0MS4yMDA4MjkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIwNDU2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNTI3YzdhMThlODY1NWU5ZmQ0ZjdjNjE3MjBjNWJmMGI4ZmFhNDg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTc6MTQ6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXFxuaW5kZXggYTYxZDZjOTZkZjc1OS4uMDQyMjg5NDUwODQ3OCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnlhbWxcXG5AQCAtMzgsNyArMzgsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgIHByb3BlcnRpZXM6XFxuICAgICAgIGNvbXBhdGlibGU6XFxuICAgICAgICAgY29udGFpbnM6XFxuLSAgICAgICAgICBjb25zdDogZml4ZWQtcGFydGl0aW9uc1xcbisgICAgICAgICAgZW51bTpcXG4rICAgICAgICAgICAgLSBmaXhlZC1wYXJ0aXRpb25zXFxuKyAgICAgICAgICAgIC0gZml4ZWQtbGF5b3V0XFxuIFxcbiByZXF1aXJlZDpcXG4gICAtIGNvbXBhdGlibGVcXG5AQCAtODYsNiArODgsMjUgQEAgZXhhbXBsZXM6XFxuICAgICAgICAgICAgICAgICAgICAgcmVhZC1vbmx5O1xcbiAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgfTtcXG4rXFxuKyAgICAgICAgICAgIHBhcnRpdGlvbnMtYm9vdDIge1xcbisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJmaXhlZC1sYXlvdXRcXFwiO1xcbitcXG4rICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcbisgICAgICAgICAgICAgICAgbWFjLWFkZHJANDQwMCB7XFxuKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJtYWMtYmFzZVxcXCI7XFxuKyAgICAgICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4NDQwMCAweDZcXHUwMDNlO1xcbisgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgICAgICAgfTtcXG4rXFxuKyAgICAgICAgICAgICAgICBiZC1hZGRyQDU0MDAge1xcbisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwibWFjLWJhc2VcXFwiO1xcbisgICAgICAgICAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDU0MDAgMHg2XFx1MDAzZTtcXG4rICAgICAgICAgICAgICAgICAgICAjbnZtZW0tY2VsbC1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rICAgICAgICAgICAgICAgIH07XFxuKyAgICAgICAgICAgIH07XFxuICAgICAgICAgfTtcXG4gICAgIH07XFxuIFxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sXFxuaW5kZXggYzhlOWM1NWMxYWZiNC4uN2NiMjhmMzBjOWFmMCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sXFxuQEAgLTIyLDQgKzIyLDEzIEBAIHByb3BlcnRpZXM6XFxuICAgICBkZXNjcmlwdGlvbjpcXG4gICAgICAgYm9vdCBmaXJtd2FyZSBpcyBpbmNvcnJlY3RseSBwYXNzaW5nIHRoZSBhZGRyZXNzIGluIGJpZy1lbmRpYW4gb3JkZXJcXG4gXFxuKyAgbnZtZW0tY2VsbHM6XFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIE52bWVtIGRhdGEgY2VsbCB0aGF0IGNvbnRhaW5zIGEgNiBieXRlIEJEIGFkZHJlc3Mgd2l0aCB0aGUgbW9zdFxcbisgICAgICBzaWduaWZpY2FudCBieXRlIGZpcnN0IChiaWctZW5kaWFuKS5cXG4rXFxuKyAgbnZtZW0tY2VsbC1uYW1lczpcXG4rICAgIGNvbnN0OiBsb2NhbC1iZC1hZGRyZXNzXFxuK1xcbiBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3Fjb20sYXRoMTBrLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3Fjb20sYXRoMTBrLnlhbWxcXG5pbmRleCBkNGY0ZDcyZWUwZDM4Li43ZjlkMTZjYjdjMTQzIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxcbkBAIC05Miw2ICs5MiwyMiBAQCBwcm9wZXJ0aWVzOlxcbiBcXG4gICBpZWVlODAyMTEtZnJlcS1saW1pdDogdHJ1ZVxcbiBcXG4rICBudm1lbS1jZWxsczpcXG4rICAgIG1pbkl0ZW1zOiAxXFxuKyAgICBtYXhJdGVtczogM1xcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJlZmVyZW5jZXMgdG8gbnZtZW0gY2VsbHMgZm9yIE1BQyBhZGRyZXNzIGFuZC9vciBjYWxpYnJhdGlvbiBkYXRhLlxcbisgICAgICBTdXBwb3J0ZWQgY2VsbCBuYW1lcyBhcmUgbWFjLWFkZHJlc3MsIGNhbGlicmF0aW9uLCBhbmQgcHJlLWNhbGlicmF0aW9uLlxcbitcXG4rICBudm1lbS1jZWxsLW5hbWVzOlxcbisgICAgbWluSXRlbXM6IDFcXG4rICAgIG1heEl0ZW1zOiAzXFxuKyAgICBpdGVtczpcXG4rICAgICAgZW51bTpcXG4rICAgICAgICAtIG1hYy1hZGRyZXNzXFxuKyAgICAgICAgLSBjYWxpYnJhdGlvblxcbisgICAgICAgIC0gcHJlLWNhbGlicmF0aW9uXFxuK1xcbiAgIHFjb20sY2FsaWJyYXRpb24tZGF0YTpcXG4gICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25zL3VpbnQ4LWFycmF5XFxuICAgICBkZXNjcmlwdGlvbjpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0c1xcbmluZGV4IGJmMDg4ZmE5ODA3ZjAuLjM4ODM5YjhhMzYxZTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0c1xcbkBAIC00MDksNyArNDA5LDMzIEBAIFxcdTAwMjZzZGhjXzEge1xcbiBcXHRuby1zZGlvO1xcbiBcXHRuby1zZDtcXG4gXFxuK1xcdCNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbitcXHQjc2l6ZS1jZWxscyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4rXFxuIFxcdHN0YXR1cyA9IFxcXCJva2F5XFxcIjtcXG4rXFxuK1xcdGNhcmRAMCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwibW1jLWNhcmRcXFwiO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMFxcdTAwM2U7XFxuK1xcbitcXHRcXHRwYXJ0aXRpb25zLWJvb3QxIHtcXG4rXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmaXhlZC1sYXlvdXRcXFwiO1xcbitcXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0I3NpemUtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcbitcXHRcXHRcXHR3aWZpX21hY19hZGRyOiBtYWMtYWRkckA0NDAwIHtcXG4rXFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtYWMtYmFzZVxcXCI7XFxuK1xcdFxcdFxcdFxcdHJlZyA9IFxcdTAwM2MweDQ0MDAgMHg2XFx1MDAzZTtcXG4rXFx0XFx0XFx0XFx0I252bWVtLWNlbGwtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuK1xcdFxcdFxcdH07XFxuK1xcbitcXHRcXHRcXHRiZF9hZGRyOiBiZC1hZGRyQDU0MDAge1xcbitcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcIm1hYy1iYXNlXFxcIjtcXG4rXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NTQwMCAweDZcXHUwMDNlO1xcbitcXHRcXHRcXHRcXHQjbnZtZW0tY2VsbC1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4rXFx0XFx0XFx0fTtcXG4rXFx0XFx0fTtcXG4rXFx0fTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZzcGk1IHtcXG5AQCAtNTEyLDYgKzUzOCw5IEBAIGJsdWV0b290aCB7XFxuIFxcdFxcdHZkZGNoMC1zdXBwbHkgPSBcXHUwMDNjXFx1MDAyNnBtNDEyNV9sMjJcXHUwMDNlO1xcbiBcXHRcXHRlbmFibGUtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNnRsbW0gODcgR1BJT19BQ1RJVkVfSElHSFxcdTAwM2U7XFxuIFxcdFxcdG1heC1zcGVlZCA9IFxcdTAwM2MzMDAwMDAwXFx1MDAzZTtcXG4rXFxuK1xcdFxcdG52bWVtLWNlbGxzID0gXFx1MDAzY1xcdTAwMjZiZF9hZGRyIDBcXHUwMDNlO1xcbitcXHRcXHRudm1lbS1jZWxsLW5hbWVzID0gXFxcImxvY2FsLWJkLWFkZHJlc3NcXFwiO1xcbiBcXHR9O1xcbiB9O1xcbiBcXG5AQCAtNTU3LDYgKzU4Niw5IEBAIFxcdTAwMjZ3aWZpIHtcXG4gXFx0cWNvbSxhdGgxMGstY2FsaWJyYXRpb24tdmFyaWFudCA9IFxcXCJBcmR1aW5vSW1vbGFcXFwiO1xcbiBcXHRmaXJtd2FyZS1uYW1lID0gXFxcInFjbTIyOTBcXFwiO1xcbiBcXG4rXFx0bnZtZW0tY2VsbHMgPSBcXHUwMDNjXFx1MDAyNndpZmlfbWFjX2FkZHIgMFxcdTAwM2U7XFxuK1xcdG52bWVtLWNlbGwtbmFtZXMgPSBcXFwibWFjLWFkZHJlc3NcXFwiO1xcbitcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZyBiL2Jsb2NrL0tjb25maWdcXG5pbmRleCA3MGU0YTY2ZDk0MWZmLi40ODk5YWQ1NzJjNzFmIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL0tjb25maWdcXG4rKysgYi9ibG9jay9LY29uZmlnXFxuQEAgLTIwOSw2ICsyMDksMTcgQEAgY29uZmlnIEJMS19JTkxJTkVfRU5DUllQVElPTl9GQUxMQkFDS1xcbiBcXHQgIGJ5IGZhbGxpbmcgYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkgd2hlbiBpbmxpbmVcXG4gXFx0ICBlbmNyeXB0aW9uIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LlxcbiBcXG4rY29uZmlnIEJMS19OVk1FTVxcbitcXHRib29sIFxcXCJCbG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXJcXFwiXFxuK1xcdGRlcGVuZHMgb24gT0ZcXG4rXFx0ZGVwZW5kcyBvbiBOVk1FTVxcbitcXHRoZWxwXFxuK1xcdCAgQWxsb3cgYmxvY2sgZGV2aWNlcyAob3IgcGFydGl0aW9ucykgdG8gYWN0IGFzIE5WTUVNIHByb3ZpZGVycyxcXG4rXFx0ICBleHBvc2luZyBmYWN0b3J5LXByb3Zpc2lvbmVkIGRhdGEgc3VjaCBhcyBNQUMgYWRkcmVzc2VzIG9yIFdpLUZpXFxuK1xcdCAgY2FsaWJyYXRpb24gYmxvYnMgdG8gdGhlIGRyaXZlcnMgdGhhdCBjb25zdW1lIHRoZW0uIFRoaXMgaXNcXG4rXFx0ICB0eXBpY2FsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHdoZXJlIHN1Y2ggZGF0YSBpcyBzdG9yZWQgaW4gYVxcbitcXHQgIGRlZGljYXRlZCBhcmVhIG9mIGFuIGVNTUMsIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBFRVBST00gb3IgT1RQLlxcbitcXG4gc291cmNlIFxcXCJibG9jay9wYXJ0aXRpb25zL0tjb25maWdcXFwiXFxuIFxcbiBjb25maWcgQkxLX1BNXFxuZGlmZiAtLWdpdCBhL2Jsb2NrL01ha2VmaWxlIGIvYmxvY2svTWFrZWZpbGVcXG5pbmRleCBlN2JkMzIwZTNkNjk3Li44MjAwMjk3ZmJjYmFiIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL01ha2VmaWxlXFxuKysrIGIvYmxvY2svTWFrZWZpbGVcXG5AQCAtMzksMyArMzksNCBAQCBvYmotJChDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OKVxcdCs9IGJsay1jcnlwdG8ubyBibGstY3J5cHRvLXByb2ZpbGUubyBcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGJsay1jcnlwdG8tc3lzZnMub1xcbiBvYmotJChDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OX0ZBTExCQUNLKVxcdCs9IGJsay1jcnlwdG8tZmFsbGJhY2sub1xcbiBvYmotJChDT05GSUdfQkxPQ0tfSE9MREVSX0RFUFJFQ0FURUQpXFx0Kz0gaG9sZGVyLm9cXG4rb2JqLSQoQ09ORklHX0JMS19OVk1FTSkgICAgICAgICAgICAgICAgKz0gYmxrLW52bWVtLm9cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW52bWVtLmMgYi9ibG9jay9ibGstbnZtZW0uY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjliNjkxODRlMTYzMFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9ibG9jay9ibGstbnZtZW0uY1xcbkBAIC0wLDAgKzEsMTEyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXFxuKy8qXFxuKyAqIGJsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlclxcbisgKlxcbisgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRGFuaWVsIEdvbGxlIFxcdTAwM2NkYW5pZWxAbWFrcm90b3BpYS5vcmdcXHUwMDNlXFxuKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxcbisgKlxcbisgKiBVc2VmdWwgb24gZGV2aWNlcyB1c2luZyBhIHdob2xlIGRpc2sgb3IgYSBwYXJ0aXRpb24gKGUuZy4gYW4gZU1NQyBib290XFxuKyAqIHBhcnRpdGlvbikgdG8gc3RvcmUgTUFDIGFkZHJlc3NlcywgQmx1ZXRvb3RoIGFkZHJlc3NlcyBvciBXaS1GaVxcbisgKiBjYWxpYnJhdGlvbiBFRVBST00gZGF0YS5cXG4rICpcXG4rICogVGhlIE5WTUVNIGRldmljZSBpcyBhIHNpZGUgY2hhbm5lbCBvbnRvIGEgYmxvY2sgZGV2aWNlIHRoYXQgc3RheXMgZnVsbHlcXG4rICogdXNhYmxlLiBUaGlzIGlzIHNvbWV3aGF0IG1pdGlnYXRlZCBieSBvcGVuaW5nIHRoZSBkZXZpY2UgZXhjbHVzaXZlbHkuXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L252bWVtLXByb3ZpZGVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwiYmxrLmhcXFwiXFxuK1xcbitzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcXG4rXFx0XFx0XFx0ICAgICAgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpXFxuK3tcXG4rXFx0c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHByaXY7XFxuK1xcdHN0cnVjdCBmaWxlICpiZGV2X2ZpbGU7XFxuK1xcdGxvZmZfdCBwb3MgPSBmcm9tO1xcbitcXHRzc2l6ZV90IHJldDtcXG4rXFxuK1xcdC8qIG9wZW4gYW5kIHByZXZlbnQgb3RoZXIgZXhjbHVzaXZlIG9wZW5lcnMgKi9cXG4rXFx0YmRldl9maWxlID0gYmRldl9maWxlX29wZW5fYnlfZGV2KGJkZXYtXFx1MDAzZWJkX2RldixcXG4rXFx0XFx0XFx0XFx0XFx0ICBCTEtfT1BFTl9SRUFEIHwgQkxLX09QRU5fRVhDTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBibGtfbnZtZW1fcmVnX3JlYWQsIE5VTEwpO1xcbitcXHRpZiAoSVNfRVJSKGJkZXZfZmlsZSkpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKGJkZXZfZmlsZSk7XFxuK1xcbitcXHRpZiAoZmlsZV9iZGV2KGJkZXZfZmlsZSkgIT0gYmRldikge1xcbitcXHRcXHRmcHV0KGJkZXZfZmlsZSk7XFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBrZXJuZWxfcmVhZChiZGV2X2ZpbGUsIHZhbCwgYnl0ZXMsIFxcdTAwMjZwb3MpO1xcbitcXHRmcHV0KGJkZXZfZmlsZSk7XFxuK1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0aWYgKHJldCAhPSBieXRlcylcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZiZGV2LVxcdTAwM2ViZF9kZXZpY2U7XFxuK1xcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXZfb2Zfbm9kZShkZXYpO1xcbitcXHRzdHJ1Y3QgbnZtZW1fY29uZmlnIGNvbmZpZyA9IHtcXG4rXFx0XFx0LmlkXFx0XFx0PSBOVk1FTV9ERVZJRF9OT05FLFxcbitcXHRcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbitcXHRcXHQud29yZF9zaXplXFx0PSAxLFxcbitcXHRcXHQuc3RyaWRlXFx0XFx0PSAxLFxcbitcXHRcXHQucmVhZF9vbmx5XFx0PSB0cnVlLFxcbitcXHRcXHQucm9vdF9vbmx5XFx0PSB0cnVlLFxcbitcXHRcXHQuaWdub3JlX3dwXFx0PSB0cnVlLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbTtcXG4rXFx0c3RydWN0IGRldmljZV9ub2RlICpjaGlsZDtcXG4rXFxuK1xcdC8qIHNraXAgZGV2aWNlcyB3aGljaCBkbyBub3QgaGF2ZSBhIGRldmljZSB0cmVlIG5vZGUgKi9cXG4rXFx0aWYgKCFucClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUaGUgbGF5b3V0IGlzIGRlc2NyaWJlZCBlaXRoZXIgYnkgYW4gXFxcIm52bWVtLWxheW91dFxcXCIgY2hpbGQgbm9kZSBvclxcbitcXHQgKiBieSB0aGUgZGV2aWNlIG5vZGUgaXRzZWxmIGJlaW5nIGEgXFxcImZpeGVkLWxheW91dFxcXCIgY29udGFpbmVyLlxcbitcXHQgKi9cXG4rXFx0Y2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm52bWVtLWxheW91dFxcXCIpO1xcbitcXHRpZiAoY2hpbGQpXFxuK1xcdFxcdG9mX25vZGVfcHV0KGNoaWxkKTtcXG4rXFx0ZWxzZSBpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwiZml4ZWQtbGF5b3V0XFxcIikpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0aWYgKGJkZXZfbnJfYnl0ZXMoYmRldikgXFx1MDAzZSBJTlRfTUFYKSB7XFxuK1xcdFxcdGRldl93YXJuKGRldiwgXFxcImJsb2NrIGRldmljZSB0b28gbGFyZ2UgdG8gYmUgYW4gTlZNRU1cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4rXFx0Y29uZmlnLmRldiA9IGRldjtcXG4rXFx0Y29uZmlnLm5hbWUgPSBkZXZfbmFtZShkZXYpO1xcbitcXHRjb25maWcucHJpdiA9IGJkZXY7XFxuK1xcdGNvbmZpZy5yZWdfcmVhZCA9IGJsa19udm1lbV9yZWdfcmVhZDtcXG4rXFx0Y29uZmlnLnNpemUgPSBiZGV2X25yX2J5dGVzKGJkZXYpO1xcbitcXHRjb25maWcub2Zfbm9kZSA9IG5wO1xcbitcXG4rXFx0bnZtZW0gPSBudm1lbV9yZWdpc3RlcihcXHUwMDI2Y29uZmlnKTtcXG4rXFx0aWYgKElTX0VSUihudm1lbSkpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksXFxuK1xcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byByZWdpc3RlciBOVk1FTSBkZXZpY2VcXFxcblxcXCIpO1xcbitcXG4rXFx0YmRldi1cXHUwMDNlYmRfbnZtZW0gPSBudm1lbTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbit2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldilcXG4re1xcbitcXHRudm1lbV91bnJlZ2lzdGVyKGJkZXYtXFx1MDAzZWJkX252bWVtKTtcXG4rXFx0YmRldi1cXHUwMDNlYmRfbnZtZW0gPSBOVUxMO1xcbit9XFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmhcXG5pbmRleCBlYWFjMDU4MTVjYjAzLi4wNzllZGI5ZmJjMzdhIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay5oXFxuKysrIGIvYmxvY2svYmxrLmhcXG5AQCAtODE3LDQgKzgxNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmxrX2RlYnVnZnNfdW5sb2NrKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxcbiBcXHRtZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpO1xcbiB9XFxuIFxcbisjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxcbitpbnQgYmxrX252bWVtX2FkZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTtcXG4rdm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpO1xcbisjZWxzZVxcbitzdGF0aWMgaW5saW5lIGludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHsgcmV0dXJuIDA7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikge31cXG4rI2VuZGlmXFxuK1xcbiAjZW5kaWYgLyogQkxLX0lOVEVSTkFMX0ggKi9cXG5kaWZmIC0tZ2l0IGEvYmxvY2svZ2VuaGQuYyBiL2Jsb2NrL2dlbmhkLmNcXG5pbmRleCBkZjJjM2M2OWI0NjdkLi5mYzYzMjEyMmZhZThhIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2dlbmhkLmNcXG4rKysgYi9ibG9jay9nZW5oZC5jXFxuQEAgLTQxNyw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCBhZGRfZGlza19maW5hbChzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGRldl9zZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYsIDApO1xcbiBcXHRcXHRkaXNrX3VldmVudChkaXNrLCBLT0JKX0FERCk7XFxuK1xcbitcXHRcXHRibGtfbnZtZW1fYWRkKGRpc2stXFx1MDAzZXBhcnQwKTtcXG4gXFx0fVxcbiBcXG4gXFx0YmxrX2FwcGx5X2JkaV9saW1pdHMoZGlzay1cXHUwMDNlYmRpLCBcXHUwMDI2ZGlzay1cXHUwMDNlcXVldWUtXFx1MDAzZWxpbWl0cyk7XFxuQEAgLTcwMCw2ICs3MDIsOCBAQCBzdGF0aWMgdm9pZCBfX2RlbF9nZW5kaXNrKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbiBcXG4gXFx0ZGlza19kZWxfZXZlbnRzKGRpc2spO1xcbiBcXG4rXFx0YmxrX252bWVtX2RlbChkaXNrLVxcdTAwM2VwYXJ0MCk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBQcmV2ZW50IG5ldyBvcGVuZXJzIGJ5IHVubGlua2VkIHRoZSBiZGV2IGlub2RlLlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oIGIvYmxvY2svcGFydGl0aW9ucy9jaGVjay5oXFxuaW5kZXggYjA5OTc0NjdiNjFhNS4uMzI2MDgxNDk5ZDlhNiAxMDA2NDRcXG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcXG4rKysgYi9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcXG5AQCAtMTcsNiArMTcsNyBAQCBzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMge1xcbiBcXHRcXHRpbnQgZmxhZ3M7XFxuIFxcdFxcdGJvb2wgaGFzX2luZm87XFxuIFxcdFxcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvIGluZm87XFxuK1xcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGU7XFxuIFxcdH0gKnBhcnRzO1xcbiBcXHRpbnQgbmV4dDtcXG4gXFx0aW50IGxpbWl0O1xcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2NvcmUuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXFxuaW5kZXggYjVjNTliNzljYTdjYi4uYzgzMjI3NzEwNTg0YSAxMDA2NDRcXG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NvcmUuY1xcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXFxuQEAgLTExLDYgKzExLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N5c2ZzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jdHlwZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdm1hbGxvYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JhaWQvZGV0ZWN0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJjaGVjay5oXFxcIlxcbiBcXG5AQCAtMTEwLDggKzExMSwxNyBAQCBzdGF0aWMgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICphbGxvY2F0ZV9wYXJ0aXRpb25zKHN0cnVjdCBnZW5kaXNrICpoZClcXG4gXFx0cmV0dXJuIHN0YXRlO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBkcm9wX3BhcnRpdGlvbnNfZndub2RlcyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbit7XFxuK1xcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2Mgc3RhdGUtXFx1MDAzZWxpbWl0OyBpKyspIHtcXG4rXFx0XFx0Zndub2RlX2hhbmRsZV9wdXQoc3RhdGUtXFx1MDAzZXBhcnRzW2ldLmZ3bm9kZSk7XFxuK1xcdFxcdHN0YXRlLVxcdTAwM2VwYXJ0c1tpXS5md25vZGUgPSBOVUxMO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGZyZWVfcGFydGl0aW9ucyhzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbiB7XFxuK1xcdGRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0YXRlKTtcXG4gXFx0dmZyZWUoc3RhdGUtXFx1MDAzZXBhcnRzKTtcXG4gXFx0a2ZyZWUoc3RhdGUpO1xcbiB9XFxuQEAgLTEzOSw2ICsxNDksNyBAQCBzdGF0aWMgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpjaGVja19wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmhkKVxcbiBcXG4gXFx0aSA9IHJlcyA9IGVyciA9IDA7XFxuIFxcdHdoaWxlICghcmVzIFxcdTAwMjZcXHUwMDI2IGNoZWNrX3BhcnRbaV0pIHtcXG4rXFx0XFx0ZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RhdGUpO1xcbiBcXHRcXHRtZW1zZXQoc3RhdGUtXFx1MDAzZXBhcnRzLCAwLCBzdGF0ZS1cXHUwMDNlbGltaXQgKiBzaXplb2Yoc3RhdGUtXFx1MDAzZXBhcnRzWzBdKSk7XFxuIFxcdFxcdHJlcyA9IGNoZWNrX3BhcnRbaSsrXShzdGF0ZSk7XFxuIFxcdFxcdGlmIChyZXMgXFx1MDAzYyAwKSB7XFxuQEAgLTI0Nyw2ICsyNTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqcGFydF9hdHRyX2dyb3Vwc1tdID0ge1xcbiBcXG4gc3RhdGljIHZvaWQgcGFydF9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4ge1xcbitcXHRmd25vZGVfaGFuZGxlX3B1dChkZXZfZndub2RlKGRldikpO1xcbiBcXHRwdXRfZGlzayhkZXZfdG9fYmRldihkZXYpLVxcdTAwM2ViZF9kaXNrKTtcXG4gXFx0YmRldl9kcm9wKGRldl90b19iZGV2KGRldikpO1xcbiB9XFxuQEAgLTI3Nyw2ICsyODksOCBAQCB2b2lkIGRyb3BfcGFydGl0aW9uKHN0cnVjdCBibG9ja19kZXZpY2UgKnBhcnQpXFxuIFxcdHhhX2VyYXNlKFxcdTAwMjZwYXJ0LVxcdTAwM2ViZF9kaXNrLVxcdTAwM2VwYXJ0X3RibCwgYmRldl9wYXJ0bm8ocGFydCkpO1xcbiBcXHRrb2JqZWN0X3B1dChwYXJ0LVxcdTAwM2ViZF9ob2xkZXJfZGlyKTtcXG4gXFxuK1xcdGJsa19udm1lbV9kZWwocGFydCk7XFxuK1xcbiBcXHRkZXZpY2VfZGVsKFxcdTAwMjZwYXJ0LVxcdTAwM2ViZF9kZXZpY2UpO1xcbiBcXHRwdXRfZGV2aWNlKFxcdTAwMjZwYXJ0LVxcdTAwM2ViZF9kZXZpY2UpO1xcbiB9XFxuQEAgLTI5NCw3ICszMDgsOCBAQCBzdGF0aWMgY29uc3QgREVWSUNFX0FUVFIod2hvbGVfZGlzaywgMDQ0NCwgd2hvbGVfZGlza19zaG93LCBOVUxMKTtcXG4gICovXFxuIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLFxcbiBcXHRcXHRcXHRcXHRzZWN0b3JfdCBzdGFydCwgc2VjdG9yX3QgbGVuLCBpbnQgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvKVxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcGFydGl0aW9uX21ldGFfaW5mbyAqaW5mbyxcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcXG4ge1xcbiBcXHRkZXZfdCBkZXZ0ID0gTUtERVYoMCwgMCk7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBkaXNrX3RvX2RldihkaXNrKTtcXG5AQCAtMzQzLDYgKzM1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLFxcbiBcXHRwZGV2LVxcdTAwM2VjbGFzcyA9IFxcdTAwMjZibG9ja19jbGFzcztcXG4gXFx0cGRldi1cXHUwMDNldHlwZSA9IFxcdTAwMjZwYXJ0X3R5cGU7XFxuIFxcdHBkZXYtXFx1MDAzZXBhcmVudCA9IGRkZXY7XFxuK1xcdGRldmljZV9zZXRfbm9kZShwZGV2LCBmd25vZGVfaGFuZGxlX2dldChmd25vZGUpKTtcXG4gXFxuIFxcdC8qIGluIGNvbnNlY3V0aXZlIG1pbm9yIHJhbmdlPyAqL1xcbiBcXHRpZiAoYmRldl9wYXJ0bm8oYmRldikgXFx1MDAzYyBkaXNrLVxcdTAwM2VtaW5vcnMpIHtcXG5AQCAtMzkyLDYgKzQwOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlICphZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBpbnQgcGFydG5vLFxcbiBcXHQvKiBzdXBwcmVzcyB1ZXZlbnQgaWYgdGhlIGRpc2sgc3VwcHJlc3NlcyBpdCAqL1xcbiBcXHRpZiAoIWRldl9nZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYpKVxcbiBcXHRcXHRrb2JqZWN0X3VldmVudChcXHUwMDI2cGRldi1cXHUwMDNla29iaiwgS09CSl9BREQpO1xcbitcXG4rXFx0YmxrX252bWVtX2FkZChiZGV2KTtcXG4rXFxuIFxcdHJldHVybiBiZGV2O1xcbiBcXG4gb3V0X2RlbDpcXG5AQCAtNDQ5LDcgKzQ2OCw3IEBAIGludCBiZGV2X2FkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sIHNlY3Rvcl90IHN0YXJ0LFxcbiBcXHR9XFxuIFxcbiBcXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwYXJ0bm8sIHN0YXJ0LCBsZW5ndGgsXFxuLVxcdFxcdFxcdEFERFBBUlRfRkxBR19OT05FLCBOVUxMKTtcXG4rXFx0XFx0XFx0QUREUEFSVF9GTEFHX05PTkUsIE5VTEwsIE5VTEwpO1xcbiBcXHRyZXQgPSBQVFJfRVJSX09SX1pFUk8ocGFydCk7XFxuIG91dDpcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaXNrLVxcdTAwM2VvcGVuX211dGV4KTtcXG5AQCAtNTY0LDcgKzU4Myw3IEBAIHN0YXRpYyBib29sIGJsa19hZGRfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpkaXNrLFxcbiBcXHR9XFxuIFxcbiBcXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwLCBmcm9tLCBzaXplLCBzdGF0ZS1cXHUwMDNlcGFydHNbcF0uZmxhZ3MsXFxuLVxcdFxcdFxcdCAgICAgXFx1MDAyNnN0YXRlLVxcdTAwM2VwYXJ0c1twXS5pbmZvKTtcXG4rXFx0XFx0XFx0ICAgICBcXHUwMDI2c3RhdGUtXFx1MDAzZXBhcnRzW3BdLmluZm8sIHN0YXRlLVxcdTAwM2VwYXJ0c1twXS5md25vZGUpO1xcbiBcXHRpZiAoSVNfRVJSKHBhcnQpKSB7XFxuIFxcdFxcdGlmIChQVFJfRVJSKHBhcnQpICE9IC1FTlhJTykge1xcbiBcXHRcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcIiAlczogcCVkIGNvdWxkIG5vdCBiZSBhZGRlZDogJXBlXFxcXG5cXFwiLFxcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL29mLmMgYi9ibG9jay9wYXJ0aXRpb25zL29mLmNcXG5pbmRleCA1MzY2NGVhMDZiNjU0Li40ZmM3YzgwYzQwN2RlIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xcbkBAIC0zLDYgKzMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYmxrZGV2LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tYWpvci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdHJpbmcuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImNoZWNrLmhcXFwiXFxuIFxcbkBAIC02Miw2ICs2Myw4IEBAIHN0YXRpYyB2b2lkIGFkZF9vZl9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgaW50IHNsb3QsXFxuIFxcdFxcdHBhcnRuYW1lID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCBcXFwibmFtZVxcXCIsIFxcdTAwMjZsZW4pO1xcbiBcXHRzdHJzY3B5KGluZm8tXFx1MDAzZXZvbG5hbWUsIHBhcnRuYW1lLCBzaXplb2YoaW5mby1cXHUwMDNldm9sbmFtZSkpO1xcbiBcXG4rXFx0c3RhdGUtXFx1MDAzZXBhcnRzW3Nsb3RdLmZ3bm9kZSA9IGZ3bm9kZV9oYW5kbGVfZ2V0KG9mX2Z3bm9kZV9oYW5kbGUobnApKTtcXG4rXFxuIFxcdHNlcV9idWZfcHJpbnRmKFxcdTAwMjZzdGF0ZS1cXHUwMDNlcHBfYnVmLCBcXFwiKCVzKVxcXCIsIGluZm8tXFx1MDAzZXZvbG5hbWUpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jIGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xcbmluZGV4IDEwYzQ5NmVhZWEyYzEuLjNjNmYwMjFiNzYyMTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xcbisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmNcXG5AQCAtNzIzLDggKzcyMywxMSBAQCBzdGF0aWMgaW50IHFjYV9jaGVja19iZGFkZHIoc3RydWN0IGhjaV9kZXYgKmhkZXYsIGNvbnN0IHN0cnVjdCBxY2FfZndfY29uZmlnICpjb1xcbiBcXHR9XFxuIFxcbiBcXHRiZGEgPSAoc3RydWN0IGhjaV9ycF9yZWFkX2JkX2FkZHIgKilza2ItXFx1MDAzZWRhdGE7XFxuLVxcdGlmICghYmFjbXAoXFx1MDAyNmJkYS1cXHUwMDNlYmRhZGRyLCBcXHUwMDI2Y29uZmlnLVxcdTAwM2ViZGFkZHIpKVxcbitcXHRpZiAoIWJhY21wKFxcdTAwMjZiZGEtXFx1MDAzZWJkYWRkciwgXFx1MDAyNmNvbmZpZy1cXHUwMDNlYmRhZGRyKSkge1xcbiBcXHRcXHRoY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTtcXG4rXFx0XFx0aGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSk7XFxuK1xcdFxcdGhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSk7XFxuK1xcdH1cXG4gXFxuIFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xcbmluZGV4IGI5MDU4NGUxYjk5ZWEuLmVmYTYzMWNlNzI4M2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmNcXG4rKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xcbkBAIC0xNjcsNyArMTY3LDE4IEBAIHN0YXRpYyBpbnQgbnZtZW1fbGF5b3V0X2J1c19wb3B1bGF0ZShzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSxcXG4gXFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0pXFxuIHtcXG4tXFx0cmV0dXJuIG9mX2dldF9jaGlsZF9ieV9uYW1lKG52bWVtLVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm52bWVtLWxheW91dFxcXCIpO1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbitcXG4rXFx0LyogU2VhcmNoIGZvciBudm1lbS1sYXlvdXQgY2hpbGQgKi9cXG4rXFx0bnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS1cXHUwMDNlZGV2Lm9mX25vZGUsIFxcXCJudm1lbS1sYXlvdXRcXFwiKTtcXG4rXFx0aWYgKG5wKVxcbitcXHRcXHRyZXR1cm4gbnA7XFxuK1xcbitcXHQvKiBUaGUgbnZtZW0gb2Zfbm9kZSBpcyBpdHNlbGYgYSBmaXhlZC1sYXlvdXQgbm9kZSAqL1xcbitcXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnZtZW0tXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwiZml4ZWQtbGF5b3V0XFxcIikpXFxuK1xcdFxcdHJldHVybiBvZl9ub2RlX2dldChudm1lbS1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwob2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcXG5pbmRleCA4ODA4ZWU3NmU3M2MwLi42ZWQxNzNjNjQ5MDI1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gc3RydWN0IGJpb19zZXQ7XFxuIHN0cnVjdCBiaW87XFxuIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQ7XFxuK3N0cnVjdCBudm1lbV9kZXZpY2U7XFxuIHN0cnVjdCBwYWdlO1xcbiBzdHJ1Y3QgaW9fY29udGV4dDtcXG4gc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7XFxuQEAgLTczLDYgKzc0LDkgQEAgc3RydWN0IGJsb2NrX2RldmljZSB7XFxuIFxcdGludFxcdFxcdFxcdGJkX3dyaXRlcnM7XFxuICNpZmRlZiBDT05GSUdfU0VDVVJJVFlcXG4gXFx0dm9pZFxcdFxcdFxcdCpiZF9zZWN1cml0eTtcXG4rI2VuZGlmXFxuKyNpZmRlZiBDT05GSUdfQkxLX05WTUVNXFxuK1xcdHN0cnVjdCBudm1lbV9kZXZpY2VcXHQqYmRfbnZtZW07XFxuICNlbmRpZlxcbiBcXHQvKlxcbiBcXHQgKiBrZWVwIHRoaXMgb3V0LW9mLWxpbmUgYXMgaXQncyBib3RoIGJpZyBhbmQgbm90IG5lZWRlZCBpbiB0aGUgZmFzdFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L29mX25ldC5oIGIvaW5jbHVkZS9saW51eC9vZl9uZXQuaFxcbmluZGV4IGQ4ODcxNWEwYjNhNTIuLjc4NTRiYTU1NWQ5YTUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcXG5AQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTtcXG4gZXh0ZXJuIGludCBvZl9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCwgcGh5X2ludGVyZmFjZV90ICppbnRlcmZhY2UpO1xcbiBleHRlcm4gaW50IG9mX2dldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKTtcXG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XFxuK2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcik7XFxuIGludCBvZl9nZXRfZXRoZGV2X2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuIGV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqb2ZfZmluZF9uZXRfZGV2aWNlX2J5X25vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCk7XFxuICNlbHNlXFxuQEAgLTM0LDYgKzM1LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqbWFjKVxcbiBcXHRyZXR1cm4gLUVOT0RFVjtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X252bWVtX2V1aTQ4KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuK1xcdFxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpXFxuK3tcXG4rXFx0cmV0dXJuIC1FTk9ERVY7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHJldHVybiAtRU5PREVWO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmhcXG5pbmRleCA1MGYwZWVmNzFmYjE5Li43NGZhNDAyNTA0MDEyIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxcbkBAIC0xNjEsNiArMTYxLDI0IEBAIGVudW0ge1xcbiBcXHQgKi9cXG4gXFx0SENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sXFxuIFxcbitcXHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgcHVibGljIEJsdWV0b290aCBhZGRyZXNzXFxuK1xcdCAqIGluaXRpYWxseSByZXBvcnRlZCBieSBIQ0kgUmVhZCBCRCBBZGRyZXNzIGNvbW1hbmRcXG4rXFx0ICogaXMgY29uc2lkZXJlZCBpbnZhbGlkLiBUaGUgcHVibGljIEJEIEFkZHJlc3MgY2FuIGJlXFxuK1xcdCAqIHJldHJpZXZlZCB2aWEgYSAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbC5cXG4rXFx0ICpcXG4rXFx0ICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvclxcbitcXHQgKiBkdXJpbmcgdGhlIGhkZXYtXFx1MDAzZXNldHVwIHZlbmRvciBjYWxsYmFjay5cXG4rXFx0ICovXFxuK1xcdEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNLFxcbitcXG4rXFx0LyogV2hlbiB0aGlzIHF1aXJrIGlzIHNldCwgdGhlIEJsdWV0b290aCBEZXZpY2UgQWRkcmVzcyBwcm92aWRlZCBieVxcbitcXHQgKiB0aGUgJ2xvY2FsLWJkLWFkZHJlc3MnIE5WTUVNIGlzIHN0b3JlZCBpbiBiaWctZW5kaWFuIG9yZGVyLlxcbitcXHQgKlxcbitcXHQgKiBUaGlzIHF1aXJrIGNhbiBiZSBzZXQgYmVmb3JlIGhjaV9yZWdpc3Rlcl9kZXYgaXMgY2FsbGVkIG9yXFxuK1xcdCAqIGR1cmluZyB0aGUgaGRldi1cXHUwMDNlc2V0dXAgdmVuZG9yIGNhbGxiYWNrLlxcbitcXHQgKi9cXG4rXFx0SENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSxcXG4rXFxuIFxcdC8qIFdoZW4gdGhpcyBxdWlyayBpcyBzZXQsIHRoZSBkdXBsaWNhdGUgZmlsdGVyaW5nIGR1cmluZ1xcbiBcXHQgKiBzY2FubmluZyBpcyBiYXNlZCBvbiBCbHVldG9vdGggZGV2aWNlcyBhZGRyZXNzZXMuIFRvIGFsbG93XFxuIFxcdCAqIFJTU0kgYmFzZWQgdXBkYXRlcywgcmVzdGFydCBzY2FubmluZyBpZiBuZWVkZWQuXFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuYyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xcbmluZGV4IGM4ZDE0MTI4YzM2M2QuLjgxMzJhMTQ4N2FjMjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXFxuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc3luYy5jXFxuQEAgLTcsNiArNyw3IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvYmx1ZXRvb3RoL2JsdWV0b290aC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2JsdWV0b290aC9oY2lfY29yZS5oXFx1MDAzZVxcbkBAIC0zNzAxLDYgKzM3MDIsMzkgQEAgaW50IGhjaV9wb3dlcmVkX3VwZGF0ZV9zeW5jKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXFxuKyAqXFx0XFx0XFx0XFx0ICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cXG4rICpcXHRcXHRcXHRcXHQgICAgYW4gTlZNRU0gY2VsbC5cXG4rICogQGhkZXY6XFx0VGhlIEhDSSBkZXZpY2VcXG4rICpcXG4rICogU2VhcmNoIGZvciAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbCBpbiB0aGUgZGV2aWNlIGZpcm13YXJlIG5vZGUuXFxuKyAqXFxuKyAqIEFsbC16ZXJvIEJEIGFkZHJlc3NlcyBhcmUgcmVqZWN0ZWQgKHVucHJvdmlzaW9uZWQpLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXFxuKyAqL1xcbitzdGF0aWMgaW50IGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4re1xcbitcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoaGRldi1cXHUwMDNlZGV2LnBhcmVudCk7XFxuK1xcdHU4IGJhW3NpemVvZihiZGFkZHJfdCldO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKCFucClcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHRlcnIgPSBvZl9nZXRfbnZtZW1fZXVpNDgobnAsIFxcXCJsb2NhbC1iZC1hZGRyZXNzXFxcIiwgYmEpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0aWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUpKVxcbitcXHRcXHRiYXN3YXAoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCAoYmRhZGRyX3QgKiliYSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0YmFjcHkoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCAoYmRhZGRyX3QgKiliYSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXFxuICAqXFx0XFx0XFx0XFx0ICAgICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cXG5AQCAtNTE4MCwxMiArNTIxNCwxNyBAQCBzdGF0aWMgaW50IGhjaV9kZXZfc2V0dXBfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4gXFx0ICogaXRzIHNldHVwIGNhbGxiYWNrLlxcbiBcXHQgKi9cXG4gXFx0aW52YWxpZF9iZGFkZHIgPSBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8XFxuLVxcdFxcdFxcdCBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSk7XFxuK1xcdFxcdFxcdCBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcXG4rXFx0XFx0XFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTtcXG4gXFx0aWYgKCFyZXQpIHtcXG4gXFx0XFx0aWYgKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIWJhY21wKFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXFxuIFxcdFxcdFxcdGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eShoZGV2KTtcXG4gXFxuK1xcdFxcdGlmIChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFiYWNtcChcXHUwMDI2aGRldi1cXHUwMDNlcHVibGljX2FkZHIsIEJEQUREUl9BTlkpKVxcbitcXHRcXHRcXHRoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oaGRldik7XFxuK1xcbiBcXHRcXHRpZiAoaW52YWxpZF9iZGFkZHIgXFx1MDAyNlxcdTAwMjYgYmFjbXAoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaGRldi1cXHUwMDNlc2V0X2JkYWRkcikge1xcbiBcXHRcXHRcXHRyZXQgPSBoZGV2LVxcdTAwM2VzZXRfYmRhZGRyKGhkZXYsIFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkcik7XFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvbWdtdC5jIGIvbmV0L2JsdWV0b290aC9tZ210LmNcXG5pbmRleCAxNjdkNzVlMzQ1MjY2Li5hMzlkNzYzYTQyMjVhIDEwMDY0NFxcbi0tLSBhL25ldC9ibHVldG9vdGgvbWdtdC5jXFxuKysrIGIvbmV0L2JsdWV0b290aC9tZ210LmNcXG5AQCAtNjE0LDcgKzYxNCw4IEBAIHN0YXRpYyBib29sIGlzX2NvbmZpZ3VyZWQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fFxcbi1cXHQgICAgIGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcXG4rXFx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSkpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAhYmFjbXAoXFx1MDAyNmhkZXYtXFx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG5AQCAtNjMwLDcgKzYzMSw4IEBAIHN0YXRpYyBfX2xlMzIgZ2V0X21pc3Npbmdfb3B0aW9ucyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4gXFx0XFx0b3B0aW9ucyB8PSBNR01UX09QVElPTl9FWFRFUk5BTF9DT05GSUc7XFxuIFxcbiBcXHRpZiAoKGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19JTlZBTElEX0JEQUREUikgfHxcXG4tXFx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8XFxuK1xcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIWJhY21wKFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXFxuIFxcdFxcdG9wdGlvbnMgfD0gTUdNVF9PUFRJT05fUFVCTElDX0FERFJFU1M7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9vZl9uZXQuYyBiL25ldC9jb3JlL29mX25ldC5jXFxuaW5kZXggOTNlYTQyNWI5MjQ4YS4uOTk5Y2EwZTkyNThjNCAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9vZl9uZXQuY1xcbisrKyBiL25ldC9jb3JlL29mX25ldC5jXFxuQEAgLTYxLDkgKzYxLDcgQEAgc3RhdGljIGludCBvZl9nZXRfbWFjX2FkZHIoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqbmFtZSwgdTggKmFkZHIpXFxuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKmFkZHIpXFxuIHtcXG4gXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUobnApO1xcbi1cXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcXG4tXFx0Y29uc3Qgdm9pZCAqbWFjO1xcbi1cXHRzaXplX3QgbGVuO1xcbitcXHR1OCBtYWNbRVRIX0FMRU5dIF9fYWxpZ25lZChzaXplb2YodTE2KSk7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHQvKiBUcnkgbG9va3VwIGJ5IGRldmljZSBmaXJzdCwgdGhlcmUgbWlnaHQgYmUgYSBudm1lbV9jZWxsX2xvb2t1cFxcbkBAIC03NSwyNyArNzMsNTcgQEAgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4tXFx0Y2VsbCA9IG9mX252bWVtX2NlbGxfZ2V0KG5wLCBcXFwibWFjLWFkZHJlc3NcXFwiKTtcXG4rXFx0cmV0ID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCBcXFwibWFjLWFkZHJlc3NcXFwiLCBtYWMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKG1hYykpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0bWVtY3B5KGFkZHIsIG1hYywgRVRIX0FMRU4pO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XFxuK1xcbisvKipcXG4rICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC5cXG4rICogQG5wOlxcdFxcdERldmljZSBub2RlIHRvIGxvb2sgdXAgdGhlIE5WTUVNIGNlbGwgZnJvbS5cXG4rICogQGNlbGxfbmFtZTpcXHROYW1lIG9mIHRoZSBOVk1FTSBjZWxsIChlLmcuIFxcXCJtYWMtYWRkcmVzc1xcXCIsIFxcXCJsb2NhbC1iZC1hZGRyZXNzXFxcIikuXFxuKyAqIEBhZGRyOlxcdE91dHB1dCBidWZmZXIgZm9yIHRoZSA2LWJ5dGUgYWRkcmVzcy5cXG4rICpcXG4rICogUmVhZHMgdGhlIG5hbWVkIE5WTUVNIGNlbGwgYW5kIHZhbGlkYXRlcyB0aGF0IGl0IGNvbnRhaW5zIGEgbm9uLXplcm8gNi1ieXRlXFxuKyAqIGFkZHJlc3MuIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxcbisgKi9cXG4raW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxcbit7XFxuK1xcdHN0cnVjdCBudm1lbV9jZWxsICpjZWxsO1xcbitcXHRjb25zdCB2b2lkICpldWk0ODtcXG4rXFx0c2l6ZV90IGxlbjtcXG4rXFxuK1xcdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgY2VsbF9uYW1lKTtcXG4gXFx0aWYgKElTX0VSUihjZWxsKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2VsbCk7XFxuIFxcbi1cXHRtYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgXFx1MDAyNmxlbik7XFxuK1xcdGV1aTQ4ID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsIFxcdTAwMjZsZW4pO1xcbiBcXHRudm1lbV9jZWxsX3B1dChjZWxsKTtcXG4gXFxuLVxcdGlmIChJU19FUlIobWFjKSlcXG4tXFx0XFx0cmV0dXJuIFBUUl9FUlIobWFjKTtcXG4rXFx0aWYgKElTX0VSUihldWk0OCkpXFxuK1xcdFxcdHJldHVybiBQVFJfRVJSKGV1aTQ4KTtcXG4gXFxuLVxcdGlmIChsZW4gIT0gRVRIX0FMRU4gfHwgIWlzX3ZhbGlkX2V0aGVyX2FkZHIobWFjKSkge1xcbi1cXHRcXHRrZnJlZShtYWMpO1xcbitcXHQvKiBSZWplY3QgdW5wcm9ncmFtbWVkIGNlbGxzIHRoYXQgcmVhZCBhcyBhbGwtemVyb2VzIG9yIGFsbC1vbmVzICovXFxuK1xcdGlmIChsZW4gIT0gRVRIX0FMRU4gfHxcXG4rXFx0ICAgICFtZW1jaHJfaW52KGV1aTQ4LCAweDAwLCBFVEhfQUxFTikgfHxcXG4rXFx0ICAgICFtZW1jaHJfaW52KGV1aTQ4LCAweGZmLCBFVEhfQUxFTikpIHtcXG4rXFx0XFx0a2ZyZWUoZXVpNDgpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4tXFx0bWVtY3B5KGFkZHIsIG1hYywgRVRIX0FMRU4pO1xcbi1cXHRrZnJlZShtYWMpO1xcbitcXHRtZW1jcHkoYWRkciwgZXVpNDgsIEVUSF9BTEVOKTtcXG4rXFx0a2ZyZWUoZXVpNDgpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xcbitFWFBPUlRfU1lNQk9MX0dQTChvZl9nZXRfbnZtZW1fZXVpNDgpO1xcbiBcXG4gLyoqXFxuICAqIG9mX2dldF9tYWNfYWRkcmVzcygpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE0OjQxLjY4MzY2MDI3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcyOTMzNjQ1NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19OVk1FTVwiLFxuICAgIFwiTlZNRU1cIixcbiAgICBcIk9GXCIsXG4gICAgXCJCVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa19udm1lbV9yZWdfcmVhZFwiLFxuICAgIFwiYmxrX252bWVtX2FkZFwiLFxuICAgIFwiYmxrX252bWVtX2RlbFwiLFxuICAgIFwiaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtXCIsXG4gICAgXCJvZl9nZXRfbnZtZW1fZXVpNDhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IGZlYXR1cmUgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYW5kIHBhcnRpdGlvbnMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbGxvd2luZyBNQUMgYW5kIEJsdWV0b290aCBhZGRyZXNzZXMgdG8gYmUgcmVhZCBmcm9tIHRoZW0uIEl0IGFsc28gbW9kaWZpZXMgdGhlIEJsdWV0b290aCBjb3JlIHRvIHJlYWQgQkRfQUREUiBmcm9tIE5WTUVNLiBUaGlzIGludHJvZHVjZXMgbmV3IHJlYWNoYWJsZSBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIgYW5kIG5ldHdvcmtpbmcvYmx1ZXRvb3RoIGNvcmUgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNTI3YzdhMThlODY1NWU5ZmQ0ZjdjNjE3MjBjNWJmMGI4ZmFhNDg4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNzoxNDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbFxuaW5kZXggYTYxZDZjOTZkZjc1OS4uMDQyMjg5NDUwODQ3OCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLWNhcmQueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC55YW1sXG5AQCAtMzgsNyArMzgsOSBAQCBwYXR0ZXJuUHJvcGVydGllczpcbiAgICAgcHJvcGVydGllczpcbiAgICAgICBjb21wYXRpYmxlOlxuICAgICAgICAgY29udGFpbnM6XG4tICAgICAgICAgIGNvbnN0OiBmaXhlZC1wYXJ0aXRpb25zXG4rICAgICAgICAgIGVudW06XG4rICAgICAgICAgICAgLSBmaXhlZC1wYXJ0aXRpb25zXG4rICAgICAgICAgICAgLSBmaXhlZC1sYXlvdXRcbiBcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuQEAgLTg2LDYgKzg4LDI1IEBAIGV4YW1wbGVzOlxuICAgICAgICAgICAgICAgICAgICAgcmVhZC1vbmx5O1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIH07XG4rXG4rICAgICAgICAgICAgcGFydGl0aW9ucy1ib290MiB7XG4rICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcImZpeGVkLWxheW91dFwiO1xuK1xuKyAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbitcbisgICAgICAgICAgICAgICAgbWFjLWFkZHJANDQwMCB7XG4rICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCJtYWMtYmFzZVwiO1xuKyAgICAgICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMHg0NDAwIDB4Nlx1MDAzZTtcbisgICAgICAgICAgICAgICAgICAgICNudm1lbS1jZWxsLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbisgICAgICAgICAgICAgICAgfTtcbitcbisgICAgICAgICAgICAgICAgYmQtYWRkckA1NDAwIHtcbisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcIm1hYy1iYXNlXCI7XG4rICAgICAgICAgICAgICAgICAgICByZWcgPSBcdTAwM2MweDU0MDAgMHg2XHUwMDNlO1xuKyAgICAgICAgICAgICAgICAgICAgI252bWVtLWNlbGwtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgICAgICAgICB9O1xuKyAgICAgICAgICAgIH07XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL3Fjb20sYmx1ZXRvb3RoLWNvbW1vbi55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWxcbmluZGV4IGM4ZTljNTVjMWFmYjQuLjdjYjI4ZjMwYzlhZjAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9xY29tLGJsdWV0b290aC1jb21tb24ueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ibHVldG9vdGgvcWNvbSxibHVldG9vdGgtY29tbW9uLnlhbWxcbkBAIC0yMiw0ICsyMiwxMyBAQCBwcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICBib290IGZpcm13YXJlIGlzIGluY29ycmVjdGx5IHBhc3NpbmcgdGhlIGFkZHJlc3MgaW4gYmlnLWVuZGlhbiBvcmRlclxuIFxuKyAgbnZtZW0tY2VsbHM6XG4rICAgIG1heEl0ZW1zOiAxXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIE52bWVtIGRhdGEgY2VsbCB0aGF0IGNvbnRhaW5zIGEgNiBieXRlIEJEIGFkZHJlc3Mgd2l0aCB0aGUgbW9zdFxuKyAgICAgIHNpZ25pZmljYW50IGJ5dGUgZmlyc3QgKGJpZy1lbmRpYW4pLlxuK1xuKyAgbnZtZW0tY2VsbC1uYW1lczpcbisgICAgY29uc3Q6IGxvY2FsLWJkLWFkZHJlc3NcbitcbiBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuaW5kZXggZDRmNGQ3MmVlMGQzOC4uN2Y5ZDE2Y2I3YzE0MyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway55YW1sXG5AQCAtOTIsNiArOTIsMjIgQEAgcHJvcGVydGllczpcbiBcbiAgIGllZWU4MDIxMS1mcmVxLWxpbWl0OiB0cnVlXG4gXG4rICBudm1lbS1jZWxsczpcbisgICAgbWluSXRlbXM6IDFcbisgICAgbWF4SXRlbXM6IDNcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgUmVmZXJlbmNlcyB0byBudm1lbSBjZWxscyBmb3IgTUFDIGFkZHJlc3MgYW5kL29yIGNhbGlicmF0aW9uIGRhdGEuXG4rICAgICAgU3VwcG9ydGVkIGNlbGwgbmFtZXMgYXJlIG1hYy1hZGRyZXNzLCBjYWxpYnJhdGlvbiwgYW5kIHByZS1jYWxpYnJhdGlvbi5cbitcbisgIG52bWVtLWNlbGwtbmFtZXM6XG4rICAgIG1pbkl0ZW1zOiAxXG4rICAgIG1heEl0ZW1zOiAzXG4rICAgIGl0ZW1zOlxuKyAgICAgIGVudW06XG4rICAgICAgICAtIG1hYy1hZGRyZXNzXG4rICAgICAgICAtIGNhbGlicmF0aW9uXG4rICAgICAgICAtIHByZS1jYWxpYnJhdGlvblxuK1xuICAgcWNvbSxjYWxpYnJhdGlvbi1kYXRhOlxuICAgICAkcmVmOiAvc2NoZW1hcy90eXBlcy55YW1sIy9kZWZpbml0aW9ucy91aW50OC1hcnJheVxuICAgICBkZXNjcmlwdGlvbjpcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzXG5pbmRleCBiZjA4OGZhOTgwN2YwLi4zODgzOWI4YTM2MWU3IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FyYjIyMTAtYXJkdWluby1pbW9sYS5kdHNcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xcmIyMjEwLWFyZHVpbm8taW1vbGEuZHRzXG5AQCAtNDA5LDcgKzQwOSwzMyBAQCBcdTAwMjZzZGhjXzEge1xuIFx0bm8tc2RpbztcbiBcdG5vLXNkO1xuIFxuK1x0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1x0I3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuIFx0c3RhdHVzID0gXCJva2F5XCI7XG4rXG4rXHRjYXJkQDAge1xuK1x0XHRjb21wYXRpYmxlID0gXCJtbWMtY2FyZFwiO1xuK1x0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuK1xuK1x0XHRwYXJ0aXRpb25zLWJvb3QxIHtcbitcdFx0XHRjb21wYXRpYmxlID0gXCJmaXhlZC1sYXlvdXRcIjtcbitcdFx0XHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0I3NpemUtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuK1xuK1x0XHRcdHdpZmlfbWFjX2FkZHI6IG1hYy1hZGRyQDQ0MDAge1xuK1x0XHRcdFx0Y29tcGF0aWJsZSA9IFwibWFjLWJhc2VcIjtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzB4NDQwMCAweDZcdTAwM2U7XG4rXHRcdFx0XHQjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0fTtcbitcbitcdFx0XHRiZF9hZGRyOiBiZC1hZGRyQDU0MDAge1xuK1x0XHRcdFx0Y29tcGF0aWJsZSA9IFwibWFjLWJhc2VcIjtcbitcdFx0XHRcdHJlZyA9IFx1MDAzYzB4NTQwMCAweDZcdTAwM2U7XG4rXHRcdFx0XHQjbnZtZW0tY2VsbC1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rXHRcdFx0fTtcbitcdFx0fTtcbitcdH07XG4gfTtcbiBcbiBcdTAwMjZzcGk1IHtcbkBAIC01MTIsNiArNTM4LDkgQEAgYmx1ZXRvb3RoIHtcbiBcdFx0dmRkY2gwLXN1cHBseSA9IFx1MDAzY1x1MDAyNnBtNDEyNV9sMjJcdTAwM2U7XG4gXHRcdGVuYWJsZS1ncGlvcyA9IFx1MDAzY1x1MDAyNnRsbW0gODcgR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbiBcdFx0bWF4LXNwZWVkID0gXHUwMDNjMzAwMDAwMFx1MDAzZTtcbitcbitcdFx0bnZtZW0tY2VsbHMgPSBcdTAwM2NcdTAwMjZiZF9hZGRyIDBcdTAwM2U7XG4rXHRcdG52bWVtLWNlbGwtbmFtZXMgPSBcImxvY2FsLWJkLWFkZHJlc3NcIjtcbiBcdH07XG4gfTtcbiBcbkBAIC01NTcsNiArNTg2LDkgQEAgXHUwMDI2d2lmaSB7XG4gXHRxY29tLGF0aDEway1jYWxpYnJhdGlvbi12YXJpYW50ID0gXCJBcmR1aW5vSW1vbGFcIjtcbiBcdGZpcm13YXJlLW5hbWUgPSBcInFjbTIyOTBcIjtcbiBcbitcdG52bWVtLWNlbGxzID0gXHUwMDNjXHUwMDI2d2lmaV9tYWNfYWRkciAwXHUwMDNlO1xuK1x0bnZtZW0tY2VsbC1uYW1lcyA9IFwibWFjLWFkZHJlc3NcIjtcbitcbiBcdHN0YXR1cyA9IFwib2theVwiO1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZyBiL2Jsb2NrL0tjb25maWdcbmluZGV4IDcwZTRhNjZkOTQxZmYuLjQ4OTlhZDU3MmM3MWYgMTAwNjQ0XG4tLS0gYS9ibG9jay9LY29uZmlnXG4rKysgYi9ibG9jay9LY29uZmlnXG5AQCAtMjA5LDYgKzIwOSwxNyBAQCBjb25maWcgQkxLX0lOTElORV9FTkNSWVBUSU9OX0ZBTExCQUNLXG4gXHQgIGJ5IGZhbGxpbmcgYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkgd2hlbiBpbmxpbmVcbiBcdCAgZW5jcnlwdGlvbiBoYXJkd2FyZSBpcyBub3QgcHJlc2VudC5cbiBcbitjb25maWcgQkxLX05WTUVNXG4rXHRib29sIFwiQmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyXCJcbitcdGRlcGVuZHMgb24gT0ZcbitcdGRlcGVuZHMgb24gTlZNRU1cbitcdGhlbHBcbitcdCAgQWxsb3cgYmxvY2sgZGV2aWNlcyAob3IgcGFydGl0aW9ucykgdG8gYWN0IGFzIE5WTUVNIHByb3ZpZGVycyxcbitcdCAgZXhwb3NpbmcgZmFjdG9yeS1wcm92aXNpb25lZCBkYXRhIHN1Y2ggYXMgTUFDIGFkZHJlc3NlcyBvciBXaS1GaVxuK1x0ICBjYWxpYnJhdGlvbiBibG9icyB0byB0aGUgZHJpdmVycyB0aGF0IGNvbnN1bWUgdGhlbS4gVGhpcyBpc1xuK1x0ICB0eXBpY2FsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHdoZXJlIHN1Y2ggZGF0YSBpcyBzdG9yZWQgaW4gYVxuK1x0ICBkZWRpY2F0ZWQgYXJlYSBvZiBhbiBlTU1DLCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgRUVQUk9NIG9yIE9UUC5cbitcbiBzb3VyY2UgXCJibG9jay9wYXJ0aXRpb25zL0tjb25maWdcIlxuIFxuIGNvbmZpZyBCTEtfUE1cbmRpZmYgLS1naXQgYS9ibG9jay9NYWtlZmlsZSBiL2Jsb2NrL01ha2VmaWxlXG5pbmRleCBlN2JkMzIwZTNkNjk3Li44MjAwMjk3ZmJjYmFiIDEwMDY0NFxuLS0tIGEvYmxvY2svTWFrZWZpbGVcbisrKyBiL2Jsb2NrL01ha2VmaWxlXG5AQCAtMzksMyArMzksNCBAQCBvYmotJChDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OKVx0Kz0gYmxrLWNyeXB0by5vIGJsay1jcnlwdG8tcHJvZmlsZS5vIFxcXG4gXHRcdFx0XHRcdCAgIGJsay1jcnlwdG8tc3lzZnMub1xuIG9iai0kKENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT05fRkFMTEJBQ0spXHQrPSBibGstY3J5cHRvLWZhbGxiYWNrLm9cbiBvYmotJChDT05GSUdfQkxPQ0tfSE9MREVSX0RFUFJFQ0FURUQpXHQrPSBob2xkZXIub1xuK29iai0kKENPTkZJR19CTEtfTlZNRU0pICAgICAgICAgICAgICAgICs9IGJsay1udm1lbS5vXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW52bWVtLmMgYi9ibG9jay9ibGstbnZtZW0uY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjY5YjY5MTg0ZTE2MzBcbi0tLSAvZGV2L251bGxcbisrKyBiL2Jsb2NrL2Jsay1udm1lbS5jXG5AQCAtMCwwICsxLDExMiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyXG4rLypcbisgKiBibG9jayBkZXZpY2UgTlZNRU0gcHJvdmlkZXJcbisgKlxuKyAqIENvcHlyaWdodCAoYykgMjAyNCBEYW5pZWwgR29sbGUgXHUwMDNjZGFuaWVsQG1ha3JvdG9waWEub3JnXHUwMDNlXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4rICpcbisgKiBVc2VmdWwgb24gZGV2aWNlcyB1c2luZyBhIHdob2xlIGRpc2sgb3IgYSBwYXJ0aXRpb24gKGUuZy4gYW4gZU1NQyBib290XG4rICogcGFydGl0aW9uKSB0byBzdG9yZSBNQUMgYWRkcmVzc2VzLCBCbHVldG9vdGggYWRkcmVzc2VzIG9yIFdpLUZpXG4rICogY2FsaWJyYXRpb24gRUVQUk9NIGRhdGEuXG4rICpcbisgKiBUaGUgTlZNRU0gZGV2aWNlIGlzIGEgc2lkZSBjaGFubmVsIG9udG8gYSBibG9jayBkZXZpY2UgdGhhdCBzdGF5cyBmdWxseVxuKyAqIHVzYWJsZS4gVGhpcyBpcyBzb21ld2hhdCBtaXRpZ2F0ZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIGV4Y2x1c2l2ZWx5LlxuKyAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZmlsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L252bWVtLXByb3ZpZGVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9udm1lbS1jb25zdW1lci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbitcbisjaW5jbHVkZSBcImJsay5oXCJcbitcbitzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcbitcdFx0XHQgICAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcylcbit7XG4rXHRzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gcHJpdjtcbitcdHN0cnVjdCBmaWxlICpiZGV2X2ZpbGU7XG4rXHRsb2ZmX3QgcG9zID0gZnJvbTtcbitcdHNzaXplX3QgcmV0O1xuK1xuK1x0Lyogb3BlbiBhbmQgcHJldmVudCBvdGhlciBleGNsdXNpdmUgb3BlbmVycyAqL1xuK1x0YmRldl9maWxlID0gYmRldl9maWxlX29wZW5fYnlfZGV2KGJkZXYtXHUwMDNlYmRfZGV2LFxuK1x0XHRcdFx0XHQgIEJMS19PUEVOX1JFQUQgfCBCTEtfT1BFTl9FWENMLFxuK1x0XHRcdFx0XHQgIGJsa19udm1lbV9yZWdfcmVhZCwgTlVMTCk7XG4rXHRpZiAoSVNfRVJSKGJkZXZfZmlsZSkpXG4rXHRcdHJldHVybiBQVFJfRVJSKGJkZXZfZmlsZSk7XG4rXG4rXHRpZiAoZmlsZV9iZGV2KGJkZXZfZmlsZSkgIT0gYmRldikge1xuK1x0XHRmcHV0KGJkZXZfZmlsZSk7XG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1x0fVxuK1xuK1x0cmV0ID0ga2VybmVsX3JlYWQoYmRldl9maWxlLCB2YWwsIGJ5dGVzLCBcdTAwMjZwb3MpO1xuK1x0ZnB1dChiZGV2X2ZpbGUpO1xuK1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHJldDtcbitcdGlmIChyZXQgIT0gYnl0ZXMpXG4rXHRcdHJldHVybiAtRUlPO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK2ludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXG4re1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2YmRldi1cdTAwM2ViZF9kZXZpY2U7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoZGV2KTtcbitcdHN0cnVjdCBudm1lbV9jb25maWcgY29uZmlnID0ge1xuK1x0XHQuaWRcdFx0PSBOVk1FTV9ERVZJRF9OT05FLFxuK1x0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbitcdFx0LndvcmRfc2l6ZVx0PSAxLFxuK1x0XHQuc3RyaWRlXHRcdD0gMSxcbitcdFx0LnJlYWRfb25seVx0PSB0cnVlLFxuK1x0XHQucm9vdF9vbmx5XHQ9IHRydWUsXG4rXHRcdC5pZ25vcmVfd3BcdD0gdHJ1ZSxcbitcdH07XG4rXHRzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbTtcbitcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQ7XG4rXG4rXHQvKiBza2lwIGRldmljZXMgd2hpY2ggZG8gbm90IGhhdmUgYSBkZXZpY2UgdHJlZSBub2RlICovXG4rXHRpZiAoIW5wKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qXG4rXHQgKiBUaGUgbGF5b3V0IGlzIGRlc2NyaWJlZCBlaXRoZXIgYnkgYW4gXCJudm1lbS1sYXlvdXRcIiBjaGlsZCBub2RlIG9yXG4rXHQgKiBieSB0aGUgZGV2aWNlIG5vZGUgaXRzZWxmIGJlaW5nIGEgXCJmaXhlZC1sYXlvdXRcIiBjb250YWluZXIuXG4rXHQgKi9cbitcdGNoaWxkID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwibnZtZW0tbGF5b3V0XCIpO1xuK1x0aWYgKGNoaWxkKVxuK1x0XHRvZl9ub2RlX3B1dChjaGlsZCk7XG4rXHRlbHNlIGlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwiZml4ZWQtbGF5b3V0XCIpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmIChiZGV2X25yX2J5dGVzKGJkZXYpIFx1MDAzZSBJTlRfTUFYKSB7XG4rXHRcdGRldl93YXJuKGRldiwgXCJibG9jayBkZXZpY2UgdG9vIGxhcmdlIHRvIGJlIGFuIE5WTUVNXFxuXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdGNvbmZpZy5kZXYgPSBkZXY7XG4rXHRjb25maWcubmFtZSA9IGRldl9uYW1lKGRldik7XG4rXHRjb25maWcucHJpdiA9IGJkZXY7XG4rXHRjb25maWcucmVnX3JlYWQgPSBibGtfbnZtZW1fcmVnX3JlYWQ7XG4rXHRjb25maWcuc2l6ZSA9IGJkZXZfbnJfYnl0ZXMoYmRldik7XG4rXHRjb25maWcub2Zfbm9kZSA9IG5wO1xuK1xuK1x0bnZtZW0gPSBudm1lbV9yZWdpc3RlcihcdTAwMjZjb25maWcpO1xuK1x0aWYgKElTX0VSUihudm1lbSkpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihudm1lbSksXG4rXHRcdFx0XHQgICAgIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIE5WTUVNIGRldmljZVxcblwiKTtcbitcbitcdGJkZXYtXHUwMDNlYmRfbnZtZW0gPSBudm1lbTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbit2b2lkIGJsa19udm1lbV9kZWwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldilcbit7XG4rXHRudm1lbV91bnJlZ2lzdGVyKGJkZXYtXHUwMDNlYmRfbnZtZW0pO1xuK1x0YmRldi1cdTAwM2ViZF9udm1lbSA9IE5VTEw7XG4rfVxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmhcbmluZGV4IGVhYWMwNTgxNWNiMDMuLjA3OWVkYjlmYmMzN2EgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGsuaFxuKysrIGIvYmxvY2svYmxrLmhcbkBAIC04MTcsNCArODE3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibGtfZGVidWdmc191bmxvY2soc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsXG4gXHRtZW1hbGxvY19ub2lvX3Jlc3RvcmUobWVtZmxhZ3MpO1xuIH1cbiBcbisjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxuK2ludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpO1xuK3ZvaWQgYmxrX252bWVtX2RlbChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTtcbisjZWxzZVxuK3N0YXRpYyBpbmxpbmUgaW50IGJsa19udm1lbV9hZGQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikgeyByZXR1cm4gMDsgfVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBibGtfbnZtZW1fZGVsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpIHt9XG4rI2VuZGlmXG4rXG4gI2VuZGlmIC8qIEJMS19JTlRFUk5BTF9IICovXG5kaWZmIC0tZ2l0IGEvYmxvY2svZ2VuaGQuYyBiL2Jsb2NrL2dlbmhkLmNcbmluZGV4IGRmMmMzYzY5YjQ2N2QuLmZjNjMyMTIyZmFlOGEgMTAwNjQ0XG4tLS0gYS9ibG9jay9nZW5oZC5jXG4rKysgYi9ibG9jay9nZW5oZC5jXG5AQCAtNDE3LDYgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIGFkZF9kaXNrX2ZpbmFsKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuIFx0XHQgKi9cbiBcdFx0ZGV2X3NldF91ZXZlbnRfc3VwcHJlc3MoZGRldiwgMCk7XG4gXHRcdGRpc2tfdWV2ZW50KGRpc2ssIEtPQkpfQUREKTtcbitcbitcdFx0YmxrX252bWVtX2FkZChkaXNrLVx1MDAzZXBhcnQwKTtcbiBcdH1cbiBcbiBcdGJsa19hcHBseV9iZGlfbGltaXRzKGRpc2stXHUwMDNlYmRpLCBcdTAwMjZkaXNrLVx1MDAzZXF1ZXVlLVx1MDAzZWxpbWl0cyk7XG5AQCAtNzAwLDYgKzcwMiw4IEBAIHN0YXRpYyB2b2lkIF9fZGVsX2dlbmRpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spXG4gXG4gXHRkaXNrX2RlbF9ldmVudHMoZGlzayk7XG4gXG4rXHRibGtfbnZtZW1fZGVsKGRpc2stXHUwMDNlcGFydDApO1xuK1xuIFx0LypcbiBcdCAqIFByZXZlbnQgbmV3IG9wZW5lcnMgYnkgdW5saW5rZWQgdGhlIGJkZXYgaW5vZGUuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmggYi9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcbmluZGV4IGIwOTk3NDY3YjYxYTUuLjMyNjA4MTQ5OWQ5YTYgMTAwNjQ0XG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL2NoZWNrLmhcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvY2hlY2suaFxuQEAgLTE3LDYgKzE3LDcgQEAgc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zIHtcbiBcdFx0aW50IGZsYWdzO1xuIFx0XHRib29sIGhhc19pbmZvO1xuIFx0XHRzdHJ1Y3QgcGFydGl0aW9uX21ldGFfaW5mbyBpbmZvO1xuK1x0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlO1xuIFx0fSAqcGFydHM7XG4gXHRpbnQgbmV4dDtcbiBcdGludCBsaW1pdDtcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2NvcmUuYyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXG5pbmRleCBiNWM1OWI3OWNhN2NiLi5jODMyMjc3MTA1ODRhIDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9jb3JlLmNcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvY29yZS5jXG5AQCAtMTEsNiArMTEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jdHlwZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JhaWQvZGV0ZWN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcImNoZWNrLmhcIlxuIFxuQEAgLTExMCw4ICsxMTEsMTcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqYWxsb2NhdGVfcGFydGl0aW9ucyhzdHJ1Y3QgZ2VuZGlzayAqaGQpXG4gXHRyZXR1cm4gc3RhdGU7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGRyb3BfcGFydGl0aW9uc19md25vZGVzKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4re1xuK1x0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHN0YXRlLVx1MDAzZWxpbWl0OyBpKyspIHtcbitcdFx0Zndub2RlX2hhbmRsZV9wdXQoc3RhdGUtXHUwMDNlcGFydHNbaV0uZndub2RlKTtcbitcdFx0c3RhdGUtXHUwMDNlcGFydHNbaV0uZndub2RlID0gTlVMTDtcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWQgZnJlZV9wYXJ0aXRpb25zKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4ge1xuK1x0ZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RhdGUpO1xuIFx0dmZyZWUoc3RhdGUtXHUwMDNlcGFydHMpO1xuIFx0a2ZyZWUoc3RhdGUpO1xuIH1cbkBAIC0xMzksNiArMTQ5LDcgQEAgc3RhdGljIHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqY2hlY2tfcGFydGl0aW9uKHN0cnVjdCBnZW5kaXNrICpoZClcbiBcbiBcdGkgPSByZXMgPSBlcnIgPSAwO1xuIFx0d2hpbGUgKCFyZXMgXHUwMDI2XHUwMDI2IGNoZWNrX3BhcnRbaV0pIHtcbitcdFx0ZHJvcF9wYXJ0aXRpb25zX2Z3bm9kZXMoc3RhdGUpO1xuIFx0XHRtZW1zZXQoc3RhdGUtXHUwMDNlcGFydHMsIDAsIHN0YXRlLVx1MDAzZWxpbWl0ICogc2l6ZW9mKHN0YXRlLVx1MDAzZXBhcnRzWzBdKSk7XG4gXHRcdHJlcyA9IGNoZWNrX3BhcnRbaSsrXShzdGF0ZSk7XG4gXHRcdGlmIChyZXMgXHUwMDNjIDApIHtcbkBAIC0yNDcsNiArMjU4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnBhcnRfYXR0cl9ncm91cHNbXSA9IHtcbiBcbiBzdGF0aWMgdm9pZCBwYXJ0X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbitcdGZ3bm9kZV9oYW5kbGVfcHV0KGRldl9md25vZGUoZGV2KSk7XG4gXHRwdXRfZGlzayhkZXZfdG9fYmRldihkZXYpLVx1MDAzZWJkX2Rpc2spO1xuIFx0YmRldl9kcm9wKGRldl90b19iZGV2KGRldikpO1xuIH1cbkBAIC0yNzcsNiArMjg5LDggQEAgdm9pZCBkcm9wX3BhcnRpdGlvbihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpwYXJ0KVxuIFx0eGFfZXJhc2UoXHUwMDI2cGFydC1cdTAwM2ViZF9kaXNrLVx1MDAzZXBhcnRfdGJsLCBiZGV2X3BhcnRubyhwYXJ0KSk7XG4gXHRrb2JqZWN0X3B1dChwYXJ0LVx1MDAzZWJkX2hvbGRlcl9kaXIpO1xuIFxuK1x0YmxrX252bWVtX2RlbChwYXJ0KTtcbitcbiBcdGRldmljZV9kZWwoXHUwMDI2cGFydC1cdTAwM2ViZF9kZXZpY2UpO1xuIFx0cHV0X2RldmljZShcdTAwMjZwYXJ0LVx1MDAzZWJkX2RldmljZSk7XG4gfVxuQEAgLTI5NCw3ICszMDgsOCBAQCBzdGF0aWMgY29uc3QgREVWSUNFX0FUVFIod2hvbGVfZGlzaywgMDQ0NCwgd2hvbGVfZGlza19zaG93LCBOVUxMKTtcbiAgKi9cbiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubyxcbiBcdFx0XHRcdHNlY3Rvcl90IHN0YXJ0LCBzZWN0b3JfdCBsZW4sIGludCBmbGFncyxcbi1cdFx0XHRcdHN0cnVjdCBwYXJ0aXRpb25fbWV0YV9pbmZvICppbmZvKVxuK1x0XHRcdFx0c3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm8sXG4rXHRcdFx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxuIHtcbiBcdGRldl90IGRldnQgPSBNS0RFVigwLCAwKTtcbiBcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBkaXNrX3RvX2RldihkaXNrKTtcbkBAIC0zNDMsNiArMzU4LDcgQEAgc3RhdGljIHN0cnVjdCBibG9ja19kZXZpY2UgKmFkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sXG4gXHRwZGV2LVx1MDAzZWNsYXNzID0gXHUwMDI2YmxvY2tfY2xhc3M7XG4gXHRwZGV2LVx1MDAzZXR5cGUgPSBcdTAwMjZwYXJ0X3R5cGU7XG4gXHRwZGV2LVx1MDAzZXBhcmVudCA9IGRkZXY7XG4rXHRkZXZpY2Vfc2V0X25vZGUocGRldiwgZndub2RlX2hhbmRsZV9nZXQoZndub2RlKSk7XG4gXG4gXHQvKiBpbiBjb25zZWN1dGl2ZSBtaW5vciByYW5nZT8gKi9cbiBcdGlmIChiZGV2X3BhcnRubyhiZGV2KSBcdTAwM2MgZGlzay1cdTAwM2VtaW5vcnMpIHtcbkBAIC0zOTIsNiArNDA4LDkgQEAgc3RhdGljIHN0cnVjdCBibG9ja19kZXZpY2UgKmFkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGludCBwYXJ0bm8sXG4gXHQvKiBzdXBwcmVzcyB1ZXZlbnQgaWYgdGhlIGRpc2sgc3VwcHJlc3NlcyBpdCAqL1xuIFx0aWYgKCFkZXZfZ2V0X3VldmVudF9zdXBwcmVzcyhkZGV2KSlcbiBcdFx0a29iamVjdF91ZXZlbnQoXHUwMDI2cGRldi1cdTAwM2Vrb2JqLCBLT0JKX0FERCk7XG4rXG4rXHRibGtfbnZtZW1fYWRkKGJkZXYpO1xuK1xuIFx0cmV0dXJuIGJkZXY7XG4gXG4gb3V0X2RlbDpcbkBAIC00NDksNyArNDY4LDcgQEAgaW50IGJkZXZfYWRkX3BhcnRpdGlvbihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgaW50IHBhcnRubywgc2VjdG9yX3Qgc3RhcnQsXG4gXHR9XG4gXG4gXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwYXJ0bm8sIHN0YXJ0LCBsZW5ndGgsXG4tXHRcdFx0QUREUEFSVF9GTEFHX05PTkUsIE5VTEwpO1xuK1x0XHRcdEFERFBBUlRfRkxBR19OT05FLCBOVUxMLCBOVUxMKTtcbiBcdHJldCA9IFBUUl9FUlJfT1JfWkVSTyhwYXJ0KTtcbiBvdXQ6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2ZGlzay1cdTAwM2VvcGVuX211dGV4KTtcbkBAIC01NjQsNyArNTgzLDcgQEAgc3RhdGljIGJvb2wgYmxrX2FkZF9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKmRpc2ssXG4gXHR9XG4gXG4gXHRwYXJ0ID0gYWRkX3BhcnRpdGlvbihkaXNrLCBwLCBmcm9tLCBzaXplLCBzdGF0ZS1cdTAwM2VwYXJ0c1twXS5mbGFncyxcbi1cdFx0XHQgICAgIFx1MDAyNnN0YXRlLVx1MDAzZXBhcnRzW3BdLmluZm8pO1xuK1x0XHRcdCAgICAgXHUwMDI2c3RhdGUtXHUwMDNlcGFydHNbcF0uaW5mbywgc3RhdGUtXHUwMDNlcGFydHNbcF0uZndub2RlKTtcbiBcdGlmIChJU19FUlIocGFydCkpIHtcbiBcdFx0aWYgKFBUUl9FUlIocGFydCkgIT0gLUVOWElPKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fRVJSIFwiICVzOiBwJWQgY291bGQgbm90IGJlIGFkZGVkOiAlcGVcXG5cIixcbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL29mLmMgYi9ibG9jay9wYXJ0aXRpb25zL29mLmNcbmluZGV4IDUzNjY0ZWEwNmI2NTQuLjRmYzdjODBjNDA3ZGUgMTAwNjQ0XG4tLS0gYS9ibG9jay9wYXJ0aXRpb25zL29mLmNcbisrKyBiL2Jsb2NrL3BhcnRpdGlvbnMvb2YuY1xuQEAgLTMsNiArMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYmxrZGV2LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tYWpvci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmcuaFx1MDAzZVxuICNpbmNsdWRlIFwiY2hlY2suaFwiXG4gXG5AQCAtNjIsNiArNjMsOCBAQCBzdGF0aWMgdm9pZCBhZGRfb2ZfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGludCBzbG90LFxuIFx0XHRwYXJ0bmFtZSA9IG9mX2dldF9wcm9wZXJ0eShucCwgXCJuYW1lXCIsIFx1MDAyNmxlbik7XG4gXHRzdHJzY3B5KGluZm8tXHUwMDNldm9sbmFtZSwgcGFydG5hbWUsIHNpemVvZihpbmZvLVx1MDAzZXZvbG5hbWUpKTtcbiBcbitcdHN0YXRlLVx1MDAzZXBhcnRzW3Nsb3RdLmZ3bm9kZSA9IGZ3bm9kZV9oYW5kbGVfZ2V0KG9mX2Z3bm9kZV9oYW5kbGUobnApKTtcbitcbiBcdHNlcV9idWZfcHJpbnRmKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCIoJXMpXCIsIGluZm8tXHUwMDNldm9sbmFtZSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cWNhLmMgYi9kcml2ZXJzL2JsdWV0b290aC9idHFjYS5jXG5pbmRleCAxMGM0OTZlYWVhMmMxLi4zYzZmMDIxYjc2MjE2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xuKysrIGIvZHJpdmVycy9ibHVldG9vdGgvYnRxY2EuY1xuQEAgLTcyMyw4ICs3MjMsMTEgQEAgc3RhdGljIGludCBxY2FfY2hlY2tfYmRhZGRyKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBjb25zdCBzdHJ1Y3QgcWNhX2Z3X2NvbmZpZyAqY29cbiBcdH1cbiBcbiBcdGJkYSA9IChzdHJ1Y3QgaGNpX3JwX3JlYWRfYmRfYWRkciAqKXNrYi1cdTAwM2VkYXRhO1xuLVx0aWYgKCFiYWNtcChcdTAwMjZiZGEtXHUwMDNlYmRhZGRyLCBcdTAwMjZjb25maWctXHUwMDNlYmRhZGRyKSlcbitcdGlmICghYmFjbXAoXHUwMDI2YmRhLVx1MDAzZWJkYWRkciwgXHUwMDI2Y29uZmlnLVx1MDAzZWJkYWRkcikpIHtcbiBcdFx0aGNpX3NldF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSk7XG4rXHRcdGhjaV9zZXRfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pO1xuK1x0XHRoY2lfc2V0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19CREFERFJfTlZNRU1fQkUpO1xuK1x0fVxuIFxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9sYXlvdXRzLmMgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuaW5kZXggYjkwNTg0ZTFiOTllYS4uZWZhNjMxY2U3MjgzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZW0vbGF5b3V0cy5jXG4rKysgYi9kcml2ZXJzL252bWVtL2xheW91dHMuY1xuQEAgLTE2Nyw3ICsxNjcsMTggQEAgc3RhdGljIGludCBudm1lbV9sYXlvdXRfYnVzX3BvcHVsYXRlKHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtLFxuIFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZfbnZtZW1fbGF5b3V0X2dldF9jb250YWluZXIoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0pXG4ge1xuLVx0cmV0dXJuIG9mX2dldF9jaGlsZF9ieV9uYW1lKG52bWVtLVx1MDAzZWRldi5vZl9ub2RlLCBcIm52bWVtLWxheW91dFwiKTtcbitcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4rXG4rXHQvKiBTZWFyY2ggZm9yIG52bWVtLWxheW91dCBjaGlsZCAqL1xuK1x0bnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShudm1lbS1cdTAwM2VkZXYub2Zfbm9kZSwgXCJudm1lbS1sYXlvdXRcIik7XG4rXHRpZiAobnApXG4rXHRcdHJldHVybiBucDtcbitcbitcdC8qIFRoZSBudm1lbSBvZl9ub2RlIGlzIGl0c2VsZiBhIGZpeGVkLWxheW91dCBub2RlICovXG4rXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnZtZW0tXHUwMDNlZGV2Lm9mX25vZGUsIFwiZml4ZWQtbGF5b3V0XCIpKVxuK1x0XHRyZXR1cm4gb2Zfbm9kZV9nZXQobnZtZW0tXHUwMDNlZGV2Lm9mX25vZGUpO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG9mX252bWVtX2xheW91dF9nZXRfY29udGFpbmVyKTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaFxuaW5kZXggODgwOGVlNzZlNzNjMC4uNmVkMTczYzY0OTAyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmhcbkBAIC0xNSw2ICsxNSw3IEBAXG4gc3RydWN0IGJpb19zZXQ7XG4gc3RydWN0IGJpbztcbiBzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkO1xuK3N0cnVjdCBudm1lbV9kZXZpY2U7XG4gc3RydWN0IHBhZ2U7XG4gc3RydWN0IGlvX2NvbnRleHQ7XG4gc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGU7XG5AQCAtNzMsNiArNzQsOSBAQCBzdHJ1Y3QgYmxvY2tfZGV2aWNlIHtcbiBcdGludFx0XHRcdGJkX3dyaXRlcnM7XG4gI2lmZGVmIENPTkZJR19TRUNVUklUWVxuIFx0dm9pZFx0XHRcdCpiZF9zZWN1cml0eTtcbisjZW5kaWZcbisjaWZkZWYgQ09ORklHX0JMS19OVk1FTVxuK1x0c3RydWN0IG52bWVtX2RldmljZVx0KmJkX252bWVtO1xuICNlbmRpZlxuIFx0LypcbiBcdCAqIGtlZXAgdGhpcyBvdXQtb2YtbGluZSBhcyBpdCdzIGJvdGggYmlnIGFuZCBub3QgbmVlZGVkIGluIHRoZSBmYXN0XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vZl9uZXQuaCBiL2luY2x1ZGUvbGludXgvb2ZfbmV0LmhcbmluZGV4IGQ4ODcxNWEwYjNhNTIuLjc4NTRiYTU1NWQ5YTUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L29mX25ldC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L29mX25ldC5oXG5AQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZTtcbiBleHRlcm4gaW50IG9mX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBwaHlfaW50ZXJmYWNlX3QgKmludGVyZmFjZSk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4gZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XG4raW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKTtcbiBpbnQgb2ZfZ2V0X2V0aGRldl9hZGRyZXNzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuIGV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqb2ZfZmluZF9uZXRfZGV2aWNlX2J5X25vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCk7XG4gI2Vsc2VcbkBAIC0zNCw2ICszNSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYylcbiBcdHJldHVybiAtRU5PREVWO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCxcbitcdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpXG4re1xuK1x0cmV0dXJuIC1FTk9ERVY7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHJldHVybiAtRU5PREVWO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaCBiL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxuaW5kZXggNTBmMGVlZjcxZmIxOS4uNzRmYTQwMjUwNDAxMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaFxuKysrIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oXG5AQCAtMTYxLDYgKzE2MSwyNCBAQCBlbnVtIHtcbiBcdCAqL1xuIFx0SENJX1FVSVJLX0JEQUREUl9QUk9QRVJUWV9CUk9LRU4sXG4gXG4rXHQvKiBXaGVuIHRoaXMgcXVpcmsgaXMgc2V0LCB0aGUgcHVibGljIEJsdWV0b290aCBhZGRyZXNzXG4rXHQgKiBpbml0aWFsbHkgcmVwb3J0ZWQgYnkgSENJIFJlYWQgQkQgQWRkcmVzcyBjb21tYW5kXG4rXHQgKiBpcyBjb25zaWRlcmVkIGludmFsaWQuIFRoZSBwdWJsaWMgQkQgQWRkcmVzcyBjYW4gYmVcbitcdCAqIHJldHJpZXZlZCB2aWEgYSAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbC5cbitcdCAqXG4rXHQgKiBUaGlzIHF1aXJrIGNhbiBiZSBzZXQgYmVmb3JlIGhjaV9yZWdpc3Rlcl9kZXYgaXMgY2FsbGVkIG9yXG4rXHQgKiBkdXJpbmcgdGhlIGhkZXYtXHUwMDNlc2V0dXAgdmVuZG9yIGNhbGxiYWNrLlxuK1x0ICovXG4rXHRIQ0lfUVVJUktfVVNFX0JEQUREUl9OVk1FTSxcbitcbitcdC8qIFdoZW4gdGhpcyBxdWlyayBpcyBzZXQsIHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3MgcHJvdmlkZWQgYnlcbitcdCAqIHRoZSAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gaXMgc3RvcmVkIGluIGJpZy1lbmRpYW4gb3JkZXIuXG4rXHQgKlxuK1x0ICogVGhpcyBxdWlyayBjYW4gYmUgc2V0IGJlZm9yZSBoY2lfcmVnaXN0ZXJfZGV2IGlzIGNhbGxlZCBvclxuK1x0ICogZHVyaW5nIHRoZSBoZGV2LVx1MDAzZXNldHVwIHZlbmRvciBjYWxsYmFjay5cbitcdCAqL1xuK1x0SENJX1FVSVJLX0JEQUREUl9OVk1FTV9CRSxcbitcbiBcdC8qIFdoZW4gdGhpcyBxdWlyayBpcyBzZXQsIHRoZSBkdXBsaWNhdGUgZmlsdGVyaW5nIGR1cmluZ1xuIFx0ICogc2Nhbm5pbmcgaXMgYmFzZWQgb24gQmx1ZXRvb3RoIGRldmljZXMgYWRkcmVzc2VzLiBUbyBhbGxvd1xuIFx0ICogUlNTSSBiYXNlZCB1cGRhdGVzLCByZXN0YXJ0IHNjYW5uaW5nIGlmIG5lZWRlZC5cbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbmluZGV4IGM4ZDE0MTI4YzM2M2QuLjgxMzJhMTQ4N2FjMjUgMTAwNjQ0XG4tLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmNcbisrKyBiL25ldC9ibHVldG9vdGgvaGNpX3N5bmMuY1xuQEAgLTcsNiArNyw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2JsdWV0b290aC9ibHVldG9vdGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ibHVldG9vdGgvaGNpX2NvcmUuaFx1MDAzZVxuQEAgLTM3MDEsNiArMzcwMiwzOSBAQCBpbnQgaGNpX3Bvd2VyZWRfdXBkYXRlX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyoqXG4rICogaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtIC0gR2V0IHRoZSBCbHVldG9vdGggRGV2aWNlIEFkZHJlc3NcbisgKlx0XHRcdFx0ICAgIChCRF9BRERSKSBmb3IgYSBIQ0kgZGV2aWNlIGZyb21cbisgKlx0XHRcdFx0ICAgIGFuIE5WTUVNIGNlbGwuXG4rICogQGhkZXY6XHRUaGUgSENJIGRldmljZVxuKyAqXG4rICogU2VhcmNoIGZvciAnbG9jYWwtYmQtYWRkcmVzcycgTlZNRU0gY2VsbCBpbiB0aGUgZGV2aWNlIGZpcm13YXJlIG5vZGUuXG4rICpcbisgKiBBbGwtemVybyBCRCBhZGRyZXNzZXMgYXJlIHJlamVjdGVkICh1bnByb3Zpc2lvbmVkKS5cbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbisgKi9cbitzdGF0aWMgaW50IGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShzdHJ1Y3QgaGNpX2RldiAqaGRldilcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2X29mX25vZGUoaGRldi1cdTAwM2VkZXYucGFyZW50KTtcbitcdHU4IGJhW3NpemVvZihiZGFkZHJfdCldO1xuK1x0aW50IGVycjtcbitcbitcdGlmICghbnApXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0ZXJyID0gb2ZfZ2V0X252bWVtX2V1aTQ4KG5wLCBcImxvY2FsLWJkLWFkZHJlc3NcIiwgYmEpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGlmIChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfQkRBRERSX05WTUVNX0JFKSlcbitcdFx0YmFzd2FwKFx1MDAyNmhkZXYtXHUwMDNlcHVibGljX2FkZHIsIChiZGFkZHJfdCAqKWJhKTtcbitcdGVsc2VcbitcdFx0YmFjcHkoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgKGJkYWRkcl90ICopYmEpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIC8qKlxuICAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9wcm9wZXJ0eSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXG4gICpcdFx0XHRcdCAgICAgICAoQkRfQUREUikgZm9yIGEgSENJIGRldmljZSBmcm9tXG5AQCAtNTE4MCwxMiArNTIxNCwxNyBAQCBzdGF0aWMgaW50IGhjaV9kZXZfc2V0dXBfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcbiBcdCAqIGl0cyBzZXR1cCBjYWxsYmFjay5cbiBcdCAqL1xuIFx0aW52YWxpZF9iZGFkZHIgPSBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfSU5WQUxJRF9CREFERFIpIHx8XG4tXHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX1BST1BFUlRZKTtcbitcdFx0XHQgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfUFJPUEVSVFkpIHx8XG4rXHRcdFx0IGhjaV90ZXN0X3F1aXJrKGhkZXYsIEhDSV9RVUlSS19VU0VfQkRBRERSX05WTUVNKTtcbiBcdGlmICghcmV0KSB7XG4gXHRcdGlmIChoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdFx0aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX3Byb3BlcnR5KGhkZXYpO1xuIFxuK1x0XHRpZiAoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIWJhY21wKFx1MDAyNmhkZXYtXHUwMDNlcHVibGljX2FkZHIsIEJEQUREUl9BTlkpKVxuK1x0XHRcdGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbShoZGV2KTtcbitcbiBcdFx0aWYgKGludmFsaWRfYmRhZGRyIFx1MDAyNlx1MDAyNiBiYWNtcChcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyLCBCREFERFJfQU5ZKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGhkZXYtXHUwMDNlc2V0X2JkYWRkcikge1xuIFx0XHRcdHJldCA9IGhkZXYtXHUwMDNlc2V0X2JkYWRkcihoZGV2LCBcdTAwMjZoZGV2LVx1MDAzZXB1YmxpY19hZGRyKTtcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL21nbXQuYyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5pbmRleCAxNjdkNzVlMzQ1MjY2Li5hMzlkNzYzYTQyMjVhIDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9tZ210LmNcbisrKyBiL25ldC9ibHVldG9vdGgvbWdtdC5jXG5AQCAtNjE0LDcgKzYxNCw4IEBAIHN0YXRpYyBib29sIGlzX2NvbmZpZ3VyZWQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fFxuLVx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcbitcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC02MzAsNyArNjMxLDggQEAgc3RhdGljIF9fbGUzMiBnZXRfbWlzc2luZ19vcHRpb25zKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuIFx0XHRvcHRpb25zIHw9IE1HTVRfT1BUSU9OX0VYVEVSTkFMX0NPTkZJRztcbiBcbiBcdGlmICgoaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX0lOVkFMSURfQkRBRERSKSB8fFxuLVx0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICBoY2lfdGVzdF9xdWlyayhoZGV2LCBIQ0lfUVVJUktfVVNFX0JEQUREUl9QUk9QRVJUWSkgfHxcbitcdCAgICAgaGNpX3Rlc3RfcXVpcmsoaGRldiwgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU0pKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhYmFjbXAoXHUwMDI2aGRldi1cdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXG4gXHRcdG9wdGlvbnMgfD0gTUdNVF9PUFRJT05fUFVCTElDX0FERFJFU1M7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvb2ZfbmV0LmMgYi9uZXQvY29yZS9vZl9uZXQuY1xuaW5kZXggOTNlYTQyNWI5MjQ4YS4uOTk5Y2EwZTkyNThjNCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL29mX25ldC5jXG4rKysgYi9uZXQvY29yZS9vZl9uZXQuY1xuQEAgLTYxLDkgKzYxLDcgQEAgc3RhdGljIGludCBvZl9nZXRfbWFjX2FkZHIoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqbmFtZSwgdTggKmFkZHIpXG4gaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcbiB7XG4gXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShucCk7XG4tXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcbi1cdGNvbnN0IHZvaWQgKm1hYztcbi1cdHNpemVfdCBsZW47XG4rXHR1OCBtYWNbRVRIX0FMRU5dIF9fYWxpZ25lZChzaXplb2YodTE2KSk7XG4gXHRpbnQgcmV0O1xuIFxuIFx0LyogVHJ5IGxvb2t1cCBieSBkZXZpY2UgZmlyc3QsIHRoZXJlIG1pZ2h0IGJlIGEgbnZtZW1fY2VsbF9sb29rdXBcbkBAIC03NSwyNyArNzMsNTcgQEAgaW50IG9mX2dldF9tYWNfYWRkcmVzc19udm1lbShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1OCAqYWRkcilcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgXCJtYWMtYWRkcmVzc1wiKTtcbitcdHJldCA9IG9mX2dldF9udm1lbV9ldWk0OChucCwgXCJtYWMtYWRkcmVzc1wiLCBtYWMpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdG1lbWNweShhZGRyLCBtYWMsIEVUSF9BTEVOKTtcbitcdHJldHVybiAwO1xuK31cbitFWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XG4rXG4rLyoqXG4rICogb2ZfZ2V0X252bWVtX2V1aTQ4IC0gUmVhZCBhIDYtYnl0ZSBFVUktNDggYWRkcmVzcyBmcm9tIGEgbmFtZWQgTlZNRU0gY2VsbC5cbisgKiBAbnA6XHRcdERldmljZSBub2RlIHRvIGxvb2sgdXAgdGhlIE5WTUVNIGNlbGwgZnJvbS5cbisgKiBAY2VsbF9uYW1lOlx0TmFtZSBvZiB0aGUgTlZNRU0gY2VsbCAoZS5nLiBcIm1hYy1hZGRyZXNzXCIsIFwibG9jYWwtYmQtYWRkcmVzc1wiKS5cbisgKiBAYWRkcjpcdE91dHB1dCBidWZmZXIgZm9yIHRoZSA2LWJ5dGUgYWRkcmVzcy5cbisgKlxuKyAqIFJlYWRzIHRoZSBuYW1lZCBOVk1FTSBjZWxsIGFuZCB2YWxpZGF0ZXMgdGhhdCBpdCBjb250YWlucyBhIG5vbi16ZXJvIDYtYnl0ZVxuKyAqIGFkZHJlc3MuIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxuKyAqL1xuK2ludCBvZl9nZXRfbnZtZW1fZXVpNDgoc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqY2VsbF9uYW1lLCB1OCAqYWRkcilcbit7XG4rXHRzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbDtcbitcdGNvbnN0IHZvaWQgKmV1aTQ4O1xuK1x0c2l6ZV90IGxlbjtcbitcbitcdGNlbGwgPSBvZl9udm1lbV9jZWxsX2dldChucCwgY2VsbF9uYW1lKTtcbiBcdGlmIChJU19FUlIoY2VsbCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNlbGwpO1xuIFxuLVx0bWFjID0gbnZtZW1fY2VsbF9yZWFkKGNlbGwsIFx1MDAyNmxlbik7XG4rXHRldWk0OCA9IG52bWVtX2NlbGxfcmVhZChjZWxsLCBcdTAwMjZsZW4pO1xuIFx0bnZtZW1fY2VsbF9wdXQoY2VsbCk7XG4gXG4tXHRpZiAoSVNfRVJSKG1hYykpXG4tXHRcdHJldHVybiBQVFJfRVJSKG1hYyk7XG4rXHRpZiAoSVNfRVJSKGV1aTQ4KSlcbitcdFx0cmV0dXJuIFBUUl9FUlIoZXVpNDgpO1xuIFxuLVx0aWYgKGxlbiAhPSBFVEhfQUxFTiB8fCAhaXNfdmFsaWRfZXRoZXJfYWRkcihtYWMpKSB7XG4tXHRcdGtmcmVlKG1hYyk7XG4rXHQvKiBSZWplY3QgdW5wcm9ncmFtbWVkIGNlbGxzIHRoYXQgcmVhZCBhcyBhbGwtemVyb2VzIG9yIGFsbC1vbmVzICovXG4rXHRpZiAobGVuICE9IEVUSF9BTEVOIHx8XG4rXHQgICAgIW1lbWNocl9pbnYoZXVpNDgsIDB4MDAsIEVUSF9BTEVOKSB8fFxuK1x0ICAgICFtZW1jaHJfaW52KGV1aTQ4LCAweGZmLCBFVEhfQUxFTikpIHtcbitcdFx0a2ZyZWUoZXVpNDgpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdG1lbWNweShhZGRyLCBtYWMsIEVUSF9BTEVOKTtcbi1cdGtmcmVlKG1hYyk7XG4rXHRtZW1jcHkoYWRkciwgZXVpNDgsIEVUSF9BTEVOKTtcbitcdGtmcmVlKGV1aTQ4KTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbi1FWFBPUlRfU1lNQk9MKG9mX2dldF9tYWNfYWRkcmVzc19udm1lbSk7XG4rRVhQT1JUX1NZTUJPTF9HUEwob2ZfZ2V0X252bWVtX2V1aTQ4KTtcbiBcbiAvKipcbiAgKiBvZl9nZXRfbWFjX2FkZHJlc3MoKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTQ6NDEuNjgzNjYxNjMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3NTM3NTU1NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IE5WTUVNIGFuZCBCbG9jay9OZXR3b3JrIEludGVyZmFjZSBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGluZGljYXRlcyB0aGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2VzIHBvdGVudGlhbCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0ICpkZWZpbml0ZWx5KiB3YXJyYW50IGZ1enppbmcuIFdlIGhhdmUgc2V2ZXJhbCBhcmVhcyBoZXJlLCBzbyBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0IG9mIGVhY2guXG5cbkZpcnN0LCB0aGVyZSBhcmUgZG9jdW1lbnRhdGlvbiBhbmQgRGV2aWNlIFRyZWUgY2hhbmdlcyAoZGV2aWNldHJlZSBiaW5kaW5ncyBhbmQgcXJiMjIxMC1hcmR1aW5vLWltb2xhLmR0cykuIFRoZXNlIGFyZSB1bmxpa2VseSB0byBiZSBmdXp6IHRhcmdldHMgZGlyZWN0bHksIHRob3VnaCBpbmNvcnJlY3QgZG9jdW1lbnRhdGlvbiBjYW4gbGVhZCB0byBpbmRpcmVjdCBpc3N1ZXMuXG5cbkhvd2V2ZXIsIHRoZSBtZWF0IG9mIHRoZSBzZXJpZXMgaXMgbW9yZSBpbnRlcmVzdGluZy4gV2UncmUgbG9va2luZyBhdCBhIG5ldyBOVk1FTSBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBibG9jayBsYXllciAoQ09ORklHX0JMS19OVk1FTSkuIFRoaXMgaW52b2x2ZXMgYWRkaW5nIGBibGstbnZtZW0uY2AgYW5kIG1vZGlmeWluZyBleGlzdGluZyBibG9jayBsYXllciBmaWxlcyAoYGdlbmhkLmNgLCBgY29yZS5jYCwgYG9mLmNgKSB0byByZWdpc3RlciBOVk1FTSBkZXZpY2VzIGZvciBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zLiBUaGUgQmx1ZXRvb3RoIGNoYW5nZXMgYXJlIGFsc28gcmVsZXZhbnQgYXMgaXQgc2V0cyBhIHF1aXJrIChgSENJX1FVSVJLX1VTRV9CREFERFJfTlZNRU1gKSBhbmQgbW9kaWZpZXMgQmx1ZXRvb3RoIGNvZGUgKGBidHFjYS5jYCwgYGhjaV9zeW5jLmNgLCBgbWdtdC5jYCkgdG8gcmVhZCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzIChCRF9BRERSKSBmcm9tIE5WTUVNLiBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIE5WTUVNIGxheW91dCAoYGxheW91dHMuY2ApIHRvIHN1cHBvcnQgZml4ZWQtbGF5b3V0IG5vZGVzIGFuZCwgZmluYWxseSwgY2hhbmdlcyB0byBOZXQgY29yZSAoYG9mX25ldC5jYCkgdG8gYWRkIGBvZl9nZXRfbnZtZW1fZXVpNDhgIGFuZCByZWZhY3RvciBgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtYC5cblxuQ3J1Y2lhbGx5LCB0aGUgYmxvY2sgbGF5ZXIgY2hhbmdlcyBhbmQgdGhlIG5ldCBjb3JlIGNoYW5nZXMsIHNwZWNpZmljYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCBgb2ZfZ2V0X252bWVtX2V1aTQ4YCBhcmUgZGlyZWN0bHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLiBUaGUgYmxvY2sgbGF5ZXIgY29kZSBpcyByZWFjaGFibGUgd2hlbiBhIGJsb2NrIGRldmljZSBpcyBhZGRlZCwgY29uZGl0aW9uYWwgb24gYENPTkZJR19CTEtfTlZNRU1gLiBUaGUgQmx1ZXRvb3RoIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gYSBCbHVldG9vdGggZGV2aWNlIGlzIGluaXRpYWxpemVkLCBpZiB0aGUgcXVpcmsgaXMgc2V0LlxuXG5MZXQncyBkaWcgaW4uIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYENPTkZJR19CTEtfTlZNRU1gIGNhbiBiZSBlbmFibGVkIG9yIGlzIGVuYWJsZWQuIEl0IGRlcGVuZHMgb24gYE9GYCBhbmQgYE5WTUVNYCwgd2hpY2ggYXJlIGxpa2VseSBlbmFibGVkIG9uIGFueSBtb2Rlcm4gc3lzdGVtLiBGdXJ0aGVyLCBgYmxrX252bWVtX2FkZGAgaXMgY2FsbGVkIGZyb20gYGFkZF9kaXNrX2ZpbmFsYCBhbmQgYGFkZF9wYXJ0aXRpb25gLCBtZWFuaW5nIGl0IGlzIGRpcmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIGJsb2NrIGRldmljZSBvcGVyYXRpb25zLiBBbmQgYG9mX2dldF9udm1lbV9ldWk0OGAgaXMgY2FsbGVkIGZyb20gYG9mX2dldF9tYWNfYWRkcmVzc19udm1lbWAgYW5kIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBzbyB3ZSBjYW4gcmVhY2ggdGhpcyB3aXRoIGEgQlQgZGV2aWNlLlxuXG5TbywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5ISBXZSdyZSBhZGRpbmcgYSAqbmV3KiBtZXRob2QgdG8gZXhwb3NlIGJsb2NrIGRldmljZXMgYXMgTlZNRU0gcHJvdmlkZXJzLCBhbmQgdGhpcyBpbnZvbHZlcyByZWFkaW5nIE1BQy9CRCBhZGRyZXNzZXMgZnJvbSBOVk1FTS4gVGhlIGJsb2NrIGRldmljZSBOVk1FTSBwcm92aWRlciByZWFkcyBmcm9tIHRoZSBibG9jayBkZXZpY2UgdXNpbmcgYGtlcm5lbF9yZWFkYCBvbiBhIGJsb2NrIGRldmljZSBmaWxlLiBXYWl0LCBldmVuIGJldHRlciwgYGJsa19udm1lbV9yZWdfcmVhZGAgb3BlbnMgdGhlIGJsb2NrIGRldmljZSAqZXhjbHVzaXZlbHkqIGFuZCByZWFkcyBmcm9tIGl0LCB3aGljaCBtZWFucyB3ZSBjYW4gdHJpZ2dlciB0aGlzIHJlYWQgdGhyb3VnaCB0aGUgTlZNRU0gc3lzZnMgaW50ZXJmYWNlLCBvciBpbmRpcmVjdGx5IHRocm91Z2ggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgdGhhdCBjb25zdW1lIE5WTUVNLiBUaGlzIGNvdWxkIHJldmVhbCBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMuXG5cblRoZXJlZm9yZSwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczpcbiogICBgYmxrX252bWVtX3JlZ19yZWFkYFxuKiAgIGBibGtfbnZtZW1fYWRkYFxuKiAgIGBibGtfbnZtZW1fZGVsYFxuKiAgIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gXG4qICAgYG9mX2dldF9udm1lbV9ldWk0OGBcblxuRm9yIHRoZSBjb25maWd1cmF0aW9uLCBJJ2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgdGhlc2U6XG4qICAgYEJMS19OVk1FTWBcbiogICBgTlZNRU1gXG4qICAgYE9GYFxuXG5Ob3csIGxldCdzIHZlcmlmeSB0aG9zZSBjb25maWcgb3B0aW9ucyBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGhvbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjQ3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6MDQuNDM3NDIwMDc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mjg4NTU1NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19OVk1FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9LY29uZmlnPTIwMj1jb25maWcgQkxLX0lOTElORV9FTkNSWVBUSU9OX0ZBTExCQUNLXFxuLS1cXG5ibG9jay9LY29uZmlnLTIxMS1cXG5ibG9jay9LY29uZmlnOjIxMjpjb25maWcgQkxLX05WTUVNXFxuYmxvY2svS2NvbmZpZy0yMTMtXFx0Ym9vbCBcXFwiQmxvY2sgZGV2aWNlIE5WTUVNIHByb3ZpZGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTowNi4xNjYyODAzODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUzNzkxODgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBOb24tVm9sYXRpbGUgTWVtb3J5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgQkxLX05WTUVNYCwgYE5WTUVNYCwgYW5kIGBPRmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldhaXQsIGBPRmAuLi50aGF0J3MgT3BlbiBGaXJtd2FyZSwgcmlnaHQ/XCIgVGhhdCB0eXBpY2FsbHkgc2hvd3MgdXAgaW4gQVJNIG9yIFBvd2VyUEMgc3lzdGVtcywgdXN1YWxseSBjb3VwbGVkIHdpdGggRGV2aWNlIFRyZWUuIEkgcmVtZW1iZXIgdGhlcmUncyBhIHBvc3NpYmlsaXR5IHRvIGVuYWJsZSBpdCBvbiB4ODYsIG1heWJlIHRocm91Z2ggYE9GX1VOSVRURVNUYCBvciBzb21ldGhpbmcgbGlrZSB0aGF0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBBY3R1YWxseSwgbGV0IG1lIGNsYXJpZnksIGBPRmAgY29ycmVzcG9uZHMgdG8gYENPTkZJR19PRmAuXG5cbkp1c3QgdG8gY29uZmlybSwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBgb2ZfZ2V0X252bWVtX2V1aTQ4YCBpbiB0aGUgYG5ldC9jb3JlL29mX25ldC5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgbW9yZSBkaXJlY3QgdW5kZXJzdGFuZGluZyBvZiBob3cgT3BlbiBGaXJtd2FyZSBpcyByZWxhdGVkIHRvIG5vbi12b2xhdGlsZSBtZW1vcnkgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMzMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNToxOC43MDQyMDEyNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MDc2NzQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgb2ZfZ2V0X252bWVtX2V1aTQ4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvb2ZfbmV0Lmg9MTc9ZXh0ZXJuIGludCBvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0oc3RydWN0IGRldmljZV9ub2RlICpucCwgdTggKm1hYyk7XFxuaW5jbHVkZS9saW51eC9vZl9uZXQuaDoxODppbnQgb2ZfZ2V0X252bWVtX2V1aTQ4KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGNvbnN0IGNoYXIgKmNlbGxfbmFtZSwgdTggKmFkZHIpO1xcbmluY2x1ZGUvbGludXgvb2ZfbmV0LmgtMTktaW50IG9mX2dldF9ldGhkZXZfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbmV0Lmg9MzM9c3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X21hY19hZGRyZXNzX252bWVtKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIHU4ICptYWMpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX25ldC5oLTM3LVxcbmluY2x1ZGUvbGludXgvb2ZfbmV0Lmg6Mzg6c3RhdGljIGlubGluZSBpbnQgb2ZfZ2V0X252bWVtX2V1aTQ4KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuaW5jbHVkZS9saW51eC9vZl9uZXQuaC0zOS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxcbi0tXFxubmV0L2NvcmUvb2ZfbmV0LmM9ODY9RVhQT1JUX1NZTUJPTChvZl9nZXRfbWFjX2FkZHJlc3NfbnZtZW0pO1xcbi0tXFxubmV0L2NvcmUvb2ZfbmV0LmMtOTYtICovXFxubmV0L2NvcmUvb2ZfbmV0LmM6OTc6aW50IG9mX2dldF9udm1lbV9ldWk0OChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBjaGFyICpjZWxsX25hbWUsIHU4ICphZGRyKVxcbm5ldC9jb3JlL29mX25ldC5jLTk4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6MjAuNDg0OTc2Nzk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxOTgxMDEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgY29kZSBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgYmxrX252bWVtX3JlZ19yZWFkYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIHRoZSBmdW5jdGlvbiBuYW1lLCBgYmxrX252bWVtX3JlZ19yZWFkYC4gUmlnaHQsIHRoYXQncyB0aGUgb25lIHdlIHVzZSBmb3IgcmVhZGluZyB0aG9zZSBub24tdm9sYXRpbGUgbWVtb3J5IHJlZ2lzdGVycyB3aXRoaW4gdGhlIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0uIEknbSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIG15IHVuZGVyc3RhbmRpbmc6IEl0J3MgbGlrZWx5IGhhbmRsaW5nIHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb24sIGFic3RyYWN0aW5nIGF3YXkgc29tZSBvZiB0aGUgaGFyZHdhcmUgZGV0YWlscyBmb3IgdGhlIHVwcGVyIGxheWVycy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGl0cyByb2xlIGluIHRoZSBjb21wbGV0ZSB3b3JrZmxvdyBhbmQgZG91YmxlIGNoZWNrIGl0cyBleGFjdCBwdXJwb3NlIGluIGNvbnRleHQuIExldCdzIHNlZSBob3cgaXTigJlzIGltcGxlbWVudGVkIGFuZCB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZC4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIHRoZSByZWFkaW5nIGZyb20gYSBub24tdm9sYXRpbGUgbWVtb3J5IHJlZ2lvbiwgd2hhdCBlcnJvciBjaGVja3MgYXJlIGltcGxlbWVudGVkLCBhbmQgaG93IGl0IHJlcG9ydHMgcG90ZW50aWFsIGlzc3Vlcy4gSXQncyBhIGNyaXRpY2FsIHBpZWNlLCBhbmQgSSBuZWVkIHRvIGJlIGNvbXBsZXRlbHkgY2xlYXIgb24gaXRzIGJlaGF2aW9yIGJlZm9yZSBJIGNvbnRpbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDAxMiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjI0LjcwNDc4OTk2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjAwMzU5NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa19udm1lbV9yZWdfcmVhZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstbnZtZW0uYy0yNS1cXG5ibG9jay9ibGstbnZtZW0uYzoyNjpzdGF0aWMgaW50IGJsa19udm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgZnJvbSxcXG5ibG9jay9ibGstbnZtZW0uYy0yNy1cXHRcXHRcXHQgICAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcylcXG4tLVxcbmJsb2NrL2Jsay1udm1lbS5jLTM2LVxcdFxcdFxcdFxcdFxcdCAgQkxLX09QRU5fUkVBRCB8IEJMS19PUEVOX0VYQ0wsXFxuYmxvY2svYmxrLW52bWVtLmM6Mzc6XFx0XFx0XFx0XFx0XFx0ICBibGtfbnZtZW1fcmVnX3JlYWQsIE5VTEwpO1xcbmJsb2NrL2Jsay1udm1lbS5jLTM4LVxcdGlmIChJU19FUlIoYmRldl9maWxlKSlcXG4tLVxcbmJsb2NrL2Jsay1udm1lbS5jPTU2PWludCBibGtfbnZtZW1fYWRkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpXFxuLS1cXG5ibG9jay9ibGstbnZtZW0uYy05My1cXHRjb25maWcucHJpdiA9IGJkZXY7XFxuYmxvY2svYmxrLW52bWVtLmM6OTQ6XFx0Y29uZmlnLnJlZ19yZWFkID0gYmxrX252bWVtX3JlZ19yZWFkO1xcbmJsb2NrL2Jsay1udm1lbS5jLTk1LVxcdGNvbmZpZy5zaXplID0gYmRldl9ucl9ieXRlcyhiZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6MjYuMzA1MTU2MjE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQxMDExMjYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLZXkgRnVuY3Rpb25zIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29yZSBjaGFuZ2VzIGFuZCBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYGJsa19udm1lbV9yZWdfcmVhZGAsIGBibGtfbnZtZW1fYWRkYCwgYGJsa19udm1lbV9kZWxgLCBgaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtYCwgYW5kIGBvZl9nZXRfbnZtZW1fZXVpNDhgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkcml2aW5nIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSB0aWVkIGludG8gTlZNZSBtZW1vcnkuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9ucy4gYEJMS19OVk1FTWAgaXMgb2J2aW91c2x5IHRoZSBtb3N0IGltcG9ydGFudCBvbmUgaGVyZTsgaXQncyB0aGUgY29yZSBlbmFibGVyIG9mIHRoaXMgZW50aXJlIGZlYXR1cmUuIFRoZW4gd2UgaGF2ZSBibHVldG9vdGguIE15IGluaXRpYWwgdGhvdWdodCB3YXMgYEJUX0hDSVVBUlRfUUNBYCBiZWNhdXNlIEkgc2F3IGBidHFjYS5jYCBtZW50aW9uZWQuIEJ1dCwgdGhlIHF1aXJrIGhhbmRsaW5nIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGNvcmUgYmx1ZXRvb3RoIGNvZGUsIG1lYW5pbmcganVzdCBgQlRgIHNob3VsZCBjb3ZlciBjb3JlIGZ1bmN0aW9uYWxpdHkuIEhvd2V2ZXIsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGUgcXVpcmsgKmlzKiBzZXQgd2l0aGluIGBidHFjYS5jYCwgYW5kIHRoYXQgYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAgaXMgaW4gYGhjaV9zeW5jLmNgIHdoaWNoIGlzIGNvcmUgYmx1ZXRvb3RoLiBTbywgaXQgbWlnaHQgYmUgdGhhdCBgQlRfUUNBYCBvciBldmVuIGBCVF9IQ0lVQVJUX1FDQWAgYXJlIG5lY2Vzc2FyeSB0byBnZXQgdGhlIHF1aXJrIGFjdGl2YXRlZC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBVbHRpbWF0ZWx5LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyBpbiBgYnRxY2EuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTQxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjM0LjcxNTI3MTQ3NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0ODQ1NjQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlRfSENJVUFSVF9RQ0FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibHVldG9vdGgvS2NvbmZpZz0yMjc9Y29uZmlnIEJUX0hDSVVBUlRfUlRMXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnLTI0MC1cXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnOjI0MTpjb25maWcgQlRfSENJVUFSVF9RQ0FcXG5kcml2ZXJzL2JsdWV0b290aC9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJRdWFsY29tbSBBdGhlcm9zIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjM2LjM2MzczNTk1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjY1NjcxMzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEJsdWV0b290aCBIQ0kgSW5pdGlhbGl6YXRpb24gd2l0aCBOVk1FTSBhbmQgT0YqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIG1ha2Ugc3VyZSB0aGUgQmx1ZXRvb3RoIEhDSSBpbml0aWFsaXphdGlvbiBpcyBjb3JyZWN0bHkgaGFuZGxlZCwgd2hpY2ggbWVhbnMgSSBhYnNvbHV0ZWx5ICptdXN0KiBhY2NvdW50IGZvciBgQkxLX05WTUVNYCBhbmQgYEJUX0hDSVVBUlRfUUNBYCwgb3IganVzdCBgQlRgIGluIGdlbmVyYWwsIGR1cmluZyB0aGlzIHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIEkgYWxzbyBrbm93IHRoYXQgYE9GYCBpcyBlc3NlbnRpYWwgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggYEJMS19OVk1FTWAuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGUgQmx1ZXRvb3RoIGRldmljZSdzIEJEIGFkZHJlc3MgaXMgcmV0cmlldmVkIGZyb20gTlYgbWVtb3J5LiBUbyBkbyB0aGlzLCBJIHdpbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uIGBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW1gLCBzcGVjaWZpY2FsbHkgbG9va2luZyBpbiBgbmV0L2JsdWV0b290aC9oY2lfc3luYy5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgbG9naWMgdGhlcmUgcHJvcGVybHkgaW50ZWdyYXRlcyB3aXRoIGJvdGggdGhlIE5WTUVNIGhhbmRsaW5nIGFuZCBhbnkgcXVpcmtzIHJlbGF0ZWQgdG8gUUNBIGJhc2VkIFVBUlQgaW1wbGVtZW50YXRpb25zIHRoYXQgbWlnaHQgYmUgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyMDcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTo0Mi4wMjk0MTAwNTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzE5NTQxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYz0zNjQ3PWludCBoY2lfcG93ZXJlZF91cGRhdGVfc3luYyhzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy0zNzA1LS8qKlxcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYzozNzA2OiAqIGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbSAtIEdldCB0aGUgQmx1ZXRvb3RoIERldmljZSBBZGRyZXNzXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTM3MDctICpcXHRcXHRcXHRcXHQgICAgKEJEX0FERFIpIGZvciBhIEhDSSBkZXZpY2UgZnJvbVxcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTM3MTYtICovXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjM3MTc6c3RhdGljIGludCBoY2lfZGV2X2dldF9iZF9hZGRyX2Zyb21fbnZtZW0oc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jLTM3MTgte1xcbi0tXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jPTUxOTA9c3RhdGljIGludCBoY2lfZGV2X3NldHVwX3N5bmMoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zeW5jLmMtNTIyNS1cXHRcXHQgICAgIWJhY21wKFxcdTAwMjZoZGV2LVxcdTAwM2VwdWJsaWNfYWRkciwgQkRBRERSX0FOWSkpXFxubmV0L2JsdWV0b290aC9oY2lfc3luYy5jOjUyMjY6XFx0XFx0XFx0aGNpX2Rldl9nZXRfYmRfYWRkcl9mcm9tX252bWVtKGhkZXYpO1xcbm5ldC9ibHVldG9vdGgvaGNpX3N5bmMuYy01MjI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTo0My42MDEzNzA0MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNzA4MjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIERldmljZSBOVk1FTSBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBjb29sIG5ldyBmdW5jdGlvbmFsaXR5OiBtYWtpbmcgYmxvY2sgZGV2aWNlcyBhY2Nlc3NpYmxlIGFzIE5WTUVNIHByb3ZpZGVycy4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGFscmVhZHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHN0YXJ0LiBUaGUgY29yZSBpZGVhIHNlZW1zIHRvIGJlIHJlYWRpbmcgTUFDL0JEIGFkZHJlc3NlcyBkaXJlY3RseSBmcm9tIHRoZSBOVk1FTS5cblxuTXkgZm9jdXMgaXMgbmF0dXJhbGx5IGRyYXduIHRvIHRoZXNlIHN5bWJvbHM6IGBibGtfbnZtZW1fcmVnX3JlYWRgLCBgYmxrX252bWVtX2FkZGAsIGBibGtfbnZtZW1fZGVsYCwgYGhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbWAsIGFuZCBgb2ZfZ2V0X252bWVtX2V1aTQ4YC4gVGhleSBwcmV0dHkgbXVjaCBzcGVsbCBvdXQgdGhlIGltcGxlbWVudGF0aW9uOiByZWFkaW5nLCBhZGRpbmcsIGRlbGV0aW5nLCBnZXR0aW5nIEJEIGFkZHJlc3NlcywgYW5kIHJldHJpZXZpbmcgRVVJNDggZnJvbSB0aGUgZGV2aWNlIHRyZWUsIHJlc3BlY3RpdmVseS4gSXQgZ2l2ZXMgbWUgYSBnb29kIGlkZWEgb2YgdGhlIGNvZGUncyBoaWdoLWxldmVsIGZsb3cuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnczogYEJMS19OVk1FTWAsIGBPRmAsIGFuZCBgTlZNRU1gLiBJJ20gZ3Vlc3NpbmcgYEJMS19OVk1FTWAgaXMgdGhlIHByaW1hcnkgZmVhdHVyZSBmbGFnIGZvciB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LiBgT0ZgLCBvZiBjb3Vyc2UsIGlzIERldmljZSBUcmVlIHJlbGF0ZWQuIFRoZW4gdGhlcmUncyBgTlZNRU1gLCBidXQgd2FpdCBhIHNlY29uZC4uLiBgTlZNRU1gIGlzIGEgKnN1YnN5c3RlbSohIEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgQ09ORklHX05WTUVNYCBpcyBhIGJvb2wgb3IgdHJpc3RhdGUuIFRoYXQncyBjcnVjaWFsOyBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGhvdyBkZWVwbHkgaXQncyBpbnRlZ3JhdGVkIHdpdGggdGhlIGNvcmUgTlZNRU0gaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyB3ZWxsIHRoaXMgbmV3IGZlYXR1cmUgYWRoZXJlcyB0byB0aGUgZXhpc3RpbmcgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg1OCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNzoxNTo0OC41Mzg0NjAyODZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDg1MzU5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5WTUVNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyOm1lbnVjb25maWcgTlZNRU1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMy1cXHRib29sIFxcXCJOVk1FTSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnPTEzPWlmIE5WTUVNXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNTpjb25maWcgTlZNRU1fU1lTRlNcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTYtXFx0Ym9vbCBcXFwiL3N5cy9idXMvbnZtZW0vZGV2aWNlcy8qL252bWVtIChzeXNmcyBpbnRlcmZhY2UpXFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnPTI3PXNvdXJjZSBcXFwiZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMzAtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMxOmNvbmZpZyBOVk1FTV9BTjg4NTVfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjg4NTUgZUZ1c2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDI6Y29uZmlnIE5WTUVNX0FQUExFX0VGVVNFU1xcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgZUZ1c2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy01Mi1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NTM6Y29uZmlnIE5WTUVNX0FQUExFX1NQTUlcXG5kcml2ZXJzL252bWVtL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIFNQTUkgTlZNRU1cXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNjUtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjY2OmNvbmZpZyBOVk1FTV9CQ01fT0NPVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE9uLUNoaXAgT1RQIENvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy03Ny1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6Nzg6Y29uZmlnIE5WTUVNX0JSQ01fTlZSQU1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNzktXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tJ3MgTlZSQU0gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy04Ni1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6ODc6Y29uZmlnIE5WTUVNX0lNWF9JSU1cXG5kcml2ZXJzL252bWVtL0tjb25maWctODgtXFx0dHJpc3RhdGUgXFxcImkuTVggSUMgSWRlbnRpZmljYXRpb24gTW9kdWxlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctOTctXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjk4OmNvbmZpZyBOVk1FTV9JTVhfT0NPVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcImkuTVggNi83LzggT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEwOS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTEwOmNvbmZpZyBOVk1FTV9JTVhfT0NPVFBfRUxFXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTExMS1cXHR0cmlzdGF0ZSBcXFwiaS5NWCBPbi1DaGlwIE9UUCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTE4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMTk6Y29uZmlnIE5WTUVNX0lNWF9PQ09UUF9TQ1VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTIwLVxcdHRyaXN0YXRlIFxcXCJpLk1YOCBTQ1UgT24tQ2hpcCBPVFAgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTEyNi1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTI3OmNvbmZpZyBOVk1FTV9KWjQ3ODBfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTI4LVxcdHRyaXN0YXRlIFxcXCJKWjQ3ODAgRUZVU0UgTWVtb3J5IFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxMzk6Y29uZmlnIE5WTUVNX0xBTjk2NjJfT1RQQ1xcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNDAtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU45NjYyIE9UUCBjb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTQ2LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxNDc6Y29uZmlnIE5WTUVNX0xBWUVSU0NBUEVfU0ZQXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwiTGF5ZXJzY2FwZSBTRlAgKFNlY3VyaXR5IEZ1c2UgUHJvY2Vzc29yKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTYwOmNvbmZpZyBOVk1FTV9MUEMxOFhYX0VFUFJPTVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIk5YUCBMUEMxOFhYIEVFUFJPTSBNZW1vcnkgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xNjktXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjE3MDpjb25maWcgTlZNRU1fTFBDMThYWF9PVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctMTcxLVxcdHRyaXN0YXRlIFxcXCJOWFAgTFBDMThYWCBPVFAgTWVtb3J5IFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMTc5LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoxODA6Y29uZmlnIE5WTUVNX01BWDc3NzU5XFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiTWF4aW0gSW50ZWdyYXRlZCBNQVg3Nzc1OSBOVk1FTSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTE5MS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MTkyOmNvbmZpZyBOVk1FTV9NRVNPTl9FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gR1ggZUZ1c2UgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMDEtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjIwMjpjb25maWcgTlZNRU1fTUVTT05fTVhfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMjAzLVxcdHRyaXN0YXRlIFxcXCJBbWxvZ2ljIE1lc29uNi9NZXNvbjgvTWVzb244YiBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIxMS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MjEyOmNvbmZpZyBOVk1FTV9NSUNST0NISVBfT1RQQ1xcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMTMtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBPVFBDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMjE4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyMTk6Y29uZmlnIE5WTUVNX01US19FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhdGVrIFNvQ3MgRUZVU0Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yMjktXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjIzMDpjb25maWcgTlZNRU1fTVhTX09DT1RQXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTIzMS1cXHR0cmlzdGF0ZSBcXFwiRnJlZXNjYWxlIE1YUyBPbi1DaGlwIE9UUCBNZW1vcnkgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNDEtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI0Mjpjb25maWcgTlZNRU1fTklOVEVORE9fT1RQXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI0My1cXHR0cmlzdGF0ZSBcXFwiTmludGVuZG8gV2lpIGFuZCBXaWkgVSBPVFAgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNTMtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI1NDpjb25maWcgTlZNRU1fUzMyR19PQ09UUFxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNTUtXFx0dHJpc3RhdGUgXFxcIlMzMkcgU29DIE9DT1RQIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMjYzLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyNjQ6Y29uZmlnIE5WTUVNX1FDT01fUUZQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI2NS1cXHR0cmlzdGF0ZSBcXFwiUUNPTSBRRlBST00gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yNzQtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI3NTpjb25maWcgTlZNRU1fUUNPTV9TRUNfUUZQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI3Ni0gICAgICAgIHRyaXN0YXRlIFxcXCJRQ09NIFNFQ1VSRSBRRlBST00gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0yODctXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjI4ODpjb25maWcgTlZNRU1fUU5BUF9NQ1VfRUVQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiUU5BUCBNQ1UgRUVQUk9NIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMjk2LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzoyOTc6Y29uZmlnIE5WTUVNX1JBVkVfU1BfRUVQUk9NXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTI5OC1cXHR0cmlzdGF0ZSBcXFwiUmF2ZSBTUCBFRVBST00gU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMDItXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMwMzpjb25maWcgTlZNRU1fUkNBUl9FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMDQtXFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUi1DYXIgR2VuNCBFLUZVU0Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMTMtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMxNDpjb25maWcgTlZNRU1fUk1FTVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMTUtXFx0dHJpc3RhdGUgXFxcIlJlc2VydmVkIE1lbW9yeSBCYXNlZCBEcml2ZXIgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zMjQtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjMyNTpjb25maWcgTlZNRU1fUk9DS0NISVBfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzI2LVxcdHRyaXN0YXRlIFxcXCJSb2NrY2hpcCBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTMzNS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzM2OmNvbmZpZyBOVk1FTV9ST0NLQ0hJUF9PVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzM3LVxcdHRyaXN0YXRlIFxcXCJSb2NrY2hpcCBPVFAgY29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM0Ni1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzQ3OmNvbmZpZyBOVk1FTV9TQzI3WFhfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzQ4LVxcdHRyaXN0YXRlIFxcXCJTcHJlYWR0cnVtIFNDMjdYWCBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM1Ny1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6MzU4OmNvbmZpZyBOVk1FTV9TTlZTX0xQR1BSXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM1OS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgTG93IFBvd2VyIEdlbmVyYWwgUHVycG9zZSBSZWdpc3RlclxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zNjctXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjM2ODpjb25maWcgTlZNRU1fU1BNSV9TREFNXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM2OS1cXHR0cmlzdGF0ZSBcXFwiU1BNSSBTREFNIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctMzc1LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzozNzY6Y29uZmlnIE5WTUVNX1NQUkRfRUZVU0VcXG5kcml2ZXJzL252bWVtL0tjb25maWctMzc3LVxcdHRyaXN0YXRlIFxcXCJTcHJlYWR0cnVtIFNvQyBlRnVzZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM4Ni1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6Mzg3OmNvbmZpZyBOVk1FTV9TVE0zMl9CU0VDX09QVEVFX1RBXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM4OC1cXHRkZWZfYm9vbCBOVk1FTV9TVE0zMl9ST01FTSBcXHUwMDI2XFx1MDAyNiBPUFRFRVxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTM5NS1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6Mzk2OmNvbmZpZyBOVk1FTV9TVE0zMl9ST01FTVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVE0zMiBmYWN0b3J5LXByb2dyYW1tZWQgbWVtb3J5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0MDc6Y29uZmlnIE5WTUVNX1NVTlBMVVNfT0NPVFBcXG5kcml2ZXJzL252bWVtL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTdW5wbHVzIFNvQyBPVFAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00MTgtXFxuZHJpdmVycy9udm1lbS9LY29uZmlnOjQxOTpjb25maWcgTlZNRU1fU1VOWElfU0lEXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQyMC1cXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIFNvQ3MgU0lEIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNDI4LVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0Mjk6Y29uZmlnIE5WTUVNX1VfQk9PVF9FTlZcXG5kcml2ZXJzL252bWVtL0tjb25maWctNDMwLVxcdHRyaXN0YXRlIFxcXCJVLUJvb3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL0tjb25maWctNDQxLVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZzo0NDI6Y29uZmlnIE5WTUVNX1VOSVBISUVSX0VGVVNFXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ0My1cXHR0cmlzdGF0ZSBcXFwiVW5pUGhpZXIgU29DcyBlRnVzZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ1Mi1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDUzOmNvbmZpZyBOVk1FTV9WRjYxMF9PQ09UUFxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00NTQtXFx0dHJpc3RhdGUgXFxcIlZGNjEwIFNvQyBPQ09UUCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ2My1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDY0OmNvbmZpZyBOVk1FTV9aWU5RTVBcXG5kcml2ZXJzL252bWVtL0tjb25maWctNDY1LVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggWllOUU1QIFNvQyBudm1lbSBmaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9LY29uZmlnLTQ3My1cXG5kcml2ZXJzL252bWVtL0tjb25maWc6NDc0OmNvbmZpZyBOVk1FTV9RT1JJUV9FRlVTRVxcbmRyaXZlcnMvbnZtZW0vS2NvbmZpZy00NzUtXFx0dHJpc3RhdGUgXFxcIk5YUCBRb3JJUSBlRnVzZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMi1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzozOmNvbmZpZyBOVk1FTV9MQVlPVVRTXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctNC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZz05PW1lbnUgXFxcIkxheW91dCBUeXBlc1xcXCJcXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoxMTpjb25maWcgTlZNRU1fTEFZT1VUX1NMMjhfVlBEXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMTItXFx0dHJpc3RhdGUgXFxcIktvbnRyb24gc2wyOCBWUEQgbGF5b3V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoyMDpjb25maWcgTlZNRU1fTEFZT1VUX09OSUVfVExWXFxuZHJpdmVycy9udm1lbS9sYXlvdXRzL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIk9OSUUgdGx2IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZzoyOTpjb25maWcgTlZNRU1fTEFZT1VUX1VfQk9PVF9FTlZcXG5kcml2ZXJzL252bWVtL2xheW91dHMvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiVS1Cb290IGVudmlyb25tZW50IHZhcmlhYmxlcyBsYXlvdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3Bvd2VyL3Jlc2V0L0tjb25maWc9MzMyPWNvbmZpZyBQT1dFUl9SRVNFVF9TQzI3WFhcXG4tLVxcbmRyaXZlcnMvcG93ZXIvcmVzZXQvS2NvbmZpZy0zNDAtXFxuZHJpdmVycy9wb3dlci9yZXNldC9LY29uZmlnOjM0MTpjb25maWcgTlZNRU1fUkVCT09UX01PREVcXG5kcml2ZXJzL3Bvd2VyL3Jlc2V0L0tjb25maWctMzQyLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIE5WTUVNIHJlYm9vdCBtb2RlIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTc6MTU6NTAuMTg3MDAxNTc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTYwNjA2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvYmxlbTpcblxuKipBbmFseXppbmcgdGhlIERhdGEgRmxvdyBhbmQgUHJlcGFyaW5nIHRoZSBPdXRwdXQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBoZXJlLCB0aGUga2V5IHZhcmlhYmxlIGZvciB0aGlzIHNlY3Rpb24sIGlzIGBOVk1FTWAuIEl0J3MgYSBib29sZWFuLCBtZWFuaW5nIGl0J3MgZWl0aGVyIHRydWUgb3IgZmFsc2UuIEtub3dpbmcgdGhpcyBpcyBmdW5kYW1lbnRhbC4gTXkgYW5hbHlzaXMgaGluZ2VzIG9uIGNvcnJlY3RseSBpbnRlcnByZXRpbmcgYW5kIHV0aWxpemluZyBpdHMgc3RhdGUuXG5cbk15IHBsYW4gdG8gcHJlc2VudCB0aGUgcmVzdWx0IGlzIGFsc28gY2xlYXIuIEknbSBnb2luZyB0byBsZXZlcmFnZSBgc2V0LXJlc3VsdHNgIHRvIHByb3Blcmx5IGV4cG9zZSBteSBmaW5kaW5ncyBmcm9tIHRoZSBkYXRhIGFuYWx5c2lzLiBUaGlzIGlzIHRoZSBjb3JyZWN0IG1ldGhvZCwgYW5kIG1ha2VzIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGNhbGwgaW4gdGhpcyBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzYyLCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE3OjE1OjU0LjU0MzA2NDY3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjM4NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfTlZNRU1cIixcbiAgICBcIk5WTUVNXCIsXG4gICAgXCJPRlwiLFxuICAgIFwiQlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbnZtZW1fcmVnX3JlYWRcIixcbiAgICBcImJsa19udm1lbV9hZGRcIixcbiAgICBcImJsa19udm1lbV9kZWxcIixcbiAgICBcImhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbVwiLFxuICAgIFwib2ZfZ2V0X252bWVtX2V1aTQ4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBmZWF0dXJlIHRvIGV4cG9zZSBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zIGFzIE5WTUVNIHByb3ZpZGVycywgYWxsb3dpbmcgTUFDIGFuZCBCbHVldG9vdGggYWRkcmVzc2VzIHRvIGJlIHJlYWQgZnJvbSB0aGVtLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBCbHVldG9vdGggY29yZSB0byByZWFkIEJEX0FERFIgZnJvbSBOVk1FTS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgbG9naWMgaW4gdGhlIGJsb2NrIGxheWVyIGFuZCBuZXR3b3JraW5nL2JsdWV0b290aCBjb3JlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfTlZNRU1cIixcbiAgICBcIk5WTUVNXCIsXG4gICAgXCJPRlwiLFxuICAgIFwiQlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbnZtZW1fcmVnX3JlYWRcIixcbiAgICBcImJsa19udm1lbV9hZGRcIixcbiAgICBcImJsa19udm1lbV9kZWxcIixcbiAgICBcImhjaV9kZXZfZ2V0X2JkX2FkZHJfZnJvbV9udm1lbVwiLFxuICAgIFwib2ZfZ2V0X252bWVtX2V1aTQ4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBmZWF0dXJlIHRvIGV4cG9zZSBibG9jayBkZXZpY2VzIGFuZCBwYXJ0aXRpb25zIGFzIE5WTUVNIHByb3ZpZGVycywgYWxsb3dpbmcgTUFDIGFuZCBCbHVldG9vdGggYWRkcmVzc2VzIHRvIGJlIHJlYWQgZnJvbSB0aGVtLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBCbHVldG9vdGggY29yZSB0byByZWFkIEJEX0FERFIgZnJvbSBOVk1FTS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyByZWFjaGFibGUgbG9naWMgaW4gdGhlIGJsb2NrIGxheWVyIGFuZCBuZXR3b3JraW5nL2JsdWV0b290aCBjb3JlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[1] Phase: Succeeded StartedAt: 2026-08-06 17:16:06 +0000 UTC FinishedAt: 2026-08-06 17:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 17:16:06 +0000 UTC FinishedAt: 2026-08-06 17:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2] Phase: Succeeded StartedAt: 2026-08-06 17:16:06 +0000 UTC FinishedAt: 2026-08-06 21:00:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 17:16:06 +0000 UTC FinishedAt: 2026-08-06 21:00:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 17:16:06 +0000 UTC FinishedAt: 2026-08-06 17:16:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 17:16:06 +0000 UTC FinishedAt: 2026-08-06 17:16:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nbr8/series-workflow5nbr8-convert-artifact-3574123777/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 17:16:16 +0000 UTC FinishedAt: 2026-08-06 17:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 17:16:16 +0000 UTC FinishedAt: 2026-08-06 17:36:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9d8e063b-af9f-472d-af0a-4ed28050ab07,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-workflow5nbr8/series-workflow5nbr8-convert-artifact-3574123777/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": "a49fa597-49da-4b92-9d63-384e17e44812", "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-workflow5nbr8/series-workflow5nbr8-build-action-1264593455/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 17:16:16 +0000 UTC FinishedAt: 2026-08-06 17:36:00 +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:*9d8e063b-af9f-472d-af0a-4ed28050ab07,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-workflow5nbr8/series-workflow5nbr8-convert-artifact-3574123777/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": "a49fa597-49da-4b92-9d63-384e17e44812", "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-workflow5nbr8/series-workflow5nbr8-build-action-1264593455/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 17:36:26 +0000 UTC FinishedAt: 2026-08-06 17:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 17:36:26 +0000 UTC FinishedAt: 2026-08-06 17:36:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 17:36:26 +0000 UTC FinishedAt: 2026-08-06 17:36:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 17:36:26 +0000 UTC FinishedAt: 2026-08-06 17:36:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5nbr8/series-workflow5nbr8-convert-artifact-2675718356/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 17:36:50 +0000 UTC FinishedAt: 2026-08-06 17:38:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 17:36:50 +0000 UTC FinishedAt: 2026-08-06 17:38:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a49fa597-49da-4b92-9d63-384e17e44812,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-workflow5nbr8/series-workflow5nbr8-build-action-1264593455/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-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 17:38:42 +0000 UTC FinishedAt: 2026-08-06 17:38:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 17:38:42 +0000 UTC FinishedAt: 2026-08-06 17:38:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 17:38:42 +0000 UTC FinishedAt: 2026-08-06 17:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 17:38:42 +0000 UTC FinishedAt: 2026-08-06 17:54:43 +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:*9d8e063b-af9f-472d-af0a-4ed28050ab07,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-workflow5nbr8/series-workflow5nbr8-convert-artifact-2675718356/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": "bf74c447-710f-4a65-ad35-983cef1ab1f5", "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-workflow5nbr8/series-workflow5nbr8-build-action-2299833504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 17:38:42 +0000 UTC FinishedAt: 2026-08-06 17:54:33 +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:*9d8e063b-af9f-472d-af0a-4ed28050ab07,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-workflow5nbr8/series-workflow5nbr8-convert-artifact-2675718356/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": "bf74c447-710f-4a65-ad35-983cef1ab1f5", "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-workflow5nbr8/series-workflow5nbr8-build-action-2299833504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 17:54:43 +0000 UTC FinishedAt: 2026-08-06 17:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 17:54:43 +0000 UTC FinishedAt: 2026-08-06 17:54:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 17:54:43 +0000 UTC FinishedAt: 2026-08-06 17:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 17:54:43 +0000 UTC FinishedAt: 2026-08-06 17:56:33 +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:*bf74c447-710f-4a65-ad35-983cef1ab1f5,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-workflow5nbr8/series-workflow5nbr8-build-action-2299833504/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-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 21:00:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 21:00:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"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:*a49fa597-49da-4b92-9d63-384e17e44812,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bf74c447-710f-4a65-ad35-983cef1ab1f5,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-workflow5nbr8/series-workflow5nbr8-build-action-1264593455/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-workflow5nbr8/series-workflow5nbr8-build-action-2299833504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 17:56:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 17:56:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"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-workflow5nbr8/series-workflow5nbr8-convert-artifact-796721917/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 17:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 17:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 17:56:43 +0000 UTC FinishedAt: 2026-08-06 17:56:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 17:56:54 +0000 UTC FinishedAt: 2026-08-06 21:00:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nbr8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs","net"],"focus_symbols":["blk_nvmem_reg_read","blk_nvmem_add","blk_nvmem_del","hci_dev_get_bd_addr_from_nvmem","of_get_nvmem_eui48"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b0057c68df711bf6a62033c072ac61c4f9d3cbc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_NVMEM","NVMEM","OF","BT"],"series_id":"480cd0e9-b447-4a47-a276-a35f72203bb9","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 17:56:54 +0000 UTC FinishedAt: 2026-08-06 21:00:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a49fa597-49da-4b92-9d63-384e17e44812,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bf74c447-710f-4a65-ad35-983cef1ab1f5,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-workflow5nbr8/series-workflow5nbr8-build-action-1264593455/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-workflow5nbr8/series-workflow5nbr8-build-action-2299833504/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-workflow5nbr8/series-workflow5nbr8-convert-artifact-796721917/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,}