From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v3 9/9] livepach: Add .livepatch.hooks functions and test-case Date: Sun, 14 Aug 2016 17:52:26 -0400 Message-ID: <1471211546-2235-10-git-send-email-konrad.wilk@oracle.com> References: <1471211546-2235-1-git-send-email-konrad.wilk@oracle.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 1bZ3LH-0004bq-Qv for xen-devel@lists.xenproject.org; Sun, 14 Aug 2016 21:53:15 +0000 In-Reply-To: <1471211546-2235-1-git-send-email-konrad.wilk@oracle.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, konrad@kernel.org, ross.lagerwall@citrix.com Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgaG9v ayBmdW5jdGlvbnMgd2hpY2ggcnVuIGR1cmluZyBwYXRjaCBhcHBseSBhbmQgcGF0Y2ggcmV2ZXJ0 LgpIb29rIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBsaXZlcGF0Y2ggcGF5bG9hZHMgdG8gbWFuaXB1 bGF0ZSBkYXRhCnN0cnVjdHVyZXMgZHVyaW5nIHBhdGNoaW5nLCBldGMuCgpPbmUgdXNlIGNhc2Ug aXMgdGhlIFhTQTkxLiBBcyBNYXJ0aW4gbWVudGlvbnMgaXQ6CiJJZiB3ZSBoYXZlIHNoYWRvdyB2 YXJpYWJsZXMsIHdlIGFsc28gbmVlZCBhbiB1bmxvYWQgaG9vayB0byBnYXJiYWdlCmNvbGxlY3Qg YWxsIHRoZSB2YXJpYWJsZXMgaW50cm9kdWNlZCBieSBhIGhvdHBhdGNoIHRvIHByZXZlbnQgbWVt b3J5CmxlYWtzLiAgUG90ZW50aWFsbHksIHdlIGFsc28gd2FudCB0byBwcmUtcmVzZXJ2ZSBtZW1v cnkgZm9yIHN0YXRpYyBvcgpleGlzdGluZyBkeW5hbWljIG9iamVjdHMgaW4gdGhlIGxvYWQtaG9v ayBpbnN0ZWFkIG9mIG9uIHRoZSBmbHkuCgpGb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLCB2YXJp b3VzIGFwcGxpY2F0aW9ucyBhcmUgcG9zc2libGUuCgpJbiBnZW5lcmFsLCB0aGUgaG9va3MgcHJv dmlkZSBmbGV4aWJpbGl0eSB3aGVuIGhhdmluZyB0byBkZWFsIHdpdGgKdW5mb3Jlc2VlbiBjYXNl cywgYnV0IHRoZWlyIGFwcGxpY2F0aW9uIHNob3VsZCBiZSByYXJlbHkgcmVxdWlyZWQgKDwKMTAl KS4iCgpGdXJ0aGVybW9yZSBpbmNsdWRlIGEgdGVzdC1jYXNlIGZvciBpdC4KClNpZ25lZC1vZmYt Ynk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgpTaWduZWQtb2Zm LWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CgotLS0K Q2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2Ug RHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFu LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRp bSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4K CnY0Li52MTE6IERlZmVyZWQgZm9yIHY0LjgKdjEyOiBzL3hzcGxpY2UvbGl2ZXBhdGNoLwp2MTM6 IENsYXJpZnkgdGhlIGNvbW1lbnRzIGFib3V0IHNwaW5fZGVidWdfZW5hYmxlCiAgICAgUmVuYW1l IG9uZSBvZiB0aGUgaG9va3MgdG8gbG93ZXItY2FzZSAoWi0+eikgdG8gZ3VhcmFudGVlIGl0IGJl aW5nCiAgICAgY2FsbGVkIGxhc3QuCiAgICAgTGVhcm5lZCBhIGxvdCBvZiBhYm91dCAnY29uc3Qn Ci0tLQogZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93biAgICAgICAgfCAyMyArKysrKysrKysr KysrKysrKwogeGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkLmMgfCAzNSArKysrKysr KysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9saXZlcGF0Y2guYyAgICAgICAgICAgICAg fCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vaW5jbHVkZS94 ZW4vbGl2ZXBhdGNoX3BheWxvYWQuaCB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9saXZlcGF0Y2hfcGF5bG9hZC5o CgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93biBiL2RvY3MvbWlzYy9s aXZlcGF0Y2gubWFya2Rvd24KaW5kZXggNTkwNzU3ZC4uMGQzZGEyMSAxMDA2NDQKLS0tIGEvZG9j cy9taXNjL2xpdmVwYXRjaC5tYXJrZG93bgorKysgYi9kb2NzL21pc2MvbGl2ZXBhdGNoLm1hcmtk b3duCkBAIC0zNDIsNiArMzQyLDEzIEBAIFdoZW4gcmV2ZXJ0aW5nIGEgcGF0Y2gsIHRoZSBoeXBl cnZpc29yIGl0ZXJhdGVzIG92ZXIgZWFjaCBgbGl2ZXBhdGNoX2Z1bmNgCiBhbmQgdGhlIGNvcmUg Y29kZSBjb3BpZXMgdGhlIGRhdGEgZnJvbSB0aGUgdW5kbyBidWZmZXIgKHByaXZhdGUgaW50ZXJu YWwgY29weSkKIHRvIGBvbGRfYWRkcmAuCiAKK0l0IG9wdGlvbmFsbHkgbWF5IGNvbnRhaW4gdGhl IGFkZHJlc3Mgb2YgZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCByaWdodCBiZWZvcmUKK2JlaW5nIGFw cGxpZWQgYW5kIGFmdGVyIGJlaW5nIHJldmVydGVkOgorCisgKiBgLmxpdmVwYXRjaC5ob29rcy5s b2FkYCAtIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLgorICogYC5saXZlcGF0Y2guaG9v a3MudW5sb2FkYCAtIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLgorCisKICMjIyBFeGFt cGxlIG9mIC5saXZlcGF0Y2guZnVuY3MKIAogQSBzaW1wbGUgZXhhbXBsZSBvZiB3aGF0IGEgcGF5 bG9hZCBmaWxlIGNhbiBiZToKQEAgLTM3OSw2ICszODYsMjIgQEAgc3RydWN0IGxpdmVwYXRjaF9m dW5jIGxpdmVwYXRjaF9oZWxsb193b3JsZCA9IHsKIAogQ29kZSBtdXN0IGJlIGNvbXBpbGVkIHdp dGggLWZQSUMuCiAKKyMjIyAubGl2ZXBhdGNoLmhvb2tzLmxvYWQgYW5kIC5saXZlcGF0Y2guaG9v a3MudW5sb2FkCisKK1RoaXMgc2VjdGlvbiBjb250YWlucyBhbiBhcnJheSBvZiBmdW5jdGlvbiBw b2ludGVycyB0byBiZSBleGVjdXRlZAorYmVmb3JlIHBheWxvYWQgaXMgYmVpbmcgYXBwbGllZCAo LmxpdmVwYXRjaC5mdW5jcykgb3IgYWZ0ZXIgcmV2ZXJ0aW5nCit0aGUgcGF5bG9hZC4gVGhpcyBp cyB1c2VmdWwgdG8gcHJlcGFyZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBuZWVkIHRvCitiZSBtb2Rp ZmllZCBwYXRjaGluZy4KKworRWFjaCBlbnRyeSBpbiB0aGlzIGFycmF5IGlzIGVpZ2h0IGJ5dGVz LgorCitUaGUgdHlwZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBhcmUgYXMgZm9sbG93Ogor Cis8cHJlPgordHlwZWRlZiB2b2lkICgqbGl2ZXBhdGNoX2xvYWRjYWxsX3QpKHZvaWQpOyAgCit0 eXBlZGVmIHZvaWQgKCpsaXZlcGF0Y2hfdW5sb2FkY2FsbF90KSh2b2lkKTsgICAKKzwvcHJlPgor CiAjIyMgLmxpdmVwYXRjaC5kZXBlbmRzIGFuZCAubm90ZS5nbnUuYnVpbGQtaWQKIAogVG8gc3Vw cG9ydCBkZXBlbmRlbmNpZXMgY2hlY2tpbmcgYW5kIHNhZmUgbG9hZGluZyAodG8gbG9hZCB0aGUK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9oZWxsb193b3JsZC5jIGIveGVuL2Fy Y2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkLmMKaW5kZXggNDIyYmRmMS4uNjZjNWI4ZSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkLmMKKysrIGIveGVuL2Fy Y2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkLmMKQEAgLTQsMTQgKzQsNDkgQEAKICAqLwogCiAj aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi90 eXBlcy5oPgogI2luY2x1ZGUgPHhlbi92ZXJzaW9uLmg+CiAjaW5jbHVkZSA8eGVuL2xpdmVwYXRj aC5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2hfcGF5bG9hZC5oPgogCiAjaW5jbHVkZSA8cHVi bGljL3N5c2N0bC5oPgogCiBzdGF0aWMgY2hhciBoZWxsb193b3JsZF9wYXRjaF90aGlzX2ZuY1td ID0gInhlbl9leHRyYV92ZXJzaW9uIjsKIGV4dGVybiBjb25zdCBjaGFyICp4ZW5faGVsbG9fd29y bGQodm9pZCk7CitzdGF0aWMgdW5zaWduZWQgaW50IGNudDsKKworc3RhdGljIHZvaWQgYXBwbHlf aG9vayh2b2lkKQoreworICAgIHByaW50ayhLRVJOX0RFQlVHICJIb29rIGV4ZWN1dGluZy5cbiIp OworfQorCitzdGF0aWMgdm9pZCByZXZlcnRfaG9vayh2b2lkKQoreworICAgIHByaW50ayhLRVJO X0RFQlVHICJIb29rIHVubG9hZGVkLlxuIik7Cit9CisKK3N0YXRpYyB2b2lkICBoaV9mdW5jKHZv aWQpCit7CisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIaSEgKGNhbGxlZCAldSB0aW1lcylc biIsIF9fZnVuY19fLCArK2NudCk7Cit9OworCisvKiBJZiB3ZSBhcmUgc29ydGVkIHdlIF9NVVNU XyBiZSB0aGUgbGFzdCAubGl2ZXBhdGNoLmhvb2sgc2VjdGlvbi4gKi8KK3N0YXRpYyB2b2lkIHpf Y2hlY2tfZm5jKHZvaWQpCit7CisgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBIaSBmdW5jIGNh bGxlZCAldSB0aW1lc1xuIiwgX19mdW5jX18sIGNudCk7CisgICAgQlVHX09OKGNudCA9PSAwIHx8 IGNudCA+IDIpOworfQorCitMSVZFUEFUQ0hfTE9BRF9IT09LKGFwcGx5X2hvb2spOworTElWRVBB VENIX1VOTE9BRF9IT09LKHJldmVydF9ob29rKTsKKworLyogSW1iYWxhbmNlIGhlcmUuIFR3byBs b2FkIGFuZCB0aHJlZSB1bmxvYWQuICovCisKK0xJVkVQQVRDSF9MT0FEX0hPT0soaGlfZnVuYyk7 CitMSVZFUEFUQ0hfVU5MT0FEX0hPT0soaGlfZnVuYyk7CisKK0xJVkVQQVRDSF9VTkxPQURfSE9P Syh6X2NoZWNrX2ZuYyk7CiAKIHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyBfX3NlY3Rpb24oIi5saXZl cGF0Y2guZnVuY3MiKSBsaXZlcGF0Y2hfeGVuX2hlbGxvX3dvcmxkID0gewogICAgIC52ZXJzaW9u ID0gTElWRVBBVENIX1BBWUxPQURfVkVSU0lPTiwKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbGl2 ZXBhdGNoLmMgYi94ZW4vY29tbW9uL2xpdmVwYXRjaC5jCmluZGV4IDZmODJhOWUuLjNhMjJkZTIg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMKKysrIGIveGVuL2NvbW1vbi9saXZl cGF0Y2guYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHhlbi93YWl0Lmg+CiAjaW5jbHVk ZSA8eGVuL2xpdmVwYXRjaF9lbGYuaD4KICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CisjaW5j bHVkZSA8eGVuL2xpdmVwYXRjaF9wYXlsb2FkLmg+CiAKICNpbmNsdWRlIDxhc20vZXZlbnQuaD4K IApAQCAtNzIsNyArNzMsMTEgQEAgc3RydWN0IHBheWxvYWQgewogICAgIHN0cnVjdCBsaXZlcGF0 Y2hfYnVpbGRfaWQgZGVwOyAgICAgICAvKiBFTEZOT1RFX0RFU0MoLmxpdmVwYXRjaC5kZXBlbmRz KS4gKi8KICAgICB2b2lkICpic3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogLmJzcyBv ZiB0aGUgcGF5bG9hZC4gKi8KICAgICBzaXplX3QgYnNzX3NpemU7ICAgICAgICAgICAgICAgICAg ICAgLyogYW5kIGl0cyBzaXplLiAqLwotICAgIGNoYXIgbmFtZVtYRU5fTElWRVBBVENIX05BTUVf U0laRV07IC8qIE5hbWUgb2YgaXQuICovCisgICAgbGl2ZXBhdGNoX2xvYWRjYWxsX3QgKipsb2Fk X2Z1bmNzOyAgIC8qIFRoZSBhcnJheSBvZiBmdW5jcyB0byBjYWxsIGFmdGVyICovCisgICAgbGl2 ZXBhdGNoX3VubG9hZGNhbGxfdCAqKnVubG9hZF9mdW5jczsvKiBsb2FkIGFuZCB1bmxvYWQgb2Yg dGhlIHBheWxvYWQuICovCisgICAgdW5zaWduZWQgaW50IG5fbG9hZF9mdW5jczsgICAgICAgICAg IC8qIE5yIG9mIHRoZSBmdW5jcyB0byBsb2FkIGFuZCBleGVjdXRlLiAqLworICAgIHVuc2lnbmVk IGludCBuX3VubG9hZF9mdW5jczsgICAgICAgICAvKiBOciBvZiBmdW5jcyB0byBjYWxsIGR1cnVu ZyB1bmxvYWQuICovCisgICAgY2hhciBuYW1lW1hFTl9MSVZFUEFUQ0hfTkFNRV9TSVpFXTsgIC8q IE5hbWUgb2YgaXQuICovCiB9OwogCiAvKiBEZWZpbmVzIGFuIG91dHN0YW5kaW5nIHBhdGNoaW5n IGFjdGlvbi4gKi8KQEAgLTU4MSw2ICs1ODYsMjUgQEAgc3RhdGljIGludCBwcmVwYXJlX3BheWxv YWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCiAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAg fQogCisgICAgc2VjID0gbGl2ZXBhdGNoX2VsZl9zZWNfYnlfbmFtZShlbGYsICIubGl2ZXBhdGNo Lmhvb2tzLmxvYWQiKTsKKyAgICBpZiAoIHNlYyApCisgICAgeworICAgICAgICBpZiAoIHNlYy0+ c2VjLT5zaF9zaXplICUgc2l6ZW9mKCpwYXlsb2FkLT5sb2FkX2Z1bmNzKSApCisgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICBwYXlsb2FkLT5sb2FkX2Z1bmNzID0gc2VjLT5s b2FkX2FkZHI7CisgICAgICAgIHBheWxvYWQtPm5fbG9hZF9mdW5jcyA9IHNlYy0+c2VjLT5zaF9z aXplIC8gc2l6ZW9mKCpwYXlsb2FkLT5sb2FkX2Z1bmNzKTsKKyAgICB9CisKKyAgICBzZWMgPSBs aXZlcGF0Y2hfZWxmX3NlY19ieV9uYW1lKGVsZiwgIi5saXZlcGF0Y2guaG9va3MudW5sb2FkIik7 CisgICAgaWYgKCBzZWMgKQorICAgIHsKKyAgICAgICAgaWYgKCBzZWMtPnNlYy0+c2hfc2l6ZSAl IHNpemVvZigqcGF5bG9hZC0+dW5sb2FkX2Z1bmNzKSApCisgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKworICAgICAgICBwYXlsb2FkLT51bmxvYWRfZnVuY3MgPSBzZWMtPmxvYWRfYWRkcjsK KyAgICAgICAgcGF5bG9hZC0+bl91bmxvYWRfZnVuY3MgPSBzZWMtPnNlYy0+c2hfc2l6ZSAvIHNp emVvZigqcGF5bG9hZC0+dW5sb2FkX2Z1bmNzKTsKKyAgICB9CiAgICAgc2VjID0gbGl2ZXBhdGNo X2VsZl9zZWNfYnlfbmFtZShlbGYsIEVMRl9CVUlMRF9JRF9OT1RFKTsKICAgICBpZiAoIHNlYyAp CiAgICAgewpAQCAtMTA2NSw2ICsxMDg5LDE4IEBAIHN0YXRpYyBpbnQgYXBwbHlfcGF5bG9hZChz dHJ1Y3QgcGF5bG9hZCAqZGF0YSkKIAogICAgIGFyY2hfbGl2ZXBhdGNoX3F1aWVzY2UoKTsKIAor ICAgIC8qCisgICAgICogU2luY2Ugd2UgYXJlIHJ1bm5pbmcgd2l0aCBJUlFzIGRpc2FibGVkIGFu ZCB0aGUgaG9va3MgbWF5IGNhbGwgY29tbW9uCisgICAgICogY29kZSAtIHdoaWNoIGV4cGVjdHMg dGhlIHNwaW5sb2NrcyB0byBydW4gd2l0aCBJUlFzIGVuYWJsZWQgLSB3ZSB0ZW1wb3Jhcmx5Cisg ICAgICogZGlzYWJsZSB0aGUgc3BpbiBsb2NrcyBJUlEgc3RhdGUgY2hlY2tzLgorICAgICAqLwor ICAgIHNwaW5fZGVidWdfZGlzYWJsZSgpOworICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bl9s b2FkX2Z1bmNzOyBpKysgKQorICAgICAgICBkYXRhLT5sb2FkX2Z1bmNzW2ldKCk7CisgICAgc3Bp bl9kZWJ1Z19lbmFibGUoKTsKKworICAgIEFTU0VSVCghbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7 CisKICAgICBmb3IgKCBpID0gMDsgaSA8IGRhdGEtPm5mdW5jczsgaSsrICkKICAgICAgICAgYXJj aF9saXZlcGF0Y2hfYXBwbHlfam1wKCZkYXRhLT5mdW5jc1tpXSk7CiAKQEAgLTEwOTEsNiArMTEy NywxOCBAQCBzdGF0aWMgaW50IHJldmVydF9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQog ICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQogICAgICAgICBhcmNoX2xp dmVwYXRjaF9yZXZlcnRfam1wKCZkYXRhLT5mdW5jc1tpXSk7CiAKKyAgICAvKgorICAgICAqIFNp bmNlIHdlIGFyZSBydW5uaW5nIHdpdGggSVJRcyBkaXNhYmxlZCBhbmQgdGhlIGhvb2tzIG1heSBj YWxsIGNvbW1vbgorICAgICAqIGNvZGUgLSB3aGljaCBleHBlY3RzIHRoZSBzcGlubG9ja3MgdG8g cnVuIHdpdGggSVJRcyBlbmFibGVkIC0gd2UgdGVtcG9yYXJseQorICAgICAqIGRpc2FibGUgdGhl IHNwaW4gbG9ja3MgSVJRIHN0YXRlIGNoZWNrcy4KKyAgICAgKi8KKyAgICBzcGluX2RlYnVnX2Rp c2FibGUoKTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGRhdGEtPm5fdW5sb2FkX2Z1bmNzOyBpKysg KQorICAgICAgICBkYXRhLT51bmxvYWRfZnVuY3NbaV0oKTsKKyAgICBzcGluX2RlYnVnX2VuYWJs ZSgpOworCisgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKKwogICAgIGFyY2hf bGl2ZXBhdGNoX3Jldml2ZSgpOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9saXZlcGF0Y2hfcGF5bG9hZC5oIGIveGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaF9wYXlsb2Fk LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzOGNjMgotLS0gL2Rldi9u dWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9saXZlcGF0Y2hfcGF5bG9hZC5oCkBAIC0wLDAgKzEs NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4K KyAqLworCisjaWZuZGVmIF9fWEVOX0xJVkVQQVRDSF9QQVlMT0FEX0hfXworI2RlZmluZSBfX1hF Tl9MSVZFUEFUQ0hfUEFZTE9BRF9IX18KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlv bnMgYXJlIHRvIGJlIHVzZWQgaW4gcGF0Y2hlcy4gVGhleSBhcmUgdGFrZW4KKyAqIGZyb20ga3Bh dGNoLgorICovCit0eXBlZGVmIHZvaWQgbGl2ZXBhdGNoX2xvYWRjYWxsX3Qodm9pZCk7Cit0eXBl ZGVmIHZvaWQgbGl2ZXBhdGNoX3VubG9hZGNhbGxfdCh2b2lkKTsKKworLyoKKyAqIExJVkVQQVRD SF9MT0FEX0hPT0sgbWFjcm8KKyAqCisgKiBEZWNsYXJlcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8g YmUgYWxsb2NhdGVkIGluIGEgbmV3CisgKiAubGl2ZXBhdGNoLmhvb2subG9hZCBzZWN0aW9uLiAg VGhpcyBsaXZlcGF0Y2hfbG9hZF9kYXRhIHN5bWJvbCBpcyBsYXRlcgorICogc3RyaXBwZWQgYnkg Y3JlYXRlLWRpZmYtb2JqZWN0IHNvIHRoYXQgaXQgY2FuIGJlIGRlY2xhcmVkIGluIG11bHRpcGxl CisgKiBvYmplY3RzIHRoYXQgYXJlIGxhdGVyIGxpbmtlZCB0b2dldGhlciwgYXZvaWRpbmcgZ2xv YmFsIHN5bWJvbAorICogY29sbGlzaW9uLiAgU2luY2UgbXVsdGlwbGUgaG9va3MgY2FuIGJlIHJl Z2lzdGVyZWQsIHRoZQorICogLmxpdmVwYXRjaC5ob29rLmxvYWQgc2VjdGlvbiBpcyBhIHRhYmxl IG9mIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYmUKKyAqIGV4ZWN1dGVkIGluIHNlcmllcyBieSB0aGUg bGl2ZXBhdGNoIGluZnJhc3RydWN0dXJlIGF0IHBhdGNoIGxvYWQgdGltZS4KKyAqLworI2RlZmlu ZSBMSVZFUEFUQ0hfTE9BRF9IT09LKF9mbikgXAorICAgIGxpdmVwYXRjaF9sb2FkY2FsbF90ICpf X2F0dHJpYnV0ZV9fKCh3ZWFrKSkgXAorICAgICAgICBjb25zdCBsaXZlcGF0Y2hfbG9hZF9kYXRh XyMjX2ZuIF9fc2VjdGlvbigiLmxpdmVwYXRjaC5ob29rcy5sb2FkIikgPSBfZm47CisKKy8qCisg KiBMSVZFUEFUQ0hfVU5MT0FEX0hPT0sgbWFjcm8KKyAqCisgKiBTYW1lIGFzIExPQUQgaG9vayB3 aXRoIHMvbG9hZC91bmxvYWQvCisgKi8KKyNkZWZpbmUgTElWRVBBVENIX1VOTE9BRF9IT09LKF9m bikgXAorICAgICBsaXZlcGF0Y2hfdW5sb2FkY2FsbF90ICpfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkg XAorICAgICAgICBjb25zdCBsaXZlcGF0Y2hfdW5sb2FkX2RhdGFfIyNfZm4gX19zZWN0aW9uKCIu bGl2ZXBhdGNoLmhvb2tzLnVubG9hZCIpID0gX2ZuOworCisjZW5kaWYgLyogX19YRU5fTElWRVBB VENIX1BBWUxPQURfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdp ZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi40LjEx CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==