From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x144.google.com (mail-il1-x144.google.com [IPv6:2607:f8b0:4864:20::144]) by sourceware.org (Postfix) with ESMTPS id 0727F385BF92 for ; Wed, 1 Apr 2020 21:29:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0727F385BF92 Received: by mail-il1-x144.google.com with SMTP id i75so1455727ild.13 for ; Wed, 01 Apr 2020 14:29:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=4RqfiMCreHv0geYGTL/ZUT77wEqhEZZ7XUKljL2caYg=; b=RCMwB161qa7bAYv8D1ffMjgofYkO2V4msc3OGPEO9HIUGS3EjaioWdMEXLeonWS0hx GdcG5ievvQOe3tYyNLSg+Goh9nPuuexx7gJxHjRFAy+w5iNYv3RG9J9ZsqyxPhr42prX U8/PoZ/cNsXwmCQ3vtZtOCHlBMIRPAQczk0UUbAZ7pJwBPK1x/65HtrXHDWpTnRe79uy 33fCBGwcBboQ/uOX1KMXbK912F6Jaop+aqZgoaG1T67C1j3rxP/DQ5rUeSO6Tw66hqtg exMsxJnwrLUKBap2TfAIAto80gI3pGixi8JKakW9bOXMS3RdJVND5sLfg8mUevjvWDgH wxug== X-Gm-Message-State: AGi0PuYfdv0p2UUISjtXNl/cONeMZAUbuG+OAzRtzPB5wmDtay8wLigc FuB8ApvFzZ/S7I9wwqSyqbKi4IVyFObOC2QzQRPlbg== X-Google-Smtp-Source: APiQypJjldmMJhELPIiA05GDwudCGu37O0g815tcZorjIoN9OLpWMvrptjIa7C+WX22dCVREf2l5bs1Ba0opkuan6d8= X-Received: by 2002:a92:8bc2:: with SMTP id i185mr8533ild.273.1585776557275; Wed, 01 Apr 2020 14:29:17 -0700 (PDT) MIME-Version: 1.0 References: <20200331044350.808132-1-hjl.tools@gmail.com> <20200331061751.qjcv7z5z4rbyu45l@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Wed, 1 Apr 2020 14:28:41 -0700 Message-ID: Subject: V6 [PATCH] x86: Only allow S - A relocations against absolute symbol To: Fangrui Song Cc: "H.J. Lu via Binutils" Content-Type: multipart/mixed; boundary="00000000000063f45e05a24160b3" X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Wed, 01 Apr 2020 21:29:19 -0000 --00000000000063f45e05a24160b3 Content-Type: text/plain; charset="UTF-8" On Wed, Apr 1, 2020 at 7:06 AM H.J. Lu wrote: > > On Tue, Mar 31, 2020 at 8:30 PM H.J. Lu wrote: > > > > On Tue, Mar 31, 2020 at 4:25 PM H.J. Lu wrote: > > > > > > On Tue, Mar 31, 2020 at 7:31 AM H.J. Lu wrote: > > > > > > > > On Mon, Mar 30, 2020 at 11:18 PM Fangrui Song wrote: > > > > > > > > > > On 2020-03-30, H.J. Lu via Binutils wrote: > > > > > >Since value of non-preemptible absolute symbol (SHN_ABS) won't change, > > > > > >only S - A relocations against non-preemptible absolute symbol are > > > > > >allowed in PIE and shared library. > > > > > > > > > > Thanks for the patch. At some point we should define some generic > > > > > relocation categories (https://reviews.llvm.org/rL266158). For example, > > > > > > > > > > - R_ABS: R_X86_64_8, R_X86_64_16, R_X86_64_32, R_X86_64_64 > > > > > R_AARCH64_ABS16, R_AARCH64_ABS32, R_AARCH64_ABS64 > > > > > R_PPC64_ADDR16, R_PPC64_ADDR16_DS, R_PPC64_ADDR16_HA, ... > > > > > - R_PCREL: R_X86_64_PC8, R_X86_64_PC16, R_X86_64_PC32, R_X86_64_PC64 > > > > > R_AARCH64_PREL16, R_AARCH64_PREL32, R_AARCH64_PREL64 > > > > > - R_PLT_PCREL: R_X86_64_PLT32, R_AARCH64_CALL26 > > > > > - R_GOT_PCREL: R_X86_64_GOTPCREL, R_X86_64_GOTPCRELX > > > > > > > > > > Define a property is_preemptible as a more appropriate level of > > > > > abstraction for GENERATE_DYNAMIC_RELOCATION_P and some use cases of bfd_link_pic and bfd_link_executable... > > > > > > > > Current BFD linker delegates most, if not all, of relocation to each backend. > > > > There are many similar codes in backends. I am sharing as much codes > > > > between i386 and x86-64 backends as I can. > > > > > > > > This is the patch I am checking in. > > > > > > Here is the updated patch to include the fix for > > > > > > https://sourceware.org/bugzilla/show_bug.cgi?id=25754 > > > > > > > Another update to allow GOTPCREL relocations. > > Update to detect R_X86_64_32S/R_X86_64_32 overflow. > This is the final version I am checking in. It allows PC relocation against absolute symbols defined by linker script. Tested with GCC, glibc and Linux x86-64 kernel. -- H.J. --00000000000063f45e05a24160b3 Content-Type: application/x-patch; name="0001-x86-Only-allow-S-A-relocations-against-absolute-symb.patch" Content-Disposition: attachment; filename="0001-x86-Only-allow-S-A-relocations-against-absolute-symb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8hubde00 RnJvbSA5MWU5Yjk5YWQ3NjkyNTk1ZWVhNmViNWZjOWVkMWNmM2M3NzBmMzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMzAgTWFyIDIwMjAgMTg6MzY6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IE9u bHkgYWxsb3cgUyArIEEgcmVsb2NhdGlvbnMgYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wKClNpbmNl IHZhbHVlIG9mIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgKFNITl9BQlMpIHdvbid0 IGNoYW5nZSwKb25seSByZWxvY2F0aW9ucywgd2hpY2ggY2FuIGJlIHJlc29sdmVkIGFzIGFic29s dXRlIHZhbHVlICsgYWRkZW5kLCBhbmQKR09UUENSRUwgcmVsb2NhdGlvbnMsIHdoZXJlIGFic29s dXRlIHZhbHVlICsgYWRkZW5kIGlzIHN0b3JlZCBpbiB0aGUgR09UCnNsb3QsIGFnYWluc3Qgbm9u LXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbCBhcmUgYWxsb3dlZCBpbiBQSUUgYW5kCnNoYXJl ZCBsaWJyYXJ5LgoKQWxzbyBjb252ZXJ0IGxvYWQgcmVsb2NhdGlvbiB0byBSXzM4Nl8zMiwgUl9Y ODZfNjRfMzJTIG9yIFJfWDg2XzY0XzMyIGZvcgpyZWxvY2F0aW9uIGFnYWluc3Qgbm9uLXByZWVt cHRpYmxlIGFic29sdXRlIHN5bWJvbC4gIERvbid0IGNvbnZlcnQgdG8KUl9YODZfNjRfMzJTIG5v ciBSX1g4Nl82NF8zMiBmb3Igbm9uLXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbCBpZiB0aGV5 Cm92ZXJmbG93LgoKYmZkLwoKCVBSIGxkLzI1NzQ5CglQUiBsZC8yNTc1NAoJKiBlbGYzMi1pMzg2 LmMgKGVsZl9pMzg2X2NvbnZlcnRfbG9hZF9yZWxvYyk6IENvbnZlcnQgbG9hZAoJcmVsb2NhdGlv biB0byBSXzM4Nl8zMiBmb3IgcmVsb2NhdGlvbiBhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZQoJYWJz b2x1dGUgc3ltYm9sLgoJKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IENhbGwgX2JmZF9lbGZfeDg2 X3ZhbGlkX3JlbG9jX3AuICBEb24ndAoJYWxsb2NhdGUgZHluYW1pYyByZWxvY2F0aW9uIGZvciBu b24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rp b24pOiBQYXNzIHNlYyB0bwoJR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AuCgkqIGVsZjY0 LXg4Ni02NC5jIChSX1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2NfYml0KTogTW92ZWQuCgkoZWxmX3g4 Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MpOiBDb3ZlcnQgbG9hZCByZWxvY2F0aW9uIHRvCglSX1g4 Nl82NF8zMlMgb3IgUl9YODZfNjRfMzIgZm9yIHJlbG9jYXRpb24gYWdhaW5zdCBub24tcHJlZW1w dGlibGUKCWFic29sdXRlIHN5bWJvbC4gIERvbid0IGNvbnZlcnQgdG8gUl9YODZfNjRfMzJTIG5v ciBSX1g4Nl82NF8zMgoJZm9yIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgaWYgdGhl eSBvdmVyZmxvdy4KCShlbGZfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IENhbGwgX2JmZF9lbGZfeDg2 X3ZhbGlkX3JlbG9jX3AuICBTZXQKCXRsc190eXBlIGZvciBHT1Qgc2xvdCB0byBHT1RfQUJTIGZv ciBub24tcHJlZW1wdGlibGUgYWJzb2x1dGUKCXN5bWJvbC4gIERvbid0IGFsbG9jYXRlIGR5bmFt aWMgcmVsb2NhdGlvbiBmb3Igbm9uLXByZWVtcHRpYmxlCglhYnNvbHV0ZSBzeW1ib2wuCgkoZWxm X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogRG9uJ3QgZ2VuZXJhdGUgcmVsYXRpdmUgcmVsb2Nh dGlvbgoJZm9yIEdPVFBDUkVMIHJlbG9jYXRpb25zIGFnYW5zdCBsb2NhbCBhYnNvbHV0ZSBzeW1i b2wuICBQYXNzIHNlYwoJdG8gR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AuCgkqIGVsZnh4 LXg4Ni5jIChlbGZfeDg2X2FsbG9jYXRlX2R5bnJlbG9jcyk6IE5vIGR5bmFtaWMgcmVsb2NhdGlv bgoJYWdhaW5zdCBub24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLgoJKF9iZmRfZWxmX3g4 Nl92YWxpZF9yZWxvY19wKTogTmV3IGZ1bmN0aW9uLgoJKF9iZmRfeDg2X2VsZl9zaXplX2R5bmFt aWNfc2VjdGlvbnMpOiBObyBkeW5hbWljIHJlbG9jYXRpb24gZm9yCglHT1RfQUJTIEdPVCBzbG90 LgoJKiBlbGZ4eC14ODYuaCAoR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1ApOiBBZGQgYW4g U0VDCglhcmd1bWVudC4gIERvbid0IGdlbmVyYXRlIGR5bmFtaWMgcmVsb2NhdGlvbiBhZ2FpbnN0 Cglub24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLgoJKEFCU19TWU1CT0xfUCk6IE5ldy4K CShHRU5FUkFURV9SRUxBVElWRV9SRUxPQ19QKTogRG9uJ3QgZ2VuZXJhdGUgcmVsYXRpdmUgcmVs b2NhdGlvbgoJYWdhaW5zdCBub24tcHJlZW1wdGlibGUgYWJzb2x1dGUgc3ltYm9sLgoJKEdPVF9B QlMpOiBOZXcuCgkoUl9YODZfNjRfY29udmVydGVkX3JlbG9jX2JpdCk6IE5ldy4gIE1vdmVkIGZy b20gZWxmNjQteDg2LTY0LmMuCgkoX2JmZF9lbGZfeDg2X3ZhbGlkX3JlbG9jX3ApOiBOZXcuCgps ZC8KCglQUiBsZC8yNTc0OQoJUFIgbGQvMjU3NTQKCSogdGVzdHN1aXRlL2xkLWVsZi9saW51eC14 ODYuZXhwOiBSdW4gbGQvMjU3NDkgdGVzdHMuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0x LmM6IE5ldyBmaWxlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWEuYzogTGlrZXdpc2Uu CgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5jOiBMaWtld2lzZS4KCSogdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzQ5LTFiLmVycjogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIy NTc0OS0xYy5jOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFkLmM6IExp a2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMi5jOiBMaWtld2lzZS4KCSogdGVz dHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJhLnM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NDktMmIuczogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS5yZDog TGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYS5jOiBMaWtld2lzZS4KCSog dGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFiLnM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NTQtMmEuYzogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0y Yi5lcnI6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmIuczogTGlrZXdp c2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0zYS5jOiBMaWtld2lzZS4KCSogdGVzdHN1 aXRlL2xkLWVsZi9wcjI1NzU0LTNiLnM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3By MjU3NTQtNGEuYzogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC00Yi5zOiBM aWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTRjLnM6IExpa2V3aXNlLgoJKiB0 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNWEuYzogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1l bGYvcHIyNTc1NC01Yi5zOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTVj LnM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNmEuYzogTGlrZXdpc2Uu CgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC02Yi5zOiBMaWtld2lzZS4KCSogdGVzdHN1aXRl L2xkLXg4Ni02NC9wcjE5NjA5LTZhLmQ6IERvbid0IGV4cGVjdCBsaW5rZXIgZXJyb3IuCi0tLQog YmZkL2VsZjMyLWkzODYuYyAgICAgICAgICAgICAgICAgICAgfCAgNDAgKysrKystLQogYmZkL2Vs ZjY0LXg4Ni02NC5jICAgICAgICAgICAgICAgICAgfCAgODEgKysrKysrKysrKystLS0KIGJmZC9l bGZ4eC14ODYuYyAgICAgICAgICAgICAgICAgICAgIHwgMTAzICsrKysrKysrKysrKysrKystCiBi ZmQvZWxmeHgteDg2LmggICAgICAgICAgICAgICAgICAgICB8ICAyOSArKysrLQogbGQvdGVzdHN1 aXRlL2xkLWVsZi9saW51eC14ODYuZXhwICAgfCAxNjcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEuYyAgICAgfCAgMTIgKysKIGxkL3Rl c3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYS5jICAgIHwgIDExICsrCiBsZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NDktMWIuYyAgICB8ICAgOSArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5 LTFiLmVyciAgfCAgIDMgKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFjLmMgICAgfCAg IDkgKysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xZC5jICAgIHwgIDE5ICsrKysKIGxk L3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yLmMgICAgIHwgIDEyICsrCiBsZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NDktMmEucyAgICB8ICAgNiArCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3 NDktMmIucyAgICB8ICAgNyArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LnJkICAgICAg fCAgIDQgKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFhLmMgICAgfCAgMTkgKysrKwog bGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFiLnMgICAgfCAgIDMgKwogbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzU0LTJhLmMgICAgfCAgMjAgKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9w cjI1NzU0LTJiLnMgICAgfCAgIDMgKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTNhLmMg ICAgfCAgMTkgKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTNiLnMgICAgfCAgIDMg KwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTRhLmMgICAgfCAgMTIgKysKIGxkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc1NC00Yi5zICAgIHwgIDIzICsrKysKIGxkL3Rlc3RzdWl0ZS9sZC1l bGYvcHIyNTc1NC00Yy5zICAgIHwgIDEyICsrCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQt NWEuYyAgICB8ICAxMiArKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTViLnMgICAgfCAg MjMgKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTVjLnMgICAgfCAgMTIgKysKIGxk L3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC02YS5jICAgIHwgIDEyICsrCiBsZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NTQtNmIucyAgICB8ICAxMiArKwogbGQvdGVzdHN1aXRlL2xkLXg4Ni02NC9w cjE5NjA5LTZhLmQgfCAgMTEgKy0KIDMwIGZpbGVzIGNoYW5nZWQsIDY3NiBpbnNlcnRpb25zKCsp LCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NDktMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzQ5LTFhLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkt MWIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5l cnIKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xZC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkucmQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc1NC0xYi5zCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzU0LTJhLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NTQtMmIucwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc1NC0zYS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzU0LTNiLnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQt NGEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC00Yi5z CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTRjLnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNWEuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC01Yi5zCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTVjLnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNmEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC02Yi5zCgpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMy LWkzODYuYyBiL2JmZC9lbGYzMi1pMzg2LmMKaW5kZXggZWI3ZTFmOGIzNC4uNTFjM2U4NjMwNCAx MDA2NDQKLS0tIGEvYmZkL2VsZjMyLWkzODYuYworKysgYi9iZmQvZWxmMzItaTM4Ni5jCkBAIC0x MjI2LDYgKzEyMjYsNyBAQCBlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwg RWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCiAgIGJmZF92bWEgbm9wX29mZnNldDsKICAg YmZkX2Jvb2xlYW4gaXNfcGljOwogICBiZmRfYm9vbGVhbiB0b19yZWxvY18zMjsKKyAgYmZkX2Jv b2xlYW4gYWJzX3N5bWJvbDsKICAgdW5zaWduZWQgaW50IHJfdHlwZTsKICAgdW5zaWduZWQgaW50 IHJfc3ltbmR4OwogICBiZmRfdm1hIHJvZmYgPSBpcmVsLT5yX29mZnNldDsKQEAgLTEyNDksNiAr MTI1MCwyMSBAQCBlbGZfaTM4Nl9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwgRWxmX0lu dGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCiAgIG1vZHJtID0gYmZkX2dldF84IChhYmZkLCBjb250 ZW50cyArIHJvZmYgLSAxKTsKICAgYmFzZWxlc3MgPSAobW9kcm0gJiAweGM3KSA9PSAweDU7CiAK KyAgaWYgKGgpCisgICAgeworICAgICAgLyogTkI6IEFsc28gc2V0IGxpbmtlcl9kZWYgdmlhIFNZ TUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1AuICAqLworICAgICAgbG9jYWxfcmVmID0gU1lNQk9MX1JF RkVSRU5DRVNfTE9DQUxfUCAobGlua19pbmZvLCBoKTsKKyAgICAgIGlzeW0gPSBOVUxMOworICAg ICAgYWJzX3N5bWJvbCA9IEFCU19TWU1CT0xfUCAoaCk7CisgICAgfQorICBlbHNlCisgICAgewor ICAgICAgbG9jYWxfcmVmID0gVFJVRTsKKyAgICAgIGlzeW0gPSBiZmRfc3ltX2Zyb21fcl9zeW1u ZHggKCZodGFiLT5zeW1fY2FjaGUsIGFiZmQsCisJCQkJICAgIHJfc3ltbmR4KTsKKyAgICAgIGFi c19zeW1ib2wgPSBpc3ltLT5zdF9zaG5keCA9PSBTSE5fQUJTOworICAgIH0KKwogICBpZiAoYmFz ZWxlc3MgJiYgaXNfcGljKQogICAgIHsKICAgICAgIC8qIEZvciBQSUMsIGRpc2FsbG93IFJfMzg2 X0dPVDMyWCB3aXRob3V0IGEgYmFzZSByZWdpc3RlcgpAQCAtMTI1NiwxMSArMTI3Miw3IEBAIGVs Zl9pMzg2X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLCBFbGZfSW50ZXJuYWxfU2hkciAq c3ltdGFiX2hkciwKICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAKICAgICAgIGlmIChoID09IE5V TEwpCi0JewotCSAgaXN5bSA9IGJmZF9zeW1fZnJvbV9yX3N5bW5keCAoJmh0YWItPnN5bV9jYWNo ZSwgYWJmZCwKLQkJCQkJcl9zeW1uZHgpOwotCSAgbmFtZSA9IGJmZF9lbGZfc3ltX25hbWUgKGFi ZmQsIHN5bXRhYl9oZHIsIGlzeW0sIE5VTEwpOwotCX0KKwluYW1lID0gYmZkX2VsZl9zeW1fbmFt ZSAoYWJmZCwgc3ltdGFiX2hkciwgaXN5bSwgTlVMTCk7CiAgICAgICBlbHNlCiAJbmFtZSA9IGgt PnJvb3Qucm9vdC5zdHJpbmc7CiAKQEAgLTEyOTQsOSArMTMwNiw2IEBAIGVsZl9pMzg2X2NvbnZl cnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLCBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkciwK IAlnb3RvIGNvbnZlcnRfbG9hZDsKICAgICB9CiAKLSAgLyogTkI6IEFsc28gc2V0IGxpbmtlcl9k ZWYgdmlhIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1AuICAqLwotICBsb2NhbF9yZWYgPSBTWU1C T0xfUkVGRVJFTkNFU19MT0NBTF9QIChsaW5rX2luZm8sIGgpOwotCiAgIC8qIFVuZGVmaW5lZCB3 ZWFrIHN5bWJvbCBpcyBvbmx5IGJvdW5kIGxvY2FsbHkgaW4gZXhlY3V0YWJsZQogICAgICBhbmQg aXRzIHJlZmVyZW5jZSBpcyByZXNvbHZlZCBhcyAwLiAgKi8KICAgaWYgKGgtPnJvb3QudHlwZSA9 PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhawpAQCAtMTM5Niw2ICsxNDA1LDkgQEAgZWxmX2kzODZf Y29udmVydF9sb2FkX3JlbG9jIChiZmQgKmFiZmQsIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJf aGRyLAogCWNvbnZlcnRfbG9hZDoKIAkgIGlmIChvcGNvZGUgPT0gMHg4YikKIAkgICAgeworCSAg ICAgIGlmIChhYnNfc3ltYm9sICYmIGxvY2FsX3JlZikKKwkJdG9fcmVsb2NfMzIgPSBUUlVFOwor CiAJICAgICAgaWYgKHRvX3JlbG9jXzMyKQogCQl7CiAJCSAgLyogQ29udmVydCAibW92IGZvb0BH T1RbKCVyZWcxKV0sICVyZWcyIiB0bwpAQCAtMTUxOSw2ICsxNTMxLDcgQEAgZWxmX2kzODZfY2hl Y2tfcmVsb2NzIChiZmQgKmFiZmQsCiAgICAgICBFbGZfSW50ZXJuYWxfU3ltICppc3ltOwogICAg ICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgIGJmZF9ib29sZWFuIHNpemVfcmVsb2M7CisgICAg ICBiZmRfYm9vbGVhbiBub19keW5yZWxvYzsKIAogICAgICAgcl9zeW1uZHggPSBFTEYzMl9SX1NZ TSAocmVsLT5yX2luZm8pOwogICAgICAgcl90eXBlID0gRUxGMzJfUl9UWVBFIChyZWwtPnJfaW5m byk7CkBAIC0xNTg3LDYgKzE2MDAsMTAgQEAgZWxmX2kzODZfY2hlY2tfcmVsb2NzIChiZmQgKmFi ZmQsCiAJICAgIGdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIAorICAgICAgaWYgKCFfYmZkX2VsZl94 ODZfdmFsaWRfcmVsb2NfcCAoc2VjLCBpbmZvLCBodGFiLCByZWwsIGgsIGlzeW0sCisJCQkJICAg ICAgIHN5bXRhYl9oZHIsICZub19keW5yZWxvYykpCisJcmV0dXJuIEZBTFNFOworCiAgICAgICBp ZiAoISBlbGZfaTM4Nl90bHNfdHJhbnNpdGlvbiAoaW5mbywgYWJmZCwgc2VjLCBjb250ZW50cywK IAkJCQkgICAgIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCiAJCQkJICAgICAmcl90eXBlLCBHT1Rf VU5LTk9XTiwKQEAgLTE4MjcsOCArMTg0NCw5IEBAIGVsZl9pMzg2X2NoZWNrX3JlbG9jcyAoYmZk ICphYmZkLAogCiAJICBzaXplX3JlbG9jID0gRkFMU0U7CiAJZG9fc2l6ZToKLQkgIGlmIChORUVE X0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBGQUxTRSwgaCwgc2VjLCByX3R5cGUsCi0JCQkJ CSBSXzM4Nl8zMikpCisJICBpZiAoIW5vX2R5bnJlbG9jCisJICAgICAgJiYgTkVFRF9EWU5BTUlD X1JFTE9DQVRJT05fUCAoaW5mbywgRkFMU0UsIGgsIHNlYywgcl90eXBlLAorCQkJCQkgICAgUl8z ODZfMzIpKQogCSAgICB7CiAJICAgICAgc3RydWN0IGVsZl9keW5fcmVsb2NzICpwOwogCSAgICAg IHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqKmhlYWQ7CkBAIC0yNzA0LDcgKzI3MjIsNyBAQCBlbGZf aTM4Nl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCiAJICAgICAgfHwgaXNfdnh3 b3Jrc190bHMpCiAJICAgIGJyZWFrOwogCi0JICBpZiAoR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FU SU9OX1AgKGluZm8sIGVoLCByX3R5cGUsCisJICBpZiAoR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FU SU9OX1AgKGluZm8sIGVoLCByX3R5cGUsIHNlYywKIAkJCQkJICAgICBGQUxTRSwgcmVzb2x2ZWRf dG9femVybywKIAkJCQkJICAgICAocl90eXBlID09IFJfMzg2X1BDMzIpKSkKIAkgICAgewpkaWZm IC0tZ2l0IGEvYmZkL2VsZjY0LXg4Ni02NC5jIGIvYmZkL2VsZjY0LXg4Ni02NC5jCmluZGV4IDkw ZTI3MDIzMzQuLjRjOWFkNzhkZDcgMTAwNjQ0Ci0tLSBhL2JmZC9lbGY2NC14ODYtNjQuYworKysg Yi9iZmQvZWxmNjQteDg2LTY0LmMKQEAgLTE5Niw5ICsxOTYsNiBAQCBzdGF0aWMgcmVsb2NfaG93 dG9fdHlwZSB4ODZfNjRfZWxmX2hvd3RvX3RhYmxlW10gPQogCUZBTFNFKQogfTsKIAotLyogU2V0 IGlmIGEgcmVsb2NhdGlvbiBpcyBjb252ZXJ0ZWQgZnJvbSBhIEdPVFBDUkVMIHJlbG9jYXRpb24u ICAqLwotI2RlZmluZSBSX1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2NfYml0ICgxIDw8IDcpCi0KICNk ZWZpbmUgWDg2X1BDUkVMX1RZUEVfUChUWVBFKQkJXAogICAoICAgKChUWVBFKSA9PSBSX1g4Nl82 NF9QQzgpCQlcCiAgICB8fCAoKFRZUEUpID09IFJfWDg2XzY0X1BDMTYpCQlcCkBAIC0xNTA5LDYg KzE1MDYsOCBAQCBlbGZfeDg2XzY0X2NvbnZlcnRfbG9hZF9yZWxvYyAoYmZkICphYmZkLAogICBi ZmRfYm9vbGVhbiBub19vdmVyZmxvdzsKICAgYmZkX2Jvb2xlYW4gcmVsb2N4OwogICBiZmRfYm9v bGVhbiB0b19yZWxvY19wYzMyOworICBiZmRfYm9vbGVhbiBhYnNfc3ltYm9sOworICBiZmRfYm9v bGVhbiBsb2NhbF9yZWY7CiAgIGFzZWN0aW9uICp0c2VjOwogICBiZmRfc2lnbmVkX3ZtYSByYWRk ZW5kOwogICB1bnNpZ25lZCBpbnQgb3Bjb2RlOwpAQCAtMTUxNiw2ICsxNTE1LDcgQEAgZWxmX3g4 Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwKICAgdW5zaWduZWQgaW50IHJfdHlw ZSA9ICpyX3R5cGVfcDsKICAgdW5zaWduZWQgaW50IHJfc3ltbmR4OwogICBiZmRfdm1hIHJvZmYg PSBpcmVsLT5yX29mZnNldDsKKyAgYmZkX3ZtYSBhYnNfcmVsb2NhdGlvbjsKIAogICBpZiAocm9m ZiA8IChyX3R5cGUgPT0gUl9YODZfNjRfUkVYX0dPVFBDUkVMWCA/IDMgOiAyKSkKICAgICByZXR1 cm4gVFJVRTsKQEAgLTE1NTksNiArMTU1OSw5IEBAIGVsZl94ODZfNjRfY29udmVydF9sb2FkX3Jl bG9jIChiZmQgKmFiZmQsCiAJCSAgIHx8IG5vX292ZXJmbG93CiAJCSAgIHx8IGlzX3BpYyk7CiAK KyAgYWJzX3N5bWJvbCA9IEZBTFNFOworICBhYnNfcmVsb2NhdGlvbiA9IDA7CisKICAgLyogR2V0 IHRoZSBzeW1ib2wgcmVmZXJyZWQgdG8gYnkgdGhlIHJlbG9jLiAgKi8KICAgaWYgKGggPT0gTlVM TCkKICAgICB7CkBAIC0xNTY5LDggKzE1NzIsMTMgQEAgZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRf cmVsb2MgKGJmZCAqYWJmZCwKICAgICAgIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fVU5ERUYp CiAJcmV0dXJuIFRSVUU7CiAKKyAgICAgIGxvY2FsX3JlZiA9IFRSVUU7CiAgICAgICBpZiAoaXN5 bS0+c3Rfc2huZHggPT0gU0hOX0FCUykKLQl0c2VjID0gYmZkX2Fic19zZWN0aW9uX3B0cjsKKwl7 CisJICB0c2VjID0gYmZkX2Fic19zZWN0aW9uX3B0cjsKKwkgIGFic19zeW1ib2wgPSBUUlVFOwor CSAgYWJzX3JlbG9jYXRpb24gPSBpc3ltLT5zdF92YWx1ZTsKKwl9CiAgICAgICBlbHNlIGlmIChp c3ltLT5zdF9zaG5keCA9PSBTSE5fQ09NTU9OKQogCXRzZWMgPSBiZmRfY29tX3NlY3Rpb25fcHRy OwogICAgICAgZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX1g4Nl82NF9MQ09NTU9OKQpA QCAtMTU4Niw5ICsxNTk0LDExIEBAIGVsZl94ODZfNjRfY29udmVydF9sb2FkX3JlbG9jIChiZmQg KmFiZmQsCiAJIEdPVFBDUkVMWCByZWxvY2F0aW9ucyBzaW5jZSB3ZSBuZWVkIHRvIG1vZGlmeSBS RVggYnl0ZS4KIAkgSXQgaXMgT0sgY29udmVydCBtb3Ygd2l0aCBSX1g4Nl82NF9HT1RQQ1JFTCB0 bwogCSBSX1g4Nl82NF9QQzMyLiAgKi8KLSAgICAgIGJmZF9ib29sZWFuIGxvY2FsX3JlZjsKICAg ICAgIHN0cnVjdCBlbGZfeDg2X2xpbmtfaGFzaF9lbnRyeSAqZWggPSBlbGZfeDg2X2hhc2hfZW50 cnkgKGgpOwogCisgICAgICBhYnNfc3ltYm9sID0gQUJTX1NZTUJPTF9QIChoKTsKKyAgICAgIGFi c19yZWxvY2F0aW9uID0gaC0+cm9vdC51LmRlZi52YWx1ZTsKKwogICAgICAgLyogTkI6IEFsc28g c2V0IGxpbmtlcl9kZWYgdmlhIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1AuICAqLwogICAgICAg bG9jYWxfcmVmID0gU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUxfUCAobGlua19pbmZvLCBoKTsKICAg ICAgIGlmICgocmVsb2N4IHx8IG9wY29kZSA9PSAweDhiKQpAQCAtMTcyOCw2ICsxNzM4LDkgQEAg ZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJmZCwKIAogICAgICAgaWYgKG9w Y29kZSA9PSAweDhiKQogCXsKKwkgIGlmIChhYnNfc3ltYm9sICYmIGxvY2FsX3JlZikKKwkgICAg dG9fcmVsb2NfcGMzMiA9IEZBTFNFOworCiAJICBpZiAodG9fcmVsb2NfcGMzMikKIAkgICAgewog CSAgICAgIC8qIENvbnZlcnQgIm1vdiBmb29AR09UUENSRUwoJXJpcCksICVyZWciIHRvCkBAIC0x Nzg4LDYgKzE4MDEsMjEgQEAgZWxmX3g4Nl82NF9jb252ZXJ0X2xvYWRfcmVsb2MgKGJmZCAqYWJm ZCwKIAkgIHJfdHlwZSA9IChyZXggJiBSRVhfVykgIT0gMCA/IFJfWDg2XzY0XzMyUyA6IFJfWDg2 XzY0XzMyOwogCiAJcmV3cml0ZV9tb2RybV9yZXg6CisJICBpZiAoYWJzX3JlbG9jYXRpb24pCisJ ICAgIHsKKwkgICAgICAvKiBDaGVjayBpZiBSX1g4Nl82NF8zMlMvUl9YODZfNjRfMzIgZml0cy4g ICovCisJICAgICAgaWYgKHJfdHlwZSA9PSBSX1g4Nl82NF8zMlMpCisJCXsKKwkJICBpZiAoKGFi c19yZWxvY2F0aW9uICsgMHg4MDAwMDAwMCkgPiAweGZmZmZmZmZmKQorCQkgICAgcmV0dXJuIFRS VUU7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBpZiAoYWJzX3JlbG9jYXRpb24gPiAweGZm ZmZmZmZmKQorCQkgICAgcmV0dXJuIFRSVUU7CisJCX0KKwkgICAgfQorCiAJICBiZmRfcHV0Xzgg KGFiZmQsIG1vZHJtLCBjb250ZW50cyArIHJvZmYgLSAxKTsKIAogCSAgaWYgKHJleCkKQEAgLTE4 NzksNiArMTkwNyw3IEBAIGVsZl94ODZfNjRfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsIHN0cnVj dCBiZmRfbGlua19pbmZvICppbmZvLAogICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgIGJm ZF9ib29sZWFuIHNpemVfcmVsb2M7CiAgICAgICBiZmRfYm9vbGVhbiBjb252ZXJ0ZWRfcmVsb2M7 CisgICAgICBiZmRfYm9vbGVhbiBub19keW5yZWxvYzsKIAogICAgICAgcl9zeW1uZHggPSBodGFi LT5yX3N5bSAocmVsLT5yX2luZm8pOwogICAgICAgcl90eXBlID0gRUxGMzJfUl9UWVBFIChyZWwt PnJfaW5mbyk7CkBAIC0xOTgzLDYgKzIwMTIsMTAgQEAgZWxmX3g4Nl82NF9jaGVja19yZWxvY3Mg KGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAJICAgIGNvbnZlcnRlZCA9 IFRSVUU7CiAJfQogCisgICAgICBpZiAoIV9iZmRfZWxmX3g4Nl92YWxpZF9yZWxvY19wIChzZWMs IGluZm8sIGh0YWIsIHJlbCwgaCwgaXN5bSwKKwkJCQkgICAgICAgc3ltdGFiX2hkciwgJm5vX2R5 bnJlbG9jKSkKKwlyZXR1cm4gRkFMU0U7CisKICAgICAgIGlmICghIGVsZl94ODZfNjRfdGxzX3Ry YW5zaXRpb24gKGluZm8sIGFiZmQsIHNlYywgY29udGVudHMsCiAJCQkJICAgICAgIHN5bXRhYl9o ZHIsIHN5bV9oYXNoZXMsCiAJCQkJICAgICAgICZyX3R5cGUsIEdPVF9VTktOT1dOLApAQCAtMjAy OSwxMiArMjA2MiwyNiBAQCBlbGZfeDg2XzY0X2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLCBzdHJ1 Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKIAogCSAgICBzd2l0Y2ggKHJfdHlwZSkKIAkgICAgICB7 Ci0JICAgICAgZGVmYXVsdDogdGxzX3R5cGUgPSBHT1RfTk9STUFMOyBicmVhazsKLQkgICAgICBj YXNlIFJfWDg2XzY0X1RMU0dEOiB0bHNfdHlwZSA9IEdPVF9UTFNfR0Q7IGJyZWFrOwotCSAgICAg IGNhc2UgUl9YODZfNjRfR09UVFBPRkY6IHRsc190eXBlID0gR09UX1RMU19JRTsgYnJlYWs7CisJ ICAgICAgZGVmYXVsdDoKKwkJdGxzX3R5cGUgPSBHT1RfTk9STUFMOworCQlpZiAoaCkKKwkJICB7 CisJCSAgICBpZiAoQUJTX1NZTUJPTF9QIChoKSkKKwkJICAgICAgdGxzX3R5cGUgPSBHT1RfQUJT OworCQkgIH0KKwkJZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0FCUykKKwkJICB0bHNf dHlwZSA9IEdPVF9BQlM7CisJCWJyZWFrOworCSAgICAgIGNhc2UgUl9YODZfNjRfVExTR0Q6CisJ CXRsc190eXBlID0gR09UX1RMU19HRDsKKwkJYnJlYWs7CisJICAgICAgY2FzZSBSX1g4Nl82NF9H T1RUUE9GRjoKKwkJdGxzX3R5cGUgPSBHT1RfVExTX0lFOworCQlicmVhazsKIAkgICAgICBjYXNl IFJfWDg2XzY0X0dPVFBDMzJfVExTREVTQzoKIAkgICAgICBjYXNlIFJfWDg2XzY0X1RMU0RFU0Nf Q0FMTDoKLQkJdGxzX3R5cGUgPSBHT1RfVExTX0dERVNDOyBicmVhazsKKwkJdGxzX3R5cGUgPSBH T1RfVExTX0dERVNDOworCQlicmVhazsKIAkgICAgICB9CiAKIAkgICAgaWYgKGggIT0gTlVMTCkK QEAgLTIyNDUsOCArMjI5Miw5IEBAIGVsZl94ODZfNjRfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQs IHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAogCiAJICBzaXplX3JlbG9jID0gRkFMU0U7CiAJ ZG9fc2l6ZToKLQkgIGlmIChORUVEX0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBUUlVFLCBo LCBzZWMsIHJfdHlwZSwKLQkJCQkJIGh0YWItPnBvaW50ZXJfcl90eXBlKSkKKwkgIGlmICghbm9f ZHlucmVsb2MKKwkgICAgICAmJiBORUVEX0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBUUlVF LCBoLCBzZWMsIHJfdHlwZSwKKwkJCQkJICAgIGh0YWItPnBvaW50ZXJfcl90eXBlKSkKIAkgICAg ewogCSAgICAgIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqcDsKIAkgICAgICBzdHJ1Y3QgZWxmX2R5 bl9yZWxvY3MgKipoZWFkOwpAQCAtMjg4MCw3ICsyOTI4LDE0IEBAIGVsZl94ODZfNjRfcmVsb2Nh dGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAogCQkJICAgICAgYmFzZV9nb3QtPmNvbnRlbnRz ICsgb2ZmKTsKIAkJICBsb2NhbF9nb3Rfb2Zmc2V0c1tyX3N5bW5keF0gfD0gMTsKIAotCQkgIGlm IChiZmRfbGlua19waWMgKGluZm8pKQorCQkgIC8qIE5COiBHT1RQQ1JFTCByZWxvY2F0aW9ucyBh Z2FpbnN0IGxvY2FsIGFic29sdXRlCisJCSAgICAgc3ltYm9sIHN0b3JlIHJlbG9jYXRpb24gdmFs dWUgaW4gdGhlIEdPVCBzbG90CisJCSAgICAgd2l0aG91dCByZWxhdGl2ZSByZWxvY2F0aW9uLiAg Ki8KKwkJICBpZiAoYmZkX2xpbmtfcGljIChpbmZvKQorCQkgICAgICAmJiAhKHN5bS0+c3Rfc2hu ZHggPT0gU0hOX0FCUworCQkJICAgJiYgKHJfdHlwZSA9PSBSX1g4Nl82NF9HT1RQQ1JFTAorCQkJ ICAgICAgIHx8IHJfdHlwZSA9PSBSX1g4Nl82NF9HT1RQQ1JFTFgKKwkJCSAgICAgICB8fCByX3R5 cGUgPT0gUl9YODZfNjRfUkVYX0dPVFBDUkVMWCkpKQogCQkgICAgcmVsYXRpdmVfcmVsb2MgPSBU UlVFOwogCQl9CiAJICAgIH0KQEAgLTMxNzUsNyArMzIzMCw3IEBAIGVsZl94ODZfNjRfcmVsb2Nh dGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAogCQkJCSAgICAmJiAoWDg2X1BDUkVMX1RZUEVf UCAocl90eXBlKQogCQkJCQl8fCBYODZfU0laRV9UWVBFX1AgKHJfdHlwZSkpKTsKIAotCSAgaWYg KEdFTkVSQVRFX0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBlaCwgcl90eXBlLAorCSAgaWYg KEdFTkVSQVRFX0RZTkFNSUNfUkVMT0NBVElPTl9QIChpbmZvLCBlaCwgcl90eXBlLCBzZWMsCiAJ CQkJCSAgICAgbmVlZF9jb3B5X3JlbG9jX2luX3BpZSwKIAkJCQkJICAgICByZXNvbHZlZF90b196 ZXJvLCBGQUxTRSkpCiAJICAgIHsKZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC14ODYuYyBiL2JmZC9l bGZ4eC14ODYuYwppbmRleCAxMDhlMDRhMTU4Li4wZmM3NWZiZWRmIDEwMDY0NAotLS0gYS9iZmQv ZWxmeHgteDg2LmMKKysrIGIvYmZkL2VsZnh4LXg4Ni5jCkBAIC0zNDcsNyArMzQ3LDggQEAgZWxm X3g4Nl9hbGxvY2F0ZV9keW5yZWxvY3MgKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLCB2 b2lkICppbmYpCiAJIChidXQgaWYgYm90aCBSXzM4Nl9UTFNfSUVfMzIgYW5kIFJfMzg2X1RMU19J RSBpcyBwcmVzZW50LCB3ZQogCSBuZWVkIHR3byksIFJfMzg2X1RMU19HRCBhbmQgUl9YODZfNjRf VExTR0QgbmVlZCBvbmUgaWYgbG9jYWwKIAkgc3ltYm9sIGFuZCB0d28gaWYgZ2xvYmFsLiAgTm8g ZHluYW1pYyByZWxvY2F0aW9uIGFnYWluc3QKLQkgcmVzb2x2ZWQgdW5kZWZpbmVkIHdlYWsgc3lt Ym9sIGluIGV4ZWN1dGFibGUuICAqLworCSByZXNvbHZlZCB1bmRlZmluZWQgd2VhayBzeW1ib2wg aW4gZXhlY3V0YWJsZS4gIE5vIGR5bmFtaWMKKwkgcmVsb2NhdGlvbiBhZ2FpbnN0IG5vbi1wcmVl bXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wuICAqLwogICAgICAgaWYgKHRsc190eXBlID09IEdPVF9U TFNfSUVfQk9USCkKIAlodGFiLT5lbGYuc3JlbGdvdC0+c2l6ZSArPSAyICogaHRhYi0+c2l6ZW9m X3JlbG9jOwogICAgICAgZWxzZSBpZiAoKEdPVF9UTFNfR0RfUCAodGxzX3R5cGUpICYmIGgtPmR5 bmluZHggPT0gLTEpCkBAIC0zNTksNyArMzYwLDkgQEAgZWxmX3g4Nl9hbGxvY2F0ZV9keW5yZWxv Y3MgKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLCB2b2lkICppbmYpCiAJICAgICAgICYm ICgoRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVAogCQkgICAgJiYg IXJlc29sdmVkX3RvX3plcm8pCiAJCSAgIHx8IGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNo X3VuZGVmd2VhaykKLQkgICAgICAgJiYgKGJmZF9saW5rX3BpYyAoaW5mbykKKwkgICAgICAgJiYg KChiZmRfbGlua19waWMgKGluZm8pCisJCSAgICAmJiAhKGgtPmR5bmluZHggPT0gLTEKKwkJCSAm JiBBQlNfU1lNQk9MX1AgKGgpKSkKIAkJICAgfHwgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZ TUJPTCAoZHluLCAwLCBoKSkpCiAJaHRhYi0+ZWxmLnNyZWxnb3QtPnNpemUgKz0gaHRhYi0+c2l6 ZW9mX3JlbG9jOwogICAgICAgaWYgKEdPVF9UTFNfR0RFU0NfUCAodGxzX3R5cGUpKQpAQCAtOTUy LDYgKzk1NSwxMDAgQEAgX2JmZF94ODZfZWxmX2xpbmtfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQs IHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQogICByZXR1cm4gX2JmZF9lbGZfbGlua19jaGVj a19yZWxvY3MgKGFiZmQsIGluZm8pOwogfQogCitiZmRfYm9vbGVhbgorX2JmZF9lbGZfeDg2X3Zh bGlkX3JlbG9jX3AgKGFzZWN0aW9uICppbnB1dF9zZWN0aW9uLAorCQkJICAgIHN0cnVjdCBiZmRf bGlua19pbmZvICppbmZvLAorCQkJICAgIHN0cnVjdCBlbGZfeDg2X2xpbmtfaGFzaF90YWJsZSAq aHRhYiwKKwkJCSAgICBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsLAorCQkJICAgIHN0cnVj dCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLAorCQkJICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwK KwkJCSAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkciwKKwkJCSAgICBiZmRfYm9vbGVh biAqbm9fZHlucmVsb2NfcCkKK3sKKyAgYmZkX2Jvb2xlYW4gdmFsaWRfcCA9IFRSVUU7CisKKyAg Km5vX2R5bnJlbG9jX3AgPSBGQUxTRTsKKworICAvKiBDaGVjayBJZiByZWxvY2F0aW9uIGFnYWlu c3Qgbm9uLXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbCBpcworICAgICB2YWxpZCBpbiBQSUMu ICBGSVhNRTogQ2FuJ3QgdXNlIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMX1Agc2luY2UKKyAgICAg aXQgbWF5IGNhbGwgX2JmZF9lbGZfbGlua19oaWRlX3N5bV9ieV92ZXJzaW9uIGFuZCByZXN1bHQg aW4KKyAgICAgbGQtZWxmdmVycy8gdmVyczIxIHRlc3QgZmFpbHVyZS4gICovCisgIGlmIChiZmRf bGlua19waWMgKGluZm8pCisgICAgICAmJiAoaCA9PSBOVUxMIHx8IFNZTUJPTF9SRUZFUkVOQ0VT X0xPQ0FMIChpbmZvLCBoKSkpCisgICAgeworICAgICAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5k X2RhdGEgKmJlZDsKKyAgICAgIHVuc2lnbmVkIGludCByX3R5cGU7CisgICAgICBFbGZfSW50ZXJu YWxfUmVsYSBpcmVsOworCisgICAgICAvKiBTa2lwIG5vbi1hYnNvbHV0ZSBzeW1ib2wuICAqLwor ICAgICAgaWYgKGgpCisJeworCSAgaWYgKCFBQlNfU1lNQk9MX1AgKGgpKQorCSAgICByZXR1cm4g dmFsaWRfcDsKKwl9CisgICAgICBlbHNlIGlmIChzeW0tPnN0X3NobmR4ICE9IFNITl9BQlMpCisJ cmV0dXJuIHZhbGlkX3A7CisKKyAgICAgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChpbnB1 dF9zZWN0aW9uLT5vd25lcik7CisgICAgICByX3R5cGUgPSBFTEYzMl9SX1RZUEUgKHJlbC0+cl9p bmZvKTsKKyAgICAgIGlyZWwgPSAqcmVsOworCisgICAgICAvKiBPbmx5IGFsbG93IHJlbG9jYXRp b25zIGFnYWluc3QgYWJzb2x1dGUgc3ltYm9sLCB3aGljaCBjYW4gYmUKKwkgcmVzb2x2ZWQgYXMg YWJzb2x1dGUgdmFsdWUgKyBhZGRlbmQuICBHT1RQQ1JFTCByZWxvY2F0aW9ucworCSBhcmUgYWxs b3dlZCBzaW5jZSBhYnNvbHV0ZSB2YWx1ZSArIGFkZGVuZCBpcyBzdG9yZWQgaW4gdGhlCisJIEdP VCBzbG90LiAgKi8KKyAgICAgIGlmIChiZWQtPnRhcmdldF9pZCA9PSBYODZfNjRfRUxGX0RBVEEp CisJeworCSAgcl90eXBlICY9IH5SX1g4Nl82NF9jb252ZXJ0ZWRfcmVsb2NfYml0OworCSAgdmFs aWRfcCA9IChyX3R5cGUgPT0gUl9YODZfNjRfNjQKKwkJICAgICB8fCByX3R5cGUgPT0gUl9YODZf NjRfMzIKKwkJICAgICB8fCByX3R5cGUgPT0gUl9YODZfNjRfMzJTCisJCSAgICAgfHwgcl90eXBl ID09IFJfWDg2XzY0XzE2CisJCSAgICAgfHwgcl90eXBlID09IFJfWDg2XzY0XzgKKwkJICAgICB8 fCByX3R5cGUgPT0gUl9YODZfNjRfR09UUENSRUwKKwkJICAgICB8fCByX3R5cGUgPT0gUl9YODZf NjRfR09UUENSRUxYCisJCSAgICAgfHwgcl90eXBlID09IFJfWDg2XzY0X1JFWF9HT1RQQ1JFTFgp OworCSAgaWYgKCF2YWxpZF9wKQorCSAgICB7CisJICAgICAgdW5zaWduZWQgaW50IHJfc3ltbmR4 ID0gaHRhYi0+cl9zeW0gKHJlbC0+cl9pbmZvKTsKKwkgICAgICBpcmVsLnJfaW5mbyA9IGh0YWIt PnJfaW5mbyAocl9zeW1uZHgsIHJfdHlwZSk7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJdmFs aWRfcCA9IChyX3R5cGUgPT0gUl8zODZfMzIKKwkJICAgfHwgcl90eXBlID09IFJfMzg2XzE2CisJ CSAgIHx8IHJfdHlwZSA9PSBSXzM4Nl84KTsKKworICAgICAgaWYgKHZhbGlkX3ApCisJKm5vX2R5 bnJlbG9jX3AgPSBUUlVFOworICAgICAgZWxzZQorCXsKKwkgIGNvbnN0IGNoYXIgKm5hbWU7CisJ ICBhcmVsZW50IGludGVybmFsX3JlbG9jOworCisJICBpZiAoIWJlZC0+ZWxmX2luZm9fdG9faG93 dG8gKGlucHV0X3NlY3Rpb24tPm93bmVyLAorCQkJCSAgICAgICAmaW50ZXJuYWxfcmVsb2MsICZp cmVsKQorCSAgICAgIHx8IGludGVybmFsX3JlbG9jLmhvd3RvID09IE5VTEwpCisJICAgIGFib3J0 ICgpOworCisJICBpZiAoaCkKKwkgICAgbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7CisJICBl bHNlCisJICAgIG5hbWUgPSBiZmRfZWxmX3N5bV9uYW1lIChpbnB1dF9zZWN0aW9uLT5vd25lciwg c3ltdGFiX2hkciwKKwkJCQkgICAgIHN5bSwgTlVMTCk7CisJICBpbmZvLT5jYWxsYmFja3MtPmVp bmZvCisJICAgIC8qIHhnZXR0ZXh0OmMtZm9ybWF0ICovCisJICAgIChfKCIlRiVQOiAlcEI6IHJl bG9jYXRpb24gJXMgYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wgIgorCSAgICAgICAiYCVzJyBpbiBz ZWN0aW9uIGAlcEEnIGlzIGRpc2FsbG93ZWRcbiIpLAorCSAgICAgaW5wdXRfc2VjdGlvbi0+b3du ZXIsIGludGVybmFsX3JlbG9jLmhvd3RvLT5uYW1lLCBuYW1lLAorCSAgICAgaW5wdXRfc2VjdGlv bik7CisJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKKwl9CisgICAgfQor CisgIHJldHVybiB2YWxpZF9wOworfQorCiAvKiBTZXQgdGhlIHNpemVzIG9mIHRoZSBkeW5hbWlj IHNlY3Rpb25zLiAgKi8KIAogYmZkX2Jvb2xlYW4KQEAgLTEwNjUsNyArMTE2Miw3IEBAIF9iZmRf eDg2X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMgKGJmZCAqb3V0cHV0X2JmZCwKIAkJICAgICAg fHwgKmxvY2FsX3Rsc190eXBlID09IEdPVF9UTFNfSUVfQk9USCkKIAkJICAgIHMtPnNpemUgKz0g aHRhYi0+Z290X2VudHJ5X3NpemU7CiAJCX0KLQkgICAgICBpZiAoYmZkX2xpbmtfcGljIChpbmZv KQorCSAgICAgIGlmICgoYmZkX2xpbmtfcGljIChpbmZvKSAmJiAqbG9jYWxfdGxzX3R5cGUgIT0g R09UX0FCUykKIAkJICB8fCBHT1RfVExTX0dEX0FOWV9QICgqbG9jYWxfdGxzX3R5cGUpCiAJCSAg fHwgKCpsb2NhbF90bHNfdHlwZSAmIEdPVF9UTFNfSUUpKQogCQl7CmRpZmYgLS1naXQgYS9iZmQv ZWxmeHgteDg2LmggYi9iZmQvZWxmeHgteDg2LmgKaW5kZXggYmVmMTdkYzJiYS4uNmU5MWYyNDI2 MiAxMDA2NDQKLS0tIGEvYmZkL2VsZnh4LXg4Ni5oCisrKyBiL2JmZC9lbGZ4eC14ODYuaApAQCAt MTE5LDExICsxMTksMTUgQEAKICAgIENvcHkgZHluYW1pYyBmdW5jdGlvbiBwb2ludGVyIHJlbG9j YXRpb25zLiAgRG9uJ3QgZ2VuZXJhdGUgZHluYW1pYwogICAgcmVsb2NhdGlvbnMgYWdhaW5zdCBy ZXNvbHZlZCB1bmRlZmluZWQgd2VhayBzeW1ib2xzIGluIFBJRSwgZXhjZXB0CiAgICB3aGVuIFBD MzJfUkVMT0MgaXMgVFJVRS4gIFVuZGVmaW5lZCB3ZWFrIHN5bWJvbCBpcyBib3VuZCBsb2NhbGx5 Ci0gICB3aGVuIFBJQyBpcyBmYWxzZS4gICovCi0jZGVmaW5lIEdFTkVSQVRFX0RZTkFNSUNfUkVM T0NBVElPTl9QKElORk8sIEVILCBSX1RZUEUsIFwKKyAgIHdoZW4gUElDIGlzIGZhbHNlLiAgRG9u J3QgZ2VuZXJhdGUgZHluYW1pYyByZWxvY2F0aW9ucyBhZ2FpbnN0CisgICBub24tcHJlZW1wdGli bGUgYWJzb2x1dGUgc3ltYm9sLiAgKi8KKyNkZWZpbmUgR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FU SU9OX1AoSU5GTywgRUgsIFJfVFlQRSwgU0VDLCBcCiAJCQkJICAgICAgTkVFRF9DT1BZX1JFTE9D X0lOX1BJRSwgXAogCQkJCSAgICAgIFJFU09MVkVEX1RPX1pFUk8sIFBDMzJfUkVMT0MpIFwKICAg KChiZmRfbGlua19waWMgKElORk8pIFwKKyAgICAmJiAhKGJmZF9pc19hYnNfc2VjdGlvbiAoU0VD KSBcCisJICYmICgoRUgpID09IE5VTEwgXAorCSAgICAgfHwgU1lNQk9MX1JFRkVSRU5DRVNfTE9D QUwgKElORk8sICYoRUgpLT5lbGYpKSkgXAogICAgICYmICEoTkVFRF9DT1BZX1JFTE9DX0lOX1BJ RSkgXAogICAgICYmICgoRUgpID09IE5VTEwgXAogCXx8ICgoRUxGX1NUX1ZJU0lCSUxJVFkgKChF SCktPmVsZi5vdGhlcikgPT0gU1RWX0RFRkFVTFQgXApAQCAtMTcwLDE3ICsxNzQsMjUgQEAKICAg IHx8ICgoc3RydWN0IGVsZl94ODZfbGlua19oYXNoX2VudHJ5ICopIChIKSktPmxpbmtlcl9kZWYg XAogICAgfHwgRUxGX0NPTU1PTl9ERUZfUCAoSCkpCiAKKy8qIFJldHVybiBUUlVFIGlmIHRoZSBz eW1ib2wgZGVzY3JpYmVkIGJ5IGEgbGlua2VyIGhhc2ggZW50cnkgSCBpcworICAgZ29pbmcgdG8g YmUgYWJzb2x1dGUuICBTaW1pbGFyIHRvIGJmZF9pc19hYnNfc3ltYm9sLCBidXQgZXhjbHVkaW5n CisgICBhbGwgbGlua2VyLXNjcmlwdCBkZWZpbmVkIHN5bWJvbHMuICAqLworI2RlZmluZSBBQlNf U1lNQk9MX1AoSCkgXAorICAoYmZkX2lzX2Fic19zeW1ib2wgKCYoSCktPnJvb3QpICYmICEoSCkt PnJvb3QubGRzY3JpcHRfZGVmKQorCiAvKiBUUlVFIGlmIHJlbGF0aXZlIHJlbG9jYXRpb24gc2hv dWxkIGJlIGdlbmVyYXRlZC4gIEdPVCByZWZlcmVuY2UgdG8KICAgIGdsb2JhbCBzeW1ib2wgaW4g UElDIHdpbGwgbGVhZCB0byBkeW5hbWljIHN5bWJvbC4gIEl0IGJlY29tZXMgYQogICAgcHJvYmxl bSB3aGVuICJ0aW1lIiBvciAidGltZXMiIGlzIGRlZmluZWQgYXMgYSB2YXJpYWJsZSBpbiBhbgog ICAgZXhlY3V0YWJsZSwgY2xhc2hpbmcgd2l0aCBmdW5jdGlvbnMgb2YgdGhlIHNhbWUgbmFtZSBp biBsaWJjLiAgSWYgYQogICAgc3ltYm9sIGlzbid0IHVuZGVmaW5lZCB3ZWFrIHN5bWJvbCwgZG9u J3QgbWFrZSBpdCBkeW5hbWljIGluIFBJQyBhbmQKLSAgIGdlbmVyYXRlIHJlbGF0aXZlIHJlbG9j YXRpb24uICAqLworICAgZ2VuZXJhdGUgcmVsYXRpdmUgcmVsb2NhdGlvbi4gICBEb24ndCBnZW5l cmF0ZSByZWxhdGl2ZSByZWxvY2F0aW9uCisgICBhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZSBhYnNv bHV0ZSBzeW1ib2wuICAqLwogI2RlZmluZSBHRU5FUkFURV9SRUxBVElWRV9SRUxPQ19QKElORk8s IEgpIFwKICAgKChIKS0+ZHluaW5keCA9PSAtMSBcCiAgICAmJiAhKEgpLT5mb3JjZWRfbG9jYWwg XAogICAgJiYgKEgpLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsgXAotICAg JiYgYmZkX2xpbmtfcGljIChJTkZPKSkKKyAgICYmIGJmZF9saW5rX3BpYyAoSU5GTykgXAorICAg JiYgIUFCU19TWU1CT0xfUCAoSCkpCiAKIC8qIFRSVUUgaWYgdGhpcyBpcyBhIHBvaW50ZXIgcmVm ZXJlbmNlIHRvIGEgbG9jYWwgSUZVTkMuICAqLwogI2RlZmluZSBQT0lOVEVSX0xPQ0FMX0lGVU5D X1AoSU5GTywgSCkgXApAQCAtNDE0LDYgKzQyNiw3IEBAIHN0cnVjdCBlbGZfeDg2X3BsdF9sYXlv dXQKICNkZWZpbmUgR09UX1RMU19JRV9ORUcJNgogI2RlZmluZSBHT1RfVExTX0lFX0JPVEggNwog I2RlZmluZSBHT1RfVExTX0dERVNDCTgKKyNkZWZpbmUgR09UX0FCUwkJOQogI2RlZmluZSBHT1Rf VExTX0dEX0JPVEhfUCh0eXBlKQlcCiAgICgodHlwZSkgPT0gKEdPVF9UTFNfR0QgfCBHT1RfVExT X0dERVNDKSkKICNkZWZpbmUgR09UX1RMU19HRF9QKHR5cGUpIFwKQEAgLTYwMSw2ICs2MTQsOSBA QCBzdHJ1Y3QgZWxmX3g4Nl9wbHQKICAgbG9uZyBjb3VudDsKIH07CiAKKy8qIFNldCBpZiBhIHJl bG9jYXRpb24gaXMgY29udmVydGVkIGZyb20gYSBHT1RQQ1JFTCByZWxvY2F0aW9uLiAgKi8KKyNk ZWZpbmUgUl9YODZfNjRfY29udmVydGVkX3JlbG9jX2JpdCAoMSA8PCA3KQorCiAjZGVmaW5lIGVs Zl94ODZfdGRhdGEoYWJmZCkgXAogICAoKHN0cnVjdCBlbGZfeDg2X29ial90ZGF0YSAqKSAoYWJm ZCktPnRkYXRhLmFueSkKIApAQCAtNjUyLDYgKzY2OCwxMSBAQCBleHRlcm4gaW50IF9iZmRfeDg2 X2VsZl9jb21wYXJlX3JlbG9jcwogZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfeDg2X2VsZl9saW5r X2NoZWNrX3JlbG9jcwogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwogCitleHRl cm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfeDg2X3ZhbGlkX3JlbG9jX3AKKyAgKGFzZWN0aW9uICos IHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBlbGZfeDg2X2xpbmtfaGFzaF90YWJsZSAq LAorICAgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKiwgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50 cnkgKiwKKyAgIEVsZl9JbnRlcm5hbF9TeW0gKiwgRWxmX0ludGVybmFsX1NoZHIgKiwgYmZkX2Jv b2xlYW4gKik7CisKIGV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX3g4Nl9lbGZfc2l6ZV9keW5hbWlj X3NlY3Rpb25zCiAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CiAKZGlmZiAtLWdp dCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvbGludXgteDg2LmV4cCBiL2xkL3Rlc3RzdWl0ZS9sZC1l bGYvbGludXgteDg2LmV4cAppbmRleCA2M2EzMjFiOTY2Li43MTg2ZGVkZTcxIDEwMDY0NAotLS0g YS9sZC90ZXN0c3VpdGUvbGQtZWxmL2xpbnV4LXg4Ni5leHAKKysrIGIvbGQvdGVzdHN1aXRlL2xk LWVsZi9saW51eC14ODYuZXhwCkBAIC0xMTUsMyArMTE1LDE3MCBAQCBlbGZlZGl0X3Rlc3QgIi0t ZGlzYWJsZS14ODYtZmVhdHVyZSBzaHN0ayIgeDg2LWZlYXR1cmUtMSB4ODYtZmVhdHVyZS0xYwog ZWxmZWRpdF90ZXN0ICItLWRpc2FibGUteDg2LWZlYXR1cmUgaWJ0IiB4ODYtZmVhdHVyZS0xIHg4 Ni1mZWF0dXJlLTFkCiBlbGZlZGl0X3Rlc3QgIi0tZW5hYmxlLXg4Ni1mZWF0dXJlIGlidCAtLWVu YWJsZS14ODYtZmVhdHVyZSBzaHN0ayIgXAogCQl4ODYtZmVhdHVyZS0xIHg4Ni1mZWF0dXJlLTFl CisKK3Byb2MgY2hlY2tfcHIyNTc0OWEge3Rlc3RuYW1lIHNyY2ZpbGVhIHNyY2ZpbGViIGNmbGFn cyBsZGZsYWdzIGxkZXJyb3J9IHsKKyAgICBnbG9iYWwgb2JqY29weQorICAgIGdsb2JhbCBzcmNk aXIKKyAgICBnbG9iYWwgc3ViZGlyCisKKyAgICBpZiB7IFtpc3RhcmdldCAiaT84Ni0qLWxpbnV4 KiJdIH0geworCXNldCBvdXRwdXRfYXJjaCAiaTM4NjppMzg2IgorCXNldCBvdXRwdXRfdGFyZ2V0 ICJlbGYzMi1pMzg2IgorICAgIH0gZWxzZSB7CisJc2V0IG91dHB1dF9hcmNoICJpMzg2Ong4Ni02 NCIKKwlpZiB7W2lzdGFyZ2V0ICJ4ODZfNjQtKi1saW51eCotZ251eDMyIl19IHsKKwkgICAgc2V0 IG91dHB1dF90YXJnZXQgImVsZjMyLXg4Ni02NCIKKwl9IGVsc2UgeworCSAgICBzZXQgb3V0cHV0 X3RhcmdldCAiZWxmNjQteDg2LTY0IgorCX0KKyAgICB9CisKKyAgICBleGVjIGNwICRzcmNkaXIv JHN1YmRpci8kc3JjZmlsZWEgJHNyY2ZpbGVhCisgICAgc2V0IHByMjU3NDlfYmluICIkb2JqY29w eSAtQiAkb3V0cHV0X2FyY2ggLUkgYmluYXJ5IC1PICRvdXRwdXRfdGFyZ2V0ICRzcmNmaWxlYSB0 bXBkaXIvcHIyNTc0OS1iaW4ubyIKKyAgICBzZW5kX2xvZyAiJHByMjU3NDlfYmluXG4iCisgICAg c2V0IGdvdCBbcmVtb3RlX2V4ZWMgaG9zdCAiJHByMjU3NDlfYmluIl0KKyAgICBpZiB7IFtsaW5k ZXggJGdvdCAwXSAhPSAwIHx8ICFbc3RyaW5nIG1hdGNoICIiIFtsaW5kZXggJGdvdCAxXV0gfSB0 aGVuIHsKKwlzZW5kX2xvZyAiJGdvdFxuIgorCWZhaWwgIkNvbnZlcnQgJHNyY2ZpbGVhIHRvICRv dXRwdXRfdGFyZ2V0IgorCXJldHVybgorICAgIH0KKworICAgIGlmIHsiJGxkZXJyb3IiID09ICIi fSB7CisJcnVuX2NjX2xpbmtfdGVzdHMgW2xpc3QgXAorCSAgICBbbGlzdCBcCisJCSJCdWlsZCAk dGVzdG5hbWUgKCRsZGZsYWdzICRjZmxhZ3MpIiBcCisJCSIkbGRmbGFncyB0bXBkaXIvcHIyNTc0 OS1iaW4ubyIgXAorCQkiJGNmbGFncyIgXAorCQlbbGlzdCAkc3JjZmlsZWEgJHNyY2ZpbGViXVwK KwkJe3tyZWFkZWxmIHstV3J9IHByMjU3NDkucmR9fSAgXAorCQkiJHt0ZXN0bmFtZX1hIiBcCisJ ICAgIF0gXAorCV0KKwlydW5fbGRfbGlua19leGVjX3Rlc3RzIFtsaXN0IFwKKwkgICAgW2xpc3Qg XAorCQkiUnVuICR7dGVzdG5hbWV9YSAoJGxkZmxhZ3MgJGNmbGFncykiIFwKKwkJIiRsZGZsYWdz IHRtcGRpci9wcjI1NzQ5LWJpbi5vIiBcCisJCSIiIFwKKwkJW2xpc3QgJHNyY2ZpbGVhICRzcmNm aWxlYl1cCisJCSIke3Rlc3RuYW1lfWEiIFwKKwkJInBhc3Mub3V0IiBcCisJCSIkY2ZsYWdzIiBc CisJICAgIF0gXAorCV0KKyAgICB9IGVsc2UgeworCXJ1bl9jY19saW5rX3Rlc3RzIFtsaXN0IFwK KwkgICAgW2xpc3QgXAorCQkiQnVpbGQgJHRlc3RuYW1lICgkbGRmbGFncyAkY2ZsYWdzKSIgXAor CQkiJGxkZmxhZ3MgdG1wZGlyL3ByMjU3NDktYmluLm8iIFwKKwkJIiRjZmxhZ3MiIFwKKwkJW2xp c3QgJHNyY2ZpbGVhICRzcmNmaWxlYl1cCisJCVtsaXN0IFtsaXN0IGVycm9yX291dHB1dCAkbGRl cnJvcl1dIFwKKwkJIiR0ZXN0bmFtZSIgXAorCSAgICBdIFwKKwldCisgICAgfQorfQorCitjaGVj a19wcjI1NzQ5YSAicHIyNTc0OS0xYSIgInByMjU3NDktMS5jIiAicHIyNTc0OS0xYS5jIiAiJE5P UElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDkt MWEiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWEuYyIgIi1mUElFIiAiLXBpZSIgIiIKK2NoZWNr X3ByMjU3NDlhICJwcjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFiLmMiICIkTk9Q SUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitpZiB7IFtpc3RhcmdldCAiaT84Ni0qLWxp bnV4KiJdIH0geworICAgIGNoZWNrX3ByMjU3NDlhICJwcjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMi ICJwcjI1NzQ5LTFiLmMiICItZlBJRSIgIi1waWUiICIiCit9IGVsc2UgeworICAgIGNoZWNrX3By MjU3NDlhICJwcjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFiLmMiICItZlBJRSIg Ii1waWUiICJwcjI1NzQ5LTFiLmVyciIKK30KK2NoZWNrX3ByMjU3NDlhICJwcjI1NzQ5LTFjIiAi cHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFjLmMiICItZlBJQyIgIi1zaGFyZWQiICJwcjI1NzQ5LTFi LmVyciIKK2NoZWNrX3ByMjU3NDlhICJwcjI1NzQ5LTJhIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5 LTJhLnMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5 YSAicHIyNTc0OS0yYSIgInByMjU3NDktMi5jIiAicHIyNTc0OS0yYS5zIiAiLWZQSUUiICItcGll IiAiIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMmIiICJwcjI1NzQ5LTIuYyIgInByMjU3NDkt MmIucyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDlh ICJwcjI1NzQ5LTJiIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJiLnMiICItZlBJRSIgIi1waWUi ICIiCitjaGVja19wcjI1NzQ5YSAicHIyNTc1NC0xYSIgInByMjU3NTQtMWEuYyIgInByMjU3NTQt MWIucyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDlh ICJwcjI1NzU0LTFiIiAicHIyNTc1NC0xYS5jIiAicHIyNTc1NC0xYi5zIiAiLWZQSUUiICIkTk9Q SUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDlhICJwcjI1NzU0LTFjIiAicHIyNTc1NC0xYS5j IiAicHIyNTc1NC0xYi5zIiAiLWZQSUMiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3 NDlhICJwcjI1NzU0LTFkIiAicHIyNTc1NC0xYS5jIiAicHIyNTc1NC0xYi5zIiAiLWZQSUMiICIt cGllIiAiIgoraWYgeyBbaXN0YXJnZXQgImk/ODYtKi1saW51eCoiXSB8fCBbaXN0YXJnZXQgIng4 Nl82NC0qLWxpbnV4Ki1nbnV4MzIiXX0geworICAgIGNoZWNrX3ByMjU3NDlhICJwcjI1NzU0LTJh IiAicHIyNTc1NC0yYS5jIiAicHIyNTc1NC0yYi5zIiAiLWZQSUMiICIkTk9QSUVfTERGTEFHUyIg IiIKKyAgICBjaGVja19wcjI1NzQ5YSAicHIyNTc1NC0yYiIgInByMjU3NTQtMmEuYyIgInByMjU3 NTQtMmIucyIgIi1mUElDIiAiLXBpZSIgIiIKK30gZWxzZSB7CisgICAgY2hlY2tfcHIyNTc0OWEg InByMjU3NTQtM2EiICJwcjI1NzU0LTNhLmMiICJwcjI1NzU0LTNiLnMiICItZlBJQyIgIiROT1BJ RV9MREZMQUdTIiAiIgorICAgIGNoZWNrX3ByMjU3NDlhICJwcjI1NzU0LTNiIiAicHIyNTc1NC0z YS5jIiAicHIyNTc1NC0zYi5zIiAiLWZQSUMiICItcGllIiAiIgorfQoraWYgeyBbaXN0YXJnZXQg Imk/ODYtKi1saW51eCoiXSB9IHsKKyAgICBjaGVja19wcjI1NzQ5YSAicHIyNTc1NC00YSIgInBy MjU3NTQtNGEuYyIgInByMjU3NTQtNGIucyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFH UyIgIiIKKyAgICBjaGVja19wcjI1NzQ5YSAicHIyNTc1NC00YiIgInByMjU3NTQtNGEuYyIgInBy MjU3NTQtNGIucyIgIi1mcGllIiAiLXBpZSIgIiIKKyAgICBjaGVja19wcjI1NzQ5YSAicHIyNTc1 NC01YSIgInByMjU3NTQtNWEuYyIgInByMjU3NTQtNWIucyIgIiROT1BJRV9DRkxBR1MiICIkTk9Q SUVfTERGTEFHUyIgIiIKKyAgICBjaGVja19wcjI1NzQ5YSAicHIyNTc1NC01YiIgInByMjU3NTQt NWEuYyIgInByMjU3NTQtNWIucyIgIi1mcGllIiAiLXBpZSIgIiIKK30gZWxzZSB7CisgICAgY2hl Y2tfcHIyNTc0OWEgInByMjU3NTQtNGEiICJwcjI1NzU0LTRhLmMiICJwcjI1NzU0LTRjLnMiICIk Tk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCisgICAgY2hlY2tfcHIyNTc0OWEgInBy MjU3NTQtNGIiICJwcjI1NzU0LTRhLmMiICJwcjI1NzU0LTRjLnMiICItZnBpZSIgIi1waWUiICIi CisgICAgY2hlY2tfcHIyNTc0OWEgInByMjU3NTQtNWEiICJwcjI1NzU0LTVhLmMiICJwcjI1NzU0 LTVjLnMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCisgICAgY2hlY2tfcHIy NTc0OWEgInByMjU3NTQtNWIiICJwcjI1NzU0LTVhLmMiICJwcjI1NzU0LTVjLnMiICItZnBpZSIg Ii1waWUiICIiCisgICAgaWYgeyAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi1saW51eCotZ251eDMyIl19 IHsKKwljaGVja19wcjI1NzQ5YSAicHIyNTc1NC02YSIgInByMjU3NTQtNmEuYyIgInByMjU3NTQt NmIucyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKKwljaGVja19wcjI1NzQ5 YSAicHIyNTc1NC02YiIgInByMjU3NTQtNmEuYyIgInByMjU3NTQtNmIucyIgIi1mcGllIiAiLXBp ZSIgIiIKKyAgICB9Cit9CisKK3Byb2MgY2hlY2tfcHIyNTc0OWIge3Rlc3RuYW1lIHNyY2ZpbGVh IHNyY2ZpbGViIGNmbGFncyBsZGZsYWdzIGRzb2xkZmxhZ3N9IHsKKyAgICBnbG9iYWwgb2JqY29w eQorICAgIGdsb2JhbCBzcmNkaXIKKyAgICBnbG9iYWwgc3ViZGlyCisKKyAgICBpZiB7IFtpc3Rh cmdldCAiaT84Ni0qLWxpbnV4KiJdIH0geworCXNldCBvdXRwdXRfYXJjaCAiaTM4NjppMzg2Igor CXNldCBvdXRwdXRfdGFyZ2V0ICJlbGYzMi1pMzg2IgorICAgIH0gZWxzZSB7CisJc2V0IG91dHB1 dF9hcmNoICJpMzg2Ong4Ni02NCIKKwlpZiB7W2lzdGFyZ2V0ICJ4ODZfNjQtKi1saW51eCotZ251 eDMyIl19IHsKKwkgICAgc2V0IG91dHB1dF90YXJnZXQgImVsZjMyLXg4Ni02NCIKKwl9IGVsc2Ug eworCSAgICBzZXQgb3V0cHV0X3RhcmdldCAiZWxmNjQteDg2LTY0IgorCX0KKyAgICB9CisKKyAg ICBleGVjIGNwICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZWEgJHNyY2ZpbGVhCisgICAgc2V0IHBy MjU3NDlfYmluICIkb2JqY29weSAtQiAkb3V0cHV0X2FyY2ggLUkgYmluYXJ5IC1PICRvdXRwdXRf dGFyZ2V0ICRzcmNmaWxlYSB0bXBkaXIvcHIyNTc0OS1iaW4ubyIKKyAgICBzZW5kX2xvZyAiJHBy MjU3NDlfYmluXG4iCisgICAgc2V0IGdvdCBbcmVtb3RlX2V4ZWMgaG9zdCAiJHByMjU3NDlfYmlu Il0KKyAgICBpZiB7IFtsaW5kZXggJGdvdCAwXSAhPSAwIHx8ICFbc3RyaW5nIG1hdGNoICIiIFts aW5kZXggJGdvdCAxXV0gfSB0aGVuIHsKKwlzZW5kX2xvZyAiJGdvdFxuIgorCWZhaWwgIkNvbnZl cnQgJHNyY2ZpbGVhIHRvICRvdXRwdXRfdGFyZ2V0IgorCXJldHVybgorICAgIH0KKworICAgIHJ1 bl9jY19saW5rX3Rlc3RzIFtsaXN0IFwKKwlbbGlzdCBcCisJICAgICJCdWlsZCBsaWIke3Rlc3Ru YW1lfS5zbyAoJGRzb2xkZmxhZ3MpIiBcCisJICAgICItc2hhcmVkICRkc29sZGZsYWdzIHRtcGRp ci9wcjI1NzQ5LWJpbi5vIiBcCisJICAgICItZlBJQyIgXAorCSAgICBbbGlzdCAkc3JjZmlsZWJd IFwKKwkgICAge3tyZWFkZWxmIHstV3J9IHByMjU3NDkucmR9fSAgXAorCSAgICAibGliJHt0ZXN0 bmFtZX0uc28iIFwKKwldIFwKKyAgICBdCisgICAgcnVuX2xkX2xpbmtfZXhlY190ZXN0cyBbbGlz dCBcCisJW2xpc3QgXAorCSAgICAiUnVuICR7dGVzdG5hbWV9YiAoJGxkZmxhZ3MgJGNmbGFncyki IFwKKwkgICAgIiRsZGZsYWdzIC1XbCwtLW5vLWFzLW5lZWRlZCB0bXBkaXIvbGliJHt0ZXN0bmFt ZX0uc28iIFwKKwkgICAgIiIgXAorCSAgICBbbGlzdCAkc3JjZmlsZWFdXAorCSAgICAiJHt0ZXN0 bmFtZX1iIiBcCisJICAgICJwYXNzLm91dCIgXAorCSAgICAiJGNmbGFncyIgXAorCV0gXAorICAg IF0KK30KKworY2hlY2tfcHIyNTc0OWIgInByMjU3NDktMWEiICJwcjI1NzQ5LTEuYyIgInByMjU3 NDktMWEuYyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3 NDliICJwcjI1NzQ5LTFhIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFhLmMiICItZlBJRSIgIi1w aWUiICIiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0xYSIgInByMjU3NDktMS5jIiAicHIyNTc0 OS0xYS5jIiAiLWZQSUUiICItcGllIiAiLVdsLC1Cc3ltYm9saWMiCitjaGVja19wcjI1NzQ5YiAi cHIyNTc0OS0xYiIgInByMjU3NDktMS5jIiAicHIyNTc0OS0xYi5jIiAiJE5PUElFX0NGTEFHUyIg IiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWIgInByMjU3NDktMWIiICJwcjI1NzQ5 LTEuYyIgInByMjU3NDktMWIuYyIgIi1mUElFIiAiLXBpZSIgIiIKK2NoZWNrX3ByMjU3NDliICJw cjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFiLmMiICItZlBJRSIgIi1waWUiICIt V2wsLUJzeW1ib2xpYyIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFkIiAicHIyNTc0OS0xLmMi ICJwcjI1NzQ5LTFkLmMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICItV2wsLWRl ZnN5bT1fYmVnaW49MCIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFkIiAicHIyNTc0OS0xLmMi ICJwcjI1NzQ5LTFkLmMiICItZlBJRSIgIi1waWUiICItV2wsLWRlZnN5bT1fYmVnaW49MCIKK2No ZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFkIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFkLmMiICIt ZlBJRSIgIi1waWUiICItV2wsLUJzeW1ib2xpYyAtV2wsLWRlZnN5bT1fYmVnaW49MCIKK2NoZWNr X3ByMjU3NDliICJwcjI1NzQ5LTJhIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJhLnMiICIkTk9Q SUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiICIiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0y YSIgInByMjU3NDktMi5jIiAicHIyNTc0OS0yYS5zIiAiLWZQSUUiICItcGllIiAiIgorY2hlY2tf cHIyNTc0OWIgInByMjU3NDktMmIiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmIucyIgIiROT1BJ RV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTJi IiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJiLnMiICItZlBJRSIgIi1waWUiICIiCmRpZmYgLS1n aXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMS5jIGIvbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjI1NzQ5LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41YjM3 YWYwOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEu YwpAQCAtMCwwICsxLDEyIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxiZmRfc3Rk aW50Lmg+CisKK2V4dGVybiBpbnRwdHJfdCBzaXplICh2b2lkKTsKKworaW50CittYWluICgpCit7 CisgIGlmIChzaXplICgpID09IDE0NykKKyAgICBwcmludGYgKCJQQVNTXG4iKTsKKyAgcmV0dXJu IDA7Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWEuYyBiL2xk L3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjc3NTYyM2I4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NDktMWEuYwpAQCAtMCwwICsxLDExIEBACisjaW5jbHVkZSA8YmZkX3N0ZGlu dC5oPgorCitleHRlcm4gdm9pZCAqX2JpbmFyeV9wcjI1NzQ5XzFfY19zdGFydDsKK2V4dGVybiB2 b2lkICpfYmluYXJ5X3ByMjU3NDlfMV9jX2VuZDsKKworaW50cHRyX3QKK3NpemUgKHZvaWQpCit7 CisgIHJldHVybiAoKGludHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19lbmQKKwkgIC0gKGlu dHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19zdGFydCk7Cit9CmRpZmYgLS1naXQgYS9sZC90 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS0xYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYwMmE0MDg3MDAK LS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuYwpAQCAt MCwwICsxLDkgQEAKKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB2b2lkICpfYmlu YXJ5X3ByMjU3NDlfMV9jX3NpemU7CisKK2ludHB0cl90CitzaXplICh2b2lkKQoreworICByZXR1 cm4gKGludHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19zaXplOworfQpkaWZmIC0tZ2l0IGEv bGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmVyciBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc0OS0xYi5lcnIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmIz ODkxNzJmMQotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0x Yi5lcnIKQEAgLTAsMCArMSwzIEBACisjLi4uCisuKjogLiogYWdhaW5zdCBhYnNvbHV0ZSBzeW1i b2wgYF9iaW5hcnlfcHIyNTc0OV8xX2Nfc2l6ZScgLiogaXMgZGlzYWxsb3dlZAorI3Bhc3MKZGlm ZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYy5jIGIvbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzQ5LTFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uZjI4NDdkN2Y2MgotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIy NTc0OS0xYy5jCkBAIC0wLDAgKzEsOSBAQAorI2luY2x1ZGUgPGJmZF9zdGRpbnQuaD4KKworZXh0 ZXJuIHZvaWQgKl9iaW5hcnlfcHIyNTc0OV8xX2Nfc2l6ZSBfX2F0dHJpYnV0ZV9fICgodmlzaWJp bGl0eSgiaGlkZGVuIikpKTsKKworaW50cHRyX3QKK3NpemUgKHZvaWQpCit7CisgIHJldHVybiAo aW50cHRyX3QpICZfYmluYXJ5X3ByMjU3NDlfMV9jX3NpemU7Cit9CmRpZmYgLS1naXQgYS9sZC90 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWQuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS0xZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjMzYjg2OWRlYjUK LS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWQuYwpAQCAt MCwwICsxLDE5IEBACisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4gdm9pZCAqX2Jp bmFyeV9wcjI1NzQ5XzFfY19zdGFydDsKK2V4dGVybiB2b2lkICpfYmluYXJ5X3ByMjU3NDlfMV9j X2VuZDsKKworaW50cHRyX3QKK3NpemUgKHZvaWQpCit7CisgIHJldHVybiAoKGludHB0cl90KSAm X2JpbmFyeV9wcjI1NzQ5XzFfY19lbmQKKwkgIC0gKGludHB0cl90KSAmX2JpbmFyeV9wcjI1NzQ5 XzFfY19zdGFydCk7Cit9CisKK2V4dGVybiB2b2lkICpfYmVnaW4gX19hdHRyaWJ1dGVfXyAoKHZp c2liaWxpdHkoImhpZGRlbiIpKSk7CisKK2ludHB0cl90CitzaXplX3AgKHZvaWQpCit7CisgIHJl dHVybiAoaW50cHRyX3QpICZfYmVnaW47Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NDktMi5jIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MjBiZWJjMTY3Ci0tLSAvZGV2L251bGwK KysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwpAQCAtMCwwICsxLDEyIEBACisj aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiBpbnRw dHJfdCBzaXplOworCitpbnQKK21haW4gKCkKK3sKKyAgaWYgKHNpemUgPT0gMTM3KQorICAgIHBy aW50ZiAoIlBBU1NcbiIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0 ZS9sZC1lbGYvcHIyNTc0OS0yYS5zIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJhLnMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGY0ODZmZTMyOQotLS0gL2Rl di9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zCkBAIC0wLDAgKzEs NiBAQAorCS5kYXRhCisJLmdsb2JsCXNpemUKKwkudHlwZQlzaXplLCAlb2JqZWN0CitzaXplOgor CS5kYy5hCV9iaW5hcnlfcHIyNTc0OV8yX2Nfc2l6ZQorCS5zaXplIHNpemUsIC4tc2l6ZQpkaWZm IC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMgYi9sZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NDktMmIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5iYTgyYzQ1MGJjCi0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzQ5LTJiLnMKQEAgLTAsMCArMSw3IEBACisJLmRhdGEKKwkuaGlkZGVuIF9iaW5hcnlfcHIyNTc0 OV8yX2Nfc2l6ZQorCS5nbG9ibAlzaXplCisJLnR5cGUJc2l6ZSwgJW9iamVjdAorc2l6ZToKKwku ZGMuYQlfYmluYXJ5X3ByMjU3NDlfMl9jX3NpemUKKwkuc2l6ZSBzaXplLCAuLXNpemUKZGlmZiAt LWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS5yZCBiL2xkL3Rlc3RzdWl0ZS9sZC1l bGYvcHIyNTc0OS5yZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mYmM2 OGJmMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LnJk CkBAIC0wLDAgKzEsNCBAQAorI2ZhaWxpZgorIy4uLgorWzAtOWEtZiBdK1JfLipfTk9ORS4qCisj Li4uCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWEuYyBiL2xkL3Rl c3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0xYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjJiMDQ4ZWMwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQt ZWxmL3ByMjU3NTQtMWEuYwpAQCAtMCwwICsxLDE5IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB1aW50cHRyX3QgYmFyOworCit1aW50cHRy X3QgKgorX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkKK2dldF9iYXIgKHZvaWQp Cit7CisgIHJldHVybiAmYmFyOworfQorCitpbnQKK21haW4gKCkKK3sKKyAgaWYgKCh1aW50cHRy X3QpIGdldF9iYXIgKCkgPT0gNDIpCisgICAgcHJpbnRmICgiUEFTU1xuIik7CisgIHJldHVybiAw OworfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTFiLnMgYi9sZC90 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMWIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi45OWQ1ODVkNmI1Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xk LWVsZi9wcjI1NzU0LTFiLnMKQEAgLTAsMCArMSwzIEBACisJLmRhdGEKKwkuZ2xvYmFsIGJhcgor CWJhciA9IDQyCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmEuYyBi L2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC0yYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjdjOWY1ODExNmUKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NTQtMmEuYwpAQCAtMCwwICsxLDIwIEBACisjaW5jbHVkZSA8c3RkaW8u aD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB1aW50cHRyX3QgYmFyOworCit1 aW50cHRyX3QgKgorX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkKK2dldF9iYXIg KHZvaWQpCit7CisgIHJldHVybiAmYmFyOworfQorCitpbnQKK21haW4gKCkKK3sKKyAgaWYgKCh1 aW50cHRyX3QpIGdldF9iYXIgKCkgPT0gMHhmZmZmZmZmMFUpCisgICAgcHJpbnRmICgiUEFTU1xu Iik7CisgIHJldHVybiAwOworfQorI2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9sZC90 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmIucyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1 NC0yYi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjljYWI5OTMwM2UK LS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtMmIucwpAQCAt MCwwICsxLDMgQEAKKwkuZGF0YQorCS5nbG9iYWwgYmFyCisJYmFyID0gMHhmZmZmZmZmMApkaWZm IC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTNhLmMgYi9sZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NTQtM2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4yZDRmMDJhYmU1Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzU0LTNhLmMKQEAgLTAsMCArMSwxOSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8 YmZkX3N0ZGludC5oPgorCitleHRlcm4gdWludHB0cl90IGJhcjsKKwordWludHB0cl90ICoKK19f YXR0cmlidXRlX18gKChub2lubGluZSwgbm9jbG9uZSkpCitnZXRfYmFyICh2b2lkKQoreworICBy ZXR1cm4gJmJhcjsKK30KKworaW50CittYWluICgpCit7CisgIGlmICgodWludHB0cl90KSBnZXRf YmFyICgpID09IC0weDgwMDAwMDAxTEwpCisgICAgcHJpbnRmICgiUEFTU1xuIik7CisgIHJldHVy biAwOworfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTNiLnMgYi9s ZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtM2IucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi5hYWQzZTQ1ZTBmCi0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzU0LTNiLnMKQEAgLTAsMCArMSwzIEBACisJLmRhdGEKKwkuZ2xvYmFsIGJh cgorCWJhciA9IC0weDgwMDAwMDAxCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU3NTQtNGEuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC00YS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUyYzJmOGQ1NGQKLS0tIC9kZXYvbnVsbAorKysg Yi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNGEuYwpAQCAtMCwwICsxLDEyIEBACisjaW5j bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB1aW50cHRy X3QgKmdldF9iYXIgKHZvaWQpOworCitpbnQKK21haW4gKCkKK3sKKyAgaWYgKCh1aW50cHRyX3Qp IGdldF9iYXIgKCkgPT0gMHg3ZmZmZmZmZlVMTCkKKyAgICBwcmludGYgKCJQQVNTXG4iKTsKKyAg cmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNGIu cyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC00Yi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjQ0ODQwNmRmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NTQtNGIucwpAQCAtMCwwICsxLDIzIEBACisJLnRleHQKKwkucDJh bGlnbiA0CisJLmdsb2JsCWdldF9iYXIKKwkudHlwZQlnZXRfYmFyLCBAZnVuY3Rpb24KK2dldF9i YXI6CisJLmNmaV9zdGFydHByb2MKKwljYWxsCV9feDg2LmdldF9wY190aHVuay5heAorCWFkZGwJ JF9HTE9CQUxfT0ZGU0VUX1RBQkxFXywgJWVheAorCW1vdmwJYmFyQEdPVCglZWF4KSwgJWVheAor CXJldAorCS5jZmlfZW5kcHJvYworCS5zaXplCWdldF9iYXIsIC4tZ2V0X2JhcgorCWJhciA9IDB4 N2ZmZmZmZmYKKwkuc2VjdGlvbgkudGV4dC5fX3g4Ni5nZXRfcGNfdGh1bmsuYXgsImF4RyIsQHBy b2diaXRzLF9feDg2LmdldF9wY190aHVuay5heCxjb21kYXQKKwkuZ2xvYmwJX194ODYuZ2V0X3Bj X3RodW5rLmF4CisJLmhpZGRlbglfX3g4Ni5nZXRfcGNfdGh1bmsuYXgKKwkudHlwZQlfX3g4Ni5n ZXRfcGNfdGh1bmsuYXgsIEBmdW5jdGlvbgorX194ODYuZ2V0X3BjX3RodW5rLmF4OgorCS5jZmlf c3RhcnRwcm9jCisJbW92bAkoJWVzcCksICVlYXgKKwlyZXQKKwkuY2ZpX2VuZHByb2MKKwkuc2Vj dGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCmRpZmYgLS1naXQgYS9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NTQtNGMucyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC00Yy5z Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmRlNDUwZmUwODEKLS0tIC9k ZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNGMucwpAQCAtMCwwICsx LDEyIEBACisJLnRleHQKKwkucDJhbGlnbiA0CisJLmdsb2JsCWdldF9iYXIKKwkudHlwZQlnZXRf YmFyLCBAZnVuY3Rpb24KK2dldF9iYXI6CisJLmNmaV9zdGFydHByb2MKKwltb3ZxCWJhckBHT1RQ Q1JFTCglcmlwKSwgJXJheAorCXJldAorCS5jZmlfZW5kcHJvYworCS5zaXplCWdldF9iYXIsIC4t Z2V0X2JhcgorCWJhciA9IDB4N2ZmZmZmZmYKKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIs QHByb2diaXRzCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNWEuYyBi L2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC01YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmNiNzkxZGQ1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NTQtNWEuYwpAQCAtMCwwICsxLDEyIEBACisjaW5jbHVkZSA8c3RkaW8u aD4KKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB1aW50cHRyX3QgKmdldF9iYXIg KHZvaWQpOworCitpbnQKK21haW4gKCkKK3sKKyAgaWYgKCh1aW50cHRyX3QpIGdldF9iYXIgKCkg PT0gMHhmZmZmZmZmMFVMTCkKKyAgICBwcmludGYgKCJQQVNTXG4iKTsKKyAgcmV0dXJuIDA7Cit9 CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNWIucyBiL2xkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc1NC01Yi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjI5MjNjMzJlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NTQtNWIucwpAQCAtMCwwICsxLDIzIEBACisJLnRleHQKKwkucDJhbGlnbiA0CisJLmds b2JsCWdldF9iYXIKKwkudHlwZQlnZXRfYmFyLCBAZnVuY3Rpb24KK2dldF9iYXI6CisJLmNmaV9z dGFydHByb2MKKwljYWxsCV9feDg2LmdldF9wY190aHVuay5heAorCWFkZGwJJF9HTE9CQUxfT0ZG U0VUX1RBQkxFXywgJWVheAorCW1vdmwJYmFyQEdPVCglZWF4KSwgJWVheAorCXJldAorCS5jZmlf ZW5kcHJvYworCS5zaXplCWdldF9iYXIsIC4tZ2V0X2JhcgorCWJhciA9IDB4ZmZmZmZmZjAKKwku c2VjdGlvbgkudGV4dC5fX3g4Ni5nZXRfcGNfdGh1bmsuYXgsImF4RyIsQHByb2diaXRzLF9feDg2 LmdldF9wY190aHVuay5heCxjb21kYXQKKwkuZ2xvYmwJX194ODYuZ2V0X3BjX3RodW5rLmF4CisJ LmhpZGRlbglfX3g4Ni5nZXRfcGNfdGh1bmsuYXgKKwkudHlwZQlfX3g4Ni5nZXRfcGNfdGh1bmsu YXgsIEBmdW5jdGlvbgorX194ODYuZ2V0X3BjX3RodW5rLmF4OgorCS5jZmlfc3RhcnRwcm9jCisJ bW92bAkoJWVzcCksICVlYXgKKwlyZXQKKwkuY2ZpX2VuZHByb2MKKwkuc2VjdGlvbgkubm90ZS5H TlUtc3RhY2ssIiIsQHByb2diaXRzCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU3NTQtNWMucyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc1NC01Yy5zCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAxOTVmMTkxNjUKLS0tIC9kZXYvbnVsbAorKysg Yi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNWMucwpAQCAtMCwwICsxLDEyIEBACisJLnRl eHQKKwkucDJhbGlnbiA0CisJLmdsb2JsCWdldF9iYXIKKwkudHlwZQlnZXRfYmFyLCBAZnVuY3Rp b24KK2dldF9iYXI6CisJLmNmaV9zdGFydHByb2MKKwltb3ZxCWJhckBHT1RQQ1JFTCglcmlwKSwg JXJheAorCXJldAorCS5jZmlfZW5kcHJvYworCS5zaXplCWdldF9iYXIsIC4tZ2V0X2JhcgorCWJh ciA9IDB4ZmZmZmZmZjAKKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCmRp ZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NTQtNmEuYyBiL2xkL3Rlc3RzdWl0 ZS9sZC1lbGYvcHIyNTc1NC02YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjU5NjMzYTNiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU3NTQtNmEuYwpAQCAtMCwwICsxLDEyIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl IDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB1aW50cHRyX3QgKmdldF9iYXIgKHZvaWQpOworCitp bnQKK21haW4gKCkKK3sKKyAgaWYgKCh1aW50cHRyX3QpIGdldF9iYXIgKCkgPT0gMHhmZmZmZmZm ZmZmZmZmZjBVTEwpCisgICAgcHJpbnRmICgiUEFTU1xuIik7CisgIHJldHVybiAwOworfQpkaWZm IC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzU0LTZiLnMgYi9sZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NTQtNmIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4yNTMyNDgwZTVmCi0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1 NzU0LTZiLnMKQEAgLTAsMCArMSwxMiBAQAorCS50ZXh0CisJLnAyYWxpZ24gNAorCS5nbG9ibAln ZXRfYmFyCisJLnR5cGUJZ2V0X2JhciwgQGZ1bmN0aW9uCitnZXRfYmFyOgorCS5jZmlfc3RhcnRw cm9jCisJbW92cQliYXJAR09UUENSRUwoJXJpcCksICVyYXgKKwlyZXQKKwkuY2ZpX2VuZHByb2MK Kwkuc2l6ZQlnZXRfYmFyLCAuLWdldF9iYXIKKwliYXIgPSAweGZmZmZmZmZmZmZmZmZmMAorCS5z ZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKZGlmZiAtLWdpdCBhL2xkL3Rlc3Rz dWl0ZS9sZC14ODYtNjQvcHIxOTYwOS02YS5kIGIvbGQvdGVzdHN1aXRlL2xkLXg4Ni02NC9wcjE5 NjA5LTZhLmQKaW5kZXggM2MwMTFkOWIwNS4uYjM0MDI4N2Y0OCAxMDA2NDQKLS0tIGEvbGQvdGVz dHN1aXRlL2xkLXg4Ni02NC9wcjE5NjA5LTZhLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXg4Ni02 NC9wcjE5NjA5LTZhLmQKQEAgLTEsNCArMSwxMyBAQAogI3NvdXJjZTogcHIxOTYwOS02LnMKICNh czogLS02NCAtbXJlbGF4LXJlbG9jYXRpb25zPXllcwogI2xkOiAtbWVsZl94ODZfNjQgLS1kZWZz eW0gZm9vYmFyPTB4ODAwMDAwMDAKLSNlcnJvcjogZmFpbGVkIHRvIGNvbnZlcnQgR09UUENSRUwg cmVsb2NhdGlvbjsgcmVsaW5rIHdpdGggLS1uby1yZWxheAorI29iamR1bXA6IC1kdworCisuKjog K2ZpbGUgZm9ybWF0IC4qCisKKworRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAudGV4dDoKKworW2Et ZjAtOV0rIDxfc3RhcnQ+OgorWyAJXSpbYS1mMC05XSs6CTQ4IDhiIDA1IChbMC05YS1mXXsyfSAp ezR9ICoJbW92ICAgIDB4W2EtZjAtOV0rXCglcmlwXCksJXJheCAgICAgICAgIyBbYS1mMC05XSsg PC5nb3Q+CisjcGFzcwotLSAKMi4yNS4xCgo= --00000000000063f45e05a24160b3--