From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 6996 invoked from network); 18 Dec 2023 19:06:38 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 18 Dec 2023 19:06:38 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1702926398; b=iAEyXBjFHxZVMKc8JJpV9hX3YH5LQuGy782kexxSD3PEWeGTvi4NAQdXRTpVg6mNEby2nEATgU yEKB+BPiMLMkWRomZFTufXL5lWqXB3KA9UhtaWAtOdpjYcstJiPjRAC+dQrp12+NBXJveRM9zf kKtPSXfx6kt6G/WxEa5w76Byh6//FNyhtUwwh/cdhAEJGmcOHrMV4u7tr1hNZMNjkJv0NmRCYD +xsdoQB3T2pjPCduG3so6TLtsRPRy0jhf163tp2UuqaNFUYsYAyy2vZWJGzD421ifBxowYcwLv gHWOqwCVenmRyqHXfqCpEnhMPIljLwgQcWKJOCo4d5Y+3Q==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f44.google.com) smtp.remote-ip=209.85.208.44; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1702926398; bh=qvaVT/um7enIztEM8o3abeLUZ5KtrvdNj+/G6QnUMaE=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=i7NC4uoN4xDdMAt/u9tmOja7xCwTC0pTIBsh1OWdmUwnEP755ihquNk98hvpqsajkcfrUyesHG dhEfswpCmZa6vli+PCw94ssZ1thKdExmSphw1fugzMbIiSn6nN8p0bRTPRZVTZPTXerRZNEoV/ 5icxSIvCxS0gB/pu9LCyAHjDnZ9p54u0ajuofrzcACZxklSArL1rdygG3JIyhtcBoFlVT0Cjey lfOTo6z71XEMUucBSX/CQ57FHxH+I4JdA86KXgQApv+vV/iJi8fVQFutWwRU5f5ah36fliBdMV kpdLDEEOXWANl/yXmeVMMWeKOmsm1QA0EeXYdEc4kTyVcA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:In-Reply-To:References:MIME-Version:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=wfMJ4oas4AaLZJhSIg3VOUWed6NlOsxwhPweXAHyaVk=; b=aXbyFkj3XXYSm20M3hhX/0JWlV mIY94bSC5QqTE2oImSzI95dDEbTFoC1M2DViXqpoXpOtrX/k9qIlLwDOAZK5W0mgt3O24varOjTeV GiiWC9BDVGXgdjUb8ebQ1Hsbr3mfljFIETG/TCic8yXhcs16rXBLk0vR0tjUCePXMjIdDCj8uJMcC ReYZGpPzAu/AfDEXBBng2EhOkF0osqIERUy0Q7wtqo8InKyK9VfX5SWbEaFw3l3X+O3bNT8SbWqsF 04UWtN7dsnPlmrNXdEOUZcIFcJ4c84qQv5pdOeCRc/yGleizYYaht5sFW9DQt0ZKisQ9ugGcUw8wF 5RcpvPbA==; Received: by zero.zsh.org with local id 1rEwxb-000HUU-7O; Sun, 17 Dec 2023 19:37:59 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f44.google.com) smtp.remote-ip=209.85.208.44; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ed1-f44.google.com ([209.85.208.44]:48449) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rEwx2-000HBr-HR; Sun, 17 Dec 2023 19:37:25 +0000 Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-55193d5e8cdso2679456a12.1 for ; Sun, 17 Dec 2023 11:37:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1702841844; x=1703446644; darn=zsh.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=wfMJ4oas4AaLZJhSIg3VOUWed6NlOsxwhPweXAHyaVk=; b=a6mqsC0W6/fSc/pIHd27jJy6M4ZXiuBaZzn37M2XdPvvqTCYOfX20wa9/+gOY66iJ3 GRpg2bGbod+AmxTmWd2nV7wSzbntOgdCOEH9Xp3SXx1sx9xYbxTxr5b8iEPdl+w42Cra ZRchUnoLZlRvMexFrXQsJl6ZZjGshSsD5BgX9da7tVyKrAH143IIJknCY7HO1x2QvqH1 Ikas3DHTBB1WTcAciD10pcFWV2DWeVKlIgZEz0CkBpQ6DDs98ebefANlbmi2SadzeSB7 aQ4jMhDbTkkrNtgtjIanI/wBvjx1G+qyVNkbMZhgv59JqtatEoqDVSGkv6zWNAhlFLvc tn/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702841844; x=1703446644; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wfMJ4oas4AaLZJhSIg3VOUWed6NlOsxwhPweXAHyaVk=; b=hFqYttn21yvfuXeY6j/PAAzwqkfM3oSe4RqaXBQFs8df86qIWlGyVvwIlq5LHCN6R/ Y9TvnPl8+wNY4w/a6R3ZPFC2vNAV2n4G/ZKxHY3mcftzu6gEHEis2y7fo1SQJXh4TeUk 0m9wYWP+RqVMvs/yqdPvmB5rr6duV/pJ/7nB0WNNmE0DbQeF797eJ7e82KmDD5wpbnV6 X2jRmnL5rcRapjkbWuwSpOrd+lC44R9Ky96xA3hmFfVqkc/VrVRbxbA0gvFOcqb6NLS0 d93Jh5CQD1ncT2snWGejLp+QF2pozqrABAFwkPtkck5RTUqd2VqSiR74X603HvtUWOZM Ht1Q== X-Gm-Message-State: AOJu0YzeaJq37Q7EfXkDSoaBq8YxIO2nczuRwQIEaOgQ46CA/jeYGssU 1irK7NgBNPijVKHu5MOzQvrwt3VrvYk6hW7rtgSnkOXdPEFKxpE5 X-Google-Smtp-Source: AGHT+IGOWMmmc80Bh1dwNn4YhKhKQTUBPYOjMEmNIrnbp0lN8OdJFq3lmh9WJTqFVyIn9h/Q24+MjNb6u7ZcrNc1ZF0= X-Received: by 2002:a17:907:9815:b0:a19:a19b:55f6 with SMTP id ji21-20020a170907981500b00a19a19b55f6mr8784364ejc.134.1702841843564; Sun, 17 Dec 2023 11:37:23 -0800 (PST) MIME-Version: 1.0 References: <20231205021217.GA357346@zira.vinc17.org> <20231205125732.GA1126552@cventin.lip.ens-lyon.fr> <20231206150333.GA385094@zira.vinc17.org> <20231217135407.GA3237@zira.vinc17.org> In-Reply-To: <20231217135407.GA3237@zira.vinc17.org> From: Bart Schaefer Date: Sun, 17 Dec 2023 11:37:12 -0800 Message-ID: Subject: Re: [BUG] With CORRECT_ALL, an interrupted correct puts a truncated entry in history To: zsh-workers@zsh.org Content-Type: multipart/mixed; boundary="00000000000031e6e4060cb9c363" X-Seq: 52418 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --00000000000031e6e4060cb9c363 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Dec 17, 2023 at 5:54=E2=80=AFAM Vincent Lefevre wrote: > > On 2023-12-09 13:44:42 -0800, Bart Schaefer wrote: > > Ah. It's in the buffer managed in ZLE as $BUFFER, but corrections > > apply left to right as that buffer is converted into a parse tree, > > they don't alter the buffer itself. > > But if one does a first correction, for the second proposed > correction, one types 'e' to edit, one gets the buffer with > the first correction applied. When you type 'e', correction (and alias expansion!) is temporarily disabled, the parser is allowed to run to the end, then the parsed result is reassembled and pushed onto the editor stack (like "print -z") and zle restarts. Watch what happens if you type 'e' for a correction at the PS2 prompt. The parser hasn't reached the end yet, so you get back a PS2 with empty input, and that will keep happening until a full valid statement is entered or you interrupt, and then you get back the entire input so far. This is another reason 'a' doesn't throw away the history -- you could lose many lines of typing above the point of canceling the correction. > > > Or just use 'e', then immediately put the command in the history > > > without running it. Is there a zle widget for that? I would find > > > this useful even when there are no spelling corrections. > > > > Correction is not itself a ZLE action -- it happens after ZLE has > > returned control to the parser, and works even if ZLE is disabled. So > > there's no widget to fiddle with it. > > But what matters to that after 'e', one is in ZLE. You asked if there was a widget to immediately put the command in the history after 'e'. There's not a widget to do all of that, because there's not a widget triggered on 'e'. That said ... attached is an actual ZLE implementation of correctall. I'm not entirely happy with it yet -- problems are: * the tricks using "zstyle -e" are rather fragile * _path_files alters the leading path and then offers only to correct the file name at the end ... * ... which makes it a pain to prompt correctly for the 'n' action * quoted words muddy things. Features of interest: * uses completion, so corrections are context-sensitive rather than simple file globs * offers a menu for multiple corrections (which muddies what 'y' should do, unfortunately) * 'u' (undo) backs out if you TAB too often at that menu * 'a' does in fact discard the current line from the history, but at PS2 it keeps what went before * '!' skips all remaining corrections and runs the command The patch includes a fix for an error I kept encountering in _approximate ... I think this but happens when the "fake" style is used, but haven't run it to ground other than working around it. I will not be pushing this in its current state, use at your own risk (which would be true even if it were pushed, I suppose). --00000000000031e6e4060cb9c363 Content-Type: text/plain; charset="US-ASCII"; name="correct-all-words.txt" Content-Disposition: attachment; filename="correct-all-words.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lq9vvk5p0 ZGlmZiAtLWdpdCBhL0NvbXBsZXRpb24vQmFzZS9Db21wbGV0ZXIvX2FwcHJveGltYXRlIGIvQ29t cGxldGlvbi9CYXNlL0NvbXBsZXRlci9fYXBwcm94aW1hdGUKaW5kZXggOTY4NjBiNWE3Li4zZTE5 NjIxZDIgMTAwNjQ0Ci0tLSBhL0NvbXBsZXRpb24vQmFzZS9Db21wbGV0ZXIvX2FwcHJveGltYXRl CisrKyBiL0NvbXBsZXRpb24vQmFzZS9Db21wbGV0ZXIvX2FwcHJveGltYXRlCkBAIC02Myw3ICs2 Myw3IEBAIGNvbXBhZGQoKSB7CiAgICAgUFJFRklYPSIoI2Eke19jb21wX2NvcnJlY3R9KSRQUkVG SVgiCiAgIGZpCiAKLSAgKCggJF9jb3JyZWN0X2dyb3VwICYmICR7JHthcmd2WzEsKHIpLSh8LSld fVsoSSktKltKVl1dfSApKSAmJgorICAoKCAke19jb3JyZWN0X2dyb3VwOi0wfSAmJiAkeyR7YXJn dlsxLChyKS0ofC0pXX1bKEkpLSpbSlZdXX0gKSkgJiYKICAgICAgIF9jb3JyZWN0X2V4cGxbX2Nv cnJlY3RfZ3JvdXBdPSR7YXJndlsxLChyKS0oLXwpXVsoUiktKltKVl1dfQogCiAgIGNvbXBhZGRA X2FwcHJveGltYXRlICIkX2NvcnJlY3RfZXhwbFtAXSIgIiRAIgpkaWZmIC0tZ2l0IGEvRnVuY3Rp b25zL1psZS9jb3JyZWN0LWFsbC13b3JkcyBiL0Z1bmN0aW9ucy9abGUvY29ycmVjdC1hbGwtd29y ZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iZWYyNjI0NzIKLS0tIC9k ZXYvbnVsbAorKysgYi9GdW5jdGlvbnMvWmxlL2NvcnJlY3QtYWxsLXdvcmRzCkBAIC0wLDAgKzEs MTYxIEBACisjYXV0b2xvYWQKKyMgSW50ZW5kZWQgdG8gYmUgY2FsbGVkIGR1cmluZyBhY2NlcHQt bGluZSBvciBpbiB6bGUtbGluZS1maW5pc2gsIGJ1dCBjYW4KKyMgYmUgY2FsbGVkIGJ5IGFueSB3 aWRnZXQgdG8gYXBwbHkgY29ycmVjdGlvbiB0byBhbGwgd29yZHMgaW4gJEJVRkZFUiBvcgorIyB1 c2VkIGFzIGEgd2lkZ2V0IGl0c2VsZgorCisjIENvbXBhcmUgbW9kaWZ5LWN1cnJlbnQtYXJndW1l bnQKKworc2V0b3B0IGxvY2Fsb3B0aW9ucyBub2tzaGFycmF5cyBtdWx0aWJ5dGUgbm9yZWNleGFj dAorem1vZGxvYWQgenNoL2NvbXBsaXN0IHx8IHJldHVybiAxCisKK2xvY2FsIC1hIHJlcGx5IGNt ZGxpbmUKK2xvY2FsIGtleSBSRVBMWSBSRVBMWTIgTUVOVVNFTEVDVAoraW50ZWdlciBwb3MgcG9z d29yZCBwb3NjaGFyCit1bnNldCBNRU5VU0VMRUNUCSMgQnVnIHdpdGggbm8tc2VsZWN0IHBsdXMg eWVzPTIgYmVsb3cKKworbG9jYWwgY3VyY29udGV4dD0iJHtjdXJjb250ZXh0Oi19IgorbG9jYWwg d2lkZ2V0PSJjb3JyZWN0LSR7JHtXSURHRVQvY29ycmVjdC1hbGwtd29yZHMvfTotYWxsLXdvcmRz fSIKK2lmIFtbIC16ICIkY3VyY29udGV4dCIgXV07IHRoZW4KKyAgY3VyY29udGV4dD0iJHt3aWRn ZXR9Ojo6IgorZWxzZQorICBjdXJjb250ZXh0PSIke3dpZGdldH06JHtjdXJjb250ZXh0Iyo6fSIK K2ZpCitsb2NhbCBteWNvbnRleHQ9IiR7Y3VyY29udGV4dH0iCisKKyMgVGhpcyBicmVha3Mgb3V0 IG9mIHJlYWQtZnJvbS1taW5pYnVmZmVyIGlmIG9ubHkgdGhlIG9yaWdpbmFsIG1hdGNoZXMKK2xv Y2FsIHNob3duX29yaWdpbmFsCit6c3R5bGUgLWUgIjpjb21wbGV0aW9uOiR7d2lkZ2V0fToqIiBv cmlnaW5hbCBcCisgICAgICAgJ2lmICgoIGNvbXBzdGF0ZVtubWF0Y2hlc10gPT0gMCApKTsgXAor ICAgICAgIHRoZW4gcmVwbHk9KGZhbHNlKTsKKyAgICAgICBlbGlmIFtbICR7Y29tcHN0YXRlW3Vu YW1iaWd1b3VzXX0gPSAke2tleX0gXV07IFwKKyAgICAgICB0aGVuIHNob3duX29yaWdpbmFsPXVu YW1iaWd1b3VzOyB6bGUgLVUgbjsgcmVwbHk9KGZhbHNlKTsgXAorICAgICAgIGVsaWYgW1sgLXog JHtzaG93bl9vcmlnaW5hbH0gXV07CisgICAgICAgdGhlbiBzaG93bl9vcmlnaW5hbD1vcmlnaW5h bDsgcmVwbHk9KHRydWUpOworICAgICAgIGVsc2UgcmVwbHk9KGZhbHNlKTsgZmknCisKKyMgV291 bGQgYmUgbmljZSB0byBtYWtlIHRoZXNlIGNvbmRpdGlvbmFsLCBidXQgaXQncyBoYXJkIHRvIHRl c3QgZm9yCisjIHRoZXNlIHNwZWNpZmljYWxseSBpZiBhIG1vcmUgZ2VuZXJhbCBjb250ZXh0IGhh cyB0aGUgc3R5bGUgZGVmaW5lZAorenN0eWxlICI6Y29tcGxldGlvbjoke3dpZGdldH06KiIgbWVu dSBuby1zZWxlY3QgeWVzPTIKK3pzdHlsZSAiOmNvbXBsZXRpb246JHt3aWRnZXR9OioiIGdyb3Vw LW5hbWUgJycKK3pzdHlsZSAiOmNvbXBsZXRpb246JHt3aWRnZXR9OioiIGdyb3VwLW9yZGVyIG9y aWdpbmFsIGNvcnJlY3Rpb25zCit6c3R5bGUgIjpjb21wbGV0aW9uOiR7d2lkZ2V0fToqIiBzaG93 LWFtYmlndWl0eSB0cnVlCit6c3R5bGUgIjpjb21wbGV0aW9uOiR7d2lkZ2V0fToqIiBzaG93LWNv bXBsZXRlciB0cnVlCit6c3R5bGUgIjpjb21wbGV0aW9uOiR7d2lkZ2V0fToqIiBhY2NlcHQtZXhh Y3QgZmFsc2UKKworIyBLZWVwIGNvbXBsZXRpb24gZnVuY3Rpb25zIG91dCBvZiB0aGUgcmVzdWx0 cworenN0eWxlICI6Y29tcGxldGlvbjoke3dpZGdldH06KiIgaWdub3JlZC1wYXR0ZXJucyAnXyon CisKKyMgVGhpcyBzaG93cyBlYXJsaWVzdCB0aGUgd29yZHMgd2l0aCB0aGUgZmV3ZXN0IG5lY2Vz c2FyeSBjb3JyZWN0aW9ucworenN0eWxlICI6Y29tcGxldGlvbjoke3dpZGdldH06KiIgc29ydCBm YWxzZQorCisjIE92ZXJsb2FkIGZha2UgZGVzY3JpcHRpb24gdG8gcHJvZHVjZSBhIHByb21wdCBm b3IgbXVsdGlwbGUgY29ycmVjdGlvbnMKK3pzdHlsZSAtZSAiOmNvbXBsZXRpb246JHt3aWRnZXR9 Oio6b3JpZ2luYWwiIGZha2UgXAorCSAnaWYgKCggY29tcHN0YXRlW25tYXRjaGVzXSA+IDEgKSkg JiYgXAorCSAgICAgW1sgLXogJHtzaG93bl9vcmlnaW5hbH0gXV0gOyBcCisJIHRoZW4gYmluZGtl eSAtTSBjb3JyZWN0YWxsIHkgX2NvcnJlY3Rfd29yZDsgXAorCSBzaG93bl9vcmlnaW5hbD1mYWtl LW9yaWdpbmFsOyBcCisJIHJlcGx5PSgiJHtrZXkvLzovXFw6fTpUQUIgdG8gY2hvb3NlLCBFTlRF UiB0byBhY2NlcHQsIG4gdG8gc2tpcCIpOyBcCisJIGZpJworenN0eWxlIC1lICI6Y29tcGxldGlv bjoke3dpZGdldH06Kjpjb3JyZWN0aW9ucyIgZmFrZSBcCisJICdpZiBbWyAke3Nob3duX29yaWdp bmFsfSA9IHdhbnRlZCBdXSB8fCBcCisJICAgICAoICgoIGNvbXBzdGF0ZVtubWF0Y2hlc10gPiAw ICkpICYmIFwKKwkgICAgICAgW1sgLXogJHtzaG93bl9vcmlnaW5hbH0gXV0gKTsgXAorCSB0aGVu IGJpbmRrZXkgLU0gY29ycmVjdGFsbCB5IF9jb3JyZWN0X3dvcmQ7IFwKKwkgc2hvd25fb3JpZ2lu YWw9ZmFrZS1jb3JyZWN0aW9uczsgXAorCSByZXBseSs9KCIke2tleS8vOi9cXDp9OlRBQiB0byBj aG9vc2UsIEVOVEVSIHRvIGFjY2VwdCwgbiB0byBza2lwIik7IFwKKwkgZmknCisKKyMgVGhlcmUn cyBubyBnb29kIHNlbWFudGljcyBmb3IgJ3knIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHBvc3Np YmxlCisjIGNvcnJlY3Rpb25zLiAgTGVmdCBhcyAkJ1x0XG4nIGl0J2xsIHNraXAgYWhlYWQgYWZ0 ZXIgYSBjb3JyZWN0aW9uIGlzCisjIGNob3NlbiBmcm9tIHRoZSBsaXN0LiAgQ2hhbmdlZCB0byAu YWNjZXB0LWxpbmUgaXQgYmVjb21lcyBlcXVpdmFsZW50CisjIHRvICduJyBpZiBubyBjaG9pY2Ug aGFzIGJlZW4gbWFkZSB5ZXQuICBUaGUgYWJvdmUgbWFrZXMgaXQgY3ljbGUgdGhlCisjIG1lbnUs IGJ1dCBtYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIganVzdCB0byBoYXZlIGl0IGRvIG5vdGhpbmc/ CisKK2F1dG9sb2FkIC1VeiBzcGxpdC1zaGVsbC1hcmd1bWVudHMgcmVhZC1mcm9tLW1pbmlidWZm ZXIgbWtzaGFkb3cKKworc3BsaXQtc2hlbGwtYXJndW1lbnRzCitbWyAkeyNyZXBseX0gLWx0IDIg XV0gJiYgcmV0dXJuIDEKKygoIHBvc3dvcmQgPSBSRVBMWSwgcG9zY2hhciA9IFJFUExZMiApKQor Y21kbGluZT0oIiR7cmVwbHlbQF19IikJCSMgSW4gY2FzZSBzb21ldGhpbmcgZWxzZSB1c2VzICRy ZXBseSAuLi4KKworYmluZGtleSAtTiBjb3JyZWN0YWxsCitiaW5ka2V5IC1NIGNvcnJlY3RhbGwg JCdcdCcgX2NvcnJlY3Rfd29yZAorYmluZGtleSAtTSBjb3JyZWN0YWxsICcgJyBfY29ycmVjdF93 b3JkCitmb3Iga2V5IGluIG4gYSBlIFwhICQnXG4nICQnXHInCitkbworICBiaW5ka2V5IC1NIGNv cnJlY3RhbGwgJGtleSAuYWNjZXB0LWxpbmUKK2RvbmUKK2JpbmRrZXkgLU0gY29ycmVjdGFsbCB1 IC51bmRvCitiaW5ka2V5IC1NIGNvcnJlY3RhbGwgJ15fJyAudW5kbworYmluZGtleSAtTSBjb3Jy ZWN0YWxsIC1zICdeRycgZQorYmluZGtleSAtTSBjb3JyZWN0YWxsIC1zICdeVScgYQkJIyBTaG91 bGQgY29weSBmcm9tIG1haW4gWFhYCitiaW5ka2V5IC1NIGNvcnJlY3RhbGwgLXMgeSAkJ1x0XG4n CisKKyMgV29yayBhcm91bmQgYSBidWcgd2l0aCByZWN1cnNpdmUtZWRpdCBmcm9tIHpsZS1saW5l LWZpbmlzaAorW1sgJFdJREdFVCA9IHpsZS1saW5lLWZpbmlzaCBdXSAmJiB6bGUgcmVjdXJzaXZl LWVkaXQJIyBGYWlscworCitsb2NhbCBsbWluaSBybWluaQoreworICBta3NoYWRvdyAtcyBhbGwt d29yZHMgX29yaWdpbmFsX2ZpbGUgX2NvcnJlY3Rfd29yZAorCisgICMgRm9yY2UgdW5lZGl0ZWQg b3JpZ2luYWwgdG8gcHJlY2VkZSBfcGF0aF9maWxlcyBhZGRpdGlvbnMuCisgICMgT3RoZXJ3aXNl IHRoZSAib3JpZ2luYWwiIHN0eWxlIGFib3ZlIGhhbmRsZXMgdGhpcy4KKyAgZnVuY3Rpb24gX29y aWdpbmFsX2ZpbGUgeworICAgIFtbICR7a2V5fSA9ICovKiBdXSAmJiBzaG93bl9vcmlnaW5hbD13 YW50ZWQKKyAgICByZXR1cm4gMQkjIEZvcmNlIGNhbGwgdG8gX2NvcnJlY3QKKyAgfQorCisgICMg VGhpcyBpcyB0byBhdm9pZCBoYXZpbmcgX2NvcnJlY3Rfd29yZCBzdG9tcCBvbiAkY3VyY29udGV4 dCwKKyAgIyBwbHVzIGJyZWFrIG91dCBvZiByZWFkLWZyb20tbWluaWJ1ZmZlciB3aGVuIG5vdGhp bmcgbWF0Y2hlcworICBmdW5jdGlvbiBfY29ycmVjdF93b3JkIHsKKyAgICBsb2NhbCBzaG93bl9v cmlnaW5hbCByZXQgUkVQTFkKKyAgICBfbWFpbl9jb21wbGV0ZSBfb3JpZ2luYWxfZmlsZSBfY29y cmVjdAorICAgIHJldD0kPworICAgIFtbICR7Y29tcHN0YXRlW25tYXRjaGVzXX0gLWVxIDAgXV0g JiYgemxlIC1VIG4KKyAgICByZXR1cm4gcmV0CisgIH0KKworICAjICJSZWFsIiB3b3JkcyBmcm9t IHJlcGx5WzJdLCByZXBseVs0XSwgZXRjLiwgc2VlIHNwbGl0LXNoZWxsLWFyZ3VtZW50cworICBm b3IgcG9zIGluIHsyLi4keyNjbWRsaW5lfS4uMn0KKyAgZG8KKyAgICAjIERvbid0IHRyeSB0byBj b3JyZWN0IG51bWJlcnMgYW5kIG5vbi1zeW50YXggcHVuY3R1YXRpb24KKyAgICBbWyAke2NtZGxp bmVbcG9zXX0gPSAqW0EtWmEtel0qIF1dIHx8IGNvbnRpbnVlCisgICAgCisgICAgeworICAgICAg a2V5PSR7Y21kbGluZVtwb3NdfQorICAgICAgY3VyY29udGV4dD0iJHtteWNvbnRleHR9IgorCisg ICAgICAjIENhbid0IHVzZSAtSyBLRVlNQVAgYmVjYXVzZSByZWFkLWZyb20tbWluaWJ1ZmZlciBh bHdheXMgcmVzZXRzCisgICAgICBiaW5ka2V5IC1BIG1haW4gbGxhdGNlcnJvYworICAgICAgYmlu ZGtleSAtQSBjb3JyZWN0YWxsIG1haW4KKworICAgICAgIyBsbWluaT0iJHtQUkVCVUZGRVJ9JHso ajo6KWNtZGxpbmVbMSxwb3MtMV19IgkjIFRvbyBtdWNoPworICAgICAgbG1pbmk9JHsoajo6KWNt ZGxpbmVbMSxwb3MtMV19CisgICAgICBybWluaT0keyhqOjopY21kbGluZVtwb3MrMSwtMV19CisK KyAgICAgIHpsZSAtVSAkJ1x0JwkjIFN0YXJ0IG1pbmlidWZmZXIgaW4gY29tcGxldGlvbgorICAg ICAgcmVhZC1mcm9tLW1pbmlidWZmZXIgIkNvcnJlY3QgJGtleSBbbnlhZSFdOiAiICIke2xtaW5p fSR7a2V5fSIgIiR7cm1pbml9IgorICAgICAgUkVQTFk9JHske1JFUExZIyR7bG1pbml9fSUke3Jt aW5pfX0KKyAgICB9IGFsd2F5cyB7IGJpbmRrZXkgLUEgbGxhdGNlcnJvYyBtYWluIH0KKyAgICBj YXNlICR7S0VZU30gaW4KKyAgICAgIChhKSB6bGUgc2VuZC1icmVhazsgYnJlYWs7OworICAgICAg KG4pIGNvbnRpbnVlOzsKKyAgICAgICh5fCQnXG4nfCQnXHInKSBjbWRsaW5lW3Bvc109JHtSRVBM WTotJHtjbWRsaW5lW3Bvc119fTs7CisgICAgICAoZSkgW1sgJHtXSURHRVR9ID0gemxlLWxpbmUt ZmluaXNoIF1dICYmIHsKKwkgICAgcHJpbnQgLXogIiR7KGo6OiljbWRsaW5lfSIKKwkgICAgY21k bGluZT0oKQorCSAgICAoKCBwb3N3b3JkID0gMCwgcG9zY2hhciA9IDAgKSkKKwkgIH0KKwkgIDsm CisgICAgICAoKikgYnJlYWs7OworICAgIGVzYWMKKyAgZG9uZQorfSBhbHdheXMgeworICBybXNo YWRvdworICB6bGUgLVIgLWMKK30KKworQlVGRkVSPSIkeyhqOjopY21kbGluZX0iCitDVVJTT1I9 JCgoICR7IyR7KGo6OiljbWRsaW5lWzEscG9zd29yZC0xXX19ICsgcG9zY2hhciApKQorCitbWyAi JHtLRVlTfSIgPSBcISBdXSAmJiB6bGUgLmFjY2VwdC1saW5lCg== --00000000000031e6e4060cb9c363--