From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Kangas Newsgroups: gmane.emacs.devel Subject: Re: Moving kbd to subr.el Date: Wed, 13 Oct 2021 15:28:36 -0700 Message-ID: References: <20211004081724.6281.11798@vcs0.savannah.gnu.org> <20211004081727.4F24921048@vcs0.savannah.gnu.org> <871r4qcs8s.fsf@gnus.org> <87o87ubcnl.fsf@gnus.org> <87h7dm9en7.fsf@gnus.org> <87czoa9e7p.fsf@gnus.org> <878ryxakv9.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000b31cb805ce437ba4" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33824"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Oct 14 00:29:57 2021 Return-path: Envelope-to: ged-emacs-devel@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 1maml2-0008XX-I6 for ged-emacs-devel@m.gmane-mx.org; Thu, 14 Oct 2021 00:29:56 +0200 Original-Received: from localhost ([::1]:46090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1maml1-00016w-IL for ged-emacs-devel@m.gmane-mx.org; Wed, 13 Oct 2021 18:29:55 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:53966) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mamjo-0007eG-SD for emacs-devel@gnu.org; Wed, 13 Oct 2021 18:28:40 -0400 Original-Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]:38414) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mamjm-0002wM-FA for emacs-devel@gnu.org; Wed, 13 Oct 2021 18:28:40 -0400 Original-Received: by mail-pg1-x533.google.com with SMTP id e65so1287286pgc.5 for ; Wed, 13 Oct 2021 15:28:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:in-reply-to:references:mime-version:date:message-id:subject:to :cc; bh=sghC/YIi0CtXhMCxxGmfi6i1hymWd3MEH6me5VnGE6k=; b=pr8SHNQQYv0RhSF1fkAL+1AUVS9kD+49RCkx9E3gwaQghYAqnDlvbiwntIeEqabWj6 im05nds98YASNoxk6vAv2FN2F06Ib8oYchBtnNq7DY11R87+JYG8vdwkyu5yda1+e8ww 2a2OCMfx+3jWlys7MHbrtFsI/AfL3gnV6128BqasY1AtOlzAFwjOFFb6duaGexGwpxyn 7m7WDnmRfrDaOxlN1Rh/Dd2dREi8thQXAp909WHu6myKy73569ylUmxDi51tLUpKgcpz Ot/WZkm9hkIi0ZxMTaKypUBTQcuDqfU1eQd226RtxKeqsn/MX8MSjRThzRwPvOw72OsY wVRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=sghC/YIi0CtXhMCxxGmfi6i1hymWd3MEH6me5VnGE6k=; b=mOv3vgSqfIaqxZC33xfbh9Eob0qkk4bJYTe21uUKb2z4dWd68+rAwk4ZTVLLuTxiOe eGs4d9VKfNng7ftgSPvBdk0MH2qqInRlEjLh4XWEB/XGODqinA+v5k8rIXkZ1+ZPlnOZ 8f1iyExH7GP9hco9nEEtWW5idTuPeRd6+zj9dSOWrHC3OwiCXzEo2ZvLIB3jprij2wqj MB9Qw9YuoF1PQ/D45c82K57IrxMBgp4MSA7TT09Ktbzd+iqGtvXcbhgU3EqfEiWzdWvK cPSGC2ngmsC53s92z2nZRvqDj6OVaFRINokckaOGWZOIQNi7o7iiGnvzZeht+CqY6zsC 31hw== X-Gm-Message-State: AOAM533heRV4GOYjdhKAdjfYZa5xvkUxrU52Yj5/bxyLfX+ND7g1Ubbd dODRbjnTGFpp+66kvbIVHguHPZAgwHGhpJ+upKg= X-Google-Smtp-Source: ABdhPJx1zIuM3GkW+aKWtNhf1C8ar54vnQPTCjaNI496Iu3x/EpjA8YocRMF01ASbTEHGz9nDg4t93CBgFQywuxJqVQ= X-Received: by 2002:a63:4717:: with SMTP id u23mr1438231pga.359.1634164117011; Wed, 13 Oct 2021 15:28:37 -0700 (PDT) Original-Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 13 Oct 2021 15:28:36 -0700 In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=stefankangas@gmail.com; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:276940 Archived-At: --000000000000b31cb805ce437ba4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Stefan Kangas writes: > I've attached a quick proof-of-concept of moving the kbd implementation > to subr.el. With this, all the tests I have assembled so far pass and > this bootstraps. It was mostly just a case of ripping out the calls to > cl-lib functions. Here's an updated version of this, that bootstraps like before. Besides studying the code more closely to convince myself that it's doing the same thing as before, I've also pushed a more complete test suite for 'kbd' and 'edmacro-parse-keys' to master. Thanks to everyone who commented on the first version of this patch and helped with the tests. This patch (hopefully) brings no functional changes, and so should not really need any update of any documentation, unless it was in some way already lacking before. The only difference here should be that we can now use `kbd' in preloaded code. --- There is one snag in the way this has always worked: 'kbd' currently supports everything that 'edmacro-parse-keys' does, including this part: * Double angle brackets enclose command names: <> is shorthand for M-x next-line RET. * Finally, REM or ;; causes the rest of the line to be ignored as a comment. Any word may be prefixed by a multiplier in the form of a decimal number and =E2=80=98*=E2=80=99: 3* =3D ,= and 10*foo =3D foofoofoofoofoofoofoofoofoofoo. This does not seem to make sense when it comes to using `kbd' for keybindings. However, I guess this has not been a problem over the years, and should better be left alone: maybe some users are relying on it at this point. I mostly just wanted to bring it to everyone's attention. --000000000000b31cb805ce437ba4 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Make-kbd-usable-during-bootstrap.patch" Content-Disposition: attachment; filename="0001-Make-kbd-usable-during-bootstrap.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 56f5fbcc6423eb78_0.1 RnJvbSBlNzMyYWVkNzBmNjFiNjgyMmYzNzk4NzMxMmQ1NWI4ZDZhMGJlMjIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogV2VkLCAxMyBPY3QgMjAyMSAwMTo0MDoxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBN YWtlIGtiZCB1c2FibGUgZHVyaW5nIGJvb3RzdHJhcAoKKiBsaXNwL3N1YnIuZWwgKGtiZCk6IE1h a2Uga2JkIHVzYWJsZSBkdXJpbmcgYm9vdHN0cmFwIGJ5IGNvcHlpbmcgdGhlCmRlZmluaXRpb24g b2YgJ3JlYWQta2JkLW1hY3JvJyBpbnRvIGl0LCBhbmQgYWRqdXN0aW5nIGl0IHRvIG5vIGxvbmdl cgp1c2UgQ0wtTGliIGZ1bmN0aW9ucy4KLS0tCiBsaXNwL3N1YnIuZWwgfCAxMTAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMTA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9z dWJyLmVsIGIvbGlzcC9zdWJyLmVsCmluZGV4IGExODU4ZTU5MTEuLjFjM2RjMjZhNGQgMTAwNjQ0 Ci0tLSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNwL3N1YnIuZWwKQEAgLTkzMywxMSArOTMzLDEx NSBAQCBrYmQKIGBlZG1hY3JvLW1vZGUnKS4KIAogRm9yIGFuIGFwcHJveGltYXRlIGludmVyc2Ug b2YgdGhpcywgc2VlIGBrZXktZGVzY3JpcHRpb24nLiIKLSAgOzsgRG9uJ3QgdXNlIGEgZGVmYWxp YXMsIHNpbmNlIHRoZSBgcHVyZScgcHJvcGVydHkgaXMgdHJ1ZSBvbmx5IGZvcgotICA7OyB0aGUg Y2FsbGluZyBjb252ZW50aW9uIG9mIGBrYmQnLgogICAoZGVjbGFyZSAocHVyZSB0KSAoc2lkZS1l ZmZlY3QtZnJlZSB0KSkKICAgOzsgQSBwdXJlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHByZXNl cnZlIHRoZSBtYXRjaCBkYXRhLgotICAoc2F2ZS1tYXRjaC1kYXRhIChyZWFkLWtiZC1tYWNybyBr ZXlzKSkpCisgIChzYXZlLW1hdGNoLWRhdGEKKyAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCBu aWwpCisgICAgICAgICAgKGxlbiAobGVuZ3RoIGtleXMpKSA7IFdlIHdvbid0IGFsdGVyIGtleXMg aW4gdGhlIGxvb3AgYmVsb3cuCisgICAgICAgICAgKHBvcyAwKQorICAgICAgICAgIChyZXMgW10p KQorICAgICAgKHdoaWxlIChhbmQgKDwgcG9zIGxlbikKKyAgICAgICAgICAgICAgICAgIChzdHJp bmctbWF0Y2ggIlteIFx0XG5cZl0rIiBrZXlzIHBvcykpCisgICAgICAgIChsZXQqICgod29yZC1i ZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgICAgICh3b3JkLWVuZCAobWF0Y2gt ZW5kIDApKQorICAgICAgICAgICAgICAgKHdvcmQgKHN1YnN0cmluZyBrZXlzIHdvcmQtYmVnIGxl bikpCisgICAgICAgICAgICAgICAodGltZXMgMSkKKyAgICAgICAgICAgICAgIGtleSkKKyAgICAg ICAgICA7OyBUcnkgdG8gY2F0Y2ggZXZlbnRzIG9mIHRoZSBmb3JtICI8YXMgZGY+Ii4KKyAgICAg ICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFxgPFteIDw+XHRcblxmXVtePlx0XG5cZl0qPiIgd29y ZCkKKyAgICAgICAgICAgICAgKHNldHEgd29yZCAobWF0Y2gtc3RyaW5nIDAgd29yZCkKKyAgICAg ICAgICAgICAgICAgICAgcG9zICgrIHdvcmQtYmVnIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAg ICAgKHNldHEgd29yZCAoc3Vic3RyaW5nIGtleXMgd29yZC1iZWcgd29yZC1lbmQpCisgICAgICAg ICAgICAgICAgICBwb3Mgd29yZC1lbmQpKQorICAgICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2gg IlxcKFswLTldK1xcKVxcKi4iIHdvcmQpCisgICAgICAgICAgICAoc2V0cSB0aW1lcyAoc3RyaW5n LXRvLW51bWJlciAoc3Vic3RyaW5nIHdvcmQgMCAobWF0Y2gtZW5kIDEpKSkpCisgICAgICAgICAg ICAoc2V0cSB3b3JkIChzdWJzdHJpbmcgd29yZCAoMSsgKG1hdGNoLWVuZCAxKSkpKSkKKyAgICAg ICAgICAoY29uZCAoKHN0cmluZy1tYXRjaCAiXjw8Lis+PiQiIHdvcmQpCisgICAgICAgICAgICAg ICAgIChzZXRxIGtleSAodmNvbmNhdCAoaWYgKGVxIChrZXktYmluZGluZyBbP1xNLXhdKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhlY3V0ZS1leHRlbmRl ZC1jb21tYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs/XE0t eF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChjYXIgKHdoZXJl LWlzLWludGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFs/XE0teF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHN1YnN0cmluZyB3b3JkIDIgLTIpICJcciIpKSkKKyAgICAgICAgICAgICAgICAo KGFuZCAoc3RyaW5nLW1hdGNoICJeXFwoXFwoW0FDSE1zU10tXFwpKlxcKTxcXCguK1xcKT4kIiB3 b3JkKQorICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgICAgICAg ICAgKHNldHEgd29yZCAoY29uY2F0IChtYXRjaC1zdHJpbmcgMSB3b3JkKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMyB3b3JkKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChzdHJpbmctbWF0Y2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJcXDxcXChOVUxcXHxSRVRcXHxMRkRcXHxFU0NcXHxTUENcXHxERUxc XCkkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCkpKSkKKyAgICAgICAgICAg ICAgICAgKHNldHEga2V5IChsaXN0IChpbnRlcm4gd29yZCkpKSkKKyAgICAgICAgICAgICAgICAo KG9yIChlcXVhbCB3b3JkICJSRU0iKSAoc3RyaW5nLW1hdGNoICJeOzsiIHdvcmQpKQorICAgICAg ICAgICAgICAgICAoc2V0cSBwb3MgKHN0cmluZy1tYXRjaCAiJCIga2V5cyBwb3MpKSkKKyAgICAg ICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAobGV0ICgob3JpZy13b3JkIHdvcmQpIChw cmVmaXggMCkgKGJpdHMgMCkpCisgICAgICAgICAgICAgICAgICAgKHdoaWxlIChzdHJpbmctbWF0 Y2ggIl5bQUNITXNTXS0uIiB3b3JkKQorICAgICAgICAgICAgICAgICAgICAgKHNldHEgYml0cyAo KyBiaXRzIChjZHIgKGFzc3EgKGFyZWYgd29yZCAwKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoP0EgLiA/XEEtXF5AKSAoP0MgLiA/XEMtXF5A KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo P0ggLiA/XEgtXF5AKSAoP00gLiA/XE0tXF5AKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoP3MgLiA/XHMtXF5AKSAoP1MgLiA/XFMtXF5AKSkp KSkpCisgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwcmVmaXggKCsgcHJlZml4IDIpKQorICAg ICAgICAgICAgICAgICAgICAgKHNldHEgd29yZCAoc3Vic3RyaW5nIHdvcmQgMikpKQorICAgICAg ICAgICAgICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIl5cXF4uJCIgd29yZCkKKyAgICAgICAg ICAgICAgICAgICAgIChzZXRxIGJpdHMgKCsgYml0cyA/XEMtXF5AKSkKKyAgICAgICAgICAgICAg ICAgICAgIChzZXRxIHByZWZpeCAoMSsgcHJlZml4KSkKKyAgICAgICAgICAgICAgICAgICAgIChz ZXRxIHdvcmQgKHN1YnN0cmluZyB3b3JkIDEpKSkKKyAgICAgICAgICAgICAgICAgICAobGV0ICgo Zm91bmQgKGFzc29jIHdvcmQgJygoIk5VTCIgLiAiXDAiKSAoIlJFVCIgLiAiXHIiKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiTEZEIiAuICJcbiIpICgi VEFCIiAuICJcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCJFU0MiIC4gIlxlIikgKCJTUEMiIC4gIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgiREVMIiAuICJcMTc3IikpKSkpCisgICAgICAgICAgICAg ICAgICAgICAod2hlbiBmb3VuZCAoc2V0cSB3b3JkIChjZHIgZm91bmQpKSkpCisgICAgICAgICAg ICAgICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaCAiXlxcXFxbMC03XSskIiB3b3JkKQorICAgICAg ICAgICAgICAgICAgICAgKGxldCAoKG4gMCkpCisgICAgICAgICAgICAgICAgICAgICAgIChkb2xp c3QgKGNoIChjZHIgKHN0cmluZy10by1saXN0IHdvcmQpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBuICgrICgqIG4gOCkgY2ggLTQ4KSkpCisgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIHdvcmQgKHZlY3RvciBuKSkpKQorICAgICAgICAgICAgICAgICAgIChjb25kICgoPSBi aXRzIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGtleSB3b3JkKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoKGFuZCAoPSBiaXRzID9cTS1cXkApIChzdHJpbmdwIHdvcmQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiXi0/WzAtOV0r JCIgd29yZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGtleSAobWFwY2FyIChs YW1iZGEgKHgpICgrIHggYml0cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChhcHBlbmQgd29yZCBuaWwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg KCgvPSAobGVuZ3RoIHdvcmQpIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAi JXMgbXVzdCBwcmVmaXggYSBzaW5nbGUgY2hhcmFjdGVyLCBub3QgJXMiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIG9yaWctd29yZCAwIHByZWZpeCkgd29yZCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgKC89IChsb2dhbmQgYml0cyA/XEMtXF5A KSAwKSAoc3RyaW5ncCB3b3JkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFdl IHVzZWQgdG8gYWNjZXB0IC4gYW5kID8gaGVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBidXQgLiBpcyBzaW1wbHkgd3JvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgYW5kIEMtPyBpcyBub3QgdXNlZCAod2UgdXNlIERFTCBpbnN0ZWFkKS4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICJbQC1fYS16XSIgd29yZCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGtleSAobGlzdCAoKyBiaXRzICgtID9c Qy1cXkApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9n YW5kIChhcmVmIHdvcmQgMCkgMzEpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGtleSAobGlzdCAoKyBiaXRzIChhcmVmIHdv cmQgMCkpKSkpKSkpKQorICAgICAgICAgICh3aGVuIGtleQorICAgICAgICAgICAgKGRvbGlzdCAo XyAobnVtYmVyLXNlcXVlbmNlIDEgdGltZXMpKQorICAgICAgICAgICAgICAoc2V0cSByZXMgKHZj b25jYXQgcmVzIGtleSkpKSkpKQorICAgICAgKHdoZW4gKGFuZCAoPj0gKGxlbmd0aCByZXMpIDQp CisgICAgICAgICAgICAgICAgIChlcSAoYXJlZiByZXMgMCkgP1xDLXgpCisgICAgICAgICAgICAg ICAgIChlcSAoYXJlZiByZXMgMSkgP1woKQorICAgICAgICAgICAgICAgICAoZXEgKGFyZWYgcmVz ICgtIChsZW5ndGggcmVzKSAyKSkgP1xDLXgpCisgICAgICAgICAgICAgICAgIChlcSAoYXJlZiBy ZXMgKC0gKGxlbmd0aCByZXMpIDEpKSA/XCkpKQorICAgICAgICAoc2V0cSByZXMgKGFwcGx5ICMn dmVjdG9yIChsZXQgKChscmVzIChhcHBlbmQgcmVzIG5pbCkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgUmVtb3ZlIHRoZSBmaXJzdCBhbmQgbGFzdCB0d28gZWxlbWVu dHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBscmVzIChjZHIg KGNkciBscmVzKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnJldmVy c2UgbHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGxyZXMg KGNkciAoY2RyIGxyZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChu cmV2ZXJzZSBscmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJlcykp KSkKKyAgICAgIChpZiAobGV0ICgocmV0IHQpKQorICAgICAgICAgICAgKGRvbGlzdCAoY2ggKGFw cGVuZCByZXMgbmlsKSkKKyAgICAgICAgICAgICAgKHVubGVzcyAoYW5kIChjaGFyYWN0ZXJwIGNo KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNoMiAobG9nYW5kIGNoIChsb2du b3QgP1xNLVxeQCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoPj0gY2gy IDApICg8PSBjaDIgMTI3KSkpKQorICAgICAgICAgICAgICAgIChzZXRxIHJldCBuaWwpKSkKKyAg ICAgICAgICAgIHJldCkKKyAgICAgICAgICAoY29uY2F0IChtYXBjYXIgKGxhbWJkYSAoY2gpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg9IChsb2dhbmQgY2ggP1xNLVxeQCkgMCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggKCsgY2ggMTI4KSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChhcHBlbmQgcmVzIG5pbCkpKQorICAgICAgICByZXMpKSkpCiAK IChkZWZ1biB1bmRlZmluZWQgKCkKICAgIkJlZXAgdG8gdGVsbCB0aGUgdXNlciB0aGlzIGJpbmRp bmcgaXMgdW5kZWZpbmVkLiIKLS0gCjIuMzAuMgoK --000000000000b31cb805ce437ba4 Content-Type: text/x-diff; charset="US-ASCII"; name="0002-Remove-duplicate-code-in-edmacro-parse-keys.patch" Content-Disposition: attachment; filename="0002-Remove-duplicate-code-in-edmacro-parse-keys.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 56f5fbcc6423eb78_0.2 RnJvbSBhMWVlYzJhZTE3MjdjM2ZhNmNjZGNlYjNjNzRlMjI5MDNmN2Q1NThkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogV2VkLCAxMyBPY3QgMjAyMSAyMjo1NDo0NyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBS ZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gZWRtYWNyby1wYXJzZS1rZXlzCgoqIGxpc3Avc3Vici5l bCAoaW50ZXJuYWwtLWtiZCk6IEZhY3RvciBvdXQgZnJvbSAna2JkJy4gIENoYW5nZQp0aGlzIG5l dyBmdW5jdGlvbiB0byBiZSBzdWl0YWJsZSBmb3IgY2FsbGluZyBmcm9tIGJvdGggJ2tiZCcgYW5k CidlZG1hY3JvLXBhcnNlLWtleXMnLgoqIGxpc3AvZWRtYWNyby5lbCAoZWRtYWNyby1wYXJzZS1r ZXlzKTogUmVwbGFjZSBkZWZpbml0aW9uIHdpdGggYQpjYWxsIHRvICdpbnRlcm5hbC1rYmQnLgot LS0KIGxpc3AvZWRtYWNyby5lbCB8IDk2ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGxpc3Avc3Vici5lbCAgICB8IDQ2ICsrKysrKysrKysrKysrLS0t LS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9lZG1hY3JvLmVsIGIvbGlzcC9lZG1hY3JvLmVsCmluZGV4 IGE0ZWI1NzRhNGMuLjVmODc4MDg0N2MgMTAwNjQ0Ci0tLSBhL2xpc3AvZWRtYWNyby5lbAorKysg Yi9saXNwL2VkbWFjcm8uZWwKQEAgLTY0MCwxMDEgKzY0MCw3IEBAIGVkbWFjcm8tZml4LW1lbnUt Y29tbWFuZHMKIDs7OyBQYXJzaW5nIGEgaHVtYW4tcmVhZGFibGUga2V5Ym9hcmQgbWFjcm8uCiAK IChkZWZ1biBlZG1hY3JvLXBhcnNlLWtleXMgKHN0cmluZyAmb3B0aW9uYWwgbmVlZC12ZWN0b3Ip Ci0gIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkKLQkobGVuIChsZW5ndGggc3RyaW5nKSkg OyBXZSB3b24ndCBhbHRlciBzdHJpbmcgaW4gdGhlIGxvb3AgYmVsb3cuCi0JKHBvcyAwKQotCShy ZXMgW10pKQotICAgICh3aGlsZSAoYW5kICg8IHBvcyBsZW4pCi0JCShzdHJpbmctbWF0Y2ggIlte IFx0XG5cZl0rIiBzdHJpbmcgcG9zKSkKLSAgICAgIChsZXQqICgod29yZC1iZWcgKG1hdGNoLWJl Z2lubmluZyAwKSkKLQkgICAgICh3b3JkLWVuZCAobWF0Y2gtZW5kIDApKQotCSAgICAgKHdvcmQg KHN1YnN0cmluZyBzdHJpbmcgd29yZC1iZWcgbGVuKSkKLQkgICAgICh0aW1lcyAxKQotCSAgICAg a2V5KQotCTs7IFRyeSB0byBjYXRjaCBldmVudHMgb2YgdGhlIGZvcm0gIjxhcyBkZj4iLgotCShp ZiAoc3RyaW5nLW1hdGNoICJcXGA8W14gPD5cdFxuXGZdW14+XHRcblxmXSo+IiB3b3JkKQotCSAg ICAoc2V0cSB3b3JkIChtYXRjaC1zdHJpbmcgMCB3b3JkKQotCQkgIHBvcyAoKyB3b3JkLWJlZyAo bWF0Y2gtZW5kIDApKSkKLQkgIChzZXRxIHdvcmQgKHN1YnN0cmluZyBzdHJpbmcgd29yZC1iZWcg d29yZC1lbmQpCi0JCXBvcyB3b3JkLWVuZCkpCi0JKHdoZW4gKHN0cmluZy1tYXRjaCAiXFwoWzAt OV0rXFwpXFwqLiIgd29yZCkKLQkgIChzZXRxIHRpbWVzIChzdHJpbmctdG8tbnVtYmVyIChzdWJz dHJpbmcgd29yZCAwIChtYXRjaC1lbmQgMSkpKSkKLQkgIChzZXRxIHdvcmQgKHN1YnN0cmluZyB3 b3JkICgxKyAobWF0Y2gtZW5kIDEpKSkpKQotCShjb25kICgoc3RyaW5nLW1hdGNoICJePDwuKz4+ JCIgd29yZCkKLQkgICAgICAgKHNldHEga2V5ICh2Y29uY2F0IChpZiAoZXEgKGtleS1iaW5kaW5n IFs/XE0teF0pCi0JCQkJCSAgJ2V4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZCkKLQkJCQkgICAgICBb P1xNLXhdCi0JCQkJICAgIChvciAoY2FyICh3aGVyZS1pcy1pbnRlcm5hbAotCQkJCQkgICAgICAn ZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5kKSkKLQkJCQkJWz9cTS14XSkpCi0JCQkJICAoc3Vic3Ry aW5nIHdvcmQgMiAtMikgIlxyIikpKQotCSAgICAgICgoYW5kIChzdHJpbmctbWF0Y2ggIl5cXChc XChbQUNITXNTXS1cXCkqXFwpPFxcKC4rXFwpPiQiIHdvcmQpCi0JCSAgICAocHJvZ24KLQkJICAg ICAgKHNldHEgd29yZCAoY29uY2F0IChtYXRjaC1zdHJpbmcgMSB3b3JkKQotCQkJCQkgKG1hdGNo LXN0cmluZyAzIHdvcmQpKSkKLQkJICAgICAgKG5vdCAoc3RyaW5nLW1hdGNoCi0JCQkgICAgIlxc PFxcKE5VTFxcfFJFVFxcfExGRFxcfEVTQ1xcfFNQQ1xcfERFTFxcKSQiCi0JCQkgICAgd29yZCkp KSkKLQkgICAgICAgKHNldHEga2V5IChsaXN0IChpbnRlcm4gd29yZCkpKSkKLQkgICAgICAoKG9y IChlcXVhbCB3b3JkICJSRU0iKSAoc3RyaW5nLW1hdGNoICJeOzsiIHdvcmQpKQotCSAgICAgICAo c2V0cSBwb3MgKHN0cmluZy1tYXRjaCAiJCIgc3RyaW5nIHBvcykpKQotCSAgICAgICh0Ci0JICAg ICAgIChsZXQgKChvcmlnLXdvcmQgd29yZCkgKHByZWZpeCAwKSAoYml0cyAwKSkKLQkJICh3aGls ZSAoc3RyaW5nLW1hdGNoICJeW0FDSE1zU10tLiIgd29yZCkKLQkJICAgKGNsLWluY2YgYml0cyAo Y2RyIChhc3NxIChhcmVmIHdvcmQgMCkKLQkJCQkJICcoKD9BIC4gP1xBLVxeQCkgKD9DIC4gP1xD LVxeQCkKLQkJCQkJICAgKD9IIC4gP1xILVxeQCkgKD9NIC4gP1xNLVxeQCkKLQkJCQkJICAgKD9z IC4gP1xzLVxeQCkgKD9TIC4gP1xTLVxeQCkpKSkpCi0JCSAgIChjbC1pbmNmIHByZWZpeCAyKQot CQkgICAoY2wtY2FsbGYgc3Vic3RyaW5nIHdvcmQgMikpCi0JCSAod2hlbiAoc3RyaW5nLW1hdGNo ICJeXFxeLiQiIHdvcmQpCi0JCSAgIChjbC1pbmNmIGJpdHMgP1xDLVxeQCkKLQkJICAgKGNsLWlu Y2YgcHJlZml4KQotCQkgICAoY2wtY2FsbGYgc3Vic3RyaW5nIHdvcmQgMSkpCi0JCSAobGV0ICgo Zm91bmQgKGFzc29jIHdvcmQgJygoIk5VTCIgLiAiXDAiKSAoIlJFVCIgLiAiXHIiKQotCQkJCQkg ICAgKCJMRkQiIC4gIlxuIikgKCJUQUIiIC4gIlx0IikKLQkJCQkJICAgICgiRVNDIiAuICJcZSIp ICgiU1BDIiAuICIgIikKLQkJCQkJICAgICgiREVMIiAuICJcMTc3IikpKSkpCi0JCSAgICh3aGVu IGZvdW5kIChzZXRxIHdvcmQgKGNkciBmb3VuZCkpKSkKLQkJICh3aGVuIChzdHJpbmctbWF0Y2gg Il5cXFxcWzAtN10rJCIgd29yZCkKLQkJICAgKGNsLWxvb3AgZm9yIGNoIGFjcm9zcyB3b3JkCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gPSAwIHRoZW4gKCsgKCogbiA4KSBjaCAt NDgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSBkbyAoc2V0cSB3b3JkICh2 ZWN0b3IgbikpKSkKLQkJIChjb25kICgoPSBiaXRzIDApCi0JCQkoc2V0cSBrZXkgd29yZCkpCi0J CSAgICAgICAoKGFuZCAoPSBiaXRzID9cTS1cXkApIChzdHJpbmdwIHdvcmQpCi0JCQkgICAgIChz dHJpbmctbWF0Y2ggIl4tP1swLTldKyQiIHdvcmQpKQotCQkJKHNldHEga2V5IChjbC1sb29wIGZv ciB4IGFjcm9zcyB3b3JkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29sbGVjdCAoKyB4IGJpdHMpKSkpCi0JCSAgICAgICAoKC89IChsZW5ndGggd29yZCkgMSkK LQkJCShlcnJvciAiJXMgbXVzdCBwcmVmaXggYSBzaW5nbGUgY2hhcmFjdGVyLCBub3QgJXMiCi0J CQkgICAgICAgKHN1YnN0cmluZyBvcmlnLXdvcmQgMCBwcmVmaXgpIHdvcmQpKQotCQkgICAgICAg KChhbmQgKC89IChsb2dhbmQgYml0cyA/XEMtXF5AKSAwKSAoc3RyaW5ncCB3b3JkKQotCQkJICAg ICA7OyBXZSB1c2VkIHRvIGFjY2VwdCAuIGFuZCA/IGhlcmUsCi0JCQkgICAgIDs7IGJ1dCAuIGlz IHNpbXBseSB3cm9uZywKLQkJCSAgICAgOzsgYW5kIEMtPyBpcyBub3QgdXNlZCAod2UgdXNlIERF TCBpbnN0ZWFkKS4KLQkJCSAgICAgKHN0cmluZy1tYXRjaCAiW0AtX2Etel0iIHdvcmQpKQotCQkJ KHNldHEga2V5IChsaXN0ICgrIGJpdHMgKC0gP1xDLVxeQCkKLQkJCQkJICAgKGxvZ2FuZCAoYXJl ZiB3b3JkIDApIDMxKSkpKSkKLQkJICAgICAgICh0Ci0JCQkoc2V0cSBrZXkgKGxpc3QgKCsgYml0 cyAoYXJlZiB3b3JkIDApKSkpKSkpKSkKLQkod2hlbiBrZXkKLQkgIChjbC1sb29wIHJlcGVhdCB0 aW1lcyBkbyAoY2wtY2FsbGYgdmNvbmNhdCByZXMga2V5KSkpKSkKLSAgICAod2hlbiAoYW5kICg+ PSAobGVuZ3RoIHJlcykgNCkKLQkgICAgICAgKGVxIChhcmVmIHJlcyAwKSA/XEMteCkKLQkgICAg ICAgKGVxIChhcmVmIHJlcyAxKSA/XCgpCi0JICAgICAgIChlcSAoYXJlZiByZXMgKC0gKGxlbmd0 aCByZXMpIDIpKSA/XEMteCkKLQkgICAgICAgKGVxIChhcmVmIHJlcyAoLSAobGVuZ3RoIHJlcykg MSkpID9cKSkpCi0gICAgICAoc2V0cSByZXMgKGNsLXN1YnNlcSByZXMgMiAtMikpKQotICAgIChp ZiAoYW5kIChub3QgbmVlZC12ZWN0b3IpCi0JICAgICAoY2wtbG9vcCBmb3IgY2ggYWNyb3NzIHJl cwotICAgICAgICAgICAgICAgICAgICAgIGFsd2F5cyAoYW5kIChjaGFyYWN0ZXJwIGNoKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChjaDIgKGxvZ2FuZCBjaCAobG9n bm90ID9cTS1cXkApKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5k ICg+PSBjaDIgMCkgKDw9IGNoMiAxMjcpKSkpKSkKLQkoY29uY2F0IChjbC1sb29wIGZvciBjaCBh Y3Jvc3MgcmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAoaWYgKD0gKGxvZ2Fu ZCBjaCA/XE0tXF5AKSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo ICgrIGNoIDEyOCkpKSkKLSAgICAgIHJlcykpKQorICAoaW50ZXJuYWwtLWtiZCBzdHJpbmcgbmVl ZC12ZWN0b3IpKQogCiAocHJvdmlkZSAnZWRtYWNybykKIApkaWZmIC0tZ2l0IGEvbGlzcC9zdWJy LmVsIGIvbGlzcC9zdWJyLmVsCmluZGV4IDFjM2RjMjZhNGQuLjgxMmFlOTYyYjcgMTAwNjQ0Ci0t LSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNwL3N1YnIuZWwKQEAgLTkyNSwzMyArOTI1LDI5IEBA IHJlbXEKIAwKIDs7OzsgS2V5bWFwIHN1cHBvcnQuCiAKLShkZWZ1biBrYmQgKGtleXMpCisoZGVm dW4gaW50ZXJuYWwtLWtiZCAoc3RyaW5nICZvcHRpb25hbCBuZWVkLXZlY3RvcikKICAgIkNvbnZl cnQgS0VZUyB0byB0aGUgaW50ZXJuYWwgRW1hY3Mga2V5IHJlcHJlc2VudGF0aW9uLgotS0VZUyBz aG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCByZXR1cm5lZCBieSBjb21tYW5kcyBzdWNo Ci1hcyBgQy1oIGsnIChgZGVzY3JpYmUta2V5JykuCi1UaGlzIGlzIHRoZSBzYW1lIGZvcm1hdCB1 c2VkIGZvciBzYXZpbmcga2V5Ym9hcmQgbWFjcm9zIChzZWUKLWBlZG1hY3JvLW1vZGUnKS4KLQot Rm9yIGFuIGFwcHJveGltYXRlIGludmVyc2Ugb2YgdGhpcywgc2VlIGBrZXktZGVzY3JpcHRpb24n LiIKK1RoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGFuZCBzaG91bGQgbm90IGJlIHVzZWQg ZGlyZWN0bHkuCitTZWUgaW5zdGVhZCBga2JkJy4iCiAgIChkZWNsYXJlIChwdXJlIHQpIChzaWRl LWVmZmVjdC1mcmVlIHQpKQogICA7OyBBIHB1cmUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gcHJl c2VydmUgdGhlIG1hdGNoIGRhdGEuCiAgIChzYXZlLW1hdGNoLWRhdGEKICAgICAobGV0ICgoY2Fz ZS1mb2xkLXNlYXJjaCBuaWwpCi0gICAgICAgICAgKGxlbiAobGVuZ3RoIGtleXMpKSA7IFdlIHdv bid0IGFsdGVyIGtleXMgaW4gdGhlIGxvb3AgYmVsb3cuCisgICAgICAgICAgKGxlbiAobGVuZ3Ro IHN0cmluZykpIDsgV2Ugd29uJ3QgYWx0ZXIgc3RyaW5nIGluIHRoZSBsb29wIGJlbG93LgogICAg ICAgICAgIChwb3MgMCkKICAgICAgICAgICAocmVzIFtdKSkKICAgICAgICh3aGlsZSAoYW5kICg8 IHBvcyBsZW4pCi0gICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICJbXiBcdFxuXGZdKyIg a2V5cyBwb3MpKQorICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiW14gXHRcblxmXSsi IHN0cmluZyBwb3MpKQogICAgICAgICAobGV0KiAoKHdvcmQtYmVnIChtYXRjaC1iZWdpbm5pbmcg MCkpCiAgICAgICAgICAgICAgICAod29yZC1lbmQgKG1hdGNoLWVuZCAwKSkKLSAgICAgICAgICAg ICAgICh3b3JkIChzdWJzdHJpbmcga2V5cyB3b3JkLWJlZyBsZW4pKQorICAgICAgICAgICAgICAg KHdvcmQgKHN1YnN0cmluZyBzdHJpbmcgd29yZC1iZWcgbGVuKSkKICAgICAgICAgICAgICAgICh0 aW1lcyAxKQogICAgICAgICAgICAgICAga2V5KQogICAgICAgICAgIDs7IFRyeSB0byBjYXRjaCBl dmVudHMgb2YgdGhlIGZvcm0gIjxhcyBkZj4iLgogICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNo ICJcXGA8W14gPD5cdFxuXGZdW14+XHRcblxmXSo+IiB3b3JkKQogICAgICAgICAgICAgICAoc2V0 cSB3b3JkIChtYXRjaC1zdHJpbmcgMCB3b3JkKQogICAgICAgICAgICAgICAgICAgICBwb3MgKCsg d29yZC1iZWcgKG1hdGNoLWVuZCAwKSkpCi0gICAgICAgICAgICAoc2V0cSB3b3JkIChzdWJzdHJp bmcga2V5cyB3b3JkLWJlZyB3b3JkLWVuZCkKKyAgICAgICAgICAgIChzZXRxIHdvcmQgKHN1YnN0 cmluZyBzdHJpbmcgd29yZC1iZWcgd29yZC1lbmQpCiAgICAgICAgICAgICAgICAgICBwb3Mgd29y ZC1lbmQpKQogICAgICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIlxcKFswLTldK1xcKVxcKi4i IHdvcmQpCiAgICAgICAgICAgICAoc2V0cSB0aW1lcyAoc3RyaW5nLXRvLW51bWJlciAoc3Vic3Ry aW5nIHdvcmQgMCAobWF0Y2gtZW5kIDEpKSkpCkBAIC05NzMsNyArOTY5LDcgQEAga2JkCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkKSkpKQogICAgICAgICAgICAgICAgICAoc2V0 cSBrZXkgKGxpc3QgKGludGVybiB3b3JkKSkpKQogICAgICAgICAgICAgICAgICgob3IgKGVxdWFs IHdvcmQgIlJFTSIpIChzdHJpbmctbWF0Y2ggIl47OyIgd29yZCkpCi0gICAgICAgICAgICAgICAg IChzZXRxIHBvcyAoc3RyaW5nLW1hdGNoICIkIiBrZXlzIHBvcykpKQorICAgICAgICAgICAgICAg ICAoc2V0cSBwb3MgKHN0cmluZy1tYXRjaCAiJCIgc3RyaW5nIHBvcykpKQogICAgICAgICAgICAg ICAgICh0CiAgICAgICAgICAgICAgICAgIChsZXQgKChvcmlnLXdvcmQgd29yZCkgKHByZWZpeCAw KSAoYml0cyAwKSkKICAgICAgICAgICAgICAgICAgICAod2hpbGUgKHN0cmluZy1tYXRjaCAiXltB Q0hNc1NdLS4iIHdvcmQpCkBAIC0xMDMwLDE5ICsxMDI2LDMxIEBAIGtiZAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbHJlcyAoY2RyIChjZHIgbHJlcykpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5yZXZlcnNlIGxyZXMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscmVzKSkpKQotICAgICAgKGlmIChsZXQgKChy ZXQgdCkpCi0gICAgICAgICAgICAoZG9saXN0IChjaCAoYXBwZW5kIHJlcyBuaWwpKQotICAgICAg ICAgICAgICAodW5sZXNzIChhbmQgKGNoYXJhY3RlcnAgY2gpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAobGV0ICgoY2gyIChsb2dhbmQgY2ggKGxvZ25vdCA/XE0tXF5AKSkpKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kICg+PSBjaDIgMCkgKDw9IGNoMiAxMjcpKSkpCi0g ICAgICAgICAgICAgICAgKHNldHEgcmV0IG5pbCkpKQotICAgICAgICAgICAgcmV0KQorICAgICAg KGlmIChhbmQgKG5vdCBuZWVkLXZlY3RvcikKKyAgICAgICAgICAgICAgIChsZXQgKChyZXQgdCkp CisgICAgICAgICAgICAgICAgIChkb2xpc3QgKGNoIChhcHBlbmQgcmVzIG5pbCkpCisgICAgICAg ICAgICAgICAgICAgKHVubGVzcyAoYW5kIChjaGFyYWN0ZXJwIGNoKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgoY2gyIChsb2dhbmQgY2ggKGxvZ25vdCA/XE0tXF5AKSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKD49IGNoMiAwKSAoPD0g Y2gyIDEyNykpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXRxIHJldCBuaWwpKSkKKyAgICAg ICAgICAgICAgICAgcmV0KSkKICAgICAgICAgICAoY29uY2F0IChtYXBjYXIgKGxhbWJkYSAoY2gp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg9IChsb2dhbmQgY2ggP1xNLVxeQCkg MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggKCsgY2ggMTI4KSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgcmVzIG5pbCkpKQogICAgICAgICByZXMpKSkp CiAKKyhkZWZ1biBrYmQgKGtleXMpCisgICJDb252ZXJ0IEtFWVMgdG8gdGhlIGludGVybmFsIEVt YWNzIGtleSByZXByZXNlbnRhdGlvbi4KK0tFWVMgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBm b3JtYXQgcmV0dXJuZWQgYnkgY29tbWFuZHMgc3VjaAorYXMgYEMtaCBrJyAoYGRlc2NyaWJlLWtl eScpLgorVGhpcyBpcyB0aGUgc2FtZSBmb3JtYXQgdXNlZCBmb3Igc2F2aW5nIGtleWJvYXJkIG1h Y3JvcyAoc2VlCitgZWRtYWNyby1tb2RlJykuCisKK0ZvciBhbiBhcHByb3hpbWF0ZSBpbnZlcnNl IG9mIHRoaXMsIHNlZSBga2V5LWRlc2NyaXB0aW9uJy4iCisgIChkZWNsYXJlIChwdXJlIHQpIChz aWRlLWVmZmVjdC1mcmVlIHQpKQorICAoaW50ZXJuYWwtLWtiZCBrZXlzKSkKKwogKGRlZnVuIHVu ZGVmaW5lZCAoKQogICAiQmVlcCB0byB0ZWxsIHRoZSB1c2VyIHRoaXMgYmluZGluZyBpcyB1bmRl ZmluZWQuIgogICAoZGVjbGFyZSAoY29tcGxldGlvbiBpZ25vcmUpKQotLSAKMi4zMC4yCgo= --000000000000b31cb805ce437ba4--