From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) by sourceware.org (Postfix) with ESMTPS id 757F83858D28 for ; Mon, 1 Apr 2024 16:33:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 757F83858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 757F83858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::b35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711989229; cv=none; b=bDt9Gm41V7rxTnZxYsO3x8C9WuzZ/cxw69bZschi49qm15XY8GNzYJMWR2VIvJl4+UStjGLgzb19zIoNsWI39pGazLp0wZWNiOHtHTHEG4m8uUi4WHYGnhYAm/szUAIemFZdNkWr+o7xS1FkceKxLJLLJ6DKz1dWL0L0zqR1J+I= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711989229; c=relaxed/simple; bh=09pwI3MzWVHjgBnKHS7NvyiPAds/iT+XeVXC9n2QjH8=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=ULwR312CsUPoD5tsq+YpRKVV/lXVeN6FmK7EpbiMCBPa44gD83EF0Io8Fd6oInPWyMqdWmC2Y280vHTQli21a3O6PeSLSAqLRLmDFdXlKzWFU5GnUR/snmbACaqpkZs8N7TkUhd68kxQE1U/GWNagUUhKw92irmJlqiecZ4wXTc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yb1-xb35.google.com with SMTP id 3f1490d57ef6-dc6d9a8815fso3959062276.3 for ; Mon, 01 Apr 2024 09:33:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711989226; x=1712594026; darn=sourceware.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BLFsgY7/4MWTmfx39r3Gpc7ODXg7NL60a3HlOCxsVfE=; b=fm9dZVAVRw1ea03r93pBzWCMyWRMAq+/FGT0KcEmpnQ35KRpMCuyXDAprlst5z1caQ OuF/tFSk4aMQJ7PtDnJoMCMH3BYexpwVhXNsSHrhZA7C4hLVkdwOzK5CoUKQ603Tz/OT XVcckvsJ5Ir5D0GdQ15nfaPsg75rpfEIy6DJr9834/fu6lrYpw6p5WyeszjdlGEIjG5J Mq2rDV8H5PkVYzjmRktwu4NvZYPEd37rlu5v1yilEIizo1GJgaoauGLvgyJYptgHG05X h0bDXnEw1OjSkGvDIxWOwtDH7PFl7xBn+RZywO2lGCs66qadGLk8SuHSoK4MOnMQWV4t 4cRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711989226; x=1712594026; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BLFsgY7/4MWTmfx39r3Gpc7ODXg7NL60a3HlOCxsVfE=; b=lKEWJiiPRvUZgk7fgSA3IWfQ0EPX1JM20l8+wm+es9bEW0f45Z1vSpkXC7H2hOnhtB Ysc6sZNlL4SFskdbYtU4oHpULEciRXhyNhnpodlxb8DfZdGPVVTi1kyG7/vY2CK5EVyh xo+lRF1DI13vKtOJTzzwz+ydZ992E7CNF4v25QtuI9icT/uCLXzruCLwFFhNWfe/lu1O /eJLRUCS7UdIy3a7h3p7cc+Ur/8oti8GYdP4IHQk1/fdI+hJ2MTaZNgz+HY5UcIyz1Bw FuB2vuPHyrHTTGhH5678ihY8ztKu9dhfZGbm1EdnBQnSTIZLmD1VO4bXNdsEw3r7eZIP 1THQ== X-Forwarded-Encrypted: i=1; AJvYcCXAl1vo8LhNA/AcgfHQW9JWFx3PB7xx0CdaTr9+Q839cuK5z6tIN4CjwAPo3QUvvA6NTy8wwvVJxE7BexJ/fnftvcMFbAR++Jzr X-Gm-Message-State: AOJu0YxrZcqwBYrnBQyyyyT6JGiu+9ARn7HkM8Ls2+Sr5hu3gqakGvyo ULwAzPIraj0wA/RchQqje7ex3hykNDNw+hD3VPC1XYwcjJGyo3Tpd5QfmEpzjXCfTYVAgDlHdI8 q3mnGRL9BmEq346R5ZzVFzWlWPOx40Y6B X-Google-Smtp-Source: AGHT+IHV+cu0gawVLnX4iC4hpVhBmn2kUfSBlLg17s6/UBxKv0+IzICX0mChnCwv8LfmiSUbks6tFq1yu4CEwy7Ahag= X-Received: by 2002:a25:cd01:0:b0:dcd:6722:c728 with SMTP id d1-20020a25cd01000000b00dcd6722c728mr7613463ybf.14.1711989224876; Mon, 01 Apr 2024 09:33:44 -0700 (PDT) MIME-Version: 1.0 References: <877cw3kn65.fsf@oldenburg.str.redhat.com> In-Reply-To: From: Joe Talbott Date: Mon, 1 Apr 2024 12:33:33 -0400 Message-ID: Subject: Re: [PATCH] manual: scripts/documented.sh updated To: Girish Joshi Cc: Florian Weimer , Girish Joshi via Libc-alpha Content-Type: multipart/mixed; boundary="0000000000009be46806150b8dd6" X-Spam-Status: No, score=-5.7 required=5.0 tests=BAYES_00,CONTENT_AFTER_HTML_WEAK,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,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000009be46806150b8dd6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 30, 2024 at 2:54=E2=80=AFPM Girish Joshi = wrote: > > Thanks Joe, I've updated the script. > It's just that the output now does not contain the addresses and the > T/W info about the symbol is not present. > Do we need that info about each symbol in the output? I guess that information is useful. I'm attaching a patch that reverts to 'cut -b 12' and does the grep and diff with a copy of AVAILABLE that does not have the offsets and waits until it builds the HTML table to get the matching line with the offset. Thanks, Joe > > Thanks! > Girish Joshi > girishjoshi.io > > On Sat, Mar 11, 2023 at 8:18=E2=80=AFPM Joe Simmons-Talbott > wrote: > > > > On Sun, Mar 05, 2023 at 11:44:22AM +0530, Girish Joshi via Libc-alpha w= rote: > > > Hi Florian, > > > Thanks for the review. > > > Turns out `diff` was not working with the given input files, this > > > patch fixes that. > > > I'm not sure if there is a list of people who volunteered to document > > > some specific functions. > > > So that comment from the output html is removed. > > > > > > Thanks! > > > Girish Joshi > > > > > > On Mon, Feb 27, 2023 at 11:26=E2=80=AFPM Florian Weimer wrote: > > > > > > > > * Girish Joshi via Libc-alpha: > > > > > > > > > Hello, > > > > > As per the Missing Functions section of master Todo list[1], > > > > > scripts/documented.sh needs to be updated. > > > > > > > > > > Could someone please review this patch? > > > > > It removes the reference to linuxthreads/*.taxi files from the sc= ript > > > > > and removes the individual email address from the output. > > > > > > > > The script still doesn't seem to work, probably because the symbol = names > > > > are not extract properly: > > > > > > > > 43120 T _dl_mcount_wrapper 43140 T _dl_mcount_wrapper_c 433= 20 W clogf 43320 W clogf32 > > > > 435c0 T _dl_find_object 43740 T realpath 43770 T qui= ck_exit 43790 T _IO_vfscanf > > > > 437c0 T _pthread_cleanup_pus 437d0 T _pthread_cleanup_pop 437= d0 W cprojf 437d0 W cprojf32 > > > > > > > > _dl_find_object is documented. > > > > > > > > _IO_vfscanf should be recognized as an alias of vfscanf, but this i= s > > > > more of an RFE than a bug fix. > > > > > > > > Thanks, > > > > Florian > > > > > > > > > From 5148c65ac07688dc5c3ee79a9b0f054232d64df3 Mon Sep 17 00:00:00 200= 1 > > > From: Girish Joshi > > > Date: Sun, 5 Mar 2023 11:15:00 +0530 > > > Subject: [PATCH] manual: scripts/documented.sh updated > > > > > > References for linuxthreads are removed from scripts/documented.sh. > > > Also removed the individual email address from the html output. > > > > > > Fixed the steps to retrive undocumented functions > > > --- > > > scripts/documented.sh | 44 +++++++++++++++++++++++++++++++----------= -- > > > 1 file changed, 32 insertions(+), 12 deletions(-) > > > mode change 100644 =3D> 100755 scripts/documented.sh > > > > > > diff --git a/scripts/documented.sh b/scripts/documented.sh > > > old mode 100644 > > > new mode 100755 > > > index 7d1ffd4a92..dda6a32283 > > > --- a/scripts/documented.sh > > > +++ b/scripts/documented.sh > > > @@ -1,9 +1,15 @@ > > > #!/bin/sh > > > bindir=3D$1 > > > > > > -VERSION=3D1.0 > > > +# usage: scripts/documented.sh > > > +# for example: > > > +# scripts/documented.sh $HOME/build/glibc > > > > > > -grep -E -h @deftypefu?nx? *.texi ../linuxthreads/*.texi | > > > +VERSION=3D1.1 > > > + > > > +# Collect the documented functions from manual/*.texi files. > > > + > > > +grep -E -h @deftypefu?nx? manual/*.texi | > > > sed -e 's/@deftypefunx*[[:space:]]*\({[^{]*}\|[[:alnum:]_]*\)[[:spac= e:]]*\([[:alnum:]_]*\).*/\2/' -e 's/@deftypefn {[^}]*function}*[[:space:]]*= \({[^{]*}\|[[:alnum:]_]*\)[[:space:]]*\([[:alnum:]_]*\).*/\2/' -e '/^@/d' | > > > sed -e '/^obstack_/d' -e '/^\([lf]\|\)stat\(\|64\)$/d' -e '/^mknod$/= d' | > > > sed -e '/^signbit$/d' -e '/^sigsetjmp$/d' | > > > @@ -12,9 +18,12 @@ sed -e '/^__fwriting$/d' -e '/^__fwritable$/d' -e = '/^__fsetlocking$/d' | > > > sed -e '/^__freading$/d' -e '/^__freadable$/d' -e '/^__fpurge$/d' | > > > sed -e '/^__fpending$/d' -e '/^__flbf$/d' -e '/^__fbufsize$/d' | > > > sed -e '/^alloca$/d' | > > > +sed -r '/^\s*$/d' | > > > sort -u > DOCUMENTED > > > > > > -nm --extern --define $bindir/libc.so $bindir/math/libm.so $bindir/rt= /librt.so $bindir/linuxthreads/libpthread.so $bindir/dlfcn/libdl.so $bindir= /crypt/libcrypt.so $bindir/login/libutil.so | > > > + > > > +# extract the exported symbols from the libraries. > > > +nm --extern --define $bindir/libc.so $bindir/math/libm.so $bindir/rt= /librt.so $bindir/nptl/libpthread.so $bindir/dlfcn/libdl.so $bindir/crypt/l= ibcrypt.so $bindir/login/libutil.so | > > > grep -E " [TW] ([[:alpha:]]|_[[:alpha:]])" | > > > sed 's/\(@.*\)//' | > > > cut -b 12- | > > > > You can change this to 'cut -v 20-' and avoid the extra > > AVAILABLE_WITHOUT_OFFSET part. > > > > Thanks, > > Joe > > > @@ -25,6 +34,9 @@ sed -e '/^_mcleanup$/d' -e '/^_rpc_dtablesize$/d' -= e '/^_seterr_reply$/d' | > > > sed -e '/^_nss/d' -e '/^_setjmp$/d' | > > > sort -u > AVAILABLE > > > > > > +# remove offset details from nm output > > > +cat AVAILABLE | cut -b 9- | sort -u > AVAILABLE_WITHOUT_OFFSET > > > + > > > cat < > > > > > > > > @@ -39,9 +51,7 @@ cat < > > which are not yet documented in the manual. This list is > > > automatically created and therefore might contain errors. Pleas= e > > > check the latest manual (available from the CVS archive) before > > > - starting to work. It might also be good to let me know in > > > - advanace on which functions you intend to work to avoid > > > - duplication.

> > > + starting to work.

> > > > > >

A few comments:

> > > > > > @@ -52,15 +62,23 @@ cat < > >
  • Similarly for the LFS functions (those ending in 64).
  • > > > > > > > > > -

    The function sombody already volunteered to document are mark= ed > > > - with a reference to the person.

    > > > > > >
    > > > EOF > > > > > > n=3D0 > > > -diff -y --width=3D60 --suppress-common-lines DOCUMENTED AVAILABLE | > > > -expand | cut -b 33- | sed '/^[[:space:]]*$/d' | > > > + > > > +# get the list of undocumented functions > > > +grep -Fvx -f DOCUMENTED AVAILABLE_WITHOUT_OFFSET > UNDOCUMENTED_WITH= OUT_OFFSET > > > + > > > +# get undocumented functions with offset info > > > +for func in `cat UNDOCUMENTED_WITHOUT_OFFSET` > > > +do > > > + grep " $func$" AVAILABLE >> UNDOCUMENTED > > > +done > > > + > > > +diff -y --width=3D120 --suppress-common-lines DOCUMENTED UNDOCUMENTE= D | > > > +expand | cut -b 61- | sed '/^[[:space:]]*$/d' | > > > while read name; do > > > line=3D"$line > > > " > > > @@ -95,8 +113,10 @@ cat < > >
    $name
    > > > > > >
    > > > -
    Ulrich Drepper
    > > > -Generated on $(date) with documented.sh version $VERSION > > > + Generated on $(date) with documented.sh version $VERSION > > > > > > > > > EOF > > > + > > > +# cleanup the files > > > +rm -rf UNDOCUMENTED_WITHOUT_OFFSET AVAILABLE_WITHOUT_OFFSET AVAILABL= E > > > -- > > > 2.39.2 > > > > > --0000000000009be46806150b8dd6 Content-Type: text/x-patch; charset="US-ASCII"; name="documented-jst.patch" Content-Disposition: attachment; filename="documented-jst.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_luh64oox0 ZGlmZiAtLWdpdCBhL3NjcmlwdHMvZG9jdW1lbnRlZC5zaCBiL3NjcmlwdHMvZG9jdW1lbnRlZC5z aApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDI0YmI3YjNlNTQuLjk0NjMz YTc4ZWEKLS0tIGEvc2NyaXB0cy9kb2N1bWVudGVkLnNoCisrKyBiL3NjcmlwdHMvZG9jdW1lbnRl ZC5zaApAQCAtMSw5ICsxLDE1IEBACiAjIS9iaW4vc2gKIGJpbmRpcj0kMQogCi1WRVJTSU9OPTEu MAorIyB1c2FnZTogc2NyaXB0cy9kb2N1bWVudGVkLnNoIDxwYXRoIHRvIGdsaWJjIGJ1aWxkIGRp cmVjdG9yeT4KKyMgZm9yIGV4YW1wbGU6CisjIHNjcmlwdHMvZG9jdW1lbnRlZC5zaCAkSE9NRS9i dWlsZC9nbGliYwogCi1ncmVwIC1FIC1oIEBkZWZ0eXBlZnU/bng/ICoudGV4aSAuLi9saW51eHRo cmVhZHMvKi50ZXhpIHwKK1ZFUlNJT049MS4xCisKKyMgQ29sbGVjdCB0aGUgZG9jdW1lbnRlZCBm dW5jdGlvbnMgZnJvbSBtYW51YWwvKi50ZXhpIGZpbGVzLgorCitncmVwIC1FIC1oIEBkZWZ0eXBl ZnU/bng/IG1hbnVhbC8qLnRleGkgfAogc2VkIC1lICdzL0BkZWZ0eXBlZnVueCpbWzpzcGFjZTpd XSpcKHtbXntdKn1cfFtbOmFsbnVtOl1fXSpcKVtbOnNwYWNlOl1dKlwoW1s6YWxudW06XV9dKlwp LiovXDIvJyAtZSAncy9AZGVmdHlwZWZuIHtbXn1dKmZ1bmN0aW9ufSpbWzpzcGFjZTpdXSpcKHtb XntdKn1cfFtbOmFsbnVtOl1fXSpcKVtbOnNwYWNlOl1dKlwoW1s6YWxudW06XV9dKlwpLiovXDIv JyAtZSAnL15AL2QnIHwKIHNlZCAtZSAnL15vYnN0YWNrXy9kJyAtZSAnL15cKFtsZl1cfFwpc3Rh dFwoXHw2NFwpJC9kJyAtZSAnL15ta25vZCQvZCcgfAogc2VkIC1lICcvXnNpZ25iaXQkL2QnIC1l ICcvXnNpZ3NldGptcCQvZCcgfApAQCAtMTIsOSArMTgsMTEgQEAgc2VkIC1lICcvXl9fZndyaXRp bmckL2QnIC1lICcvXl9fZndyaXRhYmxlJC9kJyAtZSAnL15fX2ZzZXRsb2NraW5nJC9kJyB8CiBz ZWQgLWUgJy9eX19mcmVhZGluZyQvZCcgLWUgJy9eX19mcmVhZGFibGUkL2QnIC1lICcvXl9fZnB1 cmdlJC9kJyB8CiBzZWQgLWUgJy9eX19mcGVuZGluZyQvZCcgLWUgJy9eX19mbGJmJC9kJyAtZSAn L15fX2ZidWZzaXplJC9kJyB8CiBzZWQgLWUgJy9eYWxsb2NhJC9kJyB8CitzZWQgLXIgJy9eXHMq JC9kJyB8CiBzb3J0IC11ID4gRE9DVU1FTlRFRAogCi1ubSAtLWV4dGVybiAtLWRlZmluZSAkYmlu ZGlyL2xpYmMuc28gJGJpbmRpci9tYXRoL2xpYm0uc28gJGJpbmRpci9ydC9saWJydC5zbyAkYmlu ZGlyL2xpbnV4dGhyZWFkcy9saWJwdGhyZWFkLnNvICRiaW5kaXIvZGxmY24vbGliZGwuc28gJGJp bmRpci9sb2dpbi9saWJ1dGlsLnNvIHwKKyMgZXh0cmFjdCB0aGUgZXhwb3J0ZWQgc3ltYm9scyBm cm9tIHRoZSBsaWJyYXJpZXMuCitubSAtLWV4dGVybiAtLWRlZmluZSAkYmluZGlyL2xpYmMuc28g JGJpbmRpci9tYXRoL2xpYm0uc28gJGJpbmRpci9ydC9saWJydC5zbyAkYmluZGlyL25wdGwvbGli cHRocmVhZC5zbyAkYmluZGlyL2RsZmNuL2xpYmRsLnNvICRiaW5kaXIvbG9naW4vbGlidXRpbC5z byB8CiBncmVwIC1FICIgW1RXXSAoW1s6YWxwaGE6XV18X1tbOmFscGhhOl1dKSIgfAogc2VkICdz L1woQC4qXCkvLycgfAogY3V0IC1iIDEyLSB8CkBAIC0yMyw3ICszMSwxMCBAQCBzZWQgLWUgJy9e X2FyZ3AvZCcgLWUgJy9eX2F1dGhlbnRpY2F0ZSQvZCcgLWUgJy9eX2Vudmlyb24kL2QnIHwKIHNl ZCAtZSAnL15fZXJybm8kL2QnIC1lICcvXl9oX2Vycm5vJC9kJyAtZSAnL15fbG9uZ2ptcCQvZCcg fAogc2VkIC1lICcvXl9tY2xlYW51cCQvZCcgLWUgJy9eX3JwY19kdGFibGVzaXplJC9kJyAtZSAn L15fc2V0ZXJyX3JlcGx5JC9kJyB8CiBzZWQgLWUgJy9eX25zcy9kJyAtZSAnL15fc2V0am1wJC9k JyB8Ci1zb3J0IC11ID4gQVZBSUxBQkxFCitzb3J0IC11ID4gQVZBSUxBQkxFX1dJVEhfT0ZGU0VU CisKKyMgQnVpbGQgYSBsaXN0IG9mIGF2YWlsYWJsZSBmdW5jdGlvbnMgd2l0aCBvdXQgdGhlIG9m ZnNldHMKK2NhdCBBVkFJTEFCTEVfV0lUSF9PRkZTRVQgfCBjdXQgLWQgJyAnIC1mIDMgPkFWQUlM QUJMRQogCiBjYXQgPDxFT0YKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU TUwvL0VOIj4KQEAgLTM5LDkgKzUwLDcgQEAgY2F0IDw8RU9GCiAgICAgd2hpY2ggYXJlIG5vdCB5 ZXQgZG9jdW1lbnRlZCBpbiB0aGUgbWFudWFsLiAgVGhpcyBsaXN0IGlzCiAgICAgYXV0b21hdGlj YWxseSBjcmVhdGVkIGFuZCB0aGVyZWZvcmUgbWlnaHQgY29udGFpbiBlcnJvcnMuICBQbGVhc2UK ICAgICBjaGVjayB0aGUgbGF0ZXN0IG1hbnVhbCAoYXZhaWxhYmxlIGZyb20gdGhlIENWUyBhcmNo aXZlKSBiZWZvcmUKLSAgICBzdGFydGluZyB0byB3b3JrLiAgSXQgbWlnaHQgYWxzbyBiZSBnb29k IHRvIGxldCBtZSBrbm93IGluCi0gICAgYWR2YW5hY2Ugb24gd2hpY2ggZnVuY3Rpb25zIHlvdSBp bnRlbmQgdG8gd29yayB0byBhdm9pZAotICAgIGR1cGxpY2F0aW9uLjwvcD4KKyAgICBzdGFydGlu ZyB0byB3b3JrLjwvcD4KIAogICAgIDxwPkEgZmV3IGNvbW1lbnRzOjwvcD4KIApAQCAtNTIsMTgg KzYxLDIwIEBAIGNhdCA8PEVPRgogICAgICAgPGxpPlNpbWlsYXJseSBmb3IgdGhlIExGUyBmdW5j dGlvbnMgKHRob3NlIGVuZGluZyBpbiA2NCkuPC9saT4KICAgICA8L3VsPgogCi0gICAgPHA+VGhl IGZ1bmN0aW9uIHNvbWJvZHkgYWxyZWFkeSB2b2x1bnRlZXJlZCB0byBkb2N1bWVudCBhcmUgbWFy a2VkCi0gICAgd2l0aCBhIHJlZmVyZW5jZSB0byB0aGUgcGVyc29uLjwvcD4KIAogICAgIDxjZW50 ZXI+PHRhYmxlPgogRU9GCiAKIG49MAotZGlmZiAteSAtLXdpZHRoPTYwIC0tc3VwcHJlc3MtY29t bW9uLWxpbmVzIERPQ1VNRU5URUQgQVZBSUxBQkxFIHwKLWV4cGFuZCB8IGN1dCAtYiAzMy0gfCBz ZWQgJy9eW1s6c3BhY2U6XV0qJC9kJyB8CisjIGdldCB0aGUgbGlzdCBvZiB1bmRvY3VtZW50ZWQg ZnVuY3Rpb25zCitncmVwIC1GdnggLWYgRE9DVU1FTlRFRCBBVkFJTEFCTEU+IFVORE9DVU1FTlRF RAorCitkaWZmIC15IC0td2lkdGg9MTIwIC0tc3VwcHJlc3MtY29tbW9uLWxpbmVzIERPQ1VNRU5U RUQgVU5ET0NVTUVOVEVEIHwKK2V4cGFuZCB8IGN1dCAtYiA2MS0gfCBzZWQgJy9eW1s6c3BhY2U6 XV0qJC9kJyB8CiB3aGlsZSByZWFkIG5hbWU7IGRvCisgIHdpdGhfb2Zmc2V0PWBncmVwIC13ICRu YW1lIEFWQUlMQUJMRV9XSVRIX09GRlNFVGA7CiAgIGxpbmU9IiRsaW5lCi08dGQ+PHR0PiRuYW1l PC90dD48L3RkPiIKKzx0ZD48dHQ+JHdpdGhfb2Zmc2V0PC90dD48L3RkPiIKICAgbj0kKGV4cHIg JG4gKyAxKQogICBpZiBbICRuIC1lcSA0IF07IHRoZW4KICAgICBlY2hvICI8dHI+CkBAIC05NSw4 ICsxMDYsMTAgQEAgY2F0IDw8RU9GCiAgICAgPC90YWJsZT48L2NlbnRlcj4KIAogICAgIDxocj4K LSAgICA8YWRkcmVzcz48YSBocmVmPSJtYWlsdG86ZHJlcHBlckByZWRoYXQuY29tIj5VbHJpY2gg RHJlcHBlcjwvYT48L2FkZHJlc3M+Ci1HZW5lcmF0ZWQgb24gJChkYXRlKSB3aXRoIGRvY3VtZW50 ZWQuc2ggdmVyc2lvbiAkVkVSU0lPTgorICAgIEdlbmVyYXRlZCBvbiAkKGRhdGUpIHdpdGggZG9j dW1lbnRlZC5zaCB2ZXJzaW9uICRWRVJTSU9OCiAgIDwvYm9keT4KIDwvaHRtbD4KIEVPRgorCisj IGNsZWFudXAgdGhlIGZpbGVzCitybSAtcmYgVU5ET0NVTUVOVEVEX1dJVEhPVVRfT0ZGU0VUIFVO RE9DVU1FTlRFRCBBVkFJTEFCTEUgQVZBSUxBQkxFX1dJVEhfT0ZGU0VUIERPQ1VNRU5URUQK --0000000000009be46806150b8dd6--