From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id 5D457385841F for ; Thu, 10 Mar 2022 02:24:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5D457385841F Received: by mail-pf1-x430.google.com with SMTP id s42so3923996pfg.0 for ; Wed, 09 Mar 2022 18:24:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=97wONiOjPIkEZw9ej3lSUWF2612Cuhw09LZgZP2w9tc=; b=Z5f0MKD+7ysPkujCHN9BmDFOKomwiZxb/zcpos+6YhVMj39JND1Dls+YBh6Slf0FLP sn6RZkZ0wJt4MHMXjTEpeY9OSs4mLKfvDi5TNhLil653KbH6gJq25lUtrbUWtttOhrIt OdFWRR75jTZbuNiQgAo/Mv+T/pPgfjyKDz3h3GiAJHwhFiuf/Jp2dbW2PDsUQqWaOZeX KQQ3SphfTsjqWRolkJsdcMnUKykrIN2g2OTe3dfRQSr+w1CofNMp2nF4HGEhi7HQ1OXU Ws6B+m6aLfYZiJ9TfvG5JGISdMlZrM8oSiaSp5H+vsskyuuF+bPngy8PPvzxijf9y/3c GH8Q== X-Gm-Message-State: AOAM531Ek/jhHY2joFU9yVlyilYdM31Lx1TQdh/SWSHiGBXZlP3NoY7U 9rfkWiA3fzrfPD0HFhD7Em+kHFTQgC5wFSeolUrt4uP+ X-Google-Smtp-Source: ABdhPJzl9K+2uwAna8nCAuEszgjmeLuReNK5jg918okmGT8VBp5AokRCyI/svF79IgWO9ZEeH2vmLBT+yGI5EHF3r7U= X-Received: by 2002:a63:1225:0:b0:380:4d0d:f0dc with SMTP id h37-20020a631225000000b003804d0df0dcmr2199476pgl.381.1646879042242; Wed, 09 Mar 2022 18:24:02 -0800 (PST) MIME-Version: 1.0 References: <20220308172230.135655-1-hjl.tools@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Wed, 9 Mar 2022 18:23:26 -0800 Message-ID: Subject: Re: [PATCH] ld: Add a before_plugin_all_symbols_read hook To: Alan Modra Cc: Binutils Content-Type: multipart/mixed; boundary="0000000000004d501a05d9d3e84f" X-Spam-Status: No, score=-3026.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Mar 2022 02:24:06 -0000 --0000000000004d501a05d9d3e84f Content-Type: text/plain; charset="UTF-8" On Wed, Mar 9, 2022 at 5:20 PM Alan Modra wrote: > > On Tue, Mar 08, 2022 at 09:22:30AM -0800, H.J. Lu via Binutils wrote: > > Add a before_plugin_all_symbols_read hook to load symbol references from > > DT_NEEDED entries, included from --copy-dt-needed-entries, before reading > > plugin symbols to properly resolve plugin symbol references. > > OK, except > > > * elf-bfd.h (elf_link_hash_table): Add > > before_plugin_all_symbols_read. > > please change the name of this flag to better reflect what it does. > "handling_dt_needed" perhaps. You set and clear the flag around the Done. This is the v2 patch I am checking in. Thanks. > new ldelf_handle_dt_needed function. It isn't set before > plugin_call_all_symbols_read and clear afterwards. > > -- > Alan Modra > Australia Development Lab, IBM -- H.J. --0000000000004d501a05d9d3e84f Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-ld-Add-a-before_plugin_all_symbols_read-hook.patch" Content-Disposition: attachment; filename="v2-0001-ld-Add-a-before_plugin_all_symbols_read-hook.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0kd7zlj0 RnJvbSAyYmZkNTY4OWEyYTM5NjcyOTMwZTU1N2M2MDFjOWVkNzk4MzMzZWU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMiBGZWIgMjAyMiAxNDo0MDowMyAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIGxkOiBB ZGQgYSBiZWZvcmVfcGx1Z2luX2FsbF9zeW1ib2xzX3JlYWQgaG9vawoKQWRkIGEgYmVmb3JlX3Bs dWdpbl9hbGxfc3ltYm9sc19yZWFkIGhvb2sgdG8gbG9hZCBzeW1ib2wgcmVmZXJlbmNlcyBmcm9t CkRUX05FRURFRCBlbnRyaWVzLCBpbmNsdWRlZCBmcm9tIC0tY29weS1kdC1uZWVkZWQtZW50cmll cywgYmVmb3JlIHJlYWRpbmcKcGx1Z2luIHN5bWJvbHMgdG8gcHJvcGVybHkgcmVzb2x2ZSBwbHVn aW4gc3ltYm9sIHJlZmVyZW5jZXMuCgpiZmQvCgoJUFIgbGQvMjg4NDkKCSogZWxmLWJmZC5oIChl bGZfbGlua19oYXNoX3RhYmxlKTogQWRkIGhhbmRsaW5nX2R0X25lZWRlZC4KCSogZWxmbGluay5j IChfYmZkX2VsZl9tZXJnZV9zeW1ib2wpOiBEb24ndCBzZXQgbm9uX2lyX3JlZl9keW5hbWljCgli ZWZvcmUgcGx1Z2luICdhbGwgc3ltYm9scyByZWFkJyBob29rIGlzIGNhbGxlZC4KCmxkLwoKCVBS IGxkLzI4ODQ5CgkqIGxkZWxmLmMgKGxkZWxmX2hhbmRsZV9kdF9uZWVkZWQpOiBOZXcgZnVuY3Rp b24uCgkobGRlbGZfYmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkKTogTGlrZXdpc2UuCgko bGRlbGZfYWZ0ZXJfb3Blbik6IENhbGwgbGRlbGZfaGFuZGxlX2R0X25lZWRlZC4KCSogbGRlbGYu aCAobGRlbGZfYmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkKTogTmV3LgoJKiBsZGVtdWwu YyAobGRlbXVsX2JlZm9yZV9wbHVnaW5fYWxsX3N5bWJvbHNfcmVhZCk6IExpa2V3aXNlLgoJKiBs ZGVtdWwuaCAobGRlbXVsX2JlZm9yZV9wbHVnaW5fYWxsX3N5bWJvbHNfcmVhZCk6IExpa2V3aXNl LgoJKGxkX2VtdWxhdGlvbl94ZmVyX3N0cnVjdCk6IEFkZCBiZWZvcmVfcGx1Z2luX2FsbF9zeW1i b2xzX3JlYWQuCgkqIGxkbGFuZy5jIChsYW5nX3Byb2Nlc3MpOiBDYWxsCglsZGVtdWxfYmVmb3Jl X3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkIGJlZm9yZSBjYWxsaW5nCglwbHVnaW5fY2FsbF9hbGxf c3ltYm9sc19yZWFkLgoJKiBlbXVsdGVtcGwvZWxmLmVtCgkoZ2xkJHtFTVVMQVRJT05fTkFNRX1f YmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkKTogTmV3LgoJKExERU1VTF9CRUZPUkVfUExV R0lOX0FMTF9TWU1CT0xTX1JFQUQpOiBOZXcuCgkqIGVtdWx0ZW1wbC9lbXVsYXRpb24uZW0gKGxk XyR7RU1VTEFUSU9OX05BTUV9X2VtdWxhdGlvbik6CglJbml0aWFsaXplIHRoZSBiZWZvcmVfcGx1 Z2luX2FsbF9zeW1ib2xzX3JlYWQgZmllbGQuCgkqIHRlc3RzdWl0ZS9sZC1wbHVnaW4vbHRvLmV4 cDogUnVuIFBSIGxkLzI4ODQ5IHRlc3RzLgoJKiB0ZXN0c3VpdGUvbGQtcGx1Z2luL3ByMjg4NDku ZDogTmV3IGZpbGUuCgkqIHRlc3RzdWl0ZS9sZC1wbHVnaW4vcHIyODg0OWEuYzogTGlrZXdpc2Uu CgkqIHRlc3RzdWl0ZS9sZC1wbHVnaW4vcHIyODg0OWIuYzogTGlrZXdpc2UuCi0tLQogYmZkL2Vs Zi1iZmQuaCAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIGJmZC9lbGZsaW5rLmMgICAgICAg ICAgICAgICAgICAgICB8ICAgNyArLQogbGQvZW11bHRlbXBsL2VsZi5lbSAgICAgICAgICAgICAg IHwgIDE0ICsrCiBsZC9lbXVsdGVtcGwvZW11bGF0aW9uLmVtICAgICAgICAgfCAgIDEgKwogbGQv bGRlbGYuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMzg1ICsrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLQogbGQvbGRlbGYuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGxk L2xkZW11bC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBsZC9sZGVtdWwuaCAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKwogbGQvbGRsYW5nLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKIGxkL3Rlc3RzdWl0ZS9sZC1wbHVnaW4vbHRvLmV4cCAgICB8ICAyNSArKwog bGQvdGVzdHN1aXRlL2xkLXBsdWdpbi9wcjI4ODQ5LmQgIHwgICAzICsKIGxkL3Rlc3RzdWl0ZS9s ZC1wbHVnaW4vcHIyODg0OWEuYyB8ICAgMiArCiBsZC90ZXN0c3VpdGUvbGQtcGx1Z2luL3ByMjg4 NDliLmMgfCAgIDMgKwogMTMgZmlsZXMgY2hhbmdlZCwgMjgzIGluc2VydGlvbnMoKyksIDE3NiBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtcGx1Z2luL3By Mjg4NDkuZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1wbHVnaW4vcHIyODg0 OWEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1wbHVnaW4vcHIyODg0OWIu YwoKZGlmZiAtLWdpdCBhL2JmZC9lbGYtYmZkLmggYi9iZmQvZWxmLWJmZC5oCmluZGV4IDg4OWE0 NzQ2MzcxLi40OTA0ZTFlMGFhOSAxMDA2NDQKLS0tIGEvYmZkL2VsZi1iZmQuaAorKysgYi9iZmQv ZWxmLWJmZC5oCkBAIC01OTksNiArNTk5LDkgQEAgc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUK ICAgLyogVFJVRSBpZiBEVF9KTVBSRUwgaXMgYSByZXF1aXJlZCBkeW5hbWljIHRhZy4gICovCiAg IGJvb2wgZHRfam1wcmVsX3JlcXVpcmVkOwogCisgIC8qIFRSVUUgd2hlbiB3ZSBhcmUgaGFuZGxp bmcgRFRfTkVFREVEIGVudHJpZXMuICAqLworICBib29sIGhhbmRsaW5nX2R0X25lZWRlZDsKKwog ICAvKiBUaGUgQkZEIHVzZWQgdG8gaG9sZCBzcGVjaWFsIHNlY3Rpb25zIGNyZWF0ZWQgYnkgdGhl IGxpbmtlci4KICAgICAgVGhpcyB3aWxsIGJlIHRoZSBmaXJzdCBCRkQgZm91bmQgd2hpY2ggcmVx dWlyZXMgdGhlc2Ugc2VjdGlvbnMgdG8KICAgICAgYmUgY3JlYXRlZC4gICovCmRpZmYgLS1naXQg YS9iZmQvZWxmbGluay5jIGIvYmZkL2VsZmxpbmsuYwppbmRleCBmODUyMTQyNmNhZC4uNWEwNzBh MjZlMzUgMTAwNjQ0Ci0tLSBhL2JmZC9lbGZsaW5rLmMKKysrIGIvYmZkL2VsZmxpbmsuYwpAQCAt MTA5MCw2ICsxMDkwLDcgQEAgX2JmZF9lbGZfbWVyZ2Vfc3ltYm9sIChiZmQgKmFiZmQsCiAgIGNv bnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7CiAgIGNoYXIgKm5ld192ZXJzaW9uOwog ICBib29sIGRlZmF1bHRfc3ltID0gKm1hdGNoZWQ7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX3Rh YmxlICpodGFiOwogCiAgICpza2lwID0gZmFsc2U7CiAgICpvdmVycmlkZSA9IE5VTEw7CkBAIC0x MjIwLDYgKzEyMjEsOCBAQCBfYmZkX2VsZl9tZXJnZV9zeW1ib2wgKGJmZCAqYWJmZCwKICAgICAg c3ltYm9scy4gICovCiAgIGJmZF9lbGZfbGlua19tYXJrX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBo LCBzeW0pOwogCisgIGh0YWIgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyk7CisKICAgLyogTkVXRFlO IGFuZCBPTEREWU4gaW5kaWNhdGUgd2hldGhlciB0aGUgbmV3IG9yIG9sZCBzeW1ib2wsCiAgICAg IHJlc3BlY3RpdmVseSwgaXMgZnJvbSBhIGR5bmFtaWMgb2JqZWN0LiAgKi8KIApAQCAtMTI4Myw3 ICsxMjg2LDkgQEAgX2JmZF9lbGZfbWVyZ2Vfc3ltYm9sIChiZmQgKmFiZmQsCiAgICAgICBvbGRk eW4gPSAob2xkc2VjLT5zeW1ib2wtPmZsYWdzICYgQlNGX0RZTkFNSUMpICE9IDA7CiAgICAgfQog Ci0gIGlmIChvbGRiZmQgIT0gTlVMTAorICAvKiBTZXQgbm9uX2lyX3JlZl9keW5hbWljIG9ubHkg d2hlbiBub3QgaGFuZGxpbmcgRFRfTkVFREVEIGVudHJpZXMuICAqLworICBpZiAoIWh0YWItPmhh bmRsaW5nX2R0X25lZWRlZAorICAgICAgJiYgb2xkYmZkICE9IE5VTEwKICAgICAgICYmIChvbGRi ZmQtPmZsYWdzICYgQkZEX1BMVUdJTikgIT0gKGFiZmQtPmZsYWdzICYgQkZEX1BMVUdJTikpCiAg ICAgewogICAgICAgaWYgKG5ld2R5biAhPSBvbGRkeW4pCmRpZmYgLS1naXQgYS9sZC9lbXVsdGVt cGwvZWxmLmVtIGIvbGQvZW11bHRlbXBsL2VsZi5lbQppbmRleCA1NWRkMjBmMGIwMi4uN2FlNmY2 ZDUwZTEgMTAwNjQ0Ci0tLSBhL2xkL2VtdWx0ZW1wbC9lbGYuZW0KKysrIGIvbGQvZW11bHRlbXBs L2VsZi5lbQpAQCAtNTMsNiArNTMsOCBAQCBmcmFnbWVudCA8PEVPRgogCiAvKiBEZWNsYXJlIGZ1 bmN0aW9ucyB1c2VkIGJ5IHZhcmlvdXMgRVhUUkFfRU1fRklMRXMuICAqLwogc3RhdGljIHZvaWQg Z2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX3BhcnNlICh2b2lkKTsKK3N0YXRpYyB2b2lkIGds ZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9wbHVnaW5fYWxsX3N5bWJvbHNfcmVhZAorICAodm9p ZCk7CiBzdGF0aWMgdm9pZCBnbGQke0VNVUxBVElPTl9OQU1FfV9hZnRlcl9vcGVuICh2b2lkKTsK IHN0YXRpYyB2b2lkIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lk KTsKIHN0YXRpYyB2b2lkIGdsZCR7RU1VTEFUSU9OX05BTUV9X2FmdGVyX2FsbG9jYXRpb24gKHZv aWQpOwpAQCAtMTI1LDYgKzEyNywxNyBAQCBpZiB0ZXN0IHgiJExERU1VTF9BRlRFUl9PUEVOIiAh PSB4Z2xkIiRFTVVMQVRJT05fTkFNRSJfYWZ0ZXJfb3BlbjsgdGhlbgogCiBmcmFnbWVudCA8PEVP RgogCisvKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBwbHVnaW4gJ2FsbCBzeW1ib2xz IHJlYWQnIGhvb2suICAqLworCitzdGF0aWMgdm9pZAorZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVm b3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkICh2b2lkKQoreworICBsZGVsZl9iZWZvcmVfcGx1 Z2luX2FsbF9zeW1ib2xzX3JlYWQgKCRJU19MSUJQQVRILCAkSVNfTkFUSVZFLAorCQkJCSAgICAg ICAgJElTX0xJTlVYX1RBUkdFVCwKKwkJCQkJJElTX0ZSRUVCU0RfVEFSR0VULAorCQkJCQkkRUxG U0laRSwgIiRwcmVmaXgiKTsKK30KKwogLyogVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZSBp bnB1dCBmaWxlcyBoYXZlIGJlZW4gb3BlbmVkLiAgKi8KIAogc3RhdGljIHZvaWQKQEAgLTkxMCw2 ICs5MjMsNyBAQCBmaQogZmkKIAogTERFTVVMX0FGVEVSX1BBUlNFPSR7TERFTVVMX0FGVEVSX1BB UlNFLWxkZWxmX2FmdGVyX3BhcnNlfQorTERFTVVMX0JFRk9SRV9QTFVHSU5fQUxMX1NZTUJPTFNf UkVBRD0ke0xERU1VTF9CRUZPUkVfUExVR0lOX0FMTF9TWU1CT0xTX1JFQUQtZ2xkJHtFTVVMQVRJ T05fTkFNRX1fYmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkfQogTERFTVVMX0FGVEVSX09Q RU49JHtMREVNVUxfQUZURVJfT1BFTi1nbGQke0VNVUxBVElPTl9OQU1FfV9hZnRlcl9vcGVufQog TERFTVVMX0JFRk9SRV9QTEFDRV9PUlBIQU5TPSR7TERFTVVMX0JFRk9SRV9QTEFDRV9PUlBIQU5T LWxkZWxmX2JlZm9yZV9wbGFjZV9vcnBoYW5zfQogTERFTVVMX0FGVEVSX0FMTE9DQVRJT049JHtM REVNVUxfQUZURVJfQUxMT0NBVElPTi1nbGQke0VNVUxBVElPTl9OQU1FfV9hZnRlcl9hbGxvY2F0 aW9ufQpkaWZmIC0tZ2l0IGEvbGQvZW11bHRlbXBsL2VtdWxhdGlvbi5lbSBiL2xkL2VtdWx0ZW1w bC9lbXVsYXRpb24uZW0KaW5kZXggY2ZhNjU2N2FjMmIuLjdmZTgyMWE1MTlkIDEwMDY0NAotLS0g YS9sZC9lbXVsdGVtcGwvZW11bGF0aW9uLmVtCisrKyBiL2xkL2VtdWx0ZW1wbC9lbXVsYXRpb24u ZW0KQEAgLTgsNiArOCw3IEBAIHN0cnVjdCBsZF9lbXVsYXRpb25feGZlcl9zdHJ1Y3QgbGRfJHtF TVVMQVRJT05fTkFNRX1fZW11bGF0aW9uID0KICAgJHtMREVNVUxfU1lTTElCLXN5c2xpYl9kZWZh dWx0fSwKICAgJHtMREVNVUxfSExMLWhsbF9kZWZhdWx0fSwKICAgJHtMREVNVUxfQUZURVJfUEFS U0UtYWZ0ZXJfcGFyc2VfZGVmYXVsdH0sCisgICR7TERFTVVMX0JFRk9SRV9QTFVHSU5fQUxMX1NZ TUJPTFNfUkVBRC1OVUxMfSwKICAgJHtMREVNVUxfQUZURVJfT1BFTi1hZnRlcl9vcGVuX2RlZmF1 bHR9LAogICAke0xERU1VTF9BRlRFUl9DSEVDS19SRUxPQ1MtYWZ0ZXJfY2hlY2tfcmVsb2NzX2Rl ZmF1bHR9LAogICAke0xERU1VTF9CRUZPUkVfUExBQ0VfT1JQSEFOUy1iZWZvcmVfcGxhY2Vfb3Jw aGFuc19kZWZhdWx0fSwKZGlmZiAtLWdpdCBhL2xkL2xkZWxmLmMgYi9sZC9sZGVsZi5jCmluZGV4 IDMzYzZhOWYxZjQ2Li40MDk0NjQwYjNmNyAxMDA2NDQKLS0tIGEvbGQvbGRlbGYuYworKysgYi9s ZC9sZGVsZi5jCkBAIC0xMDA1LDE3MyArMTAwNSwxNSBAQCBsZGVsZl9jaGVja19uZWVkZWQgKGxh bmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKnMpCiAgICAgfQogfQogCi0vKiBUaGlzIGlzIGNhbGxl ZCBhZnRlciBhbGwgdGhlIGlucHV0IGZpbGVzIGhhdmUgYmVlbiBvcGVuZWQuICAqLwotCi12b2lk Ci1sZGVsZl9hZnRlcl9vcGVuIChpbnQgdXNlX2xpYnBhdGgsIGludCBuYXRpdmUsIGludCBpc19s aW51eCwgaW50IGlzX2ZyZWVic2QsCi0JCSAgaW50IGVsZnNpemUsIGNvbnN0IGNoYXIgKnByZWZp eCkKK3N0YXRpYyB2b2lkCitsZGVsZl9oYW5kbGVfZHRfbmVlZGVkIChzdHJ1Y3QgZWxmX2xpbmtf aGFzaF90YWJsZSAqaHRhYiwKKwkJCWludCB1c2VfbGlicGF0aCwgaW50IG5hdGl2ZSwgaW50IGlz X2xpbnV4LAorCQkJaW50IGlzX2ZyZWVic2QsIGludCBlbGZzaXplLCBjb25zdCBjaGFyICpwcmVm aXgpCiB7CiAgIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqbmVlZGVkLCAqbDsKLSAgc3Ry dWN0IGVsZl9saW5rX2hhc2hfdGFibGUgKmh0YWI7Ci0gIGFzZWN0aW9uICpzOwogICBiZmQgKmFi ZmQ7CiAgIGJmZCAqKnNhdmVfaW5wdXRfYmZkX3RhaWw7CiAKLSAgYWZ0ZXJfb3Blbl9kZWZhdWx0 ICgpOwotCi0gIGh0YWIgPSBlbGZfaGFzaF90YWJsZSAoJmxpbmtfaW5mbyk7Ci0gIGlmICghaXNf ZWxmX2hhc2hfdGFibGUgKCZodGFiLT5yb290KSkKLSAgICByZXR1cm47Ci0KLSAgaWYgKGNvbW1h bmRfbGluZS5vdXRfaW1wbGliX2ZpbGVuYW1lKQotICAgIHsKLSAgICAgIHVubGlua19pZl9vcmRp bmFyeSAoY29tbWFuZF9saW5lLm91dF9pbXBsaWJfZmlsZW5hbWUpOwotICAgICAgbGlua19pbmZv Lm91dF9pbXBsaWJfYmZkCi0JPSBiZmRfb3BlbncgKGNvbW1hbmRfbGluZS5vdXRfaW1wbGliX2Zp bGVuYW1lLAotCQkgICAgIGJmZF9nZXRfdGFyZ2V0IChsaW5rX2luZm8ub3V0cHV0X2JmZCkpOwot Ci0gICAgICBpZiAobGlua19pbmZvLm91dF9pbXBsaWJfYmZkID09IE5VTEwpCi0JewotCSAgZWlu Zm8gKF8oIiVGJVA6ICVzOiBjYW4ndCBvcGVuIGZvciB3cml0aW5nOiAlRVxuIiksCi0JCSBjb21t YW5kX2xpbmUub3V0X2ltcGxpYl9maWxlbmFtZSk7Ci0JfQotICAgIH0KLQotICBpZiAobGRlbGZf ZW1pdF9ub3RlX2dudV9idWlsZF9pZCAhPSBOVUxMKQotICAgIHsKLSAgICAgIC8qIEZpbmQgYW4g RUxGIGlucHV0LiAgKi8KLSAgICAgIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOwot CSAgIGFiZmQgIT0gKGJmZCAqKSBOVUxMOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQotCWlmIChi ZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIKLQkgICAgJiYg YmZkX2NvdW50X3NlY3Rpb25zIChhYmZkKSAhPSAwCi0JICAgICYmICFiZmRfaW5wdXRfanVzdF9z eW1zIChhYmZkKSkKLQkgIGJyZWFrOwotCi0gICAgICAvKiBQUiAxMDU1NTogSWYgdGhlcmUgYXJl IG5vIEVMRiBpbnB1dCBmaWxlcyBkbyBub3QgdHJ5IHRvCi0JIGNyZWF0ZSBhIC5ub3RlLmdudS1i dWlsZC1pZCBzZWN0aW9uLiAgKi8KLSAgICAgIGlmIChhYmZkID09IE5VTEwKLQkgIHx8ICFsZGVs Zl9zZXR1cF9idWlsZF9pZCAoYWJmZCkpCi0JewotCSAgZnJlZSAoKGNoYXIgKikgbGRlbGZfZW1p dF9ub3RlX2dudV9idWlsZF9pZCk7Ci0JICBsZGVsZl9lbWl0X25vdGVfZ251X2J1aWxkX2lkID0g TlVMTDsKLQl9Ci0gICAgfQotCi0gIGdldF9lbGZfYmFja2VuZF9kYXRhIChsaW5rX2luZm8ub3V0 cHV0X2JmZCktPnNldHVwX2dudV9wcm9wZXJ0aWVzICgmbGlua19pbmZvKTsKLQotICAvKiBEbyBu b3QgYWxsb3cgZXhlY3V0YWJsZSBmaWxlcyB0byBiZSB1c2VkIGFzIGlucHV0cyB0byB0aGUgbGlu ay4gICovCi0gIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0g YWJmZC0+bGluay5uZXh0KQotICAgIHsKLSAgICAgIC8qIERpc2NhcmQgaW5wdXQgLm5vdGUuZ251 LmJ1aWxkLWlkIHNlY3Rpb25zLiAgKi8KLSAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFt ZSAoYWJmZCwgIi5ub3RlLmdudS5idWlsZC1pZCIpOwotICAgICAgd2hpbGUgKHMgIT0gTlVMTCkK LQl7Ci0JICBpZiAocyAhPSBlbGZfdGRhdGEgKGxpbmtfaW5mby5vdXRwdXRfYmZkKS0+by0+YnVp bGRfaWQuc2VjKQotCSAgICBzLT5mbGFncyB8PSBTRUNfRVhDTFVERTsKLQkgIHMgPSBiZmRfZ2V0 X25leHRfc2VjdGlvbl9ieV9uYW1lIChOVUxMLCBzKTsKLQl9Ci0KLSAgICAgIGlmIChhYmZkLT54 dmVjLT5mbGF2b3VyID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIKLQkgICYmICFiZmRfaW5wdXRf anVzdF9zeW1zIChhYmZkKQotCSAgJiYgZWxmX3RkYXRhIChhYmZkKSAhPSBOVUxMCi0JICAvKiBG SVhNRTogTWF5YmUgY2hlY2sgZm9yIG90aGVyIG5vbi1zdXBwb3J0YWJsZSB0eXBlcyBhcyB3ZWxs ID8gICovCi0JICAmJiAoZWxmX3RkYXRhIChhYmZkKS0+ZWxmX2hlYWRlci0+ZV90eXBlID09IEVU X0VYRUMKLQkgICAgICB8fCAoZWxmX3RkYXRhIChhYmZkKS0+ZWxmX2hlYWRlci0+ZV90eXBlID09 IEVUX0RZTgotCQkgICYmIGVsZl90ZGF0YSAoYWJmZCktPmlzX3BpZSkpKQotCWVpbmZvIChfKCIl RiVQOiBjYW5ub3QgdXNlIGV4ZWN1dGFibGUgZmlsZSAnJXBCJyBhcyBpbnB1dCB0byBhIGxpbmtc biIpLAotCSAgICAgICBhYmZkKTsKLSAgICB9Ci0KLSAgaWYgKGJmZF9saW5rX3JlbG9jYXRhYmxl ICgmbGlua19pbmZvKSkKLSAgICB7Ci0gICAgICBpZiAobGlua19pbmZvLmV4ZWNzdGFjayA9PSAh bGlua19pbmZvLm5vZXhlY3N0YWNrKQotCXsKLQkgIC8qIFBSIGxkLzE2NzQ0OiBJZiAiLXogW25v XWV4ZWNzdGFjayIgaGFzIGJlZW4gc3BlY2lmaWVkIG9uIHRoZQotCSAgICAgY29tbWFuZCBsaW5l IGFuZCB3ZSBhcmUgcGVyZm9taW5nIGEgcmVsb2NhdGFibGUgbGluayB0aGVuIG5vCi0JICAgICBQ VF9HTlVfU1RBQ0sgc2VnbWVudCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHNvIHRoZQotCSAgICAgbGlu a2luZm8uW25vXWV4ZWNzdGFjayB2YWx1ZXMgc2V0IGluIF9oYW5kbGVfb3B0aW9uKCkgd2lsbCBo YXZlIG5vCi0JICAgICBlZmZlY3QuICBJbnN0ZWFkIHdlIGNyZWF0ZSBhIC5ub3RlLkdOVS1zdGFj ayBzZWN0aW9uIGluIG11Y2ggdGhlCi0JICAgICBzYW1lIHdheSBhcyB0aGUgYXNzZW1ibGVyIGRv ZXMgd2l0aCBpdHMgLS1bbm9dZXhlY3N0YWNrIG9wdGlvbi4gICovCi0JICBmbGFnd29yZCBmbGFn cyA9IFNFQ19SRUFET05MWSB8IChsaW5rX2luZm8uZXhlY3N0YWNrID8gU0VDX0NPREUgOiAwKTsK LQkgICh2b2lkKSBiZmRfbWFrZV9zZWN0aW9uX3dpdGhfZmxhZ3MgKGxpbmtfaW5mby5pbnB1dF9i ZmRzLAotCQkJCQkgICAgICAiLm5vdGUuR05VLXN0YWNrIiwgZmxhZ3MpOwotCX0KLSAgICAgIHJl dHVybjsKLSAgICB9Ci0KLSAgaWYgKCFsaW5rX2luZm8udHJhZGl0aW9uYWxfZm9ybWF0KQotICAg IHsKLSAgICAgIGJmZCAqZWxmYmZkID0gTlVMTDsKLSAgICAgIGJvb2wgd2Fybl9laF9mcmFtZSA9 IGZhbHNlOwotICAgICAgaW50IHNlZW5fdHlwZSA9IDA7Ci0KLSAgICAgIGZvciAoYWJmZCA9IGxp bmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQotCXsKLQkg IGludCB0eXBlID0gMDsKLQotCSAgaWYgKGJmZF9pbnB1dF9qdXN0X3N5bXMgKGFiZmQpKQotCSAg ICBjb250aW51ZTsKLQotCSAgZm9yIChzID0gYWJmZC0+c2VjdGlvbnM7IHMgJiYgdHlwZSA8IENP TVBBQ1RfRUhfSERSOyBzID0gcy0+bmV4dCkKLQkgICAgewotCSAgICAgIGNvbnN0IGNoYXIgKm5h bWUgPSBiZmRfc2VjdGlvbl9uYW1lIChzKTsKLQotCSAgICAgIGlmIChiZmRfaXNfYWJzX3NlY3Rp b24gKHMtPm91dHB1dF9zZWN0aW9uKSkKLQkJY29udGludWU7Ci0JICAgICAgaWYgKHN0YXJ0c3dp dGggKG5hbWUsICIuZWhfZnJhbWVfZW50cnkiKSkKLQkJdHlwZSA9IENPTVBBQ1RfRUhfSERSOwot CSAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5laF9mcmFtZSIpID09IDAgJiYgcy0+c2l6 ZSA+IDgpCi0JCXR5cGUgPSBEV0FSRjJfRUhfSERSOwotCSAgICB9Ci0KLQkgIGlmICh0eXBlICE9 IDApCi0JICAgIHsKLQkgICAgICBpZiAoc2Vlbl90eXBlID09IDApCi0JCXsKLQkJICBzZWVuX3R5 cGUgPSB0eXBlOwotCQl9Ci0JICAgICAgZWxzZSBpZiAoc2Vlbl90eXBlICE9IHR5cGUpCi0JCXsK LQkJICBlaW5mbyAoXygiJUYlUDogY29tcGFjdCBmcmFtZSBkZXNjcmlwdGlvbnMgaW5jb21wYXRp YmxlIHdpdGgiCi0JCQkgICAiIERXQVJGMiAuZWhfZnJhbWUgZnJvbSAlcEJcbiIpLAotCQkJIHR5 cGUgPT0gRFdBUkYyX0VIX0hEUiA/IGFiZmQgOiBlbGZiZmQpOwotCQkgIGJyZWFrOwotCQl9Ci0K LQkgICAgICBpZiAoIWVsZmJmZAotCQkgICYmICh0eXBlID09IENPTVBBQ1RfRUhfSERSCi0JCSAg ICAgIHx8IGxpbmtfaW5mby5laF9mcmFtZV9oZHJfdHlwZSAhPSAwKSkKLQkJewotCQkgIGlmIChi ZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0JCSAgICBl bGZiZmQgPSBhYmZkOwotCi0JCSAgd2Fybl9laF9mcmFtZSA9IHRydWU7Ci0JCX0KLQkgICAgfQot Ci0JICBpZiAoc2Vlbl90eXBlID09IENPTVBBQ1RfRUhfSERSKQotCSAgICBsaW5rX2luZm8uZWhf ZnJhbWVfaGRyX3R5cGUgPSBDT01QQUNUX0VIX0hEUjsKLQl9Ci0gICAgICBpZiAoZWxmYmZkKQot CXsKLQkgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7Ci0KLQkgIGJlZCA9IGdl dF9lbGZfYmFja2VuZF9kYXRhIChlbGZiZmQpOwotCSAgcyA9IGJmZF9tYWtlX3NlY3Rpb25fd2l0 aF9mbGFncyAoZWxmYmZkLCAiLmVoX2ZyYW1lX2hkciIsCi0JCQkJCSAgIGJlZC0+ZHluYW1pY19z ZWNfZmxhZ3MKLQkJCQkJICAgfCBTRUNfUkVBRE9OTFkpOwotCSAgaWYgKHMgIT0gTlVMTAotCSAg ICAgICYmIGJmZF9zZXRfc2VjdGlvbl9hbGlnbm1lbnQgKHMsIDIpKQotCSAgICB7Ci0JICAgICAg aHRhYi0+ZWhfaW5mby5oZHJfc2VjID0gczsKLQkgICAgICB3YXJuX2VoX2ZyYW1lID0gZmFsc2U7 Ci0JICAgIH0KLQl9Ci0gICAgICBpZiAod2Fybl9laF9mcmFtZSkKLQllaW5mbyAoXygiJVA6IHdh cm5pbmc6IGNhbm5vdCBjcmVhdGUgLmVoX2ZyYW1lX2hkciBzZWN0aW9uLCIKLQkJICIgLS1laC1m cmFtZS1oZHIgaWdub3JlZFxuIikpOwotICAgIH0KLQogICAvKiBHZXQgdGhlIGxpc3Qgb2YgZmls ZXMgd2hpY2ggYXBwZWFyIGluIERUX05FRURFRCBlbnRyaWVzIGluCiAgICAgIGR5bmFtaWMgb2Jq ZWN0cyBpbmNsdWRlZCBpbiB0aGUgbGluayAob2Z0ZW4gdGhlcmUgd2lsbCBiZSBub25lKS4KICAg ICAgRm9yIGVhY2ggc3VjaCBmaWxlLCB3ZSB3YW50IHRvIHRyYWNrIGRvd24gdGhlIGNvcnJlc3Bv bmRpbmcKQEAgLTExOTUsMTAgKzEwMzcsMTIgQEAgbGRlbGZfYWZ0ZXJfb3BlbiAoaW50IHVzZV9s aWJwYXRoLCBpbnQgbmF0aXZlLCBpbnQgaXNfbGludXgsIGludCBpc19mcmVlYnNkLAogCSAgJiYg KGJmZF9lbGZfZ2V0X2R5bl9saWJfY2xhc3MgKGwtPmJ5KSAmIERZTl9BU19ORUVERUQpICE9IDAp CiAJY29udGludWU7CiAKLSAgICAgIC8qIFNraXAgdGhlIGxpYiBpZiAtLW5vLWNvcHktZHQtbmVl ZGVkLWVudHJpZXMgYW5kCi0JIC0tYWxsb3ctc2hsaWItdW5kZWZpbmVkIGlzIGluIGVmZmVjdC4g ICovCisgICAgICAvKiBTa2lwIHRoZSBsaWIgaWYgLS1uby1jb3B5LWR0LW5lZWRlZC1lbnRyaWVz IGFuZCB3aGVuIHdlIGFyZQorCSBoYW5kbGluZyBEVF9ORUVERUQgZW50cmllcyBvciAtLWFsbG93 LXNobGliLXVuZGVmaW5lZCBpcyBpbgorCSBlZmZlY3QuICAqLwogICAgICAgaWYgKGwtPmJ5ICE9 IE5VTEwKLQkgICYmIGxpbmtfaW5mby51bnJlc29sdmVkX3N5bXNfaW5fc2hhcmVkX2xpYnMgPT0g Uk1fSUdOT1JFCisJICAmJiAoaHRhYi0+aGFuZGxpbmdfZHRfbmVlZGVkCisJICAgICAgfHwgbGlu a19pbmZvLnVucmVzb2x2ZWRfc3ltc19pbl9zaGFyZWRfbGlicyA9PSBSTV9JR05PUkUpCiAJICAm JiAoYmZkX2VsZl9nZXRfZHluX2xpYl9jbGFzcyAobC0+YnkpICYgRFlOX05PX0FERF9ORUVERUQp ICE9IDApCiAJY29udGludWU7CiAKQEAgLTEzMzgsMjMgKzExODIsMjE0IEBAIGxkZWxmX2FmdGVy X29wZW4gKGludCB1c2VfbGlicGF0aCwgaW50IG5hdGl2ZSwgaW50IGlzX2xpbnV4LCBpbnQgaXNf ZnJlZWJzZCwKIAkgICAgIGwtPm5hbWUsIGwtPmJ5KTsKICAgICB9CiAKLSAgZm9yIChhYmZkID0g bGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCi0gICAg aWYgKGJmZF9nZXRfZm9ybWF0IChhYmZkKSA9PSBiZmRfb2JqZWN0Ci0JJiYgKChhYmZkLT5mbGFn cykgJiBEWU5BTUlDKSAhPSAwCi0JJiYgYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFy Z2V0X2VsZl9mbGF2b3VyCi0JJiYgKGVsZl9keW5fbGliX2NsYXNzIChhYmZkKSAmIChEWU5fQVNf TkVFREVEIHwgRFlOX05PX05FRURFRCkpID09IDAKLQkmJiBlbGZfZHRfbmFtZSAoYWJmZCkgIT0g TlVMTCkKLSAgICAgIHsKLQlpZiAoYmZkX2VsZl9hZGRfZHRfbmVlZGVkX3RhZyAoYWJmZCwgJmxp bmtfaW5mbykgPCAwKQotCSAgZWluZm8gKF8oIiVGJVA6IGZhaWxlZCB0byBhZGQgRFRfTkVFREVE IGR5bmFtaWMgdGFnXG4iKSk7Ci0gICAgICB9CisgIC8qIERvbid0IGFkZCBEVF9ORUVERUQgd2hl biBsb2FkaW5nIHNoYXJlZCBvYmplY3RzIGZyb20gRFRfTkVFREVEIGZvcgorICAgICBwbHVnaW4g c3ltYm9sIHJlc29sdXRpb24gd2hpbGUgaGFuZGxpbmcgRFRfTkVFREVEIGVudHJpZXMuICAqLwor ICBpZiAoIWh0YWItPmhhbmRsaW5nX2R0X25lZWRlZCkKKyAgICBmb3IgKGFiZmQgPSBsaW5rX2lu Zm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKKyAgICAgIGlmIChi ZmRfZ2V0X2Zvcm1hdCAoYWJmZCkgPT0gYmZkX29iamVjdAorCSAgJiYgKChhYmZkLT5mbGFncykg JiBEWU5BTUlDKSAhPSAwCisJICAmJiBiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJn ZXRfZWxmX2ZsYXZvdXIKKwkgICYmIChlbGZfZHluX2xpYl9jbGFzcyAoYWJmZCkgJiAoRFlOX0FT X05FRURFRCB8IERZTl9OT19ORUVERUQpKSA9PSAwCisJICAmJiBlbGZfZHRfbmFtZSAoYWJmZCkg IT0gTlVMTCkKKwl7CisJICBpZiAoYmZkX2VsZl9hZGRfZHRfbmVlZGVkX3RhZyAoYWJmZCwgJmxp bmtfaW5mbykgPCAwKQorCSAgICBlaW5mbyAoXygiJUYlUDogZmFpbGVkIHRvIGFkZCBEVF9ORUVE RUQgZHluYW1pYyB0YWdcbiIpKTsKKwl9CiAKICAgbGlua19pbmZvLmlucHV0X2JmZHNfdGFpbCA9 IHNhdmVfaW5wdXRfYmZkX3RhaWw7CiAgICpzYXZlX2lucHV0X2JmZF90YWlsID0gTlVMTDsKK30K KworLyogVGhpcyBpcyBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgcGx1Z2luICdhbGwgc3ltYm9scyBy ZWFkJyBob29rLiAgKi8KKwordm9pZAorbGRlbGZfYmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19y ZWFkIChpbnQgdXNlX2xpYnBhdGgsIGludCBuYXRpdmUsCisJCQkJICAgICAgaW50IGlzX2xpbnV4 LCBpbnQgaXNfZnJlZWJzZCwKKwkJCQkgICAgICBpbnQgZWxmc2l6ZSwgY29uc3QgY2hhciAqcHJl Zml4KQoreworICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSAqaHRhYiA9IGVsZl9oYXNoX3Rh YmxlICgmbGlua19pbmZvKTsKKworICBpZiAoIWlzX2VsZl9oYXNoX3RhYmxlICgmaHRhYi0+cm9v dCkpCisgICAgcmV0dXJuOworCisgIGh0YWItPmhhbmRsaW5nX2R0X25lZWRlZCA9IHRydWU7Cisg IGxkZWxmX2hhbmRsZV9kdF9uZWVkZWQgKGh0YWIsIHVzZV9saWJwYXRoLCBuYXRpdmUsIGlzX2xp bnV4LAorCQkJICBpc19mcmVlYnNkLCBlbGZzaXplLCBwcmVmaXgpOworICBodGFiLT5oYW5kbGlu Z19kdF9uZWVkZWQgPSBmYWxzZTsKK30KKworLyogVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRo ZSBpbnB1dCBmaWxlcyBoYXZlIGJlZW4gb3BlbmVkIGFuZCBhbGwKKyAgIHN5bWJvbHMgaGF2ZSBi ZWVuIGxvYWRlZC4gICovCisKK3ZvaWQKK2xkZWxmX2FmdGVyX29wZW4gKGludCB1c2VfbGlicGF0 aCwgaW50IG5hdGl2ZSwgaW50IGlzX2xpbnV4LCBpbnQgaXNfZnJlZWJzZCwKKwkJICBpbnQgZWxm c2l6ZSwgY29uc3QgY2hhciAqcHJlZml4KQoreworICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJs ZSAqaHRhYjsKKyAgYXNlY3Rpb24gKnM7CisgIGJmZCAqYWJmZDsKKworICBhZnRlcl9vcGVuX2Rl ZmF1bHQgKCk7CisKKyAgaHRhYiA9IGVsZl9oYXNoX3RhYmxlICgmbGlua19pbmZvKTsKKyAgaWYg KCFpc19lbGZfaGFzaF90YWJsZSAoJmh0YWItPnJvb3QpKQorICAgIHJldHVybjsKKworICBpZiAo Y29tbWFuZF9saW5lLm91dF9pbXBsaWJfZmlsZW5hbWUpCisgICAgeworICAgICAgdW5saW5rX2lm X29yZGluYXJ5IChjb21tYW5kX2xpbmUub3V0X2ltcGxpYl9maWxlbmFtZSk7CisgICAgICBsaW5r X2luZm8ub3V0X2ltcGxpYl9iZmQKKwk9IGJmZF9vcGVudyAoY29tbWFuZF9saW5lLm91dF9pbXBs aWJfZmlsZW5hbWUsCisJCSAgICAgYmZkX2dldF90YXJnZXQgKGxpbmtfaW5mby5vdXRwdXRfYmZk KSk7CisKKyAgICAgIGlmIChsaW5rX2luZm8ub3V0X2ltcGxpYl9iZmQgPT0gTlVMTCkKKwl7CisJ ICBlaW5mbyAoXygiJUYlUDogJXM6IGNhbid0IG9wZW4gZm9yIHdyaXRpbmc6ICVFXG4iKSwKKwkJ IGNvbW1hbmRfbGluZS5vdXRfaW1wbGliX2ZpbGVuYW1lKTsKKwl9CisgICAgfQorCisgIGlmIChs ZGVsZl9lbWl0X25vdGVfZ251X2J1aWxkX2lkICE9IE5VTEwpCisgICAgeworICAgICAgLyogRmlu ZCBhbiBFTEYgaW5wdXQuICAqLworICAgICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2Jm ZHM7CisJICAgYWJmZCAhPSAoYmZkICopIE5VTEw7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCisJ aWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cgorCSAg ICAmJiBiZmRfY291bnRfc2VjdGlvbnMgKGFiZmQpICE9IDAKKwkgICAgJiYgIWJmZF9pbnB1dF9q dXN0X3N5bXMgKGFiZmQpKQorCSAgYnJlYWs7CisKKyAgICAgIC8qIFBSIDEwNTU1OiBJZiB0aGVy ZSBhcmUgbm8gRUxGIGlucHV0IGZpbGVzIGRvIG5vdCB0cnkgdG8KKwkgY3JlYXRlIGEgLm5vdGUu Z251LWJ1aWxkLWlkIHNlY3Rpb24uICAqLworICAgICAgaWYgKGFiZmQgPT0gTlVMTAorCSAgfHwg IWxkZWxmX3NldHVwX2J1aWxkX2lkIChhYmZkKSkKKwl7CisJICBmcmVlICgoY2hhciAqKSBsZGVs Zl9lbWl0X25vdGVfZ251X2J1aWxkX2lkKTsKKwkgIGxkZWxmX2VtaXRfbm90ZV9nbnVfYnVpbGRf aWQgPSBOVUxMOworCX0KKyAgICB9CisKKyAgZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGxpbmtfaW5m by5vdXRwdXRfYmZkKS0+c2V0dXBfZ251X3Byb3BlcnRpZXMgKCZsaW5rX2luZm8pOworCisgIC8q IERvIG5vdCBhbGxvdyBleGVjdXRhYmxlIGZpbGVzIHRvIGJlIHVzZWQgYXMgaW5wdXRzIHRvIHRo ZSBsaW5rLiAgKi8KKyAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFi ZmQgPSBhYmZkLT5saW5rLm5leHQpCisgICAgeworICAgICAgLyogRGlzY2FyZCBpbnB1dCAubm90 ZS5nbnUuYnVpbGQtaWQgc2VjdGlvbnMuICAqLworICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9i eV9uYW1lIChhYmZkLCAiLm5vdGUuZ251LmJ1aWxkLWlkIik7CisgICAgICB3aGlsZSAocyAhPSBO VUxMKQorCXsKKwkgIGlmIChzICE9IGVsZl90ZGF0YSAobGlua19pbmZvLm91dHB1dF9iZmQpLT5v LT5idWlsZF9pZC5zZWMpCisJICAgIHMtPmZsYWdzIHw9IFNFQ19FWENMVURFOworCSAgcyA9IGJm ZF9nZXRfbmV4dF9zZWN0aW9uX2J5X25hbWUgKE5VTEwsIHMpOworCX0KKworICAgICAgaWYgKGFi ZmQtPnh2ZWMtPmZsYXZvdXIgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cgorCSAgJiYgIWJmZF9p bnB1dF9qdXN0X3N5bXMgKGFiZmQpCisJICAmJiBlbGZfdGRhdGEgKGFiZmQpICE9IE5VTEwKKwkg IC8qIEZJWE1FOiBNYXliZSBjaGVjayBmb3Igb3RoZXIgbm9uLXN1cHBvcnRhYmxlIHR5cGVzIGFz IHdlbGwgPyAgKi8KKwkgICYmIChlbGZfdGRhdGEgKGFiZmQpLT5lbGZfaGVhZGVyLT5lX3R5cGUg PT0gRVRfRVhFQworCSAgICAgIHx8IChlbGZfdGRhdGEgKGFiZmQpLT5lbGZfaGVhZGVyLT5lX3R5 cGUgPT0gRVRfRFlOCisJCSAgJiYgZWxmX3RkYXRhIChhYmZkKS0+aXNfcGllKSkpCisJZWluZm8g KF8oIiVGJVA6IGNhbm5vdCB1c2UgZXhlY3V0YWJsZSBmaWxlICclcEInIGFzIGlucHV0IHRvIGEg bGlua1xuIiksCisJICAgICAgIGFiZmQpOworICAgIH0KKworICBpZiAoYmZkX2xpbmtfcmVsb2Nh dGFibGUgKCZsaW5rX2luZm8pKQorICAgIHsKKyAgICAgIGlmIChsaW5rX2luZm8uZXhlY3N0YWNr ID09ICFsaW5rX2luZm8ubm9leGVjc3RhY2spCisJeworCSAgLyogUFIgbGQvMTY3NDQ6IElmICIt eiBbbm9dZXhlY3N0YWNrIiBoYXMgYmVlbiBzcGVjaWZpZWQgb24gdGhlCisJICAgICBjb21tYW5k IGxpbmUgYW5kIHdlIGFyZSBwZXJmb21pbmcgYSByZWxvY2F0YWJsZSBsaW5rIHRoZW4gbm8KKwkg ICAgIFBUX0dOVV9TVEFDSyBzZWdtZW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgc28gdGhlCisJICAg ICBsaW5raW5mby5bbm9dZXhlY3N0YWNrIHZhbHVlcyBzZXQgaW4gX2hhbmRsZV9vcHRpb24oKSB3 aWxsIGhhdmUgbm8KKwkgICAgIGVmZmVjdC4gIEluc3RlYWQgd2UgY3JlYXRlIGEgLm5vdGUuR05V LXN0YWNrIHNlY3Rpb24gaW4gbXVjaCB0aGUKKwkgICAgIHNhbWUgd2F5IGFzIHRoZSBhc3NlbWJs ZXIgZG9lcyB3aXRoIGl0cyAtLVtub11leGVjc3RhY2sgb3B0aW9uLiAgKi8KKwkgIGZsYWd3b3Jk IGZsYWdzID0gU0VDX1JFQURPTkxZIHwgKGxpbmtfaW5mby5leGVjc3RhY2sgPyBTRUNfQ09ERSA6 IDApOworCSAgKHZvaWQpIGJmZF9tYWtlX3NlY3Rpb25fd2l0aF9mbGFncyAobGlua19pbmZvLmlu cHV0X2JmZHMsCisJCQkJCSAgICAgICIubm90ZS5HTlUtc3RhY2siLCBmbGFncyk7CisJfQorICAg ICAgcmV0dXJuOworICAgIH0KKworICBpZiAoIWxpbmtfaW5mby50cmFkaXRpb25hbF9mb3JtYXQp CisgICAgeworICAgICAgYmZkICplbGZiZmQgPSBOVUxMOworICAgICAgYm9vbCB3YXJuX2VoX2Zy YW1lID0gZmFsc2U7CisgICAgICBpbnQgc2Vlbl90eXBlID0gMDsKKworICAgICAgZm9yIChhYmZk ID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCisJ eworCSAgaW50IHR5cGUgPSAwOworCisJICBpZiAoYmZkX2lucHV0X2p1c3Rfc3ltcyAoYWJmZCkp CisJICAgIGNvbnRpbnVlOworCisJICBmb3IgKHMgPSBhYmZkLT5zZWN0aW9uczsgcyAmJiB0eXBl IDwgQ09NUEFDVF9FSF9IRFI7IHMgPSBzLT5uZXh0KQorCSAgICB7CisJICAgICAgY29uc3QgY2hh ciAqbmFtZSA9IGJmZF9zZWN0aW9uX25hbWUgKHMpOworCisJICAgICAgaWYgKGJmZF9pc19hYnNf c2VjdGlvbiAocy0+b3V0cHV0X3NlY3Rpb24pKQorCQljb250aW51ZTsKKwkgICAgICBpZiAoc3Rh cnRzd2l0aCAobmFtZSwgIi5laF9mcmFtZV9lbnRyeSIpKQorCQl0eXBlID0gQ09NUEFDVF9FSF9I RFI7CisJICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLmVoX2ZyYW1lIikgPT0gMCAmJiBz LT5zaXplID4gOCkKKwkJdHlwZSA9IERXQVJGMl9FSF9IRFI7CisJICAgIH0KKworCSAgaWYgKHR5 cGUgIT0gMCkKKwkgICAgeworCSAgICAgIGlmIChzZWVuX3R5cGUgPT0gMCkKKwkJeworCQkgIHNl ZW5fdHlwZSA9IHR5cGU7CisJCX0KKwkgICAgICBlbHNlIGlmIChzZWVuX3R5cGUgIT0gdHlwZSkK KwkJeworCQkgIGVpbmZvIChfKCIlRiVQOiBjb21wYWN0IGZyYW1lIGRlc2NyaXB0aW9ucyBpbmNv bXBhdGlibGUgd2l0aCIKKwkJCSAgICIgRFdBUkYyIC5laF9mcmFtZSBmcm9tICVwQlxuIiksCisJ CQkgdHlwZSA9PSBEV0FSRjJfRUhfSERSID8gYWJmZCA6IGVsZmJmZCk7CisJCSAgYnJlYWs7CisJ CX0KKworCSAgICAgIGlmICghZWxmYmZkCisJCSAgJiYgKHR5cGUgPT0gQ09NUEFDVF9FSF9IRFIK KwkJICAgICAgfHwgbGlua19pbmZvLmVoX2ZyYW1lX2hkcl90eXBlICE9IDApKQorCQl7CisJCSAg aWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKKwkJ ICAgIGVsZmJmZCA9IGFiZmQ7CisKKwkJICB3YXJuX2VoX2ZyYW1lID0gdHJ1ZTsKKwkJfQorCSAg ICB9CisKKwkgIGlmIChzZWVuX3R5cGUgPT0gQ09NUEFDVF9FSF9IRFIpCisJICAgIGxpbmtfaW5m by5laF9mcmFtZV9oZHJfdHlwZSA9IENPTVBBQ1RfRUhfSERSOworCX0KKyAgICAgIGlmIChlbGZi ZmQpCisJeworCSAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKworCSAgYmVk ID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGVsZmJmZCk7CisJICBzID0gYmZkX21ha2Vfc2VjdGlv bl93aXRoX2ZsYWdzIChlbGZiZmQsICIuZWhfZnJhbWVfaGRyIiwKKwkJCQkJICAgYmVkLT5keW5h bWljX3NlY19mbGFncworCQkJCQkgICB8IFNFQ19SRUFET05MWSk7CisJICBpZiAocyAhPSBOVUxM CisJICAgICAgJiYgYmZkX3NldF9zZWN0aW9uX2FsaWdubWVudCAocywgMikpCisJICAgIHsKKwkg ICAgICBodGFiLT5laF9pbmZvLmhkcl9zZWMgPSBzOworCSAgICAgIHdhcm5fZWhfZnJhbWUgPSBm YWxzZTsKKwkgICAgfQorCX0KKyAgICAgIGlmICh3YXJuX2VoX2ZyYW1lKQorCWVpbmZvIChfKCIl UDogd2FybmluZzogY2Fubm90IGNyZWF0ZSAuZWhfZnJhbWVfaGRyIHNlY3Rpb24sIgorCQkgIiAt LWVoLWZyYW1lLWhkciBpZ25vcmVkXG4iKSk7CisgICAgfQogCiAgIGlmIChsaW5rX2luZm8uZWhf ZnJhbWVfaGRyX3R5cGUgPT0gQ09NUEFDVF9FSF9IRFIpCiAgICAgaWYgKCFiZmRfZWxmX3BhcnNl X2VoX2ZyYW1lX2VudHJpZXMgKE5VTEwsICZsaW5rX2luZm8pKQogICAgICAgZWluZm8gKF8oIiVG JVA6IGZhaWxlZCB0byBwYXJzZSBFSCBmcmFtZSBlbnRyaWVzXG4iKSk7CisKKyAgbGRlbGZfaGFu ZGxlX2R0X25lZWRlZCAoaHRhYiwgdXNlX2xpYnBhdGgsIG5hdGl2ZSwgaXNfbGludXgsCisJCQkg IGlzX2ZyZWVic2QsIGVsZnNpemUsIHByZWZpeCk7CiB9CiAKIHN0YXRpYyBiZmRfc2l6ZV90eXBl CmRpZmYgLS1naXQgYS9sZC9sZGVsZi5oIGIvbGQvbGRlbGYuaAppbmRleCAwZGEyNmM5ZWE3Ni4u ZWZhOGI0NTg1MWMgMTAwNjQ0Ci0tLSBhL2xkL2xkZWxmLmgKKysrIGIvbGQvbGRlbGYuaApAQCAt MjIsNiArMjIsOCBAQCBleHRlcm4gY29uc3QgY2hhciAqbGRlbGZfZW1pdF9ub3RlX2dudV9idWls ZF9pZDsKIAogZXh0ZXJuIHZvaWQgbGRlbGZfYWZ0ZXJfcGFyc2UgKHZvaWQpOwogZXh0ZXJuIGJv b2wgbGRlbGZfbG9hZF9zeW1ib2xzIChsYW5nX2lucHV0X3N0YXRlbWVudF90eXBlICopOworZXh0 ZXJuIHZvaWQgbGRlbGZfYmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkIChpbnQsIGludCwg aW50LCBpbnQsCisJCQkJCQkgIGludCwgY29uc3QgY2hhciAqKTsKIGV4dGVybiB2b2lkIGxkZWxm X2FmdGVyX29wZW4gKGludCwgaW50LCBpbnQsIGludCwgaW50LCBjb25zdCBjaGFyICopOwogZXh0 ZXJuIGJvb2wgbGRlbGZfc2V0dXBfYnVpbGRfaWQgKGJmZCAqKTsKIGV4dGVybiB2b2lkIGxkZWxm X2FwcGVuZF90b19zZXBhcmF0ZWRfc3RyaW5nIChjaGFyICoqLCBjaGFyICopOwpkaWZmIC0tZ2l0 IGEvbGQvbGRlbXVsLmMgYi9sZC9sZGVtdWwuYwppbmRleCA4NWMwMGRlZDc1ZS4uNGM4Y2FkODFm OTggMTAwNjQ0Ci0tLSBhL2xkL2xkZW11bC5jCisrKyBiL2xkL2xkZW11bC5jCkBAIC01OSw2ICs1 OSwxMyBAQCBsZGVtdWxfYmVmb3JlX3BhcnNlICh2b2lkKQogICBsZF9lbXVsYXRpb24tPmJlZm9y ZV9wYXJzZSAoKTsKIH0KIAordm9pZAorbGRlbXVsX2JlZm9yZV9wbHVnaW5fYWxsX3N5bWJvbHNf cmVhZCAodm9pZCkKK3sKKyAgaWYgKGxkX2VtdWxhdGlvbi0+YmVmb3JlX3BsdWdpbl9hbGxfc3lt Ym9sc19yZWFkKQorICAgIGxkX2VtdWxhdGlvbi0+YmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19y ZWFkICgpOworfQorCiB2b2lkCiBsZGVtdWxfYWZ0ZXJfb3BlbiAodm9pZCkKIHsKZGlmZiAtLWdp dCBhL2xkL2xkZW11bC5oIGIvbGQvbGRlbXVsLmgKaW5kZXggMzNlNjkwZDc4YWMuLjE2YTNiNjk5 MWJkIDEwMDY0NAotLS0gYS9sZC9sZGVtdWwuaAorKysgYi9sZC9sZGVtdWwuaApAQCAtMzIsNiAr MzIsOCBAQCBleHRlcm4gdm9pZCBsZGVtdWxfYWZ0ZXJfcGFyc2UKICAgKHZvaWQpOwogZXh0ZXJu IHZvaWQgbGRlbXVsX2JlZm9yZV9wYXJzZQogICAodm9pZCk7CitleHRlcm4gdm9pZCBsZGVtdWxf YmVmb3JlX3BsdWdpbl9hbGxfc3ltYm9sc19yZWFkCisgICh2b2lkKTsKIGV4dGVybiB2b2lkIGxk ZW11bF9hZnRlcl9vcGVuCiAgICh2b2lkKTsKIGV4dGVybiB2b2lkIGxkZW11bF9hZnRlcl9jaGVj a19yZWxvY3MKQEAgLTEzMSw2ICsxMzMsOSBAQCB0eXBlZGVmIHN0cnVjdCBsZF9lbXVsYXRpb25f eGZlcl9zdHJ1Y3QgewogICAvKiBSdW4gYWZ0ZXIgcGFyc2luZyB0aGUgY29tbWFuZCBsaW5lIGFu ZCBzY3JpcHQgZmlsZS4gICovCiAgIHZvaWQgICAoKmFmdGVyX3BhcnNlKSAodm9pZCk7CiAKKyAg LyogUnVuIGJlZm9yZSBjYWxsaW5nIHBsdWdpbiAnYWxsIHN5bWJvbHMgcmVhZCcgaG9vay4gICov CisgIHZvaWQgICAoKmJlZm9yZV9wbHVnaW5fYWxsX3N5bWJvbHNfcmVhZCkgICh2b2lkKTsKKwog ICAvKiBSdW4gYWZ0ZXIgb3BlbmluZyBhbGwgaW5wdXQgZmlsZXMsIGFuZCBsb2FkaW5nIHRoZSBz eW1ib2xzLiAgKi8KICAgdm9pZCAgICgqYWZ0ZXJfb3BlbikgKHZvaWQpOwogCmRpZmYgLS1naXQg YS9sZC9sZGxhbmcuYyBiL2xkL2xkbGFuZy5jCmluZGV4IDE3MzNmOGU2NWM0Li4xYzhkMjI5MzI2 YyAxMDA2NDQKLS0tIGEvbGQvbGRsYW5nLmMKKysrIGIvbGQvbGRsYW5nLmMKQEAgLTgwODAsNiAr ODA4MCw4IEBAIGxhbmdfcHJvY2VzcyAodm9pZCkKICAgICAgIGxhbmdfc3RhdGVtZW50X2xpc3Rf dHlwZSBhZGRlZDsKICAgICAgIGxhbmdfc3RhdGVtZW50X2xpc3RfdHlwZSBmaWxlcywgaW5wdXRm aWxlczsKIAorICAgICAgbGRlbXVsX2JlZm9yZV9wbHVnaW5fYWxsX3N5bWJvbHNfcmVhZCAoKTsK KwogICAgICAgLyogTm93IGFsbCBmaWxlcyBhcmUgcmVhZCwgbGV0IHRoZSBwbHVnaW4ocykgZGVj aWRlIGlmIHRoZXJlCiAJIGFyZSBhbnkgbW9yZSB0byBiZSBhZGRlZCB0byB0aGUgbGluayBiZWZv cmUgd2UgY2FsbCB0aGUKIAkgZW11bGF0aW9uJ3MgYWZ0ZXJfb3BlbiBob29rLiAgV2UgY3JlYXRl IGEgcHJpdmF0ZSBsaXN0IG9mCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL2x0 by5leHAgYi9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL2x0by5leHAKaW5kZXggNjRiODgwMjY1ZWUu LmY0ZWExZDQ4NTMzIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL2x0by5leHAK KysrIGIvbGQvdGVzdHN1aXRlL2xkLXBsdWdpbi9sdG8uZXhwCkBAIC00OTcsNiArNDk3LDMxIEBA IHNldCBsdG9fbGlua19lbGZfdGVzdHMgW2xpc3QgXAogICAgInByMjg4NzkiIFwKICAgICJjKysi IFwKICAgXSBcCisgIFtsaXN0IFwKKyAgICJCdWlsZCBsaWJwcjI4ODQ5YS5zbyIgXAorICAgIi1z aGFyZWQiIFwKKyAgICItZlBJQyIgXAorICAge3ByMjg4NDlhLmN9IFwKKyAgICIiIFwKKyAgICJs aWJwcjI4ODQ5YS5zbyIgXAorICBdIFwKKyAgW2xpc3QgXAorICAgIkJ1aWxkIGxpYnByMjg4NDli LnNvIiBcCisgICAiLXNoYXJlZCAtV2wsLS1uby1hcy1uZWVkZWQsdG1wZGlyL2xpYnByMjg4NDlh LnNvIiBcCisgICAiIiBcCisgICB7ZHVtbXkuY30gXAorICAgIiIgXAorICAgImxpYnByMjg4NDli LnNvIiBcCisgIF0gXAorICBbbGlzdCBcCisgICAiQnVpbGQgcHIyODg0OSIgXAorICAgIi1XbCwt LW5vLWFzLW5lZWRlZCwtLWNvcHktZHQtbmVlZGVkLWVudHJpZXMsLXJwYXRoLWxpbmssLiBcCisg ICAgdG1wZGlyL2xpYnByMjg4NDliLnNvIiBcCisgICAiLU8yIC1mbHRvIiBcCisgICB7cHIyODg0 OWIuY30gXAorICAge3sibm0iIHstRH0gInByMjg4NDkuZCJ9fSBcCisgICAicHIyODg0OSIgXAor ICBdIFwKIF0KIAogIyBQUiAxNDkxOCBjaGVja3MgdGhhdCBsaWJnY2MgaXMgbm90IHNwdXJpb3Vz bHkgaW5jbHVkZWQgaW4gYSBzaGFyZWQgbGluayBvZgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRl L2xkLXBsdWdpbi9wcjI4ODQ5LmQgYi9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL3ByMjg4NDkuZApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTFmOTBjMWFjOGMKLS0tIC9k ZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL3ByMjg4NDkuZApAQCAtMCwwICsx LDMgQEAKKyMuLi4KK1swLTlhLWZdKyBUIF8/c2hvdWxkX2JlX2R5bmFtaWNfaW5fZXhlYworI3Bh c3MKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1wbHVnaW4vcHIyODg0OWEuYyBiL2xkL3Rl c3RzdWl0ZS9sZC1wbHVnaW4vcHIyODg0OWEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMmZjNWM3YjA1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUv bGQtcGx1Z2luL3ByMjg4NDlhLmMKQEAgLTAsMCArMSwyIEBACitleHRlcm4gdm9pZCBzaG91bGRf YmVfZHluYW1pY19pbl9leGVjICh2b2lkKTsKK3ZvaWQgeSAodm9pZCkgeyBzaG91bGRfYmVfZHlu YW1pY19pbl9leGVjICgpOyB9CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL3By Mjg4NDliLmMgYi9sZC90ZXN0c3VpdGUvbGQtcGx1Z2luL3ByMjg4NDliLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxNmQ5YTU4NWQyCi0tLSAvZGV2L251bGwKKysr IGIvbGQvdGVzdHN1aXRlL2xkLXBsdWdpbi9wcjI4ODQ5Yi5jCkBAIC0wLDAgKzEsMyBAQAorZXh0 ZXJuIHZvaWQgeSAodm9pZCk7Cit2b2lkIHNob3VsZF9iZV9keW5hbWljX2luX2V4ZWMgKHZvaWQp IHt9CitpbnQgbWFpbiAodm9pZCkgeyB5ICgpOyByZXR1cm4gMDsgfQotLSAKMi4zNS4xCgo= --0000000000004d501a05d9d3e84f--