From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Laurence Warne Newsgroups: gmane.emacs.bugs Subject: bug#57004: [PATCH] Fontify Escape Sequences in Python String and Byte Literals Date: Tue, 9 Aug 2022 09:42:57 +0100 Message-ID: References: <871qtt5xup.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000f5bf8b05e5caeb43" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21599"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 57004@debbugs.gnu.org To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Aug 09 10:44:12 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oLKqS-0005QN-HW for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 09 Aug 2022 10:44:12 +0200 Original-Received: from localhost ([::1]:59936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oLKqR-0004uc-BN for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 09 Aug 2022 04:44:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oLKqJ-0004tL-6r for bug-gnu-emacs@gnu.org; Tue, 09 Aug 2022 04:44:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:52733) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oLKqI-0001aj-KV for bug-gnu-emacs@gnu.org; Tue, 09 Aug 2022 04:44:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oLKqI-0001VI-E5 for bug-gnu-emacs@gnu.org; Tue, 09 Aug 2022 04:44:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Laurence Warne Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 09 Aug 2022 08:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 57004 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 57004-submit@debbugs.gnu.org id=B57004.16600345995717 (code B ref 57004); Tue, 09 Aug 2022 08:44:02 +0000 Original-Received: (at 57004) by debbugs.gnu.org; 9 Aug 2022 08:43:19 +0000 Original-Received: from localhost ([127.0.0.1]:42482 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oLKpa-0001U6-A5 for submit@debbugs.gnu.org; Tue, 09 Aug 2022 04:43:19 -0400 Original-Received: from mail-ua1-f42.google.com ([209.85.222.42]:41544) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oLKpW-0001Tp-Aj for 57004@debbugs.gnu.org; Tue, 09 Aug 2022 04:43:16 -0400 Original-Received: by mail-ua1-f42.google.com with SMTP id cd25so1924199uab.8 for <57004@debbugs.gnu.org>; Tue, 09 Aug 2022 01:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=O8MzsqGHbyCCmsVXhdaNaoHfPxasS84plRrZnW3/gHE=; b=WMKi5kNuHtFBMA538oKQWnf65bCGOgFrKrHI4AEkJagpdwtQpmmwQSZas/yJTPBrf9 jhkVGyyD7VJlt1yrbdFN+5//Cy0yRUNFjFU6gyqLr2zL1HH+SI8ba+q7cYcX4A9S1bEX V4ayGHt7aEZENWLwod00wBvhdZ/TaZ9B4aR0Dy6QT1Z27Nz3zvq5ON0R6ymGCp8tJ8dm DqeAi669QG/UwvQlfBgMQIC0QGei5/I2ejd5qjHzWej+JF70EFCRhSMZ6TBdFWMmu35x MTuaqIfYEDTatVQabHBHX6TOoM3MFN9Bhpf6Byix6NtzfEBl6baovdoscPEii7TypfDj cg5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=O8MzsqGHbyCCmsVXhdaNaoHfPxasS84plRrZnW3/gHE=; b=WYEr00rIxi61kO+yrkmTfq3fd1waW80v8s3ygAbvcjzTUsKGsYgcxzyBKQtTpJC8+1 kYVq6oS7UMOETBQq9B3mqoPIx/EDG70yxUDvgdRoZxzxHQ8Ll8jiYUgE6742i96Rn8e9 6/ZEkCSWbWsfU2+Fxcih/IUNW9Ww4JeHX+sQTuYU8tdbJiwVtHDRnGmIIwPK5FRuni2w oUvtniB/+l+TKUeI6nOPq++I+8bwS8JXx2mqF2U3DrwiPLquwduTjIxh3RxRSaFbJ0jD 3GK4VrwlGCSrIyeOGo95Ere6Ykq253NwZ8umNUXnwHQ/qZTbcU6eMzkeh9EsNMr3o+33 qcIw== X-Gm-Message-State: ACgBeo1J0UvgTzy04NDyTeI/S1G3N+Dw0XpV3MmkfVWCWgqqClTmweC1 y8jtRZuabw4h9bKJxaVjcRap5bPLWgLhqpAqgbyigH6Znu/g/w== X-Google-Smtp-Source: AA6agR6yh9vjRVYfO7umEejfIsQOxLvPD8CaA46K1PDKqLqzIzt65MliGEfaGFRgYU/Qp5rygrhNyseklG+cirf6Ilc= X-Received: by 2002:ab0:70ac:0:b0:384:de3f:b7 with SMTP id q12-20020ab070ac000000b00384de3f00b7mr9217204ual.79.1660034588425; Tue, 09 Aug 2022 01:43:08 -0700 (PDT) In-Reply-To: <871qtt5xup.fsf@gnus.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:239139 Archived-At: --000000000000f5bf8b05e5caeb43 Content-Type: multipart/alternative; boundary="000000000000f5bf8805e5caeb41" --000000000000f5bf8805e5caeb41 Content-Type: text/plain; charset="UTF-8" Great, thanks. I saw a few bugs playing around a bit more: 1) Consecutive escape codes not fontified: b'\x12\x23' # Here only "\x12" would be fontified 2) Multi-line bytes literals fontified as string literals: b'''\x12 \777 \1\23 \u1234''' # Here '\u1234" would be (incorrectly) fontified 3) Octal escape codes may be one to three characters instead of always three ( https://docs.python.org/3/reference/lexical_analysis.html#escape-sequences): "\1 \12 \123" # Here only "\123" would be fontified I've attached a patch which fixes the above and adds a new test. The new test (tests different combinations of multi-line literals) makes up the majority of the diff. Thanks, Laurence On Sat, Aug 6, 2022 at 2:02 PM Lars Ingebrigtsen wrote: > Laurence Warne writes: > > > Hi, this patch implements escape code syntax highlighting within string > an bytes > > literals for python-mode (described at > > > https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals > ) > > similar to how they are highlighted by https://pygments.org. > > Thanks; pushed to Emacs 29. > > --000000000000f5bf8805e5caeb41 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Great, thanks.=C2=A0 I saw a few bugs playing around = a bit more:

1) Consecutive escape codes not fontif= ied:
b'\x12\x23'=C2=A0 # Here only "\x12" w= ould be fontified
2) Multi-line bytes literals fontified as strin= g literals:
b'''\x12 \777 \1\23 \u1234'''= =C2=A0 # Here '\u1234" would be (incorrectly) fontified
= 3) Octal escape codes may be one to three characters instead of always thre= e (https://docs.python.org/3/reference/lexical_analysis.html#es= cape-sequences):
"\1 \12 \123"=C2=A0 # Here only &q= uot;\123" would be fontified

I've att= ached a patch which fixes the above and adds a new test.=C2=A0 The new test= (tests different combinations of multi-line literals) makes up the majorit= y of the diff.

Thanks, Laurence

On Sa= t, Aug 6, 2022 at 2:02 PM Lars Ingebrigtsen <larsi@gnus.org> wrote:
Laurence Warne <laurencewarne@gmail.com> writes:

> Hi, this patch implements escape code syntax highlighting within strin= g an bytes
> literals for python-mode (described at
> https://docs= .python.org/3/reference/lexical_analysis.html#string-and-bytes-literals= )
> similar to how they are highlighted by https://pygments.org.

Thanks; pushed to Emacs 29.

--000000000000f5bf8805e5caeb41-- --000000000000f5bf8b05e5caeb43 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-python-escape-code-fontification-for-multi-line-.patch" Content-Disposition: attachment; filename="0001-Fix-python-escape-code-fontification-for-multi-line-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l6lxkoh40 RnJvbSA5NWNmNDU4MGQyMzgxNDgwNzBmN2U4MGEyMDc4ZTE2OTA3OTA2NGFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW5jZSBXYXJuZSA8bGF1cmVuY2V3YXJuZUBnbWFpbC5j b20+CkRhdGU6IFR1ZSwgOSBBdWcgMjAyMiAwODozMzoxOCArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBweXRob24gZXNjYXBlIGNvZGUgZm9udGlmaWNhdGlvbiBmb3IgbXVsdGktbGluZSBsaXRl cmFscwoKKiBsaXNwL3Byb2dtb2Rlcy9weXRob24uZWwgKHB5dGhvbi0tc3RyaW5nLWJ5dGVzLWxp dGVyYWwtbWF0Y2hlcik6IEdvCmJhY2t3YXJkIG9uZSBjaGFyIGFmdGVyIGEgbWF0Y2ggc28gdGhh dCBjb25zZWN1dGl2ZSBlc2NhcGUgY29kZXMgYXJlCmhpZ2hsaWdodGVkCihweXRob24tLW5vdC1y YXctc3RyaW5nLWxpdGVyYWwtc3RhcnQtcmVnZXhwKTogTWFrZSByZWd1bGFyIGV4cHJlc3Npb24K bW9yZSBjb21wcmVoZW5zaXZlLCBzbyBtdWx0aS1saW5lIGJ5dGVzIGxpdGVyYWxzIGFyZSBub3Qg Y2F1Z2h0CihweXRob24tcngpOiBBY2NlcHQgb25lIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBpbiBv Y3RhbCBlc2NhcGUgY29kZXMKaW5zdGVhZCBvZiBhbHdheXMgdGhyZWUKLS0tCiBsaXNwL3Byb2dt b2Rlcy9weXRob24uZWwgICAgICAgICAgICB8IDIyICsrKystLS0KIHRlc3QvbGlzcC9wcm9nbW9k ZXMvcHl0aG9uLXRlc3RzLmVsIHwgOTUgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDIg ZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2xpc3AvcHJvZ21vZGVzL3B5dGhvbi5lbCBiL2xpc3AvcHJvZ21vZGVzL3B5dGhvbi5l bAppbmRleCA1ZWRkNmU3ZGY1Li45NmY5ZDE0ODMyIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rl cy9weXRob24uZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsCkBAIC00MzIsNyArNDMy LDcgQEAgcHl0aG9uLXJ4CiAgICAgICAgICAgICAgKHNlcSAobm90ICJcXCIpCiAgICAgICAgICAg ICAgICAgICAoZ3JvdXAgKG9yICJcXFxcIiAiXFwnIiAiXFxhIiAiXFxiIiAiXFxmIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiXFxuIiAiXFxyIiAiXFx0IiAiXFx2IgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2VxICJcXCIgKD0gMyAoaW4gIjAtNyIpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNlcSAiXFwiICgqKiAxIDMgKGluICIwLTciKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEgIlxceCIgaGV4IGhleCkpKSkpCiAgICAgICAg ICAgICAoc3RyaW5nLWVzY2FwZS1zZXF1ZW5jZQogICAgICAgICAgICAgIChvciBieXRlcy1lc2Nh cGUtc2VxdWVuY2UKQEAgLTU1Niw3ICs1NTYsMTQgQEAgcHl0aG9uLS1ub3QtcmF3LWJ5dGVzLWxp dGVyYWwtc3RhcnQtcmVnZXhwCiAgICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyB0aGUg c3RhcnQgb2YgYSBub3QtcmF3IGJ5dGVzIGxpdGVyYWwuIikKIAogKGRlZmNvbnN0IHB5dGhvbi0t bm90LXJhdy1zdHJpbmctbGl0ZXJhbC1zdGFydC1yZWdleHAKLSAgKHJ4IChvciBib3MgKG5vdCBh bG51bSkpICg/IChvciAidSIgIlUiICJGIiAiZiIpKSAob3IgIlwiIiAiXCJcIlwiIiAiJyIgIicn JyIpIGVvcykKKyAgKHJ4IGJvcyAob3IKKyAgICAgICAgICAgOzsgTXVsdGktbGluZSBzdHJpbmcg bGl0ZXJhbHMKKyAgICAgICAgICAgKHNlcSAoPyAoPyAobm90IGFsbnVtKSkgKG9yICJ1IiAiVSIg IkYiICJmIikpIChvciAiXCJcIlwiIiAiJycnIikpCisgICAgICAgICAgIChzZXEgKD8gYW55Y2hh cikgKG5vdCBhbG51bSkgKG9yICJcIlwiXCIiICInJyciKSkKKyAgICAgICAgICAgOzsgU2luZ2xl IGxpbmUgc3RyaW5nIGxpdGVyYWxzCisgICAgICAgICAgIChzZXEgKD8gKCoqIDAgMiBhbnljaGFy KSAobm90IGFsbnVtKSkgKG9yICJ1IiAiVSIgIkYiICJmIikgKG9yICInIiAiXCIiKSkKKyAgICAg ICAgICAgKHNlcSAoPyAoKiogMCAzIGFueWNoYXIpIChub3QgKGFueSAiJ1wiIiBhbG51bSkpKSAo b3IgIiciICJcIiIpKSkKKyAgICAgIGVvcykKICAgIkEgcmVndWxhciBleHByZXNzaW9uIG1hdGNo aW5nIHRoZSBzdGFydCBvZiBhIG5vdC1yYXcgc3RyaW5nIGxpdGVyYWwuIikKIAogKGRlZnVuIHB5 dGhvbi0tc3RyaW5nLWJ5dGVzLWxpdGVyYWwtbWF0Y2hlciAocmVnZXhwIHN0YXJ0LXJlZ2V4cCkK QEAgLTU2NSwxMSArNTcyLDEyIEBAIHB5dGhvbi0tc3RyaW5nLWJ5dGVzLWxpdGVyYWwtbWF0Y2hl cgogICAgIChjbC1sb29wIGZvciByZXN1bHQgPSAocmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwIGxp bWl0IHQpCiAgICAgICAgICAgICAgZm9yIHJlc3VsdC12YWxpZCA9IChhbmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxldCogKChwb3MgKG50aCA4IChzeW50YXgtcHBzcykpKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChiZWZvcmUtcXVvdGUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAoLSBwb3MgNSkg KHBvaW50LW1pbikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bWluICgrIHBvcyAxKSAocG9pbnQtbWF4KSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuLWxldCogKChwb3MgKG50aCA4IChzeW50YXgtcHBzcykpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZm9yZS1xdW90ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1heCAoLSBwb3MgNCkgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gKCsgcG9zIDEpIChwb2ludC1tYXgpKSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFja3dhcmQtY2hhcikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wIHN0YXJ0LXJlZ2V4 cCBiZWZvcmUtcXVvdGUpKSkKICAgICAgICAgICAgICB1bnRpbCAob3IgKG5vdCByZXN1bHQpIHJl c3VsdC12YWxpZCkKICAgICAgICAgICAgICBmaW5hbGx5IHJldHVybiAoYW5kIHJlc3VsdC12YWxp ZCByZXN1bHQpKSkpCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvcHJvZ21vZGVzL3B5dGhvbi10ZXN0 cy5lbCBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVsCmluZGV4IGUzYzhkNTU1 NGEuLmQzMDMwNTBmYWQgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRl c3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVsCkBAIC00MDcs NiArNDA3LDgxIEBAIHB5dGhvbi1mb250LWxvY2stZXNjYXBlLXNlcXVlbmNlLXN0cmluZy1uZXds aW5lCiAgICAgICgzMSAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQogICAgICAoMzMgLiBmb250 LWxvY2stc3RyaW5nLWZhY2UpKSkpCiAKKyhlcnQtZGVmdGVzdCBweXRob24tZm9udC1sb2NrLWVz Y2FwZS1zZXF1ZW5jZS1tdWx0aWxpbmUtc3RyaW5nICgpCisgIChweXRob24tdGVzdHMtYXNzZXJ0 LWZhY2VzCisgICAobGV0ICgoZXNjYXBlLXNlcXVlbmNlcyAiXFx4MTIgXDEyMyBcXG4gXFx1MTIz NCBcXFUwMDAxMDM0OCBcXE57UGx1cy1NaW51cyBTaWdufSIpKQorICAgICAoY2wtbG9vcCBmb3Ig c3RyaW5nLXByZWZpeCBpbiAnKCIiICJmIiAicmYiICJmciIgInIiICJyYiIgImJyIiAiYiIpCisg ICAgICAgICAgICAgIGNvbmNhdCAoY2wtbG9vcCBmb3IgcXVvdGUtc3RyaW5nIGluICcoIlwiXCJc IiIgIicnJyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXQgKGNvbmNhdCBz dHJpbmctcHJlZml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBxdW90ZS1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVzY2FwZS1zZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHF1b3RlLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlxuIikpKSkKKyAgICcoKDEgLiBmb250LWxvY2stZG9jLWZhY2UpCisgICAg ICg0IC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICg4IC4gZm9udC1sb2NrLWRvYy1m YWNlKQorICAgICAoMTEgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDEzIC4gZm9u dC1sb2NrLWRvYy1mYWNlKQorICAgICAoMTQgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAg ICAgKDIwIC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICAoMjEgLiBmb250LWxvY2stY29uc3Rh bnQtZmFjZSkKKyAgICAgKDMxIC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICAoMzIgLiBmb250 LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDUxIC4gZm9udC1sb2NrLWRvYy1mYWNlKSAoNTQp CisgICAgICg1NSAuIGZvbnQtbG9jay1kb2MtZmFjZSkKKyAgICAgKDU4IC4gZm9udC1sb2NrLWNv bnN0YW50LWZhY2UpCisgICAgICg2MiAuIGZvbnQtbG9jay1kb2MtZmFjZSkKKyAgICAgKDY1IC4g Zm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICg2NyAuIGZvbnQtbG9jay1kb2MtZmFjZSkK KyAgICAgKDY4IC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICg3NCAuIGZvbnQtbG9j ay1kb2MtZmFjZSkKKyAgICAgKDc1IC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICg4 NSAuIGZvbnQtbG9jay1kb2MtZmFjZSkKKyAgICAgKDg2IC4gZm9udC1sb2NrLWNvbnN0YW50LWZh Y2UpCisgICAgICgxMDUgLiBmb250LWxvY2stZG9jLWZhY2UpICgxMDgpCisgICAgICgxMTAgLiBm b250LWxvY2stc3RyaW5nLWZhY2UpCisgICAgICgxMTMgLiBmb250LWxvY2stY29uc3RhbnQtZmFj ZSkKKyAgICAgKDExNyAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICAgKDEyMCAuIGZvbnQt bG9jay1jb25zdGFudC1mYWNlKQorICAgICAoMTIyIC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKQor ICAgICAoMTIzIC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICgxMjkgLiBmb250LWxv Y2stc3RyaW5nLWZhY2UpCisgICAgICgxMzAgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAg ICAgKDE0MCAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICAgKDE0MSAuIGZvbnQtbG9jay1j b25zdGFudC1mYWNlKQorICAgICAoMTYwIC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKSAoMTYzKQor ICAgICAoMTY1IC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgICAoMTY4IC4gZm9udC1sb2Nr LWNvbnN0YW50LWZhY2UpCisgICAgICgxNzIgLiBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAg ICgxNzUgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDE3NyAuIGZvbnQtbG9jay1z dHJpbmctZmFjZSkKKyAgICAgKDE3OCAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICAo MTg0IC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgICAoMTg1IC4gZm9udC1sb2NrLWNvbnN0 YW50LWZhY2UpCisgICAgICgxOTUgLiBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAgICgxOTYg LiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDIxNSAuIGZvbnQtbG9jay1zdHJpbmct ZmFjZSkgKDIxOCkKKyAgICAgKDIyMSAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkgKDI3NCkKKyAg ICAgKDI3NyAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkgKDMzMCkKKyAgICAgKDMzMyAuIGZvbnQt bG9jay1zdHJpbmctZmFjZSkgKDM4NikKKyAgICAgKDM4OSAuIGZvbnQtbG9jay1zdHJpbmctZmFj ZSkgKDQ0MikKKyAgICAgKDQ0NCAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkgKDQ5NykKKyAgICAg KDQ5OSAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkgKDU1MikKKyAgICAgKDU1NSAuIGZvbnQtbG9j ay1zdHJpbmctZmFjZSkgKDYwOCkKKyAgICAgKDYxMSAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkg KDY2NCkKKyAgICAgKDY2NyAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkgKDcyMCkKKyAgICAgKDcy MyAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkgKDc3NikKKyAgICAgKDc3OCAuIGZvbnQtbG9jay1z dHJpbmctZmFjZSkKKyAgICAgKDc4MSAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICAo Nzg1IC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgICAoNzg4IC4gZm9udC1sb2NrLWNvbnN0 YW50LWZhY2UpCisgICAgICg3OTAgLiBmb250LWxvY2stc3RyaW5nLWZhY2UpICg4MzEpCisgICAg ICg4MzMgLiBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAgICg4MzYgLiBmb250LWxvY2stY29u c3RhbnQtZmFjZSkKKyAgICAgKDg0MCAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICAgKDg0 MyAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICAoODQ1IC4gZm9udC1sb2NrLXN0cmlu Zy1mYWNlKSAoODg2KSkpKQorCiAoZXJ0LWRlZnRlc3QgcHl0aG9uLWZvbnQtbG9jay1lc2NhcGUt c2VxdWVuY2UtYnl0ZXMtbmV3bGluZSAoKQogICAocHl0aG9uLXRlc3RzLWFzc2VydC1mYWNlcwog ICAgImInXFxuJwpAQCAtNDIxLDE5ICs0OTYsMjMgQEAgcHl0aG9uLWZvbnQtbG9jay1lc2NhcGUt c2VxdWVuY2UtYnl0ZXMtbmV3bGluZQogCiAoZXJ0LWRlZnRlc3QgcHl0aG9uLWZvbnQtbG9jay1l c2NhcGUtc2VxdWVuY2UtaGV4LW9jdGFsICgpCiAgIChweXRob24tdGVzdHMtYXNzZXJ0LWZhY2Vz Ci0gICAiYidcXHgxMiBcXDc3NycKLSdcXHgxMiBcXDc3NyciCisgICAiYidcXHgxMiBcXDc3NyBc XDFcXDIzJworJ1xceDEyIFxcNzc3IFxcMVxcMjMnIgogICAgJygoMSkKICAgICAgKDIgLiBmb250 LWxvY2stZG9jLWZhY2UpCiAgICAgICgzIC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCiAgICAg ICg3IC4gZm9udC1sb2NrLWRvYy1mYWNlKQogICAgICAoOCAuIGZvbnQtbG9jay1jb25zdGFudC1m YWNlKQotICAgICAoMTIgLiBmb250LWxvY2stZG9jLWZhY2UpICgxMykKLSAgICAgKDE0IC4gZm9u dC1sb2NrLWRvYy1mYWNlKQotICAgICAoMTUgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKLSAg ICAgKDE5IC4gZm9udC1sb2NrLWRvYy1mYWNlKQotICAgICAoMjAgLiBmb250LWxvY2stY29uc3Rh bnQtZmFjZSkKLSAgICAgKDI0IC4gZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorICAgICAoMTIgLiBm b250LWxvY2stZG9jLWZhY2UpCisgICAgICgxMyAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQor ICAgICAoMTggLiBmb250LWxvY2stZG9jLWZhY2UpICgxOSkKKyAgICAgKDIwIC4gZm9udC1sb2Nr LWRvYy1mYWNlKQorICAgICAoMjEgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDI1 IC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICAoMjYgLiBmb250LWxvY2stY29uc3RhbnQtZmFj ZSkKKyAgICAgKDMwIC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICAoMzEgLiBmb250LWxvY2st Y29uc3RhbnQtZmFjZSkKKyAgICAgKDM2IC4gZm9udC1sb2NrLWRvYy1mYWNlKSkpKQogCiAoZXJ0 LWRlZnRlc3QgcHl0aG9uLWZvbnQtbG9jay1lc2NhcGUtc2VxdWVuY2UtdW5pY29kZSAoKQogICAo cHl0aG9uLXRlc3RzLWFzc2VydC1mYWNlcwotLSAKMi4zMC4yCgo= --000000000000f5bf8b05e5caeb43--