From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v6 07/26] xen/arm: don't add duplicate boot modules, introduce domU flag Date: Fri, 2 Nov 2018 16:44:59 -0700 Message-ID: <1541202318-9840-7-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: julien.grall@arm.com Cc: Stefano Stabellini , Achin.Gupta@arm.com, sstabellini@kernel.org, andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org RG9uJ3QgYWRkIGR1cGxpY2F0ZSBib290IG1vZHVsZXMgKHNhbWUga2luZCBhbmQgc2FtZSBzdGFy dCBhZGRyZXNzKSwKdGhleSBhcmUgZnJlZWQgbGF0ZXIsIHdlIGRvbid0IHdhbnQgdG8gaW50cm9k dWNlIGRvdWJsZS1mcmVlIGVycm9ycy4KCkludHJvZHVjZSBhIGRvbVUgZmxhZyBpbiBzdHJ1Y3Qg Ym9vdG1vZHVsZSBhbmQgc3RydWN0IGJvb3RjbWRsaW5lLiBTZXQKaXQgZm9yIGtlcm5lbHMgYW5k IHJhbWRpc2tzIG9mICJ4ZW4sZG9tYWluIiBub2RlcyB0byBhdm9pZCBnZXR0aW5nCmNvbmZ1c2Vk IGluIGtlcm5lbF9wcm9iZSwgd2hlcmUgd2UgdHJ5IHRvIGd1ZXNzIHdoaWNoIGlzIHRoZSBkb20w IGtlcm5lbAphbmQgaW5pdHJkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBhbGwgdmVyc2lvbnMgb2Yg dGhlIG11bHRpYm9vdCBzcGVjLgoKYm9vdF9tb2R1bGVfZmluZF9ieV9raW5kIGFuZCBib290X2Nt ZGxpbmVfZmluZF9ieV9raW5kIGF1dG9tYXRpY2FsbHkKY2hlY2sgZm9yICFkb21VIGVudHJpZXMg KHRoZXkgYXJlIG9ubHkgdXNlZCBmb3Igbm9uLWRvbVUgbW9kdWxlcykuCgpTaWduZWQtb2ZmLWJ5 OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm9zQHhpbGlueC5jb20+CgotLS0KQ2hhbmdlcyBp biB2NjoKLSB1cGRhdGUgY29tbWVudHMKCkNoYW5nZXMgaW4gdjU6Ci0gaW1wcm92ZSBjb21taXQg bWVzc2FnZQotIGFkZCBpbi1jb2RlIGNvbW1lbnRzCgpDaGFuZ2VzIGluIHY0OgotIHVzZSB1bnNp Z25lZCBpbnQKLSBiZXR0ZXIgY29tbWl0IG1lc3NhZ2UKLSBpbnRyb2R1Y2UgZG9tVSBmbGFnIGFu ZCB1c2FnZQoKQ2hhbmdlcyBpbiB2MjoKLSBuZXcgcGF0Y2gKLS0tCiB4ZW4vYXJjaC9hcm0vYm9v dGZkdC5jICAgICAgfCAxMSArKysrKysrLS0tLQogeGVuL2FyY2gvYXJtL3NldHVwLmMgICAgICAg IHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNt LWFybS9zZXR1cC5oIHwgMTIgKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2Vy dGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9ib290 ZmR0LmMgYi94ZW4vYXJjaC9hcm0vYm9vdGZkdC5jCmluZGV4IDA3YTkwMzcuLjhkOWJhNDcgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9ib290ZmR0LmMKKysrIGIveGVuL2FyY2gvYXJtL2Jvb3Rm ZHQuYwpAQCAtMTc1LDYgKzE3NSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwcm9jZXNzX211bHRp Ym9vdF9ub2RlKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUsCiAgICAgaW50IGxlbiA9IDg7IC8q IHNpemVvZiAiL2Nob3NlbiIgKi8KICAgICBjaGFyIHBhdGhbOF07CiAgICAgaW50IHBhcmVudF9u b2RlLCByZXQ7CisgICAgYm9vbCBkb21VOwogCiAgICAgcGFyZW50X25vZGUgPSBmZHRfcGFyZW50 X29mZnNldChmZHQsIG5vZGUpOwogICAgIEFTU0VSVChwYXJlbnRfbm9kZSA+PSAwKTsKQEAgLTIz MCwxMiArMjMxLDE0IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwcm9jZXNzX211bHRpYm9vdF9ub2Rl KGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUsCiAgICAgICAgICAgICBraW5kID0gQk9PVE1PRF9Y U007CiAgICAgfQogCi0gICAgYWRkX2Jvb3RfbW9kdWxlKGtpbmQsIHN0YXJ0LCBzaXplKTsKKyAg ICBkb21VID0gZmR0X25vZGVfY2hlY2tfY29tcGF0aWJsZShmZHQsIHBhcmVudF9ub2RlLCAieGVu LGRvbWFpbiIpID09IDA7CisgICAgYWRkX2Jvb3RfbW9kdWxlKGtpbmQsIHN0YXJ0LCBzaXplLCBk b21VKTsKIAogICAgIHByb3AgPSBmZHRfZ2V0X3Byb3BlcnR5KGZkdCwgbm9kZSwgImJvb3Rhcmdz IiwgJmxlbik7CiAgICAgaWYgKCAhcHJvcCApCiAgICAgICAgIHJldHVybjsKLSAgICBhZGRfYm9v dF9jbWRsaW5lKGZkdF9nZXRfbmFtZShmZHQsIHBhcmVudF9ub2RlLCAmbGVuKSwgcHJvcC0+ZGF0 YSwga2luZCk7CisgICAgYWRkX2Jvb3RfY21kbGluZShmZHRfZ2V0X25hbWUoZmR0LCBwYXJlbnRf bm9kZSwgJmxlbiksIHByb3AtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICBraW5kLCBkb21V KTsKIH0KIAogc3RhdGljIHZvaWQgX19pbml0IHByb2Nlc3NfY2hvc2VuX25vZGUoY29uc3Qgdm9p ZCAqZmR0LCBpbnQgbm9kZSwKQEAgLTI4MSw3ICsyODQsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQg cHJvY2Vzc19jaG9zZW5fbm9kZShjb25zdCB2b2lkICpmZHQsIGludCBub2RlLAogCiAgICAgcHJp bnRrKCJJbml0cmQgJSJQUklwYWRkciItJSJQUklwYWRkciJcbiIsIHN0YXJ0LCBlbmQpOwogCi0g ICAgYWRkX2Jvb3RfbW9kdWxlKEJPT1RNT0RfUkFNRElTSywgc3RhcnQsIGVuZC1zdGFydCk7Cisg ICAgYWRkX2Jvb3RfbW9kdWxlKEJPT1RNT0RfUkFNRElTSywgc3RhcnQsIGVuZC1zdGFydCwgZmFs c2UpOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBlYXJseV9zY2FuX25vZGUoY29uc3Qgdm9pZCAq ZmR0LApAQCAtMzUyLDcgKzM1NSw3IEBAIHNpemVfdCBfX2luaXQgYm9vdF9mZHRfaW5mbyhjb25z dCB2b2lkICpmZHQsIHBhZGRyX3QgcGFkZHIpCiAgICAgaWYgKCByZXQgPCAwICkKICAgICAgICAg cGFuaWMoIk5vIHZhbGlkIGRldmljZSB0cmVlXG4iKTsKIAotICAgIGFkZF9ib290X21vZHVsZShC T09UTU9EX0ZEVCwgcGFkZHIsIGZkdF90b3RhbHNpemUoZmR0KSk7CisgICAgYWRkX2Jvb3RfbW9k dWxlKEJPT1RNT0RfRkRULCBwYWRkciwgZmR0X3RvdGFsc2l6ZShmZHQpLCBmYWxzZSk7CiAKICAg ICBkZXZpY2VfdHJlZV9mb3JfZWFjaF9ub2RlKCh2b2lkICopZmR0LCBlYXJseV9zY2FuX25vZGUs IE5VTEwpOwogICAgIGVhcmx5X3ByaW50X2luZm8oKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS9zZXR1cC5jIGIveGVuL2FyY2gvYXJtL3NldHVwLmMKaW5kZXggMjA5ODU5MS4uYzY5ZTg3MiAx MDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3NldHVwLmMKKysrIGIveGVuL2FyY2gvYXJtL3NldHVw LmMKQEAgLTIwMSwxMCArMjAxLDEyIEBAIHZvaWQgX19pbml0IGR0X3VucmVzZXJ2ZWRfcmVnaW9u cyhwYWRkcl90IHMsIHBhZGRyX3QgZSwKIH0KIAogc3RydWN0IGJvb3Rtb2R1bGUgX19pbml0ICph ZGRfYm9vdF9tb2R1bGUoYm9vdG1vZHVsZV9raW5kIGtpbmQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IHN0YXJ0LCBwYWRkcl90IHNpemUpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IHN0YXJ0LCBwYWRk cl90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGRvbVUpCiB7CiAgICAgc3RydWN0IGJvb3Rtb2R1bGVzICptb2RzID0gJmJvb3RpbmZvLm1vZHVs ZXM7CiAgICAgc3RydWN0IGJvb3Rtb2R1bGUgKm1vZDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKIAog ICAgIGlmICggbW9kcy0+bnJfbW9kcyA9PSBNQVhfTU9EVUxFUyApCiAgICAgewpAQCAtMjEyLDE1 ICsyMTQsMzEgQEAgc3RydWN0IGJvb3Rtb2R1bGUgX19pbml0ICphZGRfYm9vdF9tb2R1bGUoYm9v dG1vZHVsZV9raW5kIGtpbmQsCiAgICAgICAgICAgICAgICBib290X21vZHVsZV9raW5kX2FzX3N0 cmluZyhraW5kKSwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwog ICAgIH0KKyAgICBmb3IgKCBpID0gMCA7IGkgPCBtb2RzLT5ucl9tb2RzIDsgaSsrICkKKyAgICB7 CisgICAgICAgIG1vZCA9ICZtb2RzLT5tb2R1bGVbaV07CisgICAgICAgIGlmICggbW9kLT5raW5k ID09IGtpbmQgJiYgbW9kLT5zdGFydCA9PSBzdGFydCApCisgICAgICAgIHsKKyAgICAgICAgICAg IGlmICggIWRvbVUgKQorICAgICAgICAgICAgICAgIG1vZC0+ZG9tVSA9IGZhbHNlOworICAgICAg ICAgICAgcmV0dXJuIG1vZDsKKyAgICAgICAgfQorICAgIH0KIAogICAgIG1vZCA9ICZtb2RzLT5t b2R1bGVbbW9kcy0+bnJfbW9kcysrXTsKICAgICBtb2QtPmtpbmQgPSBraW5kOwogICAgIG1vZC0+ c3RhcnQgPSBzdGFydDsKICAgICBtb2QtPnNpemUgPSBzaXplOworICAgIG1vZC0+ZG9tVSA9IGRv bVU7CiAKICAgICByZXR1cm4gbW9kOwogfQogCisvKgorICogYm9vdF9tb2R1bGVfZmluZF9ieV9r aW5kIGNhbiBvbmx5IGJlIHVzZWQgdG8gcmV0dXJuIFhlbiBtb2R1bGVzIChlLmcKKyAqIFhTTSwg RFRCKSBvciBEb20wIG1vZHVsZXMuIFRoaXMgaXMgbm90IHN1aXRhYmxlIGZvciBsb29raW5nIHVw IGd1ZXN0CisgKiBtb2R1bGVzLgorICovCiBzdHJ1Y3QgYm9vdG1vZHVsZSAqIF9faW5pdCBib290 X21vZHVsZV9maW5kX2J5X2tpbmQoYm9vdG1vZHVsZV9raW5kIGtpbmQpCiB7CiAgICAgc3RydWN0 IGJvb3Rtb2R1bGVzICptb2RzID0gJmJvb3RpbmZvLm1vZHVsZXM7CkBAIC0yMjksMTQgKzI0Nywx NCBAQCBzdHJ1Y3QgYm9vdG1vZHVsZSAqIF9faW5pdCBib290X21vZHVsZV9maW5kX2J5X2tpbmQo Ym9vdG1vZHVsZV9raW5kIGtpbmQpCiAgICAgZm9yIChpID0gMCA7IGkgPCBtb2RzLT5ucl9tb2Rz IDsgaSsrICkKICAgICB7CiAgICAgICAgIG1vZCA9ICZtb2RzLT5tb2R1bGVbaV07Ci0gICAgICAg IGlmICggbW9kLT5raW5kID09IGtpbmQgKQorICAgICAgICBpZiAoIG1vZC0+a2luZCA9PSBraW5k ICYmICFtb2QtPmRvbVUgKQogICAgICAgICAgICAgcmV0dXJuIG1vZDsKICAgICB9CiAgICAgcmV0 dXJuIE5VTEw7CiB9CiAKIHZvaWQgX19pbml0IGFkZF9ib290X2NtZGxpbmUoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqY21kbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vdG1vZHVsZV9raW5kIGtpbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rt b2R1bGVfa2luZCBraW5kLCBib29sIGRvbVUpCiB7CiAgICAgc3RydWN0IGJvb3RjbWRsaW5lcyAq Y21kcyA9ICZib290aW5mby5jbWRsaW5lczsKICAgICBzdHJ1Y3QgYm9vdGNtZGxpbmUgKmNtZDsK QEAgLTI0OSw2ICsyNjcsNyBAQCB2b2lkIF9faW5pdCBhZGRfYm9vdF9jbWRsaW5lKGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmNtZGxpbmUsCiAKICAgICBjbWQgPSAmY21kcy0+Y21kbGlu ZVtjbWRzLT5ucl9tb2RzKytdOwogICAgIGNtZC0+a2luZCA9IGtpbmQ7CisgICAgY21kLT5kb21V ID0gZG9tVTsKIAogICAgIEFTU0VSVChzdHJsZW4obmFtZSkgPD0gRFRfTUFYX05BTUUpOwogICAg IHNhZmVfc3RyY3B5KGNtZC0+ZHRfbmFtZSwgbmFtZSk7CkBAIC0yNTgsNiArMjc3LDExIEBAIHZv aWQgX19pbml0IGFkZF9ib290X2NtZGxpbmUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq Y21kbGluZSwKICAgICBzYWZlX3N0cmNweShjbWQtPmNtZGxpbmUsIGNtZGxpbmUpOwogfQogCisv KgorICogYm9vdF9jbWRsaW5lX2ZpbmRfYnlfa2luZCBjYW4gb25seSBiZSB1c2VkIHRvIHJldHVy biBYZW4gbW9kdWxlcyAoZS5nCisgKiBYU00sIERUQikgb3IgRG9tMCBtb2R1bGVzLiBUaGlzIGlz IG5vdCBzdWl0YWJsZSBmb3IgbG9va2luZyB1cCBndWVzdAorICogbW9kdWxlcy4KKyAqLwogc3Ry dWN0IGJvb3RjbWRsaW5lICogX19pbml0IGJvb3RfY21kbGluZV9maW5kX2J5X2tpbmQoYm9vdG1v ZHVsZV9raW5kIGtpbmQpCiB7CiAgICAgc3RydWN0IGJvb3RjbWRsaW5lcyAqY21kcyA9ICZib290 aW5mby5jbWRsaW5lczsKQEAgLTI2Nyw3ICsyOTEsNyBAQCBzdHJ1Y3QgYm9vdGNtZGxpbmUgKiBf X2luaXQgYm9vdF9jbWRsaW5lX2ZpbmRfYnlfa2luZChib290bW9kdWxlX2tpbmQga2luZCkKICAg ICBmb3IgKCBpID0gMCA7IGkgPCBjbWRzLT5ucl9tb2RzIDsgaSsrICkKICAgICB7CiAgICAgICAg IGNtZCA9ICZjbWRzLT5jbWRsaW5lW2ldOwotICAgICAgICBpZiAoIGNtZC0+a2luZCA9PSBraW5k ICkKKyAgICAgICAgaWYgKCBjbWQtPmtpbmQgPT0ga2luZCAmJiAhY21kLT5kb21VICkKICAgICAg ICAgICAgIHJldHVybiBjbWQ7CiAgICAgfQogICAgIHJldHVybiBOVUxMOwpAQCAtNzYxLDcgKzc4 NSw3IEBAIHZvaWQgX19pbml0IHN0YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJvb3RfcGh5c19vZmZz ZXQsCiAgICAgLyogUmVnaXN0ZXIgWGVuJ3MgbG9hZCBhZGRyZXNzIGFzIGEgYm9vdCBtb2R1bGUu ICovCiAgICAgeGVuX2Jvb3Rtb2R1bGUgPSBhZGRfYm9vdF9tb2R1bGUoQk9PVE1PRF9YRU4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KSh1aW50cHRyX3QpKF9zdGFydCAr IGJvb3RfcGh5c19vZmZzZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJf dCkodWludHB0cl90KShfZW5kIC0gX3N0YXJ0ICsgMSkpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocGFkZHJfdCkodWludHB0cl90KShfZW5kIC0gX3N0YXJ0ICsgMSksIGZhbHNlKTsK ICAgICBCVUdfT04oIXhlbl9ib290bW9kdWxlKTsKIAogICAgIHhlbl9wYWRkciA9IGdldF94ZW5f cGFkZHIoKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vc2V0dXAuaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vc2V0dXAuaAppbmRleCA3NTgwMDA3Li4zYTMwMzI5IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL3NldHVwLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9z ZXR1cC5oCkBAIC0zMCw5ICszMCwxNiBAQCBzdHJ1Y3QgbWVtaW5mbyB7CiAgICAgc3RydWN0IG1l bWJhbmsgYmFua1tOUl9NRU1fQkFOS1NdOwogfTsKIAorLyoKKyAqIFRoZSBkb21VIGZsYWcgaXMg c2V0IGZvciBrZXJuZWxzIGFuZCByYW1kaXNrcyBvZiAieGVuLGRvbWFpbiIgbm9kZXMuCisgKiBU aGUgcHVycG9zZSBvZiB0aGUgZG9tVSBmbGFnIGlzIHRvIGF2b2lkIGdldHRpbmcgY29uZnVzZWQg aW4KKyAqIGtlcm5lbF9wcm9iZSwgd2hlcmUgd2UgdHJ5IHRvIGd1ZXNzIHdoaWNoIGlzIHRoZSBk b20wIGtlcm5lbCBhbmQKKyAqIGluaXRyZCB0byBiZSBjb21wYXRpYmxlIHdpdGggYWxsIHZlcnNp b25zIG9mIHRoZSBtdWx0aWJvb3Qgc3BlYy4gCisgKi8KICNkZWZpbmUgQk9PVE1PRF9NQVhfQ01E TElORSAxMDI0CiBzdHJ1Y3QgYm9vdG1vZHVsZSB7CiAgICAgYm9vdG1vZHVsZV9raW5kIGtpbmQ7 CisgICAgYm9vbCBkb21VOwogICAgIHBhZGRyX3Qgc3RhcnQ7CiAgICAgcGFkZHJfdCBzaXplOwog fTsKQEAgLTQxLDYgKzQ4LDcgQEAgc3RydWN0IGJvb3Rtb2R1bGUgewogI2RlZmluZSBEVF9NQVhf TkFNRSA0MQogc3RydWN0IGJvb3RjbWRsaW5lIHsKICAgICBib290bW9kdWxlX2tpbmQga2luZDsK KyAgICBib29sIGRvbVU7CiAgICAgY2hhciBkdF9uYW1lW0RUX01BWF9OQU1FXTsKICAgICBjaGFy IGNtZGxpbmVbQk9PVE1PRF9NQVhfQ01ETElORV07CiB9OwpAQCAtOTEsMTAgKzk5LDEwIEBAIHNp emVfdCBfX2luaXQgYm9vdF9mZHRfaW5mbyhjb25zdCB2b2lkICpmZHQsIHBhZGRyX3QgcGFkZHIp OwogY29uc3QgY2hhciBfX2luaXQgKmJvb3RfZmR0X2NtZGxpbmUoY29uc3Qgdm9pZCAqZmR0KTsK IAogc3RydWN0IGJvb3Rtb2R1bGUgKmFkZF9ib290X21vZHVsZShib290bW9kdWxlX2tpbmQga2lu ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdCBzdGFydCwgcGFk ZHJfdCBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdCBz dGFydCwgcGFkZHJfdCBzaXplLCBib29sIGRvbVUpOwogc3RydWN0IGJvb3Rtb2R1bGUgKmJvb3Rf bW9kdWxlX2ZpbmRfYnlfa2luZChib290bW9kdWxlX2tpbmQga2luZCk7CiB2b2lkIGFkZF9ib290 X2NtZGxpbmUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqY21kbGluZSwKLSAgICAgICAg ICAgICAgICAgICAgICBib290bW9kdWxlX2tpbmQga2luZCk7CisgICAgICAgICAgICAgICAgICAg ICAgYm9vdG1vZHVsZV9raW5kIGtpbmQsIGJvb2wgZG9tVSk7CiBzdHJ1Y3QgYm9vdGNtZGxpbmUg KmJvb3RfY21kbGluZV9maW5kX2J5X2tpbmQoYm9vdG1vZHVsZV9raW5kIGtpbmQpOwogY29uc3Qg Y2hhciAqIF9faW5pdCBib290X21vZHVsZV9raW5kX2FzX3N0cmluZyhib290bW9kdWxlX2tpbmQg a2luZCk7CiAKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==