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.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 7561 invoked from network); 10 Jun 2021 14:02:35 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 10 Jun 2021 14:02:35 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1623333755; b=KPzWpgrk6WH5qC8z6/TaxuNmrN3OHeUqITgqoR2u8eq/bXgSS3dE3uIlHeNhfRIVb1D8qiX89L /BW4mHvQuDu461BiAz5npNm61ReaaO5RvRSLbNZoL9FHT/GvH6Fpr/33CXqSKGlHDnxo5UnYGd BV9vksHqFiVWqcZJcvMUlA9vRC6YIzPt5Ft95A62qtusa90uat6XNiBS0/t5syZDGw8pdlKpRM db8VkHNOLqYsJSjK5u0YojSfy+0+MiCLAIxgLqgrtYL1sNj7XrBrVA5wRYJi8fAswF5ZRPOYvD RFrHWg4JdIFJoo/FsvSbTGvGM4muFQ5+v1OiwPonh9Qx5Q==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lj1-f178.google.com) smtp.remote-ip=209.85.208.178; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1623333755; bh=0VyYe8BqDhv+dPxG5CprGtElgzKnPoQb/kV6b1Ducao=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=WXFwgRF7vWPXiGiNdITVN0nGy/iB3TEDuCxrq1YKoVzYo/hJBJT002vjhkapdHpFmahgIG4FK8 p9ta11L6b1T/Uzqwr+/cKxXjGhiWFV4mm6i4z/U6i/c1CHB3U2fkYkNsqz5qdedPt6eY6UtGsl 0JehAvYwrjaGfKJ7KURi18qbrN/iwjQom7bc7q+t4+qgvSlpsC2nubcJDgx3Tbs/lckhTb9jts 2jwkkylxm8BCM8olZyZGBWC/ya76erS/cqko1vP1Ozjvbon9hErybuTNsh/91jbdslUCyZbDHv cXOfgZh9lImBmwdR3xKouoq35j+W0cLE6IUaOTj+Vo2KzQ==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=MX3HjlR9wmJX0shtdD35K0jngm1uRmYNEVhOrzu10sI=; b=FtYFYS6z3paM4oNZGVKgGEASN0 r9DSRnca1XB6CCHA1CasANLMkDmwDOVXphAVf1XyTwF2zbXz6q/NJQH15bIiTRYAwYm+LDGnm0ABy YC84va279oqhukorEXCYZoiKoGTCTZRKFw8hR+1/QwG0kUge3Gc64xMHC7u6wsnna1N1AdPE5ySkc UjYQvW58yB//KpPAmXRJe5B8vp56lyIpSQZfjvGY3igr0XU8MR/qyJTGhKi9aEehGPYeOopUzloz/ iKHLoPZJr0WAzkWBdo6pOUWiuXk8bmoEar11a36MMNXCoc0GgkrQLBtrPOgIr3f/tMapFGTErTZVF XuYQ76lw==; Received: from authenticated user by zero.zsh.org with local id 1lrLGU-000Ehe-PD; Thu, 10 Jun 2021 14:02:34 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lj1-f178.google.com) smtp.remote-ip=209.85.208.178; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lj1-f178.google.com ([209.85.208.178]:46882) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lrLGI-000EQO-67; Thu, 10 Jun 2021 14:02:23 +0000 Received: by mail-lj1-f178.google.com with SMTP id e11so5012045ljn.13 for ; Thu, 10 Jun 2021 07:02:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=MX3HjlR9wmJX0shtdD35K0jngm1uRmYNEVhOrzu10sI=; b=WXHT0ts/PTCKh0WDlzxEu85ylYAuak95qd3HFljq2ajPPa1Pyf4vO8oOcoP3nvGFFQ 7VQq/etnyJlwt2mBHpgKtIebPOHOm0MJNenR0ENA2jjc9SUiPdIE/iB4jQgfKyj9lZVc xhr7yNw8n4LgQbh6wmVWmcvWKHfNn1tw/3FukNmmcGC70QuFR1LM+ouJX3McnF4tuzya B/jtsqCkdc3VDQiL36h1gYAQJNAv9RWuEHnhzYHCAExzTc2Phx6gVdGvjhLX9mn5shEr It3V3kf7GjOPrl38FJ3kNl1TbIgx7whUsvBnVJ3EJmHTlyMKuHron4JP58iujU9GpZvD lG7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=MX3HjlR9wmJX0shtdD35K0jngm1uRmYNEVhOrzu10sI=; b=BRlg3NJxIToXWmywMVMiBTWqNYGZ+qLptVUx2ty5vAhXzt8qdUUsi+lt7LclB7dC+y WewPHG13uNnxcg2CQfIWr+Nu7Ml2YdIvgFeEyUcdiPlm9wZW1BjXxap88Pnk3T1qiz6q 45tpRYLRw8qXt1iWRbUa9Dh7e9YNF/FBep/RF+nDHbIWeelZDE2jYaH2mpXZTjLmm+yn dZn2Tby131UDyrC3Tyc3O5XfcSxmKALtzYEG9co8Nxkv5KAmzA/KfQhrKbiAbWnvaOJ0 5VxRah6eOu8BD5jnFMVfIfpvk/DQaNYpKVZ6w6T8DMTJJjRGU15pGNBywrT30topoIPZ hUEA== X-Gm-Message-State: AOAM532HRRYOLKs4Z9XI+7kyhVQD5WVun7YLhiknAEEOMXfHXLtiFeu7 2zbmkcrU27j2euZU74anY0Gj3Wgf//QC0/56iQw= X-Google-Smtp-Source: ABdhPJyVoRodhUJvc4RYbbXLUD44o5M/yQQ9eCzVhJbdMtfiWsjMRpUnEeJUIfZrmV8m4tz6yMkWptPl7xDSScRJxDQ= X-Received: by 2002:a2e:6c0e:: with SMTP id h14mr2386506ljc.267.1623333740728; Thu, 10 Jun 2021 07:02:20 -0700 (PDT) MIME-Version: 1.0 References: <7E71FA83-356E-448B-9726-02DF3FF5BD14@gmail.com> <873D08A9-F321-474A-8440-CCE7DCCBA529@gmail.com> <20210414120551.GA3882@tarpaulin.shahaf.local2> <6CEA4F3E-9A64-44E1-9121-FA9D5E053AB5@gmail.com> <20210414140909.GG3882@tarpaulin.shahaf.local2> <29E16F69-B09E-44BF-9009-1CF53053D4FC@gmail.com> <20210416171321.GC4535@tarpaulin.shahaf.local2> <93FFDA3D-3C4A-414E-9220-1032ECE5B04C@gmail.com> <20210416193037.GD15670@tarpaulin.shahaf.local2> <9dc589f1-65b6-48b7-a7cb-81f9e2e16795@www.fastmail.com> <48174137-a8a7-4171-bcda-0899ebc19433@www.fastmail.com> <8082812e-b595-403b-9c8c-8956b6af08cd@www.fastmail.com> In-Reply-To: From: Marlon Richert Date: Thu, 10 Jun 2021 17:01:44 +0300 Message-ID: Subject: Re: [PATCH] Add customizable `vcs` prompt theme (was Re: [RFC][PATCH] `newuser` prompt theme) To: Roman Perepelitsa Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000f7e8f605c469d696" X-Seq: 49054 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: --000000000000f7e8f605c469d696 Content-Type: text/plain; charset="UTF-8" Actually, I just realized that what I was doing with line-init is not actually solving my problem. So, here's a new version of the patch that simply lets chpwd call precmd. See attachment. On Thu, Jun 10, 2021 at 4:47 PM Marlon Richert wrote: > > On Thu, Jun 10, 2021 at 12:30 PM Roman Perepelitsa > wrote: > > > > There is //'%%'/% in a few places. What's the logic behind it? > > Some prompt escape codes (such as %b for bold) need %% when used in > vcs_info -- except when they are used in nvcsformats. > > > > I think invoking prompt_vcs_setup twice in the same shell will produce > > an error. I haven't tried it though. > > I just tried it and I didn't get any errors. Why do you think it would > produce an error? > > > > prompt_vcs_chpwd always prints at least one line to the TTY regardless > > of configuration options. Is this intended? > > Yes, that was my intention, but I can see how it could be useful to be > able to customize that. I'll change it. > > > > Why is prompt_vcs_precmd checking whether prompt_vcs_fd is a readable > > fd? How can it not be? > > I don't know how or why, but if I don't check for that, then I get > this error repeatedly: > > prompt_vcs_precmd:6: failed to close file descriptor 11: bad file descriptor > > > > There is a comment in prompt_vcs_precmd that says it's going to kill a > > process while in fact it closes the file descriptor. That may > > *eventually* kill the process when it decides to print something > > (assuming it hasn't blocked SIGPIPE or is checking for write errors). > > True. I'll change it to actually kill the process, too. > > > > What is the purpose of the "Info is not for current dir" check? Is > > this to account for the possibility of `cd` from a zle widget? If so, > > perhaps handle this by hooking chpwd? > > The purpose is to account for the possibility that we receive the info > _after_ we've already changed to a new dir. However, if I correct the > piece of code you mentioned previously, then that shouldn't be > necessary. > > > > prompt_vcs_fd-widget has a check for [[ -n $1 ]]. When is it false? > > When prompt_vcs_fd-widget is being called incorrectly. :) Perhaps it > should not return 1 in that case, though. > > > Thanks again. New version of the patch attached. --000000000000f7e8f605c469d696 Content-Type: text/plain; charset="US-ASCII"; name="0001-Add-customizable-vcs-prompt-theme.txt" Content-Disposition: attachment; filename="0001-Add-customizable-vcs-prompt-theme.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kpqyyr040 RnJvbSBmMDhhZGI4ZDk5ZTNlYzE2MmFhY2I4YTIxNzAyOGI3YTJkYzVkNGNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJsb24gUmljaGVydCA8bWFybG9uLnJpY2hlcnRAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDEwIEp1biAyMDIxIDE2OjU4OjMzICswMzAwClN1YmplY3Q6IFtQQVRD SF0gQWRkIGN1c3RvbWl6YWJsZSAndmNzJyBwcm9tcHQgdGhlbWUKCi0tLQogRnVuY3Rpb25zL1By b21wdHMvcHJvbXB0X3Zjc19zZXR1cCB8IDE5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDE5OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg RnVuY3Rpb25zL1Byb21wdHMvcHJvbXB0X3Zjc19zZXR1cAoKZGlmZiAtLWdpdCBhL0Z1bmN0aW9u cy9Qcm9tcHRzL3Byb21wdF92Y3Nfc2V0dXAgYi9GdW5jdGlvbnMvUHJvbXB0cy9wcm9tcHRfdmNz X3NldHVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNWUzZWNmNjE1Ci0t LSAvZGV2L251bGwKKysrIGIvRnVuY3Rpb25zL1Byb21wdHMvcHJvbXB0X3Zjc19zZXR1cApAQCAt MCwwICsxLDE5OSBAQAorIyMKKyMgUHJvbXB0IHRoYXQgY2FuIGJlIGN1c3RvbWl6ZWQgdGhyb3Vn aCB2Y3NfaW5mbworIworem1vZGxvYWQgLUYgenNoL3N5c3RlbSBwOnN5c3BhcmFtcworYXV0b2xv YWQgLVV6IGFkZC16bGUtaG9vay13aWRnZXQgYWRkLXpzaC1ob29rIHZjc19pbmZvCisKKyMgUHJv bXB0IHNlZ21lbnRzCisjIE5vcm1hbCAlYiBhbmQgJSguLi4pIG5lZWQgZXh0cmEgJSBpbiB2Y3Nf aW5mbyAtLSBleGNlcHQgaW4gbnZjc2Zvcm1hdHMuCityZWFkb25seSAtZ0hBIF9wcm9tcHRfdmNz X3BzMV9kZWZhdWx0PSgKKyAgICBsZWZ0ICAgICAgJCclJSg/LCVGe2dyZWVufSwlRntyZWR9KSUj JSViJWYlJXMgJworICAgIHJpZ2h0ICAgICAnJUIlRntibHVlfSVuJWIlZiVrQCVGe21hZ2VudGF9 JW0lZicKKyAgICBjaHB3ZCAgICAgJCdcbiVCJUZ7Ymx1ZX0lfiUlYiVmL1xuJworICAgIHN0YWdl ZCAgICAnJUIlRntncmVlbn0rJWIlZicKKyAgICB1bnN0YWdlZCAgJyVCJUZ7cmVkfSolYiVmJwor ICAgIGFjdGlvbiAgICAnJUIlRntyZWR9JWElJWIlZicKKyAgICBicmFuY2ggICAgJyVCJUZ7Y3lh bn0lYiUlYiVmJworICAgIHJlcG8gICAgICAnfCVCJUZ7Ymx1ZX0lciUlYiVmJworKQorCitwcm9t cHRfdmNzX2hlbHAoKSB7CisgIHByaW50IC1yIC0tIFwKKyJDdXN0b21pemFibGUgcHJvbXB0IHRo ZW1lIHRoYXQgaW5jbHVkZXMgVkNTIGluZm8gZm9yIHRoZSBjdXJyZW50IGRpciAoZm9yCitleGFt cGxlLCBnaXQgc3RhdHVzKSBhbmQgYXN5bmNocm9ub3VzbHkgY2hlY2tzIGZvciByZXBvIGNoYW5n ZXMuCisKK1RvIGN1c3RvbWl6ZSBpdCwgY29weS1wYXN0ZSBhbnkgb2YgdGhlIGNvZGUgYmVsb3cg dG8geW91ciAuenNocmMgZmlsZSBhbmQgZWRpdAoraXQgdGhlcmU6CisKKyAgIyBGb3IgZWFjaCBv ZiB0aGUgZm9sbG93aW5nIHRocmVlIGVudHJpZXM6CisgICMgICAxc3Qgc3RyaW5nIGlzIHRoZSBs ZWZ0IHByb21wdC4KKyAgIyAgIDJuZCBzdHJpbmcgaXMgdGhlIHJpZ2h0IHByb21wdC4KKyAgIyAg IDNyZCBzdHJpbmcgaXMgcHJpbnRlZCB3aGVuZXZlciB5b3UgY2hhbmdlIGRpcnMgKGJlZm9yZSB0 aGUgbGVmdCBwcm9tcHQpLgorCisgICMgTm9ybWFsIHByb21wdDoKKyAgenN0eWxlICc6dmNzX2lu Zm86Kjpwcm9tcHRfdmNzOionIG52Y3Nmb3JtYXRzIFxcCisgICAgICAiJHsocSspX3Byb21wdF92 Y3NfcHMxX2RlZmF1bHRbbGVmdF0vLyclJScvJX0iIFxcCisgICAgICAiJHsocSspX3Byb21wdF92 Y3NfcHMxX2RlZmF1bHRbcmlnaHRdLy8nJSUnLyV9IiBcXAorICAgICAgIiR7KHErKV9wcm9tcHRf dmNzX3BzMV9kZWZhdWx0W2NocHdkXS8vJyUlJy8lfSIKKworICAjIFByb21wdCBpbnNpZGUgVkNT IHJlcG86CisgIHpzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBmb3JtYXRzIFxcCisg ICAgICAkeyhxKylfcHJvbXB0X3Zjc19wczFfZGVmYXVsdFtsZWZ0XX0gXFwKKyAgICAgICR7KHEr KTotJXUlYyRfcHJvbXB0X3Zjc19wczFfZGVmYXVsdFticmFuY2hdJF9wcm9tcHRfdmNzX3BzMV9k ZWZhdWx0W3JlcG9dfSBcXAorICAgICAgJHsocSspX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hw d2RdfQorCisgICMgUHJvbXB0IGR1cmluZyBvbmdvaW5nIFZDUyBhY3Rpb246CisgIHpzdHlsZSAn OnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBhY3Rpb25mb3JtYXRzIFxcCisgICAgICAkeyhxKylf cHJvbXB0X3Zjc19wczFfZGVmYXVsdFtsZWZ0XX0gXFwKKyAgICAgICR7KHErKTotJXUlYyRfcHJv bXB0X3Zjc19wczFfZGVmYXVsdFthY3Rpb25dJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3JlcG9d fSBcXAorICAgICAgJHsocSspX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hwd2RdfQorCisgICMg VGhlc2UgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgJWMgYW5kICV1LCByZXNwZWN0aXZlbHk6Cisg IHpzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBzdGFnZWRzdHIgJHsocSspX3Byb21w dF92Y3NfcHMxX2RlZmF1bHRbc3RhZ2VkXX0KKyAgenN0eWxlICc6dmNzX2luZm86Kjpwcm9tcHRf dmNzOionIHVuc3RhZ2Vkc3RyICR7KHErKV9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3Vuc3RhZ2Vk XX0KKworRm9yIG1vcmUgaW5mbyBvbiB0aGUgc2V0dGluZ3MgYWJvdmUsIHNlZQoraHR0cDovL3pz aC5zb3VyY2Vmb3JnZS5uZXQvRG9jL1JlbGVhc2UvUHJvbXB0LUV4cGFuc2lvbi5odG1sIGFuZCB0 aGUgZW5kIG9mCitodHRwOi8venNoLnNvdXJjZWZvcmdlLm5ldC9Eb2MvUmVsZWFzZS9Vc2VyLUNv bnRyaWJ1dGlvbnMuaHRtbCN2Y3NfMDA1ZmluZm8tQ29uZmlndXJhdGlvbiIKK30KKworIyBTZXRz IGEgc3R5bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IHlldC4KK19wcm9tcHRfdmNzX3pzdHlsZSgp IHsKKyAgbG9jYWwgLWEgdmFsCisgIHpzdHlsZSAtZyB2YWwgIiQxIiAiJDIiCisgICgoICQjdmFs ICkpIHx8CisgICAgICB6c3R5bGUgIiRAIgorfQorCitfcHJvbXB0X3Zjc19pbmZvKCkgeworICBf cHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5mbzoqOnByb21wdF92Y3M6KicgbWF4LWV4cG9ydHMg MyAjIERlZmF1bHQgaXMgMi4KKworICBfcHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5mbzoqOnBy b21wdF92Y3M6KicgbnZjc2Zvcm1hdHMgXAorICAgICAgIiR7X3Byb21wdF92Y3NfcHMxX2RlZmF1 bHRbbGVmdF0vLyclJScvJX0iIFwKKyAgICAgICIke19wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3Jp Z2h0XS8vJyUlJy8lfSIgXAorICAgICAgIiR7X3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hwd2Rd Ly8nJSUnLyV9IgorCisgIF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3Zj czoqJyBmb3JtYXRzIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbbGVmdF0iIFwK KyAgICAgICIldSVjJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W2JyYW5jaF0kX3Byb21wdF92Y3Nf cHMxX2RlZmF1bHRbcmVwb10iIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hw d2RdIgorCisgIF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBh Y3Rpb25mb3JtYXRzIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbbGVmdF0iIFwK KyAgICAgICIldSVjJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W2FjdGlvbl0kX3Byb21wdF92Y3Nf cHMxX2RlZmF1bHRbcmVwb10iIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hw d2RdIgorCisgIF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBz dGFnZWRzdHIgXAorICAgICAgIiRfcHJvbXB0X3Zjc19wczFfZGVmYXVsdFtzdGFnZWRdIgorCisg IF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyB1bnN0YWdlZHN0 ciBcCisgICAgICAiJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3Vuc3RhZ2VkXSIKKworICB2Y3Nf aW5mbyBwcm9tcHRfdmNzICMgQ2FsbCB3aXRoIG5hbWVzcGFjZS4KKworICBwcmludCAtck5DMSAt LSBcCisgICAgICAiJHsocSspdmNzX2luZm9fbXNnXzBffSIgIiR7KHErKXZjc19pbmZvX21zZ18x X30iICIkeyhxKyl2Y3NfaW5mb19tc2dfMl99IgorfQorCitwcm9tcHRfdmNzX2NocHdkKCkgewor ICBlbXVsYXRlIC1MIHpzaAorCisgICMgRG9uJ3QgY2hlY2sgZm9yIGNoYW5nZXMgYXQgdGhpcyBw b2ludCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgIHR5cGVzZXQgLWdhIF9wcm9tcHRfdmNz X2luZm9fbXNnXz0oICIkeygwQFEpJCgKKyAgICBfcHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5m bzoqOnByb21wdF92Y3M6KicgY2hlY2stZm9yLWNoYW5nZXMgbm8KKyAgICBfcHJvbXB0X3Zjc196 c3R5bGUgJzp2Y3NfaW5mbzoqOnByb21wdF92Y3M6KicgY2hlY2stZm9yLXN0YWdlZC1jaGFuZ2Vz IG5vCisgICAgX3Byb21wdF92Y3NfaW5mbworICApfSIgKQorICBQUzE9IiRfcHJvbXB0X3Zjc19p bmZvX21zZ19bMV0iCisgIFJQUzE9IiRfcHJvbXB0X3Zjc19pbmZvX21zZ19bMl0iCisgIHByaW50 IC1uUHIgLS0gIiRfcHJvbXB0X3Zjc19pbmZvX21zZ19bM10iCisgIAorICAjIENhbGwgcHJlY21k IGp1c3QgaW4gY2FzZSwgYmVjYXVzZSBjaHB3ZCBjYW4gaGFwcGVuIHdpdGhvdXQgYSBuZXcgcHJv bXB0LgorICBwcm9tcHRfdmNzX3ByZWNtZAorfQorCitwcm9tcHRfdmNzX3ByZWNtZCgpIHsKKyAg ZW11bGF0ZSAtTCB6c2gKKworICAjIFRlcm1pbmF0ZSBhbnkgcGVuZGluZyB2Y3NfaW5mbyByZXF1 ZXN0IGJlZm9yZSBzdGFydGluZyBhIG5ldyBvbmUuCisgICMgU2Vjb25kIHRlc3QgY2hlY2tzIGlm IGZkIGlzIHJlYWRhYmxlLCB0byBhdm9pZCB0aGlzIGVycm9yIGJlaW5nIHByaW50ZWQ6CisgICMg ICBmYWlsZWQgdG8gY2xvc2UgZmlsZSBkZXNjcmlwdG9yIFhYOiBiYWQgZmlsZSBkZXNjcmlwdG9y CisgIGlmICgoIHByb21wdF92Y3NfZmQgKSkgJiYgeyA6IDwmJHByb21wdF92Y3NfZmQgfSAyPi9k ZXYvbnVsbDsgdGhlbgorICAgIHpsZSAtRiAiJHByb21wdF92Y3NfZmQiIDI+IC9kZXYvbnVsbAor ICAgIGV4ZWMge3Byb21wdF92Y3NfZmR9PCYtCisgIGZpCisgIGlmICgoIHByb21wdF92Y3NfcGlk ICkpOyB0aGVuCisgICAgW1sgLW8gbW9uaXRvciBdXSAmJgorICAgICAgICAoKCBwcm9tcHRfdmNz X3BpZCAqPSAtMSApKQorICAgIGtpbGwgLUtJTEwgJHByb21wdF92Y3NfcGlkIDI+IC9kZXYvbnVs bAorICBmaQorCisgICMgQXN5bmNocm9ub3VzbHkgY2hlY2sgZm9yIGNoYW5nZXMuCisgIHR5cGVz ZXQgLWdIIHByb21wdF92Y3NfZmQ9CisgIGV4ZWMge3Byb21wdF92Y3NfZmR9PCA8KAorCSAgcHJp bnQgLXIgLS0gJHN5c3BhcmFtc1twaWRdCisgICAgX3Byb21wdF92Y3NfenN0eWxlICc6dmNzX2lu Zm86Kjpwcm9tcHRfdmNzOionIGNoZWNrLWZvci1jaGFuZ2VzIHllcworICAgIF9wcm9tcHRfdmNz X3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBjaGVjay1mb3Itc3RhZ2VkLWNoYW5n ZXMgeWVzCisgICAgX3Byb21wdF92Y3NfaW5mbworICApCisgIHR5cGVzZXQgLWdIIHByb21wdF92 Y3NfcGlkPQorICByZWFkIC11ICRwcm9tcHRfdmNzX2ZkIC0tIHByb21wdF92Y3NfcGlkCisKKyAg IyBBZGQgY2FsbGJhY2suIE5lZWRzIHRvIGJlIGEgd2lkZ2V0LCBzbyB3ZSBjYW4gcmVmcmVzaCB0 aGUgcHJvbXB0LgorICB6bGUgLUZ3ICIkcHJvbXB0X3Zjc19mZCIgcHJvbXB0X3Zjc19mZC13aWRn ZXQKK30KKworIyBDYWxsYmFjayB3aWRnZXQgZm9yIG91ciBhc3luYyBmZXRjaCBvZiBWQ1MgY2hh bmdlcworemxlIC1OIHByb21wdF92Y3NfZmQtd2lkZ2V0Citwcm9tcHRfdmNzX2ZkLXdpZGdldCgp IHsKKyAgZW11bGF0ZSAtTCB6c2gKKworICAoKCAkMSApKSB8fAorICAgICAgcmV0dXJuIDY0ICAj IEVYX1VTQUdFOyBzZWUgbWFuIDMgc3lzZXhpdHMKKworICBsb2NhbCAtaSBmZD0kMQorICBsb2Nh bCAtYSByZXBseQorICB7CisgICAgemxlIC1GICIkZmQiICAjIERldGFjaCBvdXJzZWx2ZXMsIHNv IHdlIGRvbid0IGdldCBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCisKKyAgICBbWyAteiAkMiBdXSB8 fAorICAgICAgICByZXR1cm4gNzQgICMgRVhfSU9FUlIKKworICAgIElGUz0kJ1wwJyByZWFkIC1B cnUgIiRmZCIKKyAgICB0eXBlc2V0IC1nSGEgX3Byb21wdF92Y3NfaW5mb19tc2dfPSggIiR7KEBR KXJlcGx5fSIgKQorICAgIFBTMT0iJF9wcm9tcHRfdmNzX2luZm9fbXNnX1sxXSIKKyAgICBSUFMx PSIkX3Byb21wdF92Y3NfaW5mb19tc2dfWzJdIgorICAgIHpsZSAucmVzZXQtcHJvbXB0CisgIH0g YWx3YXlzIHsKKyAgICBleGVjIHtmZH08Ji0KKyAgfQorfQorCitwcm9tcHRfdmNzX3NldHVwKCkg eworICBwcm9tcHRfb3B0cz0oIGNyIHBlcmNlbnQgc3AgKSAjIFRlbGwgcHJvbXB0aW5pdCB3aGlj aCBvcHRpb25zIHRvIHNldC4KKworICAjIEluZGVudCBsZWZ0IGNvbnRpbnVhdGlvbiBwcm9tcHQg Zm9yIGVhY2ggb3BlbiBzaGVsbCBjb25zdHJ1Y3QuCisgIGxvY2FsIC1hIGluZGVudD0oICclKCd7 MS4uMzZ9J18sICAsKScgKQorICBQUzI9IiR7KGo6OilpbmRlbnR9IgorICBSUFMyPSclRnt5ZWxs b3d9IyAlXiVmJworICAKKyAgUFM0PSQnIy0+JSg/LCVGe2dyZWVufSwlQiVGe3JlZH0lUyklPyVi JWYlc1x0JWUrJUZ7Z3JlZW59JTFOJWY6JUknCisgIFBTNCs9JyAgJSgxXywlRnt5ZWxsb3d9JUt7 YmxhY2t9JV8lZiVrICwpJworICBTUFJPTVBUPSdDb3JyZWN0ICVCJUZ7cmVkfSVTJVIlYiVmJXMg dG8gJUIlRntncmVlbn0lciViJWY/JworICBTUFJPTVBUKz0kJ1xuJXtcZVsybSV9JVV5JXVlcyAl VW4ldW8gJVVlJXVkaXQgJVVhJXVib3J0JWIgJworICBQUk9NUFRfRU9MX01BUks9JyVGe2N5YW59 JVMlIyVmJXMnCisgIHpsZV9oaWdobGlnaHQ9KAorICAgICAgaXNlYXJjaDpmZz1ibGFjayxiZz15 ZWxsb3cKKyAgICAgIHNwZWNpYWw6Zmc9Y3lhbixib2xkCisgICAgICByZWdpb246Zmc9d2hpdGUs Ymc9Ymx1ZSxib2xkCisgICAgICBzdWZmaXg6Zmc9d2hpdGUsYmc9Ymx1ZSxib2xkCisgICAgICBw YXN0ZTpib2xkCisgICkKKworICBhZGQtenNoLWhvb2sgY2hwd2QgcHJvbXB0X3Zjc19jaHB3ZAor ICBhZGQtenNoLWhvb2sgcHJlY21kIHByb21wdF92Y3NfcHJlY21kCisKKyAgcHJvbXB0X3Zjc19j aHB3ZAorfQorCitwcm9tcHRfdmNzX3NldHVwICIkQCIKLS0gCjIuMzAuMSAoQXBwbGUgR2l0LTEz MCkKCg== --000000000000f7e8f605c469d696--