From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x142.google.com (mail-il1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) by sourceware.org (Postfix) with ESMTPS id 060AE388A816 for ; Mon, 18 May 2020 13:51:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 060AE388A816 Received: by mail-il1-x142.google.com with SMTP id 17so9891687ilj.3 for ; Mon, 18 May 2020 06:51:31 -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=M6IkMFc5R2qRNQfSMLqRrFQAppHU4wlosRDWIPJ3Dus=; b=rVFfenM6Oxxjwu+X31EErVDDH5fWD/Tuaqm3v2NYOpzAS5tJKb+pJtm0FJzSTufjai h1C7X271TKZbDo7z45Sr7UVVme/raIhO+XHZ3vmmUZHfdypxQz1G368tGAgpW0Tk8QcZ 6mHDhMTmHjRCeJ6M2vuTHzYDoYXIYLwDKFIzyIYEYAcBCTwzTZth+k3RtP+NslT7Q05B G9/Iw7b/y87070eGG3DW3GV4cAh0O31Hml+sQuikt550TurL4mdsolOX4WLJcevMaxur Dr1FXDLfUUUHnkAtP7Cs4XFlMcrxJjiB1hZPKho6CqpgMNf+SZaQTnzjjkoGlfPC7r0z O8DQ== X-Gm-Message-State: AOAM5302n6sIeO5CalApMe0wGsejnG2oAuQxpTB6Ag2NI5hKVSusD7Oo 02QLmkQthXs1ayFCedOIKbcrO+uYna2MJJfp9sQ= X-Google-Smtp-Source: ABdhPJzs7vtcZ2JudmblwqEby2M2mKaMm0p9KnN42NKWkk/THgHywiRnprfwsmQSggGFAYVx+mn3Wz8SSIa8meWPorM= X-Received: by 2002:a92:d591:: with SMTP id a17mr17149397iln.13.1589809890389; Mon, 18 May 2020 06:51:30 -0700 (PDT) MIME-Version: 1.0 References: <20200428215243.236312-1-hjl.tools@gmail.com> <87ees6ggvk.fsf@mid.deneb.enyo.de> <616cfb77-3aa3-fcbb-dacf-a0abbec9393e@linaro.org> In-Reply-To: <616cfb77-3aa3-fcbb-dacf-a0abbec9393e@linaro.org> From: "H.J. Lu" Date: Mon, 18 May 2020 06:50:54 -0700 Message-ID: Subject: V2 [PATCH] x86: Add --enable-cet=permissive To: Adhemerval Zanella Cc: Florian Weimer , Adhemerval Zanella via Libc-alpha Content-Type: multipart/mixed; boundary="000000000000c710a805a5ec75f5" X-Spam-Status: No, score=-10.3 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 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 May 2020 13:51:36 -0000 --000000000000c710a805a5ec75f5 Content-Type: text/plain; charset="UTF-8" On Wed, Apr 29, 2020 at 2:58 PM Adhemerval Zanella via Libc-alpha wrote: > > > > On 29/04/2020 17:46, Florian Weimer wrote: > > * Adhemerval Zanella via Libc-alpha: > > > >> On 28/04/2020 18:52, H.J. Lu via Libc-alpha wrote: > >>> When CET is enabled, it is an error to dlopen a non CET enabled shared > >>> library in CET enabled application. It may be desirable to make CET > >>> permissive, that is disable CET when dlopening a non CET enabled shared > >>> library. With the new --enable-cet=permissive configure option, CET is > >>> disabled when dlopening a non CET enabled shared library. > >> > >> Does not CET already provide a tunable to make it permissive? If the idea > >> is to enable as de-facto for a distro bootstrap, why not make it default > >> then? > > > > We currently do not have a way to set a tunable for SUID binaries. > > > > This means that it would be necessary to disable CET at the kernel or > > hypervisor level if the system depends on pre-CET NSS or PAM modules > > for its operation (or something else which is ultimately > > dlopen-based). > > Doesn't disable CET on some modules defeat the very security effort? If so, > why should it be a build option on glibc? I consider it as a transitional build option for OSVs. OSV should use it only as the last resort. I expect we will remove this option a few years from now when all major pieces of OS are CET enabled. Here is the updated patch against today's master. Thanks. -- H.J. --000000000000c710a805a5ec75f5 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-x86-Add-enable-cet-permissive.patch" Content-Disposition: attachment; filename="0001-x86-Add-enable-cet-permissive.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kacjl7er0 RnJvbSAwM2YyOGNlNjZkODU0NTVhMzI4NjgxYmJkMjVhMzNhMjA5NzdlOTg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMjcgQXByIDIwMjAgMTU6NDQ6MDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IEFk ZCAtLWVuYWJsZS1jZXQ9cGVybWlzc2l2ZQoKV2hlbiBDRVQgaXMgZW5hYmxlZCwgaXQgaXMgYW4g ZXJyb3IgdG8gZGxvcGVuIGEgbm9uIENFVCBlbmFibGVkIHNoYXJlZApsaWJyYXJ5IGluIENFVCBl bmFibGVkIGFwcGxpY2F0aW9uLiAgSXQgbWF5IGJlIGRlc2lyYWJsZSB0byBtYWtlIENFVApwZXJt aXNzaXZlLCB0aGF0IGlzIGRpc2FibGUgQ0VUIHdoZW4gZGxvcGVuaW5nIGEgbm9uIENFVCBlbmFi bGVkIHNoYXJlZApsaWJyYXJ5LiAgV2l0aCB0aGUgbmV3IC0tZW5hYmxlLWNldD1wZXJtaXNzaXZl IGNvbmZpZ3VyZSBvcHRpb24sIENFVCBpcwpkaXNhYmxlZCB3aGVuIGRsb3BlbmluZyBhIG5vbiBD RVQgZW5hYmxlZCBzaGFyZWQgbGlicmFyeS4KCkFkZCBERUZBVUxUX0RMX1g4Nl9DRVRfQ09OVFJP TCB0byBjb25maWcuaC5pbjoKCiAvKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB4ODYgQ0VUIGNvbnRy b2wuICAqLwogI2RlZmluZSBERUZBVUxUX0RMX1g4Nl9DRVRfQ09OVFJPTCBjZXRfZWxmX3Byb3Bl cnR5Cgp3aGljaCBlbmFibGUgQ0VUIGZlYXR1cmVzIGJhc2VkIG9uIEVMRiBwcm9wZXJ0eSBub3Rl LgoKLS1lbmFibGUtY2V0PXBlcm1pc3NpdmUgaXQgdG8KCiAvKiBUaGUgZGVmYXVsdCB2YWx1ZSBv ZiB4ODYgQ0VUIGNvbnRyb2wuICAqLwogI2RlZmluZSBERUZBVUxUX0RMX1g4Nl9DRVRfQ09OVFJP TCBjZXRfcGVybWlzc2l2ZQoKd2hpY2ggZW5hYmxlIENFVCBmZWF0dXJlcyBwZXJtaXNzaXZlbHku CgpVcGRhdGUgdHN0LWNldC1sZWdhY3ktNWEsIHRzdC1jZXQtbGVnYWN5LTViLCB0c3QtY2V0LWxl Z2FjeS02YSBhbmQKdHN0LWNldC1sZWdhY3ktNmIgdG8gY2hlY2sgLS1lbmFibGUtY2V0IGFuZCAt LWVuYWJsZS1jZXQ9cGVybWlzc2l2ZS4KLS0tCiBJTlNUQUxMICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAyNiArKysrKysrKysrKysrKystLS0tLS0tLS0tLQogY29uZmlnLmguaW4gICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBtYW51YWwvaW5zdGFsbC50ZXhpICAgICAg ICAgICAgICAgICAgfCAxMiArKysrKysrKy0tLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4 Ni9NYWtlZmlsZSB8ICAyICstCiBzeXNkZXBzL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAg fCAxOCArKysrKysrKysrKysrLS0tLS0KIHN5c2RlcHMveDg2L2NvbmZpZ3VyZSAgICAgICAgICAg ICAgICB8IDIxICsrKysrKysrKysrLS0tLS0tLS0tLQogc3lzZGVwcy94ODYvY29uZmlndXJlLmFj ICAgICAgICAgICAgIHwgMTkgKysrKysrKysrLS0tLS0tLS0tLQogc3lzZGVwcy94ODYvZGwtcHJv Y3J1bnRpbWUuYyAgICAgICAgIHwgIDQgKystLQogc3lzZGVwcy94ODYvdHN0LWNldC1sZWdhY3kt NS5jICAgICAgIHwgMjUgKysrKysrKysrKysrKysrKystLS0tLS0tLQogc3lzZGVwcy94ODYvdHN0 LWNldC1sZWdhY3ktNi5jICAgICAgIHwgMjUgKysrKysrKysrKysrKysrKystLS0tLS0tLQogMTAg ZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKaW5kZXggYjc2NzZkMWM5Zi4uNjJlNzg3MjVmNSAxMDA2 NDQKLS0tIGEvSU5TVEFMTAorKysgYi9JTlNUQUxMCkBAIC0xMjMsMjAgKzEyMywyNCBAQCBpZiAn Q0ZMQUdTJyBpcyBzcGVjaWZpZWQgaXQgbXVzdCBlbmFibGUgb3B0aW1pemF0aW9uLiAgRm9yIGV4 YW1wbGU6CiAgICAgIGV4ZWN1dGFibGVzIChQSUUpIGJ5IGRlZmF1bHQuCiAKICctLWVuYWJsZS1j ZXQnCisnLS1lbmFibGUtY2V0PXBlcm1pc3NpdmUnCiAgICAgIEVuYWJsZSBJbnRlbCBDb250cm9s LWZsb3cgRW5mb3JjZW1lbnQgVGVjaG5vbG9neSAoQ0VUKSBzdXBwb3J0LgotICAgICBXaGVuIHRo ZSBHTlUgQyBMaWJyYXJ5IGlzIGJ1aWx0IHdpdGggJy0tZW5hYmxlLWNldCcsIHRoZSByZXN1bHRp bmcKLSAgICAgbGlicmFyeSBpcyBwcm90ZWN0ZWQgd2l0aCBpbmRpcmVjdCBicmFuY2ggdHJhY2tp bmcgKElCVCkgYW5kIHNoYWRvdwotICAgICBzdGFjayAoU0hTVEspLiAgV2hlbiBDRVQgaXMgZW5h YmxlZCwgdGhlIEdOVSBDIExpYnJhcnkgaXMKLSAgICAgY29tcGF0aWJsZSB3aXRoIGFsbCBleGlz dGluZyBleGVjdXRhYmxlcyBhbmQgc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgVGhpcyBmZWF0dXJl IGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gaTM4NiwgeDg2XzY0IGFuZCB4MzIgd2l0aAotICAg ICBHQ0MgOCBhbmQgYmludXRpbHMgMi4yOSBvciBsYXRlci4gIE5vdGUgdGhhdCB3aGVuIENFVCBp cyBlbmFibGVkLAotICAgICB0aGUgR05VIEMgTGlicmFyeSByZXF1aXJlcyBDUFVzIGNhcGFibGUg b2YgbXVsdGktYnl0ZSBOT1BzLCBsaWtlCi0gICAgIHg4Ni02NCBwcm9jZXNzb3JzIGFzIHdlbGwg YXMgSW50ZWwgUGVudGl1bSBQcm8gb3IgbmV3ZXIuCisgICAgIFdoZW4gdGhlIEdOVSBDIExpYnJh cnkgaXMgYnVpbHQgd2l0aCAnLS1lbmFibGUtY2V0JyBvcgorICAgICAnLS1lbmFibGUtY2V0PXBl cm1pc3NpdmUnLCB0aGUgcmVzdWx0aW5nIGxpYnJhcnkgaXMgcHJvdGVjdGVkIHdpdGgKKyAgICAg aW5kaXJlY3QgYnJhbmNoIHRyYWNraW5nIChJQlQpIGFuZCBzaGFkb3cgc3RhY2sgKFNIU1RLKS4g IFdoZW4gQ0VUCisgICAgIGlzIGVuYWJsZWQsIHRoZSBHTlUgQyBMaWJyYXJ5IGlzIGNvbXBhdGli bGUgd2l0aCBhbGwgZXhpc3RpbmcKKyAgICAgZXhlY3V0YWJsZXMgYW5kIHNoYXJlZCBsaWJyYXJp ZXMuICBUaGlzIGZlYXR1cmUgaXMgY3VycmVudGx5CisgICAgIHN1cHBvcnRlZCBvbiBpMzg2LCB4 ODZfNjQgYW5kIHgzMiB3aXRoIEdDQyA4IGFuZCBiaW51dGlscyAyLjI5IG9yCisgICAgIGxhdGVy LiAgTm90ZSB0aGF0IHdoZW4gQ0VUIGlzIGVuYWJsZWQsIHRoZSBHTlUgQyBMaWJyYXJ5IHJlcXVp cmVzCisgICAgIENQVXMgY2FwYWJsZSBvZiBtdWx0aS1ieXRlIE5PUHMsIGxpa2UgeDg2LTY0IHBy b2Nlc3NvcnMgYXMgd2VsbCBhcworICAgICBJbnRlbCBQZW50aXVtIFBybyBvciBuZXdlci4gIFdp dGggJy0tZW5hYmxlLWNldCcsIGl0IGlzIGFuIGVycm9yIHRvCisgICAgIGRsb3BlbiBhIG5vbiBD RVQgZW5hYmxlZCBzaGFyZWQgbGlicmFyeSBpbiBDRVQgZW5hYmxlZCBhcHBsaWNhdGlvbi4KKyAg ICAgV2l0aCAnLS1lbmFibGUtY2V0PXBlcm1pc3NpdmUnLCBDRVQgaXMgZGlzYWJsZWQgd2hlbiBk bG9wZW5pbmcgYQorICAgICBub24gQ0VUIGVuYWJsZWQgc2hhcmVkIGxpYnJhcnkgaW4gQ0VUIGVu YWJsZWQgYXBwbGljYXRpb24uCiAKICAgICAgTk9URTogJy0tZW5hYmxlLWNldCcgaGFzIGJlZW4g dGVzdGVkIGZvciBpNjg2LCB4ODZfNjQgYW5kIHgzMiBvbgotICAgICBub24tQ0VUIHByb2Nlc3Nv cnMuICAnLS1lbmFibGUtY2V0JyBoYXMgYmVlbiB0ZXN0ZWQgZm9yIHg4Nl82NCBhbmQKLSAgICAg eDMyIG9uIENFVCBTRFZzLCBidXQgSW50ZWwgQ0VUIHN1cHBvcnQgaGFzbid0IGJlZW4gdmFsaWRh dGVkIGZvcgotICAgICBpNjg2LgorICAgICBub24tQ0VUIHByb2Nlc3NvcnMuICAnLS1lbmFibGUt Y2V0JyBoYXMgYmVlbiB0ZXN0ZWQgZm9yIGk2ODYsCisgICAgIHg4Nl82NCBhbmQgeDMyIG9uIENF VCBwcm9jZXNzb3JzLgogCiAnLS1kaXNhYmxlLXByb2ZpbGUnCiAgICAgIERvbid0IGJ1aWxkIGxp YnJhcmllcyB3aXRoIHByb2ZpbGluZyBpbmZvcm1hdGlvbi4gIFlvdSBtYXkgd2FudCB0bwpkaWZm IC0tZ2l0IGEvY29uZmlnLmguaW4gYi9jb25maWcuaC5pbgppbmRleCBkZWE0M2RmNDM4Li5hNjNi MWNjOTM5IDEwMDY0NAotLS0gYS9jb25maWcuaC5pbgorKysgYi9jb25maWcuaC5pbgpAQCAtMjYy LDQgKzI2Miw3IEBACiAgICBpbiBpMzg2IDYgYXJndW1lbnQgc3lzY2FsbCBpc3N1ZSkuICAqLwog I2RlZmluZSBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAgMAogCisvKiBUaGUgZGVmYXVsdCB2YWx1 ZSBvZiB4ODYgQ0VUIGNvbnRyb2wuICAqLworI2RlZmluZSBERUZBVUxUX0RMX1g4Nl9DRVRfQ09O VFJPTCBjZXRfZWxmX3Byb3BlcnR5CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWFudWFsL2luc3Rh bGwudGV4aSBiL21hbnVhbC9pbnN0YWxsLnRleGkKaW5kZXggZjZkOWQ5MjMxNy4uYzFlNDlhOTRm ZSAxMDA2NDQKLS0tIGEvbWFudWFsL2luc3RhbGwudGV4aQorKysgYi9tYW51YWwvaW5zdGFsbC50 ZXhpCkBAIC0xNTIsMjAgKzE1MiwyNCBAQCBQSUUuICBUaGlzIG9wdGlvbiBhbHNvIGltcGxpZXMg dGhhdCBnbGliYyBwcm9ncmFtcyBhbmQgdGVzdHMgYXJlIGNyZWF0ZWQKIGFzIGR5bmFtaWMgcG9z aXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZXMgKFBJRSkgYnkgZGVmYXVsdC4KIAogQGl0ZW0g LS1lbmFibGUtY2V0CitAaXRlbXggLS1lbmFibGUtY2V0PXBlcm1pc3NpdmUKIEVuYWJsZSBJbnRl bCBDb250cm9sLWZsb3cgRW5mb3JjZW1lbnQgVGVjaG5vbG9neSAoQ0VUKSBzdXBwb3J0LiAgV2hl bgotQHRoZWdsaWJje30gaXMgYnVpbHQgd2l0aCBAb3B0aW9uey0tZW5hYmxlLWNldH0sIHRoZSBy ZXN1bHRpbmcgbGlicmFyeQorQHRoZWdsaWJje30gaXMgYnVpbHQgd2l0aCBAb3B0aW9uey0tZW5h YmxlLWNldH0gb3IKK0BvcHRpb257LS1lbmFibGUtY2V0PXBlcm1pc3NpdmV9LCB0aGUgcmVzdWx0 aW5nIGxpYnJhcnkKIGlzIHByb3RlY3RlZCB3aXRoIGluZGlyZWN0IGJyYW5jaCB0cmFja2luZyAo SUJUKSBhbmQgc2hhZG93IHN0YWNrCiAoU0hTVEspQC4gIFdoZW4gQ0VUIGlzIGVuYWJsZWQsIEB0 aGVnbGliY3t9IGlzIGNvbXBhdGlibGUgd2l0aCBhbGwKIGV4aXN0aW5nIGV4ZWN1dGFibGVzIGFu ZCBzaGFyZWQgbGlicmFyaWVzLiAgVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseQogc3VwcG9ydGVk IG9uIGkzODYsIHg4Nl82NCBhbmQgeDMyIHdpdGggR0NDIDggYW5kIGJpbnV0aWxzIDIuMjkgb3Ig bGF0ZXIuCiBOb3RlIHRoYXQgd2hlbiBDRVQgaXMgZW5hYmxlZCwgQHRoZWdsaWJje30gcmVxdWly ZXMgQ1BVcyBjYXBhYmxlIG9mCiBtdWx0aS1ieXRlIE5PUHMsIGxpa2UgeDg2LTY0IHByb2Nlc3Nv cnMgYXMgd2VsbCBhcyBJbnRlbCBQZW50aXVtIFBybyBvcgotbmV3ZXIuCituZXdlci4gIFdpdGgg QG9wdGlvbnstLWVuYWJsZS1jZXR9LCBpdCBpcyBhbiBlcnJvciB0byBkbG9wZW4gYSBub24gQ0VU CitlbmFibGVkIHNoYXJlZCBsaWJyYXJ5IGluIENFVCBlbmFibGVkIGFwcGxpY2F0aW9uLiAgV2l0 aAorQG9wdGlvbnstLWVuYWJsZS1jZXQ9cGVybWlzc2l2ZX0sIENFVCBpcyBkaXNhYmxlZCB3aGVu IGRsb3BlbmluZyBhCitub24gQ0VUIGVuYWJsZWQgc2hhcmVkIGxpYnJhcnkgaW4gQ0VUIGVuYWJs ZWQgYXBwbGljYXRpb24uCiAKIE5PVEU6IEBvcHRpb257LS1lbmFibGUtY2V0fSBoYXMgYmVlbiB0 ZXN0ZWQgZm9yIGk2ODYsIHg4Nl82NCBhbmQgeDMyCiBvbiBub24tQ0VUIHByb2Nlc3NvcnMuICBA b3B0aW9uey0tZW5hYmxlLWNldH0gaGFzIGJlZW4gdGVzdGVkIGZvcgoteDg2XzY0IGFuZCB4MzIg b24gQ0VUIFNEVnMsIGJ1dCBJbnRlbCBDRVQgc3VwcG9ydCBoYXNuJ3QgYmVlbiB2YWxpZGF0ZWQK LWZvciBpNjg2LgoraTY4NiwgeDg2XzY0IGFuZCB4MzIgb24gQ0VUIHByb2Nlc3NvcnMuCiAKIEBp dGVtIC0tZGlzYWJsZS1wcm9maWxlCiBEb24ndCBidWlsZCBsaWJyYXJpZXMgd2l0aCBwcm9maWxp bmcgaW5mb3JtYXRpb24uICBZb3UgbWF5IHdhbnQgdG8gdXNlCmRpZmYgLS1naXQgYS9zeXNkZXBz L3VuaXgvc3lzdi9saW51eC94ODYvTWFrZWZpbGUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94 ODYvTWFrZWZpbGUKaW5kZXggYjIzYjUzMjU5MC4uNTBmZDAxOGZhMyAxMDA2NDQKLS0tIGEvc3lz ZGVwcy91bml4L3N5c3YvbGludXgveDg2L01ha2VmaWxlCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3g4Ni9NYWtlZmlsZQpAQCAtMjQsNyArMjQsNyBAQCBpZmVxICgkKHN1YmRpciksc2V0 am1wKQogdGVzdHMgKz0gdHN0LXNhdmVkX21hc2stMQogZW5kaWYKIAotaWZlcSAoJChlbmFibGUt Y2V0KSx5ZXMpCitpZm5lcSAoJChlbmFibGUtY2V0KSxubykKIGlmZXEgKCQoc3ViZGlyKSxlbGYp CiB0ZXN0cyArPSB0c3QtY2V0LXByb3BlcnR5LTEgdHN0LWNldC1wcm9wZXJ0eS0yCiAKZGlmZiAt LWdpdCBhL3N5c2RlcHMveDg2L01ha2VmaWxlIGIvc3lzZGVwcy94ODYvTWFrZWZpbGUKaW5kZXgg NGZmYTY5OWU1Zi4uYmVhYjQyNmY2NyAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODYvTWFrZWZpbGUK KysrIGIvc3lzZGVwcy94ODYvTWFrZWZpbGUKQEAgLTE0LDcgKzE0LDcgQEAgZ2VuLWFzLWNvbnN0 LWhlYWRlcnMgKz0gam1wX2J1Zi1zc3Auc3ltCiBzeXNkZXBfcm91dGluZXMgKz0gX19sb25nam1w X2NhbmNlbAogZW5kaWYKIAotaWZlcSAoJChlbmFibGUtY2V0KSx5ZXMpCitpZm5lcSAoJChlbmFi bGUtY2V0KSxubykKIGlmZXEgKCQoc3ViZGlyKSxlbGYpCiBzeXNkZXAtZGwtcm91dGluZXMgKz0g ZGwtY2V0CiAKQEAgLTQyLDEzICs0MiwyMSBAQCBDRkxBR1MtdHN0LWNldC1sZWdhY3ktNC5jICs9 IC1mY2YtcHJvdGVjdGlvbj1icmFuY2gKIENGTEFHUy10c3QtY2V0LWxlZ2FjeS00YS5jICs9IC1m Y2YtcHJvdGVjdGlvbgogQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LTRiLmMgKz0gLWZjZi1wcm90ZWN0 aW9uCiBDRkxBR1MtdHN0LWNldC1sZWdhY3ktbW9kLTQuYyArPSAtZmNmLXByb3RlY3Rpb249bm9u ZQotQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LTVhLmMgKz0gLWZjZi1wcm90ZWN0aW9uCi1DRkxBR1Mt dHN0LWNldC1sZWdhY3ktNWIuYyArPSAtZmNmLXByb3RlY3Rpb24KK0NGTEFHUy10c3QtY2V0LWxl Z2FjeS01YS5jICs9IC1mY2YtcHJvdGVjdGlvbiAtbXNoc3RrCitpZmVxICgkKGVuYWJsZS1jZXQp LHBlcm1pc3NpdmUpCitDUFBGTEFHUy10c3QtY2V0LWxlZ2FjeS01YS5jICs9IC1EQ0VUX0lTX1BF Uk1JU1NJVkU9MQorZW5kaWYKK0NGTEFHUy10c3QtY2V0LWxlZ2FjeS01Yi5jICs9IC1mY2YtcHJv dGVjdGlvbiAtbXNoc3RrCitDUFBGTEFHUy10c3QtY2V0LWxlZ2FjeS01Yi5jICs9IC1EQ0VUX0RJ U0FCTEVEX0JZX0VOVj0xCiBDRkxBR1MtdHN0LWNldC1sZWdhY3ktbW9kLTVhLmMgKz0gLWZjZi1w cm90ZWN0aW9uPWJyYW5jaAogQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LW1vZC01Yi5jICs9IC1mY2Yt cHJvdGVjdGlvbgogQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LW1vZC01Yy5jICs9IC1mY2YtcHJvdGVj dGlvbgotQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LTZhLmMgKz0gLWZjZi1wcm90ZWN0aW9uCi1DRkxB R1MtdHN0LWNldC1sZWdhY3ktNmIuYyArPSAtZmNmLXByb3RlY3Rpb24KK0NGTEFHUy10c3QtY2V0 LWxlZ2FjeS02YS5jICs9IC1mY2YtcHJvdGVjdGlvbiAtbXNoc3RrCitpZmVxICgkKGVuYWJsZS1j ZXQpLHBlcm1pc3NpdmUpCitDUFBGTEFHUy10c3QtY2V0LWxlZ2FjeS02YS5jICs9IC1EQ0VUX0lT X1BFUk1JU1NJVkU9MQorZW5kaWYKK0NGTEFHUy10c3QtY2V0LWxlZ2FjeS02Yi5jICs9IC1mY2Yt cHJvdGVjdGlvbiAtbXNoc3RrCitDUFBGTEFHUy10c3QtY2V0LWxlZ2FjeS02Yi5jICs9IC1EQ0VU X0RJU0FCTEVEX0JZX0VOVj0xCiBDRkxBR1MtdHN0LWNldC1sZWdhY3ktbW9kLTZhLmMgKz0gLWZj Zi1wcm90ZWN0aW9uPWJyYW5jaAogQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LW1vZC02Yi5jICs9IC1m Y2YtcHJvdGVjdGlvbgogQ0ZMQUdTLXRzdC1jZXQtbGVnYWN5LW1vZC02Yy5jICs9IC1mY2YtcHJv dGVjdGlvbgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvY29uZmlndXJlIGIvc3lzZGVwcy94ODYv Y29uZmlndXJlCmluZGV4IGIxZmYyODEyNDkuLjgxY2M0ZTgwZDYgMTAwNjQ0Ci0tLSBhL3N5c2Rl cHMveDg2L2NvbmZpZ3VyZQorKysgYi9zeXNkZXBzL3g4Ni9jb25maWd1cmUKQEAgLTEsNyArMSw3 IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgQXV0b2Nv bmYuICBETyBOT1QgRURJVCEKICAjIExvY2FsIGNvbmZpZ3VyZSBmcmFnbWVudCBmb3Igc3lzZGVw cy94ODYuCiAKLWlmIHRlc3QgeCIkZW5hYmxlX2NldCIgPSB4eWVzOyB0aGVuCitpZiB0ZXN0ICRl bmFibGVfY2V0ICE9IG5vOyB0aGVuCiAgICMgQ2hlY2sgaWYgQ0VUIGNhbiBiZSBlbmFibGVkLgog ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo ZXIgQ0VUIGNhbiBiZSBlbmFibGVkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIg Q0VUIGNhbiBiZSBlbmFibGVkLi4uICIgPiY2OyB9CkBAIC0yNywxNyArMjcsMTEgQEAgRU9GCiBm aQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJj X2N2X3g4Nl9jZXRfYXZhaWxhYmxlIiA+JjUKICRhc19lY2hvICIkbGliY19jdl94ODZfY2V0X2F2 YWlsYWJsZSIgPiY2OyB9Ci0gIGlmIHRlc3QgJGxpYmNfY3ZfeDg2X2NldF9hdmFpbGFibGUgPSB5 ZXM7IHRoZW4KLSAgICBlbmFibGVfY2V0PXllcwotICBlbHNlCi0gICAgaWYgdGVzdCB4IiRlbmFi bGVfY2V0IiA9IHhkZWZhdWx0OyB0aGVuCi0gICAgICBlbmFibGVfY2V0PW5vCi0gICAgZWxzZQot ICAgICAgYXNfZm5fZXJyb3IgJD8gIiRDQyBkb2Vzbid0IHN1cHBvcnQgQ0VUIiAiJExJTkVOTyIg NQotICAgIGZpCisgIGlmIHRlc3QgJGxpYmNfY3ZfeDg2X2NldF9hdmFpbGFibGUgIT0geWVzOyB0 aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIiRDQyBkb2Vzbid0IHN1cHBvcnQgQ0VUIiAiJExJTkVO TyIgNQogICBmaQogZmkKLWlmIHRlc3QgJGVuYWJsZV9jZXQgPSB5ZXM7IHRoZW4KK2lmIHRlc3Qg JGVuYWJsZV9jZXQgIT0gbm87IHRoZW4KICAgIyBDaGVjayBpZiBhc3NlbWJsZXIgc3VwcG9ydHMg Q0VULgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IHdoZXRoZXIgJEFTIHN1cHBvcnRzIENFVCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0 aGVyICRBUyBzdXBwb3J0cyBDRVQuLi4gIiA+JjY7IH0KQEAgLTY1LDUgKzU5LDEyIEBAICRhc19l Y2hvICIkbGliY19jdl94ODZfY2V0X2FzIiA+JjY7IH0KICAgICBhc19mbl9lcnJvciAkPyAiJEFT IGRvZXNuJ3Qgc3VwcG9ydCBDRVQiICIkTElORU5PIiA1CiAgIGZpCiBmaQoraWYgdGVzdCAkZW5h YmxlX2NldCA9IHllczsgdGhlbgorICAkYXNfZWNobyAiI2RlZmluZSBERUZBVUxUX0RMX1g4Nl9D RVRfQ09OVFJPTCBjZXRfZWxmX3Byb3BlcnR5IiA+PmNvbmZkZWZzLmgKKworZWxpZiB0ZXN0ICRl bmFibGVfY2V0ID0gcGVybWlzc2l2ZTsgdGhlbgorICAkYXNfZWNobyAiI2RlZmluZSBERUZBVUxU X0RMX1g4Nl9DRVRfQ09OVFJPTCBjZXRfcGVybWlzc2l2ZSIgPj5jb25mZGVmcy5oCisKK2ZpCiBj b25maWdfdmFycz0iJGNvbmZpZ192YXJzCiBlbmFibGUtY2V0ID0gJGVuYWJsZV9jZXQiCmRpZmYg LS1naXQgYS9zeXNkZXBzL3g4Ni9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3g4Ni9jb25maWd1cmUu YWMKaW5kZXggYTkwOWIwNzNhZi4uOGYzZTExOTFmNiAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODYv Y29uZmlndXJlLmFjCisrKyBiL3N5c2RlcHMveDg2L2NvbmZpZ3VyZS5hYwpAQCAtMSw3ICsxLDcg QEAKIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNv dXJjZSBkaXJlY3RvcnkuCiAjIExvY2FsIGNvbmZpZ3VyZSBmcmFnbWVudCBmb3Igc3lzZGVwcy94 ODYuCiAKLWlmIHRlc3QgeCIkZW5hYmxlX2NldCIgPSB4eWVzOyB0aGVuCitpZiB0ZXN0ICRlbmFi bGVfY2V0ICE9IG5vOyB0aGVuCiAgICMgQ2hlY2sgaWYgQ0VUIGNhbiBiZSBlbmFibGVkLgogICBB Q19DQUNIRV9DSEVDSyh3aGV0aGVyIENFVCBjYW4gYmUgZW5hYmxlZCwKIAkJIGxpYmNfY3ZfeDg2 X2NldF9hdmFpbGFibGUsIFtkbmwKQEAgLTE2LDE3ICsxNiwxMSBAQCBFT0YKIAkJICAgbGliY19j dl94ODZfY2V0X2F2YWlsYWJsZT1ubwogCQkgZmkKIAkJIHJtIC1yZiBjb25mdGVzdCpdKQotICBp ZiB0ZXN0ICRsaWJjX2N2X3g4Nl9jZXRfYXZhaWxhYmxlID0geWVzOyB0aGVuCi0gICAgZW5hYmxl X2NldD15ZXMKLSAgZWxzZQotICAgIGlmIHRlc3QgeCIkZW5hYmxlX2NldCIgPSB4ZGVmYXVsdDsg dGhlbgotICAgICAgZW5hYmxlX2NldD1ubwotICAgIGVsc2UKLSAgICAgIEFDX01TR19FUlJPUihb JENDIGRvZXNuJ3Qgc3VwcG9ydCBDRVRdKQotICAgIGZpCisgIGlmIHRlc3QgJGxpYmNfY3ZfeDg2 X2NldF9hdmFpbGFibGUgIT0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFskQ0MgZG9lc24n dCBzdXBwb3J0IENFVF0pCiAgIGZpCiBmaQotaWYgdGVzdCAkZW5hYmxlX2NldCA9IHllczsgdGhl bgoraWYgdGVzdCAkZW5hYmxlX2NldCAhPSBubzsgdGhlbgogICAjIENoZWNrIGlmIGFzc2VtYmxl ciBzdXBwb3J0cyBDRVQuCiAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgJEFTIHN1cHBvcnRzIENF VCwKIAkJIGxpYmNfY3ZfeDg2X2NldF9hcywgW2RubApAQCAtNDMsNCArMzcsOSBAQCBFT0YKICAg ICBBQ19NU0dfRVJST1IoWyRBUyBkb2Vzbid0IHN1cHBvcnQgQ0VUXSkKICAgZmkKIGZpCitpZiB0 ZXN0ICRlbmFibGVfY2V0ID0geWVzOyB0aGVuCisgIEFDX0RFRklORShERUZBVUxUX0RMX1g4Nl9D RVRfQ09OVFJPTCwgY2V0X2VsZl9wcm9wZXJ0eSkKK2VsaWYgdGVzdCAkZW5hYmxlX2NldCA9IHBl cm1pc3NpdmU7IHRoZW4KKyAgQUNfREVGSU5FKERFRkFVTFRfRExfWDg2X0NFVF9DT05UUk9MLCBj ZXRfcGVybWlzc2l2ZSkKK2ZpCiBMSUJDX0NPTkZJR19WQVIoW2VuYWJsZS1jZXRdLCBbJGVuYWJs ZV9jZXRdKQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvZGwtcHJvY3J1bnRpbWUuYyBiL3N5c2Rl cHMveDg2L2RsLXByb2NydW50aW1lLmMKaW5kZXggMmMzZTk3OTUyYi4uYTNlYzYxYjkxZSAxMDA2 NDQKLS0tIGEvc3lzZGVwcy94ODYvZGwtcHJvY3J1bnRpbWUuYworKysgYi9zeXNkZXBzL3g4Ni9k bC1wcm9jcnVudGltZS5jCkBAIC02NSw4ICs2NSw4IEBAIFBST0NJTkZPX0NMQVNTIHN0cnVjdCBk bF94ODZfZmVhdHVyZV9jb250cm9sIF9kbF94ODZfZmVhdHVyZV9jb250cm9sCiAjIGVuZGlmCiAj IGlmbmRlZiBQUk9DSU5GT19ERUNMCiA9IHsKLSAgICAuaWJ0ID0gY2V0X2VsZl9wcm9wZXJ0eSwK LSAgICAuc2hzdGsgPSBjZXRfZWxmX3Byb3BlcnR5CisgICAgLmlidCA9IERFRkFVTFRfRExfWDg2 X0NFVF9DT05UUk9MLAorICAgIC5zaHN0ayA9IERFRkFVTFRfRExfWDg2X0NFVF9DT05UUk9MLAog ICB9CiAjIGVuZGlmCiAjIGlmICFkZWZpbmVkIFNIQVJFRCB8fCBkZWZpbmVkIFBST0NJTkZPX0RF Q0wKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L3RzdC1jZXQtbGVnYWN5LTUuYyBiL3N5c2RlcHMv eDg2L3RzdC1jZXQtbGVnYWN5LTUuYwppbmRleCBlMmU5NWI2NzQ5Li4wMDdiMzAwMjliIDEwMDY0 NAotLS0gYS9zeXNkZXBzL3g4Ni90c3QtY2V0LWxlZ2FjeS01LmMKKysrIGIvc3lzZGVwcy94ODYv dHN0LWNldC1sZWdhY3ktNS5jCkBAIC0yMiw2ICsyMiwxNCBAQAogI2luY2x1ZGUgPHN0ZGxpYi5o PgogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx4 ODZpbnRyaW4uaD4KKyNpbmNsdWRlIDxzdXBwb3J0L2NoZWNrLmg+CisKKyNpZiBkZWZpbmVkIENF VF9JU19QRVJNSVNTSVZFIHx8IGRlZmluZWQgQ0VUX0RJU0FCTEVEX0JZX0VOVgorIyBkZWZpbmUg Q0VUX01BWUJFX0RJU0FCTEVEIDEKKyNlbHNlCisjIGRlZmluZSBDRVRfTUFZQkVfRElTQUJMRUQg MAorI2VuZGlmCiAKIHN0YXRpYyB2b2lkCiBkb190ZXN0XzEgKGNvbnN0IGNoYXIgKm1vZG5hbWUs IGJvb2wgZmFpbCkKQEAgLTMyLDI0ICs0MCwyNSBAQCBkb190ZXN0XzEgKGNvbnN0IGNoYXIgKm1v ZG5hbWUsIGJvb2wgZmFpbCkKICAgaCA9IGRsb3BlbiAobW9kbmFtZSwgUlRMRF9MQVpZKTsKICAg aWYgKGggPT0gTlVMTCkKICAgICB7CisgICAgICBjb25zdCBjaGFyICplcnIgPSBkbGVycm9yICgp OwogICAgICAgaWYgKGZhaWwpCiAJewotCSAgY29uc3QgY2hhciAqZXJyID0gZGxlcnJvciAoKTsK IAkgIGlmIChzdHJzdHIgKGVyciwgInJlYnVpbGQgc2hhcmVkIG9iamVjdCB3aXRoIFNIU1RLIHN1 cHBvcnQgZW5hYmxlZCIpCiAJICAgICAgPT0gTlVMTCkKLQkgICAgewotCSAgICAgIHByaW50ZiAo ImluY29ycmVjdCBkbG9wZW4gJyVzJyBlcnJvcjogJXNcbiIsIG1vZG5hbWUsCi0JCSAgICAgIGVy cik7Ci0JICAgICAgZXhpdCAoMSk7Ci0JICAgIH0KKwkgICAgRkFJTF9FWElUMSAoImluY29ycmVj dCBkbG9wZW4gJyVzJyBlcnJvcjogJXNcbiIsIG1vZG5hbWUsIGVycik7CiAKIAkgIHJldHVybjsK IAl9CiAKLSAgICAgIHByaW50ZiAoImNhbm5vdCBvcGVuICclcyc6ICVzXG4iLCBtb2RuYW1lLCBk bGVycm9yICgpKTsKLSAgICAgIGV4aXQgKDEpOworICAgICAgRkFJTF9FWElUMSAoImNhbm5vdCBv cGVuICclcyc6ICVzXG4iLCBtb2RuYW1lLCBlcnIpOwogICAgIH0KIAorICAvKiBOQjogZGxvcGVu IHNob3VsZCBuZXZlciBmYWlsIG9uIG5vbi1DRVQgcGxhdGZvcm1zLiAgSWYgU0hTVEsgaXMKKyAg ICAgZGlzYWJsZWQsIGFzc3VtaW5nIElCVCBpcyBhbHNvIGRpc2FibGVkLiAgKi8KKyAgYm9vbCBj ZXRfZW5hYmxlZCA9IF9nZXRfc3NwICgpICE9IDAgJiYgIUNFVF9NQVlCRV9ESVNBQkxFRDsKKyAg aWYgKGZhaWwgJiYgY2V0X2VuYWJsZWQpCisgICAgRkFJTF9FWElUMSAoImRsb3BlbiBzaG91bGQg aGF2ZSBmYWlsZWRcbiIpOworCiAgIGZwID0gZGxzeW0gKGgsICJ0ZXN0Iik7CiAgIGlmIChmcCA9 PSBOVUxMKQogICAgIHsKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L3RzdC1jZXQtbGVnYWN5LTYu YyBiL3N5c2RlcHMveDg2L3RzdC1jZXQtbGVnYWN5LTYuYwppbmRleCBiZGJiYjkwNzVmLi5mZGY3 OThlZTIwIDEwMDY0NAotLS0gYS9zeXNkZXBzL3g4Ni90c3QtY2V0LWxlZ2FjeS02LmMKKysrIGIv c3lzZGVwcy94ODYvdHN0LWNldC1sZWdhY3ktNi5jCkBAIC0yMiw2ICsyMiwxNCBAQAogI2luY2x1 ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K KyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNpbmNsdWRlIDxzdXBwb3J0L2NoZWNrLmg+CisKKyNp ZiBkZWZpbmVkIENFVF9JU19QRVJNSVNTSVZFIHx8IGRlZmluZWQgQ0VUX0RJU0FCTEVEX0JZX0VO VgorIyBkZWZpbmUgQ0VUX01BWUJFX0RJU0FCTEVEIDEKKyNlbHNlCisjIGRlZmluZSBDRVRfTUFZ QkVfRElTQUJMRUQgMAorI2VuZGlmCiAKIHN0YXRpYyB2b2lkCiBkb190ZXN0XzEgKGNvbnN0IGNo YXIgKm1vZG5hbWUsIGJvb2wgZmFpbCkKQEAgLTMyLDI0ICs0MCwyNSBAQCBkb190ZXN0XzEgKGNv bnN0IGNoYXIgKm1vZG5hbWUsIGJvb2wgZmFpbCkKICAgaCA9IGRsb3BlbiAobW9kbmFtZSwgUlRM RF9MQVpZKTsKICAgaWYgKGggPT0gTlVMTCkKICAgICB7CisgICAgICBjb25zdCBjaGFyICplcnIg PSBkbGVycm9yICgpOwogICAgICAgaWYgKGZhaWwpCiAJewotCSAgY29uc3QgY2hhciAqZXJyID0g ZGxlcnJvciAoKTsKIAkgIGlmIChzdHJzdHIgKGVyciwgInJlYnVpbGQgc2hhcmVkIG9iamVjdCB3 aXRoIFNIU1RLIHN1cHBvcnQgZW5hYmxlZCIpCiAJICAgICAgPT0gTlVMTCkKLQkgICAgewotCSAg ICAgIHByaW50ZiAoImluY29ycmVjdCBkbG9wZW4gJyVzJyBlcnJvcjogJXNcbiIsIG1vZG5hbWUs Ci0JCSAgICAgIGVycik7Ci0JICAgICAgZXhpdCAoMSk7Ci0JICAgIH0KKwkgICAgRkFJTF9FWElU MSAoImluY29ycmVjdCBkbG9wZW4gJyVzJyBlcnJvcjogJXNcbiIsIG1vZG5hbWUsIGVycik7CiAK IAkgIHJldHVybjsKIAl9CiAKLSAgICAgIHByaW50ZiAoImNhbm5vdCBvcGVuICclcyc6ICVzXG4i LCBtb2RuYW1lLCBkbGVycm9yICgpKTsKLSAgICAgIGV4aXQgKDEpOworICAgICAgRkFJTF9FWElU MSAoImNhbm5vdCBvcGVuICclcyc6ICVzXG4iLCBtb2RuYW1lLCBlcnIpOwogICAgIH0KIAorICAv KiBOQjogZGxvcGVuIHNob3VsZCBuZXZlciBmYWlsIG9uIG5vbi1DRVQgcGxhdGZvcm1zLiAgSWYg U0hTVEsgaXMKKyAgICAgZGlzYWJsZWQsIGFzc3VtaW5nIElCVCBpcyBhbHNvIGRpc2FibGVkLiAg Ki8KKyAgYm9vbCBjZXRfZW5hYmxlZCA9IF9nZXRfc3NwICgpICE9IDAgJiYgIUNFVF9NQVlCRV9E SVNBQkxFRDsKKyAgaWYgKGZhaWwgJiYgY2V0X2VuYWJsZWQpCisgICAgRkFJTF9FWElUMSAoImRs b3BlbiBzaG91bGQgaGF2ZSBmYWlsZWRcbiIpOworCiAgIGZwID0gZGxzeW0gKGgsICJ0ZXN0Iik7 CiAgIGlmIChmcCA9PSBOVUxMKQogICAgIHsKLS0gCjIuMjYuMgoK --000000000000c710a805a5ec75f5--