From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: [PATCH 1/5] libxl: add PV sound device Date: Mon, 2 Oct 2017 12:49:20 +0300 Message-ID: <1506937764-30329-2-git-send-email-al1img@gmail.com> References: <1506937764-30329-1-git-send-email-al1img@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dyxLz-0005o7-2z for xen-devel@lists.xenproject.org; Mon, 02 Oct 2017 09:49:35 +0000 Received: by mail-lf0-f66.google.com with SMTP id l196so2007381lfl.3 for ; Mon, 02 Oct 2017 02:49:33 -0700 (PDT) In-Reply-To: <1506937764-30329-1-git-send-email-al1img@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgoKQWRk IFBWIHNvdW5kIGRldmljZSBkZXNjcmliZWQgaW4gc25kaWYuaAoKU2lnbmVkLW9mZi1ieTogT2xl a3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgotLS0KIHRvb2xzL2xp YnhsL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGwu aCAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiB0b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyAg ICAgICAgICAgfCAgIDEgKwogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAgICAgIHwg ICAxICsKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgICB8ICA2NCArKysrKysr KwogdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsIHwgICAxICsKIHRvb2xzL2xp YnhsL2xpYnhsX3ZzbmQuYyAgICAgICAgICAgICB8IDMwNyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAzODkgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnhsL2xpYnhsX3ZzbmQuYwoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlIGIvdG9vbHMvbGlieGwvTWFrZWZpbGUKaW5k ZXggNDliMmM2My4uMmQ1MjQzNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUKKysr IGIvdG9vbHMvbGlieGwvTWFrZWZpbGUKQEAgLTEzOCw3ICsxMzgsNyBAQCBMSUJYTF9PQkpTID0g ZmxleGFycmF5Lm8gbGlieGwubyBsaWJ4bF9jcmVhdGUubyBsaWJ4bF9kbS5vIGxpYnhsX3BjaS5v IFwKIAkJCWxpYnhsX2RvbV9zdXNwZW5kLm8gbGlieGxfZG9tX3NhdmUubyBsaWJ4bF91c2IubyBc CiAJCQlsaWJ4bF92dHBtLm8gbGlieGxfbmljLm8gbGlieGxfZGlzay5vIGxpYnhsX2NvbnNvbGUu byBcCiAJCQlsaWJ4bF9jcHVwb29sLm8gbGlieGxfbWVtLm8gbGlieGxfc2NoZWQubyBsaWJ4bF90 bWVtLm8gXAotCQkJbGlieGxfOXBmcy5vIGxpYnhsX2RvbWFpbi5vIGxpYnhsX3ZkaXNwbC5vIFwK KwkJCWxpYnhsXzlwZnMubyBsaWJ4bF9kb21haW4ubyBsaWJ4bF92ZGlzcGwubyBsaWJ4bF92c25k Lm8gXAogICAgICAgICAgICAgICAgICAgICAgICAgJChMSUJYTF9PQkpTLXkpCiBMSUJYTF9PQkpT ICs9IGxpYnhsX2dlbmlkLm8KIExJQlhMX09CSlMgKz0gX2xpYnhsX3R5cGVzLm8gbGlieGxfZmxh c2subyBfbGlieGxfdHlwZXNfaW50ZXJuYWwubwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXggN2Q4NTNjYS4uNzIwMGQ0OSAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0x OTEzLDYgKzE5MTMsMjAgQEAgaW50IGxpYnhsX2RldmljZV92ZGlzcGxfZ2V0aW5mbyhsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX3ZkaXNwbGluZm8gKnZkaXNwbGluZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWTsKIAorLyogVmlydHVhbCBzb3VuZHMg Ki8KK2ludCBsaWJ4bF9kZXZpY2VfdnNuZF9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hv dykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfRVhURVJOQUxfQ0FMTEVSU19PTkxZ OworaW50IGxpYnhsX2RldmljZV92c25kX3JlbW92ZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92c25kICp2 c25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hv dyAqYW9faG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9D QUxMRVJTX09OTFk7CitpbnQgbGlieGxfZGV2aWNlX3ZzbmRfZGVzdHJveShsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9k ZXZpY2VfdnNuZCAqdnNuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxp YnhsX2FzeW5jb3BfaG93ICphb19ob3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CisKIC8qIEtleWJvYXJkICovCiBpbnQgbGlieGxf ZGV2aWNlX3ZrYl9hZGQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZp Y2VfdmtiICp2a2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNv cF9ob3cgKmFvX2hvdykKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIv dG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKaW5kZXggMGVmNTRkMi4uZjgxMzExNCAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxf Y3JlYXRlLmMKQEAgLTE0NDksNiArMTQ0OSw3IEBAIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2Vf dHlwZSAqZGV2aWNlX3R5cGVfdGJsW10gPSB7CiAgICAgJmxpYnhsX19wY2lkZXZfZGV2dHlwZSwK ICAgICAmbGlieGxfX2R0ZGV2X2RldnR5cGUsCiAgICAgJmxpYnhsX192ZGlzcGxfZGV2dHlwZSwK KyAgICAmbGlieGxfX3ZzbmRfZGV2dHlwZSwKICAgICBOVUxMCiB9OwogCmRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwu aAppbmRleCA4YjcxNTE3Li42YjQwM2RjIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9p bnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAgLTM1NzUsNiAr MzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgbGlieGxfX3Vz YmRldl9kZXZ0eXBlOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSBsaWJ4 bF9fcGNpZGV2X2RldnR5cGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBl IGxpYnhsX192ZGlzcGxfZGV2dHlwZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNl X3R5cGUgbGlieGxfX3A5X2RldnR5cGU7CitleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2Rldmlj ZV90eXBlIGxpYnhsX192c25kX2RldnR5cGU7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGlieGxf ZGV2aWNlX3R5cGUgKmRldmljZV90eXBlX3RibFtdOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4 bC9saWJ4bF90eXBlcy5pZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggNzU2 ZTEyMC4uZmIzZTVlOCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApAQCAtNzkzLDYgKzc5Myw2OSBAQCBsaWJ4 bF9kZXZpY2VfdmRpc3BsID0gU3RydWN0KCJkZXZpY2VfdmRpc3BsIiwgWwogICAgICgiY29ubmVj dG9ycyIsIEFycmF5KGxpYnhsX2Nvbm5lY3Rvcl9wYXJhbSwgIm51bV9jb25uZWN0b3JzIikpCiAg ICAgXSkKIAorbGlieGxfdnNuZF9wY21fZm9ybWF0ID0gRW51bWVyYXRpb24oInZzbmRfcGNtX2Zv cm1hdCIsIFsKKyAgICAoMSwgICJTOCIpLAorICAgICgyLCAgIlU4IiksCisgICAgKDMsICAiUzE2 X0xFIiksCisgICAgKDQsICAiUzE2X0JFIiksCisgICAgKDUsICAiVTE2X0xFIiksCisgICAgKDYs ICAiVTE2X0JFIiksCisgICAgKDcsICAiUzI0X0xFIiksCisgICAgKDgsICAiUzI0X0JFIiksCisg ICAgKDksICAiVTI0X0xFIiksCisgICAgKDEwLCAiVTI0X0JFIiksCisgICAgKDExLCAiUzMyX0xF IiksCisgICAgKDEyLCAiUzMyX0JFIiksCisgICAgKDEzLCAiVTMyX0xFIiksCisgICAgKDE0LCAi VTMyX0JFIiksCisgICAgKDE1LCAiRjMyX0xFIiksCisgICAgKDE2LCAiRjMyX0JFIiksCisgICAg KDE3LCAiRjY0X0xFIiksCisgICAgKDE4LCAiRjY0X0JFIiksCisgICAgKDE5LCAiSUVDOTU4X1NV QkZSQU1FX0xFIiksCisgICAgKDIwLCAiSUVDOTU4X1NVQkZSQU1FX0JFIiksCisgICAgKDIxLCAi TVVfTEFXIiksCisgICAgKDIyLCAiQV9MQVciKSwKKyAgICAoMjMsICJJTUFfQURQQ00iKSwKKyAg ICAoMjQsICJNUEVHIiksCisgICAgKDI1LCAiR1NNIikKKyAgICBdKQorCitsaWJ4bF92c25kX3Bh cmFtcyA9IFN0cnVjdCgidnNuZF9wYXJhbXMiLCBbCisgICAgKCJzYW1wbGVfcmF0ZXMiLCBBcnJh eSh1aW50MzIsICJudW1fc2FtcGxlX3JhdGVzIikpLAorICAgICgic2FtcGxlX2Zvcm1hdHMiLCBB cnJheShsaWJ4bF92c25kX3BjbV9mb3JtYXQsICJudW1fc2FtcGxlX2Zvcm1hdHMiKSksCisgICAg KCJjaGFubmVsc19taW4iLCB1aW50MzIpLAorICAgICgiY2hhbm5lbHNfbWF4IiwgdWludDMyKSwK KyAgICAoImJ1ZmZlcl9zaXplIiwgdWludDMyKQorICAgIF0pCisKK2xpYnhsX3ZzbmRfc3RyZWFt X3R5cGUgPSBFbnVtZXJhdGlvbigidnNuZF9zdHJlYW1fdHlwZSIsIFsKKyAgICAoMSwgIlAiKSwK KyAgICAoMiwgIkMiKQorICAgIF0pCisKK2xpYnhsX3ZzbmRfc3RyZWFtID0gU3RydWN0KCJ2c25k X3N0cmVhbSIsIFsKKyAgICAoImlkIiwgdWludDMyKSwKKyAgICAoInR5cGUiLCBsaWJ4bF92c25k X3N0cmVhbV90eXBlKSwKKyAgICAoInBhcmFtcyIsIGxpYnhsX3ZzbmRfcGFyYW1zKQorICAgIF0p CisKK2xpYnhsX3ZzbmRfcGNtID0gU3RydWN0KCJ2c25kX3BjbSIsIFsKKyAgICAoIm5hbWUiLCBz dHJpbmcpLAorICAgICgicGFyYW1zIiwgbGlieGxfdnNuZF9wYXJhbXMpLAorICAgICgic3RyZWFt cyIsIEFycmF5KGxpYnhsX3ZzbmRfc3RyZWFtLCAibnVtX3ZzbmRfc3RyZWFtcyIpKQorICAgIF0p CisKK2xpYnhsX2RldmljZV92c25kID0gU3RydWN0KCJkZXZpY2VfdnNuZCIsIFsKKyAgICAoImJh Y2tlbmRfZG9taWQiLCBsaWJ4bF9kb21pZCksCisgICAgKCJiYWNrZW5kX2RvbW5hbWUiLCBzdHJp bmcpLAorICAgICgiZGV2aWQiLCBsaWJ4bF9kZXZpZCksCisgICAgKCJzaG9ydF9uYW1lIiwgc3Ry aW5nKSwKKyAgICAoImxvbmdfbmFtZSIsIHN0cmluZyksCisgICAgKCJwYXJhbXMiLCBsaWJ4bF92 c25kX3BhcmFtcyksCisgICAgKCJwY21zIiwgQXJyYXkobGlieGxfdnNuZF9wY20sICJudW1fdnNu ZF9wY21zIikpCisgICAgXSkKKwogbGlieGxfZG9tYWluX2NvbmZpZyA9IFN0cnVjdCgiZG9tYWlu X2NvbmZpZyIsIFsKICAgICAoImNfaW5mbyIsIGxpYnhsX2RvbWFpbl9jcmVhdGVfaW5mbyksCiAg ICAgKCJiX2luZm8iLCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyksCkBAIC04MDcsNiArODcwLDcg QEAgbGlieGxfZG9tYWluX2NvbmZpZyA9IFN0cnVjdCgiZG9tYWluX2NvbmZpZyIsIFsKICAgICAo InZ0cG1zIiwgQXJyYXkobGlieGxfZGV2aWNlX3Z0cG0sICJudW1fdnRwbXMiKSksCiAgICAgKCJw OXMiLCBBcnJheShsaWJ4bF9kZXZpY2VfcDksICJudW1fcDlzIikpLAogICAgICgidmRpc3BscyIs IEFycmF5KGxpYnhsX2RldmljZV92ZGlzcGwsICJudW1fdmRpc3BscyIpKSwKKyAgICAoInZzbmRz IiwgQXJyYXkobGlieGxfZGV2aWNlX3ZzbmQsICJudW1fdnNuZHMiKSksCiAgICAgIyBhIGNoYW5u ZWwgbWFuaWZlc3RzIGFzIGEgY29uc29sZSB3aXRoIGEgbmFtZSwKICAgICAjIHNlZSBkb2NzL21p c2MvY2hhbm5lbHMudHh0CiAgICAgKCJjaGFubmVscyIsIEFycmF5KGxpYnhsX2RldmljZV9jaGFu bmVsLCAibnVtX2NoYW5uZWxzIikpLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlw ZXNfaW50ZXJuYWwuaWRsIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXNfaW50ZXJuYWwuaWRsCmlu ZGV4IDY3M2E2ZDUuLjc4OThkYWUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVz X2ludGVybmFsLmlkbAorKysgYi90b29scy9saWJ4bC9saWJ4bF90eXBlc19pbnRlcm5hbC5pZGwK QEAgLTI3LDYgKzI3LDcgQEAgbGlieGxfX2RldmljZV9raW5kID0gRW51bWVyYXRpb24oImRldmlj ZV9raW5kIiwgWwogICAgICgxMCwgIlFVU0IiKSwKICAgICAoMTEsICI5UEZTIiksCiAgICAgKDEy LCAiVkRJU1BMIiksCisgICAgKDEzLCAiVlNORCIpCiAgICAgXSkKIAogbGlieGxfX2NvbnNvbGVf YmFja2VuZCA9IEVudW1lcmF0aW9uKCJjb25zb2xlX2JhY2tlbmQiLCBbCmRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF92c25kLmMgYi90b29scy9saWJ4bC9saWJ4bF92c25kLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY4ODVmOQotLS0gL2Rldi9udWxsCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX3ZzbmQuYwpAQCAtMCwwICsxLDMwNyBAQAorLyoKKyAqIENvcHly aWdodCAoQykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQKKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNp b24gMi4xIG9ubHkuIHdpdGggdGhlIHNwZWNpYWwKKyAqIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRl c2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKi8KKworI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgiCisjaW5jbHVkZSAieGVuL2lvL3Nu ZGlmLmgiCisKK3N0YXRpYyBpbnQgbGlieGxfX2RldmljZV92c25kX3NldGRlZmF1bHQobGlieGxf X2djICpnYywgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX2RldmljZV92c25kICp2c25kLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sIGhvdHBsdWcpCit7CisgICAgcmV0dXJuIGxpYnhsX19y ZXNvbHZlX2RvbWlkKGdjLCB2c25kLT5iYWNrZW5kX2RvbW5hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZ2c25kLT5iYWNrZW5kX2RvbWlkKTsKK30KKworc3RhdGljIGludCBs aWJ4bF9fZGV2aWNlX2Zyb21fdnNuZChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZzbmQgKnZzbmQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kZXZpY2UgKmRldmlj ZSkKK3sKKyAgIGRldmljZS0+YmFja2VuZF9kZXZpZCAgID0gdnNuZC0+ZGV2aWQ7CisgICBkZXZp Y2UtPmJhY2tlbmRfZG9taWQgICA9IHZzbmQtPmJhY2tlbmRfZG9taWQ7CisgICBkZXZpY2UtPmJh Y2tlbmRfa2luZCAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9WU05EOworICAgZGV2aWNlLT5kZXZp ZCAgICAgICAgICAgPSB2c25kLT5kZXZpZDsKKyAgIGRldmljZS0+ZG9taWQgICAgICAgICAgID0g ZG9taWQ7CisgICBkZXZpY2UtPmtpbmQgICAgICAgICAgICA9IExJQlhMX19ERVZJQ0VfS0lORF9W U05EOworCisgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBsaWJ4bF9fdnNuZF9mcm9tX3hl bnN0b3JlKGxpYnhsX19nYyAqZ2MsIGNvbnN0IGNoYXIgKmxpYnhsX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWQgZGV2aWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZzbmQgKnZzbmQpCit7Cisg ICAgY29uc3QgY2hhciAqYmVfcGF0aDsKKyAgICBpbnQgcmM7CisKKyAgICB2c25kLT5kZXZpZCA9 IGRldmlkOworICAgIHJjID0gbGlieGxfX3hzX3JlYWRfbWFuZGF0b3J5KGdjLCBYQlRfTlVMTCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoIiVzL2JhY2tlbmQi LCBsaWJ4bF9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmVfcGF0 aCk7CisgICAgaWYgKHJjKSByZXR1cm4gcmM7CisKKyAgICByZXR1cm4gbGlieGxfX2JhY2tlbmRw YXRoX3BhcnNlX2RvbWlkKGdjLCBiZV9wYXRoLCAmdnNuZC0+YmFja2VuZF9kb21pZCk7Cit9CisK K3N0YXRpYyB2b2lkIGxpYnhsX191cGRhdGVfY29uZmlnX3ZzbmQobGlieGxfX2djICpnYywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3ZzbmQgKmRz dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3Zz bmQgKnNyYykKK3sKKyAgICBkc3QtPmRldmlkID0gc3JjLT5kZXZpZDsKK30KKworc3RhdGljIGlu dCBsaWJ4bF9kZXZpY2VfdnNuZF9jb21wYXJlKGxpYnhsX2RldmljZV92c25kICpkMSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqZDIpCit7 CisgICAgcmV0dXJuIENPTVBBUkVfREVWSUQoZDEsIGQyKTsKK30KKworc3RhdGljIHZvaWQgbGli eGxfX2RldmljZV92c25kX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdnNuZCAqdnNuZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9k ZXYpCit7CisgICAgbGlieGxfX2RldmljZV9hZGRfYXN5bmMoZWdjLCBkb21pZCwgJmxpYnhsX192 c25kX2RldnR5cGUsIHZzbmQsIGFvZGV2KTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBsaWJ4 bF9fcmF0ZXNfdG9fc3RyX3ZzbmQoY2hhciAqc3RyLCB1aW50MzJfdCAqc2FtcGxlX3JhdGVzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9zYW1w bGVfcmF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGxlbjsKKyAgICBpbnQgaTsKKworICAgIGxl biA9IDA7CisKKyAgICBpZiAobnVtX3NhbXBsZV9yYXRlcyA9PSAwKSB7CisgICAgICAgIHJldHVy biBsZW47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9zYW1wbGVfcmF0ZXMgLSAx OyBpKyspIHsKKyAgICAgICAgaWYgKHN0cikgeworICAgICAgICAgICAgbGVuICs9IHNwcmludGYo JnN0cltsZW5dLCAiJXUsIiwgc2FtcGxlX3JhdGVzW2ldKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgIGxlbiArPSBzbnByaW50ZihOVUxMLCAwLCAiJXUsIiwgc2FtcGxlX3JhdGVzW2ld KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdHIpIHsKKyAgICAgICAgbGVuICs9IHNw cmludGYoJnN0cltsZW5dLCAiJXUiLCBzYW1wbGVfcmF0ZXNbaV0pOworICAgIH0gZWxzZSB7Cisg ICAgICAgIGxlbiArPSBzbnByaW50ZihOVUxMLCAwLCAiJXUiLCBzYW1wbGVfcmF0ZXNbaV0pOwor ICAgIH0KKworICAgIHJldHVybiBsZW47Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGlieGxf X2Zvcm1hdHNfdG9fc3RyX3ZzbmQoY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92c25kX3BjbV9mb3JtYXQgKnNhbXBsZV9mb3Jt YXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bnVtX3NhbXBsZV9mb3JtYXRzKQoreworICAgIHVuc2lnbmVkIGludCBsZW47CisgICAgaW50IGk7 CisKKyAgICBsZW4gPSAwOworCisgICAgaWYgKG51bV9zYW1wbGVfZm9ybWF0cyA9PSAwKSB7Cisg ICAgICAgIHJldHVybiBsZW47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9zYW1w bGVfZm9ybWF0cyAtIDE7IGkrKykgeworICAgICAgICBpZiAoc3RyKSB7CisgICAgICAgICAgICBs ZW4gKz0gc3ByaW50Zigmc3RyW2xlbl0sICIlcywiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfdnNuZF9wY21fZm9ybWF0X3RvX3N0cmluZyhzYW1wbGVfZm9ybWF0c1tpXSkpOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGVuICs9IHNucHJpbnRmKE5VTEwsIDAsICIl cywiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3ZzbmRfcGNtX2Zvcm1hdF90 b19zdHJpbmcoc2FtcGxlX2Zvcm1hdHNbaV0pKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm IChzdHIpIHsKKyAgICAgICAgbGVuICs9IHNwcmludGYoJnN0cltsZW5dLCAiJXMiLAorICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF92c25kX3BjbV9mb3JtYXRfdG9fc3RyaW5nKHNhbXBsZV9m b3JtYXRzW2ldKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbGVuICs9IHNucHJpbnRmKE5VTEws IDAsICIlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92c25kX3BjbV9mb3JtYXRf dG9fc3RyaW5nKHNhbXBsZV9mb3JtYXRzW2ldKSk7CisgICAgfQorCisgICAgcmV0dXJuIGxlbjsK K30KKworc3RhdGljIGludCBsaWJ4bF9fc2V0X3BhcmFtc192c25kKGxpYnhsX19nYyAqZ2MsIGNo YXIgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfdnNuZF9w YXJhbXMgKnBhcmFtcywgZmxleGFycmF5X3QgKmZyb250KQoreworICAgIGNoYXIgKmJ1ZmZlcjsK KyAgICBpbnQgbGVuOworICAgIGludCByYzsKKworICAgIGlmIChwYXJhbXMtPnNhbXBsZV9yYXRl cykgeworICAgICAgICAvLyBjYWxjdWxhdGUgcmVxdWlyZWQgc3RyaW5nIHNpemU7CisgICAgICAg IGxlbiA9IGxpYnhsX19yYXRlc190b19zdHJfdnNuZChOVUxMLCBwYXJhbXMtPnNhbXBsZV9yYXRl cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+bnVtX3Nh bXBsZV9yYXRlcyk7CisKKyAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgYnVmZmVyID0g bGlieGxfX21hbGxvYyhnYywgbGVuICsgMSk7CisKKyAgICAgICAgICAgIGxpYnhsX19yYXRlc190 b19zdHJfdnNuZChidWZmZXIsIHBhcmFtcy0+c2FtcGxlX3JhdGVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+bnVtX3NhbXBsZV9yYXRlcyk7CisgICAgICAg ICAgICByYyA9IGZsZXhhcnJheV9hcHBlbmRfcGFpcihmcm9udCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMiWEVOU05EX0ZJRUxEX1NBTVBMRV9S QVRFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXRoKSwgYnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChyYykgcmV0dXJuIHJjOworICAgICAgICB9 CisgICAgfQorCisgICAgaWYgKHBhcmFtcy0+c2FtcGxlX2Zvcm1hdHMpIHsKKyAgICAgICAgLy8g Y2FsY3VsYXRlIHJlcXVpcmVkIHN0cmluZyBzaXplOworICAgICAgICBsZW4gPSBsaWJ4bF9fZm9y bWF0c190b19zdHJfdnNuZChOVUxMLCBwYXJhbXMtPnNhbXBsZV9mb3JtYXRzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPm51bV9zYW1wbGVfZm9ybWF0 cyk7CisKKyAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgYnVmZmVyID0gbGlieGxfX21h bGxvYyhnYywgbGVuICsgMSk7CisKKyAgICAgICAgICAgIGxpYnhsX19mb3JtYXRzX3RvX3N0cl92 c25kKGJ1ZmZlciwgcGFyYW1zLT5zYW1wbGVfZm9ybWF0cywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJhbXMtPm51bV9zYW1wbGVfZm9ybWF0cyk7CisgICAgICAgICAg ICByYyA9IGZsZXhhcnJheV9hcHBlbmRfcGFpcihmcm9udCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMiWEVOU05EX0ZJRUxEX1NBTVBMRV9GT1JN QVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh dGgpLCBidWZmZXIpOworICAgICAgICAgICAgaWYgKHJjKSByZXR1cm4gcmM7CisgICAgICAgIH0K KyAgICB9CisKKyAgICBpZiAocGFyYW1zLT5jaGFubmVsc19taW4pIHsKKyAgICAgICAgcmMgPSBm bGV4YXJyYXlfYXBwZW5kX3BhaXIoZnJvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdDU1BSSU5URigiJXMiWEVOU05EX0ZJRUxEX0NIQU5ORUxTX01JTiwgcGF0aCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXUiLCBwYXJhbXMt PmNoYW5uZWxzX21pbikpOworICAgICAgICBpZiAocmMpIHJldHVybiByYzsKKyAgICB9CisKKyAg ICBpZiAocGFyYW1zLT5jaGFubmVsc19tYXgpIHsKKyAgICAgICAgcmMgPSBmbGV4YXJyYXlfYXBw ZW5kX3BhaXIoZnJvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BS SU5URigiJXMiWEVOU05EX0ZJRUxEX0NIQU5ORUxTX01BWCwgcGF0aCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXUiLCBwYXJhbXMtPmNoYW5uZWxzX21h eCkpOworICAgICAgICBpZiAocmMpIHJldHVybiByYzsKKyAgICB9CisKKyAgICBpZiAocGFyYW1z LT5idWZmZXJfc2l6ZSkgeworICAgICAgICByYyA9IGZsZXhhcnJheV9hcHBlbmRfcGFpcihmcm9u dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlcyJYRU5T TkRfRklFTERfQlVGRkVSX1NJWkUsIHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHQ1NQUklOVEYoIiV1IiwgcGFyYW1zLT5idWZmZXJfc2l6ZSkpOworICAgICAgICBp ZiAocmMpIHJldHVybiByYzsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBsaWJ4bF9fc2V0X3N0cmVhbXNfdnNuZChsaWJ4bF9fZ2MgKmdjLCBjaGFyICpwYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF92c25kX3N0cmVhbSAqc3RyZWFt cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9zdHJlYW1zLCBm bGV4YXJyYXlfdCAqZnJvbnQpCit7CisgICAgaW50IGk7CisgICAgaW50IHJjOworCisgICAgZm9y IChpID0gMDsgaSA8IG51bV9zdHJlYW1zOyBpKyspIHsKKyAgICAgICAgcmMgPSBmbGV4YXJyYXlf YXBwZW5kX3BhaXIoZnJvbnQsCisgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMlZC8iWEVO U05EX0ZJRUxEX1NUUkVBTV9VTklRVUVfSUQsIHBhdGgsIGkpLAorICAgICAgICAgICAgICAgICBH Q1NQUklOVEYoIiV1Iiwgc3RyZWFtc1tpXS5pZCkpOworICAgICAgICBpZiAocmMpIHJldHVybiBy YzsKKworICAgICAgICBjb25zdCBjaGFyICp0eXBlID0gbGlieGxfdnNuZF9zdHJlYW1fdHlwZV90 b19zdHJpbmcoc3RyZWFtc1tpXS50eXBlKTsKKworICAgICAgICBpZiAodHlwZSkgeworICAgICAg ICAgICAgcmMgPSBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoZnJvbnQsCisgICAgICAgICAgICAgICAg ICAgICBHQ1NQUklOVEYoIiVzJWQvIlhFTlNORF9GSUVMRF9UWVBFLCBwYXRoLCBpKSwKKyAgICAg ICAgICAgICAgICAgICAgIChjaGFyICopdHlwZSk7CisgICAgICAgICAgICBpZiAocmMpIHJldHVy biByYzsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbGlieGxfX3NldF9wYXJhbXNfdnNuZChn YywgR0NTUFJJTlRGKCIlcyVkLyIsIHBhdGgsIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnN0cmVhbXNbaV0ucGFyYW1zLCBmcm9udCk7CisgICAgICAgIGlmIChyYykg cmV0dXJuIHJjOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxpYnhs X19zZXRfcGNtc192c25kKGxpYnhsX19nYyAqZ2MsIGxpYnhsX3ZzbmRfcGNtICpwY21zLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX3BjbXMsIGZsZXhhcnJheV90ICpm cm9udCkKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgcmM7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwg bnVtX3BjbXM7IGkrKykgeworICAgICAgICBpZiAocGNtc1tpXS5uYW1lKSB7CisgICAgICAgICAg ICByYyA9IGZsZXhhcnJheV9hcHBlbmRfcGFpcihmcm9udCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQvIlhFTlNORF9GSUVMRF9ERVZJQ0VfTkFN RSwgaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY21zW2ldLm5h bWUpOworICAgICAgICAgICAgaWYgKHJjKSByZXR1cm4gcmM7CisgICAgICAgIH0KKworICAgICAg ICBjaGFyICpwYXRoID0gR0NTUFJJTlRGKCIlZC8iLCBpKTsKKworICAgICAgICByYyA9IGxpYnhs X19zZXRfcGFyYW1zX3ZzbmQoZ2MsIHBhdGgsICZwY21zW2ldLnBhcmFtcywgZnJvbnQpOworICAg ICAgICBpZiAocmMpIHJldHVybiByYzsKKworICAgICAgICByYyA9IGxpYnhsX19zZXRfc3RyZWFt c192c25kKGdjLCBwYXRoLCBwY21zW2ldLnN0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGNtc1tpXS5udW1fdnNuZF9zdHJlYW1zLCBmcm9udCk7CisgICAgICAg IGlmIChyYykgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50IGxpYnhsX19zZXRfeGVuc3RvcmVfdnNuZChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92c25k ICp2c25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGFycmF5X3Qg KmJhY2ssIGZsZXhhcnJheV90ICpmcm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZsZXhhcnJheV90ICpyb19mcm9udCkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAo dnNuZC0+bG9uZ19uYW1lKSB7CisgICAgICAgIHJjID0gZmxleGFycmF5X2FwcGVuZF9wYWlyKGZy b250LCBYRU5TTkRfRklFTERfVkNBUkRfTE9OR19OQU1FLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2c25kLT5sb25nX25hbWUpOworICAgICAgICBpZiAocmMpIHJldHVybiBy YzsKKyAgICB9CisKKyAgICBpZiAodnNuZC0+c2hvcnRfbmFtZSkgeworICAgICAgICByYyA9IGZs ZXhhcnJheV9hcHBlbmRfcGFpcihmcm9udCwgWEVOU05EX0ZJRUxEX1ZDQVJEX1NIT1JUX05BTUUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzbmQtPnNob3J0X25hbWUpOwor ICAgICAgICBpZiAocmMpIHJldHVybiByYzsKKyAgICB9CisKKyAgICByYyA9IGxpYnhsX19zZXRf cGFyYW1zX3ZzbmQoZ2MsICIiLCAmdnNuZC0+cGFyYW1zLCBmcm9udCk7CisgICAgaWYgKHJjKSBy ZXR1cm4gcmM7CisKKyAgICByYyA9IGxpYnhsX19zZXRfcGNtc192c25kKGdjLCB2c25kLT5wY21z LCB2c25kLT5udW1fdnNuZF9wY21zLCBmcm9udCk7CisgICAgaWYgKHJjKSByZXR1cm4gcmM7CisK KyAgICByZXR1cm4gMDsKK30KKworTElCWExfREVGSU5FX0RFVklDRV9BREQodnNuZCkKK3N0YXRp YyBMSUJYTF9ERUZJTkVfREVWSUNFU19BREQodnNuZCkKK0xJQlhMX0RFRklORV9ERVZJQ0VfUkVN T1ZFKHZzbmQpCitzdGF0aWMgTElCWExfREVGSU5FX1VQREFURV9ERVZJRCh2c25kLCAidnNuZCIp CisKK0RFRklORV9ERVZJQ0VfVFlQRV9TVFJVQ1QodnNuZCwKKyAgICAudXBkYXRlX2NvbmZpZyA9 IChkZXZpY2VfdXBkYXRlX2NvbmZpZ19mbl90KSBsaWJ4bF9fdXBkYXRlX2NvbmZpZ192c25kLAor ICAgIC5mcm9tX3hlbnN0b3JlID0gKGRldmljZV9mcm9tX3hlbnN0b3JlX2ZuX3QpIGxpYnhsX192 c25kX2Zyb21feGVuc3RvcmUsCisgICAgLnNldF94ZW5zdG9yZV9jb25maWcgPSAoZGV2aWNlX3Nl dF94ZW5zdG9yZV9jb25maWdfZm5fdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhs X19zZXRfeGVuc3RvcmVfdnNuZAorKTsKKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1v ZGU6IEMKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAq IEVuZDoKKyAqLwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK