From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v10 10/11] tools: implement new generic set value interface and MBA set value command Date: Tue, 19 Dec 2017 08:42:21 +0800 Message-ID: <1513644142-50972-11-git-send-email-yi.y.sun@linux.intel.com> References: <1513644142-50972-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 us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eR72S-0007RL-1M for xen-devel@lists.xenproject.org; Tue, 19 Dec 2017 01:49:48 +0000 In-Reply-To: <1513644142-50972-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Chao Peng , Yi Sun , Ian Jackson , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5ldyBnZW5lcmljIHNldCB2YWx1ZSBpbnRlcmZhY2VzIGlu IGxpYnhjIGFuZCBsaWJ4bC4KVGhlc2UgaW50ZXJmYWNlcyBhcmUgc3VpdGFibGUgZm9yIGFsbCBh bGxvY2F0aW9uIGZlYXR1cmVzLiBJdCBhbHNvIGFkZHMgYQpuZXcgTUJBIHNldCB2YWx1ZSBjb21t YW5kIGluIHhsLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+Ci0tLQpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIu cGF1QGNpdHJpeC5jb20+CkNDOiBDaGFvIFBlbmcgPGNoYW8ucC5wZW5nQGxpbnV4LmludGVsLmNv bT4KCnYxMDoKICAgIC0gbW92ZSBhcmdjIGNoZWNrIHRvIG9yaWdpbmFsIHBsYWNlIHRvIG1ha2Ug cGVyIHNvY2tldCBzZXR0aW5nIHdvcmsuCnY1OgogICAgLSBtb3ZlIHhjX3R5cGUgZGVmaW5pdGlv biBhbmQgdmFsdWUgZ2V0IG91dCBvZiB0aGUgbG9vcC4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dl ciBQYXUgTW9ubsOpKQp2NDoKICAgIC0gcmVtb3ZlICdBTExPQ18nIGZyb20gbWFjcm8gbmFtZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBhZGp1c3QgcGxhY2Ug b2YgYXJnYyBjaGVjayBhbmQgcmV0dXJuIEVYSVRfRkFJTFVSRS4KICAgICAgKHN1Z2dlc3RlZCBi eSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBmaXggaW5kZW50YXRpb24gaXNzdWUuCiAgICAgIChz dWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbW92ZSBzYW1lIHR5cGUgbG9jYWwg dmFyaWFibGVzIGRlY2xhcmF0aW9uIHRvIGEgc2luZ2xlIGxpbmUuCiAgICAgIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1IE1vbm7DqSkKdjM6CiAgICAtIGFkZCAnY29uc3QnIGZvciAnb3B0c1tdJyBp biAnbWFpbl9wc3JfbWJhX3NldCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7D qSkKICAgIC0gcmVwbGFjZSAnbGlieGxfcHNyX2NibV90eXBlJyB0byAnbGlieGxfcHNyX3R5cGUn IGZvciBuZXdseSBkZWZpbmVkCiAgICAgIGludGVyZmFjZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkg Um9nZXIgUGF1IE1vbm7DqSkKLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICA2 ICsrLS0tCiB0b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8ICA5ICsrKystLS0KIHRvb2xz L2xpYnhsL2xpYnhsX3Bzci5jICAgICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLQogdG9vbHMveGwveGwuaCAgICAgICAgICAgICAgICAgfCAgMSArCiB0b29s cy94bC94bF9jbWR0YWJsZS5jICAgICAgICB8ICA2ICsrKysrCiB0b29scy94bC94bF9wc3IuYyAg ICAgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDYgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaAppbmRleCBmYzBkNGQyLi45MGJlZTIwIDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaApAQCAtMjUzMiw5ICsyNTMyLDkgQEAgaW50IHhjX3Bzcl9jbXRfZ2V0X2RhdGEoeGNfaW50 ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHJtaWQsIHVpbnQzMl90IGNwdSwKICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90ICp0c2MpOwogaW50IHhjX3Bzcl9jbXRfZW5hYmxlZCh4Y19pbnRl cmZhY2UgKnhjaCk7CiAKLWludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eGNfcHNyX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90IGRhdGEpOworaW50IHhjX3Bzcl9zZXRfZG9tYWluX2RhdGEoeGNf aW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgeGNfcHNyX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgZGF0YSk7CiBpbnQgeGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCAqZGF0YSk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3Iu YyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDM3YTZmZWIuLjFhMGFiNjMgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0y NDgsOSArMjQ4LDkgQEAgaW50IHhjX3Bzcl9jbXRfZW5hYmxlZCh4Y19pbnRlcmZhY2UgKnhjaCkK IAogICAgIHJldHVybiAwOwogfQotaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2lu dGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSkKK2ludCB4Y19wc3Jfc2V0X2RvbWFpbl9kYXRh KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHhjX3Bzcl90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCiB7CiAgICAgREVDTEFSRV9ET01DVEw7CiAgICAg dWludDMyX3QgY21kOwpAQCAtMjY5LDYgKzI2OSw5IEBAIGludCB4Y19wc3JfY2F0X3NldF9kb21h aW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19Q U1JfQ0FUX0wyX0NCTToKICAgICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfU0VUX0wyX0NCTTsK ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQg PSBYRU5fRE9NQ1RMX1BTUl9TRVRfTUJBX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZh dWx0OgogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpp bmRleCA3YzU2MGJjLi45Y2VkN2QxIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3Iu YworKysgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtMzI4LDMyICszMjgsNyBAQCBpbnQg bGlieGxfcHNyX2NhdF9zZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUsIGxpYnhsX2Jp dG1hcCAqdGFyZ2V0X21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgY2Jt KQogewotICAgIEdDX0lOSVQoY3R4KTsKLSAgICBpbnQgcmM7Ci0gICAgaW50IHNvY2tldGlkLCBu cl9zb2NrZXRzOwotCi0gICAgcmMgPSBsaWJ4bF9fY291bnRfcGh5c2ljYWxfc29ja2V0cyhnYywg Jm5yX3NvY2tldHMpOwotICAgIGlmIChyYykgewotICAgICAgICBMT0dFRChFUlJPUiwgZG9taWQs ICJmYWlsZWQgdG8gZ2V0IHN5c3RlbSBzb2NrZXQgY291bnQiKTsKLSAgICAgICAgZ290byBvdXQ7 Ci0gICAgfQotCi0gICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgKnRhcmdldF9t YXApIHsKLSAgICAgICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfdHlwZV90b19s aWJ4Y19wc3JfdHlwZSh0eXBlKTsKLQotICAgICAgICBpZiAoc29ja2V0aWQgPj0gbnJfc29ja2V0 cykKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmICh4Y19wc3JfY2F0X3NldF9kb21h aW5fZGF0YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzb2NrZXRpZCwgY2JtKSkgewotICAgICAgICAgICAgbGlieGxfX3Bz cl9hbGxvY19sb2dfZXJyX21zZyhnYywgZXJybm8sIHR5cGUpOwotICAgICAgICAgICAgcmMgPSBF UlJPUl9GQUlMOwotICAgICAgICB9Ci0gICAgfQotCi1vdXQ6Ci0gICAgR0NfRlJFRTsKLSAgICBy ZXR1cm4gcmM7CisgICAgcmV0dXJuIGxpYnhsX3Bzcl9zZXRfdmFsKGN0eCwgZG9taWQsIHR5cGUs IHRhcmdldF9tYXAsIGNibSk7CiB9CiAKIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxf Y3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLApAQCAtNDUzLDcgKzQyOCwzMCBAQCBpbnQgbGlieGxf cHNyX3NldF92YWwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX3Bzcl90eXBlIHR5cGUsIGxpYnhsX2JpdG1hcCAqdGFyZ2V0X21hcCwK ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWwpCiB7Ci0gICAgcmV0dXJuIEVSUk9S X0ZBSUw7CisgICAgR0NfSU5JVChjdHgpOworICAgIGludCByYywgc29ja2V0aWQsIG5yX3NvY2tl dHM7CisgICAgeGNfcHNyX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfdHlwZV90b19saWJ4Y19w c3JfdHlwZSh0eXBlKTsKKworICAgIHJjID0gbGlieGxfX2NvdW50X3BoeXNpY2FsX3NvY2tldHMo Z2MsICZucl9zb2NrZXRzKTsKKyAgICBpZiAocmMpIHsKKyAgICAgICAgTE9HKEVSUk9SLCAiZmFp bGVkIHRvIGdldCBzeXN0ZW0gc29ja2V0IGNvdW50Iik7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKworICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsICp0YXJnZXRfbWFwKSB7 CisgICAgICAgIGlmIChzb2NrZXRpZCA+PSBucl9zb2NrZXRzKQorICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgaWYgKHhjX3Bzcl9zZXRfZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRvbWlkLCB4 Y190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRpZCwgdmFs KSkgeworICAgICAgICAgICAgbGlieGxfX3Bzcl9hbGxvY19sb2dfZXJyX21zZyhnYywgZXJybm8s IHR5cGUpOworICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICB9CisgICAgfQor CitvdXQ6CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7CiB9CiAKIGludCBsaWJ4bF9wc3Jf Z2V0X3ZhbChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCmRpZmYgLS1naXQgYS90b29s cy94bC94bC5oIGIvdG9vbHMveGwveGwuaAppbmRleCBhNzI0NThiLi40ZTc4NGZmIDEwMDY0NAot LS0gYS90b29scy94bC94bC5oCisrKyBiL3Rvb2xzL3hsL3hsLmgKQEAgLTIwOCw2ICsyMDgsNyBA QCBpbnQgbWFpbl9wc3JfY210X2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1h aW5fcHNyX2NtdF9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0 X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9jYXRfc2hvdyhp bnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5fcHNyX21iYV9zZXQoaW50IGFyZ2MsIGNo YXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9tYmFfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OwogI2VuZGlmCiBpbnQgbWFpbl9xZW11X21vbml0b3JfY29tbWFuZChpbnQgYXJnYywgY2hhciAq KmFyZ3YpOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUuYyBiL3Rvb2xzL3hsL3hs X2NtZHRhYmxlLmMKaW5kZXggZmI5ZTkxOC4uNmQ4OTQzOSAxMDA2NDQKLS0tIGEvdG9vbHMveGwv eGxfY21kdGFibGUuYworKysgYi90b29scy94bC94bF9jbWR0YWJsZS5jCkBAIC01ODYsNiArNTg2 LDEyIEBAIHN0cnVjdCBjbWRfc3BlYyBjbWRfdGFibGVbXSA9IHsKICAgICAgICJbb3B0aW9uc10g PERvbWFpbj4iLAogICAgICAgIi1sIDxsZXZlbD4gICAgICAgIFNwZWNpZnkgdGhlIGNhY2hlIGxl dmVsIHRvIHByb2Nlc3MsIG90aGVyd2lzZSBMMyBjYWNoZSBpcyBwcm9jZXNzZWRcbiIKICAgICB9 LAorICAgIHsgInBzci1tYmEtc2V0IiwKKyAgICAgICZtYWluX3Bzcl9tYmFfc2V0LCAwLCAxLAor ICAgICAgIlNldCB0aHJvdHRsaW5nIHZhbHVlIChUSFJUTCkgZm9yIGEgZG9tYWluIiwKKyAgICAg ICJbb3B0aW9uc10gPERvbWFpbj4gPFRIUlRMPiIsCisgICAgICAiLXMgPHNvY2tldD4gICAgICAg U3BlY2lmeSB0aGUgc29ja2V0IHRvIHByb2Nlc3MsIG90aGVyd2lzZSBhbGwgc29ja2V0cyBhcmUg cHJvY2Vzc2VkXG4iCisgICAgfSwKICAgICB7ICJwc3ItbWJhLXNob3ciLAogICAgICAgJm1haW5f cHNyX21iYV9zaG93LCAwLCAxLAogICAgICAgIlNob3cgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0 aW9uIGluZm9ybWF0aW9uIiwKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3Bzci5jIGIvdG9vbHMv eGwveGxfcHNyLmMKaW5kZXggMGVlZGJjNy4uN2FmZjQ3NCAxMDA2NDQKLS0tIGEvdG9vbHMveGwv eGxfcHNyLmMKKysrIGIvdG9vbHMveGwveGxfcHNyLmMKQEAgLTU1Miw2ICs1NTIsNjEgQEAgaW50 IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICByZXR1cm4gcHNy X3ZhbF9zaG93KGRvbWlkLCBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQSwgMCk7CiB9CiAKK2ludCBt YWluX3Bzcl9tYmFfc2V0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB1aW50MzJfdCBk b21pZDsKKyAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlOworICAgIHVpbnQ2NF90IHRocnRsOworICAg IGludCByZXQsIG9wdCA9IDA7CisgICAgbGlieGxfYml0bWFwIHRhcmdldF9tYXA7CisgICAgY2hh ciAqdmFsdWU7CisgICAgbGlieGxfc3RyaW5nX2xpc3Qgc29ja2V0X2xpc3Q7CisgICAgdW5zaWdu ZWQgbG9uZyBzdGFydCwgZW5kOworICAgIHVuc2lnbmVkIGludCBpLCBqLCBsZW47CisKKyAgICBz dGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CisgICAgICAgIHsic29ja2V0Iiwg MSwgMCwgJ3MnfSwKKyAgICAgICAgQ09NTU9OX0xPTkdfT1BUUworICAgIH07CisKKyAgICBsaWJ4 bF9zb2NrZXRfYml0bWFwX2FsbG9jKGN0eCwgJnRhcmdldF9tYXAsIDApOworICAgIGxpYnhsX2Jp dG1hcF9zZXRfbm9uZSgmdGFyZ2V0X21hcCk7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0 LCAiczoiLCBvcHRzLCAicHNyLW1iYS1zZXQiLCAwKSB7CisgICAgY2FzZSAncyc6CisgICAgICAg IHRyaW0oaXNzcGFjZSwgb3B0YXJnLCAmdmFsdWUpOworICAgICAgICBzcGxpdF9zdHJpbmdfaW50 b19zdHJpbmdfbGlzdCh2YWx1ZSwgIiwiLCAmc29ja2V0X2xpc3QpOworICAgICAgICBsZW4gPSBs aWJ4bF9zdHJpbmdfbGlzdF9sZW5ndGgoJnNvY2tldF9saXN0KTsKKyAgICAgICAgZm9yIChpID0g MDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBwYXJzZV9yYW5nZShzb2NrZXRfbGlzdFtp XSwgJnN0YXJ0LCAmZW5kKTsKKyAgICAgICAgICAgIGZvciAoaiA9IHN0YXJ0OyBqIDw9IGVuZDsg aisrKQorICAgICAgICAgICAgICAgIGxpYnhsX2JpdG1hcF9zZXQoJnRhcmdldF9tYXAsIGopOwor ICAgICAgICB9CisKKyAgICAgICAgbGlieGxfc3RyaW5nX2xpc3RfZGlzcG9zZSgmc29ja2V0X2xp c3QpOworICAgICAgICBmcmVlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg dHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhSVEw7CisKKyAgICBpZiAobGlieGxfYml0 bWFwX2lzX2VtcHR5KCZ0YXJnZXRfbWFwKSkKKyAgICAgICAgbGlieGxfYml0bWFwX3NldF9hbnko JnRhcmdldF9tYXApOworCisgICAgaWYgKGFyZ2MgIT0gb3B0aW5kICsgMikgeworICAgICAgICBo ZWxwKCJwc3ItbWJhLXNldCIpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0K KworICAgIGRvbWlkID0gZmluZF9kb21haW4oYXJndltvcHRpbmRdKTsKKyAgICB0aHJ0bCA9IHN0 cnRvbGwoYXJndltvcHRpbmQgKyAxXSwgTlVMTCAsIDApOworCisgICAgcmV0ID0gbGlieGxfcHNy X3NldF92YWwoY3R4LCBkb21pZCwgdHlwZSwgJnRhcmdldF9tYXAsIHRocnRsKTsKKworICAgIGxp YnhsX2JpdG1hcF9kaXNwb3NlKCZ0YXJnZXRfbWFwKTsKKyAgICByZXR1cm4gcmV0OworfQorCiBz dGF0aWMgaW50IHBzcl9tYmFfaHdpbmZvKHZvaWQpCiB7CiAgICAgaW50IHJjOwotLSAKMS45LjEK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs