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=-8.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,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 734D0C433ED for ; Sat, 15 May 2021 11:24:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5DFE5613CE for ; Sat, 15 May 2021 11:24:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231380AbhEOLZM (ORCPT ); Sat, 15 May 2021 07:25:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:57360 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230384AbhEOLZH (ORCPT ); Sat, 15 May 2021 07:25:07 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C31761353; Sat, 15 May 2021 11:23:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621077833; bh=HeIddlkMKM2vvOljnLDXD4e2e2yH5GQzottfBaVm0bY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=XXlyAEA014M55DUjIyQLfGWDcW9S7xmk1gidB0jh9f2ApxAuuEF9sz2c9VzCGb5GE 41pS57vPJwcz1c2L+apHtk8j0/zoZAIUVQw007qk7tH/cIpT9DVClLM9mfxTLWrVvL wrhEszurWapZjCMLZr9NBlXhh1iki4WvckUaXrW2iyL74EjZoPEpdsooNgbX0Lq+iW z/ynOSpbXZQ9RM3lfA5tr05EXWQuuWTypwjc0XflcrGdCNtqTLQ0zuOI0eGNgvNIql jgNeJnivsI/Ub1np4iQ0qwQORU1dLwIVXW0zvu4YSMrvgguupZqbQkJ/ZhuuaAPIod yefI1SDfhPYmQ== Date: Sat, 15 May 2021 13:23:44 +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: <20210515132344.0206c8fc@coco.lan> In-Reply-To: References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> <20210515102239.2ffd0451@coco.lan> 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 Sat, 15 May 2021 10:24:28 +0100 David Woodhouse escreveu: > On Sat, 2021-05-15 at 10:22 +0200, Mauro Carvalho Chehab wrote: > > > > 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. =20 > >=20 > > Just opened a BZ and added you as c/c. =20 >=20 > Thanks. >=20 > > 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. > >=20 > > - > >=20 > > This discussion started originally at linux-doc ML. > >=20 > > While discussing about an issue when machine's locale was not set > > to UTF-8 on a build VM, =20 >=20 > Stop. Stop *right* there before you go any further. >=20 > The machine's locale should have *nothing* to do with anything. >=20 > When you view this email, it comes with a Content-Type: header which > explicitly tells you the character set that the message is encoded in,=20 > which I think I've set to UTF-7. >=20 > When showing you the mail, your system has to interpret the bytes of > the content using *that* character set encoding. Anything else is just > fundamentally broken. Your system locale has *nothing* to do with it. >=20 > If your local system is running EBCDIC that doesn't *matter*. >=20 > Now, the character set encoding of the kernel source and documentation > text files is UTF-8. It isn't EBCDIC, it isn't ISO8859-15 or any of the > legacy crap. It isn't system locale either, unless your system locale > *happens* to be UTF-8. >=20 > UTF-8 *happens* to be compatible with ASCII for the limited subset of > characters which ASCII contains, sure =E2=80=94 just as *many*, but not a= ll, of > the legacy 8-bit character sets are also a superset of ASCII's 7 bits. >=20 > But if the docs contain *any* characters which aren't ASCII, and you > build them with a broken build system which assumes ASCII, you are > going to produce wrong output. There is *no* substitute for fixing the > *actual* bug which started all this, and ensuring your build system (or > whatever) uses the *actual* encoding of the text files it's processing, > instead of making stupid and bogus assumptions based on a system > default. >=20 > You concede keeping U+00a9 =C2=A9 COPYRIGHT SIGN. And that's encoded in U= TF- > 8 as two bytes 0xC2 0xA9. If some broken build system *assumes* those > bytes are ISO8859-15 it'll take them to mean two separate characters >=20 > U+00C2 =C3=82 LATIN CAPITAL LETTER A WITH CIRCUMFLEX > U+00A9 =C2=A9 COPYRIGHT SIGN >=20 > Your broken build system that started all this is never going to be > *anything* other than broken. You can only paper over the cracks and > make it slightly less likely that people will notice in the common > case, perhaps? That's all you do by *reducing* the use of non-ASCII, > unless you're going to drag us all the way back to the 1980s and > strictly limit us to pure ASCII, using the equivalent of trigraphs for > *anything* outside the 0-127 character ranges. >=20 > And even if you did that, systems which use EBCDIC as their local > encoding would *still* be broken, if they have the same bug you started > from. Because EBCDIC isn't compatible with ASCII *even* for the first 7 > bits. Now, you're making a lot of wrong assumptions here ;-) 1. I didn't report the bug. Another person reported it at linux-doc; 2. I fully agree with you that the building system should work fine whatever locate the machine has; 3. Sphinx supported charset for the REST input and its output is UTF-8. Despite of that, it seems that there are some issues at the building tool set, at least under certain circunstances. One of the hypothesis=20 that it was mentioned there is that the Sphinx logger crashes when it tries to print an UTF-8 message when the machine's locale is not UTF-8. That's said, I tried forcing a non-UTF-8 on some tests I did to try to reproduce, but the build went fine. So, I was not able to reproduce the issue. This series doesn't address the issue. It is just a side effect of the discussions, where, while trying to understand the bug, we noticed several UTF-8 characters introduced during the conversion that were't the original author's intent. So, with regards to the original but report, if I find a way to reproduce it and to address it, I'll post a separate series. If you want to discuss this issue further, let's not discuss here, but instead, at the linux-doc thread: https://lore.kernel.org/linux-doc/20210506103913.GE6564@kitsune.suse.cz/ >=20 >=20 > > 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. > >=20 > > 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. > >=20 > > 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. =20 >=20 > No, these aren't "UTF-8 issues". Those are *conversion* issues, and > would still be there if the output of the conversion had been UTF-7, > UCS-16, etc. Or *even* if the output of the conversion had been > trigraph-like stuff like '--' for emdash. It's *nothing* to do with the > encoding that we happen to be using. Yes. That's what I said. >=20 > Fixing the conversion issues makes a lot of sense. Try to do it without > making *any* mention of UTF-8 at all. >=20 > > In summary, based on the discussions we have so far, I suspect that > > there's not much to be discussed for the above cases. > >=20 > > So, I'll post a v3 of this series, changing only: > >=20 > > - U+00a0 (' '): NO-BREAK SPACE > > - U+feff ('=EF=BB=BF'): ZERO WIDTH NO-BREAK SPACE (BOM) =20 >=20 > Ack, as long as those make *no* mention of UTF-8. Except perhaps to > note that BOM is redundant because UTF-8 doesn't have a byteorder. I need to tell what UTF-8 codes are replaced, as otherwise the patch wouldn't make much sense to reviewers, as both U+00a0 and whitespaces are displayed the same way, and BOM is invisible. >=20 > > --- > >=20 > > Now, this specific patch series address also this extra case: > >=20 > > 5. curly commas: > >=20 > > - 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 > >=20 > > IMO, those should be replaced by ASCII commas: ' and ". > >=20 > > The rationale is simple:=20 > >=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 means > > the same thing; > > - Sphinx already use "fancy" commas at the output.=20 > >=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. > >=20 > > I'll re-post those cleanups on a separate series, for patch per patch > > review. =20 >=20 > Makes sense.=20 >=20 > The left/right quotation marks exists to make human-readable text much > easier to read, but the key point here is that they are redundant > because the tooling already emits them in the *output* so they don't > need to be in the source, yes? Yes. > As long as the tooling gets it *right* and uses them where it should, > that seems sane enough. >=20 > However, it *does* break 'grep', because if I cut/paste a snippet from > the documentation and try to grep for it, it'll no longer match. >=20 > Consistency is good, but perhaps we should actually be consistent the > other way round and always use the left/right versions in the source > *instead* of relying on the tooling, to make searches work better? > You claimed to care about that, right? That's indeed a good point. It would be interesting to have more opinions with that matter. There are a couple of things to consider: 1. It is (usually) trivial to discover what document produced a certain page at the documentation. For instance, if you want to know where the text under this file came from, or to grep a text from it: https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html You can click at the "View page source" button at the first line. It will show the .rst file used to produce it: https://www.kernel.org/doc/html/latest/_sources/admin-guide/cgroup-v2.rst.= txt 2. If all you want is to search for a text inside the docs, you can click at the "Search docs" box, which is part of the Read the Docs theme. 3. Kernel has several extensions for Sphinx, in order to make life=20 easier for Kernel developers: Documentation/sphinx/automarkup.py Documentation/sphinx/cdomain.py Documentation/sphinx/kernel_abi.py Documentation/sphinx/kernel_feat.py Documentation/sphinx/kernel_include.py Documentation/sphinx/kerneldoc.py Documentation/sphinx/kernellog.py Documentation/sphinx/kfigure.py Documentation/sphinx/load_config.py Documentation/sphinx/maintainers_include.py Documentation/sphinx/rstFlatTable.py Those (in particular automarkup and kerneldoc) will also dynamically=20 change things during ReST conversion, which may cause grep to not work.=20 5. some PDF tools like evince will match curly commas if you type an ASCII comma on their search boxes. 6. Some developers prefer to only deal with the files inside the Kernel tree. Those are very unlikely to do grep with curly aspas. My opinion on that matter is that we should make life easier for developers to grep on text files, as the ones using the web interface are already served by the search box in html format or by tools like evince. So, my vote here is to keep aspas as plain ASCII. >=20 > > The remaining cases are future work, outside the scope of this v2: > >=20 > > 6. Hyphen/Dashes and ellipsis > >=20 > > - U+2212 ('=E2=88=92'): MINUS SIGN > > - U+00ad ('=C2=AD'): SOFT HYPHEN > > - U+2010 ('=E2=80=90'): HYPHEN > >=20 > > 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. > >=20 > > IMO are fixes/cleanups from conversions and bad cut-and-pas= te. =20 >=20 > That seems to make sense. >=20 > > - U+2013 ('=E2=80=93'): EN DASH > > - U+2014 ('=E2=80=94'): EM DASH > > - U+2026 ('=E2=80=A6'): HORIZONTAL ELLIPSIS > >=20 > > Those are auto-replaced by Sphinx from "--", "---" and "...= ", > > respectively. > >=20 > > I guess those are a matter of personal preference about > > weather using ASCII or UTF-8. > >=20 > > My personal preference (and Ted seems to have a similar > > opinion) is to let Sphinx do the conversion. > >=20 > > 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. > > =20 >=20 > Again using the trigraph-like '--' and '...' instead of just using the > plain text '=E2=80=94' and '=E2=80=A6' breaks searching, because what's i= n the output > doesn't match the input. Again consistency is good, but perhaps we > should standardise on just putting these in their plain text form > instead of the trigraphs? Good point.=20 While I don't have any strong preferences here, there's something that annoys me with regards to EM/EN DASH: With the monospaced fonts I'm using here - both at my e-mailer and on my terminals, both EM and EN DASH are displayed look *exactly* the same. >=20 > > 7. math symbols: > >=20 > > - U+00d7 ('=C3=97'): MULTIPLICATION SIGN > >=20 > > This one is used mostly do describe video resolutions, but t= his is > > on a smaller changeset than the ones that use "x" letter. =20 >=20 > I think standardising on =C3=97 for video resolutions in documentation wo= uld > make it look better and be easier to read. >=20 > >=20 > > - U+2217 ('=E2=88=97'): ASTERISK OPERATOR > >=20 > > This is used only here: > > Documentation/filesystems/ext4/blockgroup.rst:filesyste= m size to 2^21 =E2=88=97 2^27 =3D 2^48bytes or 256TiB. > >=20 > > Probably added by some conversion tool. IMO, this one should > > also be replaced by an ASCII asterisk. > >=20 > > I guess I'll post a patch for the ASTERISK OPERATOR. =20 >=20 > That makes sense. 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=-5.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=no 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 501DBC433ED for ; Sat, 15 May 2021 11:24:17 +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 EEF5B613CE; Sat, 15 May 2021 11:24:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EEF5B613CE 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-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.92.3) (envelope-from ) id 1lhsP1-0003Wa-Ck; Sat, 15 May 2021 11:24:15 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.3) (envelope-from ) id 1lhsOz-0003WQ-TR; Sat, 15 May 2021 11:24:13 +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=XePuK7Q3Xmk+LJe367fYr9aR5Py9kAdIEtTd3CqeqVE=; b=kUoPpqm/iiUPPN6g0byVgUfTXG MW4USrswXa7TIaiJqazpd/LdbFurqlZSX8wyXFf/8k1Qw7Y8Y8UNu0/jpLmMbh90A4zWI3JAHrjQC wplWIR6Kt+mUMOB3TX7NcbmEegGN0bb/+Wi0UpXWfdCOXle/Z4HyZdAi9n6zmTqrMzyg=; 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=XePuK7Q3Xmk+LJe367fYr9aR5Py9kAdIEtTd3CqeqVE=; b=XjLMIj7XsMRrm0aiEYxmEGSZaY npT7RSoIf5FLWLMpUDnu4OP5izIxe11N8wXmxKXRIKYyv7sZqAeXB9+Z288YXSZwZXYKJzfCGJwC6 Y9+HMyxtezo3POkmW8dJkTF9JVEkexKE9NznKW4uZmo85ZV5sg53LeTvr+LbA4VKNX4M=; 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 1lhsOp-009I8u-I5; Sat, 15 May 2021 11:24:14 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C31761353; Sat, 15 May 2021 11:23:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621077833; bh=HeIddlkMKM2vvOljnLDXD4e2e2yH5GQzottfBaVm0bY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=XXlyAEA014M55DUjIyQLfGWDcW9S7xmk1gidB0jh9f2ApxAuuEF9sz2c9VzCGb5GE 41pS57vPJwcz1c2L+apHtk8j0/zoZAIUVQw007qk7tH/cIpT9DVClLM9mfxTLWrVvL wrhEszurWapZjCMLZr9NBlXhh1iki4WvckUaXrW2iyL74EjZoPEpdsooNgbX0Lq+iW z/ynOSpbXZQ9RM3lfA5tr05EXWQuuWTypwjc0XflcrGdCNtqTLQ0zuOI0eGNgvNIql jgNeJnivsI/Ub1np4iQ0qwQORU1dLwIVXW0zvu4YSMrvgguupZqbQkJ/ZhuuaAPIod yefI1SDfhPYmQ== Date: Sat, 15 May 2021 13:23:44 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Message-ID: <20210515132344.0206c8fc@coco.lan> In-Reply-To: References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> <20210515102239.2ffd0451@coco.lan> X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-Headers-End: 1lhsOp-009I8u-I5 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 RW0gU2F0LCAxNSBNYXkgMjAyMSAxMDoyNDoyOCArMDEwMApEYXZpZCBXb29kaG91c2UgPGR3bXcy QGluZnJhZGVhZC5vcmc+IGVzY3JldmV1OgoKPiBPbiBTYXQsIDIwMjEtMDUtMTUgYXQgMTA6MjIg KzAyMDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZToKPiA+ID4gPiAgICAgIEhlcmUsIDxD VFJMPjxTSElGVD5VIGlzIG5vdCB3b3JraW5nLiBObyBpZGVhIHdoeS4gSSBoYXZlbid0IAo+ID4g PiA+ICAgICAgdGVzdCBpdCBmb3IgKnllYXJzKiwgYXMgSSBkaW4ndCBzZWUgYW55IHJlYXNvbiB3 aHkgSSB3b3VsZAo+ID4gPiA+ICAgICAgbmVlZCB0byB0eXBlIFVURi04IGNoYXJhY3RlcnMgYnkg bnVtYmVycyB1bnRpbCB3ZSBzdGFydGVkCj4gPiA+ID4gICAgICB0aGlzIHRocmVhZC4gICAgCj4g PiA+IAo+ID4gPiBQbGVhc2UgcHJvdmlkZSB0aGUgYnVnIG51bWJlciBmb3IgdGhpczsgSSdkIGxp a2UgdG8gdHJhY2sgaXQuICAKPiA+IAo+ID4gSnVzdCBvcGVuZWQgYSBCWiBhbmQgYWRkZWQgeW91 IGFzIGMvYy4gIAo+IAo+IFRoYW5rcy4KPiAKPiA+IExldCdzIHRha2Ugb25lIHN0ZXAgYmFjaywg aW4gb3JkZXIgdG8gcmV0dXJuIHRvIHRoZSBpbnRlbnRzIG9mIHRoaXMKPiA+IFVURi04LCBhcyB0 aGUgZGlzY3Vzc2lvbnMgaGVyZSBhcmUgbm90IGNlbnRlcmVkIGludG8gdGhlIHBhdGNoZXMsIGJ1 dAo+ID4gaW5zdGVhZCwgb24gd2hhdCB0byBkbyBhbmQgd2h5Lgo+ID4gCj4gPiAtCj4gPiAKPiA+ IFRoaXMgZGlzY3Vzc2lvbiBzdGFydGVkIG9yaWdpbmFsbHkgYXQgbGludXgtZG9jIE1MLgo+ID4g Cj4gPiBXaGlsZSBkaXNjdXNzaW5nIGFib3V0IGFuIGlzc3VlIHdoZW4gbWFjaGluZSdzIGxvY2Fs ZSB3YXMgbm90IHNldAo+ID4gdG8gVVRGLTggb24gYSBidWlsZCBWTSwgICAKPiAKPiBTdG9wLiBT dG9wICpyaWdodCogdGhlcmUgYmVmb3JlIHlvdSBnbyBhbnkgZnVydGhlci4KPiAKPiBUaGUgbWFj aGluZSdzIGxvY2FsZSBzaG91bGQgaGF2ZSAqbm90aGluZyogdG8gZG8gd2l0aCBhbnl0aGluZy4K PiAKPiBXaGVuIHlvdSB2aWV3IHRoaXMgZW1haWwsIGl0IGNvbWVzIHdpdGggYSBDb250ZW50LVR5 cGU6IGhlYWRlciB3aGljaAo+IGV4cGxpY2l0bHkgdGVsbHMgeW91IHRoZSBjaGFyYWN0ZXIgc2V0 IHRoYXQgdGhlIG1lc3NhZ2UgaXMgZW5jb2RlZCBpbiwgCj4gd2hpY2ggSSB0aGluayBJJ3ZlIHNl dCB0byBVVEYtNy4KPiAKPiBXaGVuIHNob3dpbmcgeW91IHRoZSBtYWlsLCB5b3VyIHN5c3RlbSBo YXMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBvZgo+IHRoZSBjb250ZW50IHVzaW5nICp0aGF0KiBj aGFyYWN0ZXIgc2V0IGVuY29kaW5nLiBBbnl0aGluZyBlbHNlIGlzIGp1c3QKPiBmdW5kYW1lbnRh bGx5IGJyb2tlbi4gWW91ciBzeXN0ZW0gbG9jYWxlIGhhcyAqbm90aGluZyogdG8gZG8gd2l0aCBp dC4KPiAKPiBJZiB5b3VyIGxvY2FsIHN5c3RlbSBpcyBydW5uaW5nIEVCQ0RJQyB0aGF0IGRvZXNu J3QgKm1hdHRlciouCj4gCj4gTm93LCB0aGUgY2hhcmFjdGVyIHNldCBlbmNvZGluZyBvZiB0aGUg a2VybmVsIHNvdXJjZSBhbmQgZG9jdW1lbnRhdGlvbgo+IHRleHQgZmlsZXMgaXMgVVRGLTguIEl0 IGlzbid0IEVCQ0RJQywgaXQgaXNuJ3QgSVNPODg1OS0xNSBvciBhbnkgb2YgdGhlCj4gbGVnYWN5 IGNyYXAuIEl0IGlzbid0IHN5c3RlbSBsb2NhbGUgZWl0aGVyLCB1bmxlc3MgeW91ciBzeXN0ZW0g bG9jYWxlCj4gKmhhcHBlbnMqIHRvIGJlIFVURi04Lgo+IAo+IFVURi04ICpoYXBwZW5zKiB0byBi ZSBjb21wYXRpYmxlIHdpdGggQVNDSUkgZm9yIHRoZSBsaW1pdGVkIHN1YnNldCBvZgo+IGNoYXJh Y3RlcnMgd2hpY2ggQVNDSUkgY29udGFpbnMsIHN1cmUg4oCUIGp1c3QgYXMgKm1hbnkqLCBidXQg bm90IGFsbCwgb2YKPiB0aGUgbGVnYWN5IDgtYml0IGNoYXJhY3RlciBzZXRzIGFyZSBhbHNvIGEg c3VwZXJzZXQgb2YgQVNDSUkncyA3IGJpdHMuCj4gCj4gQnV0IGlmIHRoZSBkb2NzIGNvbnRhaW4g KmFueSogY2hhcmFjdGVycyB3aGljaCBhcmVuJ3QgQVNDSUksIGFuZCB5b3UKPiBidWlsZCB0aGVt IHdpdGggYSBicm9rZW4gYnVpbGQgc3lzdGVtIHdoaWNoIGFzc3VtZXMgQVNDSUksIHlvdSBhcmUK PiBnb2luZyB0byBwcm9kdWNlIHdyb25nIG91dHB1dC4gVGhlcmUgaXMgKm5vKiBzdWJzdGl0dXRl IGZvciBmaXhpbmcgdGhlCj4gKmFjdHVhbCogYnVnIHdoaWNoIHN0YXJ0ZWQgYWxsIHRoaXMsIGFu ZCBlbnN1cmluZyB5b3VyIGJ1aWxkIHN5c3RlbSAob3IKPiB3aGF0ZXZlcikgdXNlcyB0aGUgKmFj dHVhbCogZW5jb2Rpbmcgb2YgdGhlIHRleHQgZmlsZXMgaXQncyBwcm9jZXNzaW5nLAo+IGluc3Rl YWQgb2YgbWFraW5nIHN0dXBpZCBhbmQgYm9ndXMgYXNzdW1wdGlvbnMgYmFzZWQgb24gYSBzeXN0 ZW0KPiBkZWZhdWx0Lgo+IAo+IFlvdSBjb25jZWRlIGtlZXBpbmcgVSswMGE5IMKpIENPUFlSSUdI VCBTSUdOLiBBbmQgdGhhdCdzIGVuY29kZWQgaW4gVVRGLQo+IDggYXMgdHdvIGJ5dGVzIDB4QzIg MHhBOS4gSWYgc29tZSBicm9rZW4gYnVpbGQgc3lzdGVtICphc3N1bWVzKiB0aG9zZQo+IGJ5dGVz IGFyZSBJU084ODU5LTE1IGl0J2xsIHRha2UgdGhlbSB0byBtZWFuIHR3byBzZXBhcmF0ZSBjaGFy YWN0ZXJzCj4gCj4gICAgIFUrMDBDMiDDgiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lS Q1VNRkxFWAo+ICAgICBVKzAwQTkgwqkgQ09QWVJJR0hUIFNJR04KPiAKPiBZb3VyIGJyb2tlbiBi dWlsZCBzeXN0ZW0gdGhhdCBzdGFydGVkIGFsbCB0aGlzIGlzIG5ldmVyIGdvaW5nIHRvIGJlCj4g KmFueXRoaW5nKiBvdGhlciB0aGFuIGJyb2tlbi4gWW91IGNhbiBvbmx5IHBhcGVyIG92ZXIgdGhl IGNyYWNrcyBhbmQKPiBtYWtlIGl0IHNsaWdodGx5IGxlc3MgbGlrZWx5IHRoYXQgcGVvcGxlIHdp bGwgbm90aWNlIGluIHRoZSBjb21tb24KPiBjYXNlLCBwZXJoYXBzPyBUaGF0J3MgYWxsIHlvdSBk byBieSAqcmVkdWNpbmcqIHRoZSB1c2Ugb2Ygbm9uLUFTQ0lJLAo+IHVubGVzcyB5b3UncmUgZ29p bmcgdG8gZHJhZyB1cyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSAxOTgwcyBhbmQKPiBzdHJpY3Rs eSBsaW1pdCB1cyB0byBwdXJlIEFTQ0lJLCB1c2luZyB0aGUgZXF1aXZhbGVudCBvZiB0cmlncmFw aHMgZm9yCj4gKmFueXRoaW5nKiBvdXRzaWRlIHRoZSAwLTEyNyBjaGFyYWN0ZXIgcmFuZ2VzLgo+ IAo+IEFuZCBldmVuIGlmIHlvdSBkaWQgdGhhdCwgc3lzdGVtcyB3aGljaCB1c2UgRUJDRElDIGFz IHRoZWlyIGxvY2FsCj4gZW5jb2Rpbmcgd291bGQgKnN0aWxsKiBiZSBicm9rZW4sIGlmIHRoZXkg aGF2ZSB0aGUgc2FtZSBidWcgeW91IHN0YXJ0ZWQKPiBmcm9tLiBCZWNhdXNlIEVCQ0RJQyBpc24n dCBjb21wYXRpYmxlIHdpdGggQVNDSUkgKmV2ZW4qIGZvciB0aGUgZmlyc3QgNwo+IGJpdHMuCgpO b3csIHlvdSdyZSBtYWtpbmcgYSBsb3Qgb2Ygd3JvbmcgYXNzdW1wdGlvbnMgaGVyZSA7LSkKCjEu IEkgZGlkbid0IHJlcG9ydCB0aGUgYnVnLiBBbm90aGVyIHBlcnNvbiByZXBvcnRlZCBpdCBhdCBs aW51eC1kb2M7CjIuIEkgZnVsbHkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgYnVpbGRpbmcgc3lz dGVtIHNob3VsZCB3b3JrIGZpbmUKICAgd2hhdGV2ZXIgbG9jYXRlIHRoZSBtYWNoaW5lIGhhczsK My4gU3BoaW54IHN1cHBvcnRlZCBjaGFyc2V0IGZvciB0aGUgUkVTVCBpbnB1dCBhbmQgaXRzIG91 dHB1dCBpcyBVVEYtOC4KCkRlc3BpdGUgb2YgdGhhdCwgaXQgc2VlbXMgdGhhdCB0aGVyZSBhcmUg c29tZSBpc3N1ZXMgYXQgdGhlIGJ1aWxkaW5nCnRvb2wgc2V0LCBhdCBsZWFzdCB1bmRlciBjZXJ0 YWluIGNpcmN1bnN0YW5jZXMuIE9uZSBvZiB0aGUgaHlwb3RoZXNpcyAKdGhhdCBpdCB3YXMgbWVu dGlvbmVkIHRoZXJlIGlzIHRoYXQgdGhlIFNwaGlueCBsb2dnZXIgY3Jhc2hlcyB3aGVuIGl0CnRy aWVzIHRvIHByaW50IGFuIFVURi04IG1lc3NhZ2Ugd2hlbiB0aGUgbWFjaGluZSdzIGxvY2FsZSBp cyBub3QgVVRGLTguCgpUaGF0J3Mgc2FpZCwgSSB0cmllZCBmb3JjaW5nIGEgbm9uLVVURi04IG9u IHNvbWUgdGVzdHMgSSBkaWQgdG8gdHJ5CnRvIHJlcHJvZHVjZSwgYnV0IHRoZSBidWlsZCB3ZW50 IGZpbmUuCgpTbywgSSB3YXMgbm90IGFibGUgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZS4KClRoaXMg c2VyaWVzIGRvZXNuJ3QgYWRkcmVzcyB0aGUgaXNzdWUuIEl0IGlzIGp1c3QgYSBzaWRlIGVmZmVj dCBvZiB0aGUKZGlzY3Vzc2lvbnMsIHdoZXJlLCB3aGlsZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0 aGUgYnVnLCB3ZSBub3RpY2VkCnNldmVyYWwgVVRGLTggY2hhcmFjdGVycyBpbnRyb2R1Y2VkIGR1 cmluZyB0aGUgY29udmVyc2lvbiB0aGF0IHdlcmUndAp0aGUgb3JpZ2luYWwgYXV0aG9yJ3MgaW50 ZW50LgoKU28sIHdpdGggcmVnYXJkcyB0byB0aGUgb3JpZ2luYWwgYnV0IHJlcG9ydCwgaWYgSSBm aW5kIGEgd2F5IHRvCnJlcHJvZHVjZSBpdCBhbmQgdG8gYWRkcmVzcyBpdCwgSSdsbCBwb3N0IGEg c2VwYXJhdGUgc2VyaWVzLgoKSWYgeW91IHdhbnQgdG8gZGlzY3VzcyB0aGlzIGlzc3VlIGZ1cnRo ZXIsIGxldCdzIG5vdCBkaXNjdXNzIGhlcmUsIGJ1dAppbnN0ZWFkLCBhdCB0aGUgbGludXgtZG9j IHRocmVhZDoKCglodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1kb2MvMjAyMTA1MDYxMDM5 MTMuR0U2NTY0QGtpdHN1bmUuc3VzZS5jei8KCj4gCj4gCj4gPiB3ZSBkaXNjb3ZlcmVkIHRoYXQg c29tZSBjb252ZXJ0ZWQgZG9jcyBlbmRlZAo+ID4gd2l0aCBCT00gY2hhcmFjdGVycy4gVGhvc2Ug c3BlY2lmaWMgY2hhbmdlcyB3ZXJlIGludHJvZHVjZWQgYnkgc29tZQo+ID4gb2YgbXkgY29udmVy dCBwYXRjaGVzLCBwcm9iYWJseSBjb252ZXJ0ZWQgdmlhIHBhbmRvYy4KPiA+IAo+ID4gU28sIEkg d2VudCBhaGVhZCBpbiBvcmRlciB0byBjaGVjayB3aGF0IG90aGVyIHBvc3NpYmxlIHdlaXJkIHRo aW5ncwo+ID4gd2VyZSBpbnRyb2R1Y2VkIGJ5IHRoZSBjb252ZXJzaW9uLCB3aGVyZSBzZXZlcmFs IHNjcmlwdHMgYW5kIHRvb2xzCj4gPiB3ZXJlIHVzZWQgb24gZmlsZXMgdGhhdCBoYWQgYWxyZWFk eSBhIGRpZmZlcmVudCBtYXJrdXAuCj4gPiAKPiA+IEkgYWN0dWFsbHkgY2hlY2tlZCB0aGUgY3Vy cmVudCBVVEYtOCBpc3N1ZXMsIGFuZCBhc2tlZCBwZW9wbGUgYXQKPiA+IGxpbnV4LWRvYyB0byBj b21tZW50IHdoYXQgb2YgdGhvc2UgYXJlIHZhbGlkIHVzZWNhc2VzLCBhbmQgd2hhdAo+ID4gc2hv dWxkIGJlIHJlcGxhY2VkIGJ5IHBsYWluIEFTQ0lJLiAgCj4gCj4gTm8sIHRoZXNlIGFyZW4ndCAi VVRGLTggaXNzdWVzIi4gVGhvc2UgYXJlICpjb252ZXJzaW9uKiBpc3N1ZXMsIGFuZAo+IHdvdWxk IHN0aWxsIGJlIHRoZXJlIGlmIHRoZSBvdXRwdXQgb2YgdGhlIGNvbnZlcnNpb24gaGFkIGJlZW4g VVRGLTcsCj4gVUNTLTE2LCBldGMuIE9yICpldmVuKiBpZiB0aGUgb3V0cHV0IG9mIHRoZSBjb252 ZXJzaW9uIGhhZCBiZWVuCj4gdHJpZ3JhcGgtbGlrZSBzdHVmZiBsaWtlICctLScgZm9yIGVtZGFz aC4gSXQncyAqbm90aGluZyogdG8gZG8gd2l0aCB0aGUKPiBlbmNvZGluZyB0aGF0IHdlIGhhcHBl biB0byBiZSB1c2luZy4KClllcy4gVGhhdCdzIHdoYXQgSSBzYWlkLgoKPiAKPiBGaXhpbmcgdGhl IGNvbnZlcnNpb24gaXNzdWVzIG1ha2VzIGEgbG90IG9mIHNlbnNlLiBUcnkgdG8gZG8gaXQgd2l0 aG91dAo+IG1ha2luZyAqYW55KiBtZW50aW9uIG9mIFVURi04IGF0IGFsbC4KPiAKPiA+IEluIHN1 bW1hcnksIGJhc2VkIG9uIHRoZSBkaXNjdXNzaW9ucyB3ZSBoYXZlIHNvIGZhciwgSSBzdXNwZWN0 IHRoYXQKPiA+IHRoZXJlJ3Mgbm90IG11Y2ggdG8gYmUgZGlzY3Vzc2VkIGZvciB0aGUgYWJvdmUg Y2FzZXMuCj4gPiAKPiA+IFNvLCBJJ2xsIHBvc3QgYSB2MyBvZiB0aGlzIHNlcmllcywgY2hhbmdp bmcgb25seToKPiA+IAo+ID4gICAgICAgICAtIFUrMDBhMCAoJyAnKTogTk8tQlJFQUsgU1BBQ0UK PiA+ICAgICAgICAgLSBVK2ZlZmYgKCfvu78nKTogWkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRSAo Qk9NKSAgCj4gCj4gQWNrLCBhcyBsb25nIGFzIHRob3NlIG1ha2UgKm5vKiBtZW50aW9uIG9mIFVU Ri04LiBFeGNlcHQgcGVyaGFwcyB0bwo+IG5vdGUgdGhhdCBCT00gaXMgcmVkdW5kYW50IGJlY2F1 c2UgVVRGLTggZG9lc24ndCBoYXZlIGEgYnl0ZW9yZGVyLgoKSSBuZWVkIHRvIHRlbGwgd2hhdCBV VEYtOCBjb2RlcyBhcmUgcmVwbGFjZWQsIGFzIG90aGVyd2lzZSB0aGUgcGF0Y2gKd291bGRuJ3Qg bWFrZSBtdWNoIHNlbnNlIHRvIHJldmlld2VycywgYXMgYm90aCBVKzAwYTAgYW5kIHdoaXRlc3Bh Y2VzCmFyZSBkaXNwbGF5ZWQgdGhlIHNhbWUgd2F5LCBhbmQgQk9NIGlzIGludmlzaWJsZS4KCj4g Cj4gPiAtLS0KPiA+IAo+ID4gTm93LCB0aGlzIHNwZWNpZmljIHBhdGNoIHNlcmllcyBhZGRyZXNz IGFsc28gdGhpcyBleHRyYSBjYXNlOgo+ID4gCj4gPiA1LiBjdXJseSBjb21tYXM6Cj4gPiAKPiA+ ICAgICAgICAgLSBVKzIwMTggKCfigJgnKTogTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKPiA+ ICAgICAgICAgLSBVKzIwMTkgKCfigJknKTogUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCj4g PiAgICAgICAgIC0gVSsyMDFjICgn4oCcJyk6IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCj4g PiAgICAgICAgIC0gVSsyMDFkICgn4oCdJyk6IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwo+ ID4gCj4gPiBJTU8sIHRob3NlIHNob3VsZCBiZSByZXBsYWNlZCBieSBBU0NJSSBjb21tYXM6ICcg YW5kICIuCj4gPiAKPiA+IFRoZSByYXRpb25hbGUgaXMgc2ltcGxlOiAKPiA+IAo+ID4gLSBtb3N0 IHdlcmUgaW50cm9kdWNlZCBkdXJpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBEb2Nib29rLAo+ID4g ICBtYXJrZG93biBhbmQgTGFUZXg7Cj4gPiAtIHRoZXkgZG9uJ3QgYWRkIGFueSBleHRyYSB2YWx1 ZSwgYXMgdXNpbmcgImZvbyIgb2Yg4oCcZm9v4oCdIG1lYW5zCj4gPiAgIHRoZSBzYW1lIHRoaW5n Owo+ID4gLSBTcGhpbnggYWxyZWFkeSB1c2UgImZhbmN5IiBjb21tYXMgYXQgdGhlIG91dHB1dC4g Cj4gPiAKPiA+IEkgZ3Vlc3MgSSB3aWxsIHB1dCB0aGlzIG9uIGEgc2VwYXJhdGUgc2VyaWVzLCBh cyB0aGlzIGlzIG5vdCBhIGJ1Zwo+ID4gZml4LCBidXQganVzdCBhIGNsZWFudXAgZnJvbSB0aGUg Y29udmVyc2lvbiB3b3JrLgo+ID4gCj4gPiBJJ2xsIHJlLXBvc3QgdGhvc2UgY2xlYW51cHMgb24g YSBzZXBhcmF0ZSBzZXJpZXMsIGZvciBwYXRjaCBwZXIgcGF0Y2gKPiA+IHJldmlldy4gIAo+IAo+ IE1ha2VzIHNlbnNlLiAKPiAKPiBUaGUgbGVmdC9yaWdodCBxdW90YXRpb24gbWFya3MgZXhpc3Rz IHRvIG1ha2UgaHVtYW4tcmVhZGFibGUgdGV4dCBtdWNoCj4gZWFzaWVyIHRvIHJlYWQsIGJ1dCB0 aGUga2V5IHBvaW50IGhlcmUgaXMgdGhhdCB0aGV5IGFyZSByZWR1bmRhbnQKPiBiZWNhdXNlIHRo ZSB0b29saW5nIGFscmVhZHkgZW1pdHMgdGhlbSBpbiB0aGUgKm91dHB1dCogc28gdGhleSBkb24n dAo+IG5lZWQgdG8gYmUgaW4gdGhlIHNvdXJjZSwgeWVzPwoKWWVzLgoKPiBBcyBsb25nIGFzIHRo ZSB0b29saW5nIGdldHMgaXQgKnJpZ2h0KiBhbmQgdXNlcyB0aGVtIHdoZXJlIGl0IHNob3VsZCwK PiB0aGF0IHNlZW1zIHNhbmUgZW5vdWdoLgo+IAo+IEhvd2V2ZXIsIGl0ICpkb2VzKiBicmVhayAn Z3JlcCcsIGJlY2F1c2UgaWYgSSBjdXQvcGFzdGUgYSBzbmlwcGV0IGZyb20KPiB0aGUgZG9jdW1l bnRhdGlvbiBhbmQgdHJ5IHRvIGdyZXAgZm9yIGl0LCBpdCdsbCBubyBsb25nZXIgbWF0Y2guCgo+ IAo+IENvbnNpc3RlbmN5IGlzIGdvb2QsIGJ1dCBwZXJoYXBzIHdlIHNob3VsZCBhY3R1YWxseSBi ZSBjb25zaXN0ZW50IHRoZQo+IG90aGVyIHdheSByb3VuZCBhbmQgYWx3YXlzIHVzZSB0aGUgbGVm dC9yaWdodCB2ZXJzaW9ucyBpbiB0aGUgc291cmNlCj4gKmluc3RlYWQqIG9mIHJlbHlpbmcgb24g dGhlIHRvb2xpbmcsIHRvIG1ha2Ugc2VhcmNoZXMgd29yayBiZXR0ZXI/Cj4gWW91IGNsYWltZWQg dG8gY2FyZSBhYm91dCB0aGF0LCByaWdodD8KClRoYXQncyBpbmRlZWQgYSBnb29kIHBvaW50LiBJ dCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBoYXZlIG1vcmUKb3BpbmlvbnMgd2l0aCB0aGF0IG1h dHRlci4KClRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdG8gY29uc2lkZXI6CgoxLiBJdCBp cyAodXN1YWxseSkgdHJpdmlhbCB0byBkaXNjb3ZlciB3aGF0IGRvY3VtZW50IHByb2R1Y2VkIGEK ICAgY2VydGFpbiBwYWdlIGF0IHRoZSBkb2N1bWVudGF0aW9uLgoKICAgRm9yIGluc3RhbmNlLCBp ZiB5b3Ugd2FudCB0byBrbm93IHdoZXJlIHRoZSB0ZXh0IHVuZGVyIHRoaXMKICAgZmlsZSBjYW1l IGZyb20sIG9yIHRvIGdyZXAgYSB0ZXh0IGZyb20gaXQ6CgoJaHR0cHM6Ly93d3cua2VybmVsLm9y Zy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLmh0bWwKCiAgIFlvdSBjYW4g Y2xpY2sgYXQgdGhlICJWaWV3IHBhZ2Ugc291cmNlIiBidXR0b24gYXQgdGhlIGZpcnN0IGxpbmUu CiAgIEl0IHdpbGwgc2hvdyB0aGUgLnJzdCBmaWxlIHVzZWQgdG8gcHJvZHVjZSBpdDoKCglodHRw czovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9fc291cmNlcy9hZG1pbi1ndWlkZS9j Z3JvdXAtdjIucnN0LnR4dAoKMi4gSWYgYWxsIHlvdSB3YW50IGlzIHRvIHNlYXJjaCBmb3IgYSB0 ZXh0IGluc2lkZSB0aGUgZG9jcywKICAgeW91IGNhbiBjbGljayBhdCB0aGUgIlNlYXJjaCBkb2Nz IiBib3gsIHdoaWNoIGlzIHBhcnQgb2YgdGhlCiAgIFJlYWQgdGhlIERvY3MgdGhlbWUuCgozLiBL ZXJuZWwgaGFzIHNldmVyYWwgZXh0ZW5zaW9ucyBmb3IgU3BoaW54LCBpbiBvcmRlciB0byBtYWtl IGxpZmUgCiAgIGVhc2llciBmb3IgS2VybmVsIGRldmVsb3BlcnM6CgoJRG9jdW1lbnRhdGlvbi9z cGhpbngvYXV0b21hcmt1cC5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngvY2RvbWFpbi5weQoJRG9j dW1lbnRhdGlvbi9zcGhpbngva2VybmVsX2FiaS5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngva2Vy bmVsX2ZlYXQucHkKCURvY3VtZW50YXRpb24vc3BoaW54L2tlcm5lbF9pbmNsdWRlLnB5CglEb2N1 bWVudGF0aW9uL3NwaGlueC9rZXJuZWxkb2MucHkKCURvY3VtZW50YXRpb24vc3BoaW54L2tlcm5l bGxvZy5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weQoJRG9jdW1lbnRhdGlvbi9z cGhpbngvbG9hZF9jb25maWcucHkKCURvY3VtZW50YXRpb24vc3BoaW54L21haW50YWluZXJzX2lu Y2x1ZGUucHkKCURvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weQoKVGhvc2UgKGlu IHBhcnRpY3VsYXIgYXV0b21hcmt1cCBhbmQga2VybmVsZG9jKSB3aWxsIGFsc28gZHluYW1pY2Fs bHkgCmNoYW5nZSB0aGluZ3MgZHVyaW5nIFJlU1QgY29udmVyc2lvbiwgd2hpY2ggbWF5IGNhdXNl IGdyZXAgdG8gbm90IHdvcmsuIAoKNS4gc29tZSBQREYgdG9vbHMgbGlrZSBldmluY2Ugd2lsbCBt YXRjaCBjdXJseSBjb21tYXMgaWYgeW91CiAgIHR5cGUgYW4gQVNDSUkgY29tbWEgb24gdGhlaXIg c2VhcmNoIGJveGVzLgoKNi4gU29tZSBkZXZlbG9wZXJzIHByZWZlciB0byBvbmx5IGRlYWwgd2l0 aCB0aGUgZmlsZXMgaW5zaWRlIHRoZQogICBLZXJuZWwgdHJlZS4gVGhvc2UgYXJlIHZlcnkgdW5s aWtlbHkgdG8gZG8gZ3JlcCB3aXRoIGN1cmx5IGFzcGFzLgoKTXkgb3BpbmlvbiBvbiB0aGF0IG1h dHRlciBpcyB0aGF0IHdlIHNob3VsZCBtYWtlIGxpZmUgZWFzaWVyIGZvcgpkZXZlbG9wZXJzIHRv IGdyZXAgb24gdGV4dCBmaWxlcywgYXMgdGhlIG9uZXMgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UK YXJlIGFscmVhZHkgc2VydmVkIGJ5IHRoZSBzZWFyY2ggYm94IGluIGh0bWwgZm9ybWF0IG9yIGJ5 IHRvb2xzIGxpa2UKZXZpbmNlLgoKU28sIG15IHZvdGUgaGVyZSBpcyB0byBrZWVwIGFzcGFzIGFz IHBsYWluIEFTQ0lJLgoKPiAKPiA+IFRoZSByZW1haW5pbmcgY2FzZXMgYXJlIGZ1dHVyZSB3b3Jr LCBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHYyOgo+ID4gCj4gPiA2LiBIeXBoZW4vRGFzaGVz IGFuZCBlbGxpcHNpcwo+ID4gCj4gPiAgICAgICAgIC0gVSsyMjEyICgn4oiSJyk6IE1JTlVTIFNJ R04KPiA+ICAgICAgICAgLSBVKzAwYWQgKCfCrScpOiBTT0ZUIEhZUEhFTgo+ID4gICAgICAgICAt IFUrMjAxMCAoJ+KAkCcpOiBIWVBIRU4KPiA+IAo+ID4gICAgICAgICAgICAgVGhvc2UgdGhyZWUg YXJlIHVzZWQgb24gcGxhY2VzIHdoZXJlIGEgbm9ybWFsIEFTQ0lJIGh5cGhlbi9taW51cwo+ID4g ICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gVGhlcmUgYXJlIGV2ZW4gYSBjb3Vw bGUgb2YgQyBmaWxlcyB3aGljaAo+ID4gICAgICAgICAgICAgdXNlIHRoZW0gaW5zdGVhZCBvZiAn LScgb24gY29tbWVudHMuCj4gPiAKPiA+ICAgICAgICAgICAgIElNTyBhcmUgZml4ZXMvY2xlYW51 cHMgZnJvbSBjb252ZXJzaW9ucyBhbmQgYmFkIGN1dC1hbmQtcGFzdGUuICAKPiAKPiBUaGF0IHNl ZW1zIHRvIG1ha2Ugc2Vuc2UuCj4gCj4gPiAgICAgICAgIC0gVSsyMDEzICgn4oCTJyk6IEVOIERB U0gKPiA+ICAgICAgICAgLSBVKzIwMTQgKCfigJQnKTogRU0gREFTSAo+ID4gICAgICAgICAtIFUr MjAyNiAoJ+KApicpOiBIT1JJWk9OVEFMIEVMTElQU0lTCj4gPiAKPiA+ICAgICAgICAgICAgIFRo b3NlIGFyZSBhdXRvLXJlcGxhY2VkIGJ5IFNwaGlueCBmcm9tICItLSIsICItLS0iIGFuZCAiLi4u IiwKPiA+ICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KPiA+IAo+ID4gICAgICAgICAgICAgSSBn dWVzcyB0aG9zZSBhcmUgYSBtYXR0ZXIgb2YgcGVyc29uYWwgcHJlZmVyZW5jZSBhYm91dAo+ID4g ICAgICAgICAgICAgd2VhdGhlciB1c2luZyBBU0NJSSBvciBVVEYtOC4KPiA+IAo+ID4gICAgICAg ICAgICAgTXkgcGVyc29uYWwgcHJlZmVyZW5jZSAoYW5kIFRlZCBzZWVtcyB0byBoYXZlIGEgc2lt aWxhcgo+ID4gICAgICAgICAgICAgb3BpbmlvbikgaXMgdG8gbGV0IFNwaGlueCBkbyB0aGUgY29u dmVyc2lvbi4KPiA+IAo+ID4gICAgICAgICAgICAgRm9yIHRob3NlLCBJIGludGVuZCB0byBwb3N0 IGEgc2VwYXJhdGUgc2VyaWVzLCB0byBiZQo+ID4gICAgICAgICAgICAgcmV2aWV3ZWQgcGF0Y2gg cGVyIHBhdGNoLCBhcyB0aGlzIGlzIHJlYWxseSBhIG1hdHRlcgo+ID4gICAgICAgICAgICAgb2Yg cGVyc29uYWwgdGFzdGUuIEhhcmRseSB3ZSdsbCByZWFjaCBhIGNvbnNlbnN1cyBoZXJlLgo+ID4g ICAKPiAKPiBBZ2FpbiB1c2luZyB0aGUgdHJpZ3JhcGgtbGlrZSAnLS0nIGFuZCAnLi4uJyBpbnN0 ZWFkIG9mIGp1c3QgdXNpbmcgdGhlCj4gcGxhaW4gdGV4dCAn4oCUJyBhbmQgJ+KApicgYnJlYWtz IHNlYXJjaGluZywgYmVjYXVzZSB3aGF0J3MgaW4gdGhlIG91dHB1dAo+IGRvZXNuJ3QgbWF0Y2gg dGhlIGlucHV0LiBBZ2FpbiBjb25zaXN0ZW5jeSBpcyBnb29kLCBidXQgcGVyaGFwcyB3ZQo+IHNo b3VsZCBzdGFuZGFyZGlzZSBvbiBqdXN0IHB1dHRpbmcgdGhlc2UgaW4gdGhlaXIgcGxhaW4gdGV4 dCBmb3JtCj4gaW5zdGVhZCBvZiB0aGUgdHJpZ3JhcGhzPwoKR29vZCBwb2ludC4gCgpXaGlsZSBJ IGRvbid0IGhhdmUgYW55IHN0cm9uZyBwcmVmZXJlbmNlcyBoZXJlLCB0aGVyZSdzIHNvbWV0aGlu ZyB0aGF0CmFubm95cyBtZSB3aXRoIHJlZ2FyZHMgdG8gRU0vRU4gREFTSDoKCldpdGggdGhlIG1v bm9zcGFjZWQgZm9udHMgSSdtIHVzaW5nIGhlcmUgLSBib3RoIGF0IG15IGUtbWFpbGVyIGFuZApv biBteSB0ZXJtaW5hbHMsIGJvdGggRU0gYW5kIEVOIERBU0ggYXJlIGRpc3BsYXllZCBsb29rICpl eGFjdGx5Kgp0aGUgc2FtZS4KCj4gCj4gPiA3LiBtYXRoIHN5bWJvbHM6Cj4gPiAKPiA+ICAgICAg ICAgLSBVKzAwZDcgKCfDlycpOiBNVUxUSVBMSUNBVElPTiBTSUdOCj4gPiAKPiA+ICAgICAgICAg ICAgVGhpcyBvbmUgaXMgdXNlZCBtb3N0bHkgZG8gZGVzY3JpYmUgdmlkZW8gcmVzb2x1dGlvbnMs IGJ1dCB0aGlzIGlzCj4gPiAgICAgICAgICAgIG9uIGEgc21hbGxlciBjaGFuZ2VzZXQgdGhhbiB0 aGUgb25lcyB0aGF0IHVzZSAieCIgbGV0dGVyLiAgCj4gCj4gSSB0aGluayBzdGFuZGFyZGlzaW5n IG9uIMOXIGZvciB2aWRlbyByZXNvbHV0aW9ucyBpbiBkb2N1bWVudGF0aW9uIHdvdWxkCj4gbWFr ZSBpdCBsb29rIGJldHRlciBhbmQgYmUgZWFzaWVyIHRvIHJlYWQuCj4gCj4gPiAKPiA+ICAgICAg ICAgLSBVKzIyMTcgKCfiiJcnKTogQVNURVJJU0sgT1BFUkFUT1IKPiA+IAo+ID4gICAgICAgICAg ICBUaGlzIGlzIHVzZWQgb25seSBoZXJlOgo+ID4gICAgICAgICAgICAgICAgIERvY3VtZW50YXRp b24vZmlsZXN5c3RlbXMvZXh0NC9ibG9ja2dyb3VwLnJzdDpmaWxlc3lzdGVtIHNpemUgdG8gMl4y MSDiiJcgMl4yNyA9IDJeNDhieXRlcyBvciAyNTZUaUIuCj4gPiAKPiA+ICAgICAgICAgICAgUHJv YmFibHkgYWRkZWQgYnkgc29tZSBjb252ZXJzaW9uIHRvb2wuIElNTywgdGhpcyBvbmUgc2hvdWxk Cj4gPiAgICAgICAgICAgIGFsc28gYmUgcmVwbGFjZWQgYnkgYW4gQVNDSUkgYXN0ZXJpc2suCj4g PiAKPiA+IEkgZ3Vlc3MgSSdsbCBwb3N0IGEgcGF0Y2ggZm9yIHRoZSBBU1RFUklTSyBPUEVSQVRP Ui4gIAo+IAo+IFRoYXQgbWFrZXMgc2Vuc2UuCgoKClRoYW5rcywKTWF1cm8KCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1h aWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczov L2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg== 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=-5.5 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=no 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 902A1C433ED for ; Sat, 15 May 2021 11:25:02 +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 23ADB61177 for ; Sat, 15 May 2021 11:25:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 23ADB61177 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 C8BE7171D; Sat, 15 May 2021 13:24:08 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz C8BE7171D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1621077898; bh=HeIddlkMKM2vvOljnLDXD4e2e2yH5GQzottfBaVm0bY=; h=Date:From:To:Subject:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=bXQ8cwQ5hHgqLa2r3KpzMe2vDZtVTNeYFxijhJHOhZl20e/LtkcAOG3hW+91ULi7x 5OdegjmOlnnfLC+UVpZtJI3HzvJzRl8NuJt/y66OD4+7XuDoyVAOiUMRxuojQ2Q/Ae vGDe8dl3IssvS1qegWNs57j72/SeM9nQ/R1JyYII= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 57AEAF8013A; Sat, 15 May 2021 13:24:08 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 50EEDF80163; Sat, 15 May 2021 13:24:07 +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 9EC82F8013A for ; Sat, 15 May 2021 13:23:56 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 9EC82F8013A Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XXlyAEA0" Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C31761353; Sat, 15 May 2021 11:23:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621077833; bh=HeIddlkMKM2vvOljnLDXD4e2e2yH5GQzottfBaVm0bY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=XXlyAEA014M55DUjIyQLfGWDcW9S7xmk1gidB0jh9f2ApxAuuEF9sz2c9VzCGb5GE 41pS57vPJwcz1c2L+apHtk8j0/zoZAIUVQw007qk7tH/cIpT9DVClLM9mfxTLWrVvL wrhEszurWapZjCMLZr9NBlXhh1iki4WvckUaXrW2iyL74EjZoPEpdsooNgbX0Lq+iW z/ynOSpbXZQ9RM3lfA5tr05EXWQuuWTypwjc0XflcrGdCNtqTLQ0zuOI0eGNgvNIql jgNeJnivsI/Ub1np4iQ0qwQORU1dLwIVXW0zvu4YSMrvgguupZqbQkJ/ZhuuaAPIod yefI1SDfhPYmQ== Date: Sat, 15 May 2021 13:23:44 +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: <20210515132344.0206c8fc@coco.lan> In-Reply-To: References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> <20210515102239.2ffd0451@coco.lan> 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 Sat, 15 May 2021 10:24:28 +0100 David Woodhouse escreveu: > On Sat, 2021-05-15 at 10:22 +0200, Mauro Carvalho Chehab wrote: > > > > 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. =20 > >=20 > > Just opened a BZ and added you as c/c. =20 >=20 > Thanks. >=20 > > 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. > >=20 > > - > >=20 > > This discussion started originally at linux-doc ML. > >=20 > > While discussing about an issue when machine's locale was not set > > to UTF-8 on a build VM, =20 >=20 > Stop. Stop *right* there before you go any further. >=20 > The machine's locale should have *nothing* to do with anything. >=20 > When you view this email, it comes with a Content-Type: header which > explicitly tells you the character set that the message is encoded in,=20 > which I think I've set to UTF-7. >=20 > When showing you the mail, your system has to interpret the bytes of > the content using *that* character set encoding. Anything else is just > fundamentally broken. Your system locale has *nothing* to do with it. >=20 > If your local system is running EBCDIC that doesn't *matter*. >=20 > Now, the character set encoding of the kernel source and documentation > text files is UTF-8. It isn't EBCDIC, it isn't ISO8859-15 or any of the > legacy crap. It isn't system locale either, unless your system locale > *happens* to be UTF-8. >=20 > UTF-8 *happens* to be compatible with ASCII for the limited subset of > characters which ASCII contains, sure =E2=80=94 just as *many*, but not a= ll, of > the legacy 8-bit character sets are also a superset of ASCII's 7 bits. >=20 > But if the docs contain *any* characters which aren't ASCII, and you > build them with a broken build system which assumes ASCII, you are > going to produce wrong output. There is *no* substitute for fixing the > *actual* bug which started all this, and ensuring your build system (or > whatever) uses the *actual* encoding of the text files it's processing, > instead of making stupid and bogus assumptions based on a system > default. >=20 > You concede keeping U+00a9 =C2=A9 COPYRIGHT SIGN. And that's encoded in U= TF- > 8 as two bytes 0xC2 0xA9. If some broken build system *assumes* those > bytes are ISO8859-15 it'll take them to mean two separate characters >=20 > U+00C2 =C3=82 LATIN CAPITAL LETTER A WITH CIRCUMFLEX > U+00A9 =C2=A9 COPYRIGHT SIGN >=20 > Your broken build system that started all this is never going to be > *anything* other than broken. You can only paper over the cracks and > make it slightly less likely that people will notice in the common > case, perhaps? That's all you do by *reducing* the use of non-ASCII, > unless you're going to drag us all the way back to the 1980s and > strictly limit us to pure ASCII, using the equivalent of trigraphs for > *anything* outside the 0-127 character ranges. >=20 > And even if you did that, systems which use EBCDIC as their local > encoding would *still* be broken, if they have the same bug you started > from. Because EBCDIC isn't compatible with ASCII *even* for the first 7 > bits. Now, you're making a lot of wrong assumptions here ;-) 1. I didn't report the bug. Another person reported it at linux-doc; 2. I fully agree with you that the building system should work fine whatever locate the machine has; 3. Sphinx supported charset for the REST input and its output is UTF-8. Despite of that, it seems that there are some issues at the building tool set, at least under certain circunstances. One of the hypothesis=20 that it was mentioned there is that the Sphinx logger crashes when it tries to print an UTF-8 message when the machine's locale is not UTF-8. That's said, I tried forcing a non-UTF-8 on some tests I did to try to reproduce, but the build went fine. So, I was not able to reproduce the issue. This series doesn't address the issue. It is just a side effect of the discussions, where, while trying to understand the bug, we noticed several UTF-8 characters introduced during the conversion that were't the original author's intent. So, with regards to the original but report, if I find a way to reproduce it and to address it, I'll post a separate series. If you want to discuss this issue further, let's not discuss here, but instead, at the linux-doc thread: https://lore.kernel.org/linux-doc/20210506103913.GE6564@kitsune.suse.cz/ >=20 >=20 > > 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. > >=20 > > 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. > >=20 > > 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. =20 >=20 > No, these aren't "UTF-8 issues". Those are *conversion* issues, and > would still be there if the output of the conversion had been UTF-7, > UCS-16, etc. Or *even* if the output of the conversion had been > trigraph-like stuff like '--' for emdash. It's *nothing* to do with the > encoding that we happen to be using. Yes. That's what I said. >=20 > Fixing the conversion issues makes a lot of sense. Try to do it without > making *any* mention of UTF-8 at all. >=20 > > In summary, based on the discussions we have so far, I suspect that > > there's not much to be discussed for the above cases. > >=20 > > So, I'll post a v3 of this series, changing only: > >=20 > > - U+00a0 (' '): NO-BREAK SPACE > > - U+feff ('=EF=BB=BF'): ZERO WIDTH NO-BREAK SPACE (BOM) =20 >=20 > Ack, as long as those make *no* mention of UTF-8. Except perhaps to > note that BOM is redundant because UTF-8 doesn't have a byteorder. I need to tell what UTF-8 codes are replaced, as otherwise the patch wouldn't make much sense to reviewers, as both U+00a0 and whitespaces are displayed the same way, and BOM is invisible. >=20 > > --- > >=20 > > Now, this specific patch series address also this extra case: > >=20 > > 5. curly commas: > >=20 > > - 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 > >=20 > > IMO, those should be replaced by ASCII commas: ' and ". > >=20 > > The rationale is simple:=20 > >=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 means > > the same thing; > > - Sphinx already use "fancy" commas at the output.=20 > >=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. > >=20 > > I'll re-post those cleanups on a separate series, for patch per patch > > review. =20 >=20 > Makes sense.=20 >=20 > The left/right quotation marks exists to make human-readable text much > easier to read, but the key point here is that they are redundant > because the tooling already emits them in the *output* so they don't > need to be in the source, yes? Yes. > As long as the tooling gets it *right* and uses them where it should, > that seems sane enough. >=20 > However, it *does* break 'grep', because if I cut/paste a snippet from > the documentation and try to grep for it, it'll no longer match. >=20 > Consistency is good, but perhaps we should actually be consistent the > other way round and always use the left/right versions in the source > *instead* of relying on the tooling, to make searches work better? > You claimed to care about that, right? That's indeed a good point. It would be interesting to have more opinions with that matter. There are a couple of things to consider: 1. It is (usually) trivial to discover what document produced a certain page at the documentation. For instance, if you want to know where the text under this file came from, or to grep a text from it: https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html You can click at the "View page source" button at the first line. It will show the .rst file used to produce it: https://www.kernel.org/doc/html/latest/_sources/admin-guide/cgroup-v2.rst.= txt 2. If all you want is to search for a text inside the docs, you can click at the "Search docs" box, which is part of the Read the Docs theme. 3. Kernel has several extensions for Sphinx, in order to make life=20 easier for Kernel developers: Documentation/sphinx/automarkup.py Documentation/sphinx/cdomain.py Documentation/sphinx/kernel_abi.py Documentation/sphinx/kernel_feat.py Documentation/sphinx/kernel_include.py Documentation/sphinx/kerneldoc.py Documentation/sphinx/kernellog.py Documentation/sphinx/kfigure.py Documentation/sphinx/load_config.py Documentation/sphinx/maintainers_include.py Documentation/sphinx/rstFlatTable.py Those (in particular automarkup and kerneldoc) will also dynamically=20 change things during ReST conversion, which may cause grep to not work.=20 5. some PDF tools like evince will match curly commas if you type an ASCII comma on their search boxes. 6. Some developers prefer to only deal with the files inside the Kernel tree. Those are very unlikely to do grep with curly aspas. My opinion on that matter is that we should make life easier for developers to grep on text files, as the ones using the web interface are already served by the search box in html format or by tools like evince. So, my vote here is to keep aspas as plain ASCII. >=20 > > The remaining cases are future work, outside the scope of this v2: > >=20 > > 6. Hyphen/Dashes and ellipsis > >=20 > > - U+2212 ('=E2=88=92'): MINUS SIGN > > - U+00ad ('=C2=AD'): SOFT HYPHEN > > - U+2010 ('=E2=80=90'): HYPHEN > >=20 > > 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. > >=20 > > IMO are fixes/cleanups from conversions and bad cut-and-pas= te. =20 >=20 > That seems to make sense. >=20 > > - U+2013 ('=E2=80=93'): EN DASH > > - U+2014 ('=E2=80=94'): EM DASH > > - U+2026 ('=E2=80=A6'): HORIZONTAL ELLIPSIS > >=20 > > Those are auto-replaced by Sphinx from "--", "---" and "...= ", > > respectively. > >=20 > > I guess those are a matter of personal preference about > > weather using ASCII or UTF-8. > >=20 > > My personal preference (and Ted seems to have a similar > > opinion) is to let Sphinx do the conversion. > >=20 > > 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. > > =20 >=20 > Again using the trigraph-like '--' and '...' instead of just using the > plain text '=E2=80=94' and '=E2=80=A6' breaks searching, because what's i= n the output > doesn't match the input. Again consistency is good, but perhaps we > should standardise on just putting these in their plain text form > instead of the trigraphs? Good point.=20 While I don't have any strong preferences here, there's something that annoys me with regards to EM/EN DASH: With the monospaced fonts I'm using here - both at my e-mailer and on my terminals, both EM and EN DASH are displayed look *exactly* the same. >=20 > > 7. math symbols: > >=20 > > - U+00d7 ('=C3=97'): MULTIPLICATION SIGN > >=20 > > This one is used mostly do describe video resolutions, but t= his is > > on a smaller changeset than the ones that use "x" letter. =20 >=20 > I think standardising on =C3=97 for video resolutions in documentation wo= uld > make it look better and be easier to read. >=20 > >=20 > > - U+2217 ('=E2=88=97'): ASTERISK OPERATOR > >=20 > > This is used only here: > > Documentation/filesystems/ext4/blockgroup.rst:filesyste= m size to 2^21 =E2=88=97 2^27 =3D 2^48bytes or 256TiB. > >=20 > > Probably added by some conversion tool. IMO, this one should > > also be replaced by an ASCII asterisk. > >=20 > > I guess I'll post a patch for the ASTERISK OPERATOR. =20 >=20 > That makes sense. 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=-6.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=no 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 DD2A6C433ED for ; Sat, 15 May 2021 11:26:27 +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 46FB761353 for ; Sat, 15 May 2021 11:26:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 46FB761353 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=/zgmByQ+Ba3U9oaqbajLTTeNE2G0BTF9h4gf9RuQv1o=; b=aTOYO6Ee+V9oBm/6Dxm/aZDIg hiOuzKBZRhZhvtkkqHEzmDBQQ8TINi1kxJgkUhhaRVSEgaEMw5clcKK9pGBvKPI90OoOLWLmfjdFE IzRQCs43NmIGgWRnqhrADO+MapNe3x/an1XFeOc7p2rXbfR2Ay30xD0M+nZW6eByQWiChfWeM6FUh I25k6afwMuGTdJHK1LxIFA6Nsil93C3ioXZvMhEZIIudtPi0HAgonuflG/JcSI4XMroogmri83Au9 mkAr1IVph0NNC0+Gutp8rasmgDllHgpO3zpojeFdt67WSwBioletamdjm2yDzsXmLo/cppu8ruar5 GVosFh/ng==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lhsOp-00ACS4-Hc; Sat, 15 May 2021 11:24:03 +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 1lhsOj-00ACRs-PK for linux-arm-kernel@desiato.infradead.org; Sat, 15 May 2021 11:23:58 +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=XePuK7Q3Xmk+LJe367fYr9aR5Py9kAdIEtTd3CqeqVE=; b=3bi8I3Qs3kifFzRAz2mOwxWicv 8IG7AR+IXl9ig8I3IyIs12/IUNMQcDpcUk2YrfPX38EPedpb2KgpzT6qscMoPPVJeEfv5/hdGrmji W1lH87YmVTN7uVRYWEfEDaZiwvUT13dZtZNTgGvPcFnFHt7vmuGcZkCOID1OUuqITRFP5FYUbDGli jaqPCACzFfXRR/1ejw131nmlFRZolZRYcQmxDiSb4f9TZo5N6LG/iT8AuKZsB2GBsLjuGkSeDDWk7 sTy5Wdn2VQ1R9581tWpslP5nYrSKaHiEH5l8Dj+5t4M3NJh/s7EV+A/iyI5uMiip3EZb5tYXXUNBj TlL/84ng==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lhsOf-00CVPR-QP for linux-arm-kernel@lists.infradead.org; Sat, 15 May 2021 11:23:56 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C31761353; Sat, 15 May 2021 11:23:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621077833; bh=HeIddlkMKM2vvOljnLDXD4e2e2yH5GQzottfBaVm0bY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=XXlyAEA014M55DUjIyQLfGWDcW9S7xmk1gidB0jh9f2ApxAuuEF9sz2c9VzCGb5GE 41pS57vPJwcz1c2L+apHtk8j0/zoZAIUVQw007qk7tH/cIpT9DVClLM9mfxTLWrVvL wrhEszurWapZjCMLZr9NBlXhh1iki4WvckUaXrW2iyL74EjZoPEpdsooNgbX0Lq+iW z/ynOSpbXZQ9RM3lfA5tr05EXWQuuWTypwjc0XflcrGdCNtqTLQ0zuOI0eGNgvNIql jgNeJnivsI/Ub1np4iQ0qwQORU1dLwIVXW0zvu4YSMrvgguupZqbQkJ/ZhuuaAPIod yefI1SDfhPYmQ== Date: Sat, 15 May 2021 13:23:44 +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: <20210515132344.0206c8fc@coco.lan> In-Reply-To: References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> <20210515102239.2ffd0451@coco.lan> 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_042353_939899_D0E8B068 X-CRM114-Status: GOOD ( 80.59 ) 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 RW0gU2F0LCAxNSBNYXkgMjAyMSAxMDoyNDoyOCArMDEwMApEYXZpZCBXb29kaG91c2UgPGR3bXcy QGluZnJhZGVhZC5vcmc+IGVzY3JldmV1OgoKPiBPbiBTYXQsIDIwMjEtMDUtMTUgYXQgMTA6MjIg KzAyMDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZToKPiA+ID4gPiAgICAgIEhlcmUsIDxD VFJMPjxTSElGVD5VIGlzIG5vdCB3b3JraW5nLiBObyBpZGVhIHdoeS4gSSBoYXZlbid0IAo+ID4g PiA+ICAgICAgdGVzdCBpdCBmb3IgKnllYXJzKiwgYXMgSSBkaW4ndCBzZWUgYW55IHJlYXNvbiB3 aHkgSSB3b3VsZAo+ID4gPiA+ICAgICAgbmVlZCB0byB0eXBlIFVURi04IGNoYXJhY3RlcnMgYnkg bnVtYmVycyB1bnRpbCB3ZSBzdGFydGVkCj4gPiA+ID4gICAgICB0aGlzIHRocmVhZC4gICAgCj4g PiA+IAo+ID4gPiBQbGVhc2UgcHJvdmlkZSB0aGUgYnVnIG51bWJlciBmb3IgdGhpczsgSSdkIGxp a2UgdG8gdHJhY2sgaXQuICAKPiA+IAo+ID4gSnVzdCBvcGVuZWQgYSBCWiBhbmQgYWRkZWQgeW91 IGFzIGMvYy4gIAo+IAo+IFRoYW5rcy4KPiAKPiA+IExldCdzIHRha2Ugb25lIHN0ZXAgYmFjaywg aW4gb3JkZXIgdG8gcmV0dXJuIHRvIHRoZSBpbnRlbnRzIG9mIHRoaXMKPiA+IFVURi04LCBhcyB0 aGUgZGlzY3Vzc2lvbnMgaGVyZSBhcmUgbm90IGNlbnRlcmVkIGludG8gdGhlIHBhdGNoZXMsIGJ1 dAo+ID4gaW5zdGVhZCwgb24gd2hhdCB0byBkbyBhbmQgd2h5Lgo+ID4gCj4gPiAtCj4gPiAKPiA+ IFRoaXMgZGlzY3Vzc2lvbiBzdGFydGVkIG9yaWdpbmFsbHkgYXQgbGludXgtZG9jIE1MLgo+ID4g Cj4gPiBXaGlsZSBkaXNjdXNzaW5nIGFib3V0IGFuIGlzc3VlIHdoZW4gbWFjaGluZSdzIGxvY2Fs ZSB3YXMgbm90IHNldAo+ID4gdG8gVVRGLTggb24gYSBidWlsZCBWTSwgICAKPiAKPiBTdG9wLiBT dG9wICpyaWdodCogdGhlcmUgYmVmb3JlIHlvdSBnbyBhbnkgZnVydGhlci4KPiAKPiBUaGUgbWFj aGluZSdzIGxvY2FsZSBzaG91bGQgaGF2ZSAqbm90aGluZyogdG8gZG8gd2l0aCBhbnl0aGluZy4K PiAKPiBXaGVuIHlvdSB2aWV3IHRoaXMgZW1haWwsIGl0IGNvbWVzIHdpdGggYSBDb250ZW50LVR5 cGU6IGhlYWRlciB3aGljaAo+IGV4cGxpY2l0bHkgdGVsbHMgeW91IHRoZSBjaGFyYWN0ZXIgc2V0 IHRoYXQgdGhlIG1lc3NhZ2UgaXMgZW5jb2RlZCBpbiwgCj4gd2hpY2ggSSB0aGluayBJJ3ZlIHNl dCB0byBVVEYtNy4KPiAKPiBXaGVuIHNob3dpbmcgeW91IHRoZSBtYWlsLCB5b3VyIHN5c3RlbSBo YXMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBvZgo+IHRoZSBjb250ZW50IHVzaW5nICp0aGF0KiBj aGFyYWN0ZXIgc2V0IGVuY29kaW5nLiBBbnl0aGluZyBlbHNlIGlzIGp1c3QKPiBmdW5kYW1lbnRh bGx5IGJyb2tlbi4gWW91ciBzeXN0ZW0gbG9jYWxlIGhhcyAqbm90aGluZyogdG8gZG8gd2l0aCBp dC4KPiAKPiBJZiB5b3VyIGxvY2FsIHN5c3RlbSBpcyBydW5uaW5nIEVCQ0RJQyB0aGF0IGRvZXNu J3QgKm1hdHRlciouCj4gCj4gTm93LCB0aGUgY2hhcmFjdGVyIHNldCBlbmNvZGluZyBvZiB0aGUg a2VybmVsIHNvdXJjZSBhbmQgZG9jdW1lbnRhdGlvbgo+IHRleHQgZmlsZXMgaXMgVVRGLTguIEl0 IGlzbid0IEVCQ0RJQywgaXQgaXNuJ3QgSVNPODg1OS0xNSBvciBhbnkgb2YgdGhlCj4gbGVnYWN5 IGNyYXAuIEl0IGlzbid0IHN5c3RlbSBsb2NhbGUgZWl0aGVyLCB1bmxlc3MgeW91ciBzeXN0ZW0g bG9jYWxlCj4gKmhhcHBlbnMqIHRvIGJlIFVURi04Lgo+IAo+IFVURi04ICpoYXBwZW5zKiB0byBi ZSBjb21wYXRpYmxlIHdpdGggQVNDSUkgZm9yIHRoZSBsaW1pdGVkIHN1YnNldCBvZgo+IGNoYXJh Y3RlcnMgd2hpY2ggQVNDSUkgY29udGFpbnMsIHN1cmUg4oCUIGp1c3QgYXMgKm1hbnkqLCBidXQg bm90IGFsbCwgb2YKPiB0aGUgbGVnYWN5IDgtYml0IGNoYXJhY3RlciBzZXRzIGFyZSBhbHNvIGEg c3VwZXJzZXQgb2YgQVNDSUkncyA3IGJpdHMuCj4gCj4gQnV0IGlmIHRoZSBkb2NzIGNvbnRhaW4g KmFueSogY2hhcmFjdGVycyB3aGljaCBhcmVuJ3QgQVNDSUksIGFuZCB5b3UKPiBidWlsZCB0aGVt IHdpdGggYSBicm9rZW4gYnVpbGQgc3lzdGVtIHdoaWNoIGFzc3VtZXMgQVNDSUksIHlvdSBhcmUK PiBnb2luZyB0byBwcm9kdWNlIHdyb25nIG91dHB1dC4gVGhlcmUgaXMgKm5vKiBzdWJzdGl0dXRl IGZvciBmaXhpbmcgdGhlCj4gKmFjdHVhbCogYnVnIHdoaWNoIHN0YXJ0ZWQgYWxsIHRoaXMsIGFu ZCBlbnN1cmluZyB5b3VyIGJ1aWxkIHN5c3RlbSAob3IKPiB3aGF0ZXZlcikgdXNlcyB0aGUgKmFj dHVhbCogZW5jb2Rpbmcgb2YgdGhlIHRleHQgZmlsZXMgaXQncyBwcm9jZXNzaW5nLAo+IGluc3Rl YWQgb2YgbWFraW5nIHN0dXBpZCBhbmQgYm9ndXMgYXNzdW1wdGlvbnMgYmFzZWQgb24gYSBzeXN0 ZW0KPiBkZWZhdWx0Lgo+IAo+IFlvdSBjb25jZWRlIGtlZXBpbmcgVSswMGE5IMKpIENPUFlSSUdI VCBTSUdOLiBBbmQgdGhhdCdzIGVuY29kZWQgaW4gVVRGLQo+IDggYXMgdHdvIGJ5dGVzIDB4QzIg MHhBOS4gSWYgc29tZSBicm9rZW4gYnVpbGQgc3lzdGVtICphc3N1bWVzKiB0aG9zZQo+IGJ5dGVz IGFyZSBJU084ODU5LTE1IGl0J2xsIHRha2UgdGhlbSB0byBtZWFuIHR3byBzZXBhcmF0ZSBjaGFy YWN0ZXJzCj4gCj4gICAgIFUrMDBDMiDDgiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lS Q1VNRkxFWAo+ICAgICBVKzAwQTkgwqkgQ09QWVJJR0hUIFNJR04KPiAKPiBZb3VyIGJyb2tlbiBi dWlsZCBzeXN0ZW0gdGhhdCBzdGFydGVkIGFsbCB0aGlzIGlzIG5ldmVyIGdvaW5nIHRvIGJlCj4g KmFueXRoaW5nKiBvdGhlciB0aGFuIGJyb2tlbi4gWW91IGNhbiBvbmx5IHBhcGVyIG92ZXIgdGhl IGNyYWNrcyBhbmQKPiBtYWtlIGl0IHNsaWdodGx5IGxlc3MgbGlrZWx5IHRoYXQgcGVvcGxlIHdp bGwgbm90aWNlIGluIHRoZSBjb21tb24KPiBjYXNlLCBwZXJoYXBzPyBUaGF0J3MgYWxsIHlvdSBk byBieSAqcmVkdWNpbmcqIHRoZSB1c2Ugb2Ygbm9uLUFTQ0lJLAo+IHVubGVzcyB5b3UncmUgZ29p bmcgdG8gZHJhZyB1cyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSAxOTgwcyBhbmQKPiBzdHJpY3Rs eSBsaW1pdCB1cyB0byBwdXJlIEFTQ0lJLCB1c2luZyB0aGUgZXF1aXZhbGVudCBvZiB0cmlncmFw aHMgZm9yCj4gKmFueXRoaW5nKiBvdXRzaWRlIHRoZSAwLTEyNyBjaGFyYWN0ZXIgcmFuZ2VzLgo+ IAo+IEFuZCBldmVuIGlmIHlvdSBkaWQgdGhhdCwgc3lzdGVtcyB3aGljaCB1c2UgRUJDRElDIGFz IHRoZWlyIGxvY2FsCj4gZW5jb2Rpbmcgd291bGQgKnN0aWxsKiBiZSBicm9rZW4sIGlmIHRoZXkg aGF2ZSB0aGUgc2FtZSBidWcgeW91IHN0YXJ0ZWQKPiBmcm9tLiBCZWNhdXNlIEVCQ0RJQyBpc24n dCBjb21wYXRpYmxlIHdpdGggQVNDSUkgKmV2ZW4qIGZvciB0aGUgZmlyc3QgNwo+IGJpdHMuCgpO b3csIHlvdSdyZSBtYWtpbmcgYSBsb3Qgb2Ygd3JvbmcgYXNzdW1wdGlvbnMgaGVyZSA7LSkKCjEu IEkgZGlkbid0IHJlcG9ydCB0aGUgYnVnLiBBbm90aGVyIHBlcnNvbiByZXBvcnRlZCBpdCBhdCBs aW51eC1kb2M7CjIuIEkgZnVsbHkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgYnVpbGRpbmcgc3lz dGVtIHNob3VsZCB3b3JrIGZpbmUKICAgd2hhdGV2ZXIgbG9jYXRlIHRoZSBtYWNoaW5lIGhhczsK My4gU3BoaW54IHN1cHBvcnRlZCBjaGFyc2V0IGZvciB0aGUgUkVTVCBpbnB1dCBhbmQgaXRzIG91 dHB1dCBpcyBVVEYtOC4KCkRlc3BpdGUgb2YgdGhhdCwgaXQgc2VlbXMgdGhhdCB0aGVyZSBhcmUg c29tZSBpc3N1ZXMgYXQgdGhlIGJ1aWxkaW5nCnRvb2wgc2V0LCBhdCBsZWFzdCB1bmRlciBjZXJ0 YWluIGNpcmN1bnN0YW5jZXMuIE9uZSBvZiB0aGUgaHlwb3RoZXNpcyAKdGhhdCBpdCB3YXMgbWVu dGlvbmVkIHRoZXJlIGlzIHRoYXQgdGhlIFNwaGlueCBsb2dnZXIgY3Jhc2hlcyB3aGVuIGl0CnRy aWVzIHRvIHByaW50IGFuIFVURi04IG1lc3NhZ2Ugd2hlbiB0aGUgbWFjaGluZSdzIGxvY2FsZSBp cyBub3QgVVRGLTguCgpUaGF0J3Mgc2FpZCwgSSB0cmllZCBmb3JjaW5nIGEgbm9uLVVURi04IG9u IHNvbWUgdGVzdHMgSSBkaWQgdG8gdHJ5CnRvIHJlcHJvZHVjZSwgYnV0IHRoZSBidWlsZCB3ZW50 IGZpbmUuCgpTbywgSSB3YXMgbm90IGFibGUgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZS4KClRoaXMg c2VyaWVzIGRvZXNuJ3QgYWRkcmVzcyB0aGUgaXNzdWUuIEl0IGlzIGp1c3QgYSBzaWRlIGVmZmVj dCBvZiB0aGUKZGlzY3Vzc2lvbnMsIHdoZXJlLCB3aGlsZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0 aGUgYnVnLCB3ZSBub3RpY2VkCnNldmVyYWwgVVRGLTggY2hhcmFjdGVycyBpbnRyb2R1Y2VkIGR1 cmluZyB0aGUgY29udmVyc2lvbiB0aGF0IHdlcmUndAp0aGUgb3JpZ2luYWwgYXV0aG9yJ3MgaW50 ZW50LgoKU28sIHdpdGggcmVnYXJkcyB0byB0aGUgb3JpZ2luYWwgYnV0IHJlcG9ydCwgaWYgSSBm aW5kIGEgd2F5IHRvCnJlcHJvZHVjZSBpdCBhbmQgdG8gYWRkcmVzcyBpdCwgSSdsbCBwb3N0IGEg c2VwYXJhdGUgc2VyaWVzLgoKSWYgeW91IHdhbnQgdG8gZGlzY3VzcyB0aGlzIGlzc3VlIGZ1cnRo ZXIsIGxldCdzIG5vdCBkaXNjdXNzIGhlcmUsIGJ1dAppbnN0ZWFkLCBhdCB0aGUgbGludXgtZG9j IHRocmVhZDoKCglodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1kb2MvMjAyMTA1MDYxMDM5 MTMuR0U2NTY0QGtpdHN1bmUuc3VzZS5jei8KCj4gCj4gCj4gPiB3ZSBkaXNjb3ZlcmVkIHRoYXQg c29tZSBjb252ZXJ0ZWQgZG9jcyBlbmRlZAo+ID4gd2l0aCBCT00gY2hhcmFjdGVycy4gVGhvc2Ug c3BlY2lmaWMgY2hhbmdlcyB3ZXJlIGludHJvZHVjZWQgYnkgc29tZQo+ID4gb2YgbXkgY29udmVy dCBwYXRjaGVzLCBwcm9iYWJseSBjb252ZXJ0ZWQgdmlhIHBhbmRvYy4KPiA+IAo+ID4gU28sIEkg d2VudCBhaGVhZCBpbiBvcmRlciB0byBjaGVjayB3aGF0IG90aGVyIHBvc3NpYmxlIHdlaXJkIHRo aW5ncwo+ID4gd2VyZSBpbnRyb2R1Y2VkIGJ5IHRoZSBjb252ZXJzaW9uLCB3aGVyZSBzZXZlcmFs IHNjcmlwdHMgYW5kIHRvb2xzCj4gPiB3ZXJlIHVzZWQgb24gZmlsZXMgdGhhdCBoYWQgYWxyZWFk eSBhIGRpZmZlcmVudCBtYXJrdXAuCj4gPiAKPiA+IEkgYWN0dWFsbHkgY2hlY2tlZCB0aGUgY3Vy cmVudCBVVEYtOCBpc3N1ZXMsIGFuZCBhc2tlZCBwZW9wbGUgYXQKPiA+IGxpbnV4LWRvYyB0byBj b21tZW50IHdoYXQgb2YgdGhvc2UgYXJlIHZhbGlkIHVzZWNhc2VzLCBhbmQgd2hhdAo+ID4gc2hv dWxkIGJlIHJlcGxhY2VkIGJ5IHBsYWluIEFTQ0lJLiAgCj4gCj4gTm8sIHRoZXNlIGFyZW4ndCAi VVRGLTggaXNzdWVzIi4gVGhvc2UgYXJlICpjb252ZXJzaW9uKiBpc3N1ZXMsIGFuZAo+IHdvdWxk IHN0aWxsIGJlIHRoZXJlIGlmIHRoZSBvdXRwdXQgb2YgdGhlIGNvbnZlcnNpb24gaGFkIGJlZW4g VVRGLTcsCj4gVUNTLTE2LCBldGMuIE9yICpldmVuKiBpZiB0aGUgb3V0cHV0IG9mIHRoZSBjb252 ZXJzaW9uIGhhZCBiZWVuCj4gdHJpZ3JhcGgtbGlrZSBzdHVmZiBsaWtlICctLScgZm9yIGVtZGFz aC4gSXQncyAqbm90aGluZyogdG8gZG8gd2l0aCB0aGUKPiBlbmNvZGluZyB0aGF0IHdlIGhhcHBl biB0byBiZSB1c2luZy4KClllcy4gVGhhdCdzIHdoYXQgSSBzYWlkLgoKPiAKPiBGaXhpbmcgdGhl IGNvbnZlcnNpb24gaXNzdWVzIG1ha2VzIGEgbG90IG9mIHNlbnNlLiBUcnkgdG8gZG8gaXQgd2l0 aG91dAo+IG1ha2luZyAqYW55KiBtZW50aW9uIG9mIFVURi04IGF0IGFsbC4KPiAKPiA+IEluIHN1 bW1hcnksIGJhc2VkIG9uIHRoZSBkaXNjdXNzaW9ucyB3ZSBoYXZlIHNvIGZhciwgSSBzdXNwZWN0 IHRoYXQKPiA+IHRoZXJlJ3Mgbm90IG11Y2ggdG8gYmUgZGlzY3Vzc2VkIGZvciB0aGUgYWJvdmUg Y2FzZXMuCj4gPiAKPiA+IFNvLCBJJ2xsIHBvc3QgYSB2MyBvZiB0aGlzIHNlcmllcywgY2hhbmdp bmcgb25seToKPiA+IAo+ID4gICAgICAgICAtIFUrMDBhMCAoJyAnKTogTk8tQlJFQUsgU1BBQ0UK PiA+ICAgICAgICAgLSBVK2ZlZmYgKCfvu78nKTogWkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRSAo Qk9NKSAgCj4gCj4gQWNrLCBhcyBsb25nIGFzIHRob3NlIG1ha2UgKm5vKiBtZW50aW9uIG9mIFVU Ri04LiBFeGNlcHQgcGVyaGFwcyB0bwo+IG5vdGUgdGhhdCBCT00gaXMgcmVkdW5kYW50IGJlY2F1 c2UgVVRGLTggZG9lc24ndCBoYXZlIGEgYnl0ZW9yZGVyLgoKSSBuZWVkIHRvIHRlbGwgd2hhdCBV VEYtOCBjb2RlcyBhcmUgcmVwbGFjZWQsIGFzIG90aGVyd2lzZSB0aGUgcGF0Y2gKd291bGRuJ3Qg bWFrZSBtdWNoIHNlbnNlIHRvIHJldmlld2VycywgYXMgYm90aCBVKzAwYTAgYW5kIHdoaXRlc3Bh Y2VzCmFyZSBkaXNwbGF5ZWQgdGhlIHNhbWUgd2F5LCBhbmQgQk9NIGlzIGludmlzaWJsZS4KCj4g Cj4gPiAtLS0KPiA+IAo+ID4gTm93LCB0aGlzIHNwZWNpZmljIHBhdGNoIHNlcmllcyBhZGRyZXNz IGFsc28gdGhpcyBleHRyYSBjYXNlOgo+ID4gCj4gPiA1LiBjdXJseSBjb21tYXM6Cj4gPiAKPiA+ ICAgICAgICAgLSBVKzIwMTggKCfigJgnKTogTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKPiA+ ICAgICAgICAgLSBVKzIwMTkgKCfigJknKTogUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCj4g PiAgICAgICAgIC0gVSsyMDFjICgn4oCcJyk6IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCj4g PiAgICAgICAgIC0gVSsyMDFkICgn4oCdJyk6IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwo+ ID4gCj4gPiBJTU8sIHRob3NlIHNob3VsZCBiZSByZXBsYWNlZCBieSBBU0NJSSBjb21tYXM6ICcg YW5kICIuCj4gPiAKPiA+IFRoZSByYXRpb25hbGUgaXMgc2ltcGxlOiAKPiA+IAo+ID4gLSBtb3N0 IHdlcmUgaW50cm9kdWNlZCBkdXJpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBEb2Nib29rLAo+ID4g ICBtYXJrZG93biBhbmQgTGFUZXg7Cj4gPiAtIHRoZXkgZG9uJ3QgYWRkIGFueSBleHRyYSB2YWx1 ZSwgYXMgdXNpbmcgImZvbyIgb2Yg4oCcZm9v4oCdIG1lYW5zCj4gPiAgIHRoZSBzYW1lIHRoaW5n Owo+ID4gLSBTcGhpbnggYWxyZWFkeSB1c2UgImZhbmN5IiBjb21tYXMgYXQgdGhlIG91dHB1dC4g Cj4gPiAKPiA+IEkgZ3Vlc3MgSSB3aWxsIHB1dCB0aGlzIG9uIGEgc2VwYXJhdGUgc2VyaWVzLCBh cyB0aGlzIGlzIG5vdCBhIGJ1Zwo+ID4gZml4LCBidXQganVzdCBhIGNsZWFudXAgZnJvbSB0aGUg Y29udmVyc2lvbiB3b3JrLgo+ID4gCj4gPiBJJ2xsIHJlLXBvc3QgdGhvc2UgY2xlYW51cHMgb24g YSBzZXBhcmF0ZSBzZXJpZXMsIGZvciBwYXRjaCBwZXIgcGF0Y2gKPiA+IHJldmlldy4gIAo+IAo+ IE1ha2VzIHNlbnNlLiAKPiAKPiBUaGUgbGVmdC9yaWdodCBxdW90YXRpb24gbWFya3MgZXhpc3Rz IHRvIG1ha2UgaHVtYW4tcmVhZGFibGUgdGV4dCBtdWNoCj4gZWFzaWVyIHRvIHJlYWQsIGJ1dCB0 aGUga2V5IHBvaW50IGhlcmUgaXMgdGhhdCB0aGV5IGFyZSByZWR1bmRhbnQKPiBiZWNhdXNlIHRo ZSB0b29saW5nIGFscmVhZHkgZW1pdHMgdGhlbSBpbiB0aGUgKm91dHB1dCogc28gdGhleSBkb24n dAo+IG5lZWQgdG8gYmUgaW4gdGhlIHNvdXJjZSwgeWVzPwoKWWVzLgoKPiBBcyBsb25nIGFzIHRo ZSB0b29saW5nIGdldHMgaXQgKnJpZ2h0KiBhbmQgdXNlcyB0aGVtIHdoZXJlIGl0IHNob3VsZCwK PiB0aGF0IHNlZW1zIHNhbmUgZW5vdWdoLgo+IAo+IEhvd2V2ZXIsIGl0ICpkb2VzKiBicmVhayAn Z3JlcCcsIGJlY2F1c2UgaWYgSSBjdXQvcGFzdGUgYSBzbmlwcGV0IGZyb20KPiB0aGUgZG9jdW1l bnRhdGlvbiBhbmQgdHJ5IHRvIGdyZXAgZm9yIGl0LCBpdCdsbCBubyBsb25nZXIgbWF0Y2guCgo+ IAo+IENvbnNpc3RlbmN5IGlzIGdvb2QsIGJ1dCBwZXJoYXBzIHdlIHNob3VsZCBhY3R1YWxseSBi ZSBjb25zaXN0ZW50IHRoZQo+IG90aGVyIHdheSByb3VuZCBhbmQgYWx3YXlzIHVzZSB0aGUgbGVm dC9yaWdodCB2ZXJzaW9ucyBpbiB0aGUgc291cmNlCj4gKmluc3RlYWQqIG9mIHJlbHlpbmcgb24g dGhlIHRvb2xpbmcsIHRvIG1ha2Ugc2VhcmNoZXMgd29yayBiZXR0ZXI/Cj4gWW91IGNsYWltZWQg dG8gY2FyZSBhYm91dCB0aGF0LCByaWdodD8KClRoYXQncyBpbmRlZWQgYSBnb29kIHBvaW50LiBJ dCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBoYXZlIG1vcmUKb3BpbmlvbnMgd2l0aCB0aGF0IG1h dHRlci4KClRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdG8gY29uc2lkZXI6CgoxLiBJdCBp cyAodXN1YWxseSkgdHJpdmlhbCB0byBkaXNjb3ZlciB3aGF0IGRvY3VtZW50IHByb2R1Y2VkIGEK ICAgY2VydGFpbiBwYWdlIGF0IHRoZSBkb2N1bWVudGF0aW9uLgoKICAgRm9yIGluc3RhbmNlLCBp ZiB5b3Ugd2FudCB0byBrbm93IHdoZXJlIHRoZSB0ZXh0IHVuZGVyIHRoaXMKICAgZmlsZSBjYW1l IGZyb20sIG9yIHRvIGdyZXAgYSB0ZXh0IGZyb20gaXQ6CgoJaHR0cHM6Ly93d3cua2VybmVsLm9y Zy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLmh0bWwKCiAgIFlvdSBjYW4g Y2xpY2sgYXQgdGhlICJWaWV3IHBhZ2Ugc291cmNlIiBidXR0b24gYXQgdGhlIGZpcnN0IGxpbmUu CiAgIEl0IHdpbGwgc2hvdyB0aGUgLnJzdCBmaWxlIHVzZWQgdG8gcHJvZHVjZSBpdDoKCglodHRw czovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9fc291cmNlcy9hZG1pbi1ndWlkZS9j Z3JvdXAtdjIucnN0LnR4dAoKMi4gSWYgYWxsIHlvdSB3YW50IGlzIHRvIHNlYXJjaCBmb3IgYSB0 ZXh0IGluc2lkZSB0aGUgZG9jcywKICAgeW91IGNhbiBjbGljayBhdCB0aGUgIlNlYXJjaCBkb2Nz IiBib3gsIHdoaWNoIGlzIHBhcnQgb2YgdGhlCiAgIFJlYWQgdGhlIERvY3MgdGhlbWUuCgozLiBL ZXJuZWwgaGFzIHNldmVyYWwgZXh0ZW5zaW9ucyBmb3IgU3BoaW54LCBpbiBvcmRlciB0byBtYWtl IGxpZmUgCiAgIGVhc2llciBmb3IgS2VybmVsIGRldmVsb3BlcnM6CgoJRG9jdW1lbnRhdGlvbi9z cGhpbngvYXV0b21hcmt1cC5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngvY2RvbWFpbi5weQoJRG9j dW1lbnRhdGlvbi9zcGhpbngva2VybmVsX2FiaS5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngva2Vy bmVsX2ZlYXQucHkKCURvY3VtZW50YXRpb24vc3BoaW54L2tlcm5lbF9pbmNsdWRlLnB5CglEb2N1 bWVudGF0aW9uL3NwaGlueC9rZXJuZWxkb2MucHkKCURvY3VtZW50YXRpb24vc3BoaW54L2tlcm5l bGxvZy5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weQoJRG9jdW1lbnRhdGlvbi9z cGhpbngvbG9hZF9jb25maWcucHkKCURvY3VtZW50YXRpb24vc3BoaW54L21haW50YWluZXJzX2lu Y2x1ZGUucHkKCURvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weQoKVGhvc2UgKGlu IHBhcnRpY3VsYXIgYXV0b21hcmt1cCBhbmQga2VybmVsZG9jKSB3aWxsIGFsc28gZHluYW1pY2Fs bHkgCmNoYW5nZSB0aGluZ3MgZHVyaW5nIFJlU1QgY29udmVyc2lvbiwgd2hpY2ggbWF5IGNhdXNl IGdyZXAgdG8gbm90IHdvcmsuIAoKNS4gc29tZSBQREYgdG9vbHMgbGlrZSBldmluY2Ugd2lsbCBt YXRjaCBjdXJseSBjb21tYXMgaWYgeW91CiAgIHR5cGUgYW4gQVNDSUkgY29tbWEgb24gdGhlaXIg c2VhcmNoIGJveGVzLgoKNi4gU29tZSBkZXZlbG9wZXJzIHByZWZlciB0byBvbmx5IGRlYWwgd2l0 aCB0aGUgZmlsZXMgaW5zaWRlIHRoZQogICBLZXJuZWwgdHJlZS4gVGhvc2UgYXJlIHZlcnkgdW5s aWtlbHkgdG8gZG8gZ3JlcCB3aXRoIGN1cmx5IGFzcGFzLgoKTXkgb3BpbmlvbiBvbiB0aGF0IG1h dHRlciBpcyB0aGF0IHdlIHNob3VsZCBtYWtlIGxpZmUgZWFzaWVyIGZvcgpkZXZlbG9wZXJzIHRv IGdyZXAgb24gdGV4dCBmaWxlcywgYXMgdGhlIG9uZXMgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UK YXJlIGFscmVhZHkgc2VydmVkIGJ5IHRoZSBzZWFyY2ggYm94IGluIGh0bWwgZm9ybWF0IG9yIGJ5 IHRvb2xzIGxpa2UKZXZpbmNlLgoKU28sIG15IHZvdGUgaGVyZSBpcyB0byBrZWVwIGFzcGFzIGFz IHBsYWluIEFTQ0lJLgoKPiAKPiA+IFRoZSByZW1haW5pbmcgY2FzZXMgYXJlIGZ1dHVyZSB3b3Jr LCBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHYyOgo+ID4gCj4gPiA2LiBIeXBoZW4vRGFzaGVz IGFuZCBlbGxpcHNpcwo+ID4gCj4gPiAgICAgICAgIC0gVSsyMjEyICgn4oiSJyk6IE1JTlVTIFNJ R04KPiA+ICAgICAgICAgLSBVKzAwYWQgKCfCrScpOiBTT0ZUIEhZUEhFTgo+ID4gICAgICAgICAt IFUrMjAxMCAoJ+KAkCcpOiBIWVBIRU4KPiA+IAo+ID4gICAgICAgICAgICAgVGhvc2UgdGhyZWUg YXJlIHVzZWQgb24gcGxhY2VzIHdoZXJlIGEgbm9ybWFsIEFTQ0lJIGh5cGhlbi9taW51cwo+ID4g ICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gVGhlcmUgYXJlIGV2ZW4gYSBjb3Vw bGUgb2YgQyBmaWxlcyB3aGljaAo+ID4gICAgICAgICAgICAgdXNlIHRoZW0gaW5zdGVhZCBvZiAn LScgb24gY29tbWVudHMuCj4gPiAKPiA+ICAgICAgICAgICAgIElNTyBhcmUgZml4ZXMvY2xlYW51 cHMgZnJvbSBjb252ZXJzaW9ucyBhbmQgYmFkIGN1dC1hbmQtcGFzdGUuICAKPiAKPiBUaGF0IHNl ZW1zIHRvIG1ha2Ugc2Vuc2UuCj4gCj4gPiAgICAgICAgIC0gVSsyMDEzICgn4oCTJyk6IEVOIERB U0gKPiA+ICAgICAgICAgLSBVKzIwMTQgKCfigJQnKTogRU0gREFTSAo+ID4gICAgICAgICAtIFUr MjAyNiAoJ+KApicpOiBIT1JJWk9OVEFMIEVMTElQU0lTCj4gPiAKPiA+ICAgICAgICAgICAgIFRo b3NlIGFyZSBhdXRvLXJlcGxhY2VkIGJ5IFNwaGlueCBmcm9tICItLSIsICItLS0iIGFuZCAiLi4u IiwKPiA+ICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KPiA+IAo+ID4gICAgICAgICAgICAgSSBn dWVzcyB0aG9zZSBhcmUgYSBtYXR0ZXIgb2YgcGVyc29uYWwgcHJlZmVyZW5jZSBhYm91dAo+ID4g ICAgICAgICAgICAgd2VhdGhlciB1c2luZyBBU0NJSSBvciBVVEYtOC4KPiA+IAo+ID4gICAgICAg ICAgICAgTXkgcGVyc29uYWwgcHJlZmVyZW5jZSAoYW5kIFRlZCBzZWVtcyB0byBoYXZlIGEgc2lt aWxhcgo+ID4gICAgICAgICAgICAgb3BpbmlvbikgaXMgdG8gbGV0IFNwaGlueCBkbyB0aGUgY29u dmVyc2lvbi4KPiA+IAo+ID4gICAgICAgICAgICAgRm9yIHRob3NlLCBJIGludGVuZCB0byBwb3N0 IGEgc2VwYXJhdGUgc2VyaWVzLCB0byBiZQo+ID4gICAgICAgICAgICAgcmV2aWV3ZWQgcGF0Y2gg cGVyIHBhdGNoLCBhcyB0aGlzIGlzIHJlYWxseSBhIG1hdHRlcgo+ID4gICAgICAgICAgICAgb2Yg cGVyc29uYWwgdGFzdGUuIEhhcmRseSB3ZSdsbCByZWFjaCBhIGNvbnNlbnN1cyBoZXJlLgo+ID4g ICAKPiAKPiBBZ2FpbiB1c2luZyB0aGUgdHJpZ3JhcGgtbGlrZSAnLS0nIGFuZCAnLi4uJyBpbnN0 ZWFkIG9mIGp1c3QgdXNpbmcgdGhlCj4gcGxhaW4gdGV4dCAn4oCUJyBhbmQgJ+KApicgYnJlYWtz IHNlYXJjaGluZywgYmVjYXVzZSB3aGF0J3MgaW4gdGhlIG91dHB1dAo+IGRvZXNuJ3QgbWF0Y2gg dGhlIGlucHV0LiBBZ2FpbiBjb25zaXN0ZW5jeSBpcyBnb29kLCBidXQgcGVyaGFwcyB3ZQo+IHNo b3VsZCBzdGFuZGFyZGlzZSBvbiBqdXN0IHB1dHRpbmcgdGhlc2UgaW4gdGhlaXIgcGxhaW4gdGV4 dCBmb3JtCj4gaW5zdGVhZCBvZiB0aGUgdHJpZ3JhcGhzPwoKR29vZCBwb2ludC4gCgpXaGlsZSBJ IGRvbid0IGhhdmUgYW55IHN0cm9uZyBwcmVmZXJlbmNlcyBoZXJlLCB0aGVyZSdzIHNvbWV0aGlu ZyB0aGF0CmFubm95cyBtZSB3aXRoIHJlZ2FyZHMgdG8gRU0vRU4gREFTSDoKCldpdGggdGhlIG1v bm9zcGFjZWQgZm9udHMgSSdtIHVzaW5nIGhlcmUgLSBib3RoIGF0IG15IGUtbWFpbGVyIGFuZApv biBteSB0ZXJtaW5hbHMsIGJvdGggRU0gYW5kIEVOIERBU0ggYXJlIGRpc3BsYXllZCBsb29rICpl eGFjdGx5Kgp0aGUgc2FtZS4KCj4gCj4gPiA3LiBtYXRoIHN5bWJvbHM6Cj4gPiAKPiA+ICAgICAg ICAgLSBVKzAwZDcgKCfDlycpOiBNVUxUSVBMSUNBVElPTiBTSUdOCj4gPiAKPiA+ICAgICAgICAg ICAgVGhpcyBvbmUgaXMgdXNlZCBtb3N0bHkgZG8gZGVzY3JpYmUgdmlkZW8gcmVzb2x1dGlvbnMs IGJ1dCB0aGlzIGlzCj4gPiAgICAgICAgICAgIG9uIGEgc21hbGxlciBjaGFuZ2VzZXQgdGhhbiB0 aGUgb25lcyB0aGF0IHVzZSAieCIgbGV0dGVyLiAgCj4gCj4gSSB0aGluayBzdGFuZGFyZGlzaW5n IG9uIMOXIGZvciB2aWRlbyByZXNvbHV0aW9ucyBpbiBkb2N1bWVudGF0aW9uIHdvdWxkCj4gbWFr ZSBpdCBsb29rIGJldHRlciBhbmQgYmUgZWFzaWVyIHRvIHJlYWQuCj4gCj4gPiAKPiA+ICAgICAg ICAgLSBVKzIyMTcgKCfiiJcnKTogQVNURVJJU0sgT1BFUkFUT1IKPiA+IAo+ID4gICAgICAgICAg ICBUaGlzIGlzIHVzZWQgb25seSBoZXJlOgo+ID4gICAgICAgICAgICAgICAgIERvY3VtZW50YXRp b24vZmlsZXN5c3RlbXMvZXh0NC9ibG9ja2dyb3VwLnJzdDpmaWxlc3lzdGVtIHNpemUgdG8gMl4y MSDiiJcgMl4yNyA9IDJeNDhieXRlcyBvciAyNTZUaUIuCj4gPiAKPiA+ICAgICAgICAgICAgUHJv YmFibHkgYWRkZWQgYnkgc29tZSBjb252ZXJzaW9uIHRvb2wuIElNTywgdGhpcyBvbmUgc2hvdWxk Cj4gPiAgICAgICAgICAgIGFsc28gYmUgcmVwbGFjZWQgYnkgYW4gQVNDSUkgYXN0ZXJpc2suCj4g PiAKPiA+IEkgZ3Vlc3MgSSdsbCBwb3N0IGEgcGF0Y2ggZm9yIHRoZSBBU1RFUklTSyBPUEVSQVRP Ui4gIAo+IAo+IFRoYXQgbWFrZXMgc2Vuc2UuCgoKClRoYW5rcywKTWF1cm8KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK 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=-5.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=no 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 86639C433B4 for ; Mon, 17 May 2021 11:57:09 +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 4A3AC6101E for ; Mon, 17 May 2021 11:57:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4A3AC6101E 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 6D29A6E939; Mon, 17 May 2021 11:57:04 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 75FDE6E0E5 for ; Sat, 15 May 2021 11:23:53 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C31761353; Sat, 15 May 2021 11:23:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621077833; bh=HeIddlkMKM2vvOljnLDXD4e2e2yH5GQzottfBaVm0bY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=XXlyAEA014M55DUjIyQLfGWDcW9S7xmk1gidB0jh9f2ApxAuuEF9sz2c9VzCGb5GE 41pS57vPJwcz1c2L+apHtk8j0/zoZAIUVQw007qk7tH/cIpT9DVClLM9mfxTLWrVvL wrhEszurWapZjCMLZr9NBlXhh1iki4WvckUaXrW2iyL74EjZoPEpdsooNgbX0Lq+iW z/ynOSpbXZQ9RM3lfA5tr05EXWQuuWTypwjc0XflcrGdCNtqTLQ0zuOI0eGNgvNIql jgNeJnivsI/Ub1np4iQ0qwQORU1dLwIVXW0zvu4YSMrvgguupZqbQkJ/ZhuuaAPIod yefI1SDfhPYmQ== Date: Sat, 15 May 2021 13:23:44 +0200 From: Mauro Carvalho Chehab To: David Woodhouse Message-ID: <20210515132344.0206c8fc@coco.lan> In-Reply-To: References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> <20210515102239.2ffd0451@coco.lan> 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" RW0gU2F0LCAxNSBNYXkgMjAyMSAxMDoyNDoyOCArMDEwMApEYXZpZCBXb29kaG91c2UgPGR3bXcy QGluZnJhZGVhZC5vcmc+IGVzY3JldmV1OgoKPiBPbiBTYXQsIDIwMjEtMDUtMTUgYXQgMTA6MjIg KzAyMDAsIE1hdXJvIENhcnZhbGhvIENoZWhhYiB3cm90ZToKPiA+ID4gPiAgICAgIEhlcmUsIDxD VFJMPjxTSElGVD5VIGlzIG5vdCB3b3JraW5nLiBObyBpZGVhIHdoeS4gSSBoYXZlbid0IAo+ID4g PiA+ICAgICAgdGVzdCBpdCBmb3IgKnllYXJzKiwgYXMgSSBkaW4ndCBzZWUgYW55IHJlYXNvbiB3 aHkgSSB3b3VsZAo+ID4gPiA+ICAgICAgbmVlZCB0byB0eXBlIFVURi04IGNoYXJhY3RlcnMgYnkg bnVtYmVycyB1bnRpbCB3ZSBzdGFydGVkCj4gPiA+ID4gICAgICB0aGlzIHRocmVhZC4gICAgCj4g PiA+IAo+ID4gPiBQbGVhc2UgcHJvdmlkZSB0aGUgYnVnIG51bWJlciBmb3IgdGhpczsgSSdkIGxp a2UgdG8gdHJhY2sgaXQuICAKPiA+IAo+ID4gSnVzdCBvcGVuZWQgYSBCWiBhbmQgYWRkZWQgeW91 IGFzIGMvYy4gIAo+IAo+IFRoYW5rcy4KPiAKPiA+IExldCdzIHRha2Ugb25lIHN0ZXAgYmFjaywg aW4gb3JkZXIgdG8gcmV0dXJuIHRvIHRoZSBpbnRlbnRzIG9mIHRoaXMKPiA+IFVURi04LCBhcyB0 aGUgZGlzY3Vzc2lvbnMgaGVyZSBhcmUgbm90IGNlbnRlcmVkIGludG8gdGhlIHBhdGNoZXMsIGJ1 dAo+ID4gaW5zdGVhZCwgb24gd2hhdCB0byBkbyBhbmQgd2h5Lgo+ID4gCj4gPiAtCj4gPiAKPiA+ IFRoaXMgZGlzY3Vzc2lvbiBzdGFydGVkIG9yaWdpbmFsbHkgYXQgbGludXgtZG9jIE1MLgo+ID4g Cj4gPiBXaGlsZSBkaXNjdXNzaW5nIGFib3V0IGFuIGlzc3VlIHdoZW4gbWFjaGluZSdzIGxvY2Fs ZSB3YXMgbm90IHNldAo+ID4gdG8gVVRGLTggb24gYSBidWlsZCBWTSwgICAKPiAKPiBTdG9wLiBT dG9wICpyaWdodCogdGhlcmUgYmVmb3JlIHlvdSBnbyBhbnkgZnVydGhlci4KPiAKPiBUaGUgbWFj aGluZSdzIGxvY2FsZSBzaG91bGQgaGF2ZSAqbm90aGluZyogdG8gZG8gd2l0aCBhbnl0aGluZy4K PiAKPiBXaGVuIHlvdSB2aWV3IHRoaXMgZW1haWwsIGl0IGNvbWVzIHdpdGggYSBDb250ZW50LVR5 cGU6IGhlYWRlciB3aGljaAo+IGV4cGxpY2l0bHkgdGVsbHMgeW91IHRoZSBjaGFyYWN0ZXIgc2V0 IHRoYXQgdGhlIG1lc3NhZ2UgaXMgZW5jb2RlZCBpbiwgCj4gd2hpY2ggSSB0aGluayBJJ3ZlIHNl dCB0byBVVEYtNy4KPiAKPiBXaGVuIHNob3dpbmcgeW91IHRoZSBtYWlsLCB5b3VyIHN5c3RlbSBo YXMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBvZgo+IHRoZSBjb250ZW50IHVzaW5nICp0aGF0KiBj aGFyYWN0ZXIgc2V0IGVuY29kaW5nLiBBbnl0aGluZyBlbHNlIGlzIGp1c3QKPiBmdW5kYW1lbnRh bGx5IGJyb2tlbi4gWW91ciBzeXN0ZW0gbG9jYWxlIGhhcyAqbm90aGluZyogdG8gZG8gd2l0aCBp dC4KPiAKPiBJZiB5b3VyIGxvY2FsIHN5c3RlbSBpcyBydW5uaW5nIEVCQ0RJQyB0aGF0IGRvZXNu J3QgKm1hdHRlciouCj4gCj4gTm93LCB0aGUgY2hhcmFjdGVyIHNldCBlbmNvZGluZyBvZiB0aGUg a2VybmVsIHNvdXJjZSBhbmQgZG9jdW1lbnRhdGlvbgo+IHRleHQgZmlsZXMgaXMgVVRGLTguIEl0 IGlzbid0IEVCQ0RJQywgaXQgaXNuJ3QgSVNPODg1OS0xNSBvciBhbnkgb2YgdGhlCj4gbGVnYWN5 IGNyYXAuIEl0IGlzbid0IHN5c3RlbSBsb2NhbGUgZWl0aGVyLCB1bmxlc3MgeW91ciBzeXN0ZW0g bG9jYWxlCj4gKmhhcHBlbnMqIHRvIGJlIFVURi04Lgo+IAo+IFVURi04ICpoYXBwZW5zKiB0byBi ZSBjb21wYXRpYmxlIHdpdGggQVNDSUkgZm9yIHRoZSBsaW1pdGVkIHN1YnNldCBvZgo+IGNoYXJh Y3RlcnMgd2hpY2ggQVNDSUkgY29udGFpbnMsIHN1cmUg4oCUIGp1c3QgYXMgKm1hbnkqLCBidXQg bm90IGFsbCwgb2YKPiB0aGUgbGVnYWN5IDgtYml0IGNoYXJhY3RlciBzZXRzIGFyZSBhbHNvIGEg c3VwZXJzZXQgb2YgQVNDSUkncyA3IGJpdHMuCj4gCj4gQnV0IGlmIHRoZSBkb2NzIGNvbnRhaW4g KmFueSogY2hhcmFjdGVycyB3aGljaCBhcmVuJ3QgQVNDSUksIGFuZCB5b3UKPiBidWlsZCB0aGVt IHdpdGggYSBicm9rZW4gYnVpbGQgc3lzdGVtIHdoaWNoIGFzc3VtZXMgQVNDSUksIHlvdSBhcmUK PiBnb2luZyB0byBwcm9kdWNlIHdyb25nIG91dHB1dC4gVGhlcmUgaXMgKm5vKiBzdWJzdGl0dXRl IGZvciBmaXhpbmcgdGhlCj4gKmFjdHVhbCogYnVnIHdoaWNoIHN0YXJ0ZWQgYWxsIHRoaXMsIGFu ZCBlbnN1cmluZyB5b3VyIGJ1aWxkIHN5c3RlbSAob3IKPiB3aGF0ZXZlcikgdXNlcyB0aGUgKmFj dHVhbCogZW5jb2Rpbmcgb2YgdGhlIHRleHQgZmlsZXMgaXQncyBwcm9jZXNzaW5nLAo+IGluc3Rl YWQgb2YgbWFraW5nIHN0dXBpZCBhbmQgYm9ndXMgYXNzdW1wdGlvbnMgYmFzZWQgb24gYSBzeXN0 ZW0KPiBkZWZhdWx0Lgo+IAo+IFlvdSBjb25jZWRlIGtlZXBpbmcgVSswMGE5IMKpIENPUFlSSUdI VCBTSUdOLiBBbmQgdGhhdCdzIGVuY29kZWQgaW4gVVRGLQo+IDggYXMgdHdvIGJ5dGVzIDB4QzIg MHhBOS4gSWYgc29tZSBicm9rZW4gYnVpbGQgc3lzdGVtICphc3N1bWVzKiB0aG9zZQo+IGJ5dGVz IGFyZSBJU084ODU5LTE1IGl0J2xsIHRha2UgdGhlbSB0byBtZWFuIHR3byBzZXBhcmF0ZSBjaGFy YWN0ZXJzCj4gCj4gICAgIFUrMDBDMiDDgiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lS Q1VNRkxFWAo+ICAgICBVKzAwQTkgwqkgQ09QWVJJR0hUIFNJR04KPiAKPiBZb3VyIGJyb2tlbiBi dWlsZCBzeXN0ZW0gdGhhdCBzdGFydGVkIGFsbCB0aGlzIGlzIG5ldmVyIGdvaW5nIHRvIGJlCj4g KmFueXRoaW5nKiBvdGhlciB0aGFuIGJyb2tlbi4gWW91IGNhbiBvbmx5IHBhcGVyIG92ZXIgdGhl IGNyYWNrcyBhbmQKPiBtYWtlIGl0IHNsaWdodGx5IGxlc3MgbGlrZWx5IHRoYXQgcGVvcGxlIHdp bGwgbm90aWNlIGluIHRoZSBjb21tb24KPiBjYXNlLCBwZXJoYXBzPyBUaGF0J3MgYWxsIHlvdSBk byBieSAqcmVkdWNpbmcqIHRoZSB1c2Ugb2Ygbm9uLUFTQ0lJLAo+IHVubGVzcyB5b3UncmUgZ29p bmcgdG8gZHJhZyB1cyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSAxOTgwcyBhbmQKPiBzdHJpY3Rs eSBsaW1pdCB1cyB0byBwdXJlIEFTQ0lJLCB1c2luZyB0aGUgZXF1aXZhbGVudCBvZiB0cmlncmFw aHMgZm9yCj4gKmFueXRoaW5nKiBvdXRzaWRlIHRoZSAwLTEyNyBjaGFyYWN0ZXIgcmFuZ2VzLgo+ IAo+IEFuZCBldmVuIGlmIHlvdSBkaWQgdGhhdCwgc3lzdGVtcyB3aGljaCB1c2UgRUJDRElDIGFz IHRoZWlyIGxvY2FsCj4gZW5jb2Rpbmcgd291bGQgKnN0aWxsKiBiZSBicm9rZW4sIGlmIHRoZXkg aGF2ZSB0aGUgc2FtZSBidWcgeW91IHN0YXJ0ZWQKPiBmcm9tLiBCZWNhdXNlIEVCQ0RJQyBpc24n dCBjb21wYXRpYmxlIHdpdGggQVNDSUkgKmV2ZW4qIGZvciB0aGUgZmlyc3QgNwo+IGJpdHMuCgpO b3csIHlvdSdyZSBtYWtpbmcgYSBsb3Qgb2Ygd3JvbmcgYXNzdW1wdGlvbnMgaGVyZSA7LSkKCjEu IEkgZGlkbid0IHJlcG9ydCB0aGUgYnVnLiBBbm90aGVyIHBlcnNvbiByZXBvcnRlZCBpdCBhdCBs aW51eC1kb2M7CjIuIEkgZnVsbHkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgYnVpbGRpbmcgc3lz dGVtIHNob3VsZCB3b3JrIGZpbmUKICAgd2hhdGV2ZXIgbG9jYXRlIHRoZSBtYWNoaW5lIGhhczsK My4gU3BoaW54IHN1cHBvcnRlZCBjaGFyc2V0IGZvciB0aGUgUkVTVCBpbnB1dCBhbmQgaXRzIG91 dHB1dCBpcyBVVEYtOC4KCkRlc3BpdGUgb2YgdGhhdCwgaXQgc2VlbXMgdGhhdCB0aGVyZSBhcmUg c29tZSBpc3N1ZXMgYXQgdGhlIGJ1aWxkaW5nCnRvb2wgc2V0LCBhdCBsZWFzdCB1bmRlciBjZXJ0 YWluIGNpcmN1bnN0YW5jZXMuIE9uZSBvZiB0aGUgaHlwb3RoZXNpcyAKdGhhdCBpdCB3YXMgbWVu dGlvbmVkIHRoZXJlIGlzIHRoYXQgdGhlIFNwaGlueCBsb2dnZXIgY3Jhc2hlcyB3aGVuIGl0CnRy aWVzIHRvIHByaW50IGFuIFVURi04IG1lc3NhZ2Ugd2hlbiB0aGUgbWFjaGluZSdzIGxvY2FsZSBp cyBub3QgVVRGLTguCgpUaGF0J3Mgc2FpZCwgSSB0cmllZCBmb3JjaW5nIGEgbm9uLVVURi04IG9u IHNvbWUgdGVzdHMgSSBkaWQgdG8gdHJ5CnRvIHJlcHJvZHVjZSwgYnV0IHRoZSBidWlsZCB3ZW50 IGZpbmUuCgpTbywgSSB3YXMgbm90IGFibGUgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZS4KClRoaXMg c2VyaWVzIGRvZXNuJ3QgYWRkcmVzcyB0aGUgaXNzdWUuIEl0IGlzIGp1c3QgYSBzaWRlIGVmZmVj dCBvZiB0aGUKZGlzY3Vzc2lvbnMsIHdoZXJlLCB3aGlsZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0 aGUgYnVnLCB3ZSBub3RpY2VkCnNldmVyYWwgVVRGLTggY2hhcmFjdGVycyBpbnRyb2R1Y2VkIGR1 cmluZyB0aGUgY29udmVyc2lvbiB0aGF0IHdlcmUndAp0aGUgb3JpZ2luYWwgYXV0aG9yJ3MgaW50 ZW50LgoKU28sIHdpdGggcmVnYXJkcyB0byB0aGUgb3JpZ2luYWwgYnV0IHJlcG9ydCwgaWYgSSBm aW5kIGEgd2F5IHRvCnJlcHJvZHVjZSBpdCBhbmQgdG8gYWRkcmVzcyBpdCwgSSdsbCBwb3N0IGEg c2VwYXJhdGUgc2VyaWVzLgoKSWYgeW91IHdhbnQgdG8gZGlzY3VzcyB0aGlzIGlzc3VlIGZ1cnRo ZXIsIGxldCdzIG5vdCBkaXNjdXNzIGhlcmUsIGJ1dAppbnN0ZWFkLCBhdCB0aGUgbGludXgtZG9j IHRocmVhZDoKCglodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1kb2MvMjAyMTA1MDYxMDM5 MTMuR0U2NTY0QGtpdHN1bmUuc3VzZS5jei8KCj4gCj4gCj4gPiB3ZSBkaXNjb3ZlcmVkIHRoYXQg c29tZSBjb252ZXJ0ZWQgZG9jcyBlbmRlZAo+ID4gd2l0aCBCT00gY2hhcmFjdGVycy4gVGhvc2Ug c3BlY2lmaWMgY2hhbmdlcyB3ZXJlIGludHJvZHVjZWQgYnkgc29tZQo+ID4gb2YgbXkgY29udmVy dCBwYXRjaGVzLCBwcm9iYWJseSBjb252ZXJ0ZWQgdmlhIHBhbmRvYy4KPiA+IAo+ID4gU28sIEkg d2VudCBhaGVhZCBpbiBvcmRlciB0byBjaGVjayB3aGF0IG90aGVyIHBvc3NpYmxlIHdlaXJkIHRo aW5ncwo+ID4gd2VyZSBpbnRyb2R1Y2VkIGJ5IHRoZSBjb252ZXJzaW9uLCB3aGVyZSBzZXZlcmFs IHNjcmlwdHMgYW5kIHRvb2xzCj4gPiB3ZXJlIHVzZWQgb24gZmlsZXMgdGhhdCBoYWQgYWxyZWFk eSBhIGRpZmZlcmVudCBtYXJrdXAuCj4gPiAKPiA+IEkgYWN0dWFsbHkgY2hlY2tlZCB0aGUgY3Vy cmVudCBVVEYtOCBpc3N1ZXMsIGFuZCBhc2tlZCBwZW9wbGUgYXQKPiA+IGxpbnV4LWRvYyB0byBj b21tZW50IHdoYXQgb2YgdGhvc2UgYXJlIHZhbGlkIHVzZWNhc2VzLCBhbmQgd2hhdAo+ID4gc2hv dWxkIGJlIHJlcGxhY2VkIGJ5IHBsYWluIEFTQ0lJLiAgCj4gCj4gTm8sIHRoZXNlIGFyZW4ndCAi VVRGLTggaXNzdWVzIi4gVGhvc2UgYXJlICpjb252ZXJzaW9uKiBpc3N1ZXMsIGFuZAo+IHdvdWxk IHN0aWxsIGJlIHRoZXJlIGlmIHRoZSBvdXRwdXQgb2YgdGhlIGNvbnZlcnNpb24gaGFkIGJlZW4g VVRGLTcsCj4gVUNTLTE2LCBldGMuIE9yICpldmVuKiBpZiB0aGUgb3V0cHV0IG9mIHRoZSBjb252 ZXJzaW9uIGhhZCBiZWVuCj4gdHJpZ3JhcGgtbGlrZSBzdHVmZiBsaWtlICctLScgZm9yIGVtZGFz aC4gSXQncyAqbm90aGluZyogdG8gZG8gd2l0aCB0aGUKPiBlbmNvZGluZyB0aGF0IHdlIGhhcHBl biB0byBiZSB1c2luZy4KClllcy4gVGhhdCdzIHdoYXQgSSBzYWlkLgoKPiAKPiBGaXhpbmcgdGhl IGNvbnZlcnNpb24gaXNzdWVzIG1ha2VzIGEgbG90IG9mIHNlbnNlLiBUcnkgdG8gZG8gaXQgd2l0 aG91dAo+IG1ha2luZyAqYW55KiBtZW50aW9uIG9mIFVURi04IGF0IGFsbC4KPiAKPiA+IEluIHN1 bW1hcnksIGJhc2VkIG9uIHRoZSBkaXNjdXNzaW9ucyB3ZSBoYXZlIHNvIGZhciwgSSBzdXNwZWN0 IHRoYXQKPiA+IHRoZXJlJ3Mgbm90IG11Y2ggdG8gYmUgZGlzY3Vzc2VkIGZvciB0aGUgYWJvdmUg Y2FzZXMuCj4gPiAKPiA+IFNvLCBJJ2xsIHBvc3QgYSB2MyBvZiB0aGlzIHNlcmllcywgY2hhbmdp bmcgb25seToKPiA+IAo+ID4gICAgICAgICAtIFUrMDBhMCAoJyAnKTogTk8tQlJFQUsgU1BBQ0UK PiA+ICAgICAgICAgLSBVK2ZlZmYgKCfvu78nKTogWkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRSAo Qk9NKSAgCj4gCj4gQWNrLCBhcyBsb25nIGFzIHRob3NlIG1ha2UgKm5vKiBtZW50aW9uIG9mIFVU Ri04LiBFeGNlcHQgcGVyaGFwcyB0bwo+IG5vdGUgdGhhdCBCT00gaXMgcmVkdW5kYW50IGJlY2F1 c2UgVVRGLTggZG9lc24ndCBoYXZlIGEgYnl0ZW9yZGVyLgoKSSBuZWVkIHRvIHRlbGwgd2hhdCBV VEYtOCBjb2RlcyBhcmUgcmVwbGFjZWQsIGFzIG90aGVyd2lzZSB0aGUgcGF0Y2gKd291bGRuJ3Qg bWFrZSBtdWNoIHNlbnNlIHRvIHJldmlld2VycywgYXMgYm90aCBVKzAwYTAgYW5kIHdoaXRlc3Bh Y2VzCmFyZSBkaXNwbGF5ZWQgdGhlIHNhbWUgd2F5LCBhbmQgQk9NIGlzIGludmlzaWJsZS4KCj4g Cj4gPiAtLS0KPiA+IAo+ID4gTm93LCB0aGlzIHNwZWNpZmljIHBhdGNoIHNlcmllcyBhZGRyZXNz IGFsc28gdGhpcyBleHRyYSBjYXNlOgo+ID4gCj4gPiA1LiBjdXJseSBjb21tYXM6Cj4gPiAKPiA+ ICAgICAgICAgLSBVKzIwMTggKCfigJgnKTogTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKPiA+ ICAgICAgICAgLSBVKzIwMTkgKCfigJknKTogUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCj4g PiAgICAgICAgIC0gVSsyMDFjICgn4oCcJyk6IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCj4g PiAgICAgICAgIC0gVSsyMDFkICgn4oCdJyk6IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwo+ ID4gCj4gPiBJTU8sIHRob3NlIHNob3VsZCBiZSByZXBsYWNlZCBieSBBU0NJSSBjb21tYXM6ICcg YW5kICIuCj4gPiAKPiA+IFRoZSByYXRpb25hbGUgaXMgc2ltcGxlOiAKPiA+IAo+ID4gLSBtb3N0 IHdlcmUgaW50cm9kdWNlZCBkdXJpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBEb2Nib29rLAo+ID4g ICBtYXJrZG93biBhbmQgTGFUZXg7Cj4gPiAtIHRoZXkgZG9uJ3QgYWRkIGFueSBleHRyYSB2YWx1 ZSwgYXMgdXNpbmcgImZvbyIgb2Yg4oCcZm9v4oCdIG1lYW5zCj4gPiAgIHRoZSBzYW1lIHRoaW5n Owo+ID4gLSBTcGhpbnggYWxyZWFkeSB1c2UgImZhbmN5IiBjb21tYXMgYXQgdGhlIG91dHB1dC4g Cj4gPiAKPiA+IEkgZ3Vlc3MgSSB3aWxsIHB1dCB0aGlzIG9uIGEgc2VwYXJhdGUgc2VyaWVzLCBh cyB0aGlzIGlzIG5vdCBhIGJ1Zwo+ID4gZml4LCBidXQganVzdCBhIGNsZWFudXAgZnJvbSB0aGUg Y29udmVyc2lvbiB3b3JrLgo+ID4gCj4gPiBJJ2xsIHJlLXBvc3QgdGhvc2UgY2xlYW51cHMgb24g YSBzZXBhcmF0ZSBzZXJpZXMsIGZvciBwYXRjaCBwZXIgcGF0Y2gKPiA+IHJldmlldy4gIAo+IAo+ IE1ha2VzIHNlbnNlLiAKPiAKPiBUaGUgbGVmdC9yaWdodCBxdW90YXRpb24gbWFya3MgZXhpc3Rz IHRvIG1ha2UgaHVtYW4tcmVhZGFibGUgdGV4dCBtdWNoCj4gZWFzaWVyIHRvIHJlYWQsIGJ1dCB0 aGUga2V5IHBvaW50IGhlcmUgaXMgdGhhdCB0aGV5IGFyZSByZWR1bmRhbnQKPiBiZWNhdXNlIHRo ZSB0b29saW5nIGFscmVhZHkgZW1pdHMgdGhlbSBpbiB0aGUgKm91dHB1dCogc28gdGhleSBkb24n dAo+IG5lZWQgdG8gYmUgaW4gdGhlIHNvdXJjZSwgeWVzPwoKWWVzLgoKPiBBcyBsb25nIGFzIHRo ZSB0b29saW5nIGdldHMgaXQgKnJpZ2h0KiBhbmQgdXNlcyB0aGVtIHdoZXJlIGl0IHNob3VsZCwK PiB0aGF0IHNlZW1zIHNhbmUgZW5vdWdoLgo+IAo+IEhvd2V2ZXIsIGl0ICpkb2VzKiBicmVhayAn Z3JlcCcsIGJlY2F1c2UgaWYgSSBjdXQvcGFzdGUgYSBzbmlwcGV0IGZyb20KPiB0aGUgZG9jdW1l bnRhdGlvbiBhbmQgdHJ5IHRvIGdyZXAgZm9yIGl0LCBpdCdsbCBubyBsb25nZXIgbWF0Y2guCgo+ IAo+IENvbnNpc3RlbmN5IGlzIGdvb2QsIGJ1dCBwZXJoYXBzIHdlIHNob3VsZCBhY3R1YWxseSBi ZSBjb25zaXN0ZW50IHRoZQo+IG90aGVyIHdheSByb3VuZCBhbmQgYWx3YXlzIHVzZSB0aGUgbGVm dC9yaWdodCB2ZXJzaW9ucyBpbiB0aGUgc291cmNlCj4gKmluc3RlYWQqIG9mIHJlbHlpbmcgb24g dGhlIHRvb2xpbmcsIHRvIG1ha2Ugc2VhcmNoZXMgd29yayBiZXR0ZXI/Cj4gWW91IGNsYWltZWQg dG8gY2FyZSBhYm91dCB0aGF0LCByaWdodD8KClRoYXQncyBpbmRlZWQgYSBnb29kIHBvaW50LiBJ dCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBoYXZlIG1vcmUKb3BpbmlvbnMgd2l0aCB0aGF0IG1h dHRlci4KClRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdG8gY29uc2lkZXI6CgoxLiBJdCBp cyAodXN1YWxseSkgdHJpdmlhbCB0byBkaXNjb3ZlciB3aGF0IGRvY3VtZW50IHByb2R1Y2VkIGEK ICAgY2VydGFpbiBwYWdlIGF0IHRoZSBkb2N1bWVudGF0aW9uLgoKICAgRm9yIGluc3RhbmNlLCBp ZiB5b3Ugd2FudCB0byBrbm93IHdoZXJlIHRoZSB0ZXh0IHVuZGVyIHRoaXMKICAgZmlsZSBjYW1l IGZyb20sIG9yIHRvIGdyZXAgYSB0ZXh0IGZyb20gaXQ6CgoJaHR0cHM6Ly93d3cua2VybmVsLm9y Zy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUvY2dyb3VwLXYyLmh0bWwKCiAgIFlvdSBjYW4g Y2xpY2sgYXQgdGhlICJWaWV3IHBhZ2Ugc291cmNlIiBidXR0b24gYXQgdGhlIGZpcnN0IGxpbmUu CiAgIEl0IHdpbGwgc2hvdyB0aGUgLnJzdCBmaWxlIHVzZWQgdG8gcHJvZHVjZSBpdDoKCglodHRw czovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9fc291cmNlcy9hZG1pbi1ndWlkZS9j Z3JvdXAtdjIucnN0LnR4dAoKMi4gSWYgYWxsIHlvdSB3YW50IGlzIHRvIHNlYXJjaCBmb3IgYSB0 ZXh0IGluc2lkZSB0aGUgZG9jcywKICAgeW91IGNhbiBjbGljayBhdCB0aGUgIlNlYXJjaCBkb2Nz IiBib3gsIHdoaWNoIGlzIHBhcnQgb2YgdGhlCiAgIFJlYWQgdGhlIERvY3MgdGhlbWUuCgozLiBL ZXJuZWwgaGFzIHNldmVyYWwgZXh0ZW5zaW9ucyBmb3IgU3BoaW54LCBpbiBvcmRlciB0byBtYWtl IGxpZmUgCiAgIGVhc2llciBmb3IgS2VybmVsIGRldmVsb3BlcnM6CgoJRG9jdW1lbnRhdGlvbi9z cGhpbngvYXV0b21hcmt1cC5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngvY2RvbWFpbi5weQoJRG9j dW1lbnRhdGlvbi9zcGhpbngva2VybmVsX2FiaS5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngva2Vy bmVsX2ZlYXQucHkKCURvY3VtZW50YXRpb24vc3BoaW54L2tlcm5lbF9pbmNsdWRlLnB5CglEb2N1 bWVudGF0aW9uL3NwaGlueC9rZXJuZWxkb2MucHkKCURvY3VtZW50YXRpb24vc3BoaW54L2tlcm5l bGxvZy5weQoJRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weQoJRG9jdW1lbnRhdGlvbi9z cGhpbngvbG9hZF9jb25maWcucHkKCURvY3VtZW50YXRpb24vc3BoaW54L21haW50YWluZXJzX2lu Y2x1ZGUucHkKCURvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weQoKVGhvc2UgKGlu IHBhcnRpY3VsYXIgYXV0b21hcmt1cCBhbmQga2VybmVsZG9jKSB3aWxsIGFsc28gZHluYW1pY2Fs bHkgCmNoYW5nZSB0aGluZ3MgZHVyaW5nIFJlU1QgY29udmVyc2lvbiwgd2hpY2ggbWF5IGNhdXNl IGdyZXAgdG8gbm90IHdvcmsuIAoKNS4gc29tZSBQREYgdG9vbHMgbGlrZSBldmluY2Ugd2lsbCBt YXRjaCBjdXJseSBjb21tYXMgaWYgeW91CiAgIHR5cGUgYW4gQVNDSUkgY29tbWEgb24gdGhlaXIg c2VhcmNoIGJveGVzLgoKNi4gU29tZSBkZXZlbG9wZXJzIHByZWZlciB0byBvbmx5IGRlYWwgd2l0 aCB0aGUgZmlsZXMgaW5zaWRlIHRoZQogICBLZXJuZWwgdHJlZS4gVGhvc2UgYXJlIHZlcnkgdW5s aWtlbHkgdG8gZG8gZ3JlcCB3aXRoIGN1cmx5IGFzcGFzLgoKTXkgb3BpbmlvbiBvbiB0aGF0IG1h dHRlciBpcyB0aGF0IHdlIHNob3VsZCBtYWtlIGxpZmUgZWFzaWVyIGZvcgpkZXZlbG9wZXJzIHRv IGdyZXAgb24gdGV4dCBmaWxlcywgYXMgdGhlIG9uZXMgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UK YXJlIGFscmVhZHkgc2VydmVkIGJ5IHRoZSBzZWFyY2ggYm94IGluIGh0bWwgZm9ybWF0IG9yIGJ5 IHRvb2xzIGxpa2UKZXZpbmNlLgoKU28sIG15IHZvdGUgaGVyZSBpcyB0byBrZWVwIGFzcGFzIGFz IHBsYWluIEFTQ0lJLgoKPiAKPiA+IFRoZSByZW1haW5pbmcgY2FzZXMgYXJlIGZ1dHVyZSB3b3Jr LCBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHYyOgo+ID4gCj4gPiA2LiBIeXBoZW4vRGFzaGVz IGFuZCBlbGxpcHNpcwo+ID4gCj4gPiAgICAgICAgIC0gVSsyMjEyICgn4oiSJyk6IE1JTlVTIFNJ R04KPiA+ICAgICAgICAgLSBVKzAwYWQgKCfCrScpOiBTT0ZUIEhZUEhFTgo+ID4gICAgICAgICAt IFUrMjAxMCAoJ+KAkCcpOiBIWVBIRU4KPiA+IAo+ID4gICAgICAgICAgICAgVGhvc2UgdGhyZWUg YXJlIHVzZWQgb24gcGxhY2VzIHdoZXJlIGEgbm9ybWFsIEFTQ0lJIGh5cGhlbi9taW51cwo+ID4g ICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gVGhlcmUgYXJlIGV2ZW4gYSBjb3Vw bGUgb2YgQyBmaWxlcyB3aGljaAo+ID4gICAgICAgICAgICAgdXNlIHRoZW0gaW5zdGVhZCBvZiAn LScgb24gY29tbWVudHMuCj4gPiAKPiA+ICAgICAgICAgICAgIElNTyBhcmUgZml4ZXMvY2xlYW51 cHMgZnJvbSBjb252ZXJzaW9ucyBhbmQgYmFkIGN1dC1hbmQtcGFzdGUuICAKPiAKPiBUaGF0IHNl ZW1zIHRvIG1ha2Ugc2Vuc2UuCj4gCj4gPiAgICAgICAgIC0gVSsyMDEzICgn4oCTJyk6IEVOIERB U0gKPiA+ICAgICAgICAgLSBVKzIwMTQgKCfigJQnKTogRU0gREFTSAo+ID4gICAgICAgICAtIFUr MjAyNiAoJ+KApicpOiBIT1JJWk9OVEFMIEVMTElQU0lTCj4gPiAKPiA+ICAgICAgICAgICAgIFRo b3NlIGFyZSBhdXRvLXJlcGxhY2VkIGJ5IFNwaGlueCBmcm9tICItLSIsICItLS0iIGFuZCAiLi4u IiwKPiA+ICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KPiA+IAo+ID4gICAgICAgICAgICAgSSBn dWVzcyB0aG9zZSBhcmUgYSBtYXR0ZXIgb2YgcGVyc29uYWwgcHJlZmVyZW5jZSBhYm91dAo+ID4g ICAgICAgICAgICAgd2VhdGhlciB1c2luZyBBU0NJSSBvciBVVEYtOC4KPiA+IAo+ID4gICAgICAg ICAgICAgTXkgcGVyc29uYWwgcHJlZmVyZW5jZSAoYW5kIFRlZCBzZWVtcyB0byBoYXZlIGEgc2lt aWxhcgo+ID4gICAgICAgICAgICAgb3BpbmlvbikgaXMgdG8gbGV0IFNwaGlueCBkbyB0aGUgY29u dmVyc2lvbi4KPiA+IAo+ID4gICAgICAgICAgICAgRm9yIHRob3NlLCBJIGludGVuZCB0byBwb3N0 IGEgc2VwYXJhdGUgc2VyaWVzLCB0byBiZQo+ID4gICAgICAgICAgICAgcmV2aWV3ZWQgcGF0Y2gg cGVyIHBhdGNoLCBhcyB0aGlzIGlzIHJlYWxseSBhIG1hdHRlcgo+ID4gICAgICAgICAgICAgb2Yg cGVyc29uYWwgdGFzdGUuIEhhcmRseSB3ZSdsbCByZWFjaCBhIGNvbnNlbnN1cyBoZXJlLgo+ID4g ICAKPiAKPiBBZ2FpbiB1c2luZyB0aGUgdHJpZ3JhcGgtbGlrZSAnLS0nIGFuZCAnLi4uJyBpbnN0 ZWFkIG9mIGp1c3QgdXNpbmcgdGhlCj4gcGxhaW4gdGV4dCAn4oCUJyBhbmQgJ+KApicgYnJlYWtz IHNlYXJjaGluZywgYmVjYXVzZSB3aGF0J3MgaW4gdGhlIG91dHB1dAo+IGRvZXNuJ3QgbWF0Y2gg dGhlIGlucHV0LiBBZ2FpbiBjb25zaXN0ZW5jeSBpcyBnb29kLCBidXQgcGVyaGFwcyB3ZQo+IHNo b3VsZCBzdGFuZGFyZGlzZSBvbiBqdXN0IHB1dHRpbmcgdGhlc2UgaW4gdGhlaXIgcGxhaW4gdGV4 dCBmb3JtCj4gaW5zdGVhZCBvZiB0aGUgdHJpZ3JhcGhzPwoKR29vZCBwb2ludC4gCgpXaGlsZSBJ IGRvbid0IGhhdmUgYW55IHN0cm9uZyBwcmVmZXJlbmNlcyBoZXJlLCB0aGVyZSdzIHNvbWV0aGlu ZyB0aGF0CmFubm95cyBtZSB3aXRoIHJlZ2FyZHMgdG8gRU0vRU4gREFTSDoKCldpdGggdGhlIG1v bm9zcGFjZWQgZm9udHMgSSdtIHVzaW5nIGhlcmUgLSBib3RoIGF0IG15IGUtbWFpbGVyIGFuZApv biBteSB0ZXJtaW5hbHMsIGJvdGggRU0gYW5kIEVOIERBU0ggYXJlIGRpc3BsYXllZCBsb29rICpl eGFjdGx5Kgp0aGUgc2FtZS4KCj4gCj4gPiA3LiBtYXRoIHN5bWJvbHM6Cj4gPiAKPiA+ICAgICAg ICAgLSBVKzAwZDcgKCfDlycpOiBNVUxUSVBMSUNBVElPTiBTSUdOCj4gPiAKPiA+ICAgICAgICAg ICAgVGhpcyBvbmUgaXMgdXNlZCBtb3N0bHkgZG8gZGVzY3JpYmUgdmlkZW8gcmVzb2x1dGlvbnMs IGJ1dCB0aGlzIGlzCj4gPiAgICAgICAgICAgIG9uIGEgc21hbGxlciBjaGFuZ2VzZXQgdGhhbiB0 aGUgb25lcyB0aGF0IHVzZSAieCIgbGV0dGVyLiAgCj4gCj4gSSB0aGluayBzdGFuZGFyZGlzaW5n IG9uIMOXIGZvciB2aWRlbyByZXNvbHV0aW9ucyBpbiBkb2N1bWVudGF0aW9uIHdvdWxkCj4gbWFr ZSBpdCBsb29rIGJldHRlciBhbmQgYmUgZWFzaWVyIHRvIHJlYWQuCj4gCj4gPiAKPiA+ICAgICAg ICAgLSBVKzIyMTcgKCfiiJcnKTogQVNURVJJU0sgT1BFUkFUT1IKPiA+IAo+ID4gICAgICAgICAg ICBUaGlzIGlzIHVzZWQgb25seSBoZXJlOgo+ID4gICAgICAgICAgICAgICAgIERvY3VtZW50YXRp b24vZmlsZXN5c3RlbXMvZXh0NC9ibG9ja2dyb3VwLnJzdDpmaWxlc3lzdGVtIHNpemUgdG8gMl4y MSDiiJcgMl4yNyA9IDJeNDhieXRlcyBvciAyNTZUaUIuCj4gPiAKPiA+ICAgICAgICAgICAgUHJv YmFibHkgYWRkZWQgYnkgc29tZSBjb252ZXJzaW9uIHRvb2wuIElNTywgdGhpcyBvbmUgc2hvdWxk Cj4gPiAgICAgICAgICAgIGFsc28gYmUgcmVwbGFjZWQgYnkgYW4gQVNDSUkgYXN0ZXJpc2suCj4g PiAKPiA+IEkgZ3Vlc3MgSSdsbCBwb3N0IGEgcGF0Y2ggZm9yIHRoZSBBU1RFUklTSyBPUEVSQVRP Ui4gIAo+IAo+IFRoYXQgbWFrZXMgc2Vuc2UuCgoKClRoYW5rcywKTWF1cm8KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauro Carvalho Chehab Date: Sat, 15 May 2021 13:23:44 +0200 Subject: [Intel-wired-lan] [PATCH v2 00/40] Use ASCII subset instead of UTF-8 alternate symbols In-Reply-To: References: <20210514102118.1b71bec3@coco.lan> <61c286b7afd6c4acf71418feee4eecca2e6c80c8.camel@infradead.org> <20210515102239.2ffd0451@coco.lan> Message-ID: <20210515132344.0206c8fc@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 Sat, 15 May 2021 10:24:28 +0100 David Woodhouse escreveu: > On Sat, 2021-05-15 at 10:22 +0200, Mauro Carvalho Chehab wrote: > > > > 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. > > Thanks. > > > 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, > > Stop. Stop *right* there before you go any further. > > The machine's locale should have *nothing* to do with anything. > > When you view this email, it comes with a Content-Type: header which > explicitly tells you the character set that the message is encoded in, > which I think I've set to UTF-7. > > When showing you the mail, your system has to interpret the bytes of > the content using *that* character set encoding. Anything else is just > fundamentally broken. Your system locale has *nothing* to do with it. > > If your local system is running EBCDIC that doesn't *matter*. > > Now, the character set encoding of the kernel source and documentation > text files is UTF-8. It isn't EBCDIC, it isn't ISO8859-15 or any of the > legacy crap. It isn't system locale either, unless your system locale > *happens* to be UTF-8. > > UTF-8 *happens* to be compatible with ASCII for the limited subset of > characters which ASCII contains, sure ? just as *many*, but not all, of > the legacy 8-bit character sets are also a superset of ASCII's 7 bits. > > But if the docs contain *any* characters which aren't ASCII, and you > build them with a broken build system which assumes ASCII, you are > going to produce wrong output. There is *no* substitute for fixing the > *actual* bug which started all this, and ensuring your build system (or > whatever) uses the *actual* encoding of the text files it's processing, > instead of making stupid and bogus assumptions based on a system > default. > > You concede keeping U+00a9 ? COPYRIGHT SIGN. And that's encoded in UTF- > 8 as two bytes 0xC2 0xA9. If some broken build system *assumes* those > bytes are ISO8859-15 it'll take them to mean two separate characters > > U+00C2 ? LATIN CAPITAL LETTER A WITH CIRCUMFLEX > U+00A9 ? COPYRIGHT SIGN > > Your broken build system that started all this is never going to be > *anything* other than broken. You can only paper over the cracks and > make it slightly less likely that people will notice in the common > case, perhaps? That's all you do by *reducing* the use of non-ASCII, > unless you're going to drag us all the way back to the 1980s and > strictly limit us to pure ASCII, using the equivalent of trigraphs for > *anything* outside the 0-127 character ranges. > > And even if you did that, systems which use EBCDIC as their local > encoding would *still* be broken, if they have the same bug you started > from. Because EBCDIC isn't compatible with ASCII *even* for the first 7 > bits. Now, you're making a lot of wrong assumptions here ;-) 1. I didn't report the bug. Another person reported it at linux-doc; 2. I fully agree with you that the building system should work fine whatever locate the machine has; 3. Sphinx supported charset for the REST input and its output is UTF-8. Despite of that, it seems that there are some issues at the building tool set, at least under certain circunstances. One of the hypothesis that it was mentioned there is that the Sphinx logger crashes when it tries to print an UTF-8 message when the machine's locale is not UTF-8. That's said, I tried forcing a non-UTF-8 on some tests I did to try to reproduce, but the build went fine. So, I was not able to reproduce the issue. This series doesn't address the issue. It is just a side effect of the discussions, where, while trying to understand the bug, we noticed several UTF-8 characters introduced during the conversion that were't the original author's intent. So, with regards to the original but report, if I find a way to reproduce it and to address it, I'll post a separate series. If you want to discuss this issue further, let's not discuss here, but instead, at the linux-doc thread: https://lore.kernel.org/linux-doc/20210506103913.GE6564 at kitsune.suse.cz/ > > > > 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. > > No, these aren't "UTF-8 issues". Those are *conversion* issues, and > would still be there if the output of the conversion had been UTF-7, > UCS-16, etc. Or *even* if the output of the conversion had been > trigraph-like stuff like '--' for emdash. It's *nothing* to do with the > encoding that we happen to be using. Yes. That's what I said. > > Fixing the conversion issues makes a lot of sense. Try to do it without > making *any* mention of UTF-8 at all. > > > 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) > > Ack, as long as those make *no* mention of UTF-8. Except perhaps to > note that BOM is redundant because UTF-8 doesn't have a byteorder. I need to tell what UTF-8 codes are replaced, as otherwise the patch wouldn't make much sense to reviewers, as both U+00a0 and whitespaces are displayed the same way, and BOM is invisible. > > > --- > > > > 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. > > Makes sense. > > The left/right quotation marks exists to make human-readable text much > easier to read, but the key point here is that they are redundant > because the tooling already emits them in the *output* so they don't > need to be in the source, yes? Yes. > As long as the tooling gets it *right* and uses them where it should, > that seems sane enough. > > However, it *does* break 'grep', because if I cut/paste a snippet from > the documentation and try to grep for it, it'll no longer match. > > Consistency is good, but perhaps we should actually be consistent the > other way round and always use the left/right versions in the source > *instead* of relying on the tooling, to make searches work better? > You claimed to care about that, right? That's indeed a good point. It would be interesting to have more opinions with that matter. There are a couple of things to consider: 1. It is (usually) trivial to discover what document produced a certain page at the documentation. For instance, if you want to know where the text under this file came from, or to grep a text from it: https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html You can click at the "View page source" button at the first line. It will show the .rst file used to produce it: https://www.kernel.org/doc/html/latest/_sources/admin-guide/cgroup-v2.rst.txt 2. If all you want is to search for a text inside the docs, you can click at the "Search docs" box, which is part of the Read the Docs theme. 3. Kernel has several extensions for Sphinx, in order to make life easier for Kernel developers: Documentation/sphinx/automarkup.py Documentation/sphinx/cdomain.py Documentation/sphinx/kernel_abi.py Documentation/sphinx/kernel_feat.py Documentation/sphinx/kernel_include.py Documentation/sphinx/kerneldoc.py Documentation/sphinx/kernellog.py Documentation/sphinx/kfigure.py Documentation/sphinx/load_config.py Documentation/sphinx/maintainers_include.py Documentation/sphinx/rstFlatTable.py Those (in particular automarkup and kerneldoc) will also dynamically change things during ReST conversion, which may cause grep to not work. 5. some PDF tools like evince will match curly commas if you type an ASCII comma on their search boxes. 6. Some developers prefer to only deal with the files inside the Kernel tree. Those are very unlikely to do grep with curly aspas. My opinion on that matter is that we should make life easier for developers to grep on text files, as the ones using the web interface are already served by the search box in html format or by tools like evince. So, my vote here is to keep aspas as plain ASCII. > > > 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. > > That seems to make sense. > > > - 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. > > > > Again using the trigraph-like '--' and '...' instead of just using the > plain text '?' and '?' breaks searching, because what's in the output > doesn't match the input. Again consistency is good, but perhaps we > should standardise on just putting these in their plain text form > instead of the trigraphs? Good point. While I don't have any strong preferences here, there's something that annoys me with regards to EM/EN DASH: With the monospaced fonts I'm using here - both at my e-mailer and on my terminals, both EM and EN DASH are displayed look *exactly* the same. > > > 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. > > I think standardising on ? for video resolutions in documentation would > make it look better and be easier to read. > > > > > - 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. > > That makes sense. Thanks, Mauro