From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACE3CC4363C for ; Sat, 15 May 2021 08:22:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 860A3613FC for ; Sat, 15 May 2021 08:22:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234474AbhEOIYF (ORCPT ); Sat, 15 May 2021 04:24:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:32862 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230403AbhEOIYB (ORCPT ); Sat, 15 May 2021 04:24:01 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2C190613B9; Sat, 15 May 2021 08:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621066968; bh=GZ+Kn4jT0gb7iB9pP/pJk26tOsd2+CGQf4jvs2zdqBw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=iG7hTAT03WHgFWqqoj0DV+re/0SLdMb3cUSY+SSuTzLrJYQKUGl36xxPlzpJM+obe aYXsMgr2FnrS3UmbhM6x/v0hyySs4FwS7nZabhVI4uZ7oSvYetpsNsa8YF+pHbxJBR Pvc7xud7ZTl9KAziTz3eT27vowbOqKYiG2XDc1TE977RvXZd58WPI/7xagMPnTojJ/ GJWlmOneBx01cy6SZcbDkvz0BdOwIrrlmQD5XJjxn9s8e2uY2fdVvUP3k7z3IeULok mtqmqeDzUbwgUVG+WJhEq15O9UonBwspCZS/Ybte0/0w+ceHppeg8djn6HLQSfz0bi sBmNf+UX/Tqtg== Date: Sat, 15 May 2021 10:22:39 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Cc: Linux Doc Mailing List , linux-kernel@vger.kernel.org, Jonathan Corbet , Mali DP Maintainers , alsa-devel@alsa-project.org, coresight@lists.linaro.org, intel-gfx@lists.freedesktop.org, intel-wired-lan@lists.osuosl.org, keyrings@vger.kernel.org, kvm@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-input@vger.kernel.org, linux-integrity@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-rdma@vger.kernel.org, linux-sgx@vger.kernel.org, linux-usb@vger.kernel.org, mjpeg-users@lists.sourceforge.net, netdev@vger.kernel.org, rcu@vger.kernel.org Subject: Re: [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols Message-ID: <20210515102239.2ffd0451@coco.lan> In-Reply-To: <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> Followup-To: dri-devel@lists.freedesktop.org X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Fri, 14 May 2021 10:06:01 +0100 David Woodhouse escreveu: > On Fri, 2021-05-14 at 10:21 +0200, Mauro Carvalho Chehab wrote: > > Em Wed, 12 May 2021 18:07:04 +0100 > > David Woodhouse escreveu: > > =20 > > > On Wed, 2021-05-12 at 14:50 +0200, Mauro Carvalho Chehab wrote: =20 > > > > Such conversion tools - plus some text editor like LibreOffice or = similar - have > > > > a set of rules that turns some typed ASCII characters into UTF-8 al= ternatives, > > > > for instance converting commas into curly commas and adding non-bre= akable > > > > spaces. All of those are meant to produce better results when the t= ext is > > > > displayed in HTML or PDF formats. =20 > > >=20 > > > And don't we render our documentation into HTML or PDF formats? =20 > >=20 > > Yes. > > =20 > > > Are > > > some of those non-breaking spaces not actually *useful* for their > > > intended purpose? =20 > >=20 > > No. > >=20 > > The thing is: non-breaking space can cause a lot of problems. > >=20 > > We even had to disable Sphinx usage of non-breaking space for > > PDF outputs, as this was causing bad LaTeX/PDF outputs. > >=20 > > See, commit: 3b4c963243b1 ("docs: conf.py: adjust the LaTeX document ou= tput") > >=20 > > The afore mentioned patch disables Sphinx default behavior of > > using NON-BREAKABLE SPACE on literal blocks and strings, using this > > special setting: "parsedliteralwraps=3Dtrue". > >=20 > > When NON-BREAKABLE SPACE were used on PDF outputs, several parts of=20 > > the media uAPI docs were violating the document margins by far, > > causing texts to be truncated. > >=20 > > So, please **don't add NON-BREAKABLE SPACE**, unless you test > > (and keep testing it from time to time) if outputs on all > > formats are properly supporting it on different Sphinx versions. =20 >=20 > And there you have a specific change with a specific fix. Nothing to do > with whether NON-BREAKABLE SPACE is =E2=88=89 ASCII, and *certainly* noth= ing to > do with the fact that, like *every* character in every kernel file > except the *binary* files, it's representable in UTF-8. >=20 > By all means fix the specific characters which are typographically > wrong or which, like NON-BREAKABLE SPACE, cause problems for rendering > the documentation. >=20 >=20 > > Also, most of those came from conversion tools, together with other > > eccentricities, like the usage of U+FEFF (BOM) character at the > > start of some documents. The remaining ones seem to came from=20 > > cut-and-paste. =20 >=20 > ... or which are just entirely redundant and gratuitous, like a BOM in > an environment where all files are UTF-8 and never 16-bit encodings > anyway. Agreed. >=20 > > > > While it is perfectly fine to use UTF-8 characters in Linux, and sp= ecially at > > > > the documentation, it is better to stick to the ASCII subset on = such > > > > particular case, due to a couple of reasons: > > > >=20 > > > > 1. it makes life easier for tools like grep; =20 > > >=20 > > > Barely, as noted, because of things like line feeds. =20 > >=20 > > You can use grep with "-z" to seek for multi-line strings(*), Like: > >=20 > > $ grep -Pzl 'grace period started,\s*then' $(find Documentation/ -type= f) > > Documentation/RCU/Design/Data-Structures/Data-Structures.rst =20 >=20 > Yeah, right. That works if you don't just use the text that you'll have > seen in the HTML/PDF "grace period started, then", and if you instead > craft a *regex* for it, replacing the spaces with '\s*'. Or is that > [[:space:]]* if you don't want to use the experimental Perl regex > feature? >=20 > $ grep -zlr 'grace[[:space:]]\+period[[:space:]]\+started,[[:space:]]\+t= hen' Documentation/RCU > Documentation/RCU/Design/Data-Structures/Data-Structures.rst >=20 > And without '-l' it'll obviously just give you the whole file. No '-A5 > -B5' to see the surroundings... it's hardly a useful thing, is it? >=20 > > (*) Unfortunately, while "git grep" also has a "-z" flag, it > > seems that this is (currently?) broken with regards of handling mul= tilines: > >=20 > > $ git grep -Pzl 'grace period started,\s*then' > > $ =20 >=20 > Even better. So no, multiline grep isn't really a commonly usable > feature at all. >=20 > This is why we prefer to put user-visible strings on one line in C > source code, even if it takes the lines over 80 characters =E2=80=94 to a= llow > for grep to find them. Makes sense, but in case of documentation, this is a little more complex than that.=20 Btw, the theme used when building html by default[1] has a search box (written in Javascript) that could be able to find multi-line patterns, working somewhat similar to "git grep foo -a bar". [1] https://github.com/readthedocs/sphinx_rtd_theme > > [1] If I have a table with UTF-8 codes handy, I could type the UTF-8=20 > > number manually... However, it seems that this is currently broken= =20 > > at least on Fedora 33 (with Mate Desktop and US intl keyboard with= =20 > > dead keys). > >=20 > > Here, U is not working. No idea why. I haven't=20 > > test it for *years*, as I din't see any reason why I would > > need to type UTF-8 characters by numbers until we started > > this thread. =20 >=20 > Please provide the bug number for this; I'd like to track it. Just opened a BZ and added you as c/c. > > Now, I'm not arguing that you can't use whatever UTF-8 symbol you > > want on your docs. I'm just saying that, now that the conversion=20 > > is over and a lot of documents ended getting some UTF-8 characters > > by accident, it is time for a cleanup. =20 >=20 > All text documents are *full* of UTF-8 characters. If there is a file > in the source code which has *any* non-UTF8, we call that a 'binary > file'. >=20 > Again, if you want to make specific fixes like removing non-breaking > spaces and byte order marks, with specific reasons, then those make > sense. But it's got very little to do with UTF-8 and how easy it is to > type them. And the excuse you've put in the commit comment for your > patches is utterly bogus. Let's take one step back, in order to return to the intents of this UTF-8, as the discussions here are not centered into the patches, but instead, on what to do and why. - This discussion started originally at linux-doc ML. While discussing about an issue when machine's locale was not set to UTF-8 on a build VM, we discovered that some converted docs ended with BOM characters. Those specific changes were introduced by some of my convert patches, probably converted via pandoc. So, I went ahead in order to check what other possible weird things were introduced by the conversion, where several scripts and tools were used on files that had already a different markup. I actually checked the current UTF-8 issues, and asked people at linux-doc to comment what of those are valid usecases, and what should be replaced by plain ASCII. Basically, this is the current situation (at docs/docs-next), for the ReST files under Documentation/, excluding translations is: 1. Spaces and BOM - U+00a0 ('=C2=A0'): NO-BREAK SPACE - U+feff ('=EF=BB=BF'): ZERO WIDTH NO-BREAK SPACE (BOM) Based on the discussions there and on this thread, those should be dropped, as BOM is useless and NO-BREAK SPACE can cause problems at the html/pdf output; 2. Symbols - U+00a9 ('=C2=A9'): COPYRIGHT SIGN - U+00ac ('=C2=AC'): NOT SIGN - U+00ae ('=C2=AE'): REGISTERED SIGN - U+00b0 ('=C2=B0'): DEGREE SIGN - U+00b1 ('=C2=B1'): PLUS-MINUS SIGN - U+00b2 ('=C2=B2'): SUPERSCRIPT TWO - U+00b5 ('=C2=B5'): MICRO SIGN - U+03bc ('=CE=BC'): GREEK SMALL LETTER MU - U+00b7 ('=C2=B7'): MIDDLE DOT - U+00bd ('=C2=BD'): VULGAR FRACTION ONE HALF - U+2122 ('=E2=84=A2'): TRADE MARK SIGN - U+2264 ('=E2=89=A4'): LESS-THAN OR EQUAL TO - U+2265 ('=E2=89=A5'): GREATER-THAN OR EQUAL TO - U+2b0d ('=E2=AC=8D'): UP DOWN BLACK ARROW Those seem OK on my eyes. On a side note, both MICRO SIGN and GREEK SMALL LETTER MU are used several docs to represent microseconds, micro-volts and micro-amp=C3=A8res. If we write an orientation document, it probably makes sense to recommend using MICRO SIGN on such cases. 3. Latin - U+00c7 ('=C3=87'): LATIN CAPITAL LETTER C WITH CEDILLA - U+00df ('=C3=9F'): LATIN SMALL LETTER SHARP S - U+00e1 ('=C3=A1'): LATIN SMALL LETTER A WITH ACUTE - U+00e4 ('=C3=A4'): LATIN SMALL LETTER A WITH DIAERESIS - U+00e6 ('=C3=A6'): LATIN SMALL LETTER AE - U+00e7 ('=C3=A7'): LATIN SMALL LETTER C WITH CEDILLA - U+00e9 ('=C3=A9'): LATIN SMALL LETTER E WITH ACUTE - U+00ea ('=C3=AA'): LATIN SMALL LETTER E WITH CIRCUMFLEX - U+00eb ('=C3=AB'): LATIN SMALL LETTER E WITH DIAERESIS - U+00f3 ('=C3=B3'): LATIN SMALL LETTER O WITH ACUTE - U+00f4 ('=C3=B4'): LATIN SMALL LETTER O WITH CIRCUMFLEX - U+00f6 ('=C3=B6'): LATIN SMALL LETTER O WITH DIAERESIS - U+00f8 ('=C3=B8'): LATIN SMALL LETTER O WITH STROKE - U+00fa ('=C3=BA'): LATIN SMALL LETTER U WITH ACUTE - U+00fc ('=C3=BC'): LATIN SMALL LETTER U WITH DIAERESIS - U+00fd ('=C3=BD'): LATIN SMALL LETTER Y WITH ACUTE - U+011f ('=C4=9F'): LATIN SMALL LETTER G WITH BREVE - U+0142 ('=C5=82'): LATIN SMALL LETTER L WITH STROKE Those should be kept as well, as they're used for non-English names. 4. arrows and box drawing symbols: - U+2191 ('=E2=86=91'): UPWARDS ARROW - U+2192 ('=E2=86=92'): RIGHTWARDS ARROW - U+2193 ('=E2=86=93'): DOWNWARDS ARROW - U+2500 ('=E2=94=80'): BOX DRAWINGS LIGHT HORIZONTAL - U+2502 ('=E2=94=82'): BOX DRAWINGS LIGHT VERTICAL - U+2514 ('=E2=94=94'): BOX DRAWINGS LIGHT UP AND RIGHT - U+251c ('=E2=94=9C'): BOX DRAWINGS LIGHT VERTICAL AND RIGHT Also should be kept. In summary, based on the discussions we have so far, I suspect that there's not much to be discussed for the above cases. So, I'll post a v3 of this series, changing only: - U+00a0 ('=C2=A0'): NO-BREAK SPACE - U+feff ('=EF=BB=BF'): ZERO WIDTH NO-BREAK SPACE (BOM) --- Now, this specific patch series address also this extra case: 5. curly commas: - U+2018 ('=E2=80=98'): LEFT SINGLE QUOTATION MARK - U+2019 ('=E2=80=99'): RIGHT SINGLE QUOTATION MARK - U+201c ('=E2=80=9C'): LEFT DOUBLE QUOTATION MARK - U+201d ('=E2=80=9D'): RIGHT DOUBLE QUOTATION MARK IMO, those should be replaced by ASCII commas: ' and ". The rationale is simple:=20 - most were introduced during the conversion from Docbook, markdown and LaTex; - they don't add any extra value, as using "foo" of =E2=80=9Cfoo=E2=80=9D m= eans the same thing; - Sphinx already use "fancy" commas at the output.=20 I guess I will put this on a separate series, as this is not a bug fix, but just a cleanup from the conversion work. I'll re-post those cleanups on a separate series, for patch per patch review. --- The remaining cases are future work, outside the scope of this v2: 6. Hyphen/Dashes and ellipsis - U+2212 ('=E2=88=92'): MINUS SIGN - U+00ad ('=C2=AD'): SOFT HYPHEN - U+2010 ('=E2=80=90'): HYPHEN Those three are used on places where a normal ASCII hyphen/minus should be used instead. There are even a couple of C files which use them instead of '-' on comments. IMO are fixes/cleanups from conversions and bad cut-and-paste. - U+2013 ('=E2=80=93'): EN DASH - U+2014 ('=E2=80=94'): EM DASH - U+2026 ('=E2=80=A6'): HORIZONTAL ELLIPSIS Those are auto-replaced by Sphinx from "--", "---" and "...", respectively. I guess those are a matter of personal preference about weather using ASCII or UTF-8. My personal preference (and Ted seems to have a similar opinion) is to let Sphinx do the conversion. For those, I intend to post a separate series, to be reviewed patch per patch, as this is really a matter of personal taste. Hardly we'll reach a consensus here. 7. math symbols: - U+00d7 ('=C3=97'): MULTIPLICATION SIGN This one is used mostly do describe video resolutions, but this is on a smaller changeset than the ones that use "x" letter. - U+2217 ('=E2=88=97'): ASTERISK OPERATOR This is used only here: Documentation/filesystems/ext4/blockgroup.rst:filesystem size to 2^21 =E2= =88=97 2^27 =3D 2^48bytes or 256TiB. Probably added by some conversion tool. IMO, this one should also be replaced by an ASCII asterisk. I guess I'll post a patch for the ASTERISK OPERATOR. Thanks, Mauro From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D9D7C433B4 for ; Sat, 15 May 2021 08:23:58 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D7A11613B9 for ; Sat, 15 May 2021 08:23:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D7A11613B9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 84D87172E; Sat, 15 May 2021 10:23:04 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 84D87172E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1621067034; bh=GZ+Kn4jT0gb7iB9pP/pJk26tOsd2+CGQf4jvs2zdqBw=; h=Date:From:To:Subject:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=va2IZjEHnDDIq3JRwck2LfTArKq4RrwU6Ao29vW8N7OvdonYGT2l7g8v7NCfN8rzX Y5pOt5Z5LSf2sVA9TXOKy3ZF37YXljAWgFoqAuiHQlnc1R7P0FfrO7ZIKxl+6shmvD CjOvnqaRUYRa3y2TKgkgrcgwCAsVeaZLbLpxK96Q= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 12821F80156; Sat, 15 May 2021 10:23:04 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 4EDA6F80163; Sat, 15 May 2021 10:23:03 +0200 (CEST) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id ABAB7F800DE for ; Sat, 15 May 2021 10:22:51 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz ABAB7F800DE Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iG7hTAT0" Received: by mail.kernel.org (Postfix) with ESMTPSA id 2C190613B9; Sat, 15 May 2021 08:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621066968; bh=GZ+Kn4jT0gb7iB9pP/pJk26tOsd2+CGQf4jvs2zdqBw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=iG7hTAT03WHgFWqqoj0DV+re/0SLdMb3cUSY+SSuTzLrJYQKUGl36xxPlzpJM+obe aYXsMgr2FnrS3UmbhM6x/v0hyySs4FwS7nZabhVI4uZ7oSvYetpsNsa8YF+pHbxJBR Pvc7xud7ZTl9KAziTz3eT27vowbOqKYiG2XDc1TE977RvXZd58WPI/7xagMPnTojJ/ GJWlmOneBx01cy6SZcbDkvz0BdOwIrrlmQD5XJjxn9s8e2uY2fdVvUP3k7z3IeULok mtqmqeDzUbwgUVG+WJhEq15O9UonBwspCZS/Ybte0/0w+ceHppeg8djn6HLQSfz0bi sBmNf+UX/Tqtg== Date: Sat, 15 May 2021 10:22:39 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Subject: Re: [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols Message-ID: <20210515102239.2ffd0451@coco.lan> In-Reply-To: <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> Followup-To: dri-devel@lists.freedesktop.org X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: alsa-devel@alsa-project.org, kvm@vger.kernel.org, Linux Doc Mailing List , linux-iio@vger.kernel.org, linux-pci@vger.kernel.org, keyrings@vger.kernel.org, linux-sgx@vger.kernel.org, Jonathan Corbet , linux-rdma@vger.kernel.org, linux-acpi@vger.kernel.org, Mali DP Maintainers , linux-input@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-ext4@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-media@vger.kernel.org, linux-pm@vger.kernel.org, coresight@lists.linaro.org, rcu@vger.kernel.org, mjpeg-users@lists.sourceforge.net, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org, linux-hwmon@vger.kernel.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-integrity@vger.kernel.org X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" Em Fri, 14 May 2021 10:06:01 +0100 David Woodhouse escreveu: > On Fri, 2021-05-14 at 10:21 +0200, Mauro Carvalho Chehab wrote: > > Em Wed, 12 May 2021 18:07:04 +0100 > > David Woodhouse escreveu: > > =20 > > > On Wed, 2021-05-12 at 14:50 +0200, Mauro Carvalho Chehab wrote: =20 > > > > Such conversion tools - plus some text editor like LibreOffice or = similar - have > > > > a set of rules that turns some typed ASCII characters into UTF-8 al= ternatives, > > > > for instance converting commas into curly commas and adding non-bre= akable > > > > spaces. All of those are meant to produce better results when the t= ext is > > > > displayed in HTML or PDF formats. =20 > > >=20 > > > And don't we render our documentation into HTML or PDF formats? =20 > >=20 > > Yes. > > =20 > > > Are > > > some of those non-breaking spaces not actually *useful* for their > > > intended purpose? =20 > >=20 > > No. > >=20 > > The thing is: non-breaking space can cause a lot of problems. > >=20 > > We even had to disable Sphinx usage of non-breaking space for > > PDF outputs, as this was causing bad LaTeX/PDF outputs. > >=20 > > See, commit: 3b4c963243b1 ("docs: conf.py: adjust the LaTeX document ou= tput") > >=20 > > The afore mentioned patch disables Sphinx default behavior of > > using NON-BREAKABLE SPACE on literal blocks and strings, using this > > special setting: "parsedliteralwraps=3Dtrue". > >=20 > > When NON-BREAKABLE SPACE were used on PDF outputs, several parts of=20 > > the media uAPI docs were violating the document margins by far, > > causing texts to be truncated. > >=20 > > So, please **don't add NON-BREAKABLE SPACE**, unless you test > > (and keep testing it from time to time) if outputs on all > > formats are properly supporting it on different Sphinx versions. =20 >=20 > And there you have a specific change with a specific fix. Nothing to do > with whether NON-BREAKABLE SPACE is =E2=88=89 ASCII, and *certainly* noth= ing to > do with the fact that, like *every* character in every kernel file > except the *binary* files, it's representable in UTF-8. >=20 > By all means fix the specific characters which are typographically > wrong or which, like NON-BREAKABLE SPACE, cause problems for rendering > the documentation. >=20 >=20 > > Also, most of those came from conversion tools, together with other > > eccentricities, like the usage of U+FEFF (BOM) character at the > > start of some documents. The remaining ones seem to came from=20 > > cut-and-paste. =20 >=20 > ... or which are just entirely redundant and gratuitous, like a BOM in > an environment where all files are UTF-8 and never 16-bit encodings > anyway. Agreed. >=20 > > > > While it is perfectly fine to use UTF-8 characters in Linux, and sp= ecially at > > > > the documentation, it is better to stick to the ASCII subset on = such > > > > particular case, due to a couple of reasons: > > > >=20 > > > > 1. it makes life easier for tools like grep; =20 > > >=20 > > > Barely, as noted, because of things like line feeds. =20 > >=20 > > You can use grep with "-z" to seek for multi-line strings(*), Like: > >=20 > > $ grep -Pzl 'grace period started,\s*then' $(find Documentation/ -type= f) > > Documentation/RCU/Design/Data-Structures/Data-Structures.rst =20 >=20 > Yeah, right. That works if you don't just use the text that you'll have > seen in the HTML/PDF "grace period started, then", and if you instead > craft a *regex* for it, replacing the spaces with '\s*'. Or is that > [[:space:]]* if you don't want to use the experimental Perl regex > feature? >=20 > $ grep -zlr 'grace[[:space:]]\+period[[:space:]]\+started,[[:space:]]\+t= hen' Documentation/RCU > Documentation/RCU/Design/Data-Structures/Data-Structures.rst >=20 > And without '-l' it'll obviously just give you the whole file. No '-A5 > -B5' to see the surroundings... it's hardly a useful thing, is it? >=20 > > (*) Unfortunately, while "git grep" also has a "-z" flag, it > > seems that this is (currently?) broken with regards of handling mul= tilines: > >=20 > > $ git grep -Pzl 'grace period started,\s*then' > > $ =20 >=20 > Even better. So no, multiline grep isn't really a commonly usable > feature at all. >=20 > This is why we prefer to put user-visible strings on one line in C > source code, even if it takes the lines over 80 characters =E2=80=94 to a= llow > for grep to find them. Makes sense, but in case of documentation, this is a little more complex than that.=20 Btw, the theme used when building html by default[1] has a search box (written in Javascript) that could be able to find multi-line patterns, working somewhat similar to "git grep foo -a bar". [1] https://github.com/readthedocs/sphinx_rtd_theme > > [1] If I have a table with UTF-8 codes handy, I could type the UTF-8=20 > > number manually... However, it seems that this is currently broken= =20 > > at least on Fedora 33 (with Mate Desktop and US intl keyboard with= =20 > > dead keys). > >=20 > > Here, U is not working. No idea why. I haven't=20 > > test it for *years*, as I din't see any reason why I would > > need to type UTF-8 characters by numbers until we started > > this thread. =20 >=20 > Please provide the bug number for this; I'd like to track it. Just opened a BZ and added you as c/c. > > Now, I'm not arguing that you can't use whatever UTF-8 symbol you > > want on your docs. I'm just saying that, now that the conversion=20 > > is over and a lot of documents ended getting some UTF-8 characters > > by accident, it is time for a cleanup. =20 >=20 > All text documents are *full* of UTF-8 characters. If there is a file > in the source code which has *any* non-UTF8, we call that a 'binary > file'. >=20 > Again, if you want to make specific fixes like removing non-breaking > spaces and byte order marks, with specific reasons, then those make > sense. But it's got very little to do with UTF-8 and how easy it is to > type them. And the excuse you've put in the commit comment for your > patches is utterly bogus. Let's take one step back, in order to return to the intents of this UTF-8, as the discussions here are not centered into the patches, but instead, on what to do and why. - This discussion started originally at linux-doc ML. While discussing about an issue when machine's locale was not set to UTF-8 on a build VM, we discovered that some converted docs ended with BOM characters. Those specific changes were introduced by some of my convert patches, probably converted via pandoc. So, I went ahead in order to check what other possible weird things were introduced by the conversion, where several scripts and tools were used on files that had already a different markup. I actually checked the current UTF-8 issues, and asked people at linux-doc to comment what of those are valid usecases, and what should be replaced by plain ASCII. Basically, this is the current situation (at docs/docs-next), for the ReST files under Documentation/, excluding translations is: 1. Spaces and BOM - U+00a0 ('=C2=A0'): NO-BREAK SPACE - U+feff ('=EF=BB=BF'): ZERO WIDTH NO-BREAK SPACE (BOM) Based on the discussions there and on this thread, those should be dropped, as BOM is useless and NO-BREAK SPACE can cause problems at the html/pdf output; 2. Symbols - U+00a9 ('=C2=A9'): COPYRIGHT SIGN - U+00ac ('=C2=AC'): NOT SIGN - U+00ae ('=C2=AE'): REGISTERED SIGN - U+00b0 ('=C2=B0'): DEGREE SIGN - U+00b1 ('=C2=B1'): PLUS-MINUS SIGN - U+00b2 ('=C2=B2'): SUPERSCRIPT TWO - U+00b5 ('=C2=B5'): MICRO SIGN - U+03bc ('=CE=BC'): GREEK SMALL LETTER MU - U+00b7 ('=C2=B7'): MIDDLE DOT - U+00bd ('=C2=BD'): VULGAR FRACTION ONE HALF - U+2122 ('=E2=84=A2'): TRADE MARK SIGN - U+2264 ('=E2=89=A4'): LESS-THAN OR EQUAL TO - U+2265 ('=E2=89=A5'): GREATER-THAN OR EQUAL TO - U+2b0d ('=E2=AC=8D'): UP DOWN BLACK ARROW Those seem OK on my eyes. On a side note, both MICRO SIGN and GREEK SMALL LETTER MU are used several docs to represent microseconds, micro-volts and micro-amp=C3=A8res. If we write an orientation document, it probably makes sense to recommend using MICRO SIGN on such cases. 3. Latin - U+00c7 ('=C3=87'): LATIN CAPITAL LETTER C WITH CEDILLA - U+00df ('=C3=9F'): LATIN SMALL LETTER SHARP S - U+00e1 ('=C3=A1'): LATIN SMALL LETTER A WITH ACUTE - U+00e4 ('=C3=A4'): LATIN SMALL LETTER A WITH DIAERESIS - U+00e6 ('=C3=A6'): LATIN SMALL LETTER AE - U+00e7 ('=C3=A7'): LATIN SMALL LETTER C WITH CEDILLA - U+00e9 ('=C3=A9'): LATIN SMALL LETTER E WITH ACUTE - U+00ea ('=C3=AA'): LATIN SMALL LETTER E WITH CIRCUMFLEX - U+00eb ('=C3=AB'): LATIN SMALL LETTER E WITH DIAERESIS - U+00f3 ('=C3=B3'): LATIN SMALL LETTER O WITH ACUTE - U+00f4 ('=C3=B4'): LATIN SMALL LETTER O WITH CIRCUMFLEX - U+00f6 ('=C3=B6'): LATIN SMALL LETTER O WITH DIAERESIS - U+00f8 ('=C3=B8'): LATIN SMALL LETTER O WITH STROKE - U+00fa ('=C3=BA'): LATIN SMALL LETTER U WITH ACUTE - U+00fc ('=C3=BC'): LATIN SMALL LETTER U WITH DIAERESIS - U+00fd ('=C3=BD'): LATIN SMALL LETTER Y WITH ACUTE - U+011f ('=C4=9F'): LATIN SMALL LETTER G WITH BREVE - U+0142 ('=C5=82'): LATIN SMALL LETTER L WITH STROKE Those should be kept as well, as they're used for non-English names. 4. arrows and box drawing symbols: - U+2191 ('=E2=86=91'): UPWARDS ARROW - U+2192 ('=E2=86=92'): RIGHTWARDS ARROW - U+2193 ('=E2=86=93'): DOWNWARDS ARROW - U+2500 ('=E2=94=80'): BOX DRAWINGS LIGHT HORIZONTAL - U+2502 ('=E2=94=82'): BOX DRAWINGS LIGHT VERTICAL - U+2514 ('=E2=94=94'): BOX DRAWINGS LIGHT UP AND RIGHT - U+251c ('=E2=94=9C'): BOX DRAWINGS LIGHT VERTICAL AND RIGHT Also should be kept. In summary, based on the discussions we have so far, I suspect that there's not much to be discussed for the above cases. So, I'll post a v3 of this series, changing only: - U+00a0 ('=C2=A0'): NO-BREAK SPACE - U+feff ('=EF=BB=BF'): ZERO WIDTH NO-BREAK SPACE (BOM) --- Now, this specific patch series address also this extra case: 5. curly commas: - U+2018 ('=E2=80=98'): LEFT SINGLE QUOTATION MARK - U+2019 ('=E2=80=99'): RIGHT SINGLE QUOTATION MARK - U+201c ('=E2=80=9C'): LEFT DOUBLE QUOTATION MARK - U+201d ('=E2=80=9D'): RIGHT DOUBLE QUOTATION MARK IMO, those should be replaced by ASCII commas: ' and ". The rationale is simple:=20 - most were introduced during the conversion from Docbook, markdown and LaTex; - they don't add any extra value, as using "foo" of =E2=80=9Cfoo=E2=80=9D m= eans the same thing; - Sphinx already use "fancy" commas at the output.=20 I guess I will put this on a separate series, as this is not a bug fix, but just a cleanup from the conversion work. I'll re-post those cleanups on a separate series, for patch per patch review. --- The remaining cases are future work, outside the scope of this v2: 6. Hyphen/Dashes and ellipsis - U+2212 ('=E2=88=92'): MINUS SIGN - U+00ad ('=C2=AD'): SOFT HYPHEN - U+2010 ('=E2=80=90'): HYPHEN Those three are used on places where a normal ASCII hyphen/minus should be used instead. There are even a couple of C files which use them instead of '-' on comments. IMO are fixes/cleanups from conversions and bad cut-and-paste. - U+2013 ('=E2=80=93'): EN DASH - U+2014 ('=E2=80=94'): EM DASH - U+2026 ('=E2=80=A6'): HORIZONTAL ELLIPSIS Those are auto-replaced by Sphinx from "--", "---" and "...", respectively. I guess those are a matter of personal preference about weather using ASCII or UTF-8. My personal preference (and Ted seems to have a similar opinion) is to let Sphinx do the conversion. For those, I intend to post a separate series, to be reviewed patch per patch, as this is really a matter of personal taste. Hardly we'll reach a consensus here. 7. math symbols: - U+00d7 ('=C3=97'): MULTIPLICATION SIGN This one is used mostly do describe video resolutions, but this is on a smaller changeset than the ones that use "x" letter. - U+2217 ('=E2=88=97'): ASTERISK OPERATOR This is used only here: Documentation/filesystems/ext4/blockgroup.rst:filesystem size to 2^21 =E2= =88=97 2^27 =3D 2^48bytes or 256TiB. Probably added by some conversion tool. IMO, this one should also be replaced by an ASCII asterisk. I guess I'll post a patch for the ASTERISK OPERATOR. Thanks, Mauro From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 985B7C433ED for ; Sat, 15 May 2021 08:24:42 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 25B6E613FC for ; Sat, 15 May 2021 08:24:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 25B6E613FC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MsfymXUZGvxidRz3hQ6YIoVB51yD6p9+ICltMdM0wzs=; b=IrJXTTljQXq623+uUtsngoS44 NedybnTxcOdCQWiBGLZXNXDULr0wR2Xhx+wNQmOZM0SZ6rLFbtOM/989o+rCuKjEpmtUVwNiv99i7 MBWOZ+2lyI0Fj4tlxsiDvUbeGk+q2bY8lDPgIo+OVbo983cKCLGByXexNabAooddhxJfcCcwk2wZy aRanDd+tLJvyFB2Cck52so70FNDu600Kq/0vdE3bMpA4D1pyBsKU5hJmWBXeVeiL4HTZblKZhSo9F VSIStBUYQ/XLkxS93P62ZTQxV0Np2iky4ZGjqWDlPa6MfiW9lodBzZKCi6C59AfdlXNniWJwkEzzf umNyd86iA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lhpZX-009yDX-VY; Sat, 15 May 2021 08:22:56 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lhpZU-009yCs-RS for linux-arm-kernel@desiato.infradead.org; Sat, 15 May 2021 08:22:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Subject:Cc:To: From:Date:Sender:Reply-To:Content-ID:Content-Description; bh=Ok5gS5fHgyJqZj2Rne0uz442ES4fwsXgi6K+D6X/NuE=; b=NDKazO0akx9Yxuy5yllddX+G2Y CiXeXlxa2iBnXukjx7JLQivSQSJIobpYn9XruHZ5/8FdowkjdptYiXJDtC5E2vTZNAegHOtVI67t2 RXCGuW/bz1LpbRQQXBEDjx6ObgzolTJROBDIlvqmu+4qcjbWIPA7ef/IvsJ+lSQLdVAsH6vLMIQeZ qPAQX960zWGufDJl0MBojAiumRiTN7+7eYDrr/A0DCgm7FEc7lHE0jQ9XU4wBhX9a9fANj/lKz85o eCnLW4h9guSvV/Z3n3EgYYqAONs304fM48Ey5AG/3lBle878QyC0oaGCZIt1/QTerRy7DunhUlSLA zRCsQSoQ==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lhpZR-00CRs2-87 for linux-arm-kernel@lists.infradead.org; Sat, 15 May 2021 08:22:51 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2C190613B9; Sat, 15 May 2021 08:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621066968; bh=GZ+Kn4jT0gb7iB9pP/pJk26tOsd2+CGQf4jvs2zdqBw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=iG7hTAT03WHgFWqqoj0DV+re/0SLdMb3cUSY+SSuTzLrJYQKUGl36xxPlzpJM+obe aYXsMgr2FnrS3UmbhM6x/v0hyySs4FwS7nZabhVI4uZ7oSvYetpsNsa8YF+pHbxJBR Pvc7xud7ZTl9KAziTz3eT27vowbOqKYiG2XDc1TE977RvXZd58WPI/7xagMPnTojJ/ GJWlmOneBx01cy6SZcbDkvz0BdOwIrrlmQD5XJjxn9s8e2uY2fdVvUP3k7z3IeULok mtqmqeDzUbwgUVG+WJhEq15O9UonBwspCZS/Ybte0/0w+ceHppeg8djn6HLQSfz0bi sBmNf+UX/Tqtg== Date: Sat, 15 May 2021 10:22:39 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Cc: Linux Doc Mailing List , linux-kernel@vger.kernel.org, Jonathan Corbet , Mali DP Maintainers , alsa-devel@alsa-project.org, coresight@lists.linaro.org, intel-gfx@lists.freedesktop.org, intel-wired-lan@lists.osuosl.org, keyrings@vger.kernel.org, kvm@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-input@vger.kernel.org, linux-integrity@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, linux-rdma@vger.kernel.org, linux-sgx@vger.kernel.org, linux-usb@vger.kernel.org, mjpeg-users@lists.sourceforge.net, netdev@vger.kernel.org, rcu@vger.kernel.org Subject: Re: [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols Message-ID: <20210515102239.2ffd0451@coco.lan> In-Reply-To: <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> Followup-To: dri-devel@lists.freedesktop.org X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210515_012249_387315_68340F18 X-CRM114-Status: GOOD ( 67.34 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RW0gRnJpLCAxNCBNYXkgMjAyMSAxMDowNjowMSArMDEwMApEYXZpZCBXb29kaG91c2UgPGR3bXcy QGluZnJhZGVhZC5vcmc+IGVzY3JldmV1OgoKPiBPbiBGcmksIDIwMjEtMDUtMTQgYXQgMTA6MjEg KzAyMDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZToKPiA+IEVtIFdlZCwgMTIgTWF5IDIw MjEgMTg6MDc6MDQgKzAxMDAKPiA+IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFkLm9y Zz4gZXNjcmV2ZXU6Cj4gPiAgIAo+ID4gPiBPbiBXZWQsIDIwMjEtMDUtMTIgYXQgMTQ6NTAgKzAy MDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZTogIAo+ID4gPiA+IFN1Y2ggY29udmVyc2lv biB0b29scyAtIHBsdXMgc29tZSB0ZXh0IGVkaXRvciBsaWtlIExpYnJlT2ZmaWNlICBvciBzaW1p bGFyICAtIGhhdmUKPiA+ID4gPiBhIHNldCBvZiBydWxlcyB0aGF0IHR1cm5zIHNvbWUgdHlwZWQg QVNDSUkgY2hhcmFjdGVycyBpbnRvIFVURi04IGFsdGVybmF0aXZlcywKPiA+ID4gPiBmb3IgaW5z dGFuY2UgY29udmVydGluZyBjb21tYXMgaW50byBjdXJseSBjb21tYXMgYW5kIGFkZGluZyBub24t YnJlYWthYmxlCj4gPiA+ID4gc3BhY2VzLiBBbGwgb2YgdGhvc2UgYXJlIG1lYW50IHRvIHByb2R1 Y2UgYmV0dGVyIHJlc3VsdHMgd2hlbiB0aGUgdGV4dCBpcwo+ID4gPiA+IGRpc3BsYXllZCBpbiBI VE1MIG9yIFBERiBmb3JtYXRzLiAgICAKPiA+ID4gCj4gPiA+IEFuZCBkb24ndCB3ZSByZW5kZXIg b3VyIGRvY3VtZW50YXRpb24gaW50byBIVE1MIG9yIFBERiBmb3JtYXRzPyAgIAo+ID4gCj4gPiBZ ZXMuCj4gPiAgIAo+ID4gPiBBcmUKPiA+ID4gc29tZSBvZiB0aG9zZSBub24tYnJlYWtpbmcgc3Bh Y2VzIG5vdCBhY3R1YWxseSAqdXNlZnVsKiBmb3IgdGhlaXIKPiA+ID4gaW50ZW5kZWQgcHVycG9z ZT8gIAo+ID4gCj4gPiBOby4KPiA+IAo+ID4gVGhlIHRoaW5nIGlzOiBub24tYnJlYWtpbmcgc3Bh Y2UgY2FuIGNhdXNlIGEgbG90IG9mIHByb2JsZW1zLgo+ID4gCj4gPiBXZSBldmVuIGhhZCB0byBk aXNhYmxlIFNwaGlueCB1c2FnZSBvZiBub24tYnJlYWtpbmcgc3BhY2UgZm9yCj4gPiBQREYgb3V0 cHV0cywgYXMgdGhpcyB3YXMgY2F1c2luZyBiYWQgTGFUZVgvUERGIG91dHB1dHMuCj4gPiAKPiA+ IFNlZSwgY29tbWl0OiAzYjRjOTYzMjQzYjEgKCJkb2NzOiBjb25mLnB5OiBhZGp1c3QgdGhlIExh VGVYIGRvY3VtZW50IG91dHB1dCIpCj4gPiAKPiA+IFRoZSBhZm9yZSBtZW50aW9uZWQgcGF0Y2gg ZGlzYWJsZXMgU3BoaW54IGRlZmF1bHQgYmVoYXZpb3Igb2YKPiA+IHVzaW5nIE5PTi1CUkVBS0FC TEUgU1BBQ0Ugb24gbGl0ZXJhbCBibG9ja3MgYW5kIHN0cmluZ3MsIHVzaW5nIHRoaXMKPiA+IHNw ZWNpYWwgc2V0dGluZzogInBhcnNlZGxpdGVyYWx3cmFwcz10cnVlIi4KPiA+IAo+ID4gV2hlbiBO T04tQlJFQUtBQkxFIFNQQUNFIHdlcmUgdXNlZCBvbiBQREYgb3V0cHV0cywgc2V2ZXJhbCBwYXJ0 cyBvZiAKPiA+IHRoZSBtZWRpYSB1QVBJIGRvY3Mgd2VyZSB2aW9sYXRpbmcgdGhlIGRvY3VtZW50 IG1hcmdpbnMgYnkgZmFyLAo+ID4gY2F1c2luZyB0ZXh0cyB0byBiZSB0cnVuY2F0ZWQuCj4gPiAK PiA+IFNvLCBwbGVhc2UgKipkb24ndCBhZGQgTk9OLUJSRUFLQUJMRSBTUEFDRSoqLCB1bmxlc3Mg eW91IHRlc3QKPiA+IChhbmQga2VlcCB0ZXN0aW5nIGl0IGZyb20gdGltZSB0byB0aW1lKSBpZiBv dXRwdXRzIG9uIGFsbAo+ID4gZm9ybWF0cyBhcmUgcHJvcGVybHkgc3VwcG9ydGluZyBpdCBvbiBk aWZmZXJlbnQgU3BoaW54IHZlcnNpb25zLiAgCj4gCj4gQW5kIHRoZXJlIHlvdSBoYXZlIGEgc3Bl Y2lmaWMgY2hhbmdlIHdpdGggYSBzcGVjaWZpYyBmaXguIE5vdGhpbmcgdG8gZG8KPiB3aXRoIHdo ZXRoZXIgTk9OLUJSRUFLQUJMRSBTUEFDRSBpcyDiiIkgQVNDSUksIGFuZCAqY2VydGFpbmx5KiBu b3RoaW5nIHRvCj4gZG8gd2l0aCB0aGUgZmFjdCB0aGF0LCBsaWtlICpldmVyeSogY2hhcmFjdGVy IGluIGV2ZXJ5IGtlcm5lbCBmaWxlCj4gZXhjZXB0IHRoZSAqYmluYXJ5KiBmaWxlcywgaXQncyBy ZXByZXNlbnRhYmxlIGluIFVURi04Lgo+IAo+IEJ5IGFsbCBtZWFucyBmaXggdGhlIHNwZWNpZmlj IGNoYXJhY3RlcnMgd2hpY2ggYXJlIHR5cG9ncmFwaGljYWxseQo+IHdyb25nIG9yIHdoaWNoLCBs aWtlIE5PTi1CUkVBS0FCTEUgU1BBQ0UsIGNhdXNlIHByb2JsZW1zIGZvciByZW5kZXJpbmcKPiB0 aGUgZG9jdW1lbnRhdGlvbi4KPiAKPiAKPiA+IEFsc28sIG1vc3Qgb2YgdGhvc2UgY2FtZSBmcm9t IGNvbnZlcnNpb24gdG9vbHMsIHRvZ2V0aGVyIHdpdGggb3RoZXIKPiA+IGVjY2VudHJpY2l0aWVz LCBsaWtlIHRoZSB1c2FnZSBvZiBVK0ZFRkYgKEJPTSkgY2hhcmFjdGVyIGF0IHRoZQo+ID4gc3Rh cnQgb2Ygc29tZSBkb2N1bWVudHMuIFRoZSByZW1haW5pbmcgb25lcyBzZWVtIHRvIGNhbWUgZnJv bSAKPiA+IGN1dC1hbmQtcGFzdGUuICAKPiAKPiAuLi4gb3Igd2hpY2ggYXJlIGp1c3QgZW50aXJl bHkgcmVkdW5kYW50IGFuZCBncmF0dWl0b3VzLCBsaWtlIGEgQk9NIGluCj4gYW4gZW52aXJvbm1l bnQgd2hlcmUgYWxsIGZpbGVzIGFyZSBVVEYtOCBhbmQgbmV2ZXIgMTYtYml0IGVuY29kaW5ncwo+ IGFueXdheS4KCkFncmVlZC4KCj4gCj4gPiA+ID4gV2hpbGUgaXQgaXMgcGVyZmVjdGx5IGZpbmUg dG8gdXNlIFVURi04IGNoYXJhY3RlcnMgaW4gTGludXgsIGFuZCBzcGVjaWFsbHkgYXQKPiA+ID4g PiB0aGUgZG9jdW1lbnRhdGlvbiwgIGl0IGlzIGJldHRlciB0byAgc3RpY2sgdG8gdGhlIEFTQ0lJ IHN1YnNldCAgb24gc3VjaAo+ID4gPiA+IHBhcnRpY3VsYXIgY2FzZSwgIGR1ZSB0byBhIGNvdXBs ZSBvZiByZWFzb25zOgo+ID4gPiA+IAo+ID4gPiA+IDEuIGl0IG1ha2VzIGxpZmUgZWFzaWVyIGZv ciB0b29scyBsaWtlIGdyZXA7ICAgIAo+ID4gPiAKPiA+ID4gQmFyZWx5LCBhcyBub3RlZCwgYmVj YXVzZSBvZiB0aGluZ3MgbGlrZSBsaW5lIGZlZWRzLiAgCj4gPiAKPiA+IFlvdSBjYW4gdXNlIGdy ZXAgd2l0aCAiLXoiIHRvIHNlZWsgZm9yIG11bHRpLWxpbmUgc3RyaW5ncygqKSwgTGlrZToKPiA+ IAo+ID4gCSQgZ3JlcCAtUHpsICdncmFjZSBwZXJpb2Qgc3RhcnRlZCxccyp0aGVuJyAkKGZpbmQg RG9jdW1lbnRhdGlvbi8gLXR5cGUgZikKPiA+IAlEb2N1bWVudGF0aW9uL1JDVS9EZXNpZ24vRGF0 YS1TdHJ1Y3R1cmVzL0RhdGEtU3RydWN0dXJlcy5yc3QgIAo+IAo+IFllYWgsIHJpZ2h0LiBUaGF0 IHdvcmtzIGlmIHlvdSBkb24ndCBqdXN0IHVzZSB0aGUgdGV4dCB0aGF0IHlvdSdsbCBoYXZlCj4g c2VlbiBpbiB0aGUgSFRNTC9QREYgImdyYWNlIHBlcmlvZCBzdGFydGVkLCB0aGVuIiwgYW5kIGlm IHlvdSBpbnN0ZWFkCj4gY3JhZnQgYSAqcmVnZXgqIGZvciBpdCwgcmVwbGFjaW5nIHRoZSBzcGFj ZXMgd2l0aCAnXHMqJy4gT3IgaXMgdGhhdAo+IFtbOnNwYWNlOl1dKiBpZiB5b3UgZG9uJ3Qgd2Fu dCB0byB1c2UgdGhlIGV4cGVyaW1lbnRhbCBQZXJsIHJlZ2V4Cj4gZmVhdHVyZT8KPiAKPiAgJCBn cmVwIC16bHIgJ2dyYWNlW1s6c3BhY2U6XV1cK3BlcmlvZFtbOnNwYWNlOl1dXCtzdGFydGVkLFtb OnNwYWNlOl1dXCt0aGVuJyBEb2N1bWVudGF0aW9uL1JDVQo+IERvY3VtZW50YXRpb24vUkNVL0Rl c2lnbi9EYXRhLVN0cnVjdHVyZXMvRGF0YS1TdHJ1Y3R1cmVzLnJzdAo+IAo+IEFuZCB3aXRob3V0 ICctbCcgaXQnbGwgb2J2aW91c2x5IGp1c3QgZ2l2ZSB5b3UgdGhlIHdob2xlIGZpbGUuIE5vICct QTUKPiAtQjUnIHRvIHNlZSB0aGUgc3Vycm91bmRpbmdzLi4uIGl0J3MgaGFyZGx5IGEgdXNlZnVs IHRoaW5nLCBpcyBpdD8KPiAKPiA+ICgqKSBVbmZvcnR1bmF0ZWx5LCB3aGlsZSAiZ2l0IGdyZXAi IGFsc28gaGFzIGEgIi16IiBmbGFnLCBpdAo+ID4gICAgIHNlZW1zIHRoYXQgdGhpcyBpcyAoY3Vy cmVudGx5PykgYnJva2VuIHdpdGggcmVnYXJkcyBvZiBoYW5kbGluZyBtdWx0aWxpbmVzOgo+ID4g Cj4gPiAJJCBnaXQgZ3JlcCAtUHpsICdncmFjZSBwZXJpb2Qgc3RhcnRlZCxccyp0aGVuJwo+ID4g CSQgIAo+IAo+IEV2ZW4gYmV0dGVyLiBTbyBubywgbXVsdGlsaW5lIGdyZXAgaXNuJ3QgcmVhbGx5 IGEgY29tbW9ubHkgdXNhYmxlCj4gZmVhdHVyZSBhdCBhbGwuCj4gCj4gVGhpcyBpcyB3aHkgd2Ug cHJlZmVyIHRvIHB1dCB1c2VyLXZpc2libGUgc3RyaW5ncyBvbiBvbmUgbGluZSBpbiBDCj4gc291 cmNlIGNvZGUsIGV2ZW4gaWYgaXQgdGFrZXMgdGhlIGxpbmVzIG92ZXIgODAgY2hhcmFjdGVycyDi gJQgdG8gYWxsb3cKPiBmb3IgZ3JlcCB0byBmaW5kIHRoZW0uCgpNYWtlcyBzZW5zZSwgYnV0IGlu IGNhc2Ugb2YgZG9jdW1lbnRhdGlvbiwgdGhpcyBpcyBhIGxpdHRsZSBtb3JlCmNvbXBsZXggdGhh biB0aGF0LiAKCkJ0dywgdGhlIHRoZW1lIHVzZWQgd2hlbiBidWlsZGluZyBodG1sIGJ5IGRlZmF1 bHRbMV0gaGFzIGEgc2VhcmNoCmJveCAod3JpdHRlbiBpbiBKYXZhc2NyaXB0KSB0aGF0IGNvdWxk IGJlIGFibGUgdG8gZmluZCBtdWx0aS1saW5lCnBhdHRlcm5zLCB3b3JraW5nIHNvbWV3aGF0IHNp bWlsYXIgdG8gImdpdCBncmVwIGZvbyAtYSBiYXIiLgoKWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9y ZWFkdGhlZG9jcy9zcGhpbnhfcnRkX3RoZW1lCgo+ID4gWzFdIElmIEkgaGF2ZSBhIHRhYmxlIHdp dGggVVRGLTggY29kZXMgaGFuZHksIEkgY291bGQgdHlwZSB0aGUgVVRGLTggCj4gPiAgICAgbnVt YmVyIG1hbnVhbGx5Li4uIEhvd2V2ZXIsIGl0IHNlZW1zIHRoYXQgdGhpcyBpcyBjdXJyZW50bHkg YnJva2VuIAo+ID4gICAgIGF0IGxlYXN0IG9uIEZlZG9yYSAzMyAod2l0aCBNYXRlIERlc2t0b3Ag YW5kIFVTIGludGwga2V5Ym9hcmQgd2l0aCAKPiA+ICAgICBkZWFkIGtleXMpLgo+ID4gCj4gPiAg ICAgSGVyZSwgPENUUkw+PFNISUZUPlUgaXMgbm90IHdvcmtpbmcuIE5vIGlkZWEgd2h5LiBJIGhh dmVuJ3QgCj4gPiAgICAgdGVzdCBpdCBmb3IgKnllYXJzKiwgYXMgSSBkaW4ndCBzZWUgYW55IHJl YXNvbiB3aHkgSSB3b3VsZAo+ID4gICAgIG5lZWQgdG8gdHlwZSBVVEYtOCBjaGFyYWN0ZXJzIGJ5 IG51bWJlcnMgdW50aWwgd2Ugc3RhcnRlZAo+ID4gICAgIHRoaXMgdGhyZWFkLiAgCj4gCj4gUGxl YXNlIHByb3ZpZGUgdGhlIGJ1ZyBudW1iZXIgZm9yIHRoaXM7IEknZCBsaWtlIHRvIHRyYWNrIGl0 LgoKSnVzdCBvcGVuZWQgYSBCWiBhbmQgYWRkZWQgeW91IGFzIGMvYy4KCj4gPiBOb3csIEknbSBu b3QgYXJndWluZyB0aGF0IHlvdSBjYW4ndCB1c2Ugd2hhdGV2ZXIgVVRGLTggc3ltYm9sIHlvdQo+ ID4gd2FudCBvbiB5b3VyIGRvY3MuIEknbSBqdXN0IHNheWluZyB0aGF0LCBub3cgdGhhdCB0aGUg Y29udmVyc2lvbiAKPiA+IGlzIG92ZXIgYW5kIGEgbG90IG9mIGRvY3VtZW50cyBlbmRlZCBnZXR0 aW5nIHNvbWUgVVRGLTggY2hhcmFjdGVycwo+ID4gYnkgYWNjaWRlbnQsIGl0IGlzIHRpbWUgZm9y IGEgY2xlYW51cC4gIAo+IAo+IEFsbCB0ZXh0IGRvY3VtZW50cyBhcmUgKmZ1bGwqIG9mIFVURi04 IGNoYXJhY3RlcnMuIElmIHRoZXJlIGlzIGEgZmlsZQo+IGluIHRoZSBzb3VyY2UgY29kZSB3aGlj aCBoYXMgKmFueSogbm9uLVVURjgsIHdlIGNhbGwgdGhhdCBhICdiaW5hcnkKPiBmaWxlJy4KPiAK PiBBZ2FpbiwgaWYgeW91IHdhbnQgdG8gbWFrZSBzcGVjaWZpYyBmaXhlcyBsaWtlIHJlbW92aW5n IG5vbi1icmVha2luZwo+IHNwYWNlcyBhbmQgYnl0ZSBvcmRlciBtYXJrcywgd2l0aCBzcGVjaWZp YyByZWFzb25zLCB0aGVuIHRob3NlIG1ha2UKPiBzZW5zZS4gQnV0IGl0J3MgZ290IHZlcnkgbGl0 dGxlIHRvIGRvIHdpdGggVVRGLTggYW5kIGhvdyBlYXN5IGl0IGlzIHRvCj4gdHlwZSB0aGVtLiBB bmQgdGhlIGV4Y3VzZSB5b3UndmUgcHV0IGluIHRoZSBjb21taXQgY29tbWVudCBmb3IgeW91cgo+ IHBhdGNoZXMgaXMgdXR0ZXJseSBib2d1cy4KCkxldCdzIHRha2Ugb25lIHN0ZXAgYmFjaywgaW4g b3JkZXIgdG8gcmV0dXJuIHRvIHRoZSBpbnRlbnRzIG9mIHRoaXMKVVRGLTgsIGFzIHRoZSBkaXNj dXNzaW9ucyBoZXJlIGFyZSBub3QgY2VudGVyZWQgaW50byB0aGUgcGF0Y2hlcywgYnV0Cmluc3Rl YWQsIG9uIHdoYXQgdG8gZG8gYW5kIHdoeS4KCi0KClRoaXMgZGlzY3Vzc2lvbiBzdGFydGVkIG9y aWdpbmFsbHkgYXQgbGludXgtZG9jIE1MLgoKV2hpbGUgZGlzY3Vzc2luZyBhYm91dCBhbiBpc3N1 ZSB3aGVuIG1hY2hpbmUncyBsb2NhbGUgd2FzIG5vdCBzZXQKdG8gVVRGLTggb24gYSBidWlsZCBW TSwgd2UgZGlzY292ZXJlZCB0aGF0IHNvbWUgY29udmVydGVkIGRvY3MgZW5kZWQKd2l0aCBCT00g Y2hhcmFjdGVycy4gVGhvc2Ugc3BlY2lmaWMgY2hhbmdlcyB3ZXJlIGludHJvZHVjZWQgYnkgc29t ZQpvZiBteSBjb252ZXJ0IHBhdGNoZXMsIHByb2JhYmx5IGNvbnZlcnRlZCB2aWEgcGFuZG9jLgoK U28sIEkgd2VudCBhaGVhZCBpbiBvcmRlciB0byBjaGVjayB3aGF0IG90aGVyIHBvc3NpYmxlIHdl aXJkIHRoaW5ncwp3ZXJlIGludHJvZHVjZWQgYnkgdGhlIGNvbnZlcnNpb24sIHdoZXJlIHNldmVy YWwgc2NyaXB0cyBhbmQgdG9vbHMKd2VyZSB1c2VkIG9uIGZpbGVzIHRoYXQgaGFkIGFscmVhZHkg YSBkaWZmZXJlbnQgbWFya3VwLgoKSSBhY3R1YWxseSBjaGVja2VkIHRoZSBjdXJyZW50IFVURi04 IGlzc3VlcywgYW5kIGFza2VkIHBlb3BsZSBhdApsaW51eC1kb2MgdG8gY29tbWVudCB3aGF0IG9m IHRob3NlIGFyZSB2YWxpZCB1c2VjYXNlcywgYW5kIHdoYXQKc2hvdWxkIGJlIHJlcGxhY2VkIGJ5 IHBsYWluIEFTQ0lJLgoKQmFzaWNhbGx5LCB0aGlzIGlzIHRoZSBjdXJyZW50IHNpdHVhdGlvbiAo YXQgZG9jcy9kb2NzLW5leHQpLCBmb3IgdGhlClJlU1QgZmlsZXMgdW5kZXIgRG9jdW1lbnRhdGlv bi8sIGV4Y2x1ZGluZyB0cmFuc2xhdGlvbnMgaXM6CgoxLiBTcGFjZXMgYW5kIEJPTQoKCS0gVSsw MGEwICgnwqAnKTogTk8tQlJFQUsgU1BBQ0UKCS0gVStmZWZmICgn77u/Jyk6IFpFUk8gV0lEVEgg Tk8tQlJFQUsgU1BBQ0UgKEJPTSkKCkJhc2VkIG9uIHRoZSBkaXNjdXNzaW9ucyB0aGVyZSBhbmQg b24gdGhpcyB0aHJlYWQsIHRob3NlIHNob3VsZCBiZQpkcm9wcGVkLCBhcyBCT00gaXMgdXNlbGVz cyBhbmQgTk8tQlJFQUsgU1BBQ0UgY2FuIGNhdXNlIHByb2JsZW1zCmF0IHRoZSBodG1sL3BkZiBv dXRwdXQ7CgoyLiBTeW1ib2xzCgoJLSBVKzAwYTkgKCfCqScpOiBDT1BZUklHSFQgU0lHTgoJLSBV KzAwYWMgKCfCrCcpOiBOT1QgU0lHTgoJLSBVKzAwYWUgKCfCricpOiBSRUdJU1RFUkVEIFNJR04K CS0gVSswMGIwICgnwrAnKTogREVHUkVFIFNJR04KCS0gVSswMGIxICgnwrEnKTogUExVUy1NSU5V UyBTSUdOCgktIFUrMDBiMiAoJ8KyJyk6IFNVUEVSU0NSSVBUIFRXTwoJLSBVKzAwYjUgKCfCtScp OiBNSUNSTyBTSUdOCgktIFUrMDNiYyAoJ868Jyk6IEdSRUVLIFNNQUxMIExFVFRFUiBNVQoJLSBV KzAwYjcgKCfCtycpOiBNSURETEUgRE9UCgktIFUrMDBiZCAoJ8K9Jyk6IFZVTEdBUiBGUkFDVElP TiBPTkUgSEFMRgoJLSBVKzIxMjIgKCfihKInKTogVFJBREUgTUFSSyBTSUdOCgktIFUrMjI2NCAo J+KJpCcpOiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KCS0gVSsyMjY1ICgn4omlJyk6IEdSRUFURVIt VEhBTiBPUiBFUVVBTCBUTwoJLSBVKzJiMGQgKCfirI0nKTogVVAgRE9XTiBCTEFDSyBBUlJPVwoK VGhvc2Ugc2VlbSBPSyBvbiBteSBleWVzLgoKT24gYSBzaWRlIG5vdGUsIGJvdGggTUlDUk8gU0lH TiBhbmQgR1JFRUsgU01BTEwgTEVUVEVSIE1VIGFyZQp1c2VkIHNldmVyYWwgZG9jcyB0byByZXBy ZXNlbnQgbWljcm9zZWNvbmRzLCBtaWNyby12b2x0cyBhbmQKbWljcm8tYW1ww6hyZXMuIElmIHdl IHdyaXRlIGFuIG9yaWVudGF0aW9uIGRvY3VtZW50LCBpdCBwcm9iYWJseQptYWtlcyBzZW5zZSB0 byByZWNvbW1lbmQgdXNpbmcgTUlDUk8gU0lHTiBvbiBzdWNoIGNhc2VzLgoKMy4gTGF0aW4KCgkt IFUrMDBjNyAoJ8OHJyk6IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCgktIFUr MDBkZiAoJ8OfJyk6IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCgktIFUrMDBlMSAoJ8OhJyk6 IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKCS0gVSswMGU0ICgnw6QnKTogTEFUSU4g U01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKCS0gVSswMGU2ICgnw6YnKTogTEFUSU4gU01B TEwgTEVUVEVSIEFFCgktIFUrMDBlNyAoJ8OnJyk6IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEgg Q0VESUxMQQoJLSBVKzAwZTkgKCfDqScpOiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRF CgktIFUrMDBlYSAoJ8OqJyk6IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAoJ LSBVKzAwZWIgKCfDqycpOiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwoJLSBV KzAwZjMgKCfDsycpOiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCgktIFUrMDBmNCAo J8O0Jyk6IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAoJLSBVKzAwZjYgKCfD ticpOiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwoJLSBVKzAwZjggKCfDuCcp OiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQoJLSBVKzAwZmEgKCfDuicpOiBMQVRJ TiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCgktIFUrMDBmYyAoJ8O8Jyk6IExBVElOIFNNQUxM IExFVFRFUiBVIFdJVEggRElBRVJFU0lTCgktIFUrMDBmZCAoJ8O9Jyk6IExBVElOIFNNQUxMIExF VFRFUiBZIFdJVEggQUNVVEUKCS0gVSswMTFmICgnxJ8nKTogTEFUSU4gU01BTEwgTEVUVEVSIEcg V0lUSCBCUkVWRQoJLSBVKzAxNDIgKCfFgicpOiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNU Uk9LRQoKVGhvc2Ugc2hvdWxkIGJlIGtlcHQgYXMgd2VsbCwgYXMgdGhleSdyZSB1c2VkIGZvciBu b24tRW5nbGlzaCBuYW1lcy4KCjQuIGFycm93cyBhbmQgYm94IGRyYXdpbmcgc3ltYm9sczoKCS0g VSsyMTkxICgn4oaRJyk6IFVQV0FSRFMgQVJST1cKCS0gVSsyMTkyICgn4oaSJyk6IFJJR0hUV0FS RFMgQVJST1cKCS0gVSsyMTkzICgn4oaTJyk6IERPV05XQVJEUyBBUlJPVwoKCS0gVSsyNTAwICgn 4pSAJyk6IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCgktIFUrMjUwMiAoJ+KUgicpOiBC T1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKCS0gVSsyNTE0ICgn4pSUJyk6IEJPWCBEUkFXSU5H UyBMSUdIVCBVUCBBTkQgUklHSFQKCS0gVSsyNTFjICgn4pScJyk6IEJPWCBEUkFXSU5HUyBMSUdI VCBWRVJUSUNBTCBBTkQgUklHSFQKCkFsc28gc2hvdWxkIGJlIGtlcHQuCgpJbiBzdW1tYXJ5LCBi YXNlZCBvbiB0aGUgZGlzY3Vzc2lvbnMgd2UgaGF2ZSBzbyBmYXIsIEkgc3VzcGVjdCB0aGF0CnRo ZXJlJ3Mgbm90IG11Y2ggdG8gYmUgZGlzY3Vzc2VkIGZvciB0aGUgYWJvdmUgY2FzZXMuCgpTbywg SSdsbCBwb3N0IGEgdjMgb2YgdGhpcyBzZXJpZXMsIGNoYW5naW5nIG9ubHk6CgoJLSBVKzAwYTAg KCfCoCcpOiBOTy1CUkVBSyBTUEFDRQoJLSBVK2ZlZmYgKCfvu78nKTogWkVSTyBXSURUSCBOTy1C UkVBSyBTUEFDRSAoQk9NKQoKLS0tCgpOb3csIHRoaXMgc3BlY2lmaWMgcGF0Y2ggc2VyaWVzIGFk ZHJlc3MgYWxzbyB0aGlzIGV4dHJhIGNhc2U6Cgo1LiBjdXJseSBjb21tYXM6CgoJLSBVKzIwMTgg KCfigJgnKTogTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKCS0gVSsyMDE5ICgn4oCZJyk6IFJJ R0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwoJLSBVKzIwMWMgKCfigJwnKTogTEVGVCBET1VCTEUg UVVPVEFUSU9OIE1BUksKCS0gVSsyMDFkICgn4oCdJyk6IFJJR0hUIERPVUJMRSBRVU9UQVRJT04g TUFSSwoKSU1PLCB0aG9zZSBzaG91bGQgYmUgcmVwbGFjZWQgYnkgQVNDSUkgY29tbWFzOiAnIGFu ZCAiLgoKVGhlIHJhdGlvbmFsZSBpcyBzaW1wbGU6IAoKLSBtb3N0IHdlcmUgaW50cm9kdWNlZCBk dXJpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBEb2Nib29rLAogIG1hcmtkb3duIGFuZCBMYVRleDsK LSB0aGV5IGRvbid0IGFkZCBhbnkgZXh0cmEgdmFsdWUsIGFzIHVzaW5nICJmb28iIG9mIOKAnGZv b+KAnSBtZWFucwogIHRoZSBzYW1lIHRoaW5nOwotIFNwaGlueCBhbHJlYWR5IHVzZSAiZmFuY3ki IGNvbW1hcyBhdCB0aGUgb3V0cHV0LiAKCkkgZ3Vlc3MgSSB3aWxsIHB1dCB0aGlzIG9uIGEgc2Vw YXJhdGUgc2VyaWVzLCBhcyB0aGlzIGlzIG5vdCBhIGJ1ZwpmaXgsIGJ1dCBqdXN0IGEgY2xlYW51 cCBmcm9tIHRoZSBjb252ZXJzaW9uIHdvcmsuCgpJJ2xsIHJlLXBvc3QgdGhvc2UgY2xlYW51cHMg b24gYSBzZXBhcmF0ZSBzZXJpZXMsIGZvciBwYXRjaCBwZXIgcGF0Y2gKcmV2aWV3LgoKLS0tCgpU aGUgcmVtYWluaW5nIGNhc2VzIGFyZSBmdXR1cmUgd29yaywgb3V0c2lkZSB0aGUgc2NvcGUgb2Yg dGhpcyB2MjoKCjYuIEh5cGhlbi9EYXNoZXMgYW5kIGVsbGlwc2lzCgoJLSBVKzIyMTIgKCfiiJIn KTogTUlOVVMgU0lHTgoJLSBVKzAwYWQgKCfCrScpOiBTT0ZUIEhZUEhFTgoJLSBVKzIwMTAgKCfi gJAnKTogSFlQSEVOCgoJICAgIFRob3NlIHRocmVlIGFyZSB1c2VkIG9uIHBsYWNlcyB3aGVyZSBh IG5vcm1hbCBBU0NJSSBoeXBoZW4vbWludXMKCSAgICBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiBU aGVyZSBhcmUgZXZlbiBhIGNvdXBsZSBvZiBDIGZpbGVzIHdoaWNoCgkgICAgdXNlIHRoZW0gaW5z dGVhZCBvZiAnLScgb24gY29tbWVudHMuCgoJICAgIElNTyBhcmUgZml4ZXMvY2xlYW51cHMgZnJv bSBjb252ZXJzaW9ucyBhbmQgYmFkIGN1dC1hbmQtcGFzdGUuCgoJLSBVKzIwMTMgKCfigJMnKTog RU4gREFTSAoJLSBVKzIwMTQgKCfigJQnKTogRU0gREFTSAoJLSBVKzIwMjYgKCfigKYnKTogSE9S SVpPTlRBTCBFTExJUFNJUwoKCSAgICBUaG9zZSBhcmUgYXV0by1yZXBsYWNlZCBieSBTcGhpbngg ZnJvbSAiLS0iLCAiLS0tIiBhbmQgIi4uLiIsCgkgICAgcmVzcGVjdGl2ZWx5LgoKCSAgICBJIGd1 ZXNzIHRob3NlIGFyZSBhIG1hdHRlciBvZiBwZXJzb25hbCBwcmVmZXJlbmNlIGFib3V0CgkgICAg d2VhdGhlciB1c2luZyBBU0NJSSBvciBVVEYtOC4KCiAgICAgICAgICAgIE15IHBlcnNvbmFsIHBy ZWZlcmVuY2UgKGFuZCBUZWQgc2VlbXMgdG8gaGF2ZSBhIHNpbWlsYXIKCSAgICBvcGluaW9uKSBp cyB0byBsZXQgU3BoaW54IGRvIHRoZSBjb252ZXJzaW9uLgoKCSAgICBGb3IgdGhvc2UsIEkgaW50 ZW5kIHRvIHBvc3QgYSBzZXBhcmF0ZSBzZXJpZXMsIHRvIGJlCgkgICAgcmV2aWV3ZWQgcGF0Y2gg cGVyIHBhdGNoLCBhcyB0aGlzIGlzIHJlYWxseSBhIG1hdHRlcgoJICAgIG9mIHBlcnNvbmFsIHRh c3RlLiBIYXJkbHkgd2UnbGwgcmVhY2ggYSBjb25zZW5zdXMgaGVyZS4KCjcuIG1hdGggc3ltYm9s czoKCgktIFUrMDBkNyAoJ8OXJyk6IE1VTFRJUExJQ0FUSU9OIFNJR04KCgkgICBUaGlzIG9uZSBp cyB1c2VkIG1vc3RseSBkbyBkZXNjcmliZSB2aWRlbyByZXNvbHV0aW9ucywgYnV0IHRoaXMgaXMK CSAgIG9uIGEgc21hbGxlciBjaGFuZ2VzZXQgdGhhbiB0aGUgb25lcyB0aGF0IHVzZSAieCIgbGV0 dGVyLgoKCS0gVSsyMjE3ICgn4oiXJyk6IEFTVEVSSVNLIE9QRVJBVE9SCgoJICAgVGhpcyBpcyB1 c2VkIG9ubHkgaGVyZToKCQlEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQvYmxvY2tncm91 cC5yc3Q6ZmlsZXN5c3RlbSBzaXplIHRvIDJeMjEg4oiXIDJeMjcgPSAyXjQ4Ynl0ZXMgb3IgMjU2 VGlCLgoKCSAgIFByb2JhYmx5IGFkZGVkIGJ5IHNvbWUgY29udmVyc2lvbiB0b29sLiBJTU8sIHRo aXMgb25lIHNob3VsZAoJICAgYWxzbyBiZSByZXBsYWNlZCBieSBhbiBBU0NJSSBhc3Rlcmlzay4K CkkgZ3Vlc3MgSSdsbCBwb3N0IGEgcGF0Y2ggZm9yIHRoZSBBU1RFUklTSyBPUEVSQVRPUi4KVGhh bmtzLApNYXVybwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4B4FC433ED for ; Sat, 15 May 2021 08:23:02 +0000 (UTC) Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5F93E613FC; Sat, 15 May 2021 08:23:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5F93E613FC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linux-f2fs-devel-bounces@lists.sourceforge.net Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from ) id 1lhpZb-0003aW-4P; Sat, 15 May 2021 08:22:59 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lhpZY-0003aH-JE; Sat, 15 May 2021 08:22:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version :References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Ok5gS5fHgyJqZj2Rne0uz442ES4fwsXgi6K+D6X/NuE=; b=igt01ml/24zrZFt2UJzWBgc6uT /wBATtQ4pQ3kwWqUNcnUuZzrwEn+K0PM1umg0Y5EtYlFcKoaaPU0oZvMkAqRaYgJvClaMR1/ytFqY 2cD2DGZV44IswNkS4CH1UgBsrnRtMsRPvIh602RISjSrxUV4/OX3JFdE3X09DjcPpZSw=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Ok5gS5fHgyJqZj2Rne0uz442ES4fwsXgi6K+D6X/NuE=; b=WiNRfTCqOpSrFPTrb2dfpKQP0X H96Zzs1pBb7Je9q8erwT6og463v8316N6aqx5hlNqc7tlCL9TfpznnEadPJSY/jDuVkHVQE/Qrw1h naKTrBRBKzLs78LgcMDU1PEO+2CcFFBsdv3x1GKsb4LfHAEn310n1rbvxPdmapUNXtcQ=; Received: from mail.kernel.org ([198.145.29.99]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.2) id 1lhpZX-0097R4-9L; Sat, 15 May 2021 08:22:58 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2C190613B9; Sat, 15 May 2021 08:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621066968; bh=GZ+Kn4jT0gb7iB9pP/pJk26tOsd2+CGQf4jvs2zdqBw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=iG7hTAT03WHgFWqqoj0DV+re/0SLdMb3cUSY+SSuTzLrJYQKUGl36xxPlzpJM+obe aYXsMgr2FnrS3UmbhM6x/v0hyySs4FwS7nZabhVI4uZ7oSvYetpsNsa8YF+pHbxJBR Pvc7xud7ZTl9KAziTz3eT27vowbOqKYiG2XDc1TE977RvXZd58WPI/7xagMPnTojJ/ GJWlmOneBx01cy6SZcbDkvz0BdOwIrrlmQD5XJjxn9s8e2uY2fdVvUP3k7z3IeULok mtqmqeDzUbwgUVG+WJhEq15O9UonBwspCZS/Ybte0/0w+ceHppeg8djn6HLQSfz0bi sBmNf+UX/Tqtg== Date: Sat, 15 May 2021 10:22:39 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Message-ID: <20210515102239.2ffd0451@coco.lan> In-Reply-To: <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> Followup-To: dri-devel@lists.freedesktop.org X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-Headers-End: 1lhpZX-0097R4-9L Subject: Re: [f2fs-dev] [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alsa-devel@alsa-project.org, kvm@vger.kernel.org, Linux Doc Mailing List , linux-iio@vger.kernel.org, linux-pci@vger.kernel.org, keyrings@vger.kernel.org, linux-sgx@vger.kernel.org, Jonathan Corbet , linux-rdma@vger.kernel.org, linux-acpi@vger.kernel.org, Mali DP Maintainers , linux-input@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-ext4@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-media@vger.kernel.org, linux-pm@vger.kernel.org, coresight@lists.linaro.org, rcu@vger.kernel.org, mjpeg-users@lists.sourceforge.net, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org, linux-hwmon@vger.kernel.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-integrity@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net RW0gRnJpLCAxNCBNYXkgMjAyMSAxMDowNjowMSArMDEwMApEYXZpZCBXb29kaG91c2UgPGR3bXcy QGluZnJhZGVhZC5vcmc+IGVzY3JldmV1OgoKPiBPbiBGcmksIDIwMjEtMDUtMTQgYXQgMTA6MjEg KzAyMDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZToKPiA+IEVtIFdlZCwgMTIgTWF5IDIw MjEgMTg6MDc6MDQgKzAxMDAKPiA+IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFkLm9y Zz4gZXNjcmV2ZXU6Cj4gPiAgIAo+ID4gPiBPbiBXZWQsIDIwMjEtMDUtMTIgYXQgMTQ6NTAgKzAy MDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZTogIAo+ID4gPiA+IFN1Y2ggY29udmVyc2lv biB0b29scyAtIHBsdXMgc29tZSB0ZXh0IGVkaXRvciBsaWtlIExpYnJlT2ZmaWNlICBvciBzaW1p bGFyICAtIGhhdmUKPiA+ID4gPiBhIHNldCBvZiBydWxlcyB0aGF0IHR1cm5zIHNvbWUgdHlwZWQg QVNDSUkgY2hhcmFjdGVycyBpbnRvIFVURi04IGFsdGVybmF0aXZlcywKPiA+ID4gPiBmb3IgaW5z dGFuY2UgY29udmVydGluZyBjb21tYXMgaW50byBjdXJseSBjb21tYXMgYW5kIGFkZGluZyBub24t YnJlYWthYmxlCj4gPiA+ID4gc3BhY2VzLiBBbGwgb2YgdGhvc2UgYXJlIG1lYW50IHRvIHByb2R1 Y2UgYmV0dGVyIHJlc3VsdHMgd2hlbiB0aGUgdGV4dCBpcwo+ID4gPiA+IGRpc3BsYXllZCBpbiBI VE1MIG9yIFBERiBmb3JtYXRzLiAgICAKPiA+ID4gCj4gPiA+IEFuZCBkb24ndCB3ZSByZW5kZXIg b3VyIGRvY3VtZW50YXRpb24gaW50byBIVE1MIG9yIFBERiBmb3JtYXRzPyAgIAo+ID4gCj4gPiBZ ZXMuCj4gPiAgIAo+ID4gPiBBcmUKPiA+ID4gc29tZSBvZiB0aG9zZSBub24tYnJlYWtpbmcgc3Bh Y2VzIG5vdCBhY3R1YWxseSAqdXNlZnVsKiBmb3IgdGhlaXIKPiA+ID4gaW50ZW5kZWQgcHVycG9z ZT8gIAo+ID4gCj4gPiBOby4KPiA+IAo+ID4gVGhlIHRoaW5nIGlzOiBub24tYnJlYWtpbmcgc3Bh Y2UgY2FuIGNhdXNlIGEgbG90IG9mIHByb2JsZW1zLgo+ID4gCj4gPiBXZSBldmVuIGhhZCB0byBk aXNhYmxlIFNwaGlueCB1c2FnZSBvZiBub24tYnJlYWtpbmcgc3BhY2UgZm9yCj4gPiBQREYgb3V0 cHV0cywgYXMgdGhpcyB3YXMgY2F1c2luZyBiYWQgTGFUZVgvUERGIG91dHB1dHMuCj4gPiAKPiA+ IFNlZSwgY29tbWl0OiAzYjRjOTYzMjQzYjEgKCJkb2NzOiBjb25mLnB5OiBhZGp1c3QgdGhlIExh VGVYIGRvY3VtZW50IG91dHB1dCIpCj4gPiAKPiA+IFRoZSBhZm9yZSBtZW50aW9uZWQgcGF0Y2gg ZGlzYWJsZXMgU3BoaW54IGRlZmF1bHQgYmVoYXZpb3Igb2YKPiA+IHVzaW5nIE5PTi1CUkVBS0FC TEUgU1BBQ0Ugb24gbGl0ZXJhbCBibG9ja3MgYW5kIHN0cmluZ3MsIHVzaW5nIHRoaXMKPiA+IHNw ZWNpYWwgc2V0dGluZzogInBhcnNlZGxpdGVyYWx3cmFwcz10cnVlIi4KPiA+IAo+ID4gV2hlbiBO T04tQlJFQUtBQkxFIFNQQUNFIHdlcmUgdXNlZCBvbiBQREYgb3V0cHV0cywgc2V2ZXJhbCBwYXJ0 cyBvZiAKPiA+IHRoZSBtZWRpYSB1QVBJIGRvY3Mgd2VyZSB2aW9sYXRpbmcgdGhlIGRvY3VtZW50 IG1hcmdpbnMgYnkgZmFyLAo+ID4gY2F1c2luZyB0ZXh0cyB0byBiZSB0cnVuY2F0ZWQuCj4gPiAK PiA+IFNvLCBwbGVhc2UgKipkb24ndCBhZGQgTk9OLUJSRUFLQUJMRSBTUEFDRSoqLCB1bmxlc3Mg eW91IHRlc3QKPiA+IChhbmQga2VlcCB0ZXN0aW5nIGl0IGZyb20gdGltZSB0byB0aW1lKSBpZiBv dXRwdXRzIG9uIGFsbAo+ID4gZm9ybWF0cyBhcmUgcHJvcGVybHkgc3VwcG9ydGluZyBpdCBvbiBk aWZmZXJlbnQgU3BoaW54IHZlcnNpb25zLiAgCj4gCj4gQW5kIHRoZXJlIHlvdSBoYXZlIGEgc3Bl Y2lmaWMgY2hhbmdlIHdpdGggYSBzcGVjaWZpYyBmaXguIE5vdGhpbmcgdG8gZG8KPiB3aXRoIHdo ZXRoZXIgTk9OLUJSRUFLQUJMRSBTUEFDRSBpcyDiiIkgQVNDSUksIGFuZCAqY2VydGFpbmx5KiBu b3RoaW5nIHRvCj4gZG8gd2l0aCB0aGUgZmFjdCB0aGF0LCBsaWtlICpldmVyeSogY2hhcmFjdGVy IGluIGV2ZXJ5IGtlcm5lbCBmaWxlCj4gZXhjZXB0IHRoZSAqYmluYXJ5KiBmaWxlcywgaXQncyBy ZXByZXNlbnRhYmxlIGluIFVURi04Lgo+IAo+IEJ5IGFsbCBtZWFucyBmaXggdGhlIHNwZWNpZmlj IGNoYXJhY3RlcnMgd2hpY2ggYXJlIHR5cG9ncmFwaGljYWxseQo+IHdyb25nIG9yIHdoaWNoLCBs aWtlIE5PTi1CUkVBS0FCTEUgU1BBQ0UsIGNhdXNlIHByb2JsZW1zIGZvciByZW5kZXJpbmcKPiB0 aGUgZG9jdW1lbnRhdGlvbi4KPiAKPiAKPiA+IEFsc28sIG1vc3Qgb2YgdGhvc2UgY2FtZSBmcm9t IGNvbnZlcnNpb24gdG9vbHMsIHRvZ2V0aGVyIHdpdGggb3RoZXIKPiA+IGVjY2VudHJpY2l0aWVz LCBsaWtlIHRoZSB1c2FnZSBvZiBVK0ZFRkYgKEJPTSkgY2hhcmFjdGVyIGF0IHRoZQo+ID4gc3Rh cnQgb2Ygc29tZSBkb2N1bWVudHMuIFRoZSByZW1haW5pbmcgb25lcyBzZWVtIHRvIGNhbWUgZnJv bSAKPiA+IGN1dC1hbmQtcGFzdGUuICAKPiAKPiAuLi4gb3Igd2hpY2ggYXJlIGp1c3QgZW50aXJl bHkgcmVkdW5kYW50IGFuZCBncmF0dWl0b3VzLCBsaWtlIGEgQk9NIGluCj4gYW4gZW52aXJvbm1l bnQgd2hlcmUgYWxsIGZpbGVzIGFyZSBVVEYtOCBhbmQgbmV2ZXIgMTYtYml0IGVuY29kaW5ncwo+ IGFueXdheS4KCkFncmVlZC4KCj4gCj4gPiA+ID4gV2hpbGUgaXQgaXMgcGVyZmVjdGx5IGZpbmUg dG8gdXNlIFVURi04IGNoYXJhY3RlcnMgaW4gTGludXgsIGFuZCBzcGVjaWFsbHkgYXQKPiA+ID4g PiB0aGUgZG9jdW1lbnRhdGlvbiwgIGl0IGlzIGJldHRlciB0byAgc3RpY2sgdG8gdGhlIEFTQ0lJ IHN1YnNldCAgb24gc3VjaAo+ID4gPiA+IHBhcnRpY3VsYXIgY2FzZSwgIGR1ZSB0byBhIGNvdXBs ZSBvZiByZWFzb25zOgo+ID4gPiA+IAo+ID4gPiA+IDEuIGl0IG1ha2VzIGxpZmUgZWFzaWVyIGZv ciB0b29scyBsaWtlIGdyZXA7ICAgIAo+ID4gPiAKPiA+ID4gQmFyZWx5LCBhcyBub3RlZCwgYmVj YXVzZSBvZiB0aGluZ3MgbGlrZSBsaW5lIGZlZWRzLiAgCj4gPiAKPiA+IFlvdSBjYW4gdXNlIGdy ZXAgd2l0aCAiLXoiIHRvIHNlZWsgZm9yIG11bHRpLWxpbmUgc3RyaW5ncygqKSwgTGlrZToKPiA+ IAo+ID4gCSQgZ3JlcCAtUHpsICdncmFjZSBwZXJpb2Qgc3RhcnRlZCxccyp0aGVuJyAkKGZpbmQg RG9jdW1lbnRhdGlvbi8gLXR5cGUgZikKPiA+IAlEb2N1bWVudGF0aW9uL1JDVS9EZXNpZ24vRGF0 YS1TdHJ1Y3R1cmVzL0RhdGEtU3RydWN0dXJlcy5yc3QgIAo+IAo+IFllYWgsIHJpZ2h0LiBUaGF0 IHdvcmtzIGlmIHlvdSBkb24ndCBqdXN0IHVzZSB0aGUgdGV4dCB0aGF0IHlvdSdsbCBoYXZlCj4g c2VlbiBpbiB0aGUgSFRNTC9QREYgImdyYWNlIHBlcmlvZCBzdGFydGVkLCB0aGVuIiwgYW5kIGlm IHlvdSBpbnN0ZWFkCj4gY3JhZnQgYSAqcmVnZXgqIGZvciBpdCwgcmVwbGFjaW5nIHRoZSBzcGFj ZXMgd2l0aCAnXHMqJy4gT3IgaXMgdGhhdAo+IFtbOnNwYWNlOl1dKiBpZiB5b3UgZG9uJ3Qgd2Fu dCB0byB1c2UgdGhlIGV4cGVyaW1lbnRhbCBQZXJsIHJlZ2V4Cj4gZmVhdHVyZT8KPiAKPiAgJCBn cmVwIC16bHIgJ2dyYWNlW1s6c3BhY2U6XV1cK3BlcmlvZFtbOnNwYWNlOl1dXCtzdGFydGVkLFtb OnNwYWNlOl1dXCt0aGVuJyBEb2N1bWVudGF0aW9uL1JDVQo+IERvY3VtZW50YXRpb24vUkNVL0Rl c2lnbi9EYXRhLVN0cnVjdHVyZXMvRGF0YS1TdHJ1Y3R1cmVzLnJzdAo+IAo+IEFuZCB3aXRob3V0 ICctbCcgaXQnbGwgb2J2aW91c2x5IGp1c3QgZ2l2ZSB5b3UgdGhlIHdob2xlIGZpbGUuIE5vICct QTUKPiAtQjUnIHRvIHNlZSB0aGUgc3Vycm91bmRpbmdzLi4uIGl0J3MgaGFyZGx5IGEgdXNlZnVs IHRoaW5nLCBpcyBpdD8KPiAKPiA+ICgqKSBVbmZvcnR1bmF0ZWx5LCB3aGlsZSAiZ2l0IGdyZXAi IGFsc28gaGFzIGEgIi16IiBmbGFnLCBpdAo+ID4gICAgIHNlZW1zIHRoYXQgdGhpcyBpcyAoY3Vy cmVudGx5PykgYnJva2VuIHdpdGggcmVnYXJkcyBvZiBoYW5kbGluZyBtdWx0aWxpbmVzOgo+ID4g Cj4gPiAJJCBnaXQgZ3JlcCAtUHpsICdncmFjZSBwZXJpb2Qgc3RhcnRlZCxccyp0aGVuJwo+ID4g CSQgIAo+IAo+IEV2ZW4gYmV0dGVyLiBTbyBubywgbXVsdGlsaW5lIGdyZXAgaXNuJ3QgcmVhbGx5 IGEgY29tbW9ubHkgdXNhYmxlCj4gZmVhdHVyZSBhdCBhbGwuCj4gCj4gVGhpcyBpcyB3aHkgd2Ug cHJlZmVyIHRvIHB1dCB1c2VyLXZpc2libGUgc3RyaW5ncyBvbiBvbmUgbGluZSBpbiBDCj4gc291 cmNlIGNvZGUsIGV2ZW4gaWYgaXQgdGFrZXMgdGhlIGxpbmVzIG92ZXIgODAgY2hhcmFjdGVycyDi gJQgdG8gYWxsb3cKPiBmb3IgZ3JlcCB0byBmaW5kIHRoZW0uCgpNYWtlcyBzZW5zZSwgYnV0IGlu IGNhc2Ugb2YgZG9jdW1lbnRhdGlvbiwgdGhpcyBpcyBhIGxpdHRsZSBtb3JlCmNvbXBsZXggdGhh biB0aGF0LiAKCkJ0dywgdGhlIHRoZW1lIHVzZWQgd2hlbiBidWlsZGluZyBodG1sIGJ5IGRlZmF1 bHRbMV0gaGFzIGEgc2VhcmNoCmJveCAod3JpdHRlbiBpbiBKYXZhc2NyaXB0KSB0aGF0IGNvdWxk IGJlIGFibGUgdG8gZmluZCBtdWx0aS1saW5lCnBhdHRlcm5zLCB3b3JraW5nIHNvbWV3aGF0IHNp bWlsYXIgdG8gImdpdCBncmVwIGZvbyAtYSBiYXIiLgoKWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9y ZWFkdGhlZG9jcy9zcGhpbnhfcnRkX3RoZW1lCgo+ID4gWzFdIElmIEkgaGF2ZSBhIHRhYmxlIHdp dGggVVRGLTggY29kZXMgaGFuZHksIEkgY291bGQgdHlwZSB0aGUgVVRGLTggCj4gPiAgICAgbnVt YmVyIG1hbnVhbGx5Li4uIEhvd2V2ZXIsIGl0IHNlZW1zIHRoYXQgdGhpcyBpcyBjdXJyZW50bHkg YnJva2VuIAo+ID4gICAgIGF0IGxlYXN0IG9uIEZlZG9yYSAzMyAod2l0aCBNYXRlIERlc2t0b3Ag YW5kIFVTIGludGwga2V5Ym9hcmQgd2l0aCAKPiA+ICAgICBkZWFkIGtleXMpLgo+ID4gCj4gPiAg ICAgSGVyZSwgPENUUkw+PFNISUZUPlUgaXMgbm90IHdvcmtpbmcuIE5vIGlkZWEgd2h5LiBJIGhh dmVuJ3QgCj4gPiAgICAgdGVzdCBpdCBmb3IgKnllYXJzKiwgYXMgSSBkaW4ndCBzZWUgYW55IHJl YXNvbiB3aHkgSSB3b3VsZAo+ID4gICAgIG5lZWQgdG8gdHlwZSBVVEYtOCBjaGFyYWN0ZXJzIGJ5 IG51bWJlcnMgdW50aWwgd2Ugc3RhcnRlZAo+ID4gICAgIHRoaXMgdGhyZWFkLiAgCj4gCj4gUGxl YXNlIHByb3ZpZGUgdGhlIGJ1ZyBudW1iZXIgZm9yIHRoaXM7IEknZCBsaWtlIHRvIHRyYWNrIGl0 LgoKSnVzdCBvcGVuZWQgYSBCWiBhbmQgYWRkZWQgeW91IGFzIGMvYy4KCj4gPiBOb3csIEknbSBu b3QgYXJndWluZyB0aGF0IHlvdSBjYW4ndCB1c2Ugd2hhdGV2ZXIgVVRGLTggc3ltYm9sIHlvdQo+ ID4gd2FudCBvbiB5b3VyIGRvY3MuIEknbSBqdXN0IHNheWluZyB0aGF0LCBub3cgdGhhdCB0aGUg Y29udmVyc2lvbiAKPiA+IGlzIG92ZXIgYW5kIGEgbG90IG9mIGRvY3VtZW50cyBlbmRlZCBnZXR0 aW5nIHNvbWUgVVRGLTggY2hhcmFjdGVycwo+ID4gYnkgYWNjaWRlbnQsIGl0IGlzIHRpbWUgZm9y IGEgY2xlYW51cC4gIAo+IAo+IEFsbCB0ZXh0IGRvY3VtZW50cyBhcmUgKmZ1bGwqIG9mIFVURi04 IGNoYXJhY3RlcnMuIElmIHRoZXJlIGlzIGEgZmlsZQo+IGluIHRoZSBzb3VyY2UgY29kZSB3aGlj aCBoYXMgKmFueSogbm9uLVVURjgsIHdlIGNhbGwgdGhhdCBhICdiaW5hcnkKPiBmaWxlJy4KPiAK PiBBZ2FpbiwgaWYgeW91IHdhbnQgdG8gbWFrZSBzcGVjaWZpYyBmaXhlcyBsaWtlIHJlbW92aW5n IG5vbi1icmVha2luZwo+IHNwYWNlcyBhbmQgYnl0ZSBvcmRlciBtYXJrcywgd2l0aCBzcGVjaWZp YyByZWFzb25zLCB0aGVuIHRob3NlIG1ha2UKPiBzZW5zZS4gQnV0IGl0J3MgZ290IHZlcnkgbGl0 dGxlIHRvIGRvIHdpdGggVVRGLTggYW5kIGhvdyBlYXN5IGl0IGlzIHRvCj4gdHlwZSB0aGVtLiBB bmQgdGhlIGV4Y3VzZSB5b3UndmUgcHV0IGluIHRoZSBjb21taXQgY29tbWVudCBmb3IgeW91cgo+ IHBhdGNoZXMgaXMgdXR0ZXJseSBib2d1cy4KCkxldCdzIHRha2Ugb25lIHN0ZXAgYmFjaywgaW4g b3JkZXIgdG8gcmV0dXJuIHRvIHRoZSBpbnRlbnRzIG9mIHRoaXMKVVRGLTgsIGFzIHRoZSBkaXNj dXNzaW9ucyBoZXJlIGFyZSBub3QgY2VudGVyZWQgaW50byB0aGUgcGF0Y2hlcywgYnV0Cmluc3Rl YWQsIG9uIHdoYXQgdG8gZG8gYW5kIHdoeS4KCi0KClRoaXMgZGlzY3Vzc2lvbiBzdGFydGVkIG9y aWdpbmFsbHkgYXQgbGludXgtZG9jIE1MLgoKV2hpbGUgZGlzY3Vzc2luZyBhYm91dCBhbiBpc3N1 ZSB3aGVuIG1hY2hpbmUncyBsb2NhbGUgd2FzIG5vdCBzZXQKdG8gVVRGLTggb24gYSBidWlsZCBW TSwgd2UgZGlzY292ZXJlZCB0aGF0IHNvbWUgY29udmVydGVkIGRvY3MgZW5kZWQKd2l0aCBCT00g Y2hhcmFjdGVycy4gVGhvc2Ugc3BlY2lmaWMgY2hhbmdlcyB3ZXJlIGludHJvZHVjZWQgYnkgc29t ZQpvZiBteSBjb252ZXJ0IHBhdGNoZXMsIHByb2JhYmx5IGNvbnZlcnRlZCB2aWEgcGFuZG9jLgoK U28sIEkgd2VudCBhaGVhZCBpbiBvcmRlciB0byBjaGVjayB3aGF0IG90aGVyIHBvc3NpYmxlIHdl aXJkIHRoaW5ncwp3ZXJlIGludHJvZHVjZWQgYnkgdGhlIGNvbnZlcnNpb24sIHdoZXJlIHNldmVy YWwgc2NyaXB0cyBhbmQgdG9vbHMKd2VyZSB1c2VkIG9uIGZpbGVzIHRoYXQgaGFkIGFscmVhZHkg YSBkaWZmZXJlbnQgbWFya3VwLgoKSSBhY3R1YWxseSBjaGVja2VkIHRoZSBjdXJyZW50IFVURi04 IGlzc3VlcywgYW5kIGFza2VkIHBlb3BsZSBhdApsaW51eC1kb2MgdG8gY29tbWVudCB3aGF0IG9m IHRob3NlIGFyZSB2YWxpZCB1c2VjYXNlcywgYW5kIHdoYXQKc2hvdWxkIGJlIHJlcGxhY2VkIGJ5 IHBsYWluIEFTQ0lJLgoKQmFzaWNhbGx5LCB0aGlzIGlzIHRoZSBjdXJyZW50IHNpdHVhdGlvbiAo YXQgZG9jcy9kb2NzLW5leHQpLCBmb3IgdGhlClJlU1QgZmlsZXMgdW5kZXIgRG9jdW1lbnRhdGlv bi8sIGV4Y2x1ZGluZyB0cmFuc2xhdGlvbnMgaXM6CgoxLiBTcGFjZXMgYW5kIEJPTQoKCS0gVSsw MGEwICgnwqAnKTogTk8tQlJFQUsgU1BBQ0UKCS0gVStmZWZmICgn77u/Jyk6IFpFUk8gV0lEVEgg Tk8tQlJFQUsgU1BBQ0UgKEJPTSkKCkJhc2VkIG9uIHRoZSBkaXNjdXNzaW9ucyB0aGVyZSBhbmQg b24gdGhpcyB0aHJlYWQsIHRob3NlIHNob3VsZCBiZQpkcm9wcGVkLCBhcyBCT00gaXMgdXNlbGVz cyBhbmQgTk8tQlJFQUsgU1BBQ0UgY2FuIGNhdXNlIHByb2JsZW1zCmF0IHRoZSBodG1sL3BkZiBv dXRwdXQ7CgoyLiBTeW1ib2xzCgoJLSBVKzAwYTkgKCfCqScpOiBDT1BZUklHSFQgU0lHTgoJLSBV KzAwYWMgKCfCrCcpOiBOT1QgU0lHTgoJLSBVKzAwYWUgKCfCricpOiBSRUdJU1RFUkVEIFNJR04K CS0gVSswMGIwICgnwrAnKTogREVHUkVFIFNJR04KCS0gVSswMGIxICgnwrEnKTogUExVUy1NSU5V UyBTSUdOCgktIFUrMDBiMiAoJ8KyJyk6IFNVUEVSU0NSSVBUIFRXTwoJLSBVKzAwYjUgKCfCtScp OiBNSUNSTyBTSUdOCgktIFUrMDNiYyAoJ868Jyk6IEdSRUVLIFNNQUxMIExFVFRFUiBNVQoJLSBV KzAwYjcgKCfCtycpOiBNSURETEUgRE9UCgktIFUrMDBiZCAoJ8K9Jyk6IFZVTEdBUiBGUkFDVElP TiBPTkUgSEFMRgoJLSBVKzIxMjIgKCfihKInKTogVFJBREUgTUFSSyBTSUdOCgktIFUrMjI2NCAo J+KJpCcpOiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KCS0gVSsyMjY1ICgn4omlJyk6IEdSRUFURVIt VEhBTiBPUiBFUVVBTCBUTwoJLSBVKzJiMGQgKCfirI0nKTogVVAgRE9XTiBCTEFDSyBBUlJPVwoK VGhvc2Ugc2VlbSBPSyBvbiBteSBleWVzLgoKT24gYSBzaWRlIG5vdGUsIGJvdGggTUlDUk8gU0lH TiBhbmQgR1JFRUsgU01BTEwgTEVUVEVSIE1VIGFyZQp1c2VkIHNldmVyYWwgZG9jcyB0byByZXBy ZXNlbnQgbWljcm9zZWNvbmRzLCBtaWNyby12b2x0cyBhbmQKbWljcm8tYW1ww6hyZXMuIElmIHdl IHdyaXRlIGFuIG9yaWVudGF0aW9uIGRvY3VtZW50LCBpdCBwcm9iYWJseQptYWtlcyBzZW5zZSB0 byByZWNvbW1lbmQgdXNpbmcgTUlDUk8gU0lHTiBvbiBzdWNoIGNhc2VzLgoKMy4gTGF0aW4KCgkt IFUrMDBjNyAoJ8OHJyk6IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCgktIFUr MDBkZiAoJ8OfJyk6IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCgktIFUrMDBlMSAoJ8OhJyk6 IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKCS0gVSswMGU0ICgnw6QnKTogTEFUSU4g U01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKCS0gVSswMGU2ICgnw6YnKTogTEFUSU4gU01B TEwgTEVUVEVSIEFFCgktIFUrMDBlNyAoJ8OnJyk6IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEgg Q0VESUxMQQoJLSBVKzAwZTkgKCfDqScpOiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRF CgktIFUrMDBlYSAoJ8OqJyk6IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAoJ LSBVKzAwZWIgKCfDqycpOiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwoJLSBV KzAwZjMgKCfDsycpOiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCgktIFUrMDBmNCAo J8O0Jyk6IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAoJLSBVKzAwZjYgKCfD ticpOiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwoJLSBVKzAwZjggKCfDuCcp OiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQoJLSBVKzAwZmEgKCfDuicpOiBMQVRJ TiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCgktIFUrMDBmYyAoJ8O8Jyk6IExBVElOIFNNQUxM IExFVFRFUiBVIFdJVEggRElBRVJFU0lTCgktIFUrMDBmZCAoJ8O9Jyk6IExBVElOIFNNQUxMIExF VFRFUiBZIFdJVEggQUNVVEUKCS0gVSswMTFmICgnxJ8nKTogTEFUSU4gU01BTEwgTEVUVEVSIEcg V0lUSCBCUkVWRQoJLSBVKzAxNDIgKCfFgicpOiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNU Uk9LRQoKVGhvc2Ugc2hvdWxkIGJlIGtlcHQgYXMgd2VsbCwgYXMgdGhleSdyZSB1c2VkIGZvciBu b24tRW5nbGlzaCBuYW1lcy4KCjQuIGFycm93cyBhbmQgYm94IGRyYXdpbmcgc3ltYm9sczoKCS0g VSsyMTkxICgn4oaRJyk6IFVQV0FSRFMgQVJST1cKCS0gVSsyMTkyICgn4oaSJyk6IFJJR0hUV0FS RFMgQVJST1cKCS0gVSsyMTkzICgn4oaTJyk6IERPV05XQVJEUyBBUlJPVwoKCS0gVSsyNTAwICgn 4pSAJyk6IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCgktIFUrMjUwMiAoJ+KUgicpOiBC T1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKCS0gVSsyNTE0ICgn4pSUJyk6IEJPWCBEUkFXSU5H UyBMSUdIVCBVUCBBTkQgUklHSFQKCS0gVSsyNTFjICgn4pScJyk6IEJPWCBEUkFXSU5HUyBMSUdI VCBWRVJUSUNBTCBBTkQgUklHSFQKCkFsc28gc2hvdWxkIGJlIGtlcHQuCgpJbiBzdW1tYXJ5LCBi YXNlZCBvbiB0aGUgZGlzY3Vzc2lvbnMgd2UgaGF2ZSBzbyBmYXIsIEkgc3VzcGVjdCB0aGF0CnRo ZXJlJ3Mgbm90IG11Y2ggdG8gYmUgZGlzY3Vzc2VkIGZvciB0aGUgYWJvdmUgY2FzZXMuCgpTbywg SSdsbCBwb3N0IGEgdjMgb2YgdGhpcyBzZXJpZXMsIGNoYW5naW5nIG9ubHk6CgoJLSBVKzAwYTAg KCfCoCcpOiBOTy1CUkVBSyBTUEFDRQoJLSBVK2ZlZmYgKCfvu78nKTogWkVSTyBXSURUSCBOTy1C UkVBSyBTUEFDRSAoQk9NKQoKLS0tCgpOb3csIHRoaXMgc3BlY2lmaWMgcGF0Y2ggc2VyaWVzIGFk ZHJlc3MgYWxzbyB0aGlzIGV4dHJhIGNhc2U6Cgo1LiBjdXJseSBjb21tYXM6CgoJLSBVKzIwMTgg KCfigJgnKTogTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKCS0gVSsyMDE5ICgn4oCZJyk6IFJJ R0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwoJLSBVKzIwMWMgKCfigJwnKTogTEVGVCBET1VCTEUg UVVPVEFUSU9OIE1BUksKCS0gVSsyMDFkICgn4oCdJyk6IFJJR0hUIERPVUJMRSBRVU9UQVRJT04g TUFSSwoKSU1PLCB0aG9zZSBzaG91bGQgYmUgcmVwbGFjZWQgYnkgQVNDSUkgY29tbWFzOiAnIGFu ZCAiLgoKVGhlIHJhdGlvbmFsZSBpcyBzaW1wbGU6IAoKLSBtb3N0IHdlcmUgaW50cm9kdWNlZCBk dXJpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBEb2Nib29rLAogIG1hcmtkb3duIGFuZCBMYVRleDsK LSB0aGV5IGRvbid0IGFkZCBhbnkgZXh0cmEgdmFsdWUsIGFzIHVzaW5nICJmb28iIG9mIOKAnGZv b+KAnSBtZWFucwogIHRoZSBzYW1lIHRoaW5nOwotIFNwaGlueCBhbHJlYWR5IHVzZSAiZmFuY3ki IGNvbW1hcyBhdCB0aGUgb3V0cHV0LiAKCkkgZ3Vlc3MgSSB3aWxsIHB1dCB0aGlzIG9uIGEgc2Vw YXJhdGUgc2VyaWVzLCBhcyB0aGlzIGlzIG5vdCBhIGJ1ZwpmaXgsIGJ1dCBqdXN0IGEgY2xlYW51 cCBmcm9tIHRoZSBjb252ZXJzaW9uIHdvcmsuCgpJJ2xsIHJlLXBvc3QgdGhvc2UgY2xlYW51cHMg b24gYSBzZXBhcmF0ZSBzZXJpZXMsIGZvciBwYXRjaCBwZXIgcGF0Y2gKcmV2aWV3LgoKLS0tCgpU aGUgcmVtYWluaW5nIGNhc2VzIGFyZSBmdXR1cmUgd29yaywgb3V0c2lkZSB0aGUgc2NvcGUgb2Yg dGhpcyB2MjoKCjYuIEh5cGhlbi9EYXNoZXMgYW5kIGVsbGlwc2lzCgoJLSBVKzIyMTIgKCfiiJIn KTogTUlOVVMgU0lHTgoJLSBVKzAwYWQgKCfCrScpOiBTT0ZUIEhZUEhFTgoJLSBVKzIwMTAgKCfi gJAnKTogSFlQSEVOCgoJICAgIFRob3NlIHRocmVlIGFyZSB1c2VkIG9uIHBsYWNlcyB3aGVyZSBh IG5vcm1hbCBBU0NJSSBoeXBoZW4vbWludXMKCSAgICBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiBU aGVyZSBhcmUgZXZlbiBhIGNvdXBsZSBvZiBDIGZpbGVzIHdoaWNoCgkgICAgdXNlIHRoZW0gaW5z dGVhZCBvZiAnLScgb24gY29tbWVudHMuCgoJICAgIElNTyBhcmUgZml4ZXMvY2xlYW51cHMgZnJv bSBjb252ZXJzaW9ucyBhbmQgYmFkIGN1dC1hbmQtcGFzdGUuCgoJLSBVKzIwMTMgKCfigJMnKTog RU4gREFTSAoJLSBVKzIwMTQgKCfigJQnKTogRU0gREFTSAoJLSBVKzIwMjYgKCfigKYnKTogSE9S SVpPTlRBTCBFTExJUFNJUwoKCSAgICBUaG9zZSBhcmUgYXV0by1yZXBsYWNlZCBieSBTcGhpbngg ZnJvbSAiLS0iLCAiLS0tIiBhbmQgIi4uLiIsCgkgICAgcmVzcGVjdGl2ZWx5LgoKCSAgICBJIGd1 ZXNzIHRob3NlIGFyZSBhIG1hdHRlciBvZiBwZXJzb25hbCBwcmVmZXJlbmNlIGFib3V0CgkgICAg d2VhdGhlciB1c2luZyBBU0NJSSBvciBVVEYtOC4KCiAgICAgICAgICAgIE15IHBlcnNvbmFsIHBy ZWZlcmVuY2UgKGFuZCBUZWQgc2VlbXMgdG8gaGF2ZSBhIHNpbWlsYXIKCSAgICBvcGluaW9uKSBp cyB0byBsZXQgU3BoaW54IGRvIHRoZSBjb252ZXJzaW9uLgoKCSAgICBGb3IgdGhvc2UsIEkgaW50 ZW5kIHRvIHBvc3QgYSBzZXBhcmF0ZSBzZXJpZXMsIHRvIGJlCgkgICAgcmV2aWV3ZWQgcGF0Y2gg cGVyIHBhdGNoLCBhcyB0aGlzIGlzIHJlYWxseSBhIG1hdHRlcgoJICAgIG9mIHBlcnNvbmFsIHRh c3RlLiBIYXJkbHkgd2UnbGwgcmVhY2ggYSBjb25zZW5zdXMgaGVyZS4KCjcuIG1hdGggc3ltYm9s czoKCgktIFUrMDBkNyAoJ8OXJyk6IE1VTFRJUExJQ0FUSU9OIFNJR04KCgkgICBUaGlzIG9uZSBp cyB1c2VkIG1vc3RseSBkbyBkZXNjcmliZSB2aWRlbyByZXNvbHV0aW9ucywgYnV0IHRoaXMgaXMK CSAgIG9uIGEgc21hbGxlciBjaGFuZ2VzZXQgdGhhbiB0aGUgb25lcyB0aGF0IHVzZSAieCIgbGV0 dGVyLgoKCS0gVSsyMjE3ICgn4oiXJyk6IEFTVEVSSVNLIE9QRVJBVE9SCgoJICAgVGhpcyBpcyB1 c2VkIG9ubHkgaGVyZToKCQlEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQvYmxvY2tncm91 cC5yc3Q6ZmlsZXN5c3RlbSBzaXplIHRvIDJeMjEg4oiXIDJeMjcgPSAyXjQ4Ynl0ZXMgb3IgMjU2 VGlCLgoKCSAgIFByb2JhYmx5IGFkZGVkIGJ5IHNvbWUgY29udmVyc2lvbiB0b29sLiBJTU8sIHRo aXMgb25lIHNob3VsZAoJICAgYWxzbyBiZSByZXBsYWNlZCBieSBhbiBBU0NJSSBhc3Rlcmlzay4K CkkgZ3Vlc3MgSSdsbCBwb3N0IGEgcGF0Y2ggZm9yIHRoZSBBU1RFUklTSyBPUEVSQVRPUi4KVGhh bmtzLApNYXVybwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMu c291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3Rp bmZvL2xpbnV4LWYyZnMtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6F0D8C43461 for ; Mon, 17 May 2021 11:57:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 377FB611BF for ; Mon, 17 May 2021 11:57:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 377FB611BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id F37F46E935; Mon, 17 May 2021 11:57:03 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id ACDDA6E1B2 for ; Sat, 15 May 2021 08:22:48 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 2C190613B9; Sat, 15 May 2021 08:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621066968; bh=GZ+Kn4jT0gb7iB9pP/pJk26tOsd2+CGQf4jvs2zdqBw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=iG7hTAT03WHgFWqqoj0DV+re/0SLdMb3cUSY+SSuTzLrJYQKUGl36xxPlzpJM+obe aYXsMgr2FnrS3UmbhM6x/v0hyySs4FwS7nZabhVI4uZ7oSvYetpsNsa8YF+pHbxJBR Pvc7xud7ZTl9KAziTz3eT27vowbOqKYiG2XDc1TE977RvXZd58WPI/7xagMPnTojJ/ GJWlmOneBx01cy6SZcbDkvz0BdOwIrrlmQD5XJjxn9s8e2uY2fdVvUP3k7z3IeULok mtqmqeDzUbwgUVG+WJhEq15O9UonBwspCZS/Ybte0/0w+ceHppeg8djn6HLQSfz0bi sBmNf+UX/Tqtg== Date: Sat, 15 May 2021 10:22:39 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Message-ID: <20210515102239.2ffd0451@coco.lan> In-Reply-To: <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> Followup-To: dri-devel@lists.freedesktop.org X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 17 May 2021 11:57:02 +0000 Subject: Re: [Intel-gfx] [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alsa-devel@alsa-project.org, kvm@vger.kernel.org, Linux Doc Mailing List , linux-iio@vger.kernel.org, linux-pci@vger.kernel.org, keyrings@vger.kernel.org, linux-sgx@vger.kernel.org, Jonathan Corbet , linux-rdma@vger.kernel.org, linux-acpi@vger.kernel.org, Mali DP Maintainers , linux-input@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-ext4@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-media@vger.kernel.org, linux-pm@vger.kernel.org, coresight@lists.linaro.org, rcu@vger.kernel.org, mjpeg-users@lists.sourceforge.net, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org, linux-hwmon@vger.kernel.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-integrity@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RW0gRnJpLCAxNCBNYXkgMjAyMSAxMDowNjowMSArMDEwMApEYXZpZCBXb29kaG91c2UgPGR3bXcy QGluZnJhZGVhZC5vcmc+IGVzY3JldmV1OgoKPiBPbiBGcmksIDIwMjEtMDUtMTQgYXQgMTA6MjEg KzAyMDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZToKPiA+IEVtIFdlZCwgMTIgTWF5IDIw MjEgMTg6MDc6MDQgKzAxMDAKPiA+IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFkLm9y Zz4gZXNjcmV2ZXU6Cj4gPiAgIAo+ID4gPiBPbiBXZWQsIDIwMjEtMDUtMTIgYXQgMTQ6NTAgKzAy MDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZTogIAo+ID4gPiA+IFN1Y2ggY29udmVyc2lv biB0b29scyAtIHBsdXMgc29tZSB0ZXh0IGVkaXRvciBsaWtlIExpYnJlT2ZmaWNlICBvciBzaW1p bGFyICAtIGhhdmUKPiA+ID4gPiBhIHNldCBvZiBydWxlcyB0aGF0IHR1cm5zIHNvbWUgdHlwZWQg QVNDSUkgY2hhcmFjdGVycyBpbnRvIFVURi04IGFsdGVybmF0aXZlcywKPiA+ID4gPiBmb3IgaW5z dGFuY2UgY29udmVydGluZyBjb21tYXMgaW50byBjdXJseSBjb21tYXMgYW5kIGFkZGluZyBub24t YnJlYWthYmxlCj4gPiA+ID4gc3BhY2VzLiBBbGwgb2YgdGhvc2UgYXJlIG1lYW50IHRvIHByb2R1 Y2UgYmV0dGVyIHJlc3VsdHMgd2hlbiB0aGUgdGV4dCBpcwo+ID4gPiA+IGRpc3BsYXllZCBpbiBI VE1MIG9yIFBERiBmb3JtYXRzLiAgICAKPiA+ID4gCj4gPiA+IEFuZCBkb24ndCB3ZSByZW5kZXIg b3VyIGRvY3VtZW50YXRpb24gaW50byBIVE1MIG9yIFBERiBmb3JtYXRzPyAgIAo+ID4gCj4gPiBZ ZXMuCj4gPiAgIAo+ID4gPiBBcmUKPiA+ID4gc29tZSBvZiB0aG9zZSBub24tYnJlYWtpbmcgc3Bh Y2VzIG5vdCBhY3R1YWxseSAqdXNlZnVsKiBmb3IgdGhlaXIKPiA+ID4gaW50ZW5kZWQgcHVycG9z ZT8gIAo+ID4gCj4gPiBOby4KPiA+IAo+ID4gVGhlIHRoaW5nIGlzOiBub24tYnJlYWtpbmcgc3Bh Y2UgY2FuIGNhdXNlIGEgbG90IG9mIHByb2JsZW1zLgo+ID4gCj4gPiBXZSBldmVuIGhhZCB0byBk aXNhYmxlIFNwaGlueCB1c2FnZSBvZiBub24tYnJlYWtpbmcgc3BhY2UgZm9yCj4gPiBQREYgb3V0 cHV0cywgYXMgdGhpcyB3YXMgY2F1c2luZyBiYWQgTGFUZVgvUERGIG91dHB1dHMuCj4gPiAKPiA+ IFNlZSwgY29tbWl0OiAzYjRjOTYzMjQzYjEgKCJkb2NzOiBjb25mLnB5OiBhZGp1c3QgdGhlIExh VGVYIGRvY3VtZW50IG91dHB1dCIpCj4gPiAKPiA+IFRoZSBhZm9yZSBtZW50aW9uZWQgcGF0Y2gg ZGlzYWJsZXMgU3BoaW54IGRlZmF1bHQgYmVoYXZpb3Igb2YKPiA+IHVzaW5nIE5PTi1CUkVBS0FC TEUgU1BBQ0Ugb24gbGl0ZXJhbCBibG9ja3MgYW5kIHN0cmluZ3MsIHVzaW5nIHRoaXMKPiA+IHNw ZWNpYWwgc2V0dGluZzogInBhcnNlZGxpdGVyYWx3cmFwcz10cnVlIi4KPiA+IAo+ID4gV2hlbiBO T04tQlJFQUtBQkxFIFNQQUNFIHdlcmUgdXNlZCBvbiBQREYgb3V0cHV0cywgc2V2ZXJhbCBwYXJ0 cyBvZiAKPiA+IHRoZSBtZWRpYSB1QVBJIGRvY3Mgd2VyZSB2aW9sYXRpbmcgdGhlIGRvY3VtZW50 IG1hcmdpbnMgYnkgZmFyLAo+ID4gY2F1c2luZyB0ZXh0cyB0byBiZSB0cnVuY2F0ZWQuCj4gPiAK PiA+IFNvLCBwbGVhc2UgKipkb24ndCBhZGQgTk9OLUJSRUFLQUJMRSBTUEFDRSoqLCB1bmxlc3Mg eW91IHRlc3QKPiA+IChhbmQga2VlcCB0ZXN0aW5nIGl0IGZyb20gdGltZSB0byB0aW1lKSBpZiBv dXRwdXRzIG9uIGFsbAo+ID4gZm9ybWF0cyBhcmUgcHJvcGVybHkgc3VwcG9ydGluZyBpdCBvbiBk aWZmZXJlbnQgU3BoaW54IHZlcnNpb25zLiAgCj4gCj4gQW5kIHRoZXJlIHlvdSBoYXZlIGEgc3Bl Y2lmaWMgY2hhbmdlIHdpdGggYSBzcGVjaWZpYyBmaXguIE5vdGhpbmcgdG8gZG8KPiB3aXRoIHdo ZXRoZXIgTk9OLUJSRUFLQUJMRSBTUEFDRSBpcyDiiIkgQVNDSUksIGFuZCAqY2VydGFpbmx5KiBu b3RoaW5nIHRvCj4gZG8gd2l0aCB0aGUgZmFjdCB0aGF0LCBsaWtlICpldmVyeSogY2hhcmFjdGVy IGluIGV2ZXJ5IGtlcm5lbCBmaWxlCj4gZXhjZXB0IHRoZSAqYmluYXJ5KiBmaWxlcywgaXQncyBy ZXByZXNlbnRhYmxlIGluIFVURi04Lgo+IAo+IEJ5IGFsbCBtZWFucyBmaXggdGhlIHNwZWNpZmlj IGNoYXJhY3RlcnMgd2hpY2ggYXJlIHR5cG9ncmFwaGljYWxseQo+IHdyb25nIG9yIHdoaWNoLCBs aWtlIE5PTi1CUkVBS0FCTEUgU1BBQ0UsIGNhdXNlIHByb2JsZW1zIGZvciByZW5kZXJpbmcKPiB0 aGUgZG9jdW1lbnRhdGlvbi4KPiAKPiAKPiA+IEFsc28sIG1vc3Qgb2YgdGhvc2UgY2FtZSBmcm9t IGNvbnZlcnNpb24gdG9vbHMsIHRvZ2V0aGVyIHdpdGggb3RoZXIKPiA+IGVjY2VudHJpY2l0aWVz LCBsaWtlIHRoZSB1c2FnZSBvZiBVK0ZFRkYgKEJPTSkgY2hhcmFjdGVyIGF0IHRoZQo+ID4gc3Rh cnQgb2Ygc29tZSBkb2N1bWVudHMuIFRoZSByZW1haW5pbmcgb25lcyBzZWVtIHRvIGNhbWUgZnJv bSAKPiA+IGN1dC1hbmQtcGFzdGUuICAKPiAKPiAuLi4gb3Igd2hpY2ggYXJlIGp1c3QgZW50aXJl bHkgcmVkdW5kYW50IGFuZCBncmF0dWl0b3VzLCBsaWtlIGEgQk9NIGluCj4gYW4gZW52aXJvbm1l bnQgd2hlcmUgYWxsIGZpbGVzIGFyZSBVVEYtOCBhbmQgbmV2ZXIgMTYtYml0IGVuY29kaW5ncwo+ IGFueXdheS4KCkFncmVlZC4KCj4gCj4gPiA+ID4gV2hpbGUgaXQgaXMgcGVyZmVjdGx5IGZpbmUg dG8gdXNlIFVURi04IGNoYXJhY3RlcnMgaW4gTGludXgsIGFuZCBzcGVjaWFsbHkgYXQKPiA+ID4g PiB0aGUgZG9jdW1lbnRhdGlvbiwgIGl0IGlzIGJldHRlciB0byAgc3RpY2sgdG8gdGhlIEFTQ0lJ IHN1YnNldCAgb24gc3VjaAo+ID4gPiA+IHBhcnRpY3VsYXIgY2FzZSwgIGR1ZSB0byBhIGNvdXBs ZSBvZiByZWFzb25zOgo+ID4gPiA+IAo+ID4gPiA+IDEuIGl0IG1ha2VzIGxpZmUgZWFzaWVyIGZv ciB0b29scyBsaWtlIGdyZXA7ICAgIAo+ID4gPiAKPiA+ID4gQmFyZWx5LCBhcyBub3RlZCwgYmVj YXVzZSBvZiB0aGluZ3MgbGlrZSBsaW5lIGZlZWRzLiAgCj4gPiAKPiA+IFlvdSBjYW4gdXNlIGdy ZXAgd2l0aCAiLXoiIHRvIHNlZWsgZm9yIG11bHRpLWxpbmUgc3RyaW5ncygqKSwgTGlrZToKPiA+ IAo+ID4gCSQgZ3JlcCAtUHpsICdncmFjZSBwZXJpb2Qgc3RhcnRlZCxccyp0aGVuJyAkKGZpbmQg RG9jdW1lbnRhdGlvbi8gLXR5cGUgZikKPiA+IAlEb2N1bWVudGF0aW9uL1JDVS9EZXNpZ24vRGF0 YS1TdHJ1Y3R1cmVzL0RhdGEtU3RydWN0dXJlcy5yc3QgIAo+IAo+IFllYWgsIHJpZ2h0LiBUaGF0 IHdvcmtzIGlmIHlvdSBkb24ndCBqdXN0IHVzZSB0aGUgdGV4dCB0aGF0IHlvdSdsbCBoYXZlCj4g c2VlbiBpbiB0aGUgSFRNTC9QREYgImdyYWNlIHBlcmlvZCBzdGFydGVkLCB0aGVuIiwgYW5kIGlm IHlvdSBpbnN0ZWFkCj4gY3JhZnQgYSAqcmVnZXgqIGZvciBpdCwgcmVwbGFjaW5nIHRoZSBzcGFj ZXMgd2l0aCAnXHMqJy4gT3IgaXMgdGhhdAo+IFtbOnNwYWNlOl1dKiBpZiB5b3UgZG9uJ3Qgd2Fu dCB0byB1c2UgdGhlIGV4cGVyaW1lbnRhbCBQZXJsIHJlZ2V4Cj4gZmVhdHVyZT8KPiAKPiAgJCBn cmVwIC16bHIgJ2dyYWNlW1s6c3BhY2U6XV1cK3BlcmlvZFtbOnNwYWNlOl1dXCtzdGFydGVkLFtb OnNwYWNlOl1dXCt0aGVuJyBEb2N1bWVudGF0aW9uL1JDVQo+IERvY3VtZW50YXRpb24vUkNVL0Rl c2lnbi9EYXRhLVN0cnVjdHVyZXMvRGF0YS1TdHJ1Y3R1cmVzLnJzdAo+IAo+IEFuZCB3aXRob3V0 ICctbCcgaXQnbGwgb2J2aW91c2x5IGp1c3QgZ2l2ZSB5b3UgdGhlIHdob2xlIGZpbGUuIE5vICct QTUKPiAtQjUnIHRvIHNlZSB0aGUgc3Vycm91bmRpbmdzLi4uIGl0J3MgaGFyZGx5IGEgdXNlZnVs IHRoaW5nLCBpcyBpdD8KPiAKPiA+ICgqKSBVbmZvcnR1bmF0ZWx5LCB3aGlsZSAiZ2l0IGdyZXAi IGFsc28gaGFzIGEgIi16IiBmbGFnLCBpdAo+ID4gICAgIHNlZW1zIHRoYXQgdGhpcyBpcyAoY3Vy cmVudGx5PykgYnJva2VuIHdpdGggcmVnYXJkcyBvZiBoYW5kbGluZyBtdWx0aWxpbmVzOgo+ID4g Cj4gPiAJJCBnaXQgZ3JlcCAtUHpsICdncmFjZSBwZXJpb2Qgc3RhcnRlZCxccyp0aGVuJwo+ID4g CSQgIAo+IAo+IEV2ZW4gYmV0dGVyLiBTbyBubywgbXVsdGlsaW5lIGdyZXAgaXNuJ3QgcmVhbGx5 IGEgY29tbW9ubHkgdXNhYmxlCj4gZmVhdHVyZSBhdCBhbGwuCj4gCj4gVGhpcyBpcyB3aHkgd2Ug cHJlZmVyIHRvIHB1dCB1c2VyLXZpc2libGUgc3RyaW5ncyBvbiBvbmUgbGluZSBpbiBDCj4gc291 cmNlIGNvZGUsIGV2ZW4gaWYgaXQgdGFrZXMgdGhlIGxpbmVzIG92ZXIgODAgY2hhcmFjdGVycyDi gJQgdG8gYWxsb3cKPiBmb3IgZ3JlcCB0byBmaW5kIHRoZW0uCgpNYWtlcyBzZW5zZSwgYnV0IGlu IGNhc2Ugb2YgZG9jdW1lbnRhdGlvbiwgdGhpcyBpcyBhIGxpdHRsZSBtb3JlCmNvbXBsZXggdGhh biB0aGF0LiAKCkJ0dywgdGhlIHRoZW1lIHVzZWQgd2hlbiBidWlsZGluZyBodG1sIGJ5IGRlZmF1 bHRbMV0gaGFzIGEgc2VhcmNoCmJveCAod3JpdHRlbiBpbiBKYXZhc2NyaXB0KSB0aGF0IGNvdWxk IGJlIGFibGUgdG8gZmluZCBtdWx0aS1saW5lCnBhdHRlcm5zLCB3b3JraW5nIHNvbWV3aGF0IHNp bWlsYXIgdG8gImdpdCBncmVwIGZvbyAtYSBiYXIiLgoKWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9y ZWFkdGhlZG9jcy9zcGhpbnhfcnRkX3RoZW1lCgo+ID4gWzFdIElmIEkgaGF2ZSBhIHRhYmxlIHdp dGggVVRGLTggY29kZXMgaGFuZHksIEkgY291bGQgdHlwZSB0aGUgVVRGLTggCj4gPiAgICAgbnVt YmVyIG1hbnVhbGx5Li4uIEhvd2V2ZXIsIGl0IHNlZW1zIHRoYXQgdGhpcyBpcyBjdXJyZW50bHkg YnJva2VuIAo+ID4gICAgIGF0IGxlYXN0IG9uIEZlZG9yYSAzMyAod2l0aCBNYXRlIERlc2t0b3Ag YW5kIFVTIGludGwga2V5Ym9hcmQgd2l0aCAKPiA+ICAgICBkZWFkIGtleXMpLgo+ID4gCj4gPiAg ICAgSGVyZSwgPENUUkw+PFNISUZUPlUgaXMgbm90IHdvcmtpbmcuIE5vIGlkZWEgd2h5LiBJIGhh dmVuJ3QgCj4gPiAgICAgdGVzdCBpdCBmb3IgKnllYXJzKiwgYXMgSSBkaW4ndCBzZWUgYW55IHJl YXNvbiB3aHkgSSB3b3VsZAo+ID4gICAgIG5lZWQgdG8gdHlwZSBVVEYtOCBjaGFyYWN0ZXJzIGJ5 IG51bWJlcnMgdW50aWwgd2Ugc3RhcnRlZAo+ID4gICAgIHRoaXMgdGhyZWFkLiAgCj4gCj4gUGxl YXNlIHByb3ZpZGUgdGhlIGJ1ZyBudW1iZXIgZm9yIHRoaXM7IEknZCBsaWtlIHRvIHRyYWNrIGl0 LgoKSnVzdCBvcGVuZWQgYSBCWiBhbmQgYWRkZWQgeW91IGFzIGMvYy4KCj4gPiBOb3csIEknbSBu b3QgYXJndWluZyB0aGF0IHlvdSBjYW4ndCB1c2Ugd2hhdGV2ZXIgVVRGLTggc3ltYm9sIHlvdQo+ ID4gd2FudCBvbiB5b3VyIGRvY3MuIEknbSBqdXN0IHNheWluZyB0aGF0LCBub3cgdGhhdCB0aGUg Y29udmVyc2lvbiAKPiA+IGlzIG92ZXIgYW5kIGEgbG90IG9mIGRvY3VtZW50cyBlbmRlZCBnZXR0 aW5nIHNvbWUgVVRGLTggY2hhcmFjdGVycwo+ID4gYnkgYWNjaWRlbnQsIGl0IGlzIHRpbWUgZm9y IGEgY2xlYW51cC4gIAo+IAo+IEFsbCB0ZXh0IGRvY3VtZW50cyBhcmUgKmZ1bGwqIG9mIFVURi04 IGNoYXJhY3RlcnMuIElmIHRoZXJlIGlzIGEgZmlsZQo+IGluIHRoZSBzb3VyY2UgY29kZSB3aGlj aCBoYXMgKmFueSogbm9uLVVURjgsIHdlIGNhbGwgdGhhdCBhICdiaW5hcnkKPiBmaWxlJy4KPiAK PiBBZ2FpbiwgaWYgeW91IHdhbnQgdG8gbWFrZSBzcGVjaWZpYyBmaXhlcyBsaWtlIHJlbW92aW5n IG5vbi1icmVha2luZwo+IHNwYWNlcyBhbmQgYnl0ZSBvcmRlciBtYXJrcywgd2l0aCBzcGVjaWZp YyByZWFzb25zLCB0aGVuIHRob3NlIG1ha2UKPiBzZW5zZS4gQnV0IGl0J3MgZ290IHZlcnkgbGl0 dGxlIHRvIGRvIHdpdGggVVRGLTggYW5kIGhvdyBlYXN5IGl0IGlzIHRvCj4gdHlwZSB0aGVtLiBB bmQgdGhlIGV4Y3VzZSB5b3UndmUgcHV0IGluIHRoZSBjb21taXQgY29tbWVudCBmb3IgeW91cgo+ IHBhdGNoZXMgaXMgdXR0ZXJseSBib2d1cy4KCkxldCdzIHRha2Ugb25lIHN0ZXAgYmFjaywgaW4g b3JkZXIgdG8gcmV0dXJuIHRvIHRoZSBpbnRlbnRzIG9mIHRoaXMKVVRGLTgsIGFzIHRoZSBkaXNj dXNzaW9ucyBoZXJlIGFyZSBub3QgY2VudGVyZWQgaW50byB0aGUgcGF0Y2hlcywgYnV0Cmluc3Rl YWQsIG9uIHdoYXQgdG8gZG8gYW5kIHdoeS4KCi0KClRoaXMgZGlzY3Vzc2lvbiBzdGFydGVkIG9y aWdpbmFsbHkgYXQgbGludXgtZG9jIE1MLgoKV2hpbGUgZGlzY3Vzc2luZyBhYm91dCBhbiBpc3N1 ZSB3aGVuIG1hY2hpbmUncyBsb2NhbGUgd2FzIG5vdCBzZXQKdG8gVVRGLTggb24gYSBidWlsZCBW TSwgd2UgZGlzY292ZXJlZCB0aGF0IHNvbWUgY29udmVydGVkIGRvY3MgZW5kZWQKd2l0aCBCT00g Y2hhcmFjdGVycy4gVGhvc2Ugc3BlY2lmaWMgY2hhbmdlcyB3ZXJlIGludHJvZHVjZWQgYnkgc29t ZQpvZiBteSBjb252ZXJ0IHBhdGNoZXMsIHByb2JhYmx5IGNvbnZlcnRlZCB2aWEgcGFuZG9jLgoK U28sIEkgd2VudCBhaGVhZCBpbiBvcmRlciB0byBjaGVjayB3aGF0IG90aGVyIHBvc3NpYmxlIHdl aXJkIHRoaW5ncwp3ZXJlIGludHJvZHVjZWQgYnkgdGhlIGNvbnZlcnNpb24sIHdoZXJlIHNldmVy YWwgc2NyaXB0cyBhbmQgdG9vbHMKd2VyZSB1c2VkIG9uIGZpbGVzIHRoYXQgaGFkIGFscmVhZHkg YSBkaWZmZXJlbnQgbWFya3VwLgoKSSBhY3R1YWxseSBjaGVja2VkIHRoZSBjdXJyZW50IFVURi04 IGlzc3VlcywgYW5kIGFza2VkIHBlb3BsZSBhdApsaW51eC1kb2MgdG8gY29tbWVudCB3aGF0IG9m IHRob3NlIGFyZSB2YWxpZCB1c2VjYXNlcywgYW5kIHdoYXQKc2hvdWxkIGJlIHJlcGxhY2VkIGJ5 IHBsYWluIEFTQ0lJLgoKQmFzaWNhbGx5LCB0aGlzIGlzIHRoZSBjdXJyZW50IHNpdHVhdGlvbiAo YXQgZG9jcy9kb2NzLW5leHQpLCBmb3IgdGhlClJlU1QgZmlsZXMgdW5kZXIgRG9jdW1lbnRhdGlv bi8sIGV4Y2x1ZGluZyB0cmFuc2xhdGlvbnMgaXM6CgoxLiBTcGFjZXMgYW5kIEJPTQoKCS0gVSsw MGEwICgnwqAnKTogTk8tQlJFQUsgU1BBQ0UKCS0gVStmZWZmICgn77u/Jyk6IFpFUk8gV0lEVEgg Tk8tQlJFQUsgU1BBQ0UgKEJPTSkKCkJhc2VkIG9uIHRoZSBkaXNjdXNzaW9ucyB0aGVyZSBhbmQg b24gdGhpcyB0aHJlYWQsIHRob3NlIHNob3VsZCBiZQpkcm9wcGVkLCBhcyBCT00gaXMgdXNlbGVz cyBhbmQgTk8tQlJFQUsgU1BBQ0UgY2FuIGNhdXNlIHByb2JsZW1zCmF0IHRoZSBodG1sL3BkZiBv dXRwdXQ7CgoyLiBTeW1ib2xzCgoJLSBVKzAwYTkgKCfCqScpOiBDT1BZUklHSFQgU0lHTgoJLSBV KzAwYWMgKCfCrCcpOiBOT1QgU0lHTgoJLSBVKzAwYWUgKCfCricpOiBSRUdJU1RFUkVEIFNJR04K CS0gVSswMGIwICgnwrAnKTogREVHUkVFIFNJR04KCS0gVSswMGIxICgnwrEnKTogUExVUy1NSU5V UyBTSUdOCgktIFUrMDBiMiAoJ8KyJyk6IFNVUEVSU0NSSVBUIFRXTwoJLSBVKzAwYjUgKCfCtScp OiBNSUNSTyBTSUdOCgktIFUrMDNiYyAoJ868Jyk6IEdSRUVLIFNNQUxMIExFVFRFUiBNVQoJLSBV KzAwYjcgKCfCtycpOiBNSURETEUgRE9UCgktIFUrMDBiZCAoJ8K9Jyk6IFZVTEdBUiBGUkFDVElP TiBPTkUgSEFMRgoJLSBVKzIxMjIgKCfihKInKTogVFJBREUgTUFSSyBTSUdOCgktIFUrMjI2NCAo J+KJpCcpOiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KCS0gVSsyMjY1ICgn4omlJyk6IEdSRUFURVIt VEhBTiBPUiBFUVVBTCBUTwoJLSBVKzJiMGQgKCfirI0nKTogVVAgRE9XTiBCTEFDSyBBUlJPVwoK VGhvc2Ugc2VlbSBPSyBvbiBteSBleWVzLgoKT24gYSBzaWRlIG5vdGUsIGJvdGggTUlDUk8gU0lH TiBhbmQgR1JFRUsgU01BTEwgTEVUVEVSIE1VIGFyZQp1c2VkIHNldmVyYWwgZG9jcyB0byByZXBy ZXNlbnQgbWljcm9zZWNvbmRzLCBtaWNyby12b2x0cyBhbmQKbWljcm8tYW1ww6hyZXMuIElmIHdl IHdyaXRlIGFuIG9yaWVudGF0aW9uIGRvY3VtZW50LCBpdCBwcm9iYWJseQptYWtlcyBzZW5zZSB0 byByZWNvbW1lbmQgdXNpbmcgTUlDUk8gU0lHTiBvbiBzdWNoIGNhc2VzLgoKMy4gTGF0aW4KCgkt IFUrMDBjNyAoJ8OHJyk6IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCgktIFUr MDBkZiAoJ8OfJyk6IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCgktIFUrMDBlMSAoJ8OhJyk6 IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKCS0gVSswMGU0ICgnw6QnKTogTEFUSU4g U01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKCS0gVSswMGU2ICgnw6YnKTogTEFUSU4gU01B TEwgTEVUVEVSIEFFCgktIFUrMDBlNyAoJ8OnJyk6IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEgg Q0VESUxMQQoJLSBVKzAwZTkgKCfDqScpOiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRF CgktIFUrMDBlYSAoJ8OqJyk6IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAoJ LSBVKzAwZWIgKCfDqycpOiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwoJLSBV KzAwZjMgKCfDsycpOiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCgktIFUrMDBmNCAo J8O0Jyk6IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAoJLSBVKzAwZjYgKCfD ticpOiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwoJLSBVKzAwZjggKCfDuCcp OiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQoJLSBVKzAwZmEgKCfDuicpOiBMQVRJ TiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCgktIFUrMDBmYyAoJ8O8Jyk6IExBVElOIFNNQUxM IExFVFRFUiBVIFdJVEggRElBRVJFU0lTCgktIFUrMDBmZCAoJ8O9Jyk6IExBVElOIFNNQUxMIExF VFRFUiBZIFdJVEggQUNVVEUKCS0gVSswMTFmICgnxJ8nKTogTEFUSU4gU01BTEwgTEVUVEVSIEcg V0lUSCBCUkVWRQoJLSBVKzAxNDIgKCfFgicpOiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNU Uk9LRQoKVGhvc2Ugc2hvdWxkIGJlIGtlcHQgYXMgd2VsbCwgYXMgdGhleSdyZSB1c2VkIGZvciBu b24tRW5nbGlzaCBuYW1lcy4KCjQuIGFycm93cyBhbmQgYm94IGRyYXdpbmcgc3ltYm9sczoKCS0g VSsyMTkxICgn4oaRJyk6IFVQV0FSRFMgQVJST1cKCS0gVSsyMTkyICgn4oaSJyk6IFJJR0hUV0FS RFMgQVJST1cKCS0gVSsyMTkzICgn4oaTJyk6IERPV05XQVJEUyBBUlJPVwoKCS0gVSsyNTAwICgn 4pSAJyk6IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCgktIFUrMjUwMiAoJ+KUgicpOiBC T1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKCS0gVSsyNTE0ICgn4pSUJyk6IEJPWCBEUkFXSU5H UyBMSUdIVCBVUCBBTkQgUklHSFQKCS0gVSsyNTFjICgn4pScJyk6IEJPWCBEUkFXSU5HUyBMSUdI VCBWRVJUSUNBTCBBTkQgUklHSFQKCkFsc28gc2hvdWxkIGJlIGtlcHQuCgpJbiBzdW1tYXJ5LCBi YXNlZCBvbiB0aGUgZGlzY3Vzc2lvbnMgd2UgaGF2ZSBzbyBmYXIsIEkgc3VzcGVjdCB0aGF0CnRo ZXJlJ3Mgbm90IG11Y2ggdG8gYmUgZGlzY3Vzc2VkIGZvciB0aGUgYWJvdmUgY2FzZXMuCgpTbywg SSdsbCBwb3N0IGEgdjMgb2YgdGhpcyBzZXJpZXMsIGNoYW5naW5nIG9ubHk6CgoJLSBVKzAwYTAg KCfCoCcpOiBOTy1CUkVBSyBTUEFDRQoJLSBVK2ZlZmYgKCfvu78nKTogWkVSTyBXSURUSCBOTy1C UkVBSyBTUEFDRSAoQk9NKQoKLS0tCgpOb3csIHRoaXMgc3BlY2lmaWMgcGF0Y2ggc2VyaWVzIGFk ZHJlc3MgYWxzbyB0aGlzIGV4dHJhIGNhc2U6Cgo1LiBjdXJseSBjb21tYXM6CgoJLSBVKzIwMTgg KCfigJgnKTogTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKCS0gVSsyMDE5ICgn4oCZJyk6IFJJ R0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwoJLSBVKzIwMWMgKCfigJwnKTogTEVGVCBET1VCTEUg UVVPVEFUSU9OIE1BUksKCS0gVSsyMDFkICgn4oCdJyk6IFJJR0hUIERPVUJMRSBRVU9UQVRJT04g TUFSSwoKSU1PLCB0aG9zZSBzaG91bGQgYmUgcmVwbGFjZWQgYnkgQVNDSUkgY29tbWFzOiAnIGFu ZCAiLgoKVGhlIHJhdGlvbmFsZSBpcyBzaW1wbGU6IAoKLSBtb3N0IHdlcmUgaW50cm9kdWNlZCBk dXJpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBEb2Nib29rLAogIG1hcmtkb3duIGFuZCBMYVRleDsK LSB0aGV5IGRvbid0IGFkZCBhbnkgZXh0cmEgdmFsdWUsIGFzIHVzaW5nICJmb28iIG9mIOKAnGZv b+KAnSBtZWFucwogIHRoZSBzYW1lIHRoaW5nOwotIFNwaGlueCBhbHJlYWR5IHVzZSAiZmFuY3ki IGNvbW1hcyBhdCB0aGUgb3V0cHV0LiAKCkkgZ3Vlc3MgSSB3aWxsIHB1dCB0aGlzIG9uIGEgc2Vw YXJhdGUgc2VyaWVzLCBhcyB0aGlzIGlzIG5vdCBhIGJ1ZwpmaXgsIGJ1dCBqdXN0IGEgY2xlYW51 cCBmcm9tIHRoZSBjb252ZXJzaW9uIHdvcmsuCgpJJ2xsIHJlLXBvc3QgdGhvc2UgY2xlYW51cHMg b24gYSBzZXBhcmF0ZSBzZXJpZXMsIGZvciBwYXRjaCBwZXIgcGF0Y2gKcmV2aWV3LgoKLS0tCgpU aGUgcmVtYWluaW5nIGNhc2VzIGFyZSBmdXR1cmUgd29yaywgb3V0c2lkZSB0aGUgc2NvcGUgb2Yg dGhpcyB2MjoKCjYuIEh5cGhlbi9EYXNoZXMgYW5kIGVsbGlwc2lzCgoJLSBVKzIyMTIgKCfiiJIn KTogTUlOVVMgU0lHTgoJLSBVKzAwYWQgKCfCrScpOiBTT0ZUIEhZUEhFTgoJLSBVKzIwMTAgKCfi gJAnKTogSFlQSEVOCgoJICAgIFRob3NlIHRocmVlIGFyZSB1c2VkIG9uIHBsYWNlcyB3aGVyZSBh IG5vcm1hbCBBU0NJSSBoeXBoZW4vbWludXMKCSAgICBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiBU aGVyZSBhcmUgZXZlbiBhIGNvdXBsZSBvZiBDIGZpbGVzIHdoaWNoCgkgICAgdXNlIHRoZW0gaW5z dGVhZCBvZiAnLScgb24gY29tbWVudHMuCgoJICAgIElNTyBhcmUgZml4ZXMvY2xlYW51cHMgZnJv bSBjb252ZXJzaW9ucyBhbmQgYmFkIGN1dC1hbmQtcGFzdGUuCgoJLSBVKzIwMTMgKCfigJMnKTog RU4gREFTSAoJLSBVKzIwMTQgKCfigJQnKTogRU0gREFTSAoJLSBVKzIwMjYgKCfigKYnKTogSE9S SVpPTlRBTCBFTExJUFNJUwoKCSAgICBUaG9zZSBhcmUgYXV0by1yZXBsYWNlZCBieSBTcGhpbngg ZnJvbSAiLS0iLCAiLS0tIiBhbmQgIi4uLiIsCgkgICAgcmVzcGVjdGl2ZWx5LgoKCSAgICBJIGd1 ZXNzIHRob3NlIGFyZSBhIG1hdHRlciBvZiBwZXJzb25hbCBwcmVmZXJlbmNlIGFib3V0CgkgICAg d2VhdGhlciB1c2luZyBBU0NJSSBvciBVVEYtOC4KCiAgICAgICAgICAgIE15IHBlcnNvbmFsIHBy ZWZlcmVuY2UgKGFuZCBUZWQgc2VlbXMgdG8gaGF2ZSBhIHNpbWlsYXIKCSAgICBvcGluaW9uKSBp cyB0byBsZXQgU3BoaW54IGRvIHRoZSBjb252ZXJzaW9uLgoKCSAgICBGb3IgdGhvc2UsIEkgaW50 ZW5kIHRvIHBvc3QgYSBzZXBhcmF0ZSBzZXJpZXMsIHRvIGJlCgkgICAgcmV2aWV3ZWQgcGF0Y2gg cGVyIHBhdGNoLCBhcyB0aGlzIGlzIHJlYWxseSBhIG1hdHRlcgoJICAgIG9mIHBlcnNvbmFsIHRh c3RlLiBIYXJkbHkgd2UnbGwgcmVhY2ggYSBjb25zZW5zdXMgaGVyZS4KCjcuIG1hdGggc3ltYm9s czoKCgktIFUrMDBkNyAoJ8OXJyk6IE1VTFRJUExJQ0FUSU9OIFNJR04KCgkgICBUaGlzIG9uZSBp cyB1c2VkIG1vc3RseSBkbyBkZXNjcmliZSB2aWRlbyByZXNvbHV0aW9ucywgYnV0IHRoaXMgaXMK CSAgIG9uIGEgc21hbGxlciBjaGFuZ2VzZXQgdGhhbiB0aGUgb25lcyB0aGF0IHVzZSAieCIgbGV0 dGVyLgoKCS0gVSsyMjE3ICgn4oiXJyk6IEFTVEVSSVNLIE9QRVJBVE9SCgoJICAgVGhpcyBpcyB1 c2VkIG9ubHkgaGVyZToKCQlEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQvYmxvY2tncm91 cC5yc3Q6ZmlsZXN5c3RlbSBzaXplIHRvIDJeMjEg4oiXIDJeMjcgPSAyXjQ4Ynl0ZXMgb3IgMjU2 VGlCLgoKCSAgIFByb2JhYmx5IGFkZGVkIGJ5IHNvbWUgY29udmVyc2lvbiB0b29sLiBJTU8sIHRo aXMgb25lIHNob3VsZAoJICAgYWxzbyBiZSByZXBsYWNlZCBieSBhbiBBU0NJSSBhc3Rlcmlzay4K CkkgZ3Vlc3MgSSdsbCBwb3N0IGEgcGF0Y2ggZm9yIHRoZSBBU1RFUklTSyBPUEVSQVRPUi4KVGhh bmtzLApNYXVybwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauro Carvalho Chehab Date: Sat, 15 May 2021 10:22:39 +0200 Subject: [Intel-wired-lan] [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols In-Reply-To: <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> Message-ID: <20210515102239.2ffd0451@coco.lan> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: Em Fri, 14 May 2021 10:06:01 +0100 David Woodhouse escreveu: > On Fri, 2021-05-14 at 10:21 +0200, Mauro Carvalho Chehab wrote: > > Em Wed, 12 May 2021 18:07:04 +0100 > > David Woodhouse escreveu: > > > > > On Wed, 2021-05-12 at 14:50 +0200, Mauro Carvalho Chehab wrote: > > > > Such conversion tools - plus some text editor like LibreOffice or similar - have > > > > a set of rules that turns some typed ASCII characters into UTF-8 alternatives, > > > > for instance converting commas into curly commas and adding non-breakable > > > > spaces. All of those are meant to produce better results when the text is > > > > displayed in HTML or PDF formats. > > > > > > And don't we render our documentation into HTML or PDF formats? > > > > Yes. > > > > > Are > > > some of those non-breaking spaces not actually *useful* for their > > > intended purpose? > > > > No. > > > > The thing is: non-breaking space can cause a lot of problems. > > > > We even had to disable Sphinx usage of non-breaking space for > > PDF outputs, as this was causing bad LaTeX/PDF outputs. > > > > See, commit: 3b4c963243b1 ("docs: conf.py: adjust the LaTeX document output") > > > > The afore mentioned patch disables Sphinx default behavior of > > using NON-BREAKABLE SPACE on literal blocks and strings, using this > > special setting: "parsedliteralwraps=true". > > > > When NON-BREAKABLE SPACE were used on PDF outputs, several parts of > > the media uAPI docs were violating the document margins by far, > > causing texts to be truncated. > > > > So, please **don't add NON-BREAKABLE SPACE**, unless you test > > (and keep testing it from time to time) if outputs on all > > formats are properly supporting it on different Sphinx versions. > > And there you have a specific change with a specific fix. Nothing to do > with whether NON-BREAKABLE SPACE is ? ASCII, and *certainly* nothing to > do with the fact that, like *every* character in every kernel file > except the *binary* files, it's representable in UTF-8. > > By all means fix the specific characters which are typographically > wrong or which, like NON-BREAKABLE SPACE, cause problems for rendering > the documentation. > > > > Also, most of those came from conversion tools, together with other > > eccentricities, like the usage of U+FEFF (BOM) character at the > > start of some documents. The remaining ones seem to came from > > cut-and-paste. > > ... or which are just entirely redundant and gratuitous, like a BOM in > an environment where all files are UTF-8 and never 16-bit encodings > anyway. Agreed. > > > > > While it is perfectly fine to use UTF-8 characters in Linux, and specially at > > > > the documentation, it is better to stick to the ASCII subset on such > > > > particular case, due to a couple of reasons: > > > > > > > > 1. it makes life easier for tools like grep; > > > > > > Barely, as noted, because of things like line feeds. > > > > You can use grep with "-z" to seek for multi-line strings(*), Like: > > > > $ grep -Pzl 'grace period started,\s*then' $(find Documentation/ -type f) > > Documentation/RCU/Design/Data-Structures/Data-Structures.rst > > Yeah, right. That works if you don't just use the text that you'll have > seen in the HTML/PDF "grace period started, then", and if you instead > craft a *regex* for it, replacing the spaces with '\s*'. Or is that > [[:space:]]* if you don't want to use the experimental Perl regex > feature? > > $ grep -zlr 'grace[[:space:]]\+period[[:space:]]\+started,[[:space:]]\+then' Documentation/RCU > Documentation/RCU/Design/Data-Structures/Data-Structures.rst > > And without '-l' it'll obviously just give you the whole file. No '-A5 > -B5' to see the surroundings... it's hardly a useful thing, is it? > > > (*) Unfortunately, while "git grep" also has a "-z" flag, it > > seems that this is (currently?) broken with regards of handling multilines: > > > > $ git grep -Pzl 'grace period started,\s*then' > > $ > > Even better. So no, multiline grep isn't really a commonly usable > feature at all. > > This is why we prefer to put user-visible strings on one line in C > source code, even if it takes the lines over 80 characters ? to allow > for grep to find them. Makes sense, but in case of documentation, this is a little more complex than that. Btw, the theme used when building html by default[1] has a search box (written in Javascript) that could be able to find multi-line patterns, working somewhat similar to "git grep foo -a bar". [1] https://github.com/readthedocs/sphinx_rtd_theme > > [1] If I have a table with UTF-8 codes handy, I could type the UTF-8 > > number manually... However, it seems that this is currently broken > > at least on Fedora 33 (with Mate Desktop and US intl keyboard with > > dead keys). > > > > Here, U is not working. No idea why. I haven't > > test it for *years*, as I din't see any reason why I would > > need to type UTF-8 characters by numbers until we started > > this thread. > > Please provide the bug number for this; I'd like to track it. Just opened a BZ and added you as c/c. > > Now, I'm not arguing that you can't use whatever UTF-8 symbol you > > want on your docs. I'm just saying that, now that the conversion > > is over and a lot of documents ended getting some UTF-8 characters > > by accident, it is time for a cleanup. > > All text documents are *full* of UTF-8 characters. If there is a file > in the source code which has *any* non-UTF8, we call that a 'binary > file'. > > Again, if you want to make specific fixes like removing non-breaking > spaces and byte order marks, with specific reasons, then those make > sense. But it's got very little to do with UTF-8 and how easy it is to > type them. And the excuse you've put in the commit comment for your > patches is utterly bogus. Let's take one step back, in order to return to the intents of this UTF-8, as the discussions here are not centered into the patches, but instead, on what to do and why. - This discussion started originally at linux-doc ML. While discussing about an issue when machine's locale was not set to UTF-8 on a build VM, we discovered that some converted docs ended with BOM characters. Those specific changes were introduced by some of my convert patches, probably converted via pandoc. So, I went ahead in order to check what other possible weird things were introduced by the conversion, where several scripts and tools were used on files that had already a different markup. I actually checked the current UTF-8 issues, and asked people at linux-doc to comment what of those are valid usecases, and what should be replaced by plain ASCII. Basically, this is the current situation (at docs/docs-next), for the ReST files under Documentation/, excluding translations is: 1. Spaces and BOM - U+00a0 ('?'): NO-BREAK SPACE - U+feff ('?'): ZERO WIDTH NO-BREAK SPACE (BOM) Based on the discussions there and on this thread, those should be dropped, as BOM is useless and NO-BREAK SPACE can cause problems at the html/pdf output; 2. Symbols - U+00a9 ('?'): COPYRIGHT SIGN - U+00ac ('?'): NOT SIGN - U+00ae ('?'): REGISTERED SIGN - U+00b0 ('?'): DEGREE SIGN - U+00b1 ('?'): PLUS-MINUS SIGN - U+00b2 ('?'): SUPERSCRIPT TWO - U+00b5 ('?'): MICRO SIGN - U+03bc ('?'): GREEK SMALL LETTER MU - U+00b7 ('?'): MIDDLE DOT - U+00bd ('?'): VULGAR FRACTION ONE HALF - U+2122 ('?'): TRADE MARK SIGN - U+2264 ('?'): LESS-THAN OR EQUAL TO - U+2265 ('?'): GREATER-THAN OR EQUAL TO - U+2b0d ('?'): UP DOWN BLACK ARROW Those seem OK on my eyes. On a side note, both MICRO SIGN and GREEK SMALL LETTER MU are used several docs to represent microseconds, micro-volts and micro-amp?res. If we write an orientation document, it probably makes sense to recommend using MICRO SIGN on such cases. 3. Latin - U+00c7 ('?'): LATIN CAPITAL LETTER C WITH CEDILLA - U+00df ('?'): LATIN SMALL LETTER SHARP S - U+00e1 ('?'): LATIN SMALL LETTER A WITH ACUTE - U+00e4 ('?'): LATIN SMALL LETTER A WITH DIAERESIS - U+00e6 ('?'): LATIN SMALL LETTER AE - U+00e7 ('?'): LATIN SMALL LETTER C WITH CEDILLA - U+00e9 ('?'): LATIN SMALL LETTER E WITH ACUTE - U+00ea ('?'): LATIN SMALL LETTER E WITH CIRCUMFLEX - U+00eb ('?'): LATIN SMALL LETTER E WITH DIAERESIS - U+00f3 ('?'): LATIN SMALL LETTER O WITH ACUTE - U+00f4 ('?'): LATIN SMALL LETTER O WITH CIRCUMFLEX - U+00f6 ('?'): LATIN SMALL LETTER O WITH DIAERESIS - U+00f8 ('?'): LATIN SMALL LETTER O WITH STROKE - U+00fa ('?'): LATIN SMALL LETTER U WITH ACUTE - U+00fc ('?'): LATIN SMALL LETTER U WITH DIAERESIS - U+00fd ('?'): LATIN SMALL LETTER Y WITH ACUTE - U+011f ('?'): LATIN SMALL LETTER G WITH BREVE - U+0142 ('?'): LATIN SMALL LETTER L WITH STROKE Those should be kept as well, as they're used for non-English names. 4. arrows and box drawing symbols: - U+2191 ('?'): UPWARDS ARROW - U+2192 ('?'): RIGHTWARDS ARROW - U+2193 ('?'): DOWNWARDS ARROW - U+2500 ('?'): BOX DRAWINGS LIGHT HORIZONTAL - U+2502 ('?'): BOX DRAWINGS LIGHT VERTICAL - U+2514 ('?'): BOX DRAWINGS LIGHT UP AND RIGHT - U+251c ('?'): BOX DRAWINGS LIGHT VERTICAL AND RIGHT Also should be kept. In summary, based on the discussions we have so far, I suspect that there's not much to be discussed for the above cases. So, I'll post a v3 of this series, changing only: - U+00a0 ('?'): NO-BREAK SPACE - U+feff ('?'): ZERO WIDTH NO-BREAK SPACE (BOM) --- Now, this specific patch series address also this extra case: 5. curly commas: - U+2018 ('?'): LEFT SINGLE QUOTATION MARK - U+2019 ('?'): RIGHT SINGLE QUOTATION MARK - U+201c ('?'): LEFT DOUBLE QUOTATION MARK - U+201d ('?'): RIGHT DOUBLE QUOTATION MARK IMO, those should be replaced by ASCII commas: ' and ". The rationale is simple: - most were introduced during the conversion from Docbook, markdown and LaTex; - they don't add any extra value, as using "foo" of ?foo? means the same thing; - Sphinx already use "fancy" commas at the output. I guess I will put this on a separate series, as this is not a bug fix, but just a cleanup from the conversion work. I'll re-post those cleanups on a separate series, for patch per patch review. --- The remaining cases are future work, outside the scope of this v2: 6. Hyphen/Dashes and ellipsis - U+2212 ('?'): MINUS SIGN - U+00ad ('?'): SOFT HYPHEN - U+2010 ('?'): HYPHEN Those three are used on places where a normal ASCII hyphen/minus should be used instead. There are even a couple of C files which use them instead of '-' on comments. IMO are fixes/cleanups from conversions and bad cut-and-paste. - U+2013 ('?'): EN DASH - U+2014 ('?'): EM DASH - U+2026 ('?'): HORIZONTAL ELLIPSIS Those are auto-replaced by Sphinx from "--", "---" and "...", respectively. I guess those are a matter of personal preference about weather using ASCII or UTF-8. My personal preference (and Ted seems to have a similar opinion) is to let Sphinx do the conversion. For those, I intend to post a separate series, to be reviewed patch per patch, as this is really a matter of personal taste. Hardly we'll reach a consensus here. 7. math symbols: - U+00d7 ('?'): MULTIPLICATION SIGN This one is used mostly do describe video resolutions, but this is on a smaller changeset than the ones that use "x" letter. - U+2217 ('?'): ASTERISK OPERATOR This is used only here: Documentation/filesystems/ext4/blockgroup.rst:filesystem size to 2^21 ? 2^27 = 2^48bytes or 256TiB. Probably added by some conversion tool. IMO, this one should also be replaced by an ASCII asterisk. I guess I'll post a patch for the ASTERISK OPERATOR. Thanks, Mauro