From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v16 1/9] x86: add multiboot2 protocol support Date: Tue, 21 Feb 2017 20:19:50 +0100 Message-ID: <1487704799-21162-2-git-send-email-daniel.kiper@oracle.com> References: <1487704799-21162-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cgFzI-0001mC-JD for xen-devel@lists.xenproject.org; Tue, 21 Feb 2017 19:20:36 +0000 In-Reply-To: <1487704799-21162-1-git-send-email-daniel.kiper@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 Cc: jgross@suse.com, sstabellini@kernel.org, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, julien.grall@arm.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org QWRkIG11bHRpYm9vdDIgcHJvdG9jb2wgc3VwcG9ydC4gQWx0ZXIgbWluIG1lbW9yeSBsaW1pdCBo YW5kbGluZyBhcyB3ZQpub3cgbWF5IG5vdCBmaW5kIGl0IGZyb20gZWl0aGVyIG11bHRpYm9vdCAo djEpIG9yIG11bHRpYm9vdDIuCgpUaGlzIHdheSB3ZSBhcmUgbGF5aW5nIHRoZSBmb3VuZGF0aW9u IGZvciBFRkkgKyBHUlVCMiArIFhlbiBkZXZlbG9wbWVudC4KClNpZ25lZC1vZmYtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBEb3VnIEdvbGRzdGVpbiA8Y2FyZG9l QGNhcmRvZS5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpUZXN0ZWQtYnk6IERvdWcgR29sZHN0ZWluIDxjYXJkb2VAY2FyZG9lLmNvbT4K LS0tCnYxMyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAgLSBhZGQgRW1hY3MgZmlsZS1sb2NhbCB2 YXJpYWJsZXMKICAgICAgKHN1Z2dlc3RlZCBieSBBbmRyZXcgQ29vcGVyKS4KCnYxMiAtIHN1Z2dl c3Rpb25zL2ZpeGVzOgogICAgLSByZXBsYWNlIFRBQnMgd2l0aCBzcGFjZXMgaW4geGVuL2luY2x1 ZGUveGVuL211bHRpYm9vdDIuaAogICAgICAoc3VnZ2VzdGVkIGJ5IERvdWcgR29sZHN0ZWluKS4K CnY5IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gdXNlIC5MIGxhYmVsIGluc3RlYWQgb2YgbnVt ZXJpYyBvbmUgaW4gbXVsdGlib290MiBkYXRhIHNjYW5uaW5nIGxvb3A7CiAgICAgSSBob3BlIHRo YXQgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW52YWxpZGF0ZSBKYW4ncyBSZXZpZXdlZC1ieQogICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjggLSBzdWdnZXN0aW9ucy9maXhlczoKICAg LSB1c2Ugc2l6ZW9mKDx2YXI+LzxleHByPikgaW5zdGVhZCBvZiBzaXplb2YoPHR5cGU+KQogICAg IGlmIGl0IGlzIHBvc3NpYmxlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCgp2NyAt IHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHJlbmFtZSBtYmlfbWJpL21iaTJfbWJpIHRvIG1iaV9y ZWxvYy9tYmkyX3JlbG9jIHJlc3BlY3RpdmVseQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLAogICAtIGluaXRpYWxpemUgbWJpX291dC0+ZmxhZ3MgdXNpbmcgInw9IiBpbnN0ZWFkIG9m ICI9IgogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBzaXplb2YoKm1t YXBfZHN0KSBpbnN0ZWFkIG9mIHNpemVvZihtZW1vcnlfbWFwX3QpCiAgICAgaWYgaXQgbWFrZXMg c2Vuc2UKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY2IC0gc3VnZ2VzdGlvbnMv Zml4ZXM6CiAgIC0gcHJvcGVybHkgaW5kZXggbXVsdGlib290Ml90YWdfbW1hcF90LmVudHJpZXNb XQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRvIG5vdCBpbmRleCBtYmlf b3V0X21vZHNbXSBiZXlvbmQgaXRzIGVuZAogICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3Bl ciksCiAgIC0gcmVkdWNlIG51bWJlciBvZiBjYXN0cwogICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3 IENvb3BlciBhbmQgSmFuIEJldWxpY2gpLAogICAtIGFkZCBicmFjZXMgdG8gaW5jcmVhc2UgY29k ZSByZWFkYWJpbGl0eQogICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3BlcikuCgp2NSAtIHN1 Z2dlc3Rpb25zL2ZpeGVzOgogICAtIGNoZWNrIG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyeV9z aXplIGJlZm9yZQogICAgIG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyaWVzW10gdXNlCiAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcHJvcGVybHkgaW5kZXggbXVsdGlib290 Ml90YWdfbW1hcF90LmVudHJpZXNbXQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAog ICAtIHVzZSAidHlwZSBuYW1lW10iIGluc3RhZCBvZiAidHlwZSBuYW1lWzBdIgogICAgIGluIHhl bi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSByZW1vdmUgdW5uZWVkZWQgY29tbWVudAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpLgoKdjQgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBhdm9pZCBhc3NlbWJseSB1c2Fn ZSBpbiB4ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jLAogICAtIGZpeCBib3VuZGFyeSBjaGVjayBp c3N1ZSBhbmQgb3B0aW1pemUKICAgICBmb3IoKSBsb29wcyBpbiBtYmkyX21iaSgpLAogICAtIG1v dmUgdG8gc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24sCiAgIC0gcmVtb3ZlIHVubmVlZGVkIHR5 cGVvZigpIGZyb20gQUxJR05fVVAoKSBtYWNybwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLAogICAtIGFkZCBhbmQgdXNlIE5VTEwgZGVmaW5pdGlvbiBpbiB4ZW4vYXJjaC94ODYvYm9v dC9yZWxvYy5jCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IHJl YWQgZGF0YSBiZXlvbmQgdGhlIGVuZCBvZiBtdWx0aWJvb3QyCiAgICAgaW5mb3JtYXRpb24gaW4g eGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gYWRkIDpyZXEgdG8gc29tZSAubWFjcm8gYXJndW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCksCiAgIC0gdXNlIGNtb3ZjYyBpZiBwb3NzaWJsZSwKICAgLSBhZGQgLkwg dG8gbXVsdGlib290Ml9oZWFkZXJfZW5kIGxhYmVsCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCksCiAgIC0gYWRkIC5MIHRvIG11bHRpYm9vdDJfcHJvdG8gbGFiZWwKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBpbXByb3ZlIGxhYmVsIG5hbWVzCiAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkuCgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIHJlb3Jk ZXIgcmVsb2MoKSBhcmd1bWVudHMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAg LSByZW1vdmUgLkwgZnJvbSBtdWx0aWJvb3QyIGhlYWRlciBsYWJlbHMKICAgICAoc3VnZ2VzdGVk IGJ5IEFuZHJldyBDb29wZXIsIEphbiBCZXVsaWNoIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGsp LAogICAtIHRha2UgaW50byBhY2NvdW50IGFsaWdubWVudCB3aGVuIHNraXBwaW5nIG11bHRpYm9v dDIgZml4ZWQgcGFydAogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwK ICAgLSBjcmVhdGUgbW9kdWxlcyBkYXRhIGlmIG1vZHVsZXMgY291bnQgIT0gMAogICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGltcHJvdmUgbWFjcm9zCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVkdWNlIG51bWJlciBvZiBjYXN0cwogICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBjb25zdCBpZiBwb3NzaWJsZQogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRyb3Agc3RhdGljIGFuZCBfX3VzZWRfXyBh dHRyaWJ1dGUgZnJvbSByZWxvYygpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAg IC0gcmVtb3ZlIGlzb2xhdGVkL3N0cmF5IF9fcGFja2VkIGF0dHJpYnV0ZSBmcm9tCiAgICAgbXVs dGlib290Ml9tZW1vcnlfbWFwX3QgdHlwZSBkZWZpbml0aW9uCiAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCksCiAgIC0gcmVmb3JtYXQgeGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaAog ICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSBpbXByb3ZlIGNv bW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspLAogICAtIHJl bW92ZSBoYXJkIHRhYnMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoIGFuZCBLb25yYWQg Unplc3p1dGVrIFdpbGspLgoKdjIgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSBnZW5lcmF0ZSBt dWx0aWJvb3QyIGhlYWRlciB1c2luZyBtYWNyb3MKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKSwKICAgLSBpbXByb3ZlIGNvbW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gc2ltcGxpZnkgYXNzZW1ibHkgaW4geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCiAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IGluY2x1ZGUgaW5jbHVk ZS94ZW4vY29tcGlsZXIuaAogICAgIGluIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkbyBub3QgcmVhZCBkYXRhIGJleW9uZCB0 aGUgZW5kIG9mIG11bHRpYm9vdDIgaW5mb3JtYXRpb24KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKS4KCnYyIC0gbm90IGZpeGVkIHlldDoKICAgLSBkeW5hbWljIGRlcGVuZGVuY3kgZ2Vu ZXJhdGlvbiBmb3IgeGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuUzsKICAgICB0aGlzIHJlcXVpcmVz IG1vcmUgd29yazsgSSBhbSBub3Qgc3VyZSB0aGF0IGl0IHBheXMgYmVjYXVzZQogICAgIHBvdGVu dGlhbCBwYXRjaCByZXF1aXJlcyBtb3JlIGNoYW5nZXMgdGhhbiBhZGRpdGlvbiBvZiBqdXN0CiAg ICAgbXVsdGlib290Mi5oIHRvIE1ha2VmaWxlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gaXNvbGF0ZWQvc3RyYXkgX19wYWNrZWQgYXR0cmlidXRlIHVzYWdlIGZvciBtdWx0 aWJvb3QyX21lbW9yeV9tYXBfdAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLgotLS0K IHhlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlICAgICAgICB8ICAgIDMgKy0KIHhlbi9hcmNoL3g4 Ni9ib290L2hlYWQuUyAgICAgICAgICB8ICAxMDcgKysrKysrKysrKysrKysrKysrKysrKy0KIHhl bi9hcmNoL3g4Ni9ib290L3JlbG9jLmMgICAgICAgICB8ICAxNTQgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgfCAgICA5 ICsrCiB4ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oICAgICAgfCAgMTY5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNDMyIGluc2VydGlv bnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hl bi9tdWx0aWJvb3QyLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZSBi L3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCmluZGV4IDZkMjA2NDYuLmM2MjQ2YzggMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290 L01ha2VmaWxlCkBAIC00LDcgKzQsOCBAQCBERUZTX0hfREVQUyA9IGRlZnMuaCAkKEJBU0VESVIp L2luY2x1ZGUveGVuL3N0ZGJvb2wuaAogCiBDTURMSU5FX0RFUFMgPSAkKERFRlNfSF9ERVBTKSB2 aWRlby5oCiAKLVJFTE9DX0RFUFMgPSAkKERFRlNfSF9ERVBTKSAkKEJBU0VESVIpL2luY2x1ZGUv eGVuL211bHRpYm9vdC5oCitSRUxPQ19ERVBTID0gJChERUZTX0hfREVQUykgJChCQVNFRElSKS9p bmNsdWRlL3hlbi9tdWx0aWJvb3QuaCBcCisJICAgICAkKEJBU0VESVIpL2luY2x1ZGUveGVuL211 bHRpYm9vdDIuaAogCiBoZWFkLm86IGNtZGxpbmUuUyByZWxvYy5TCiAKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9ib290L2hlYWQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwppbmRleCAw YWE0ZWZhLi42YmNkMDVhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKKysr IGIveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPHhl bi9tdWx0aWJvb3QuaD4KKyNpbmNsdWRlIDx4ZW4vbXVsdGlib290Mi5oPgogI2luY2x1ZGUgPHB1 YmxpYy94ZW4uaD4KICNpbmNsdWRlIDxhc20vYXNtX2RlZm5zLmg+CiAjaW5jbHVkZSA8YXNtL2Rl c2MuaD4KQEAgLTE4LDYgKzE5LDI4IEBACiAjZGVmaW5lIEJPT1RfUFNFVURPUk1fQ1MgMHgwMDIw CiAjZGVmaW5lIEJPT1RfUFNFVURPUk1fRFMgMHgwMDI4CiAKKyNkZWZpbmUgTUIyX0hUKG5hbWUp ICAgICAgKE1VTFRJQk9PVDJfSEVBREVSX1RBR18jI25hbWUpCisjZGVmaW5lIE1CMl9UVChuYW1l KSAgICAgIChNVUxUSUJPT1QyX1RBR19UWVBFXyMjbmFtZSkKKworICAgICAgICAubWFjcm8gbWIy aHRfYXJncyBhcmc6cmVxLCBhcmdzOnZhcmFyZworICAgICAgICAubG9uZyBcYXJnCisgICAgICAg IC5pZm5iIFxhcmdzCisgICAgICAgIG1iMmh0X2FyZ3MgXGFyZ3MKKyAgICAgICAgLmVuZGlmCisg ICAgICAgIC5lbmRtCisKKyAgICAgICAgLm1hY3JvIG1iMmh0X2luaXQgdHlwZTpyZXEsIHJlcTpy ZXEsIGFyZ3M6dmFyYXJnCisgICAgICAgIC5hbGlnbiBNVUxUSUJPT1QyX1RBR19BTElHTgorLkxt YjJodF9pbml0X3N0YXJ0XEA6CisgICAgICAgIC5zaG9ydCBcdHlwZQorICAgICAgICAuc2hvcnQg XHJlcQorICAgICAgICAubG9uZyAuTG1iMmh0X2luaXRfZW5kXEAgLSAuTG1iMmh0X2luaXRfc3Rh cnRcQAorICAgICAgICAuaWZuYiBcYXJncworICAgICAgICBtYjJodF9hcmdzIFxhcmdzCisgICAg ICAgIC5lbmRpZgorLkxtYjJodF9pbml0X2VuZFxAOgorICAgICAgICAuZW5kbQorCiBFTlRSWShz dGFydCkKICAgICAgICAgam1wICAgICBfX3N0YXJ0CiAKQEAgLTMzLDYgKzU2LDQyIEBAIG11bHRp Ym9vdDFfaGVhZGVyX3N0YXJ0OiAgICAgICAvKioqIE1VTFRJQk9PVDEgSEVBREVSICoqKiovCiAg ICAgICAgIC5sb25nICAgLShNVUxUSUJPT1RfSEVBREVSX01BR0lDICsgTVVMVElCT09UX0hFQURF Ul9GTEFHUykKIG11bHRpYm9vdDFfaGVhZGVyX2VuZDoKIAorLyoqKiBNVUxUSUJPT1QyIEhFQURF UiAqKioqLworLyogU29tZSBpZGVhcyBhcmUgdGFrZW4gZnJvbSBncnViLTIuMDAvZ3J1Yi1jb3Jl L3Rlc3RzL2Jvb3Qva2VybmVsLWkzODYuUyBmaWxlLiAqLworICAgICAgICAuYWxpZ24gIE1VTFRJ Qk9PVDJfSEVBREVSX0FMSUdOCisKK211bHRpYm9vdDJfaGVhZGVyX3N0YXJ0OgorICAgICAgICAv KiBNYWdpYyBudW1iZXIgaW5kaWNhdGluZyBhIE11bHRpYm9vdDIgaGVhZGVyLiAqLworICAgICAg ICAubG9uZyAgIE1VTFRJQk9PVDJfSEVBREVSX01BR0lDCisgICAgICAgIC8qIEFyY2hpdGVjdHVy ZTogaTM4Ni4gKi8KKyAgICAgICAgLmxvbmcgICBNVUxUSUJPT1QyX0FSQ0hJVEVDVFVSRV9JMzg2 CisgICAgICAgIC8qIE11bHRpYm9vdDIgaGVhZGVyIGxlbmd0aC4gKi8KKyAgICAgICAgLmxvbmcg ICAuTG11bHRpYm9vdDJfaGVhZGVyX2VuZCAtIG11bHRpYm9vdDJfaGVhZGVyX3N0YXJ0CisgICAg ICAgIC8qIE11bHRpYm9vdDIgaGVhZGVyIGNoZWNrc3VtLiAqLworICAgICAgICAubG9uZyAgIC0o TVVMVElCT09UMl9IRUFERVJfTUFHSUMgKyBNVUxUSUJPT1QyX0FSQ0hJVEVDVFVSRV9JMzg2ICsg XAorICAgICAgICAgICAgICAgICAgICAgICAgKC5MbXVsdGlib290Ml9oZWFkZXJfZW5kIC0gbXVs dGlib290Ml9oZWFkZXJfc3RhcnQpKQorCisgICAgICAgIC8qIE11bHRpYm9vdDIgaW5mb3JtYXRp b24gcmVxdWVzdCB0YWcuICovCisgICAgICAgIG1iMmh0X2luaXQgTUIyX0hUKElORk9STUFUSU9O X1JFUVVFU1QpLCBNQjJfSFQoUkVRVUlSRUQpLCBcCisgICAgICAgICAgICAgICAgICAgTUIyX1RU KEJBU0lDX01FTUlORk8pLCBNQjJfVFQoTU1BUCkKKworICAgICAgICAvKiBBbGlnbiBtb2R1bGVz IGF0IHBhZ2UgYm91bmRyeS4gKi8KKyAgICAgICAgbWIyaHRfaW5pdCBNQjJfSFQoTU9EVUxFX0FM SUdOKSwgTUIyX0hUKFJFUVVJUkVEKQorCisgICAgICAgIC8qIENvbnNvbGUgZmxhZ3MgdGFnLiAq LworICAgICAgICBtYjJodF9pbml0IE1CMl9IVChDT05TT0xFX0ZMQUdTKSwgTUIyX0hUKE9QVElP TkFMKSwgXAorICAgICAgICAgICAgICAgICAgIE1VTFRJQk9PVDJfQ09OU09MRV9GTEFHU19FR0Ff VEVYVF9TVVBQT1JURUQKKworICAgICAgICAvKiBGcmFtZWJ1ZmZlciB0YWcuICovCisgICAgICAg IG1iMmh0X2luaXQgTUIyX0hUKEZSQU1FQlVGRkVSKSwgTUIyX0hUKE9QVElPTkFMKSwgXAorICAg ICAgICAgICAgICAgICAgIDAsIC8qIE51bWJlciBvZiB0aGUgY29sdW1ucyAtIG5vIHByZWZlcmVu Y2UuICovIFwKKyAgICAgICAgICAgICAgICAgICAwLCAvKiBOdW1iZXIgb2YgdGhlIGxpbmVzIC0g bm8gcHJlZmVyZW5jZS4gKi8gXAorICAgICAgICAgICAgICAgICAgIDAgIC8qIE51bWJlciBvZiBi aXRzIHBlciBwaXhlbCAtIG5vIHByZWZlcmVuY2UuICovCisKKyAgICAgICAgLyogTXVsdGlib290 MiBoZWFkZXIgZW5kIHRhZy4gKi8KKyAgICAgICAgbWIyaHRfaW5pdCBNQjJfSFQoRU5EKSwgTUIy X0hUKFJFUVVJUkVEKQorLkxtdWx0aWJvb3QyX2hlYWRlcl9lbmQ6CisKICAgICAgICAgLnNlY3Rp b24gLmluaXQucm9kYXRhLCAiYSIsIEBwcm9nYml0cwogICAgICAgICAuYWxpZ24gNAogCkBAIC04 MSwxMCArMTQwLDUyIEBAIF9fc3RhcnQ6CiAgICAgICAgIG1vdiAgICAgJWVjeCwlZXMKICAgICAg ICAgbW92ICAgICAlZWN4LCVzcwogCi0gICAgICAgIC8qIENoZWNrIGZvciBNdWx0aWJvb3QgYm9v dGxvYWRlciAqLworICAgICAgICAvKiBCb290bG9hZGVycyBtYXkgc2V0IG11bHRpYm9vdHsxLDJ9 Lm1lbV9sb3dlciB0byBhIG5vbnplcm8gdmFsdWUuICovCisgICAgICAgIHhvciAgICAgJWVkeCwl ZWR4CisKKyAgICAgICAgLyogQ2hlY2sgZm9yIE11bHRpYm9vdDIgYm9vdGxvYWRlci4gKi8KKyAg ICAgICAgY21wICAgICAkTVVMVElCT09UMl9CT09UTE9BREVSX01BR0lDLCVlYXgKKyAgICAgICAg amUgICAgICAuTG11bHRpYm9vdDJfcHJvdG8KKworICAgICAgICAvKiBDaGVjayBmb3IgTXVsdGli b290IGJvb3Rsb2FkZXIuICovCiAgICAgICAgIGNtcCAgICAgJE1VTFRJQk9PVF9CT09UTE9BREVS X01BR0lDLCVlYXgKICAgICAgICAgam5lICAgICBub3RfbXVsdGlib290CiAKKyAgICAgICAgLyog R2V0IG1lbV9sb3dlciBmcm9tIE11bHRpYm9vdCBpbmZvcm1hdGlvbi4gKi8KKyAgICAgICAgdGVz dGIgICAkTUJJX01FTUxJTUlUUyxNQl9mbGFncyglZWJ4KQorCisgICAgICAgIC8qIE5vdCBhdmFp bGFibGU/IEJEQSB2YWx1ZSB3aWxsIGJlIGZpbmUuICovCisgICAgICAgIGNtb3ZueiAgTUJfbWVt X2xvd2VyKCVlYngpLCVlZHgKKyAgICAgICAgam1wICAgICB0cmFtcG9saW5lX3NldHVwCisKKy5M bXVsdGlib290Ml9wcm90bzoKKyAgICAgICAgLyogU2tpcCBNdWx0aWJvb3QyIGluZm9ybWF0aW9u IGZpeGVkIHBhcnQuICovCisgICAgICAgIGxlYSAgICAgKE1CMl9maXhlZF9zaXplb2YrTVVMVElC T09UMl9UQUdfQUxJR04tMSkoJWVieCksJWVjeAorICAgICAgICBhbmQgICAgICR+KE1VTFRJQk9P VDJfVEFHX0FMSUdOLTEpLCVlY3gKKworLkxtYjJfdHNpemU6CisgICAgICAgIC8qIENoZWNrIE11 bHRpYm9vdDIgaW5mb3JtYXRpb24gdG90YWwgc2l6ZS4gKi8KKyAgICAgICAgbW92ICAgICAlZWN4 LCVlZGkKKyAgICAgICAgc3ViICAgICAlZWJ4LCVlZGkKKyAgICAgICAgY21wICAgICAlZWRpLE1C Ml9maXhlZF90b3RhbF9zaXplKCVlYngpCisgICAgICAgIGpiZSAgICAgdHJhbXBvbGluZV9zZXR1 cAorCisgICAgICAgIC8qIEdldCBtZW1fbG93ZXIgZnJvbSBNdWx0aWJvb3QyIGluZm9ybWF0aW9u LiAqLworICAgICAgICBjbXBsICAgICRNVUxUSUJPT1QyX1RBR19UWVBFX0JBU0lDX01FTUlORk8s TUIyX3RhZ190eXBlKCVlY3gpCisgICAgICAgIGNtb3ZlICAgTUIyX21lbV9sb3dlciglZWN4KSwl ZWR4CisgICAgICAgIGplICAgICAgdHJhbXBvbGluZV9zZXR1cAorCisgICAgICAgIC8qIElzIGl0 IHRoZSBlbmQgb2YgTXVsdGlib290MiBpbmZvcm1hdGlvbj8gKi8KKyAgICAgICAgY21wbCAgICAk TVVMVElCT09UMl9UQUdfVFlQRV9FTkQsTUIyX3RhZ190eXBlKCVlY3gpCisgICAgICAgIGplICAg ICAgdHJhbXBvbGluZV9zZXR1cAorCisgICAgICAgIC8qIEdvIHRvIG5leHQgTXVsdGlib290MiBp bmZvcm1hdGlvbiB0YWcuICovCisgICAgICAgIGFkZCAgICAgTUIyX3RhZ19zaXplKCVlY3gpLCVl Y3gKKyAgICAgICAgYWRkICAgICAkKE1VTFRJQk9PVDJfVEFHX0FMSUdOLTEpLCVlY3gKKyAgICAg ICAgYW5kICAgICAkfihNVUxUSUJPT1QyX1RBR19BTElHTi0xKSwlZWN4CisgICAgICAgIGptcCAg ICAgLkxtYjJfdHNpemUKKwordHJhbXBvbGluZV9zZXR1cDoKICAgICAgICAgLyogU2V0IHVwIHRy YW1wb2xpbmUgc2VnbWVudCA2NGsgYmVsb3cgRUJEQSAqLwogICAgICAgICBtb3Z6d2wgIDB4NDBl LCVlY3ggICAgICAgICAgLyogRUJEQSBzZWdtZW50ICovCiAgICAgICAgIGNtcCAgICAgJDB4YTAw MCwlZWN4ICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKGhpZ2gpICovCkBAIC05OSw5ICsyMDAsNiBA QCBfX3N0YXJ0OgogICAgICAgICAgKiBDb21wYXJlIHRoZSB2YWx1ZSBpbiB0aGUgQkRBIHdpdGgg dGhlIGluZm9ybWF0aW9uIGZyb20gdGhlCiAgICAgICAgICAqIG11bHRpYm9vdCBzdHJ1Y3R1cmUg KGlmIGF2YWlsYWJsZSkgYW5kIHVzZSB0aGUgc21hbGxlc3QuCiAgICAgICAgICAqLwotICAgICAg ICB0ZXN0YiAgICRNQklfTUVNTElNSVRTLCglZWJ4KQotICAgICAgICBqeiAgICAgIDJmICAgICAg ICAgICAgICAgICAgLyogbm90IGF2YWlsYWJsZT8gQkRBIHZhbHVlIHdpbGwgYmUgZmluZSAqLwot ICAgICAgICBtb3YgICAgIE1CX21lbV9sb3dlciglZWJ4KSwlZWR4CiAgICAgICAgIGNtcCAgICAg JDB4MTAwLCVlZHggICAgICAgICAvKiBpcyB0aGUgbXVsdGlib290IHZhbHVlIHRvbyBzbWFsbD8g Ki8KICAgICAgICAgamIgICAgICAyZiAgICAgICAgICAgICAgICAgIC8qIGlmIHNvLCBkbyBub3Qg dXNlIGl0ICovCiAgICAgICAgIHNobCAgICAgJDEwLTQsJWVkeApAQCAtMTIwLDYgKzIxOCw3IEBA IF9fc3RhcnQ6CiAgICAgICAgIG1vdiAgICAgJHN5bV9waHlzKGNwdTBfc3RhY2spKzEwMjQsJWVz cAogICAgICAgICBwdXNoICAgICVlY3ggICAgICAgICAgICAgICAgLyogQm9vdCB0cmFtcG9saW5l IGFkZHJlc3MuICovCiAgICAgICAgIHB1c2ggICAgJWVieCAgICAgICAgICAgICAgICAvKiBNdWx0 aWJvb3QgaW5mb3JtYXRpb24gYWRkcmVzcy4gKi8KKyAgICAgICAgcHVzaCAgICAlZWF4ICAgICAg ICAgICAgICAgIC8qIE11bHRpYm9vdCBtYWdpYy4gKi8KICAgICAgICAgY2FsbCAgICByZWxvYwog ICAgICAgICBtb3YgICAgICVlYXgsc3ltX3BoeXMobXVsdGlib290X3B0cikKIApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYyBiL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMK aW5kZXggOTE0MDVlOS4uOTFmYWI5ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvcmVs b2MuYworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCkBAIC01LDE1ICs1LDE4IEBACiAg KiBhbmQgbW9kdWxlcy4gVGhpcyBpcyBtb3N0IGVhc2lseSBkb25lIGVhcmx5IHdpdGggcGFnaW5n IGRpc2FibGVkLgogICoKICAqIENvcHlyaWdodCAoYykgMjAwOSwgQ2l0cml4IFN5c3RlbXMsIElu Yy4KKyAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogQXV0aG9yczoKICAqICAgIEtlaXIgRnJh c2VyIDxrZWlyQHhlbi5vcmc+CisgKiAgICBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFj bGUuY29tPgogICovCiAKIC8qCiAgKiBUaGlzIGVudHJ5IHBvaW50IGlzIGVudGVyZWQgZnJvbSB4 ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgd2l0aDoKLSAqICAgLSAweDQoJWVzcCkgPSBNVUxUSUJP T1RfSU5GT1JNQVRJT05fQUREUkVTUywKLSAqICAgLSAweDgoJWVzcCkgPSBCT09UX1RSQU1QT0xJ TkVfQUREUkVTUy4KKyAqICAgLSAweDQoJWVzcCkgPSBNVUxUSUJPT1RfTUFHSUMsCisgKiAgIC0g MHg4KCVlc3ApID0gTVVMVElCT09UX0lORk9STUFUSU9OX0FERFJFU1MsCisgKiAgIC0gMHhjKCVl c3ApID0gQk9PVF9UUkFNUE9MSU5FX0FERFJFU1MuCiAgKi8KIGFzbSAoCiAgICAgIiAgICAudGV4 dCAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKQEAgLTI0LDYgKzI3LDEwIEBAIGFzbSAoCiAK ICNpbmNsdWRlICJkZWZzLmgiCiAjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS94ZW4vbXVsdGli b290LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oIgorCisj ZGVmaW5lIGdldF9tYjJfZGF0YSh0YWcsIHR5cGUsIG1lbWJlcikgICAoKChtdWx0aWJvb3QyX3Rh Z18jI3R5cGUjI190ICopKHRhZykpLT5tZW1iZXIpCisjZGVmaW5lIGdldF9tYjJfc3RyaW5nKHRh ZywgdHlwZSwgbWVtYmVyKSAoKHUzMilnZXRfbWIyX2RhdGEodGFnLCB0eXBlLCBtZW1iZXIpKQog CiBzdGF0aWMgdTMyIGFsbG9jOwogCkBAIC0zMiw2ICszOSwxMiBAQCBzdGF0aWMgdTMyIGFsbG9j X21lbSh1MzIgYnl0ZXMpCiAgICAgcmV0dXJuIGFsbG9jIC09IEFMSUdOX1VQKGJ5dGVzLCAxNik7 CiB9CiAKK3N0YXRpYyB2b2lkIHplcm9fbWVtKHUzMiBzLCB1MzIgYnl0ZXMpCit7CisgICAgd2hp bGUgKCBieXRlcy0tICkKKyAgICAgICAgKihjaGFyICopcysrID0gMDsKK30KKwogc3RhdGljIHUz MiBjb3B5X21lbSh1MzIgc3JjLCB1MzIgYnl0ZXMpCiB7CiAgICAgdTMyIGRzdCwgZHN0X3JldDsK QEAgLTU4LDEzICs3MSwxMSBAQCBzdGF0aWMgdTMyIGNvcHlfc3RyaW5nKHUzMiBzcmMpCiAgICAg cmV0dXJuIGNvcHlfbWVtKHNyYywgcCAtIHNyYyArIDEpOwogfQogCi1tdWx0aWJvb3RfaW5mb190 IF9fc3RkY2FsbCAqcmVsb2ModTMyIG1iaV9pbiwgdTMyIHRyYW1wb2xpbmUpCitzdGF0aWMgbXVs dGlib290X2luZm9fdCAqbWJpX3JlbG9jKHUzMiBtYmlfaW4pCiB7CiAgICAgaW50IGk7CiAgICAg bXVsdGlib290X2luZm9fdCAqbWJpX291dDsKIAotICAgIGFsbG9jID0gdHJhbXBvbGluZTsKLQog ICAgIG1iaV9vdXQgPSBfcChjb3B5X21lbShtYmlfaW4sIHNpemVvZigqbWJpX291dCkpKTsKIAog ICAgIGlmICggbWJpX291dC0+ZmxhZ3MgJiBNQklfQ01ETElORSApCkBAIC0xMDEsMyArMTEyLDEz NiBAQCBtdWx0aWJvb3RfaW5mb190IF9fc3RkY2FsbCAqcmVsb2ModTMyIG1iaV9pbiwgdTMyIHRy YW1wb2xpbmUpCiAKICAgICByZXR1cm4gbWJpX291dDsKIH0KKworc3RhdGljIG11bHRpYm9vdF9p bmZvX3QgKm1iaTJfcmVsb2ModTMyIG1iaV9pbikKK3sKKyAgICBjb25zdCBtdWx0aWJvb3QyX2Zp eGVkX3QgKm1iaV9maXggPSBfcChtYmlfaW4pOworICAgIGNvbnN0IG11bHRpYm9vdDJfbWVtb3J5 X21hcF90ICptbWFwX3NyYzsKKyAgICBjb25zdCBtdWx0aWJvb3QyX3RhZ190ICp0YWc7CisgICAg bW9kdWxlX3QgKm1iaV9vdXRfbW9kcyA9IE5VTEw7CisgICAgbWVtb3J5X21hcF90ICptbWFwX2Rz dDsKKyAgICBtdWx0aWJvb3RfaW5mb190ICptYmlfb3V0OworICAgIHUzMiBwdHI7CisgICAgdW5z aWduZWQgaW50IGksIG1vZF9pZHggPSAwOworCisgICAgcHRyID0gYWxsb2NfbWVtKHNpemVvZigq bWJpX291dCkpOworICAgIG1iaV9vdXQgPSBfcChwdHIpOworICAgIHplcm9fbWVtKHB0ciwgc2l6 ZW9mKCptYmlfb3V0KSk7CisKKyAgICAvKiBTa2lwIE11bHRpYm9vdDIgaW5mb3JtYXRpb24gZml4 ZWQgcGFydC4gKi8KKyAgICBwdHIgPSBBTElHTl9VUChtYmlfaW4gKyBzaXplb2YoKm1iaV9maXgp LCBNVUxUSUJPT1QyX1RBR19BTElHTik7CisKKyAgICAvKiBHZXQgdGhlIG51bWJlciBvZiBtb2R1 bGVzLiAqLworICAgIGZvciAoIHRhZyA9IF9wKHB0cik7ICh1MzIpdGFnIC0gbWJpX2luIDwgbWJp X2ZpeC0+dG90YWxfc2l6ZTsKKyAgICAgICAgICB0YWcgPSBfcChBTElHTl9VUCgodTMyKXRhZyAr IHRhZy0+c2l6ZSwgTVVMVElCT09UMl9UQUdfQUxJR04pKSApCisgICAgeworICAgICAgICBpZiAo IHRhZy0+dHlwZSA9PSBNVUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRSApCisgICAgICAgICAgICAr K21iaV9vdXQtPm1vZHNfY291bnQ7CisgICAgICAgIGVsc2UgaWYgKCB0YWctPnR5cGUgPT0gTVVM VElCT09UMl9UQUdfVFlQRV9FTkQgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg aWYgKCBtYmlfb3V0LT5tb2RzX2NvdW50ICkKKyAgICB7CisgICAgICAgIG1iaV9vdXQtPmZsYWdz IHw9IE1CSV9NT0RVTEVTOworICAgICAgICBtYmlfb3V0LT5tb2RzX2FkZHIgPSBhbGxvY19tZW0o bWJpX291dC0+bW9kc19jb3VudCAqIHNpemVvZigqbWJpX291dF9tb2RzKSk7CisgICAgICAgIG1i aV9vdXRfbW9kcyA9IF9wKG1iaV9vdXQtPm1vZHNfYWRkcik7CisgICAgfQorCisgICAgLyogU2tp cCBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIGZpeGVkIHBhcnQuICovCisgICAgcHRyID0gQUxJR05f VVAobWJpX2luICsgc2l6ZW9mKCptYmlfZml4KSwgTVVMVElCT09UMl9UQUdfQUxJR04pOworCisg ICAgLyogUHV0IGFsbCBuZWVkZWQgZGF0YSBpbnRvIG1iaV9vdXQuICovCisgICAgZm9yICggdGFn ID0gX3AocHRyKTsgKHUzMil0YWcgLSBtYmlfaW4gPCBtYmlfZml4LT50b3RhbF9zaXplOworICAg ICAgICAgIHRhZyA9IF9wKEFMSUdOX1VQKCh1MzIpdGFnICsgdGFnLT5zaXplLCBNVUxUSUJPT1Qy X1RBR19BTElHTikpICkKKyAgICAgICAgc3dpdGNoICggdGFnLT50eXBlICkKKyAgICAgICAgewor ICAgICAgICBjYXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfQk9PVF9MT0FERVJfTkFNRToKKyAgICAg ICAgICAgIG1iaV9vdXQtPmZsYWdzIHw9IE1CSV9MT0FERVJOQU1FOworICAgICAgICAgICAgcHRy ID0gZ2V0X21iMl9zdHJpbmcodGFnLCBzdHJpbmcsIHN0cmluZyk7CisgICAgICAgICAgICBtYmlf b3V0LT5ib290X2xvYWRlcl9uYW1lID0gY29weV9zdHJpbmcocHRyKTsKKyAgICAgICAgICAgIGJy ZWFrOworCisgICAgICAgIGNhc2UgTVVMVElCT09UMl9UQUdfVFlQRV9DTURMSU5FOgorICAgICAg ICAgICAgbWJpX291dC0+ZmxhZ3MgfD0gTUJJX0NNRExJTkU7CisgICAgICAgICAgICBwdHIgPSBn ZXRfbWIyX3N0cmluZyh0YWcsIHN0cmluZywgc3RyaW5nKTsKKyAgICAgICAgICAgIG1iaV9vdXQt PmNtZGxpbmUgPSBjb3B5X3N0cmluZyhwdHIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0JBU0lDX01FTUlORk86CisgICAgICAgICAgICBt Ymlfb3V0LT5mbGFncyB8PSBNQklfTUVNTElNSVRTOworICAgICAgICAgICAgbWJpX291dC0+bWVt X2xvd2VyID0gZ2V0X21iMl9kYXRhKHRhZywgYmFzaWNfbWVtaW5mbywgbWVtX2xvd2VyKTsKKyAg ICAgICAgICAgIG1iaV9vdXQtPm1lbV91cHBlciA9IGdldF9tYjJfZGF0YSh0YWcsIGJhc2ljX21l bWluZm8sIG1lbV91cHBlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1V TFRJQk9PVDJfVEFHX1RZUEVfTU1BUDoKKyAgICAgICAgICAgIGlmICggZ2V0X21iMl9kYXRhKHRh ZywgbW1hcCwgZW50cnlfc2l6ZSkgPCBzaXplb2YoKm1tYXBfc3JjKSApCisgICAgICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgICAgIG1iaV9vdXQtPmZsYWdzIHw9IE1CSV9NRU1NQVA7Cisg ICAgICAgICAgICBtYmlfb3V0LT5tbWFwX2xlbmd0aCA9IGdldF9tYjJfZGF0YSh0YWcsIG1tYXAs IHNpemUpOworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGggLT0gc2l6ZW9mKG11bHRp Ym9vdDJfdGFnX21tYXBfdCk7CisgICAgICAgICAgICBtYmlfb3V0LT5tbWFwX2xlbmd0aCAvPSBn ZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBlbnRyeV9zaXplKTsKKyAgICAgICAgICAgIG1iaV9vdXQt Pm1tYXBfbGVuZ3RoICo9IHNpemVvZigqbW1hcF9kc3QpOworCisgICAgICAgICAgICBtYmlfb3V0 LT5tbWFwX2FkZHIgPSBhbGxvY19tZW0obWJpX291dC0+bW1hcF9sZW5ndGgpOworCisgICAgICAg ICAgICBtbWFwX3NyYyA9IGdldF9tYjJfZGF0YSh0YWcsIG1tYXAsIGVudHJpZXMpOworICAgICAg ICAgICAgbW1hcF9kc3QgPSBfcChtYmlfb3V0LT5tbWFwX2FkZHIpOworCisgICAgICAgICAgICBm b3IgKCBpID0gMDsgaSA8IG1iaV9vdXQtPm1tYXBfbGVuZ3RoIC8gc2l6ZW9mKCptbWFwX2RzdCk7 IGkrKyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogSW5pdCBzaXplIG1lbWJl ciBwcm9wZXJseS4gKi8KKyAgICAgICAgICAgICAgICBtbWFwX2RzdFtpXS5zaXplID0gc2l6ZW9m KCptbWFwX2RzdCk7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uc2l6ZSAtPSBzaXplb2Yo bW1hcF9kc3RbaV0uc2l6ZSk7CisgICAgICAgICAgICAgICAgLyogTm93IGNvcHkgYSBnaXZlbiBy ZWdpb24gZGF0YS4gKi8KKyAgICAgICAgICAgICAgICBtbWFwX2RzdFtpXS5iYXNlX2FkZHJfbG93 ID0gKHUzMiltbWFwX3NyYy0+YWRkcjsKKyAgICAgICAgICAgICAgICBtbWFwX2RzdFtpXS5iYXNl X2FkZHJfaGlnaCA9ICh1MzIpKG1tYXBfc3JjLT5hZGRyID4+IDMyKTsKKyAgICAgICAgICAgICAg ICBtbWFwX2RzdFtpXS5sZW5ndGhfbG93ID0gKHUzMiltbWFwX3NyYy0+bGVuOworICAgICAgICAg ICAgICAgIG1tYXBfZHN0W2ldLmxlbmd0aF9oaWdoID0gKHUzMikobW1hcF9zcmMtPmxlbiA+PiAz Mik7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0udHlwZSA9IG1tYXBfc3JjLT50eXBlOwor ICAgICAgICAgICAgICAgIG1tYXBfc3JjID0gX3AobW1hcF9zcmMpICsgZ2V0X21iMl9kYXRhKHRh ZywgbW1hcCwgZW50cnlfc2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBjYXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfTU9EVUxFOgorICAgICAgICAgICAg aWYgKCBtb2RfaWR4ID49IG1iaV9vdXQtPm1vZHNfY291bnQgKQorICAgICAgICAgICAgICAgIGJy ZWFrOworCisgICAgICAgICAgICBtYmlfb3V0X21vZHNbbW9kX2lkeF0ubW9kX3N0YXJ0ID0gZ2V0 X21iMl9kYXRhKHRhZywgbW9kdWxlLCBtb2Rfc3RhcnQpOworICAgICAgICAgICAgbWJpX291dF9t b2RzW21vZF9pZHhdLm1vZF9lbmQgPSBnZXRfbWIyX2RhdGEodGFnLCBtb2R1bGUsIG1vZF9lbmQp OworICAgICAgICAgICAgcHRyID0gZ2V0X21iMl9zdHJpbmcodGFnLCBtb2R1bGUsIGNtZGxpbmUp OworICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLnN0cmluZyA9IGNvcHlfc3RyaW5n KHB0cik7CisgICAgICAgICAgICBtYmlfb3V0X21vZHNbbW9kX2lkeF0ucmVzZXJ2ZWQgPSAwOwor ICAgICAgICAgICAgKyttb2RfaWR4OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz ZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VORDoKKyAgICAgICAgICAgIHJldHVybiBtYmlfb3V0Owor CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg cmV0dXJuIG1iaV9vdXQ7Cit9CisKK211bHRpYm9vdF9pbmZvX3QgX19zdGRjYWxsICpyZWxvYyh1 MzIgbWJfbWFnaWMsIHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5lKQoreworICAgIGFsbG9jID0g dHJhbXBvbGluZTsKKworICAgIGlmICggbWJfbWFnaWMgPT0gTVVMVElCT09UMl9CT09UTE9BREVS X01BR0lDICkKKyAgICAgICAgcmV0dXJuIG1iaTJfcmVsb2MobWJpX2luKTsKKyAgICBlbHNlCisg ICAgICAgIHJldHVybiBtYmlfcmVsb2MobWJpX2luKTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlh YmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zm c2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5k OgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgYi94 ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKaW5kZXggMzNhNmIzMC4uNmFlYjU1MCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCisrKyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUg PGFzbS9maXhtYXAuaD4KICNpbmNsdWRlIDxhc20vaGFyZGlycS5oPgogI2luY2x1ZGUgPHhlbi9t dWx0aWJvb3QuaD4KKyNpbmNsdWRlIDx4ZW4vbXVsdGlib290Mi5oPgogCiAjZGVmaW5lIERFRklO RShfc3ltLCBfdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCiAgICAgYXNtIHZvbGF0aWxlICgiXG4uYXNjaWlcIj09PiNkZWZpbmUgIiAjX3N5bSAi ICUwIC8qICIgI192YWwgIiAqLzw9PVwiIiBcCkBAIC0xNjYsNiArMTY3LDE0IEBAIHZvaWQgX19k dW1teV9fKHZvaWQpCiAgICAgT0ZGU0VUKE1CX2ZsYWdzLCBtdWx0aWJvb3RfaW5mb190LCBmbGFn cyk7CiAgICAgT0ZGU0VUKE1CX2NtZGxpbmUsIG11bHRpYm9vdF9pbmZvX3QsIGNtZGxpbmUpOwog ICAgIE9GRlNFVChNQl9tZW1fbG93ZXIsIG11bHRpYm9vdF9pbmZvX3QsIG1lbV9sb3dlcik7Cisg ICAgQkxBTksoKTsKKworICAgIERFRklORShNQjJfZml4ZWRfc2l6ZW9mLCBzaXplb2YobXVsdGli b290Ml9maXhlZF90KSk7CisgICAgT0ZGU0VUKE1CMl9maXhlZF90b3RhbF9zaXplLCBtdWx0aWJv b3QyX2ZpeGVkX3QsIHRvdGFsX3NpemUpOworICAgIE9GRlNFVChNQjJfdGFnX3R5cGUsIG11bHRp Ym9vdDJfdGFnX3QsIHR5cGUpOworICAgIE9GRlNFVChNQjJfdGFnX3NpemUsIG11bHRpYm9vdDJf dGFnX3QsIHNpemUpOworICAgIE9GRlNFVChNQjJfbWVtX2xvd2VyLCBtdWx0aWJvb3QyX3RhZ19i YXNpY19tZW1pbmZvX3QsIG1lbV9sb3dlcik7CisgICAgQkxBTksoKTsKIAogICAgIE9GRlNFVChE T01BSU5fdm1fYXNzaXN0LCBzdHJ1Y3QgZG9tYWluLCB2bV9hc3Npc3QpOwogfQpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUveGVuL211bHRpYm9vdDIuaCBiL3hlbi9pbmNsdWRlL3hlbi9tdWx0aWJv b3QyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNlMzExOQotLS0gL2Rl di9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKQEAgLTAsMCArMSwxNjkg QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5LDIwMDMsMjAwNywyMDA4LDIwMDksMjAxMCAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKgorICogIG11bHRpYm9vdDIuaCAtIE11 bHRpYm9vdCAyIGhlYWRlciBmaWxlLgorICoKKyAqICBCYXNlZCBvbiBncnViLTIuMDAvaW5jbHVk ZS9tdWx0aWJvb3QyLmggZmlsZS4KKyAqCisgKiAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogIG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLCB0bworICogIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiAgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k L29yCisgKiAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqICBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp bgorICogIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl LgorICoKKyAqICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTCBBTlkKKyAqICBERVZFTE9QRVIgT1IgRElTVFJJQlVUT1IgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorICogIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IKKyAqICBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgX19N VUxUSUJPT1QyX0hfXworI2RlZmluZSBfX01VTFRJQk9PVDJfSF9fCisKKy8qIFRoZSBtYWdpYyBm aWVsZCBzaG91bGQgY29udGFpbiB0aGlzLiAgKi8KKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJf TUFHSUMgICAgICAgICAgICAgICAgICAgICAgICAgMHhlODUyNTBkNgorCisvKiBUaGlzIHNob3Vs ZCBiZSBpbiAlZWF4IG9uIHg4NiBhcmNoaXRlY3R1cmUuICAqLworI2RlZmluZSBNVUxUSUJPT1Qy X0JPT1RMT0FERVJfTUFHSUMgICAgICAgICAgICAgICAgICAgICAweDM2ZDc2Mjg5CisKKy8qIEhv dyBtYW55IGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIHdlIHNlYXJjaCBmb3IgdGhl IGhlYWRlci4gICovCisjZGVmaW5lIE1VTFRJQk9PVDJfU0VBUkNIICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDMyNzY4CisKKy8qIE11bHRpYm9vdCAyIGhlYWRlciBhbGlnbm1lbnQuICov CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX0FMSUdOICAgICAgICAgICAgICAgICAgICAgICAg IDgKKworLyogQWxpZ25tZW50IG9mIG11bHRpYm9vdCAyIG1vZHVsZXMuICAqLworI2RlZmluZSBN VUxUSUJPT1QyX01PRF9BTElHTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAw CisKKy8qIEFsaWdubWVudCBvZiB0aGUgbXVsdGlib290IDIgaW5mbyBzdHJ1Y3R1cmUuICAqLwor I2RlZmluZSBNVUxUSUJPT1QyX0lORk9fQUxJR04gICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAwMDAwMDA4CisKKy8qIE11bHRpYm9vdCAyIGFyY2hpdGVjdHVyZXMuICovCisjZGVmaW5lIE1V TFRJQk9PVDJfQVJDSElURUNUVVJFX0kzODYgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUg TVVMVElCT09UMl9BUkNISVRFQ1RVUkVfTUlQUzMyICAgICAgICAgICAgICAgICAgNAorCisvKiBI ZWFkZXIgdGFnIHR5cGVzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfRU5EICAg ICAgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19JTkZP Uk1BVElPTl9SRVFVRVNUICAgICAgIDEKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX0FE RFJFU1MgICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdf RU5UUllfQUREUkVTUyAgICAgICAgICAgICAzCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RB R19DT05TT0xFX0ZMQUdTICAgICAgICAgICAgIDQKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJf VEFHX0ZSQU1FQlVGRkVSICAgICAgICAgICAgICAgNQorI2RlZmluZSBNVUxUSUJPT1QyX0hFQURF Ul9UQUdfTU9EVUxFX0FMSUdOICAgICAgICAgICAgICA2CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVB REVSX1RBR19FRklfQlMgICAgICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgTVVMVElCT09UMl9I RUFERVJfVEFHX0VOVFJZX0FERFJFU1NfRUZJMzIgICAgICAgOAorI2RlZmluZSBNVUxUSUJPT1Qy X0hFQURFUl9UQUdfRU5UUllfQUREUkVTU19FRkk2NCAgICAgICA5CisKKy8qIEhlYWRlciB0YWcg ZmxhZ3MuICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX1RBR19SRVFVSVJFRCAgICAgICAg ICAgICAgICAgIDAKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX09QVElPTkFMICAgICAg ICAgICAgICAgICAgMQorCisvKiBIZWFkZXIgY29uc29sZSB0YWcgY29uc29sZV9mbGFncy4gKi8K KyNkZWZpbmUgTVVMVElCT09UMl9DT05TT0xFX0ZMQUdTX0NPTlNPTEVfUkVRVUlSRUQgICAgICAg MQorI2RlZmluZSBNVUxUSUJPT1QyX0NPTlNPTEVfRkxBR1NfRUdBX1RFWFRfU1VQUE9SVEVEICAg ICAyCisKKy8qIEZsYWdzIHNldCBpbiB0aGUgJ2ZsYWdzJyBtZW1iZXIgb2YgdGhlIG11bHRpYm9v dCBoZWFkZXIuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VORCAgICAgICAgICAg ICAgICAgICAgICAgICAwCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01ETElORSAgICAg ICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CT09UX0xPQURF Ul9OQU1FICAgICAgICAgICAgMgorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRSAg ICAgICAgICAgICAgICAgICAgICAzCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQkFTSUNf TUVNSU5GTyAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CT09U REVWICAgICAgICAgICAgICAgICAgICAgNQorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX01N QVAgICAgICAgICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVf VkJFICAgICAgICAgICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQ RV9GUkFNRUJVRkZFUiAgICAgICAgICAgICAgICAgOAorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19U WVBFX0VMRl9TRUNUSU9OUyAgICAgICAgICAgICAgICA5CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFH X1RZUEVfQVBNICAgICAgICAgICAgICAgICAgICAgICAgIDEwCisjZGVmaW5lIE1VTFRJQk9PVDJf VEFHX1RZUEVfRUZJMzIgICAgICAgICAgICAgICAgICAgICAgIDExCisjZGVmaW5lIE1VTFRJQk9P VDJfVEFHX1RZUEVfRUZJNjQgICAgICAgICAgICAgICAgICAgICAgIDEyCisjZGVmaW5lIE1VTFRJ Qk9PVDJfVEFHX1RZUEVfU01CSU9TICAgICAgICAgICAgICAgICAgICAgIDEzCisjZGVmaW5lIE1V TFRJQk9PVDJfVEFHX1RZUEVfQUNQSV9PTEQgICAgICAgICAgICAgICAgICAgIDE0CisjZGVmaW5l IE1VTFRJQk9PVDJfVEFHX1RZUEVfQUNQSV9ORVcgICAgICAgICAgICAgICAgICAgIDE1CisjZGVm aW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfTkVUV09SSyAgICAgICAgICAgICAgICAgICAgIDE2Cisj ZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJX01NQVAgICAgICAgICAgICAgICAgICAgIDE3 CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJX0JTICAgICAgICAgICAgICAgICAgICAg IDE4CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJMzJfSUggICAgICAgICAgICAgICAg ICAgIDE5CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJNjRfSUggICAgICAgICAgICAg ICAgICAgIDIwCisKKy8qIE11bHRpYm9vdCAyIHRhZyBhbGlnbm1lbnQuICovCisjZGVmaW5lIE1V TFRJQk9PVDJfVEFHX0FMSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgKKworLyogTWVt b3J5IHR5cGVzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9BVkFJTEFCTEUgICAgICAg ICAgICAgICAgICAgICAxCisjZGVmaW5lIE1VTFRJQk9PVDJfTUVNT1JZX1JFU0VSVkVEICAgICAg ICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQUNQSV9SRUNMQUlN QUJMRSAgICAgICAgICAgICAgMworI2RlZmluZSBNVUxUSUJPT1QyX01FTU9SWV9OVlMgICAgICAg ICAgICAgICAgICAgICAgICAgICA0CisjZGVmaW5lIE1VTFRJQk9PVDJfTUVNT1JZX0JBRFJBTSAg ICAgICAgICAgICAgICAgICAgICAgIDUKKworLyogRnJhbWVidWZmZXIgdHlwZXMuICovCisjZGVm aW5lIE1VTFRJQk9PVDJfRlJBTUVCVUZGRVJfVFlQRV9JTkRFWEVEICAgICAgICAgICAgIDAKKyNk ZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZFUl9UWVBFX1JHQiAgICAgICAgICAgICAgICAgMQor I2RlZmluZSBNVUxUSUJPT1QyX0ZSQU1FQlVGRkVSX1RZUEVfRUdBX1RFWFQgICAgICAgICAgICAy CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHRvdGFs X3NpemU7CisgICAgdTMyIHJlc2VydmVkOworfSBtdWx0aWJvb3QyX2ZpeGVkX3Q7CisKK3R5cGVk ZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6ZTsKK30gbXVsdGlib290Ml90 YWdfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOwor ICAgIGNoYXIgc3RyaW5nW107Cit9IG11bHRpYm9vdDJfdGFnX3N0cmluZ190OworCit0eXBlZGVm IHN0cnVjdCB7CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIG1lbV9sb3dl cjsKKyAgICB1MzIgbWVtX3VwcGVyOworfSBtdWx0aWJvb3QyX3RhZ19iYXNpY19tZW1pbmZvX3Q7 CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1NjQgYWRkcjsKKyAgICB1NjQgbGVuOworICAgIHUz MiB0eXBlOworICAgIHUzMiB6ZXJvOworfSBtdWx0aWJvb3QyX21lbW9yeV9tYXBfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIHUzMiBlbnRy eV9zaXplOworICAgIHUzMiBlbnRyeV92ZXJzaW9uOworICAgIG11bHRpYm9vdDJfbWVtb3J5X21h cF90IGVudHJpZXNbXTsKK30gbXVsdGlib290Ml90YWdfbW1hcF90OworCit0eXBlZGVmIHN0cnVj dCB7CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTY0IHBvaW50ZXI7Cit9IG11 bHRpYm9vdDJfdGFnX2VmaTY0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsK KyAgICB1MzIgc2l6ZTsKKyAgICB1NjQgcG9pbnRlcjsKK30gbXVsdGlib290Ml90YWdfZWZpNjRf aWhfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOwor ICAgIHUzMiBtb2Rfc3RhcnQ7CisgICAgdTMyIG1vZF9lbmQ7CisgICAgY2hhciBjbWRsaW5lW107 Cit9IG11bHRpYm9vdDJfdGFnX21vZHVsZV90OworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwor CisjZW5kaWYgLyogX19NVUxUSUJPT1QyX0hfXyAqLwotLSAKMS43LjEwLjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK