From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PATCH v6 05/14] libxl: Load guest BIOS from file Date: Tue, 12 Jul 2016 15:42:42 +0100 Message-ID: <20160712144251.558-6-anthony.perard@citrix.com> References: <20160712144251.558-1-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160712144251.558-1-anthony.perard@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Anthony PERARD , Wei Liu , Ian Jackson List-Id: xen-devel@lists.xenproject.org VGhlIHBhdGggdG8gdGhlIEJJT1MgYmxvYiBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSB4bCdzCmJp b3NfcGF0aF9vdmVycmlkZSBvcHRpb24sIG9yIHByb3ZpZGVkIGJ5IHUuaHZtLmJpb3NfZmlybXdh cmUgaW4gdGhlCmRvbWFpbl9idWlsZF9pbmZvIHN0cnVjdCBieSBvdGhlciBsaWJ4bCB1c2VyLgoK U2lnbmVkLW9mZi1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+ CgotLS0KQ2hhbmdlcyBpbiBWNjoKLSB1c2UgZ290byBmb3IgZXJyb3IgaGFuZGxpbmcgb2YgbGli eGxfX2xvYWRfaHZtX2Zpcm13YXJlX21vZHVsZSgpCgpDaGFuZ2VzIGluIFY1OgotIG1hbiBwYWdl LCB1c2UgQjw+IHRvIGhpZ2hsaWdodCBjb25maWcgb3B0aW9uIGluIGRlc2NyaXB0aW9uLgotIHJl bmFtZSBjb25maWcgb3B0aW9uIGZyb20gYGJpb3Nfb3ZlcnJpZGVgIHRvIGBiaW9zX3BhdGhfb3Zl cnJpZGVgCi0gc3RvcmUgbGlieGxfcmVhZF9maWxlX2NvbnRlbnRzKCkgcmV0dXJuIHZhbHVlIGlu dG8gciBpbnN0ZWFkIG9mIGUKICAoanVzdCByZW5hbWVkIHRoZSB2YXJpYWJsZSkKLSByZW5hbWUg ZG9tYWluX2J1aWxkX2luZm8udS5odm0uYmlvc19maXJtd2FyZSB0byBzeXN0ZW1fZmlybXdhcmUK CkNoYW5nZXMgaW4gVjQ6Ci0gdXBkYXRpbmcgbWFuIHBhZ2UgdG8gaGF2ZSBiaW9zX292ZXJyaWRl IGRlc2NyaWJlZC4KLSByZXR1cm4gRVJST1JfSU5WQUwgaW4gbGlieGxfX2xvYWRfaHZtX2Zpcm13 YXJlX21vZHVsZSB3aGVuIHRoZSBmaWxlIGlzCiAgZW1wdHkuCgpDaGFuZ2VzIGluIFYzOgotIG1v dmUgc2VhYmlvc19wYXRoIGFuZCBvdm1mX3BhdGggdG8gbGlieGxfcGF0aC5jICh3aXRoIHJlbmFt aW5nKQotIGZpeCBzb21lIGNvZGluZyBzdHlsZQotIHdhcm4gZm9yIGVtcHR5IGZpbGUKLSByZW1v dmUgcm9tYmlvcyBzdHVmZiAod2lsbCBzdGlsbCBiZSBidWlsdC1pbiBodm1sb2FkZXIpCi0gcmVu YW1lIGZpZWxkIGJpb3NfZmlsZW5hbWUgaW4gZG9tYWluX2J1aWxkX2luZm8gdG8gYmlvc19maXJt d2FyZSB0bwogIGZvbGxvdyBuYW1pbmcgb2YgYWNwaSBhbmQgc21iaW9zLgotIGxvZyBhbiBlcnJv ciBhZnRlciBsaWJ4bF9yZWFkX2ZpbGVfY29udGVudHMoKSBvbmx5IHdoZW4gaXQgcmV0dXJuIEVO T0VOVAotIHJldHVybiBhbiBlcnJvciBvbiBlbXB0eSBmaWxlLgotIGFkZGVkICNkZWZpbmUgTElC WExfSEFWRV9CVUlMRElORk9fSFZNX0JJT1NfRklSTVdBUkUKLS0tCiBkb2NzL21hbi94bC5jZmcu cG9kLjUuaW4gICAgIHwgIDkgKysrKysrKwogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICB8 ICA4ICsrKysrKwogdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgICAgICB8IDYxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJ4bC9saWJ4bF9pbnRl cm5hbC5oIHwgIDIgKysKIHRvb2xzL2xpYnhsL2xpYnhsX3BhdGhzLmMgICAgfCAxMCArKysrKysr KwogdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsICB8ICAxICsKIHRvb2xzL2xpYnhsL3hsX2Nt ZGltcGwuYyAgICAgfCAxMSArKysrKy0tLQogNyBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5p biBiL2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbgppbmRleCAzYmIyN2QwLi5hNjg1YjgzIDEwMDY0 NAotLS0gYS9kb2NzL21hbi94bC5jZmcucG9kLjUuaW4KKysrIGIvZG9jcy9tYW4veGwuY2ZnLnBv ZC41LmluCkBAIC0xMjEyLDYgKzEyMTIsMTUgQEAgUmVxdWlyZXMgZGV2aWNlX21vZGVsX3ZlcnNp b249cWVtdS14ZW4uCiAKID1iYWNrCiAKKz1pdGVtIEI8Ymlvc19wYXRoX292ZXJyaWRlPSJQQVRI Ij4KKworT3ZlcnJpZGUgdGhlIHBhdGggdG8gdGhlIGJsb2IgdG8gYmUgdXNlZCBhcyBCSU9TLiBU aGUgYmxvYiBwcm92aWRlZCBoZXJlIE1VU1QKK2JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgQjxiaW9z PT4gd2hpY2ggeW91IGhhdmUgc3BlY2lmaWVkLiBZb3Ugc2hvdWxkIG5vdAorbm9ybWFsbHkgbmVl ZCB0byBzcGVjaWZ5IHRoaXMgb3B0aW9uLgorCitUaGlzIG9wdGlvbnMgZG9lcyBub3QgaGF2ZSBh bnkgZWZmZWN0IGlmIHVzaW5nIEI8Ymlvcz0icm9tYmlvcyI+IG9yCitCPGRldmljZV9tb2RlbF92 ZXJzaW9uPSJxZW11LXhlbi10cmFkaXRpb25hbCI+LgorCiA9aXRlbSBCPHBhZT1CT09MRUFOPgog CiBIaWRlIG9yIGV4cG9zZSB0aGUgSUEzMiBQaHlzaWNhbCBBZGRyZXNzIEV4dGVuc2lvbnMuIFRo ZXNlIGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29scy9s aWJ4bC9saWJ4bC5oCmluZGV4IDJjMGY4NjguLjJiMWY2NzggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuaApAQCAtOTI4LDYgKzkyOCwxNCBA QCB2b2lkIGxpYnhsX21hY19jb3B5KGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9tYWMgKmRzdCwgbGli eGxfbWFjICpzcmMpOwogI2RlZmluZSBMSUJYTF9IQVZFX0NIRUNLUE9JTlRFRF9TVFJFQU0gMQog CiAvKgorICogTElCWExfSEFWRV9CVUlMRElORk9fSFZNX1NZU1RFTV9GSVJNV0FSRQorICoKKyAq IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvIGhhcyB1Lmh2bS5zeXN0ZW1fZmlybXdhcmUgZmllbGQg d2hpY2ggY2FuIGJlIHVzZQorICogdG8gcHJvdmlkZSBhIGRpZmZlcmVudCBmaXJtd2FyZSBibG9i IChsaWtlIFNlYUJJT1Mgb3IgT1ZNRikuCisgKi8KKyNkZWZpbmUgTElCWExfSEFWRV9CVUlMRElO Rk9fSFZNX1NZU1RFTV9GSVJNV0FSRQorCisvKgogICogRVJST1JfUkVNVVNfWFhYIGVycm9yIGNv ZGUgb25seSBleGlzdHMgZnJvbSBYZW4gNC41LCBYZW4gNC42IGFuZCBpdAogICogaXMgY2hhbmdl ZCB0byBFUlJPUl9DSEVDS1BPSU5UX1hYWCBpbiBYZW4gNC43CiAgKi8KZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKaW5kZXggZWMy OTA2MC4uMmExNzkzZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKKysrIGIv dG9vbHMvbGlieGwvbGlieGxfZG9tLmMKQEAgLTg2Miw2ICs4NjIsNDIgQEAgZXJyOgogICAgIHJl dHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgbGlieGxfX2xvYWRfaHZtX2Zpcm13YXJlX21vZHVs ZShsaWJ4bF9fZ2MgKmdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKndoYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2h2bV9maXJtd2FyZV9tb2R1bGUgKm0pCit7Cisg ICAgaW50IGRhdGFsZW4gPSAwOworICAgIHZvaWQgKmRhdGEgPSBOVUxMOworICAgIGludCByLCBy YzsKKworICAgIExPRyhERUJVRywgIkxvYWRpbmcgJXM6ICVzIiwgd2hhdCwgZmlsZW5hbWUpOwor ICAgIHIgPSBsaWJ4bF9yZWFkX2ZpbGVfY29udGVudHMoQ1RYLCBmaWxlbmFtZSwgJmRhdGEsICZk YXRhbGVuKTsKKyAgICBpZiAocikgeworICAgICAgICAvKgorICAgICAgICAgKiBQcmludCBhIG1l c3NhZ2Ugb25seSBvbiBFTk9FTlQsIG90aGVyIGVycm9ycyBhcmUgbG9nZ2VkIGJ5IHRoZQorICAg ICAgICAgKiBmdW5jdGlvbiBsaWJ4bF9yZWFkX2ZpbGVfY29udGVudHMoKS4KKyAgICAgICAgICov CisgICAgICAgIGlmIChyID09IEVOT0VOVCkKKyAgICAgICAgICAgIExPR0VWKEVSUk9SLCByLCAi ZmFpbGVkIHRvIHJlYWQgJXMgZmlsZSIsIHdoYXQpOworICAgICAgICByYyA9ICBFUlJPUl9GQUlM OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgbGlieGxfX3B0cl9hZGQoZ2MsIGRhdGEp OworICAgIGlmIChkYXRhbGVuKSB7CisgICAgICAgIC8qIE9ubHkgYWNjZXB0IG5vbi1lbXB0eSBm aWxlcyAqLworICAgICAgICBtLT5kYXRhID0gZGF0YTsKKyAgICAgICAgbS0+bGVuZ3RoID0gZGF0 YWxlbjsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0coRVJST1IsICJmaWxlICVzIGZvciAlcyBp cyBlbXB0eSIsIGZpbGVuYW1lLCB3aGF0KTsKKyAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKKyAg ICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIHJjID0gMDsKK291dDoKKyAgICByZXR1cm4gcmM7 Cit9CisKIHN0YXRpYyBpbnQgbGlieGxfX2RvbWFpbl9maXJtd2FyZShsaWJ4bF9fZ2MgKmdjLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZv ICppbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSkKQEAgLTg3MSw2ICs5MDcsNyBAQCBzdGF0aWMgaW50IGxpYnhsX19kb21haW5f ZmlybXdhcmUobGlieGxfX2djICpnYywKICAgICBpbnQgZSwgcmM7CiAgICAgaW50IGRhdGFsZW4g PSAwOwogICAgIHZvaWQgKmRhdGE7CisgICAgY29uc3QgY2hhciAqYmlvc19maWxlbmFtZSA9IE5V TEw7CiAKICAgICBpZiAoaW5mby0+dS5odm0uZmlybXdhcmUpCiAgICAgICAgIGZpcm13YXJlID0g aW5mby0+dS5odm0uZmlybXdhcmU7CkBAIC05MTQsNiArOTUxLDMwIEBAIHN0YXRpYyBpbnQgbGli eGxfX2RvbWFpbl9maXJtd2FyZShsaWJ4bF9fZ2MgKmdjLAogICAgICAgICBnb3RvIG91dDsKICAg ICB9CiAKKyAgICBpZiAoaW5mby0+ZGV2aWNlX21vZGVsX3ZlcnNpb24gPT0gTElCWExfREVWSUNF X01PREVMX1ZFUlNJT05fUUVNVV9YRU4pIHsKKyAgICAgICAgaWYgKGluZm8tPnUuaHZtLnN5c3Rl bV9maXJtd2FyZSkgeworICAgICAgICAgICAgYmlvc19maWxlbmFtZSA9IGluZm8tPnUuaHZtLnN5 c3RlbV9maXJtd2FyZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoaW5m by0+dS5odm0uYmlvcykgeworICAgICAgICAgICAgY2FzZSBMSUJYTF9CSU9TX1RZUEVfU0VBQklP UzoKKyAgICAgICAgICAgICAgICBiaW9zX2ZpbGVuYW1lID0gbGlieGxfX3NlYWJpb3NfcGF0aCgp OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBMSUJYTF9CSU9TX1RZ UEVfT1ZNRjoKKyAgICAgICAgICAgICAgICBiaW9zX2ZpbGVuYW1lID0gbGlieGxfX292bWZfcGF0 aCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBMSUJYTF9CSU9T X1RZUEVfUk9NQklPUzoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYWJv cnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChiaW9zX2Zp bGVuYW1lKSB7CisgICAgICAgIHJjID0gbGlieGxfX2xvYWRfaHZtX2Zpcm13YXJlX21vZHVsZShn YywgYmlvc19maWxlbmFtZSwgIkJJT1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmRvbS0+c3lzdGVtX2Zpcm13YXJlX21vZHVsZSk7CisgICAgICAgIGlm IChyYykgZ290byBvdXQ7CisgICAgfQorCiAgICAgaWYgKGluZm8tPnUuaHZtLnNtYmlvc19maXJt d2FyZSkgewogICAgICAgICBkYXRhID0gTlVMTDsKICAgICAgICAgZSA9IGxpYnhsX3JlYWRfZmls ZV9jb250ZW50cyhjdHgsIGluZm8tPnUuaHZtLnNtYmlvc19maXJtd2FyZSwKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5h bC5oCmluZGV4IGU3YWI4NWQuLmU2YTE5OWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs X2ludGVybmFsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApAQCAtMjMxNyw2 ICsyMzE3LDggQEAgX2hpZGRlbiBjb25zdCBjaGFyICpsaWJ4bF9feGVuX2NvbmZpZ19kaXJfcGF0 aCh2b2lkKTsKIF9oaWRkZW4gY29uc3QgY2hhciAqbGlieGxfX3hlbl9zY3JpcHRfZGlyX3BhdGgo dm9pZCk7CiBfaGlkZGVuIGNvbnN0IGNoYXIgKmxpYnhsX19sb2NrX2Rpcl9wYXRoKHZvaWQpOwog X2hpZGRlbiBjb25zdCBjaGFyICpsaWJ4bF9fcnVuX2Rpcl9wYXRoKHZvaWQpOworX2hpZGRlbiBj b25zdCBjaGFyICpsaWJ4bF9fc2VhYmlvc19wYXRoKHZvaWQpOworX2hpZGRlbiBjb25zdCBjaGFy ICpsaWJ4bF9fb3ZtZl9wYXRoKHZvaWQpOwogCiAvKi0tLS0tIHN1YnByb2Nlc3MgZXhlY3V0aW9u IHdpdGggdGltZW91dCAtLS0tLSovCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bh dGhzLmMgYi90b29scy9saWJ4bC9saWJ4bF9wYXRocy5jCmluZGV4IDliN2IwZDUuLjY5NzJiOTAg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3BhdGhzLmMKKysrIGIvdG9vbHMvbGlieGwv bGlieGxfcGF0aHMuYwpAQCAtMzUsNiArMzUsMTYgQEAgY29uc3QgY2hhciAqbGlieGxfX3J1bl9k aXJfcGF0aCh2b2lkKQogICAgIHJldHVybiBYRU5fUlVOX0RJUjsKIH0KIAorY29uc3QgY2hhciAq bGlieGxfX3NlYWJpb3NfcGF0aCh2b2lkKQoreworICAgIHJldHVybiBTRUFCSU9TX1BBVEg7Cit9 CisKK2NvbnN0IGNoYXIgKmxpYnhsX19vdm1mX3BhdGgodm9pZCkKK3sKKyAgICByZXR1cm4gT1ZN Rl9QQVRIOworfQorCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsIGIvdG9vbHMvbGlieGwvbGlieGxfdHlw ZXMuaWRsCmluZGV4IGVmNjE0YmUuLjk4YmZjM2EgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xp YnhsX3R5cGVzLmlkbAorKysgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKQEAgLTUxMyw2 ICs1MTMsNyBAQCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyA9IFN0cnVjdCgiZG9tYWluX2J1aWxk X2luZm8iLFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGltZXJf bW9kZSIsICAgICAgIGxpYnhsX3RpbWVyX21vZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCJuZXN0ZWRfaHZtIiwgICAgICAgbGlieGxfZGVmYm9vbCksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImFsdHAybSIsICAgICAgICAgICBs aWJ4bF9kZWZib29sKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgi c3lzdGVtX2Zpcm13YXJlIiwgIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoInNtYmlvc19maXJtd2FyZSIsICBzdHJpbmcpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKCJhY3BpX2Zpcm13YXJlIiwgICAgc3RyaW5nKSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaGR0eXBlIiwgICAgICAgICAg IGxpYnhsX2hkdHlwZSksCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMgYi90 b29scy9saWJ4bC94bF9jbWRpbXBsLmMKaW5kZXggZDFmY2ZhNC4uMWQwNjU5OCAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCisrKyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwu YwpAQCAtMTU2MiwxMiArMTU2MiwxNyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWdfZGF0YShj b25zdCBjaGFyICpjb25maWdfc291cmNlLAogCiAgICAgICAgIHhsdV9jZmdfcmVwbGFjZV9zdHJp bmcgKGNvbmZpZywgImZpcm13YXJlX292ZXJyaWRlIiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmJfaW5mby0+dS5odm0uZmlybXdhcmUsIDApOwotICAgICAgICBpZiAoIXhsdV9j ZmdfZ2V0X3N0cmluZyhjb25maWcsICJiaW9zIiwgJmJ1ZiwgMCkgJiYKLSAgICAgICAgICAgIGxp YnhsX2Jpb3NfdHlwZV9mcm9tX3N0cmluZyhidWYsICZiX2luZm8tPnUuaHZtLmJpb3MpKSB7Cisg ICAgICAgIHhsdV9jZmdfcmVwbGFjZV9zdHJpbmcgKGNvbmZpZywgImJpb3NfcGF0aF9vdmVycmlk ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiX2luZm8tPnUuaHZtLnN5c3Rl bV9maXJtd2FyZSwgMCk7CisgICAgICAgIGlmICgheGx1X2NmZ19nZXRfc3RyaW5nKGNvbmZpZywg ImJpb3MiLCAmYnVmLCAwKSkgeworICAgICAgICAgICAgaWYgKGxpYnhsX2Jpb3NfdHlwZV9mcm9t X3N0cmluZyhidWYsICZiX2luZm8tPnUuaHZtLmJpb3MpKSB7CiAgICAgICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJFUlJPUjogaW52YWxpZCB2YWx1ZSBcIiVzXCIgZm9yIFwiYmlvc1wiXG4i LAogICAgICAgICAgICAgICAgICAgICBidWYpOwogICAgICAgICAgICAgICAgIGV4aXQgKDEpOwot ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYl9pbmZvLT51Lmh2 bS5zeXN0ZW1fZmlybXdhcmUpCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6 ICIKKyAgICAgICAgICAgICAgICAgICAgImJpb3NfcGF0aF9vdmVycmlkZSBnaXZlbiB3aXRob3V0 IHNwZWNpZmljIGJpb3MgbmFtZVxuIik7CiAKICAgICAgICAgeGx1X2NmZ19nZXRfZGVmYm9vbChj b25maWcsICJwYWUiLCAmYl9pbmZvLT51Lmh2bS5wYWUsIDApOwogICAgICAgICB4bHVfY2ZnX2dl dF9kZWZib29sKGNvbmZpZywgImFwaWMiLCAmYl9pbmZvLT51Lmh2bS5hcGljLCAwKTsKLS0gCkFu dGhvbnkgUEVSQVJECgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==