From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v3 13/15] tools: implement new generic get value interface and MBA get value command Date: Tue, 5 Sep 2017 17:32:35 +0800 Message-ID: <1504603957-5389-14-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 1dpAWT-0007XM-AC for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 09:51:57 +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 VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdlbmVyaWMgZ2V0IHZhbHVlIGludGVyZmFjZXMgaW4gbGli eGMgYW5kIGxpYnhsLgpJdCBhbHNvIHJlZmFjdG9ycyB0aGUgZ2V0IHZhbHVlIGZsb3cgaW4geGwg dG8gbWFrZSBpdCBiZSBzdWl0YWJsZSBmb3IgYWxsCmFsbG9jYXRpb24gZmVhdHVyZXMuIEJhc2Vk IG9uIHRoYXQsIGEgbmV3IE1CQSBnZXQgdmFsdWUgY29tbWFuZCBpcyBhZGRlZCBpbiB4bC4KClNp Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCnYzOgogICAgLSByZXBsYWNlICdsaWJ4 bF9wc3JfY2JtX3R5cGUnIHRvICdsaWJ4bF9wc3JfdHlwZScgaW4gbmV3bHkgZGVmaW5lZAogICAg ICBpbnRlcmZhY2VzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCnYyOgog ICAgLSBjaGFuZ2UgJ0NBVF9JTkZPJy8nTUJBX0lORk8nIHRvICdDQVQnLydNQkEnLiBUaGUgcmVs YXRlZCBzdHJ1Y3R1cmUgbmFtZXMKICAgICAgYXJlIGNoYW5nZWQgdG9vLgogICAgICAoc3VnZ2Vz dGVkIGJ5IENoYW8gUGVuZykKLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICAg NyArLQogdG9vbHMvbGlieGMveGNfcHNyLmMgICAgICAgICAgfCAgIDkgKy0KIHRvb2xzL2xpYnhs L2xpYnhsX3Bzci5jICAgICAgIHwgIDU5ICsrKysrKysrKy0tLS0tCiB0b29scy94bC94bC5oICAg ICAgICAgICAgICAgICB8ICAgMSArCiB0b29scy94bC94bF9jbWR0YWJsZS5jICAgICAgICB8ICAg NSArKwogdG9vbHMveGwveGxfcHNyLmMgICAgICAgICAgICAgfCAxODUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDE4NCBpbnNlcnRp b25zKCspLCA4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDYzYjkyZDIu LmVlZjA2YmUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBi L3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNDU1LDYgKzI0NTUsNyBAQCBlbnVt IHhjX3Bzcl90eXBlIHsKICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9DT0RFID0gMiwKICAgICBYQ19Q U1JfQ0FUX0wzX0NCTV9EQVRBID0gMywKICAgICBYQ19QU1JfQ0FUX0wyX0NCTSAgICAgID0gNCwK KyAgICBYQ19QU1JfTUJBX1RIUlRMICAgICAgID0gNSwKIH07CiB0eXBlZGVmIGVudW0geGNfcHNy X3R5cGUgeGNfcHNyX3R5cGU7CiAKQEAgLTI1MDEsOSArMjUwMiw5IEBAIGludCB4Y19wc3JfY210 X2VuYWJsZWQoeGNfaW50ZXJmYWNlICp4Y2gpOwogaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9k YXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGF0YSk7Ci1pbnQgeGNfcHNyX2NhdF9n ZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdl dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7CitpbnQg eGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdHlwZSB0eXBlLCB1aW50MzJfdCB0 YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7CiBpbnQg eGNfcHNyX2dldF9od19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCiAg ICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2lu Zm8gKmh3X2luZm8pOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xz L2xpYnhjL3hjX3Bzci5jCmluZGV4IDgwNjQyYTIuLjJmMGVlZDkgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0yODMsOSArMjgz LDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1 aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwgJmRvbWN0bCk7CiB9CiAK LWludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUgdHlw ZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90ICpkYXRhKQoraW50IHhjX3Bzcl9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gs IHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3R5cGUg dHlwZSwgdWludDMyX3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3QgKmRhdGEpCiB7CiAgICAgaW50IHJjOwogICAgIERFQ0xBUkVfRE9NQ1RMOwpAQCAtMzA1LDYg KzMwNSw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19QU1JfQ0FUX0wyX0NCTToKICAgICAgICAg Y21kID0gWEVOX0RPTUNUTF9QU1JfQUxMT0NfR0VUX0wyX0NCTTsKICAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9B TExPQ19HRVRfTUJBX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg ICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwppbmRleCBjOGQyOTIx Li43OGQ1YmM1IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3IuYworKysgYi90b29s cy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtNzEsMTYgKzcxLDMwIEBAIHN0YXRpYyB2b2lkIGxpYnhs X19wc3JfY210X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIpCiAgICAgTE9HRShF UlJPUiwgIiVzIiwgbXNnKTsKIH0KIAotc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9jYXRfbG9nX2Vy cl9tc2cobGlieGxfX2djICpnYywgaW50IGVycikKK3N0YXRpYyB2b2lkIGxpYnhsX19wc3JfYWxs b2NfbG9nX2Vycl9tc2cobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfcHNyX3R5cGUgdHlwZSkKIHsKKyAgICAvKgorICAgICAqIEluZGV4IGlz ICdsaWJ4bF9wc3JfdHlwZScgc28gd2Ugc2V0IHR3byAnQ0RQJyB0byBjb3JyZXNwb25kIHRvCisg ICAgICogREFUQSBhbmQgQ09ERS4KKyAgICAgKi8KKyAgICBjb25zdCBjaGFyICogY29uc3QgZmVh dF9uYW1lWzZdID0geworICAgICAgICAiVU5LTk9XTiIsCisgICAgICAgICJMMyBDQVQiLAorICAg ICAgICAiQ0RQIiwKKyAgICAgICAgIkNEUCIsCisgICAgICAgICJMMiBDQVQiLAorICAgICAgICAi TUJBIiwKKyAgICB9OwogICAgIGNoYXIgKm1zZzsKIAogICAgIHN3aXRjaCAoZXJyKSB7CiAgICAg Y2FzZSBFTk9ERVY6Ci0gICAgICAgIG1zZyA9ICJDQVQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlz IHN5c3RlbSI7CisgICAgICAgIG1zZyA9ICJpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgc3lzdGVt IjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFTk9FTlQ6Ci0gICAgICAgIG1zZyA9ICJDQVQg aXMgbm90IGVuYWJsZWQgb24gdGhlIHNvY2tldCI7CisgICAgICAgIG1zZyA9ICJpcyBub3QgZW5h YmxlZCBvbiB0aGUgc29ja2V0IjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFT1ZFUkZMT1c6 CiAgICAgICAgIG1zZyA9ICJubyBmcmVlIENPUyBhdmFpbGFibGUiOwpAQCAtMTA2LDcgKzEyMCw3 IEBAIHN0YXRpYyB2b2lkIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2Ms IGludCBlcnIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMT0dFKEVSUk9SLCAiJXMi LCBtc2cpOworICAgIExPR0UoRVJST1IsICIlczogJXMiLCBmZWF0X25hbWVbdHlwZV0sIG1zZyk7 CiB9CiAKIHN0YXRpYyBpbnQgbGlieGxfX3BpY2tfc29ja2V0X2NwdShsaWJ4bF9fZ2MgKmdjLCB1 aW50MzJfdCBzb2NrZXRpZCkKQEAgLTMwMywxMCArMzE3LDEwIEBAIG91dDoKICAgICByZXR1cm4g cmM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgeGNfcHNyX3R5cGUgbGlieGxfX3Bzcl9jYm1fdHlwZV90 b19saWJ4Y19wc3JfdHlwZSgKLSAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSkKK3N0YXRpYyBp bmxpbmUgeGNfcHNyX3R5cGUgbGlieGxfX3Bzcl90eXBlX3RvX2xpYnhjX3Bzcl90eXBlKAorICAg IGxpYnhsX3Bzcl90eXBlIHR5cGUpCiB7Ci0gICAgQlVJTERfQlVHX09OKHNpemVvZihsaWJ4bF9w c3JfY2JtX3R5cGUpICE9IHNpemVvZih4Y19wc3JfdHlwZSkpOworICAgIEJVSUxEX0JVR19PTihz aXplb2YobGlieGxfcHNyX3R5cGUpICE9IHNpemVvZih4Y19wc3JfdHlwZSkpOwogICAgIHJldHVy biAoeGNfcHNyX3R5cGUpdHlwZTsKIH0KIApAQCAtMzMwLDEwICszNDQsMTAgQEAgaW50IGxpYnhs X3Bzcl9jYXRfc2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAg IGlmIChzb2NrZXRpZCA+PSBucl9zb2NrZXRzKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg ICAgeGNfdHlwZSA9IGxpYnhsX19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlwZSk7 CisgICAgICAgIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5cGUodHlw ZSk7CiAgICAgICAgIGlmICh4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9t aWQsIHhjX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2Nr ZXRpZCwgY2JtKSkgewotICAgICAgICAgICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2coZ2Ms IGVycm5vKTsKKyAgICAgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVy cm5vLCB0eXBlKTsKICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgfQogICAg IH0KQEAgLTM0NywxOCArMzYxLDcgQEAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2NibShsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhs X3Bzcl9jYm1fdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90ICpjYm1fcikKIHsKLSAgICBHQ19JTklUKGN0eCk7Ci0gICAgaW50IHJj ID0gMDsKLSAgICB4Y19wc3JfdHlwZSB4Y190eXBlID0gbGlieGxfX3Bzcl9jYm1fdHlwZV90b19s aWJ4Y19wc3JfdHlwZSh0eXBlKTsKLQotICAgIGlmICh4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0 YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldCwgY2JtX3IpKSB7Ci0gICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJf bXNnKGdjLCBlcnJubyk7Ci0gICAgICAgIHJjID0gRVJST1JfRkFJTDsKLSAgICB9Ci0KLSAgICBH Q19GUkVFOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gbGlieGxfcHNyX2dldF92YWwoY3R4 LCBkb21pZCwgdHlwZSwgdGFyZ2V0LCBjYm1fcik7CiB9CiAKIHN0YXRpYyB4Y19wc3JfZmVhdF90 eXBlIGxpYnhsX19mZWF0X3R5cGVfdG9fbGlieGNfZmVhdF90eXBlKApAQCAtNDYyLDcgKzQ2NSwx OSBAQCBpbnQgbGlieGxfcHNyX2dldF92YWwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAogICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl90eXBlIHR5cGUsIHVuc2lnbmVkIGlu dCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKnZhbCkKIHsKLSAgICBy ZXR1cm4gRVJST1JfRkFJTDsKKyAgICBHQ19JTklUKGN0eCk7CisgICAgaW50IHJjID0gMDsKKwor ICAgIHhjX3Bzcl90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX3R5cGVfdG9fbGlieGNfcHNyX3R5 cGUodHlwZSk7CisKKyAgICBpZiAoeGNfcHNyX2dldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9t aWQsIHhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LCB2YWwp KSB7CisgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0eXBl KTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgIH0KKworICAgIEdDX0ZSRUU7CisgICAg cmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGxpYnhsX194Y19od19pbmZvX3RvX2xpYnhsX2h3 X2luZm8oCmRpZmYgLS1naXQgYS90b29scy94bC94bC5oIGIvdG9vbHMveGwveGwuaAppbmRleCA4 ZDdiOTU3Li4zMzg5ZGY5IDEwMDY0NAotLS0gYS90b29scy94bC94bC5oCisrKyBiL3Rvb2xzL3hs L3hsLmgKQEAgLTIwNCw2ICsyMDQsNyBAQCBpbnQgbWFpbl9wc3JfY210X2RldGFjaChpbnQgYXJn YywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NtdF9zaG93KGludCBhcmdjLCBjaGFyICoq YXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK IGludCBtYWluX3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5f cHNyX21iYV9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndik7CiAjZW5kaWYKIGludCBtYWluX3Fl bXVfbW9uaXRvcl9jb21tYW5kKGludCBhcmdjLCBjaGFyICoqYXJndik7CiAKZGlmZiAtLWdpdCBh L3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IGEw MTI0NWQuLmNkYzIzNDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIv dG9vbHMveGwveGxfY21kdGFibGUuYwpAQCAtNTYwLDYgKzU2MCwxMSBAQCBzdHJ1Y3QgY21kX3Nw ZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiW29wdGlvbnNdIDxEb21haW4+IiwKICAgICAgICIt bCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhl cndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vzc2VkXG4iCiAgICAgfSwKKyAgICB7ICJwc3ItbWJhLXNo b3ciLAorICAgICAgJm1haW5fcHNyX21iYV9zaG93LCAwLCAxLAorICAgICAgIlNob3cgTWVtb3J5 IEJhbmR3aWR0aCBBbGxvY2F0aW9uIGluZm9ybWF0aW9uIiwKKyAgICAgICI8RG9tYWluPiIsCisg ICAgfSwKICNlbmRpZgogICAgIHsgInVzYmN0cmwtYXR0YWNoIiwKICAgICAgICZtYWluX3VzYmN0 cmxfYXR0YWNoLCAwLCAxLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcHNyLmMgYi90b29scy94 bC94bF9wc3IuYwppbmRleCA0MDI2OWI0Li40NmI3Nzg4IDEwMDY0NAotLS0gYS90b29scy94bC94 bF9wc3IuYworKysgYi90b29scy94bC94bF9wc3IuYwpAQCAtMzI3LDE5ICszMjcsMjcgQEAgb3V0 OgogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9t YWluX2NibV90eXBlKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUg dHlwZSkKK3N0YXRpYyB2b2lkIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKHVpbnQzMl90 IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf cHNyX2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9wc3JfdHlwZSB0eXBlKQogewotICAgIHVpbnQ2NF90IGNibTsKKyAgICB1aW50 NjRfdCB2YWw7CiAKLSAgICBpZiAoIWxpYnhsX3Bzcl9jYXRfZ2V0X2NibShjdHgsIGRvbWlkLCB0 eXBlLCBzb2NrZXRpZCwgJmNibSkpCi0gICAgICAgIHByaW50ZigiJSMxNiJQUkl4NjQsIGNibSk7 CisgICAgaWYgKCFsaWJ4bF9wc3JfZ2V0X3ZhbChjdHgsIGRvbWlkLCB0eXBlLCBpbmZvLT5pZCwg JnZhbCkpCisgICAgeworICAgICAgICBpZiAodHlwZSA9PSBMSUJYTF9QU1JfQ0JNX1RZUEVfTUJB X1RIUlRMICYmIGluZm8tPnUubWJhLmxpbmVhcikKKyAgICAgICAgICAgIHByaW50ZigiJTE2IlBS SXU2NCwgdmFsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbnRmKCIlIzE2IlBSSXg2 NCwgdmFsKTsKKyAgICB9CiAgICAgZWxzZQogICAgICAgICBwcmludGYoIiUxNnMiLCAiZXJyb3Ii KTsKIH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJf dCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgY2RwX2VuYWJsZWQsIHVuc2lnbmVkIGludCBsdmwpCitzdGF0aWMg dm9pZCBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWwodWludDMyX3QgZG9taWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwp CiB7CiAgICAgY2hhciAqZG9tYWluX25hbWU7CiAKQEAgLTM0NywxMDYgKzM1NSwxNTQgQEAgc3Rh dGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwgdWlu dDMyX3Qgc29ja2V0aWQsCiAgICAgcHJpbnRmKCIlNWQlMjVzIiwgZG9taWQsIGRvbWFpbl9uYW1l KTsKICAgICBmcmVlKGRvbWFpbl9uYW1lKTsKIAotICAgIHN3aXRjaCAobHZsKSB7Ci0gICAgY2Fz ZSAzOgotICAgICAgICBpZiAoIWNkcF9lbmFibGVkKSB7Ci0gICAgICAgICAgICBwc3JfY2F0X3By aW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAorICAgIHN3aXRjaCAodHlw ZSkgeworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9DQVQ6CisgICAgICAgIHN3aXRjaCAo bHZsKSB7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmICghaW5mby0+dS5jYXQuY2Rw X2VuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlw ZShkb21pZCwgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29ja2V0aWQs CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBzcl9wcmludF9vbmVfZG9t YWluX3ZhbF90eXBlKGRvbWlkLCBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fQ09ERSk7Ci0gICAgICAg ICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAor ICAgICAgICAgICAgICAgIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRvbWlkLCBpbmZv LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BT Ul9DQk1fVFlQRV9MM19DQk1fREFUQSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg Y2FzZSAyOgotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQs IHNvY2tldGlkLAorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg Y2FzZSAyOgorICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5cGUoZG9taWQs IGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9Q U1JfQ0JNX1RZUEVfTDJfQ0JNKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1 bHQ6CisgICAgICAgICAgICBwcmludGYoIklucHV0IGx2bCAlZCBpcyB3cm9uZyEiLCBsdmwpOwor ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50Zigi SW5wdXQgbHZsICVkIGlzIHdyb25nISIsIGx2bCk7CisKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFU X1RZUEVfTUJBOgorICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21pZCwg aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NC TV9UWVBFX01CQV9USFJUTCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHByaW50Zigi XG4iKTsKIH0KIAotc3RhdGljIGludCBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0odWludDMyX3Qg ZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCBjZHBfZW5hYmxlZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNy X3ByaW50X2RvbWFpbl92YWwodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgaW50IGksIG5yX2RvbWFpbnM7 CiAgICAgbGlieGxfZG9taW5mbyAqbGlzdDsKIAogICAgIGlmIChkb21pZCAhPSBJTlZBTElEX0RP TUlEKSB7Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0oZG9taWQsIHNvY2tl dGlkLCBjZHBfZW5hYmxlZCwgbHZsKTsKKyAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFs KGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAg ICBpZiAoIShsaXN0ID0gbGlieGxfbGlzdF9kb21haW4oY3R4LCAmbnJfZG9tYWlucykpKSB7Ci0g ICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3IgY2Jt IGRpc3BsYXlcbiIpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZwcmludGYoc3RkZXJy LCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3IgdmFsdWUgZGlzcGxheVxuIik7CisgICAg ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IG5y X2RvbWFpbnM7IGkrKykKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShsaXN0 W2ldLmRvbWlkLCBzb2NrZXRpZCwgY2RwX2VuYWJsZWQsIGx2bCk7CisgICAgICAgIHBzcl9wcmlu dF9vbmVfZG9tYWluX3ZhbChsaXN0W2ldLmRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogICAgIGxp YnhsX2RvbWluZm9fbGlzdF9mcmVlKGxpc3QsIG5yX2RvbWFpbnMpOwogCiAgICAgcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQsIGxp YnhsX3Bzcl9jYXRfaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNyX3ByaW50X3NvY2tldCh1aW50MzJfdCBk b21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsKLSAgICBp bnQgcmM7Ci0gICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKLQogICAgIHByaW50ZigiJS0xNnM6 ICV1XG4iLCAiU29ja2V0IElEIiwgaW5mby0+aWQpOwogCi0gICAgLyogU28gZmFyLCBDTVQgb25s eSBzdXBwb3J0cyBMMyBjYWNoZS4gKi8KLSAgICBpZiAobHZsID09IDMpIHsKLSAgICAgICAgcmMg PSBsaWJ4bF9wc3JfY210X2dldF9sM19jYWNoZV9zaXplKGN0eCwgaW5mby0+aWQsICZsM19jYWNo ZV9zaXplKTsKLSAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IkZhaWxlZCB0byBnZXQgbDMgY2FjaGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAotICAgICAgICAg ICAgICAgICAgICBpbmZvLT5pZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgc3dpdGNo ICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVDoKKyAgICB7CisgICAg ICAgIGludCByYzsKKyAgICAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKKworICAgICAgICAv KiBTbyBmYXIsIENNVCBvbmx5IHN1cHBvcnRzIEwzIGNhY2hlLiAqLworICAgICAgICBpZiAobHZs ID09IDMpIHsKKyAgICAgICAgICAgIHJjID0gbGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6 ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVfc2l6ZSk7CisgICAgICAgICAgICBpZiAocmMpIHsK KyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMgY2FjaGUg c2l6ZSBmb3Igc29ja2V0OiVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+aWQp OworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwzX2NhY2hlX3NpemUpOwogICAg ICAgICB9Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwzX2Nh Y2hlX3NpemUpOworCisgICAgICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVsdCBD Qk0iLAorICAgICAgICAgICAgICAgKDF1bGwgPDwgaW5mby0+dS5jYXQuY2JtX2xlbikgLSAxKTsK KyAgICAgICAgaWYgKGluZm8tPnUuY2F0LmNkcF9lbmFibGVkKQorICAgICAgICAgICAgcHJpbnRm KCIlNXMlMjVzJTE2cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSAoY29kZSkiLCAiQ0JNIChk YXRhKSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmludGYoIiU1cyUyNXMlMTZzXG4i LCAiSUQiLCAiTkFNRSIsICJDQk0iKTsKKworICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBw cmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwgKDF1bGwgPDwgaW5mby0+Y2Jt X2xlbikgLSAxKTsKLSAgICBpZiAoaW5mby0+Y2RwX2VuYWJsZWQpCi0gICAgICAgIHByaW50Zigi JTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAoZGF0 YSkiKTsKLSAgICBlbHNlCi0gICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJRCIsICJO QU1FIiwgIkNCTSIpOworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkE6CisgICAgICAg IHByaW50ZigiJS0xNnM6ICV1XG4iLCAiRGVmYXVsdCBUSFJUTCIsIDApOworICAgICAgICBwcmlu dGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJUSFJUTCIpOworICAgICAgICBicmVh azsKIAotICAgIHJldHVybiBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0oZG9taWQsIGluZm8tPmlk LCBpbmZvLT5jZHBfZW5hYmxlZCwgbHZsKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIklucHV0IGZlYXR1cmUgdHlwZSAlZCBpcyB3cm9uZ1xuIiwgdHlwZSk7CisgICAg ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgcmV0dXJuIHBzcl9wcmludF9k b21haW5fdmFsKGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogfQogCi1zdGF0aWMgaW50IHBzcl9j YXRfc2hvdyh1aW50MzJfdCBkb21pZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNy X3ZhbF9zaG93KHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf cHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGx2bCkKIHsKICAgICB1bnNpZ25lZCBpbnQgaSwgbnI7CiAgICAgaW50IHJjOwotICAgIGxpYnhs X3Bzcl9jYXRfaW5mbyAqaW5mbzsKKyAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbzsKIAotICAg IGlmIChsdmwgIT0gMiAmJiBsdmwgIT0gMykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklu cHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj YXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUOgorICAgICAgICBpZiAobHZsICE9IDIgJiYgbHZs ICE9IDMpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5wdXQgbHZsICVkIGlzIHdy b25nXG4iLCBsdmwpOworICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAg fQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkE6Cisg ICAgICAgIGlmIChsdmwpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5wdXQgbHZs ICVkIGlzIHdyb25nXG4iLCBsdmwpOworICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK KyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiSW5wdXQgZmVhdHVyZSB0eXBlICVkIGlzIHdyb25nXG4iLCB0eXBlKTsKICAg ICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICB9CiAKLSAgICByYyA9IGxpYnhsX3Bzcl9j YXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCBsdmwpOworICAgIHJjID0gbGlieGxfcHNyX2dl dF9od19pbmZvKGN0eCwgJmluZm8sICZuciwgdHlwZSwgbHZsKTsKICAgICBpZiAocmMpIHsKLSAg ICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0ICVzIGNhdCBpbmZvXG4iLCAobHZs ID09IDMpPyJMMyI6IkwyIik7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdl dCBpbmZvXG4iKTsKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIGZvciAoaSA9IDA7 IGkgPCBucjsgaSsrKSB7Ci0gICAgICAgIHJjID0gcHNyX2NhdF9wcmludF9zb2NrZXQoZG9taWQs IGluZm8gKyBpLCBsdmwpOworICAgICAgICByYyA9IHBzcl9wcmludF9zb2NrZXQoZG9taWQsIGlu Zm8gKyBpLCB0eXBlLCBsdmwpOwogICAgICAgICBpZiAocmMpCiAgICAgICAgICAgICBnb3RvIG91 dDsKICAgICB9CiAKIG91dDoKLSAgICBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGluZm8s IG5yKTsKKyAgICBsaWJ4bF9wc3JfaHdfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOwogICAgIHJl dHVybiByYzsKIH0KIApAQCAtNDc1LDYgKzUzMSwyNyBAQCBzdGF0aWMgaW50IHBzcl9sMl9jYXRf aHdpbmZvKHZvaWQpCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQgbWFpbl9wc3JfbWJhX3Nob3co aW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGludCBvcHQ7CisgICAgdWludDMyX3QgZG9t aWQ7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInBzci1tYmEtc2hv dyIsIDApIHsKKyAgICAgICAgLyogTm8gb3B0aW9ucyAqLworICAgIH0KKworICAgIGlmIChvcHRp bmQgPj0gYXJnYykKKyAgICAgICAgZG9taWQgPSBJTlZBTElEX0RPTUlEOworICAgIGVsc2UgaWYg KG9wdGluZCA9PSBhcmdjIC0gMSkKKyAgICAgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29w dGluZF0pOworICAgIGVsc2UgeworICAgICAgICBoZWxwKCJwc3ItbWJhLXNob3ciKTsKKyAgICAg ICAgcmV0dXJuIDI7CisgICAgfQorCisgICAgcmV0dXJuIHBzcl92YWxfc2hvdyhkb21pZCwgTElC WExfUFNSX0ZFQVRfVFlQRV9NQkEsIDApOworfQorCiBzdGF0aWMgaW50IHBzcl9tYmFfaHdpbmZv KHZvaWQpCiB7CiAgICAgaW50IHJjOwpAQCAtNjEzLDcgKzY5MCw3IEBAIGludCBtYWluX3Bzcl9j YXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIHJldHVybiAyOwogICAgIH0K IAotICAgIHJldHVybiBwc3JfY2F0X3Nob3coZG9taWQsIGx2bCk7CisgICAgcmV0dXJuIHBzcl92 YWxfc2hvdyhkb21pZCwgTElCWExfUFNSX0ZFQVRfVFlQRV9DQVQsIGx2bCk7CiB9CiAKIGludCBt YWluX3Bzcl9od2luZm8oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotLSAKMS45LjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK