From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#21588: 25.0.50: Single quotes becoming curvy quotes in message function Date: Thu, 1 Oct 2015 23:51:08 -0700 Organization: UCLA Computer Science Department Message-ID: <560E295C.6000402@cs.ucla.edu> References: <560C64F5.3060007@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020203030508030106020300" X-Trace: ger.gmane.org 1443768742 24330 80.91.229.3 (2 Oct 2015 06:52:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 2 Oct 2015 06:52:22 +0000 (UTC) Cc: 21588-done@debbugs.gnu.org, Stefan Monnier , Alan Mackenzie To: Kaushal Modi Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Oct 02 08:52:11 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZhuCQ-00088G-GN for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Oct 2015 08:52:10 +0200 Original-Received: from localhost ([::1]:57808 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZhuCP-0000O1-R4 for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Oct 2015 02:52:09 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52267) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZhuCL-0000Nh-4P for bug-gnu-emacs@gnu.org; Fri, 02 Oct 2015 02:52:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZhuCH-0008AG-RM for bug-gnu-emacs@gnu.org; Fri, 02 Oct 2015 02:52:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:34010) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZhuCH-0008AC-Oa for bug-gnu-emacs@gnu.org; Fri, 02 Oct 2015 02:52:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1ZhuCH-0003zV-JU for bug-gnu-emacs@gnu.org; Fri, 02 Oct 2015 02:52:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Oct 2015 06:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21588 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 21588-done@debbugs.gnu.org id=D21588.144376867715292 (code D ref 21588); Fri, 02 Oct 2015 06:52:01 +0000 Original-Received: (at 21588-done) by debbugs.gnu.org; 2 Oct 2015 06:51:17 +0000 Original-Received: from localhost ([127.0.0.1]:51214 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZhuBX-0003yY-Om for submit@debbugs.gnu.org; Fri, 02 Oct 2015 02:51:16 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:42416) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZhuBU-0003yO-JO for 21588-done@debbugs.gnu.org; Fri, 02 Oct 2015 02:51:14 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id A7671160EC5; Thu, 1 Oct 2015 23:51:11 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id JcuMo8DXFD2j; Thu, 1 Oct 2015 23:51:10 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id EE889160EC7; Thu, 1 Oct 2015 23:51:09 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id OGFogujTHwsw; Thu, 1 Oct 2015 23:51:09 -0700 (PDT) Original-Received: from [192.168.1.9] (pool-100-32-155-148.lsanca.fios.verizon.net [100.32.155.148]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8FB3A160EC5; Thu, 1 Oct 2015 23:51:09 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:107194 Archived-At: This is a multi-part message in MIME format. --------------020203030508030106020300 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable On 09/30/2015 08:54 PM, Kaushal Modi wrote: > - Can the default be changed to 'grave? The GNU coding standards were changed a while ago to recommend against gr= ave=20 quoting in diagnostics and many GNU applications have already changed (e.= g.,=20 coreutils, GCC). Although Emacs has been one of the holdouts, now is as = good a=20 time as any to make the move. > we need to update the documentation that warns the user to use the corr= ect style. Thanks, done in the attached patch, which I just installed in the master = branch. > it is mentioned that typewriter quotes are simple and portable. That discussion was intended to be about text files, so I added a phrase = to that=20 effect in the attached patch. This should help resolve the seeming contr= adiction. > If we want to keep the default of text-quoting-style as nil (or 'curve)= , more logic needs to be added that decides whether left curly quote or r= ight curly quote should be used, which might have some performance impact= as we then need to check what the previous character is, what the next c= haracter is, etc to decide if the current apostrophe needs to be replaced= with a left or a right quote. It=E2=80=99s not a significant performance impact. It=E2=80=99s more a h= assle of documenting a=20 more-complex approach. That is partly why I gave up on such an approach = after=20 implementing it, and went with the simpler approach that is in Emacs mast= er now. > CASE 1: 'Hey' -> =E2=80=98Hey=E2=80=99 > CASE 2: it's awesome -> it=E2=80=99s awesome > CASE 3: my sisters' weddings -> my sisters=E2=80=99 weddings > CASE 4: He said 'It's awesome!' -> He said =E2=80=98It=E2=80=99s aweso= me!=E2=80=99 =E2=80=98message=E2=80=99 already does cases 2 and 3 that way, as well as= the 2nd apostrophe in=20 case 4. The remaining cases are quite rare in Emacs diagnostics, as the = Emacs=20 style uses directed quotes when single-quoting. > If there's a non-space character before the apostrophe, replace it with= right quote, else use left quote. That would mishandle common English phrases like =E2=80=9C'60s pop cultur= e=E2=80=9D and =E2=80=9Crock=20 'n' roll=E2=80=9D. (These phrases don=E2=80=99t occur in Emacs diagnosti= cs either, but as long=20 as we=E2=80=99re being pedantic....) Any heuristics will go awry sometim= es so we need=20 some way to override the heuristics; and once we have such an override, t= here is=20 a real benefit to keeping the heuristics simple. --------------020203030508030106020300 Content-Type: text/plain; charset=UTF-8; name="0001-Fix-a-few-problems-with-directed-quotes.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Fix-a-few-problems-with-directed-quotes.patch" RnJvbSBkZDYzNDZlMDBjMDkxMGIxNmYxYmQxOTVlNWU5NGY2YWMxZDY5NmVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUaHUsIDEgT2N0IDIwMTUgMjE6NDI6NTMgLTA3MDAKU3ViamVjdDogW1BBVENI XSBGaXggYSBmZXcgcHJvYmxlbXMgd2l0aCBkaXJlY3RlZCBxdW90ZXMKClRoaXMgaXMgaW4g cmVzcG9uc2UgdG8gYSBwcm9ibGVtIHJlcG9ydCBieSBLYXVzaGFsIE1vZGkgaW46Cmh0dHA6 Ly9idWdzLmdudS5vcmcvMjE1ODgjMjUKKiBsaXNwL2NlZGV0L21vZGUtbG9jYWwuZWwgKGRl c2NyaWJlLW1vZGUtbG9jYWwtb3ZlcmxvYWQpOgoqIGxpc3AvZW1hY3MtbGlzcC9ieXRlY29t cC5lbCAoYnl0ZS1jb21waWxlLWZpeC1oZWFkZXIpOgoqIGxpc3AvaW5mby14cmVmLmVsIChp bmZvLXhyZWYtY2hlY2stYWxsLWN1c3RvbSk6CiogbGlzcC9tYWlsL2VtYWNzYnVnLmVsIChy ZXBvcnQtZW1hY3MtYnVnLWhvb2spOgpQcmVmZXIgZGlyZWN0ZWQgdG8gdW5kaXJlY3RlZCBz aW5nbGUgcXVvdGVzIGluIGRpYWdub3N0aWNzLgotLS0KIGRvYy9lbWFjcy90ZXh0LnRleGkg ICAgICAgICB8ICA0ICsrLS0KIGRvYy9saXNwcmVmL2NvbnRyb2wudGV4aSAgICB8IDE2ICsr KysrKysrKysrLS0tLS0KIGRvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSAgICB8IDIyICsrKysr KysrKysrKysrKystLS0tLS0KIGxpc3AvY2VkZXQvbW9kZS1sb2NhbC5lbCAgICB8ICA0ICsr LS0KIGxpc3AvZW1hY3MtbGlzcC9ieXRlY29tcC5lbCB8ICAyICstCiBsaXNwL2VtYWNzLWxp c3AvZWxpbnQuZWwgICAgfCAgMiArLQogbGlzcC9pbmZvLXhyZWYuZWwgICAgICAgICAgIHwg IDIgKy0KIGxpc3AvbWFpbC9lbWFjc2J1Zy5lbCAgICAgICB8ICAzICsrLQogbGlzcC9taC1l L21oLWUuZWwgICAgICAgICAgIHwgIDQgKystLQogbGlzcC9uZXQvbmV3c3QtdHJlZXZpZXcu ZWwgIHwgIDIgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDIyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy90ZXh0LnRleGkgYi9kb2MvZW1h Y3MvdGV4dC50ZXhpCmluZGV4IDdmM2FmZDcuLmJhYjY2MGUgMTAwNjQ0Ci0tLSBhL2RvYy9l bWFjcy90ZXh0LnRleGkKKysrIGIvZG9jL2VtYWNzL3RleHQudGV4aQpAQCAtNDE3LDggKzQx Nyw4IEBAIGJlZ2lubmluZyBvZiBhIGxpbmUuCiB1c2luZyBzdHJhaWdodCBhcG9zdHJvcGhl cyBAdHsnbGlrZSB0aGlzJ30gb3IgZG91YmxlLXF1b3RlcyBAdHsibGlrZQogdGhpcyJ9LiAg QW5vdGhlciBjb21tb24gd2F5IGlzIHRoZSBjdXJ2ZWQgcXVvdGUgY29udmVudGlvbiwgd2hp Y2ggdXNlcwogbGVmdCBhbmQgcmlnaHQgc2luZ2xlIG9yIGRvdWJsZSBxdW90YXRpb24gbWFy a3MgQHR74oCYbGlrZSB0aGlz4oCZfSBvcgotQHR74oCcbGlrZSB0aGlz4oCdfS4gIFR5cGV3 cml0ZXIgcXVvdGVzIGFyZSBzaW1wbGUgYW5kIHBvcnRhYmxlOyBjdXJ2ZWQKLXF1b3RlcyBh cmUgbGVzcyBhbWJpZ3VvdXMgYW5kIHR5cGljYWxseSBsb29rIG5pY2VyLgorQHR74oCcbGlr ZSB0aGlz4oCdfS4gIEluIHRleHQgZmlsZXMsIHR5cGV3cml0ZXIgcXVvdGVzIGFyZSBzaW1w bGUgYW5kCitwb3J0YWJsZTsgY3VydmVkIHF1b3RlcyBhcmUgbGVzcyBhbWJpZ3VvdXMgYW5k IHR5cGljYWxseSBsb29rIG5pY2VyLgogCiAgIEVsZWN0cmljIFF1b3RlIG1vZGUgbWFrZXMg aXQgZWFzaWVyIHRvIHR5cGUgY3VydmVkIHF1b3Rlcy4gIEFzIHlvdQogdHlwZSBjaGFyYWN0 ZXJzIGl0IG9wdGlvbmFsbHkgY29udmVydHMgQHR7YH0gdG8gQHR74oCYfSwgQHR7J30gdG8g QHR74oCZfSwKZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2NvbnRyb2wudGV4aSBiL2RvYy9s aXNwcmVmL2NvbnRyb2wudGV4aQppbmRleCBmY2ExNmRhLi40MTI5MDNmIDEwMDY0NAotLS0g YS9kb2MvbGlzcHJlZi9jb250cm9sLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvY29udHJvbC50 ZXhpCkBAIC0xLDQgKzEsNCBAQAotQGMgLSotdGV4aW5mby0qLQorQGMgLSotIG1vZGU6IHRl eGluZm87IGNvZGluZzogdXRmLTggLSotCiBAYyBUaGlzIGlzIHBhcnQgb2YgdGhlIEdOVSBF bWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWwuCiBAYyBDb3B5cmlnaHQgKEMpIDE5OTAtMTk5 NSwgMTk5OC0xOTk5LCAyMDAxLTIwMTUgRnJlZSBTb2Z0d2FyZQogQGMgRm91bmRhdGlvbiwg SW5jLgpAQCAtMTAwMiw4ICsxMDAyLDggQEAgVGhlc2UgZXhhbXBsZXMgc2hvdyB0eXBpY2Fs IHVzZXMgb2YgQGNvZGV7ZXJyb3J9OgogQGVuZCBncm91cAogCiBAZ3JvdXAKLShlcnJvciAi WW91IGhhdmUgY29tbWl0dGVkICVkIGVycm9ycyIgMTApCi0gICAgIEBlcnJvcnt9IFlvdSBo YXZlIGNvbW1pdHRlZCAxMCBlcnJvcnMKKyhlcnJvciAiSW52YWxpZCBuYW1lIGAlcyciICJB JSVCIikKKyAgICAgQGVycm9ye30gSW52YWxpZCBuYW1lIOKAmEElJULigJkKIEBlbmQgZ3Jv dXAKIEBlbmQgZXhhbXBsZQogCkBAIC0xMDExLDEwICsxMDExLDE2IEBAIFRoZXNlIGV4YW1w bGVzIHNob3cgdHlwaWNhbCB1c2VzIG9mIEBjb2Rle2Vycm9yfToKIGVycm9yIHN5bWJvbCBA Y29kZXtlcnJvcn0sIGFuZCBhIGxpc3QgY29udGFpbmluZyB0aGUgc3RyaW5nIHJldHVybmVk IGJ5CiBAY29kZXtmb3JtYXQtbWVzc2FnZX0uCiAKK0luIGEgZm9ybWF0IHN0cmluZyBjb250 YWluaW5nIHNpbmdsZSBxdW90ZXMsIGN1cnZlZCBxdW90ZXMgQHR74oCYbGlrZQordGhpc+KA mX0gYW5kIGdyYXZlIHF1b3RlcyBAdHtgbGlrZSB0aGlzJ30gd29yayBiZXR0ZXIgdGhhbiBz dHJhaWdodAorcXVvdGVzIEB0eydsaWtlIHRoaXMnfSwgYXMgQGNvZGV7ZXJyb3J9IHR5cGlj YWxseSBmb3JtYXRzIGV2ZXJ5CitzdHJhaWdodCBxdW90ZSBhcyBhIGN1cnZlZCBjbG9zaW5n IHF1b3RlLgorCiBAc3Ryb25ne1dhcm5pbmc6fSBJZiB5b3Ugd2FudCB0byB1c2UgeW91ciBv d24gc3RyaW5nIGFzIGFuIGVycm9yIG1lc3NhZ2UKIHZlcmJhdGltLCBkb24ndCBqdXN0IHdy aXRlIEBjb2RleyhlcnJvciBAdmFye3N0cmluZ30pfS4gIElmIEB2YXJ7c3RyaW5nfQotY29u dGFpbnMgQHNhbXB7JX0sIGl0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSBmb3JtYXQgc3Bl Y2lmaWVyLCB3aXRoCi11bmRlc2lyYWJsZSByZXN1bHRzLiAgSW5zdGVhZCwgdXNlIEBjb2Rl eyhlcnJvciAiJXMiIEB2YXJ7c3RyaW5nfSl9LgorQHZhcntzdHJpbmd9IGNvbnRhaW5zIEBz YW1weyV9LCBAc2FtcHtgfSwgb3IgQHNhbXB7J30gaXQgbWF5IGJlCityZWZvcm1hdHRlZCwg d2l0aCB1bmRlc2lyYWJsZSByZXN1bHRzLiAgSW5zdGVhZCwgdXNlIEBjb2RleyhlcnJvciAi JXMiCitAdmFye3N0cmluZ30pfS4KIEBlbmQgZGVmdW4KIAogQGRlZnVuIHNpZ25hbCBlcnJv ci1zeW1ib2wgZGF0YQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpIGIv ZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCmluZGV4IDQ1MjQ2MmEuLmFkMjQ4YjEgMTAwNjQ0 Ci0tLSBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQorKysgYi9kb2MvbGlzcHJlZi9kaXNw bGF5LnRleGkKQEAgLTEsNCArMSw0IEBACi1AYyAtKi10ZXhpbmZvLSotCitAYyAtKi0gbW9k ZTogdGV4aW5mbzsgY29kaW5nOiB1dGYtOCAtKi0KIEBjIFRoaXMgaXMgcGFydCBvZiB0aGUg R05VIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbC4KIEBjIENvcHlyaWdodCAoQykgMTk5 MC0xOTk1LCAxOTk4LTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBAYyBT ZWUgdGhlIGZpbGUgZWxpc3AudGV4aSBmb3IgY29weWluZyBjb25kaXRpb25zLgpAQCAtMjU0 LDYgKzI1NCwxMSBAQCBwcm9wZXJ0aWVzLCBpdCBpcyBkaXNwbGF5ZWQgd2l0aCB0aGUgc3Bl Y2lmaWVkIGZhY2VzIChAcHhyZWZ7RmFjZXN9KS4KIFRoZSBzdHJpbmcgaXMgYWxzbyBhZGRl ZCB0byB0aGUgQGZpbGV7Kk1lc3NhZ2VzKn0gYnVmZmVyLCBidXQgd2l0aG91dAogdGV4dCBw cm9wZXJ0aWVzIChAcHhyZWZ7TG9nZ2luZyBNZXNzYWdlc30pLgogCitJbiBhIGZvcm1hdCBz dHJpbmcgY29udGFpbmluZyBzaW5nbGUgcXVvdGVzLCBjdXJ2ZWQgcXVvdGVzIEB0e+KAmGxp a2UKK3RoaXPigJl9IGFuZCBncmF2ZSBxdW90ZXMgQHR7YGxpa2UgdGhpcyd9IHdvcmsgYmV0 dGVyIHRoYW4gc3RyYWlnaHQKK3F1b3RlcyBAdHsnbGlrZSB0aGlzJ30sIGFzIEBjb2Rle21l c3NhZ2V9IHR5cGljYWxseSBmb3JtYXRzIGV2ZXJ5CitzdHJhaWdodCBxdW90ZSBhcyBhIGN1 cnZlZCBjbG9zaW5nIHF1b3RlLgorCiBJbiBiYXRjaCBtb2RlLCB0aGUgbWVzc2FnZSBpcyBw cmludGVkIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0sCiBmb2xsb3dlZCBieSBhIG5l d2xpbmUuCiAKQEAgLTI2OCwyMSArMjczLDI2IEBAIG9udG8gdGhlIHNjcmVlbiBpbW1lZGlh dGVseS4KIAogQGV4YW1wbGUKIEBncm91cAotKG1lc3NhZ2UgIk1pbmlidWZmZXIgZGVwdGgg aXMgJWQuIgotICAgICAgICAgKG1pbmlidWZmZXItZGVwdGgpKQotIEBwcmludHt9IE1pbmli dWZmZXIgZGVwdGggaXMgMC4KLUByZXN1bHR7fSAiTWluaWJ1ZmZlciBkZXB0aCBpcyAwLiIK KyhtZXNzYWdlICJSZXZlcnRpbmcgYCVzJy4uLiIgKGJ1ZmZlci1uYW1lKSkKKyBAcHJpbnR7 fSBSZXZlcnRpbmcg4oCYc3Vici5lbOKAmS4uLgorQHJlc3VsdHt9ICJSZXZlcnRpbmcg4oCY c3Vici5lbOKAmS4uLiIKIEBlbmQgZ3JvdXAKIAogQGdyb3VwCiAtLS0tLS0tLS0tIEVjaG8g QXJlYSAtLS0tLS0tLS0tCi1NaW5pYnVmZmVyIGRlcHRoIGlzIDAuCitSZXZlcnRpbmcg4oCY c3Vici5lbOKAmS4uLgogLS0tLS0tLS0tLSBFY2hvIEFyZWEgLS0tLS0tLS0tLQogQGVuZCBn cm91cAogQGVuZCBleGFtcGxlCiAKIFRvIGF1dG9tYXRpY2FsbHkgZGlzcGxheSBhIG1lc3Nh Z2UgaW4gdGhlIGVjaG8gYXJlYSBvciBpbiBhIHBvcC1idWZmZXIsCiBkZXBlbmRpbmcgb24g aXRzIHNpemUsIHVzZSBAY29kZXtkaXNwbGF5LW1lc3NhZ2Utb3ItYnVmZmVyfSAoc2VlIGJl bG93KS4KKworQHN0cm9uZ3tXYXJuaW5nOn0gSWYgeW91IHdhbnQgdG8gdXNlIHlvdXIgb3du IHN0cmluZyBhcyBhIG1lc3NhZ2UKK3ZlcmJhdGltLCBkb24ndCBqdXN0IHdyaXRlIEBjb2Rl eyhtZXNzYWdlIEB2YXJ7c3RyaW5nfSl9LiAgSWYKK0B2YXJ7c3RyaW5nfSBjb250YWlucyBA c2FtcHslfSwgQHNhbXB7YH0sIG9yIEBzYW1weyd9IGl0IG1heSBiZQorcmVmb3JtYXR0ZWQs IHdpdGggdW5kZXNpcmFibGUgcmVzdWx0cy4gIEluc3RlYWQsIHVzZSBAY29kZXsobWVzc2Fn ZQorIiVzIiBAdmFye3N0cmluZ30pfS4KIEBlbmQgZGVmdW4KIAogQGRlZnZhciBpbmhpYml0 LW1lc3NhZ2UKZGlmZiAtLWdpdCBhL2xpc3AvY2VkZXQvbW9kZS1sb2NhbC5lbCBiL2xpc3Av Y2VkZXQvbW9kZS1sb2NhbC5lbAppbmRleCA4NzM2YTRmLi5iNTk5NWZmIDEwMDY0NAotLS0g YS9saXNwL2NlZGV0L21vZGUtbG9jYWwuZWwKKysrIGIvbGlzcC9jZWRldC9tb2RlLWxvY2Fs LmVsCkBAIC02NDQsOSArNjQ0LDkgQEAgU1lNQk9MIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4g YmUgb3ZlcnJpZGRlbi4iCiAgICAgICAoaW5zZXJ0IChvdmVybG9hZC1kb2NzdHJpbmctZXh0 ZW5zaW9uIHN5bWJvbCkgIlxuXG4iKQogICAgICAgKGluc2VydCAoZm9ybWF0LW1lc3NhZ2Ug ImRlZmF1bHQgZnVuY3Rpb246IGAlcydcbiIgZGVmYXVsdCkpCiAgICAgICAoaWYgb3ZlcnJp ZGUKLQkgIChpbnNlcnQgKGZvcm1hdC1tZXNzYWdlICJcbm92ZXJyaWRlIGluIGJ1ZmZlciAn JXMnOiBgJXMnXG4iCisJICAoaW5zZXJ0IChmb3JtYXQtbWVzc2FnZSAiXG5vdmVycmlkZSBp biBidWZmZXIgYCVzJzogYCVzJ1xuIgogCQkJCSAgZGVzY3JpYmUtZnVuY3Rpb24tb3JpZy1i dWZmZXIgb3ZlcnJpZGUpKQotCShpbnNlcnQgKGZvcm1hdC1tZXNzYWdlICJcbm5vIG92ZXJy aWRlIGluIGJ1ZmZlciAnJXMnXG4iCisJKGluc2VydCAoZm9ybWF0LW1lc3NhZ2UgIlxubm8g b3ZlcnJpZGUgaW4gYnVmZmVyIGAlcydcbiIKIAkJCQlkZXNjcmliZS1mdW5jdGlvbi1vcmln LWJ1ZmZlcikpKQogCiAgICAgICAobWFwYXRvbXMKZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3Mt bGlzcC9ieXRlY29tcC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9ieXRlY29tcC5lbAppbmRleCA4 Njk5YWY2Li42ZjdiYTMzIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3AvYnl0ZWNvbXAu ZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2J5dGVjb21wLmVsCkBAIC0yMDE1LDcgKzIwMTUs NyBAQCBhbmQgd2lsbCBiZSByZW1vdmVkIHNvb24uICBTZWUgKGVsaXNwKUJhY2txdW90ZSBp biB0aGUgbWFudWFsLiIpKQogICAgICAgIChmb3JtYXQgIiAgICAgKHN0cmluZy1sZXNzcCBl bWFjcy12ZXJzaW9uIFwiJXNcIilcbiIgbWluaW11bS12ZXJzaW9uKQogICAgICAgIDs7IEJl Y2F1c2UgdGhlIGhlYWRlciBtdXN0IGZpdCBpbiBhIGZpeGVkIHdpZHRoLCB3ZSBjYW5ub3QK ICAgICAgICA7OyBpbnNlcnQgYXJiaXRyYXJ5LWxlbmd0aCBmaWxlIG5hbWVzIChCdWcjMTE1 ODUpLgotICAgICAgICIgICAgIChlcnJvciBcIiclcycgd2FzIGNvbXBpbGVkIGZvciAiCisg ICAgICAgIiAgICAgKGVycm9yIFwiYCVzJyB3YXMgY29tcGlsZWQgZm9yICIKICAgICAgICAo Zm9ybWF0ICJFbWFjcyAlcyBvciBsYXRlclwiICMkKSlcblxuIiBtaW5pbXVtLXZlcnNpb24p KQogICAgICAgOzsgTm93IGNvbXBlbnNhdGUgZm9yIGFueSBjaGFuZ2UgaW4gc2l6ZSwgdG8g bWFrZSBzdXJlIGFsbAogICAgICAgOzsgcG9zaXRpb25zIGluIHRoZSBmaWxlIHJlbWFpbiB2 YWxpZC4KZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9lbGludC5lbCBiL2xpc3AvZW1h Y3MtbGlzcC9lbGludC5lbAppbmRleCA4NmFjMzNjLi42NGQ2NWMwIDEwMDY0NAotLS0gYS9s aXNwL2VtYWNzLWxpc3AvZWxpbnQuZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2VsaW50LmVs CkBAIC01MjAsNyArNTIwLDcgQEAgUmV0dXJuIG5pbCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBm b3JtcywgdCBvdGhlcndpc2UuIgogCSAgICAgIDs7OyAJKHdpdGgtc3ludGF4LXRhYmxlIGVt YWNzLWxpc3AtbW9kZS1zeW50YXgtdGFibGUKIAkgICAgICA7OzsgCSAgKGVsaW50LXVwZGF0 ZS1lbnYpKQogCSAgICAgIDs7OyAJKHNldHEgZW52IChlbGludC1lbnYtYWRkLWVudiBlbnYg ZWxpbnQtYnVmZmVyLWVudikpKSkKLQkgICAgICA7OyhtZXNzYWdlICJFbGludCBwcm9jZXNz ZWQgKHJlcXVpcmUgJyVzKSIgbmFtZSkpCisJICAgICAgOzsobWVzc2FnZSAiJXMiIChmb3Jt YXQgIkVsaW50IHByb2Nlc3NlZCAocmVxdWlyZSAnJXMpIiBuYW1lKSkKIAkgIChlcnJvciAi JXMuZWwgbm90IGZvdW5kIGluIGxvYWQtcGF0aCIgbGlibmFtZSkpKQogICAgIChlcnJvcgog ICAgICAobWVzc2FnZSAiQ2FuJ3QgZ2V0IHZhcmlhYmxlcyBmcm9tIHJlcXVpcmUnZCBsaWJy YXJ5ICVzOiAlcyIKZGlmZiAtLWdpdCBhL2xpc3AvaW5mby14cmVmLmVsIGIvbGlzcC9pbmZv LXhyZWYuZWwKaW5kZXggMmI4MWVmYS4uZmNkZjUzMiAxMDA2NDQKLS0tIGEvbGlzcC9pbmZv LXhyZWYuZWwKKysrIGIvbGlzcC9pbmZvLXhyZWYuZWwKQEAgLTQ1NCw3ICs0NTQsNyBAQCBh bmQgY2FuIHRha2UgYSBsb25nIHRpbWUuIgogICAgICAgICAoY29uZCAoKHN5bWJvbHAgbG9h ZCkKICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBjYXVzZSAocmVxdWlyZSBsb2Fk KQogICAgICAgICAgICAgICAgICAoZXJyb3IKLSAgICAgICAgICAgICAgICAgIChpbmZvLXhy ZWYtb3V0cHV0ICJTeW1ib2wgYCVzJzogY2Fubm90IHJlcXVpcmUgJyVzOiAlcyIKKyAgICAg ICAgICAgICAgICAgIChpbmZvLXhyZWYtb3V0cHV0ICJTeW1ib2wgYCVzJzogY2Fubm90IHJl cXVpcmUgYCVzJzogJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz eW1ib2wgbG9hZCBjYXVzZSkpKSkKICAgICAgICAgICAgICAgOzsgc2tpcCBpZiBwcmV2aW91 c2x5IGxvYWRlZAogICAgICAgICAgICAgICAoKGFzc29jIGxvYWQgbG9hZC1oaXN0b3J5KSkK ZGlmZiAtLWdpdCBhL2xpc3AvbWFpbC9lbWFjc2J1Zy5lbCBiL2xpc3AvbWFpbC9lbWFjc2J1 Zy5lbAppbmRleCBmNTQ4OTNmLi44ZTI4OTczIDEwMDY0NAotLS0gYS9saXNwL21haWwvZW1h Y3NidWcuZWwKKysrIGIvbGlzcC9tYWlsL2VtYWNzYnVnLmVsCkBAIC00MTcsNyArNDE3LDgg QEAgYW5kIHNlbmQgdGhlIG1haWwgYWdhaW4lcy4iCiAJCQkJCSAocmVnZXhwLXF1b3RlIChz eXN0ZW0tbmFtZSkpKQogCQkJCSBmcm9tKSkKIAkgICAgICAgKG5vdCAoeWVzLW9yLW5vLXAK LQkJICAgICAoZm9ybWF0ICJJcyAnJXMnIHJlYWxseSB5b3VyIGVtYWlsIGFkZHJlc3M/ICIg ZnJvbSkpKQorCQkgICAgIChmb3JtYXQtbWVzc2FnZSAiSXMgYCVzJyByZWFsbHkgeW91ciBl bWFpbCBhZGRyZXNzPyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJvbSkpKQogCSAgICAgICAoZXJyb3IgIlBsZWFzZSBlZGl0IHRoZSBGcm9tIGFkZHJlc3Mg YW5kIHRyeSBhZ2FpbiIpKSkpKSkKIAogCmRpZmYgLS1naXQgYS9saXNwL21oLWUvbWgtZS5l bCBiL2xpc3AvbWgtZS9taC1lLmVsCmluZGV4IDk2ZmU3ZDcuLmM3NTc5MjAgMTAwNjQ0Ci0t LSBhL2xpc3AvbWgtZS9taC1lLmVsCisrKyBiL2xpc3AvbWgtZS9taC1lLmVsCkBAIC0yOTAx LDExICsyOTAxLDExIEBAIFRoaXMgb3B0aW9uIGNvbnRhaW5zIHRoZSBVbml4IGNvbW1hbmQg bGluZSB3aGljaCBwZXJmb3JtcyB0aGUKIGFjdHVhbCBwcmludGluZyBmb3IgdGhlIFxcW21o LXByaW50LW1zZ10gY29tbWFuZC4gVGhlIHN0cmluZyBjYW4KIGNvbnRhaW4gb25lIGVzY2Fw ZSwgXCIlc1wiLCB3aGljaCBpcyByZXBsYWNlZCBieSB0aGUgbmFtZSBvZiB0aGUKIGZvbGRl ciBhbmQgdGhlIG1lc3NhZ2UgbnVtYmVyIGFuZCBpcyB1c2VmdWwgZm9yIHByaW50IGpvYiBu YW1lcy4KLUkgdXNlIFwibXBhZ2UgLWgnJXMnIC1iIExldHRlciAtSDFvZiAtbWxydGIgLVBc IiB3aGljaCBwcm9kdWNlcyBhCitJIHVzZSBcIm1wYWdlIC1oXFw9JyVzXFw9JyAtYiBMZXR0 ZXIgLUgxb2YgLW1scnRiIC1QXCIgd2hpY2ggcHJvZHVjZXMgYQogbmljZSBoZWFkZXIgYW5k IGFkZHMgYSBiaXQgb2YgbWFyZ2luIHNvIHRoZSB0ZXh0IGZpdHMgd2l0aGluIG15CiBwcmlu dGVyJ3MgbWFyZ2lucy4KIAotVGhpcyBvcHRpb25zIGlzIG5vdCB1c2VkIGJ5IHRoZSBjb21t YW5kcyBcXFttaC1wcy1wcmludC1tc2ddIG9yCitUaGlzIG9wdGlvbiBpcyBub3QgdXNlZCBi eSB0aGUgY29tbWFuZHMgXFxbbWgtcHMtcHJpbnQtbXNnXSBvcgogXFxbbWgtcHMtcHJpbnQt bXNnLWZpbGVdLiIKICAgOnR5cGUgJ3N0cmluZwogICA6Z3JvdXAgJ21oLXNob3cKZGlmZiAt LWdpdCBhL2xpc3AvbmV0L25ld3N0LXRyZWV2aWV3LmVsIGIvbGlzcC9uZXQvbmV3c3QtdHJl ZXZpZXcuZWwKaW5kZXggNGVlZjU4MC4uMGMyZGY4OCAxMDA2NDQKLS0tIGEvbGlzcC9uZXQv bmV3c3QtdHJlZXZpZXcuZWwKKysrIGIvbGlzcC9uZXQvbmV3c3QtdHJlZXZpZXcuZWwKQEAg LTk0MCw3ICs5NDAsNyBAQCBPcHRpb25hbCBhcmd1bWVudHMgQ0hBTkdFRC1XSURHRVQgYW5k IEVWRU5UIGFyZSBpZ25vcmVkLiIKICAgIlJldHVybiBwcm9wZXJ0aXplZCBjb3B5IG9mIHN0 cmluZyBUQUcuCiBPcHRpb25hbCBhcmd1bWVudCBOVU0tTkVXIGlzIHVzZWQgZm9yIGNob29z aW5nIGZhY2UsIG90aGVyCiBhcmd1bWVudHMgTlQtSUQsIEZFRUQsIGFuZCBWRkVFRCBhcmUg YWRkZWQgYXMgcHJvcGVydGllcy4iCi0gIDs7KG1lc3NhZ2UgIm5ld3N0aWNrZXItLXRyZWV2 aWV3LXByb3BlcnRpemUtdGFnICclcycgJXMiIGZlZWQgbnQtaWQpCisgIDs7KG1lc3NhZ2Ug Im5ld3N0aWNrZXItLXRyZWV2aWV3LXByb3BlcnRpemUtdGFnIGAlcycgJXMiIGZlZWQgbnQt aWQpCiAgIChsZXQgKChmYWNlICduZXdzdGlja2VyLXRyZWV2aWV3LWZhY2UpCiAgICAgICAg IChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgIChpZiAoYW5kIG51bS1uZXcgKD4g bnVtLW5ldyAwKSkKLS0gCjIuMS40Cgo= --------------020203030508030106020300--