From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v3 14/15] tools: implement new generic set value interface and MBA set value command Date: Tue, 5 Sep 2017 17:32:36 +0800 Message-ID: <1504603957-5389-15-git-send-email-yi.y.sun@linux.intel.com> References: <1504603957-5389-1-git-send-email-yi.y.sun@linux.intel.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 1dpAWd-0007gH-J7 for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 09:52:07 +0000 In-Reply-To: <1504603957-5389-1-git-send-email-yi.y.sun@linux.intel.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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, dgdegra@tycho.nsa.gov, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5ldyBnZW5lcmljIHNldCB2YWx1ZSBpbnRlcmZhY2VzIGlu IGxpYnhjIGFuZCBsaWJ4bC4KVGhlc2UgaW50ZXJmYWNlcyBhcmUgc3VpdGFibGUgZm9yIGFsbCBh bGxvY2F0aW9uIGZlYXR1cmVzLiBJdCBhbHNvIGFkZHMgYQpuZXcgTUJBIHNldCB2YWx1ZSBjb21t YW5kIGluIHhsLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+Ci0tLQp2MzoKICAgIC0gYWRkICdjb25zdCcgZm9yICdvcHRzW10nIGluICdtYWluX3Bzcl9t YmFfc2V0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZXBs YWNlICdsaWJ4bF9wc3JfY2JtX3R5cGUnIHRvICdsaWJ4bF9wc3JfdHlwZScgZm9yIG5ld2x5IGRl ZmluZWQKICAgICAgaW50ZXJmYWNlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9u bsOpKQotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgIDYgKystLS0KIHRvb2xz L2xpYnhjL3hjX3Bzci5jICAgICAgICAgIHwgIDkgKysrKy0tLQogdG9vbHMvbGlieGwvbGlieGxf cHNyLmMgICAgICAgfCA1NiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiB0b29scy94bC94bC5oICAgICAgICAgICAgICAgICB8ICAxICsKIHRvb2xzL3hsL3hsX2Nt ZHRhYmxlLmMgICAgICAgIHwgIDYgKysrKysKIHRvb2xzL3hsL3hsX3Bzci5jICAgICAgICAgICAg IHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVz IGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmgKaW5kZXggZWVmMDZiZS4uMjFkYWMyZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTI0 OTksOSArMjQ5OSw5IEBAIGludCB4Y19wc3JfY210X2dldF9kYXRhKHhjX2ludGVyZmFjZSAqeGNo LCB1aW50MzJfdCBybWlkLCB1aW50MzJfdCBjcHUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCAqdHNjKTsKIGludCB4Y19wc3JfY210X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gp OwogCi1pbnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVp bnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBl IHR5cGUsIHVpbnQzMl90IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCBkYXRhKTsKK2ludCB4Y19wc3Jfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90 eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IGRhdGEpOwogaW50IHhjX3Bzcl9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4 Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5 cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDY0X3QgKmRhdGEpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90b29scy9s aWJ4Yy94Y19wc3IuYwppbmRleCAyZjBlZWQ5Li5lNTNiNWY1IDEwMDY0NAotLS0gYS90b29scy9s aWJ4Yy94Y19wc3IuYworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMjQ4LDkgKzI0OCw5 IEBAIGludCB4Y19wc3JfY210X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gpCiAKICAgICByZXR1 cm4gMDsKIH0KLWludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNy X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGRhdGEpCitpbnQgeGNfcHNyX3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19w c3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50NjRfdCBkYXRhKQogewogICAgIERFQ0xBUkVfRE9NQ1RMOwogICAgIHVpbnQzMl90IGNt ZDsKQEAgLTI2OSw2ICsyNjksOSBAQCBpbnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNf aW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIGNhc2UgWENfUFNSX0NBVF9MMl9D Qk06CiAgICAgICAgIGNtZCA9IFhFTl9ET01DVExfUFNSX0FMTE9DX1NFVF9MMl9DQk07CiAgICAg ICAgIGJyZWFrOworICAgIGNhc2UgWENfUFNSX01CQV9USFJUTDoKKyAgICAgICAgY21kID0gWEVO X0RPTUNUTF9QU1JfQUxMT0NfU0VUX01CQV9USFJUTDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVm YXVsdDoKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMK aW5kZXggNzhkNWJjNS4uZDNjM2Q0MiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNy LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKQEAgLTMyOCwzMyArMzI4LDcgQEAgaW50 IGxpYnhsX3Bzcl9jYXRfc2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9jYm1fdHlwZSB0eXBlLCBsaWJ4bF9i aXRtYXAgKnRhcmdldF9tYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNi bSkKIHsKLSAgICBHQ19JTklUKGN0eCk7Ci0gICAgaW50IHJjOwotICAgIGludCBzb2NrZXRpZCwg bnJfc29ja2V0czsKLQotICAgIHJjID0gbGlieGxfX2NvdW50X3BoeXNpY2FsX3NvY2tldHMoZ2Ms ICZucl9zb2NrZXRzKTsKLSAgICBpZiAocmMpIHsKLSAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlk LCAiZmFpbGVkIHRvIGdldCBzeXN0ZW0gc29ja2V0IGNvdW50Iik7Ci0gICAgICAgIGdvdG8gb3V0 OwotICAgIH0KLQotICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsICp0YXJnZXRf bWFwKSB7Ci0gICAgICAgIHhjX3Bzcl90eXBlIHhjX3R5cGU7Ci0KLSAgICAgICAgaWYgKHNvY2tl dGlkID49IG5yX3NvY2tldHMpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICB4Y190eXBl ID0gbGlieGxfX3Bzcl90eXBlX3RvX2xpYnhjX3Bzcl90eXBlKHR5cGUpOwotICAgICAgICBpZiAo eGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRvbWlkLCB4Y190eXBlLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0aWQsIGNibSkpIHsKLSAg ICAgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBlKTsK LSAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKLSAgICAgICAgfQotICAgIH0KLQotb3V0Ogot ICAgIEdDX0ZSRUU7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBsaWJ4bF9wc3Jfc2V0X3Zh bChjdHgsIGRvbWlkLCB0eXBlLCB0YXJnZXRfbWFwLCBjYm0pOwogfQogCiBpbnQgbGlieGxfcHNy X2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKQEAgLTQ1OCw3ICs0 MzIsMzMgQEAgaW50IGxpYnhsX3Bzcl9zZXRfdmFsKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlLCBsaWJ4bF9i aXRtYXAgKnRhcmdldF9tYXAsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsKQog ewotICAgIHJldHVybiBFUlJPUl9GQUlMOworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBpbnQgcmM7 CisgICAgaW50IHNvY2tldGlkLCBucl9zb2NrZXRzOworCisgICAgcmMgPSBsaWJ4bF9fY291bnRf cGh5c2ljYWxfc29ja2V0cyhnYywgJm5yX3NvY2tldHMpOworICAgIGlmIChyYykgeworICAgICAg ICBMT0coRVJST1IsICJmYWlsZWQgdG8gZ2V0IHN5c3RlbSBzb2NrZXQgY291bnQiKTsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRp ZCwgKnRhcmdldF9tYXApIHsKKyAgICAgICAgeGNfcHNyX3R5cGUgeGNfdHlwZTsKKworICAgICAg ICBpZiAoc29ja2V0aWQgPj0gbnJfc29ja2V0cykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7Cisg ICAgICAgIGlmICh4Y19wc3Jfc2V0X2RvbWFpbl9kYXRhKGN0eC0+eGNoLCBkb21pZCwgeGNfdHlw ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0aWQsIHZhbCkpIHsK KyAgICAgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBl KTsKKyAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgfQorICAgIH0KKworb3V0 OgorICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjOwogfQogCiBpbnQgbGlieGxfcHNyX2dldF92 YWwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwv eGwuaCBiL3Rvb2xzL3hsL3hsLmgKaW5kZXggMzM4OWRmOS4uM2Y5OWI2YiAxMDA2NDQKLS0tIGEv dG9vbHMveGwveGwuaAorKysgYi90b29scy94bC94bC5oCkBAIC0yMDQsNiArMjA0LDcgQEAgaW50 IG1haW5fcHNyX2NtdF9kZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bz cl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NhdF9jYm1f c2V0KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50IGFy Z2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3Bzcl9tYmFfc2V0KGludCBhcmdjLCBjaGFyICoq YXJndik7CiBpbnQgbWFpbl9wc3JfbWJhX3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKICNl bmRpZgogaW50IG1haW5fcWVtdV9tb25pdG9yX2NvbW1hbmQoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0 YWJsZS5jCmluZGV4IGNkYzIzNDkuLjlkNDVkM2IgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2Nt ZHRhYmxlLmMKKysrIGIvdG9vbHMveGwveGxfY21kdGFibGUuYwpAQCAtNTYwLDYgKzU2MCwxMiBA QCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiW29wdGlvbnNdIDxEb21h aW4+IiwKICAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0 byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vzc2VkXG4iCiAgICAgfSwKKyAg ICB7ICJwc3ItbWJhLXNldCIsCisgICAgICAmbWFpbl9wc3JfbWJhX3NldCwgMCwgMSwKKyAgICAg ICJTZXQgdGhyb3R0bGluZyB2YWx1ZSAoVEhSVEwpIGZvciBhIGRvbWFpbiIsCisgICAgICAiW29w dGlvbnNdIDxEb21haW4+IDxUSFJUTD4iLAorICAgICAgIi1zIDxzb2NrZXQ+ICAgICAgIFNwZWNp ZnkgdGhlIHNvY2tldCB0byBwcm9jZXNzLCBvdGhlcndpc2UgYWxsIHNvY2tldHMgYXJlIHByb2Nl c3NlZFxuIgorICAgIH0sCiAgICAgeyAicHNyLW1iYS1zaG93IiwKICAgICAgICZtYWluX3Bzcl9t YmFfc2hvdywgMCwgMSwKICAgICAgICJTaG93IE1lbW9yeSBCYW5kd2lkdGggQWxsb2NhdGlvbiBp bmZvcm1hdGlvbiIsCmRpZmYgLS1naXQgYS90b29scy94bC94bF9wc3IuYyBiL3Rvb2xzL3hsL3hs X3Bzci5jCmluZGV4IDQ2Yjc3ODguLmE2NDhiMWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3Bz ci5jCisrKyBiL3Rvb2xzL3hsL3hsX3Bzci5jCkBAIC01NTIsNiArNTUyLDYxIEBAIGludCBtYWlu X3Bzcl9tYmFfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgcmV0dXJuIHBzcl92YWxf c2hvdyhkb21pZCwgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkEsIDApOwogfQogCitpbnQgbWFpbl9w c3JfbWJhX3NldChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgdWludDMyX3QgZG9taWQ7 CisgICAgbGlieGxfcHNyX3R5cGUgdHlwZTsKKyAgICB1aW50NjRfdCB0aHJ0bDsKKyAgICBpbnQg cmV0LCBvcHQgPSAwOworICAgIGxpYnhsX2JpdG1hcCB0YXJnZXRfbWFwOworICAgIGNoYXIgKnZh bHVlOworICAgIGxpYnhsX3N0cmluZ19saXN0IHNvY2tldF9saXN0OworICAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsIGVuZDsKKyAgICB1bnNpZ25lZCBpbnQgaSwgaiwgbGVuOworCisgICAgc3RhdGlj IGNvbnN0IHN0cnVjdCBvcHRpb24gb3B0c1tdID0geworICAgICAgICB7InNvY2tldCIsIDEsIDAs ICdzJ30sCisgICAgICAgIENPTU1PTl9MT05HX09QVFMKKyAgICB9OworCisgICAgbGlieGxfc29j a2V0X2JpdG1hcF9hbGxvYyhjdHgsICZ0YXJnZXRfbWFwLCAwKTsKKyAgICBsaWJ4bF9iaXRtYXBf c2V0X25vbmUoJnRhcmdldF9tYXApOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgInM6 Iiwgb3B0cywgInBzci1tYmEtc2V0IiwgMCkgeworICAgIGNhc2UgJ3MnOgorICAgICAgICB0cmlt KGlzc3BhY2UsIG9wdGFyZywgJnZhbHVlKTsKKyAgICAgICAgc3BsaXRfc3RyaW5nX2ludG9fc3Ry aW5nX2xpc3QodmFsdWUsICIsIiwgJnNvY2tldF9saXN0KTsKKyAgICAgICAgbGVuID0gbGlieGxf c3RyaW5nX2xpc3RfbGVuZ3RoKCZzb2NrZXRfbGlzdCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkg PCBsZW47IGkrKykgeworICAgICAgICAgICBwYXJzZV9yYW5nZShzb2NrZXRfbGlzdFtpXSwgJnN0 YXJ0LCAmZW5kKTsKKyAgICAgICAgICAgIGZvciAoaiA9IHN0YXJ0OyBqIDw9IGVuZDsgaisrKQor ICAgICAgICAgICAgICAgIGxpYnhsX2JpdG1hcF9zZXQoJnRhcmdldF9tYXAsIGopOworICAgICAg ICB9CisKKyAgICAgICAgbGlieGxfc3RyaW5nX2xpc3RfZGlzcG9zZSgmc29ja2V0X2xpc3QpOwor ICAgICAgICBmcmVlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdHlwZSA9 IExJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhSVEw7CisKKyAgICBpZiAobGlieGxfYml0bWFwX2lz X2VtcHR5KCZ0YXJnZXRfbWFwKSkKKyAgICAgICAgbGlieGxfYml0bWFwX3NldF9hbnkoJnRhcmdl dF9tYXApOworCisgICAgaWYgKGFyZ2MgIT0gb3B0aW5kICsgMikgeworICAgICAgICBoZWxwKCJw c3ItbWJhLXNldCIpOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisKKyAgICBkb21pZCA9IGZp bmRfZG9tYWluKGFyZ3Zbb3B0aW5kXSk7CisgICAgdGhydGwgPSBzdHJ0b2xsKGFyZ3Zbb3B0aW5k ICsgMV0sIE5VTEwgLCAwKTsKKworICAgIHJldCA9IGxpYnhsX3Bzcl9zZXRfdmFsKGN0eCwgZG9t aWQsIHR5cGUsICZ0YXJnZXRfbWFwLCB0aHJ0bCk7CisKKyAgICBsaWJ4bF9iaXRtYXBfZGlzcG9z ZSgmdGFyZ2V0X21hcCk7CisgICAgcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBwc3JfbWJh X2h3aW5mbyh2b2lkKQogewogICAgIGludCByYzsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==