GNU bug report logs - #61028
30.0.50; [PATCH] [FEATURE] Balanced fill mode

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: wishlist; Reported by: Andrew Kensler <andrew@HIDDEN>; Keywords: patch; dated Mon, 23 Jan 2023 14:27:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
Severity set to 'wishlist' from 'normal' Request was from Stefan Kangas <stefankangas@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 61028 <at> debbugs.gnu.org:


Received: (at 61028) by debbugs.gnu.org; 13 Feb 2023 08:27:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 13 03:27:17 2023
Received: from localhost ([127.0.0.1]:47577 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pRUB9-0007dO-PA
	for submit <at> debbugs.gnu.org; Mon, 13 Feb 2023 03:27:17 -0500
Received: from smtp1.phpwebhosting.com ([184.154.71.7]:46463)
 by debbugs.gnu.org with smtp (Exim 4.84_2)
 (envelope-from <andrew@HIDDEN>) id 1pRUB6-0007dD-CT
 for 61028 <at> debbugs.gnu.org; Mon, 13 Feb 2023 03:27:14 -0500
Received: (qmail 28121 invoked from network); 13 Feb 2023 08:27:15 -0000
Received: from unknown (HELO [10.0.0.107])
 (andrew@HIDDEN@76.121.228.80)
 by smtp1.phpwebhosting.com with (AES128-SHA encrypted) SMTP;
 Mon, 13 Feb 2023 03:27:15 -0500
Content-Type: multipart/mixed; boundary="------------TWuQdg909FX6zFfWaIAMkuEw"
Message-ID: <c7a3fc7d-9df5-e509-e70d-bc41b98dc6f4@HIDDEN>
Date: Mon, 13 Feb 2023 00:27:10 -0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
 Thunderbird/102.7.1
From: Andrew Kensler <andrew@HIDDEN>
Subject: Re: bug#61028: 30.0.50; [PATCH] [FEATURE] Balanced fill mode
To: Eli Zaretskii <eliz@HIDDEN>
References: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN>
 <83mt69i7s7.fsf@HIDDEN>
Content-Language: en-US
In-Reply-To: <83mt69i7s7.fsf@HIDDEN>
X-Spam-Score: -1.1 (-)
X-Debbugs-Envelope-To: 61028
Cc: 61028 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.1 (--)

This is a multi-part message in MIME format.
--------------TWuQdg909FX6zFfWaIAMkuEw
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

A revised patch is attached.  Replies follow inline.

On 1/23/23 7:34 AM, Eli Zaretskii wrote:
> Thanks, I think this is a welcome feature.  Please see a few comments
> below.  I will send you the form for copyright assignment off-list.
Signed and sent.
> I find this subsection too detailed and lengthy.  I'm not sure we want
> to describe all the customizable options that users can customize,
> just the main ones.  Assuming the default values are chosen well,
> chances are that most users will not need to customize too many of
> them, and therefore the manual doesn't have to describe them; we just
> need to mention that several more options are available, and perhaps
> have a special group for them for easier discoverability.  WDYT?

I have significantly trimmed this subsection of the manual.

I agree about the special group.  The options related to balanced fill 
mode have now been collected in their own 'balanced-fill customization 
group, which is a child of the main 'fill group. (Note that the other 
existing options in fill.el are now explicitly placed in the 'fill group 
rather than relying on implicit ordering relative to the last group 
definition.)  This subsection of the manual now tells how to customize 
the 'balanced-fill group, rather than listing all of the options 
individually.

I have also renamed several of the options to better imply their 
relation; the ones that directly contribute (or are an exponent on a 
value that contributes) to the total score being optimized now all end 
in -penalty, for example.

> My other concern about the documentation is that it seems to describe
> the feature in a way that is too technical and uses terminology from
> the field of optimizations.  I'm afraid that users without background
> in optimizations will have difficulty understanding some of the
> options.  Can you try describing this in a less formal manner, so as
> to make it easier to understand?

I have tried to move the focus of the documentation for this feature 
away from the technical details of the implementation and more towards a 
description of the effects.

> This example is too long.  I suggest to find a shorter one.  I think
> an example with 3 lines should be enough to explain the feature.

I have changed the manual subsection to use a much shorter example.  It 
is a bit longer than 3 lines, but that is because it uses a fill-width 
of 20.  However, this gave me room to put the examples with and without 
this feature side-by-side.

> This should mention at least a few main options that control the
> feature.

In the NEWS announcement, I have added a reference to the new 
customization group.

> Likewise here: this doc string is too abstract and thus hard to grok.
> Talking about minimization of a cost function that penalizes something
> only helps if one has some background in that domain.  I'd instead try
> to say something like "fills the entire paragraph avoiding too short
> lines" or something similar.

I have updated the doc string on the minor mode here, as well as the 
other doc strings to remove the mentions of minimizing a cost function.  
In this case, I went with "When enabled, filling will try to optimally 
choose a set of line breaks to make a paragraph look tidier by 
considering the entire paragraph at a time.  This may place line breaks 
sooner than necessary if it improves later lines."

> The first line of a doc string should be a single complete sentence
> (here and elsewhere in the patch).  This is important because the
> various "apropos" commands show only the first line of the doc string.
Good point!  This might be worth a reminder under the "Documenting your 
changes" section of the CONTRIBUTE guide where it mentions doc-strings.
> These options are probably related, in that changing one needs a
> suitable change in others to make sense.  If this is indeed so, please
> mention the relations in the doc strings.  You say "Additional", but
> that is meaningless when each doc string is read separately
> (additional to what?)

That's a fair point.  Each of the options now that contributes to the 
scoring now ends in -penalty and is a member of the 'balanced-fill 
customization group.  I have also updated the doc strings to mention 
that these values are about the prioritization of some aspect of the 
appearance of the paragraph relative to the other penalties.  Hopefully 
that is more clear now.  I have removed the "Additional" language.

> If this is an internal function, please use our convention of naming
> it with double dash, as in balanced-fill--break-lines.  If this is
> supposed to be a public function, it should have a doc string.

I have renamed it to use the double dash.  I had originally been trying 
to match it to the existing code in fill.el, which doesn't seem use that 
convention.  But I also realize that that code may predate that 
convention and you wouldn't have wanted to rename it and risk breaking 
any user code relying on it.  No need for new code to be bound by that, 
though.

> Last, but not least: what about performance?  Is this performant
> enough to apply to large enough paragraphs, including via
> auto-fill-mode?  Can you provide some measurements?

That's a fair question.  That is why I had added the 
balanced-fill-word-limit option to restrict this to small to medium 
paragraphs.  But to test the performance, I have written a small 
benchmark (see attached) that creates temporary buffers with 
successively larger copies of the common "Lorem ipsum" paragraph, all on 
on line, and measures the time to fill it.  Here are timings that I got 
from it on my 10-year old machine at a few key sizes, with and without 
nativecomp:

Without nativecomp:
   For 69 words:
     greedy fill   -- 0.000216s
     balanced fill -- 0.001203s
   For 483 words:
     greedy fill   -- 0.001201s
     balanced fill -- 0.023777s
   For 2001 words:
     greedy fill   -- 0.005144s
     balanced fill -- 0.341215s
With nativecomp:
   For 69 words:
     greedy fill   -- 0.000190s
     balanced fill -- 0.000991s
   For 483 words:
     greedy fill   -- 0.001086s
     balanced fill -- 0.021680s
   For 2001 words:
     greedy fill   -- 0.004645s
     balanced fill -- 0.316352s

Note that for this benchmark, I had raised the balanced-fill-word-limit 
option so that it would test the new balanced fill algorithm, even at 
larger sizes.  With its current default of the 500 word limit, the 
timings for the 2001 words tests when balanced fill mode was enabled 
were around ~0.5ms since it would fall back to the greedy fill 
algorithm.  Thus the maximum time with this minor mode enabled and the 
default word limit would be about ~2.5ms on this machine for a 500 word 
paragraph.

Hopefully this new revision addresses your major critiques from before.  
I'm happy to refine it further if you still have reservations or spot 
anything else.

--------------TWuQdg909FX6zFfWaIAMkuEw
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Add-new-minor-balanced-fill-mode-to-filling.patch"
Content-Disposition: attachment;
 filename="0001-Add-new-minor-balanced-fill-mode-to-filling.patch"
Content-Transfer-Encoding: base64

RnJvbSAwZWE5MTQ4MmQ1OTIzNDZjYzQ2MDUyYmYxMzM2Y2JjNmE1OTU0YjMxIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgS2Vuc2xlciA8YW5kcmV3QGVhc3RmYXJ0
aGluZy5jb20+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMjMgMTg6MTc6NDEgLTA4MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgbmV3IG1pbm9yIGBiYWxhbmNlZC1maWxsLW1vZGVgIHRvIGZpbGxp
bmcKCldoZW4gZW5hYmxlZCwgZmlsbGluZyB3aWxsIGNvbnNpZGVyIHRoZSBlbnRpcmUgcGFy
YWdyYXBoIGF0IGEgdGltZQphbmQgdHJ5IHRvIHBsYWNlIGxpbmUgYnJlYWtzIG9wdGltYWxs
eSB0byBsb29rIG1vcmUgbmVhdCBhbmQgZXZlbiwKYWNjb3JkaW5nIHRvIGEgY29zdCBmdW5j
dGlvbi4gIFRoaXMgaXMgaW5zcGlyZWQgYnkgdGhlIEtudXRoLVBsYXNzCmFsZ29yaXRobS4K
CiogbGlzcC90ZXh0bW9kZXMvZmlsbC5lbAooYmFsYW5jZWQtZmlsbC1tb2RlKQooYmFsYW5j
ZWQtZmlsbC13b3JkLWxpbWl0KQooYmFsYW5jZWQtZmlsbC1tYXJnaW4td2lkdGgpCihiYWxh
bmNlZC1maWxsLXJ1bnQtd2lkdGgpCihiYWxhbmNlZC1maWxsLWxlbmd0aC1wZW5hbHR5KQoo
YmFsYW5jZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkpCihiYWxhbmNlZC1maWxsLXNpbmds
ZS1wZW5hbHR5KQooYmFsYW5jZWQtZmlsbC1icmVhay1wZW5hbHR5KTogTmV3IHZhcmlhYmxl
cy4KKGJhbGFuY2VkLWZpbGwtbW9kZSk6IE5ldyBtaW5vciBtb2RlCihiYWxhbmNlZC1maWxs
LS1icmVhay1saW5lcyk6IE5ldyBsaW5lIGJyZWFraW5nIGZ1bmN0aW9uLgooZmlsbC1yZWdp
b24tYXMtcGFyYWdyYXBoKTogVXNlIGl0IHRvIGZpbGwgcGFyYWdyYXBocy4KCiogdGVzdC9s
aXNwL3RleHRtb2Rlcy9maWxsLXRlc3RzLmVsOiBBZGQgc21va2UgdGVzdCBmb3IgaXQuCgoq
IGRvYy9lbWFjcy9lbWFjcy50ZXhpIChUb3ApOgoqIGRvYy9lbWFjcy90ZXh0LnRleGkgKEZp
bGxpbmcgVGV4dCk6IERvY3VtZW50IGl0LgoKKiBldGMvTkVXUzogQW5ub3VuY2UgaXQuCi0t
LQogZG9jL2VtYWNzL2VtYWNzLnRleGkgICAgICAgICAgICAgIHwgICAxICsKIGRvYy9lbWFj
cy90ZXh0LnRleGkgICAgICAgICAgICAgICB8ICA0NyArKysrKysKIGV0Yy9ORVdTICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBsaXNwL3RleHRtb2Rlcy9maWxsLmVsICAg
ICAgICAgICAgfCAyNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB0ZXN0L2xp
c3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwgfCAgMjEgKysrCiA1IGZpbGVzIGNoYW5nZWQs
IDMxNCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mv
ZW1hY3MvZW1hY3MudGV4aSBiL2RvYy9lbWFjcy9lbWFjcy50ZXhpCmluZGV4IDcwNzFlYTQ0
ZWRkLi4xZWFjNzY4ODJlMSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2VtYWNzLnRleGkKKysr
IGIvZG9jL2VtYWNzL2VtYWNzLnRleGkKQEAgLTYyMCw2ICs2MjAsNyBAQCBUb3AKICogRmls
bCBQcmVmaXg6OiAgICAgICAgIEZpbGxpbmcgcGFyYWdyYXBocyB0aGF0IGFyZSBpbmRlbnRl
ZAogICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpbiBhIGNvbW1lbnQsIGV0Yy4KICog
QWRhcHRpdmUgRmlsbDo6ICAgICAgIEhvdyBFbWFjcyBjYW4gZGV0ZXJtaW5lIHRoZSBmaWxs
IHByZWZpeCBhdXRvbWF0aWNhbGx5LgorKiBCYWxhbmNlZCBGaWxsOjogICAgICAgQnJlYWtp
bmcgbGluZXMgdG8gbG9vayBtb3JlIGV2ZW4gYW5kIG5lYXQuCiAKIE91dGxpbmUgTW9kZQog
CmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvdGV4dC50ZXhpIGIvZG9jL2VtYWNzL3RleHQudGV4
aQppbmRleCAxOGYyMjc0Y2ZhNi4uOGM5ZDg4ZDJjYzMgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFj
cy90ZXh0LnRleGkKKysrIGIvZG9jL2VtYWNzL3RleHQudGV4aQpAQCAtNDk3LDYgKzQ5Nyw3
IEBAIEZpbGxpbmcKICogRmlsbCBDb21tYW5kczo6ICBDb21tYW5kcyB0byByZWZpbGwgcGFy
YWdyYXBocyBhbmQgY2VudGVyIGxpbmVzLgogKiBGaWxsIFByZWZpeDo6ICAgIEZpbGxpbmcg
cGFyYWdyYXBocyB0aGF0IGFyZSBpbmRlbnRlZCBvciBpbiBhIGNvbW1lbnQsIGV0Yy4KICog
QWRhcHRpdmUgRmlsbDo6ICBIb3cgRW1hY3MgY2FuIGRldGVybWluZSB0aGUgZmlsbCBwcmVm
aXggYXV0b21hdGljYWxseS4KKyogQmFsYW5jZWQgRmlsbDo6ICBCcmVha2luZyBsaW5lcyB0
byBsb29rIG1vcmUgZXZlbiBhbmQgbmVhdC4KIEBlbmQgbWVudQogCiBAbm9kZSBBdXRvIEZp
bGwKQEAgLTgyOCw2ICs4MjksNTIgQEAgQWRhcHRpdmUgRmlsbAogbGluZS4gIElmIGl0IHJl
dHVybnMgQGNvZGV7bmlsfSwgQGNvZGV7YWRhcHRpdmUtZmlsbC1yZWdleHB9IGdldHMKIGEg
Y2hhbmNlIHRvIGZpbmQgYSBwcmVmaXguCiAKK0Bub2RlIEJhbGFuY2VkIEZpbGwKK0BzdWJz
ZWN0aW9uIEJhbGFuY2VkIEZpbGxpbmcKKworQGNpbmRleCBiYWxhbmNlZCBmaWxsaW5nCisg
IEZpbGxpbmcgY2FuIGNvbnNpZGVyIGFuIGVudGlyZSBwYXJhZ3JhcGggYXQgYSB0aW1lIHdo
ZW4gZGV0ZXJtaW5pbmcKK3doZXJlIHRvIHBsYWNlIGxpbmUgYnJlYWtzLCBhcyBhbiBhbHRl
cm5hdGl2ZSB0byBqdXN0IGdyZWVkaWx5CitpbnNlcnRpbmcgYSBicmVhayBhZnRlciB0aGUg
bGFzdCB3b3JkIHRoYXQgZml0cyBvbiBlYWNoIGxpbmUuCitUaGlzIG1heSBwbGFjZSBsaW5l
IGJyZWFrcyBzb29uZXIgdGhhbiBzdHJpY3RseSBuZWNlc3NhcnkgaWYgaXQKK3dpbGwgaGVs
cCB0byBiYWxhbmNlIG91dCB0aGUgbGVuZ3RocyBvZiBsYXRlciBsaW5lcy4KKworICBGb3Ig
ZXhhbXBsZSwgd2hlbiBAY29kZXtmaWxsLWNvbHVtbn0gaXMgMjAsIGNvbXBhcmUgdGhlIHJl
c3VsdHMKK29mIGxpbmUgYnJlYWtpbmcgdXNpbmcgdGhlIGdyZWVkeSBmaWxsIGFsZ29yaXRo
bSAobGVmdCkgdmVyc3VzIHRoZQorYmFsYW5jZWQgZmlsbCBhbGdvcml0aG0gKHJpZ2h0KToK
KworQHNtYWxsZXhhbXBsZQorLS0tLS0tIGdyZWVkeSAtLS0tLS0gICAgLS0tLS0gYmFsYW5j
ZWQgLS0tLS0KK0hhcmQgYW5kIHNoYXJwIGFzICAgICAgIEhhcmQgYW5kIHNoYXJwIGFzCitm
bGludCwgZnJvbSB3aGljaCBubyAgICBmbGludCwgZnJvbSB3aGljaAorc3RlZWwgaGFkIGV2
ZXIgICAgICAgICAgbm8gc3RlZWwgaGFkIGV2ZXIKK3N0cnVjayBvdXQgZ2VuZXJvdXMgICAg
IHN0cnVjayBvdXQgZ2VuZXJvdXMKK2ZpcmU7IHNlY3JldCwgYW5kICAgICAgIGZpcmU7IHNl
Y3JldCwgYW5kCitzZWxmLWNvbnRhaW5lZCwgYW5kICAgICBzZWxmLWNvbnRhaW5lZCwKK3Nv
bGl0YXJ5IGFzIGFuICAgICAgICAgIGFuZCBzb2xpdGFyeSBhcworb3lzdGVyLiAgICAgICAg
ICAgICAgICAgYW4gb3lzdGVyLgorLS0tLS0tIGdyZWVkeSAtLS0tLS0gICAgLS0tLS0gYmFs
YW5jZWQgLS0tLS0KK0BlbmQgc21hbGxleGFtcGxlCisKKyAgVGhlIGJhbGFuY2VkIGZpbGwg
YWxnb3JpdGhtIHByb2R1Y2VzIHNsaWdodGx5IHNob3J0ZXIgYnV0IG1vcmUgZXZlbgorbGlu
ZSBsZW5ndGhzLCByZXN1bHRpbmcgaW4gYSBsZXNzIHJhZ2dlZCByaWdodCBtYXJnaW4uICBJ
dCBhbHNvIGF2b2lkcworbGVhdmluZyBhIHNpbmdsZSB3b3JkIGFsb25lIG9uIHRoZSBsYXN0
IGxpbmUuCisKK0BmaW5kZXggYmFsYW5jZWQtZmlsbC1tb2RlCitAdmluZGV4IGJhbGFuY2Vk
LWZpbGwtbW9kZQorQHZpbmRleCBiYWxhbmNlZC1maWxsLXdvcmQtbGltaXQKKyAgWW91IG1h
eSBlbmFibGUgdGhlIGJhbGFuY2VkIGZpbGwgYWxnb3JpdGhtIHdpdGggQmFsYW5jZWQgRmls
bCBtb2RlLAord2hpY2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIHRvZ2dsZSBpdCBn
bG9iYWxseSwgdHlwZSBAa2Jke00teAorYmFsYW5jZWQtZmlsbC1tb2RlfS4gIE5vdGUgdGhh
dCBldmVuIHdoZW4gaXQgaXMgZW5hYmxlZCwgcGFyYWdyYXBocword2l0aCBtb3JlIHRoYW4g
QGNvZGV7YmFsYW5jZWQtZmlsbC13b3JkLWxpbWl0fSB3b3JkcyB3aWxsIGZhbGwgYmFjawor
dG8gdGhlIGZhc3RlciBncmVlZHkgZmlsbGluZyBhbGdvcml0aG0gZm9yIHNwZWVkLgorCisg
IFRvIGRlY2lkZSB3aGVyZSB0byBwbGFjZSBsaW5lIGJyZWFrcywgdGhlIGJhbGFuY2VkIGZp
bGwgYWxnb3JpdGhtCitzdW1zIHVwIGEgc2V0IG9mIHBlbmFsdGllcyB0byBjb21wdXRlIGEg
c2NvcmUgZm9yIGhvdyBwb29yIHRoZSBsYXlvdXQKK29mIGEgcGFyYWdyYXBoIGlzIGFuZCB0
aGVuIGNob29zZXMgdGhlIHBsYWNlbWVudCB3aXRoIHRoZSBsb3dlc3QKK3Njb3JlLiAgVHlw
ZSBAY29kZXtNLXggY3VzdG9taXplLWdyb3VwIFJFVCBiYWxhbmNlZC1maWxsIFJFVH0gdG8K
K3NlZSBvcHRpb25zIGZvciBmaW5lLXR1bmluZyB0aGUgc2NvcmluZyBwZW5hbHRpZXMgdG8g
dGFzdGUuCisKIEBub2RlIENhc2UKIEBzZWN0aW9uIENhc2UgQ29udmVyc2lvbiBDb21tYW5k
cwogQGNpbmRleCBjYXNlIGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRj
L05FV1MKaW5kZXggZDNlYWZhYWRmMTkuLjE1YWZlZGRlOGUxIDEwMDY0NAotLS0gYS9ldGMv
TkVXUworKysgYi9ldGMvTkVXUwpAQCAtNTksNiArNTksMTMgQEAgVGhpcyBhbGxvd3MgdGhl
IHVzZXIgdG8gY3VzdG9taXplIHRoZSBwcm9tcHQgdGhhdCBpcyBhcHBlbmRlZCBieQogDAog
KiBFZGl0aW5nIENoYW5nZXMgaW4gRW1hY3MgMzAuMQogCisqKiBGaWxsaW5nIGNhbiBub3cg
dHJ5IHRvIGJyZWFrIGxpbmVzIGV2ZW5seS4KK1RoZSBuZXcgJ2JhbGFuY2VkLWZpbGwtbW9k
ZScgbWlub3IgbW9kZSBjYW4gYmUgZW5hYmxlZCB0byBtYWtlIGZpbGxpbmcKK3RyeSB0byBv
cHRpbWFsbHkgY2hvb3NlIGEgc2V0IG9mIGxpbmUgYnJlYWtzIHRvIG1ha2UgYSBwYXJhZ3Jh
cGgKK2xvb2sgdGlkaWVyIGJ5IGNvbnNpZGVyaW5nIHRoZSBlbnRpcmUgcGFyYWdyYXBoIGF0
IGEgdGltZS4gIFRoaXMgaXMKK2luc3BpcmVkIGJ5IHRoZSBLbnV0aC1QbGFzcyBhbGdvcml0
aG0uICBTZWUgdGhlIGN1c3RvbWl6YXRpb24gZ3JvdXAKKydiYWxhbmNlZC1maWxsJyBmb3Ig
b3B0aW9ucyBmb3IgZmluZS10dW5pbmcgdG8gdGFzdGUuCisKIC0tLQogKiogT24gWCwgRW1h
Y3Mgbm93IHN1cHBvcnRzIGlucHV0IG1ldGhvZHMgd2hpY2ggcGVyZm9ybSAic3RyaW5nIGNv
bnZlcnNpb24iLgogVGhpcyBtZWFucyBhbiBpbnB1dCBtZXRob2QgY2FuIG5vdyBhc2sgRW1h
Y3MgdG8gZGVsZXRlIHRleHQKZGlmZiAtLWdpdCBhL2xpc3AvdGV4dG1vZGVzL2ZpbGwuZWwg
Yi9saXNwL3RleHRtb2Rlcy9maWxsLmVsCmluZGV4IDJmZGUyZmY2YzRkLi5hNzk0OTY1MmRk
MyAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvZmlsbC5lbAorKysgYi9saXNwL3RleHRt
b2Rlcy9maWxsLmVsCkBAIC00MiwxMiArNDIsMTQgQEAgZmlsbC1pbmRpdmlkdWFsLXZhcnlp
bmctaW5kZW50CiBUaGF0IG1vZGUgY2FuIGhhbmRsZSBwYXJhZ3JhcGhzIHdpdGggZXh0cmEg
aW5kZW50YXRpb24gb24gdGhlIGZpcnN0IGxpbmUsCiBidXQgaXQgcmVxdWlyZXMgc2VwYXJh
dG9yIGxpbmVzIGJldHdlZW4gcGFyYWdyYXBocy4KIEEgdmFsdWUgb2YgbmlsIG1lYW5zIHRo
YXQgYW55IGNoYW5nZSBpbiBpbmRlbnRhdGlvbiBzdGFydHMgYSBuZXcgcGFyYWdyYXBoLiIK
LSAgOnR5cGUgJ2Jvb2xlYW4pCisgIDp0eXBlICdib29sZWFuCisgIDpncm91cCAnZmlsbCkK
IAogKGRlZmN1c3RvbSBjb2xvbi1kb3VibGUtc3BhY2UgbmlsCiAgICJOb24tbmlsIG1lYW5z
IHB1dCB0d28gc3BhY2VzIGFmdGVyIGEgY29sb24gd2hlbiBmaWxsaW5nLiIKICAgOnR5cGUg
J2Jvb2xlYW4KLSAgOnNhZmUgIydib29sZWFucCkKKyAgOnNhZmUgIydib29sZWFucAorICA6
Z3JvdXAgJ2ZpbGwpCiAKIChkZWZjdXN0b20gZmlsbC1zZXBhcmF0ZS1oZXRlcm9nZW5lb3Vz
LXdvcmRzLXdpdGgtc3BhY2UgbmlsCiAgICJOb24tbmlsIG1lYW5zIHRvIHVzZSBhIHNwYWNl
IHRvIHNlcGFyYXRlIHdvcmRzIG9mIGEgZGlmZmVyZW50IGtpbmQuCkBAIC01OCw3ICs2MCw4
IEBAIGZpbGwtc2VwYXJhdGUtaGV0ZXJvZ2VuZW91cy13b3Jkcy13aXRoLXNwYWNlCiBpbiBg
ZmlsbC1ub3NwYWNlLWJldHdlZW4td29yZHMtdGFibGUnIGZvciB0aGUgY2hhcmFjdGVycyBi
ZWZvcmUgYW5kCiBhZnRlciB0aGUgbmV3bGluZS4iCiAgIDp0eXBlICdib29sZWFuCi0gIDp2
ZXJzaW9uICIyNi4xIikKKyAgOnZlcnNpb24gIjI2LjEiCisgIDpncm91cCAnZmlsbCkKIAog
KGRlZnZhciBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbiBuaWwKICAgIk1vZGUtc3BlY2lmaWMg
ZnVuY3Rpb24gdG8gZmlsbCBhIHBhcmFncmFwaCwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUu
CkBAIC03Niw3ICs3OSw4IEBAIGVuYWJsZS1raW5zb2t1CiBLaW5zb2t1IHByb2Nlc3Npbmcg
aXMgZGVzaWduZWQgdG8gcHJldmVudCBjZXJ0YWluIGNoYXJhY3RlcnMgZnJvbSBiZWluZwog
cGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGEgbGluZSBieSBmaWxsaW5nLgog
U2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIGBraW5zb2t1JyBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4iCi0gIDp0eXBlICdib29sZWFuKQorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ2Zp
bGwpCiAKIChkZWZ1biBzZXQtZmlsbC1wcmVmaXggKCkKICAgIlNldCB0aGUgZmlsbCBwcmVm
aXggdG8gdGhlIGN1cnJlbnQgbGluZSB1cCB0byBwb2ludC4KQEAgLTk2LDcgKzEwMCw4IEBA
IHNldC1maWxsLXByZWZpeAogCiAoZGVmY3VzdG9tIGFkYXB0aXZlLWZpbGwtbW9kZSB0CiAg
ICJOb24tbmlsIG1lYW5zIGRldGVybWluZSBhIHBhcmFncmFwaCdzIGZpbGwgcHJlZml4IGZy
b20gaXRzIHRleHQuIgotICA6dHlwZSAnYm9vbGVhbikKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg
Omdyb3VwICdmaWxsKQogCiAoZGVmY3VzdG9tIGFkYXB0aXZlLWZpbGwtcmVnZXhwCiAgIDs7
IEFkZGVkIGAhJyBmb3IgZG94eWdlbiBjb21tZW50cyBzdGFydGluZyB3aXRoIGAvLyEnIG9y
IGAvKiEnLgpAQCAtMTEyLDcgKzExNyw4IEBAIGFkYXB0aXZlLWZpbGwtcmVnZXhwCiBJZiB0
aGUgcGFyYWdyYXBoIGhhcyBqdXN0IG9uZSBsaW5lLCB0aGUgaW5kZW50YXRpb24gaXMgdGFr
ZW4gZnJvbSB0aGF0CiBsaW5lLCBidXQgaW4gdGhhdCBjYXNlIGBhZGFwdGl2ZS1maWxsLWZp
cnN0LWxpbmUtcmVnZXhwJyBhbHNvIHBsYXlzCiBhIHJvbGUuIgotICA6dHlwZSAncmVnZXhw
KQorICA6dHlwZSAncmVnZXhwCisgIDpncm91cCAnZmlsbCkKIAogKGRlZmN1c3RvbSBhZGFw
dGl2ZS1maWxsLWZpcnN0LWxpbmUtcmVnZXhwIChwdXJlY29weSAiXFxgWyBcdF0qXFwnIikK
ICAgIlJlZ2V4cCBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc2V0IGZpbGwgcHJlZml4IGZyb20g
YSBvbmUtbGluZSBwYXJhZ3JhcGguCkBAIC0xMjQsMTMgKzEzMCw5NSBAQCBhZGFwdGl2ZS1m
aWxsLWZpcnN0LWxpbmUtcmVnZXhwCiAKIEhvd2V2ZXIsIHdlIG5ldmVyIHVzZSBhIHByZWZp
eCBmcm9tIGEgb25lLWxpbmUgcGFyYWdyYXBoCiBpZiBpdCB3b3VsZCBhY3QgYXMgYSBwYXJh
Z3JhcGgtc3RhcnRlciBvbiB0aGUgc2Vjb25kIGxpbmUuIgotICA6dHlwZSAncmVnZXhwKQor
ICA6dHlwZSAncmVnZXhwCisgIDpncm91cCAnZmlsbCkKIAogKGRlZmN1c3RvbSBhZGFwdGl2
ZS1maWxsLWZ1bmN0aW9uICMnaWdub3JlCiAgICJGdW5jdGlvbiB0byBjYWxsIHRvIGNob29z
ZSBhIGZpbGwgcHJlZml4IGZvciBhIHBhcmFncmFwaC4KIEEgbmlsIHJldHVybiB2YWx1ZSBt
ZWFucyB0aGUgZnVuY3Rpb24gaGFzIG5vdCBkZXRlcm1pbmVkIHRoZSBmaWxsIHByZWZpeC4i
CiAgIDp2ZXJzaW9uICIyNy4xIgotICA6dHlwZSAnZnVuY3Rpb24pCisgIDp0eXBlICdmdW5j
dGlvbgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhkZWZncm91cCBiYWxhbmNlZC1maWxsIG5pbAor
ICAiQnJlYWtpbmcgbGluZXMgdG8gbG9vayBtb3JlIGV2ZW4gYW5kIG5lYXQuIgorICA6bGlu
ayAnKGN1c3RvbS1tYW51YWwgIihlbWFjcykgQmFsYW5jZWQgRmlsbCIpCisgIDpncm91cCAn
ZmlsbCkKKworKGRlZmluZS1taW5vci1tb2RlIGJhbGFuY2VkLWZpbGwtbW9kZQorICAiVG9n
Z2xlIHdoZXRoZXIgZmlsbGluZyBzaG91bGQgdHJ5IHRvIG5lYXRseSBiYWxhbmNlIGxpbmUg
bGVuZ3Rocy4KKworV2hlbiBlbmFibGVkLCBmaWxsaW5nIHdpbGwgdHJ5IHRvIG9wdGltYWxs
eSBjaG9vc2UgYSBzZXQgb2YgbGluZQorYnJlYWtzIHRvIG1ha2UgYSBwYXJhZ3JhcGggbG9v
ayB0aWRpZXIgYnkgY29uc2lkZXJpbmcgdGhlIGVudGlyZQorcGFyYWdyYXBoIGF0IGEgdGlt
ZS4gIFRoaXMgbWF5IHBsYWNlIGxpbmUgYnJlYWtzIHNvb25lciB0aGFuCituZWNlc3Nhcnkg
aWYgaXQgaW1wcm92ZXMgbGF0ZXIgbGluZXMuICBXaGVuIGRpc2FibGVkLCBmaWxsaW5nCit1
c2VzIHRoZSB0cmFkaXRpb25hbCBncmVlZHkgbGluZSBicmVha2luZyBhbGdvcml0aG0uCisK
K1NlZSBJbmZvIG5vZGUgYChlbWFjcykgQmFsYW5jZWQgRmlsbCcgZm9yIG1vcmUgZGV0YWls
cy4iCisgIDpnbG9iYWwgdAorICA6dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJ2Jvb2xlYW4K
KyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQorCisoZGVmY3VzdG9tIGJhbGFuY2VkLWZpbGwt
d29yZC1saW1pdCA1MDAKKyAgIkxhcmdlc3QgcGFyYWdyYXBoLCBpbiB3b3JkcywgdG8gYXBw
bHkgYmFsYW5jZWQgZmlsbGluZyB0by4KK0lmIHRoZSBwYXJhZ3JhcGggZXhjZWVkcyB0aGlz
IGxpbWl0LCBiYWxhbmNlZCBmaWxsaW5nIHdpbGwgZmFsbAorYmFjayB0byB0aGUgc3RhbmRh
cmQgZ3JlZWR5IGZpbGxpbmcgdG8ga2VlcCBmaWxsaW5nIHF1aWNrLiIKKyAgOnZlcnNpb24g
IjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpncm91cCAnYmFsYW5jZWQtZmlsbCkKKwor
KGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLW1hcmdpbi13aWR0aCAzCisgICJFeHRyYSBtYXJn
aW4sIGluIGNvbHVtbnMsIGZvciBiYWxhbmNlZCBmaWxsaW5nIHRvIHRyeSB0byBicmVhayBs
aW5lcyBhdC4KK1RhcmdldHRpbmcgYSBsaW5lIGxlbmd0aCBzbGlnaHRseSBzaG9ydCBvZiB0
aGUgYGZpbGwtY29sdW1uJyBidXQKK2JlaW5nIGFsbG93ZWQgdG8gZ28gYWxsIHRoZSB3YXkg
dXAgdG8gdGhlIGBmaWxsLWNvbHVtbicgY2FuIGhlbHAKK2JhbGFuY2VkIGZpbGxpbmcgdG8g
bWFrZSB0aGUgbGluZXMgbW9yZSBldmVuIGluIGxlbmd0aC4iCisgIDp2ZXJzaW9uICIzMC4x
IgorICA6dHlwZSAnaW50ZWdlcgorICA6Z3JvdXAgJ2JhbGFuY2VkLWZpbGwpCisKKyhkZWZj
dXN0b20gYmFsYW5jZWQtZmlsbC1ydW50LXdpZHRoIDEwCisgICJNaW5pbXVtIHdpZHRoLCBp
biBjb2x1bW5zLCBhbGxvd2VkIGZvciB0aGUgbGFzdCBsaW5lcyBvZiBwYXJhZ3JhcGhzLgor
SWYgdGhpcyBpcyBzZXQgdG8gYSBoaWdoIG51bWJlciwgdGhlbiB0aGUgYmFsYW5jZWQgZmls
bGluZyB3aWxsCit0cnkgdG8gbWFrZSB0aGUgbGFzdCBsaW5lcyBhcyBmdWxsIGFzIGFsbCB0
aGUgb3RoZXJzLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpn
cm91cCAnYmFsYW5jZWQtZmlsbCkKKworKGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLWxlbmd0
aC1wZW5hbHR5IDMKKyAgIk1haW4gdHVuaW5nIG9wdGlvbiBmb3IgdGhlIGJhbGFuY2VkIGZp
bGwgYWxnb3JpdGhtLgorSGlnaGVyIHZhbHVlcyBjYXVzZSBiYWxhbmNlZCBmaWxsaW5nIHRv
IHByaW9yaXRpemUgKHJlbGF0aXZlCit0byBvdGhlciBwZW5hbHRpZXMpIG1ha2luZyBlYWNo
IGxpbmUgZXhhY3RseSBtYXRjaCB0aGUgdGFyZ2V0CitsZW5ndGguICBUeXBpY2FsbHkgdGhp
cyBpcyBzZXQgYmV0d2VlbiAyIGFuZCAzLiIKKzp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAn
aW50ZWdlcgorICA6Z3JvdXAgJ2JhbGFuY2VkLWZpbGwpCisKKyhkZWZjdXN0b20gYmFsYW5j
ZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkgNDAKKyAgIlBlbmFsdHkgYWRkZWQgZm9yIGRp
ZmZlcmVuY2UgaW4gbGVuZ3RoIGJldHdlZW4gYWRqYWNlbnQgbGluZXMuCitIaWdoZXIgdmFs
dWVzIG1ha2UgYmFsYW5jZWQgZmlsbGluZyBwcmlvcml0aXplIChyZWxhdGl2ZSB0bworb3Ro
ZXIgcGVuYWx0aWVzKSByZWR1Y2luZyByYWdnZWRuZXNzIGFuZCBrZWVwaW5nIGFsbCBsaW5l
cyBhcworZXZlbiBhcyBwb3NzaWJsZSBpbiBsZW5ndGguIgorICA6dmVyc2lvbiAiMzAuMSIK
KyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQorCisoZGVmY3Vz
dG9tIGJhbGFuY2VkLWZpbGwtc2luZ2xlLXBlbmFsdHkgMTUwCisgICJQZW5hbHR5IGFkZGVk
IGZvciBsZWF2aW5nIGEgd29yZCBvZiBhIHNlbnRlbmNlIGFsb25lIG9uIGEgbGluZS4KK0hp
Z2hlciB2YWx1ZXMgbWFrZSBiYWxhbmNlZCBmaWxsaW5nIHByaW9yaXRpemUgKHJlbGF0aXZl
IHRvCitvdGhlciBwZW5hbHRpZXMpIGF2b2lkaW5nIGxpbmUgYnJlYWtzIHJpZ2h0IGFmdGVy
IHRoZSBmaXJzdAord29yZCBvZiBhIHNlbnRlbmNlIG9yIGJlZm9yZSB0aGUgbGFzdCB3b3Jk
IG9mIGEgc2VudGVuY2UuIgorICA6dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJ2ludGVnZXIK
KyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQorCisoZGVmY3VzdG9tIGJhbGFuY2VkLWZpbGwt
YnJlYWstcGVuYWx0eSA1MAorICAiUGVuYWx0eSBhZGRlZCBmb3IgZWFjaCBsaW5lIGJyZWFr
IGluc2VydGVkLgorSGlnaGVyIHZhbHVlcyBtYWtlIGJhbGFuY2VkIGZpbGxpbmcgcHJpb3Jp
dGl6ZSAocmVsYXRpdmUgdG8gb3RoZXIKK3BlbmFsdGllcykgbWFraW5nIGEgcGFyYWdyYXBo
IGZpdCBpbiBhcyBmZXcgbGluZXMgYXMgcG9zc2libGUuIgorICA6dmVyc2lvbiAiMzAuMSIK
KyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQogCiAoZGVmdmFy
IGZpbGwtaW5kZW50LWFjY29yZGluZy10by1tb2RlIG5pbCA7U2NyZXdzIHVwIENDLW1vZGUn
cyBmaWxsaW5nIHRyaWNrcy4KICAgIldoZXRoZXIgb3Igbm90IGZpbGxpbmcgc2hvdWxkIHRy
eSB0byB1c2UgdGhlIG1ham9yIG1vZGUncyBpbmRlbnRhdGlvbi4iKQpAQCAtMzc0LDExICs0
NjIsMTMgQEAgZmlsbC1ub2JyZWFrLXByZWRpY2F0ZQogdGhlIGxpbmUgdGhlcmUuIgogICA6
dHlwZSAnaG9vawogICA6b3B0aW9ucyAnKGZpbGwtZnJlbmNoLW5vYnJlYWstcCBmaWxsLXNp
bmdsZS13b3JkLW5vYnJlYWstcAotICAgICAgICAgICAgIGZpbGwtc2luZ2xlLWNoYXItbm9i
cmVhay1wKSkKKyAgICAgICAgICAgICBmaWxsLXNpbmdsZS1jaGFyLW5vYnJlYWstcCkKKyAg
Omdyb3VwICdmaWxsKQogCiAoZGVmY3VzdG9tIGZpbGwtbm9icmVhay1pbnZpc2libGUgbmls
CiAgICJOb24tbmlsIG1lYW5zIHRoYXQgZmlsbCBjb21tYW5kcyBkbyBub3QgYnJlYWsgbGlu
ZXMgaW4gaW52aXNpYmxlIHRleHQuIgotICA6dHlwZSAnYm9vbGVhbikKKyAgOnR5cGUgJ2Jv
b2xlYW4KKyAgOmdyb3VwICdmaWxsKQogCiAoZGVmdW4gZmlsbC1ub2JyZWFrLXAgKCkKICAg
IlJldHVybiBuaWwgaWYgYnJlYWtpbmcgdGhlIGxpbmUgYXQgcG9pbnQgaXMgYWxsb3dlZC4K
QEAgLTY0NCw2ICs3MzQsMTM3IEBAIGZpbGwtaW5kZW50LXRvLWxlZnQtbWFyZ2luCiAgICAg
KGluZGVudC1saW5lLXRvIChjdXJyZW50LWxlZnQtbWFyZ2luKSkKICAgICAocHV0LXRleHQt
cHJvcGVydHkgYmVnIChwb2ludCkgJ2ZhY2UgJ2RlZmF1bHQpKSkKIAorKGRlZnVuIGJhbGFu
Y2VkLWZpbGwtLWJyZWFrLWxpbmVzIChmcm9tIHRvIGp1c3RpZnkpCisgIDs7IChMaW5lIGJy
ZWFraW5nIGltcGxlbWVudGF0aW9uIGluc3BpcmVkIGJ5IEtudXRoLVBsYXNzLikKKworICA7
OyBBYm9ydCAoYW5kIGZhbGwgYmFjayB0byBncmVlZHkgYWxnb3JpdGhtKSBpZiB3ZSBoYXZl
IHRvbyBtYW55IHdvcmRzLgorICA7OyBUaGUgYWxnb3JpdGhtIGJlbG93IGlzIHdvcnN0LWNh
c2UgcXVhZHJhdGljICh0aG91Z2ggdXN1YWxseSBub3QpLgorICA7OyBBc3ltcHRvdGljYWxs
eSBmYXN0ZXIgYWxnb3JpdGhtcyBleGlzdCwgYnV0IGFyZSBtb3JlIGNvbXBsaWNhdGVkLgor
ICAoaWYgKD4gKGNvdW50LXdvcmRzLXJlZ2lvbiBmcm9tIHRvKSBiYWxhbmNlZC1maWxsLXdv
cmQtbGltaXQpCisgICAgICBuaWwKKworICAgIDs7IEJ1aWxkIGEgdGFibGUgb2YgdmlzaWJs
ZSB3b3JkIHdpZHRocywgd2l0aCBhbmQgd2l0aG91dCBhbnkgcHJlY2VkaW5nCisgICAgOzsg
c3BhY2VzLCBhbG9uZyB3aXRoIHdoZXRoZXIgdGhlIHdvcmQgc3RhcnRzIGEgbmV3IHNlbnRl
bmNlLiAgV2UgZ28gYnkKKyAgICA7OyBjb2x1bW5zIGFuZCBub3QgY2hhcnMgdG8gaGFuZGxl
IGludmlzaWJsZSB0ZXh0IChlc3BlY2lhbGx5IGludmlzaWJsZQorICAgIDs7IHNwYWNlcyks
IGV0Yy4KKyAgICAobGV0ICgod29yZHMgJygpKQorICAgICAgICAgIChjb3VudCAwKQorICAg
ICAgICAgIChzZW50ZW5jZS1yZWdleHAgKHNlbnRlbmNlLWVuZCkpKQorICAgICAgKGdvdG8t
Y2hhciB0bykKKyAgICAgICh3aGlsZSAoPiAocG9pbnQpIGZyb20pCisgICAgICAgIChsZXQq
ICgocHJldmlvdXMgKHBvaW50KSkKKyAgICAgICAgICAgICAgIChlbmQgKGN1cnJlbnQtY29s
dW1uKSkKKyAgICAgICAgICAgICAgIChuZXh0IChwcm9nbiAoZmlsbC1tb3ZlLXRvLWJyZWFr
LXBvaW50IGZyb20pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgTmVlZGVkIGZv
ciBtb3ZpbmcgcGFzdCBzb21lIE9yZy1tb2RlIGxpbmtzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgICAod2l0aC1zcGFjZSAoY3Vy
cmVudC1jb2x1bW4pKQorICAgICAgICAgICAgICAgKHdpdGhvdXQtc3BhY2UgKHByb2duIChz
a2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgICAgICAobmV3LXNlbnRl
bmNlIChsb29raW5nLWJhY2sgc2VudGVuY2UtcmVnZXhwIGZyb20pKSkKKyAgICAgICAgICAo
Z290by1jaGFyIG5leHQpCisgICAgICAgICAgOzsgSWYgcG9pbnQgZGlkbid0IG1vdmUsIHdl
J3JlIGFmdGVyIHRoZSBmaXJzdCB3b3JkIG9mIHRoZSBsaW5lLgorICAgICAgICAgICh3aGVu
ICg8PSBwcmV2aW91cyBuZXh0KQorICAgICAgICAgICAgKGdvdG8tY2hhciBmcm9tKQorICAg
ICAgICAgICAgKHNldHEgd2l0aC1zcGFjZSAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAg
ICAgICAgICB3aXRob3V0LXNwYWNlIChjdXJyZW50LWNvbHVtbikpKQorICAgICAgICAgIDs7
IE1lcmdlIGludG8gcHJldmlvdXMgZW50cnkgd2hlbiBtb3ZpbmcgcGFzdCBpbnZpc2libGUg
dGV4dC4KKyAgICAgICAgICAoaWYgKD0gZW5kIHdpdGhvdXQtc3BhY2UpCisgICAgICAgICAg
ICAgIChzZXRxIGVuZCAoKyBlbmQgKG9yIChjYXIgKHBvcCB3b3JkcykpIDApKSkpCisgICAg
ICAgICAgKHB1c2ggKGxpc3QgKC0gZW5kIHdpdGgtc3BhY2UpICgtIGVuZCB3aXRob3V0LXNw
YWNlKSBuZXctc2VudGVuY2UpCisgICAgICAgICAgICAgICAgd29yZHMpKSkKKyAgICAgIChz
ZXRxIHdvcmRzICh2Y29uY2F0IHdvcmRzKSkKKyAgICAgIChzZXRxIGNvdW50IChsZW5ndGgg
d29yZHMpKQorCisgICAgICA7OyBDb25zaWRlciBlYWNoIHdvcmQgYXMgYSBjYW5kaWRhdGUg
dG8gc3RhcnQgYSBsaW5lLCBhbmQgYnVpbGQgYQorICAgICAgOzsgdGFibGUgb2Ygd2hpY2gg
d29yZCB0aGUgcHJldmlvdXMgbGluZSB3b3VsZCBiZSBiZXN0IHRvIHN0YXJ0IG9uCisgICAg
ICA7OyBhbmQgdGhlIHdpZHRoIG9mIHRoZSBwcmV2aW91cyBsaW5lLiAgVXNlIGR5bmFtaWMg
cHJvZ3JhbW1pbmcgdG8KKyAgICAgIDs7IG1pbmltaXplIGEgY29zdCBmdW5jdGlvbi4KKyAg
ICAgIChsZXQgKChzdGFydHMgKG1ha2UtdmVjdG9yICgxKyBjb3VudCkgMCkpCisgICAgICAg
ICAgICAod2lkdGhzIChtYWtlLXZlY3RvciAoMSsgY291bnQpIDApKSkKKyAgICAgICAgKGxl
dCogKChzdGFydCAwKQorICAgICAgICAgICAgICAgKHJvb20gKC0gZmlsbC1jb2x1bW4gKGN1
cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgICAgICAoY29zdHMgKG1ha2UtdmVjdG9yICgx
KyBjb3VudCkgbW9zdC1wb3NpdGl2ZS1maXhudW0pKQorICAgICAgICAgICAgICAgKHJhZ3Mg
KG1ha2UtdmVjdG9yICgxKyBjb3VudCkgYmFsYW5jZWQtZmlsbC1tYXJnaW4td2lkdGgpKSkK
KyAgICAgICAgICAoYXNldCBjb3N0cyAwIDApCisgICAgICAgICAgKHdoaWxlICg8IHN0YXJ0
IGNvdW50KQorICAgICAgICAgICAgOzsgVGhlIHJvb20gZm9yIHRoZSBmaXJzdCBsaW5lIG1h
eSBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgcmVzdC4KKyAgICAgICAgICAgIChpZiAoPSBzdGFy
dCAxKQorICAgICAgICAgICAgICAgIChzZXRxIHJvb20gKC0gZmlsbC1jb2x1bW4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctd2lkdGggKG9yIGZpbGwtcHJlZml4
ICIiKSkpKSkKKyAgICAgICAgICAgIDs7IENvbnNpZGVyIGVhY2ggd29yZCB0aGlzIG5ldyBs
aW5lIG1pZ2h0IGVuZCBvbi4gIERvbid0IHRlc3QKKyAgICAgICAgICAgIDs7IHdpZHRoIGFn
YWluc3Qgcm9vbSB5ZXQ7IHdlIHdhbnQgYXQgbGVhc3Qgb25lIHdvcmQgcGVyIGxpbmUsCisg
ICAgICAgICAgICA7OyBzbyB3ZSBuZWVkIGF0IGxlYXN0IG9uZSBpdGVyYXRpb24uCisgICAg
ICAgICAgICAobGV0ICgoZW5kIHN0YXJ0KQorICAgICAgICAgICAgICAgICAgKHdpZHRoIDAp
KQorICAgICAgICAgICAgICAod2hpbGUgKDwgZW5kIGNvdW50KQorICAgICAgICAgICAgICAg
IDs7IERvbid0IGFkZCB0aGUgc3BhY2UgYmVmb3JlIHRoZSBmaXJzdCB3b3JkIHRvIHRoZSB3
aWR0aC4KKyAgICAgICAgICAgICAgICAoc2V0cSB3aWR0aCAoKyB3aWR0aCAobnRoIChpZiAo
PSBlbmQgc3RhcnQpIDEgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChhcmVmIHdvcmRzIGVuZCkpKSkKKyAgICAgICAgICAgICAgICA7OyBPdXIgY29z
dCBmdW5jdGlvbiBpcyB0aGUgc3VtIG9mIHRoZSBiZXN0IHRvdGFsIGNvc3QgZm9yCisgICAg
ICAgICAgICAgICAgOzsgYWxsIHRoZSBsaW5lcyBwcmVjZWRpbmcgdGhlIHN0YXJ0IG9mIHRo
aXMgb25lLAorICAgICAgICAgICAgICAgIChsZXQgKChjb3N0ICgrIChhcmVmIGNvc3RzIHN0
YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHBsdXMgdGhlIGRpc3Rh
bmNlIGZyb20gdGhlIG1hcmdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl
eHB0IChhYnMgKC0gcm9vbSBiYWxhbmNlZC1maWxsLW1hcmdpbi13aWR0aAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGV4cG9uZW50aWF0ZWQgaWYgbm90IHRo
ZSBsYXN0IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg
KG9yICgvPSAoMSsgZW5kKSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDs7IG9yIGlmIHdlJ2QgbGVhdmUgYSBydW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgd2lkdGggYmFsYW5jZWQt
ZmlsbC1ydW50LXdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFsYW5jZWQtZmlsbC1sZW5ndGgtcGVuYWx0eSAxKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7OyBwbHVzIGEgcGVuYWx0eSBmb3IgYW4gdW5ldmVuIHJpZ2h0
IHNpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAoYWJzICgtIHJvb20g
d2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVm
IHJhZ3Mgc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBp
ZiBub3QgdGhlIGxhc3QgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpZiAob3IgKC89ICgxKyBlbmQpIGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOzsgdW5sZXNzIHRoZSBsYXN0IGxpbmUgaXMgbG9uZ2VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKC0gcm9vbSB3
aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh
cmVmIHJhZ3Mgc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFsYW5jZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkgMCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOzsgcGx1cyBhIHBlbmFsdHkgaWYgZW5kaW5nIG9uIHRoZSBz
dGFydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGEgbmV3IHNlbnRl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobnRoIDIgKGFyZWYg
d29yZHMgZW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5j
ZWQtZmlsbC1zaW5nbGUtcGVuYWx0eSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDs7IGFuZCBhIHBlbmFsdHkgaWYgc3RhcnRpbmcgd2l0aCBhIHNpbmdsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHdvcmQgYW5kIHRoZW4gYSBuZXcgc2VudGVu
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKDwgKDErIHN0
YXJ0KSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bnRoIDIgKGFyZWYgd29yZHMgKDErIHN0YXJ0KSkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYWxhbmNlZC1maWxsLXNpbmdsZS1wZW5hbHR5IDApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOzsgYW5kIGEgcGVuYWx0eSBmb3IgZWFjaCBicmVh
ay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxhbmNlZC1maWxsLWJyZWFr
LXBlbmFsdHkpKSkKKyAgICAgICAgICAgICAgICAgIDs7IEZvciBlbmRpbmcgYWZ0ZXIgaGVy
ZSwgaXMgdGhpcyBhIGJldHRlciBzdGFydGluZyBwbGFjZT8KKyAgICAgICAgICAgICAgICAg
ICh3aGVuIChhbmQgKDw9IGNvc3QgKGFyZWYgY29zdHMgKDErIGVuZCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAob3IgKDw9IHdpZHRoIHJvb20pICg9IGVuZCBzdGFydCkp
KQorICAgICAgICAgICAgICAgICAgICAoYXNldCBjb3N0cyAoMSsgZW5kKSBjb3N0KQorICAg
ICAgICAgICAgICAgICAgICAoYXNldCBzdGFydHMgKDErIGVuZCkgc3RhcnQpCisgICAgICAg
ICAgICAgICAgICAgIChhc2V0IHdpZHRocyAoMSsgZW5kKSB3aWR0aCkKKyAgICAgICAgICAg
ICAgICAgICAgKGFzZXQgcmFncyAoMSsgZW5kKSAoLSByb29tIHdpZHRoKSkpKQorICAgICAg
ICAgICAgICAgIDs7IEJyZWFrIHRoZSBpbm5lciAoZW5kKSBsb29wIGlmIHdlJ3JlIG91dCBv
ZiByb29tIG5vdy4KKyAgICAgICAgICAgICAgICAoaWYgKD49IHdpZHRoIHJvb20pCisgICAg
ICAgICAgICAgICAgICAgIChzZXRxIGVuZCBjb3VudCkpCisgICAgICAgICAgICAgICAgKHNl
dHEgZW5kICgxKyBlbmQpKSkpCisgICAgICAgICAgICAoc2V0cSBzdGFydCAoMSsgc3RhcnQp
KSkpCisKKyAgICAgICAgOzsgV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIG9mIHRoZSB0
YWJsZSB0byByZWNvbnN0cnVjdCBhIGxpc3QKKyAgICAgICAgOzsgb2YgdGhlIG9wdGltYWwg
d2lkdGhzIGZvciBlYWNoIGxpbmUuCisgICAgICAgIChsZXQgKGNob3NlbikKKyAgICAgICAg
ICAobGV0ICgoZW5kIGNvdW50KSkKKyAgICAgICAgICAgICh3aGlsZSAoPiBlbmQgMCkKKyAg
ICAgICAgICAgICAgKGlmICg8IGVuZCBjb3VudCkKKyAgICAgICAgICAgICAgICAgIChwdXNo
IChhcmVmIHdpZHRocyBlbmQpIGNob3NlbikpCisgICAgICAgICAgICAgIChzZXRxIGVuZCAo
YXJlZiBzdGFydHMgZW5kKSkpKQorCisgICAgICAgICAgOzsgVGhlbiBpbnNlcnQgdGhvc2Ug
bGluZSBicmVha3MgYW5kIGp1c3RpZnkgZWFjaCBsaW5lLgorICAgICAgICAgIChtYXBjIChs
YW1iZGEgKHdpZHRoKQorICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uICgrIChj
dXJyZW50LWNvbHVtbikgd2lkdGgpKQorICAgICAgICAgICAgICAgICAgKGZpbGwtbmV3bGlu
ZSkKKyAgICAgICAgICAgICAgICAgIChpZiBqdXN0aWZ5CisgICAgICAgICAgICAgICAgICAg
ICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1s
aW5lIC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgKGp1c3RpZnktY3VycmVudC1saW5l
IGp1c3RpZnkgbmlsIHQpKSkpCisgICAgICAgICAgICAgICAgY2hvc2VuKQorICAgICAgICAg
IChpZiBqdXN0aWZ5IChqdXN0aWZ5LWN1cnJlbnQtbGluZSBqdXN0aWZ5IHQgdCkpKSkpKSkK
KwogKGRlZnVuIGZpbGwtcmVnaW9uLWFzLXBhcmFncmFwaCAoZnJvbSB0byAmb3B0aW9uYWwg
anVzdGlmeQogCQkJCSAgICAgIG5vc3F1ZWV6ZSBzcXVlZXplLWFmdGVyKQogICAiRmlsbCB0
aGUgcmVnaW9uIGFzIGlmIGl0IHdlcmUgYSBzaW5nbGUgcGFyYWdyYXBoLgpAQCAtNzYyLDYg
Kzk4MywxMSBAQCBmaWxsLXJlZ2lvbi1hcy1wYXJhZ3JhcGgKIAogCTs7IFRoaXMgaXMgdGhl
IGFjdHVhbCBmaWxsaW5nIGxvb3AuCiAJKGdvdG8tY2hhciBmcm9tKQorICAgICAgICA7OyBB
dHRlbXB0IHRvIGJyZWFrIGludG8gYmFsYW5jZWQgbGluZXMgaWYgZGVzaXJlZC4KKyAgICAg
ICAgKHdoZW4gYmFsYW5jZWQtZmlsbC1tb2RlCisgICAgICAgICAgKGJhbGFuY2VkLWZpbGwt
LWJyZWFrLWxpbmVzIGZyb20gdG8ganVzdGlmeSkpCisgICAgICAgIDs7IE90aGVyd2lzZSAo
aWYgcG9pbnQgaXMgc3RpbGwgYXQgZnJvbSksIGZhbGwgYmFjayB0byB0aGUgc3RhbmRhcmQK
KyAgICAgICAgOzsgZ3JlZWR5IGxpbmUgYnJlYWtpbmcgbG9vcC4KIAkobGV0IChsaW5lYmVn
KQogICAgICAgICAgICh3aGlsZSAoPCAocG9pbnQpIHRvKQogCSAgICAoc2V0cSBsaW5lYmVn
IChwb2ludCkpCkBAIC0xMTE2LDcgKzEzNDIsOCBAQCBkZWZhdWx0LWp1c3RpZmljYXRpb24K
IAkJIChjb25zdCBmdWxsKQogCQkgKGNvbnN0IGNlbnRlcikKIAkJIChjb25zdCBub25lKSkK
LSAgOnNhZmUgJ3N5bWJvbHApCisgIDpzYWZlICdzeW1ib2xwCisgIDpncm91cCAnZmlsbCkK
IChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnZGVmYXVsdC1qdXN0aWZpY2F0aW9uKQog
CiAoZGVmdW4gY3VycmVudC1qdXN0aWZpY2F0aW9uICgpCmRpZmYgLS1naXQgYS90ZXN0L2xp
c3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwgYi90ZXN0L2xpc3AvdGV4dG1vZGVzL2ZpbGwt
dGVzdHMuZWwKaW5kZXggZWY4MjJiYTgwNWIuLjE4NTE5ZWI2OWE3IDEwMDY0NAotLS0gYS90
ZXN0L2xpc3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL3RleHRt
b2Rlcy9maWxsLXRlc3RzLmVsCkBAIC0xMjEsNiArMTIxLDI3IEBAIHRlc3QtZmlsbC1oYXNr
ZWxsCiAgIDs7IHcKICIpKSkKIAorKGVydC1kZWZ0ZXN0IGZpbGwtdGVzdC1iYWxhbmNlZC1m
aWxsLW1vZGUgbmlsCisgICJCYXNpYyB0ZXN0cyBvZiB0aGUgYGJhbGFuY2VkLWZpbGwtbW9k
ZScgb3B0aW9uLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaW5zZXJ0ICJDY2MgY2Nj
IGEgYmIgZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBlZWVlZSBhIGhoaGhoaGho
IGJiIGRkZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkKKyAgICAoc2V0cS1sb2Nh
bCBiYWxhbmNlZC1maWxsLW1vZGUgbmlsKQorICAgIChmaWxsLXBhcmFncmFwaCkKKyAgICAo
c2hvdWxkIChzdHJpbmc9IChidWZmZXItc3RyaW5nKSAiQ2NjIGNjYyBhIGJiXG5kZGRkIGJi
IGJiIGFcbmNjYyBhXG5qampqampqampqIGFcbmVlZWVlIGFcbmhoaGhoaGhoIGJiXG5kZGRk
LiIpKSkKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaW5zZXJ0ICJDY2MgY2NjIGEgYmIg
ZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBlZWVlZSBhIGhoaGhoaGhoIGJiIGRk
ZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkKKyAgICAoc2V0cS1sb2NhbCBiYWxh
bmNlZC1maWxsLW1vZGUgdCkKKyAgICAoZmlsbC1wYXJhZ3JhcGgpCisgICAgKHNob3VsZCAo
c3RyaW5nPSAoYnVmZmVyLXN0cmluZykgIkNjYyBjY2MgYVxuYmIgZGRkZCBiYlxuYmIgYSBj
Y2MgYVxuampqampqampqalxuYSBlZWVlZSBhXG5oaGhoaGhoaFxuYmIgZGRkZC4iKSkpCisg
ICh3aXRoLXRlbXAtYnVmZmVyCisgICAgKGluc2VydCAiQ2NjIGNjYyBhIGJiIGRkZGQgYmIg
YmIgYSBjY2MgYSBqampqampqampqIGEgZWVlZWUgYSBoaGhoaGhoaCBiYiBkZGRkLiIpCisg
ICAgKHNldHEgZmlsbC1jb2x1bW4gMTUpCisgICAgKHNldHEtbG9jYWwgYmFsYW5jZWQtZmls
bC1tb2RlIHQpCisgICAgKGZpbGwtcGFyYWdyYXBoICdmdWxsKQorICAgIChzaG91bGQgKHN0
cmluZz0gKGJ1ZmZlci1zdHJpbmcpICJDY2MgICAgY2NjICAgIGFcbmJiICAgIGRkZGQgICBi
YlxuYmIgICBhICBjY2MgICBhXG5qampqampqampqXG5hICAgIGVlZWVlICAgIGFcbmhoaGho
aGhoXG5iYiBkZGRkLiIpKSkpCisKIChwcm92aWRlICdmaWxsLXRlc3RzKQogCiA7OzsgZmls
bC10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuMTcuMQoK
--------------TWuQdg909FX6zFfWaIAMkuEw
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="benchmark-fill.el"
Content-Disposition: attachment; filename="benchmark-fill.el"
Content-Transfer-Encoding: base64

KGRlZnVuIGJlbmNobWFyay1maWxsICgpCiAgKGludGVyYWN0aXZlKQogIChkb3RpbWVzIChy
ZXBzIDMwKQogICAgKHdpdGgtdGVtcC1idWZmZXIKICAgICAgKGRvdGltZXMgKHJlcCByZXBz
KQogICAgICAgIChpbnNlcnQgIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCAiKQogICAgICAgIChpbnNlcnQgImRvIGVpdXNt
b2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSAiKQogICAg
ICAgIChpbnNlcnQgImFsaXF1YS4gIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uICIpCiAgICAgICAgKGluc2VydCAidWxsYW1jbyBsYWJvcmlz
IG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gICIpCiAgICAgICAg
KGluc2VydCAiRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9s
dXB0YXRlIHZlbGl0ICIpCiAgICAgICAgKGluc2VydCAiZXNzZSBjaWxsdW0gZG9sb3JlIGV1
IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gIEV4Y2VwdGV1ciBzaW50ICIpCiAgICAgICAgKGlu
c2VydCAib2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx
dWkgb2ZmaWNpYSAiKQogICAgICAgIChpbnNlcnQgImRlc2VydW50IG1vbGxpdCBhbmltIGlk
IGVzdCBsYWJvcnVtLiAgIikpCiAgICAgIChsZXQgKCh3b3JkcyAoY291bnQtd29yZHMtcmVn
aW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKICAgICAgICAgICAgKHRpbWUgKGN1cnJl
bnQtdGltZSkpKQogICAgICAgIChmaWxsLXBhcmFncmFwaCBuaWwgdCkKICAgICAgICAobWVz
c2FnZSAiV29yZHM6ICU0ZCwgVGltZTogJTAuNmYiCiAgICAgICAgICAgICAgICAgd29yZHMg
KGZsb2F0LXRpbWUgKHRpbWUtc2luY2UgdGltZSkpKSkpKSkK

--------------TWuQdg909FX6zFfWaIAMkuEw--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#61028; Package emacs. Full text available.

Message received at 61028 <at> debbugs.gnu.org:


Received: (at 61028) by debbugs.gnu.org; 23 Jan 2023 15:35:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 23 10:35:05 2023
Received: from localhost ([127.0.0.1]:55115 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJyqe-0004SJ-Jc
	for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 10:35:05 -0500
Received: from eggs.gnu.org ([209.51.188.92]:37020)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pJyqc-0004Rj-9D
 for 61028 <at> debbugs.gnu.org; Mon, 23 Jan 2023 10:35:03 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJyqW-0003Qh-73; Mon, 23 Jan 2023 10:34:56 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=mCtumc0axHnQy3sRZ/G5hKkWLvcGCaY/SvSytEPXEEo=; b=N033ukrq4DjL
 YZHm7MxgZLpXGrOXx4vGoUsY9wC7z6OhtI8Lx79Masig9aAwBRbiwB8MUUIvnewkY8/+bWgzGDapJ
 R5KJ7RiWH40k2XKj77w8cFbq4pVapd+j+fjs3ZzcDVH60umLuLGdyUPo+2NPU2VGVe4KX+afR5jcm
 yUvtaLgxxancLc/6GKJ4pKyqag+RfVriJLChOfgoHasFg2/RM60qm+yEHb3/EeAqeiU5peqFAajHI
 cPlZFfCktBYewOqEviKAwgRD3V9oLgrEY00M3OfEK+8VxxZ55iwHeYhRMVK6LTonLA2yZ3GNA8DHp
 ajWGcQmgvCU9PiUNvm265g==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJyqH-0003HV-4c; Mon, 23 Jan 2023 10:34:55 -0500
Date: Mon, 23 Jan 2023 17:34:48 +0200
Message-Id: <83mt69i7s7.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Andrew Kensler <andrew@HIDDEN>
In-Reply-To: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN> (message
 from Andrew Kensler on Mon, 23 Jan 2023 01:40:40 -0800)
Subject: Re: bug#61028: 30.0.50; [PATCH] [FEATURE] Balanced fill mode
References: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 61028
Cc: 61028 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Mon, 23 Jan 2023 01:40:40 -0800
> From: Andrew Kensler <andrew@HIDDEN>
> 
> The proposed patch attached adds a new minor balanced-fill-mode with an alternate line breaking algorithm
> for paragraph filling.  When enabled, it will try to neatly balance line lengths to reduce raggedness, avoid
> widows, avoid starting a new sentence on the last word of a line, avoid ending a sentence on the first word
> of a line, and so forth.  It is heavily inspired by the Knuth-Plass line breaking algorithm and uses dynamic
> programming to try to choose line breaks to minimize a cost function.
> 
> For example, consider the following mock paragraph as filled by the current greedy algorithm with the
> fill-column set to 15:
> 
> Ccc ccc a bb
> dddd bb bb a
> ccc a
> jjjjjjjjjj a
> eeeee a
> hhhhhhhh bb
> dddd.
> 
> With the new minor mode enabled, it would instead be filled much more nicely as:
> 
> Ccc ccc a
> bb dddd bb
> bb a ccc a
> jjjjjjjjjj
> a eeeee a
> hhhhhhhh
> bb dddd.
> 
> Often, the result is similar to simply having used a particular slightly narrower fill-column with the current
> greedy algorithm.  The advantage, however, is that it figures out the correct column automatically and
> per-paragraph.
> 
> The main piece of implementation is in the new (balanced-fill-break-lines) function in fill.el, with a modification
> to (fill-region-as-paragraph) to optionally call this before its current line breaking loop.  If it runs successfully,
> then point will be set to the end of the paragraph and that loop skipped.
> 
> Note that (fill-region-as-paragraph) has no hooks and is too monolithic to advise for this kind of thing, hence
> my hoping to upstream this change.
> 
> This is my first time contributing anything significant to Emacs or writing here.  I believe that the proposed
> patch covers all the major needs: the code itself, commit message, info documentation, announcement in
> NEWS, and a basic ERT test.  If there's anything I've missed or suggestions for improvements, please let
> me know.  (And I hope this is the correct mailing list and message format, too.)  I'll be happy to sign the
> copyright assignment paperwork if this looks like something you'd like to accept.

Thanks, I think this is a welcome feature.  Please see a few comments
below.  I will send you the form for copyright assignment off-list.

> +@node Balanced Fill
> +@subsection Balanced Filling

I find this subsection too detailed and lengthy.  I'm not sure we want
to describe all the customizable options that users can customize,
just the main ones.  Assuming the default values are chosen well,
chances are that most users will not need to customize too many of
them, and therefore the manual doesn't have to describe them; we just
need to mention that several more options are available, and perhaps
have a special group for them for easier discoverability.  WDYT?

My other concern about the documentation is that it seems to describe
the feature in a way that is too technical and uses terminology from
the field of optimizations.  I'm afraid that users without background
in optimizations will have difficulty understanding some of the
options.  Can you try describing this in a less formal manner, so as
to make it easier to understand?

> +  For example, if @code{fill-column} is 60 and balanced filling is
> +disabled then the greedy algorithm will fill the following paragraph
> +like so:
> +
> +@smallexample
> +"It's not too far-fetched to say that the best programs are
> +the ones written when the programmer is supposed to be
> +working on something else...  Very good things happen when
> +management is enlightened enough to appreciate the
> +importance of allowing programmers some free time for
> +projects of this sort."  --Melinda Varian
> +@end smallexample
> +
> +@noindent
> +while enabling the balanced filling will instead produce the following
> +with slightly shorter but more even line lengths:
> +
> +@smallexample
> +"It's not too far-fetched to say that the best programs
> +are the ones written when the programmer is supposed to
> +be working on something else...  Very good things happen
> +when management is enlightened enough to appreciate the
> +importance of allowing programmers some free time for
> +projects of this sort."  -- Melinda Varian
> +@end smallexample

This example is too long.  I suggest to find a shorter one.  I think
an example with 3 lines should be enough to explain the feature.

> --- a/etc/NEWS
> +++ b/etc/NEWS
> @@ -53,6 +53,12 @@ trash when deleting.  Default is nil.
>  
>  * Editing Changes in Emacs 30.1
>  
> +** Filling can now try to break lines evenly.
> +The new user option 'balanced-fill-mode' can be set to non-nil to
> +make filling consider the entire paragraph at a time and try to
> +place line breaks optimally to look more neat and even, according
> +to a cost function.  This is inspired by the Knuth-Plass algorithm.

This should mention at least a few main options that control the
feature.

> +(define-minor-mode balanced-fill-mode
> +  "Toggle whether filling should try to neatly balance line lengths.
> +
> +When enabled, filling will consider the entire paragraph and
> +try to optimally choose a set of line breaks to minimize a
> +cost function that penalizes untidy paragraphs.  This may
> +place line breaks sooner than necessary if it improves later
> +lines.  When disabled, filling uses the traditional greedy line
> +breaking algorithm.

Likewise here: this doc string is too abstract and thus hard to grok.
Talking about minimization of a cost function that penalizes something
only helps if one has some background in that domain.  I'd instead try
to say something like "fills the entire paragraph avoiding too short
lines" or something similar.

> +(defcustom balanced-fill-maximum-words 500
> +  "Maximum limit on the number of words that the balanced fill
> +algorithm will attempt to process in a single paragraph.  If

The first line of a doc string should be a single complete sentence
(here and elsewhere in the patch).  This is important because the
various "apropos" commands show only the first line of the doc string.

> +(defcustom balanced-fill-length-exponent 3
> +  "Controls the penalty for lines that are shorter or longer than
> +the target length to the margin.  The difference between the
> +actual and target length will be raised to this power when
> +calculating the cost of a potential line break.  This is the
> +main control for the cost function."
> +  :version "30.1"
> +  :type 'integer
> +  :group 'fill)
> +
> +(defcustom balanced-fill-raggedness-penalty 40
> +  "Additional penalty for each column of difference in length
> +relative to the previous line, unless this is the last line
> +and longer than second to last.  Higher numbers make it try
> +harder to keep all lines as even as possible in length at the
> +expense of other factors."
> +  :version "30.1"
> +  :type 'integer
> +  :group 'fill)
> +
> +(defcustom balanced-fill-single-penalty 150
> +  "Additional penalty either for starting a new sentence with a
> +single word right at the end of a line, or else for ending a
> +sentence with a single word left at the start of a line."
> +  :version "30.1"
> +  :type 'integer
> +  :group 'fill)
> +
> +(defcustom balanced-fill-break-penalty 50
> +  "Additional penalty for each line break added.  The larger this
> +is, the more the algorithm will try to minimize the number of
> +lines despite the other penalties."
> +  :version "30.1"
> +  :type 'integer
> +  :group 'fill)

These options are probably related, in that changing one needs a
suitable change in others to make sense.  If this is indeed so, please
mention the relations in the doc strings.  You say "Additional", but
that is meaningless when each doc string is read separately
(additional to what?)

> +(defun balanced-fill-break-lines (from to justify)
> +  ;; Build a table of visible word widths, with and without any preceding
> +  ;; spaces, along with whether the word starts a new sentence.  We go by
> +  ;; columns and not chars to handle invisible text (especially invisible
> +  ;; spaces), etc.

If this is an internal function, please use our convention of naming
it with double dash, as in balanced-fill--break-lines.  If this is
supposed to be a public function, it should have a doc string.

Last, but not least: what about performance?  Is this performant
enough to apply to large enough paragraphs, including via
auto-fill-mode?  Can you provide some measurements?

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#61028; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 23 Jan 2023 14:26:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 23 09:26:54 2023
Received: from localhost ([127.0.0.1]:53744 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJxme-0002HT-Mv
	for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 09:26:54 -0500
Received: from lists.gnu.org ([209.51.188.17]:53692)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <andrew@HIDDEN>) id 1pJtK2-0006Sv-I4
 for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 04:41:06 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <andrew@HIDDEN>)
 id 1pJtJz-0003XL-LB
 for bug-gnu-emacs@HIDDEN; Mon, 23 Jan 2023 04:40:59 -0500
Received: from smtp1.phpwebhosting.com ([184.154.71.7])
 by eggs.gnu.org with smtp (Exim 4.90_1)
 (envelope-from <andrew@HIDDEN>) id 1pJtJv-0002Ff-OE
 for bug-gnu-emacs@HIDDEN; Mon, 23 Jan 2023 04:40:59 -0500
Received: (qmail 13649 invoked from network); 23 Jan 2023 09:40:43 -0000
Received: from unknown (HELO [10.0.0.107])
 (andrew@HIDDEN@76.121.228.80)
 by smtp1.phpwebhosting.com with (AES128-SHA encrypted) SMTP;
 Mon, 23 Jan 2023 04:40:43 -0500
Content-Type: multipart/mixed; boundary="------------U6U1i80qvZoNZsVAvkQDbBAD"
Message-ID: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN>
Date: Mon, 23 Jan 2023 01:40:40 -0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
 Thunderbird/102.4.2
Content-Language: en-US
From: Andrew Kensler <andrew@HIDDEN>
Subject: 30.0.50; [PATCH] [FEATURE] Balanced fill mode
To: bug-gnu-emacs@HIDDEN
Received-SPF: pass client-ip=184.154.71.7;
 envelope-from=andrew@HIDDEN; helo=smtp1.phpwebhosting.com
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.6 (-)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Mon, 23 Jan 2023 09:26:51 -0500
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.6 (--)

This is a multi-part message in MIME format.
--------------U6U1i80qvZoNZsVAvkQDbBAD
Content-Type: multipart/alternative;
 boundary="------------DMMHH5AewF0FsJS0qvME5UwC"

--------------DMMHH5AewF0FsJS0qvME5UwC
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Greetings all,

The proposed patch attached adds a new minor balanced-fill-mode with an 
alternate line breaking algorithm for paragraph filling.  When enabled, 
it will try to neatly balance line lengths to reduce raggedness, avoid 
widows, avoid starting a new sentence on the last word of a line, avoid 
ending a sentence on the first word of a line, and so forth.  It is 
heavily inspired by the Knuth-Plass line breaking algorithm and uses 
dynamic programming to try to choose line breaks to minimize a cost 
function.

For example, consider the following mock paragraph as filled by the 
current greedy algorithm with the fill-column set to 15:

Ccc ccc a bb
dddd bb bb a
ccc a
jjjjjjjjjj a
eeeee a
hhhhhhhh bb
dddd.

With the new minor mode enabled, it would instead be filled much more 
nicely as:

Ccc ccc a
bb dddd bb
bb a ccc a
jjjjjjjjjj
a eeeee a
hhhhhhhh
bb dddd.

Often, the result is similar to simply having used a particular slightly 
narrower fill-column with the current greedy algorithm.  The advantage, 
however, is that it figures out the correct column automatically and 
per-paragraph.

The main piece of implementation is in the new 
(balanced-fill-break-lines) function in fill.el, with a modification to 
(fill-region-as-paragraph) to optionally call this before its current 
line breaking loop.  If it runs successfully, then point will be set to 
the end of the paragraph and that loop skipped.

Note that (fill-region-as-paragraph) has no hooks and is too monolithic 
to advise for this kind of thing, hence my hoping to upstream this change.

This is my first time contributing anything significant to Emacs or 
writing here.  I believe that the proposed patch covers all the major 
needs: the code itself, commit message, info documentation, announcement 
in NEWS, and a basic ERT test.  If there's anything I've missed or 
suggestions for improvements, please let me know. (And I hope this is 
the correct mailing list and message format, too.)  I'll be happy to 
sign the copyright assignment paperwork if this looks like something 
you'd like to accept.

Cheers,
- Andrew

--------------DMMHH5AewF0FsJS0qvME5UwC
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Greetings all,</p>
    <p>The proposed patch attached adds a new minor <font
        face="monospace">balanced-fill-mode</font> with an alternate
      line breaking algorithm for paragraph filling.  When enabled, it
      will try to neatly balance line lengths to reduce raggedness,
      avoid widows, avoid starting a new sentence on the last word of a
      line, avoid ending a sentence on the first word of a line, and so
      forth.  It is heavily inspired by the Knuth-Plass line breaking
      algorithm and uses dynamic programming to try to choose line
      breaks to minimize a cost function.<br>
    </p>
    <p>For example, consider the following mock paragraph as filled by
      the current greedy algorithm with the <font face="monospace">fill-column</font>
      set to 15:</p>
    <pre>Ccc ccc a bb
dddd bb bb a
ccc a
jjjjjjjjjj a
eeeee a
hhhhhhhh bb
dddd.
</pre>
    <p>With the new minor mode enabled, it would instead be filled much
      more nicely as:</p>
    <pre>Ccc ccc a
bb dddd bb
bb a ccc a
jjjjjjjjjj
a eeeee a
hhhhhhhh
bb dddd.
</pre>
    <p>Often, the result is similar to simply having used a particular
      slightly narrower <font face="monospace">fill-column</font> with
      the current greedy algorithm.  The advantage, however, is that it
      figures out the correct column automatically and per-paragraph.</p>
    <p>The main piece of implementation is in the new <font
        face="monospace">(balanced-fill-break-lines)</font> function in
      <font face="monospace">fill.el</font>, with a modification to <font
        face="monospace">(fill-region-as-paragraph)</font> to optionally
      call this before its current line breaking loop.  If it runs
      successfully, then point will be set to the end of the paragraph
      and that loop skipped.</p>
    <p>Note that <font face="monospace">(fill-region-as-paragraph)</font>
      has no hooks and is too monolithic to advise for this kind of
      thing, hence my hoping to upstream this change.</p>
    <p>This is my first time contributing anything significant to Emacs
      or writing here.  I believe that the proposed patch covers all the
      major needs: the code itself, commit message, info documentation,
      announcement in NEWS, and a basic ERT test.  If there's anything
      I've missed or suggestions for improvements, please let me know. 
      (And I hope this is the correct mailing list and message format,
      too.)  I'll be happy to sign the copyright assignment paperwork if
      this looks like something you'd like to accept.</p>
    <p>Cheers,<br>
      - Andrew<br>
    </p>
  </body>
</html>

--------------DMMHH5AewF0FsJS0qvME5UwC--

--------------U6U1i80qvZoNZsVAvkQDbBAD
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Add-new-minor-balanced-fill-mode-to-filling.patch"
Content-Disposition: attachment;
 filename="0001-Add-new-minor-balanced-fill-mode-to-filling.patch"
Content-Transfer-Encoding: base64

RnJvbSAyMGY4MzdhMTE5N2JkZjNjYzExODk2ZjIxNGIwZjMwMzI3YjY4MzdjIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgS2Vuc2xlciA8YW5kcmV3QGVhc3RmYXJ0
aGluZy5jb20+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMjMgMTg6MTc6NDEgLTA4MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgbmV3IG1pbm9yIGBiYWxhbmNlZC1maWxsLW1vZGVgIHRvIGZpbGxp
bmcKCldoZW4gZW5hYmxlZCwgZmlsbGluZyB3aWxsIGNvbnNpZGVyIHRoZSBlbnRpcmUgcGFy
YWdyYXBoIGF0IGEKdGltZSBhbmQgdHJ5IHRvIHBsYWNlIGxpbmUgYnJlYWtzIG9wdGltYWxs
eSB0byBsb29rIG1vcmUgbmVhdAphbmQgZXZlbiwgYWNjb3JkaW5nIHRvIGEgY29zdCBmdW5j
dGlvbi4gIFRoaXMgaXMgaW5zcGlyZWQgYnkgdGhlCktudXRoLVBsYXNzIGFsZ29yaXRobS4K
CiogbGlzcC90ZXh0bW9kZXMvZmlsbC5lbAooYmFsYW5jZWQtZmlsbC1tb2RlKQooYmFsYW5j
ZWQtZmlsbC1tYXhpbXVtLXdvcmRzKQooYmFsYW5jZWQtZmlsbC1tYXJnaW4pCihiYWxhbmNl
ZC1maWxsLXdpZG93cykKKGJhbGFuY2VkLWZpbGwtbGVuZ3RoLWV4cG9uZW50KQooYmFsYW5j
ZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkpCihiYWxhbmNlZC1maWxsLXNpbmdsZS1wZW5h
bHR5KQooYmFsYW5jZWQtZmlsbC1icmVhay1wZW5hbHR5KTogTmV3IHZhcmlhYmxlcy4KKGJh
bGFuY2VkLWZpbGwtYnJlYWstbGluZXMpOiBOZXcgbGluZSBicmVha2luZyBmdW5jdGlvbi4K
KGZpbGwtcmVnaW9uLWFzLXBhcmFncmFwaCk6IFVzZSBpdCB0byBmaWxsIHBhcmFncmFwaHMu
CgoqIHRlc3QvbGlzcC90ZXh0bW9kZXMvZmlsbC10ZXN0cy5lbDogQWRkIHNtb2tlIHRlc3Qg
Zm9yIGl0LgoKKiBkb2MvZW1hY3MvZW1hY3MudGV4aSAoVG9wKToKKiBkb2MvZW1hY3MvdGV4
dC50ZXhpIChGaWxsaW5nIFRleHQpOiBEb2N1bWVudCBpdC4KCiogZXRjL05FV1M6IEFubm91
bmNlIGl0LgotLS0KIGRvYy9lbWFjcy9lbWFjcy50ZXhpICAgICAgICAgICAgICB8ICAgMSAr
CiBkb2MvZW1hY3MvdGV4dC50ZXhpICAgICAgICAgICAgICAgfCAgOTEgKysrKysrKysrKysr
KwogZXRjL05FV1MgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGxpc3AvdGV4
dG1vZGVzL2ZpbGwuZWwgICAgICAgICAgICB8IDIxNCArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIHRlc3QvbGlzcC90ZXh0bW9kZXMvZmlsbC10ZXN0cy5lbCB8ICAxNSArKysK
IDUgZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mv
ZW1hY3MvZW1hY3MudGV4aSBiL2RvYy9lbWFjcy9lbWFjcy50ZXhpCmluZGV4IGI2ZDE0OWVi
M2UuLmJhYmQ0ODdmYmQgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9lbWFjcy50ZXhpCisrKyBi
L2RvYy9lbWFjcy9lbWFjcy50ZXhpCkBAIC02MTYsNiArNjE2LDcgQEAgVG9wCiAqIEZpbGwg
UHJlZml4OjogICAgICAgICBGaWxsaW5nIHBhcmFncmFwaHMgdGhhdCBhcmUgaW5kZW50ZWQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW4gYSBjb21tZW50LCBldGMuCiAqIEFk
YXB0aXZlIEZpbGw6OiAgICAgICBIb3cgRW1hY3MgY2FuIGRldGVybWluZSB0aGUgZmlsbCBw
cmVmaXggYXV0b21hdGljYWxseS4KKyogQmFsYW5jZWQgRmlsbDo6ICAgICAgIEJyZWFraW5n
IGxpbmVzIHRvIGxvb2sgbW9yZSBldmVuIGFuZCBuZWF0LgogCiBPdXRsaW5lIE1vZGUKIApk
aWZmIC0tZ2l0IGEvZG9jL2VtYWNzL3RleHQudGV4aSBiL2RvYy9lbWFjcy90ZXh0LnRleGkK
aW5kZXggNmUxNmU3NDNhNS4uMjUxNDUyZGYxNyAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL3Rl
eHQudGV4aQorKysgYi9kb2MvZW1hY3MvdGV4dC50ZXhpCkBAIC00OTcsNiArNDk3LDcgQEAg
RmlsbGluZwogKiBGaWxsIENvbW1hbmRzOjogIENvbW1hbmRzIHRvIHJlZmlsbCBwYXJhZ3Jh
cGhzIGFuZCBjZW50ZXIgbGluZXMuCiAqIEZpbGwgUHJlZml4OjogICAgRmlsbGluZyBwYXJh
Z3JhcGhzIHRoYXQgYXJlIGluZGVudGVkIG9yIGluIGEgY29tbWVudCwgZXRjLgogKiBBZGFw
dGl2ZSBGaWxsOjogIEhvdyBFbWFjcyBjYW4gZGV0ZXJtaW5lIHRoZSBmaWxsIHByZWZpeCBh
dXRvbWF0aWNhbGx5LgorKiBCYWxhbmNlZCBGaWxsOjogIEJyZWFraW5nIGxpbmVzIHRvIGxv
b2sgbW9yZSBldmVuIGFuZCBuZWF0LgogQGVuZCBtZW51CiAKIEBub2RlIEF1dG8gRmlsbApA
QCAtODI4LDYgKzgyOSw5NiBAQCBBZGFwdGl2ZSBGaWxsCiBsaW5lLiAgSWYgaXQgcmV0dXJu
cyBAY29kZXtuaWx9LCBAY29kZXthZGFwdGl2ZS1maWxsLXJlZ2V4cH0gZ2V0cwogYSBjaGFu
Y2UgdG8gZmluZCBhIHByZWZpeC4KIAorQG5vZGUgQmFsYW5jZWQgRmlsbAorQHN1YnNlY3Rp
b24gQmFsYW5jZWQgRmlsbGluZworCitAY2luZGV4IGJhbGFuY2VkIGZpbGxpbmcKKyAgRmls
bGluZyBjYW4gY29uc2lkZXIgYW4gZW50aXJlIHBhcmFncmFwaCBhdCBhIHRpbWUgd2hlbiBk
ZXRlcm1pbmluZword2hlcmUgdG8gcGxhY2UgbGluZSBicmVha3MsIGFzIGFuIGFsdGVybmF0
aXZlIHRvIGp1c3QgZ3JlZWRpbHkKK2luc2VydGluZyBhIGJyZWFrIGFmdGVyIHRoZSBsYXN0
IHdvcmQgdGhhdCBmaXRzIG9uIGVhY2ggbGluZS4KKworICBJbiB0aGlzIG1vZGUsIGl0IHdp
bGwgdHJ5IHRvIG9wdGltYWxseSBjaG9vc2UgdGhlIHNldCBvZiBsaW5lCiticmVha3MgdG8g
bWluaW1pemUgYSBjb3N0IGZ1bmN0aW9uIHRoYXQgcGVuYWxpemVzIHVudGlkeSBwYXJhZ3Jh
cGhzLgorVGhpcyBtYXkgcGxhY2UgbGluZSBicmVha3Mgc29vbmVyIHRoYW4gbmVjZXNzYXJ5
IGlmIGl0IGltcHJvdmVzCitsYXRlciBsaW5lcy4KKworICBGb3IgZXhhbXBsZSwgaWYgQGNv
ZGV7ZmlsbC1jb2x1bW59IGlzIDYwIGFuZCBiYWxhbmNlZCBmaWxsaW5nIGlzCitkaXNhYmxl
ZCB0aGVuIHRoZSBncmVlZHkgYWxnb3JpdGhtIHdpbGwgZmlsbCB0aGUgZm9sbG93aW5nIHBh
cmFncmFwaAorbGlrZSBzbzoKKworQHNtYWxsZXhhbXBsZQorIkl0J3Mgbm90IHRvbyBmYXIt
ZmV0Y2hlZCB0byBzYXkgdGhhdCB0aGUgYmVzdCBwcm9ncmFtcyBhcmUKK3RoZSBvbmVzIHdy
aXR0ZW4gd2hlbiB0aGUgcHJvZ3JhbW1lciBpcyBzdXBwb3NlZCB0byBiZQord29ya2luZyBv
biBzb21ldGhpbmcgZWxzZS4uLiAgVmVyeSBnb29kIHRoaW5ncyBoYXBwZW4gd2hlbgorbWFu
YWdlbWVudCBpcyBlbmxpZ2h0ZW5lZCBlbm91Z2ggdG8gYXBwcmVjaWF0ZSB0aGUKK2ltcG9y
dGFuY2Ugb2YgYWxsb3dpbmcgcHJvZ3JhbW1lcnMgc29tZSBmcmVlIHRpbWUgZm9yCitwcm9q
ZWN0cyBvZiB0aGlzIHNvcnQuIiAgLS1NZWxpbmRhIFZhcmlhbgorQGVuZCBzbWFsbGV4YW1w
bGUKKworQG5vaW5kZW50Cit3aGlsZSBlbmFibGluZyB0aGUgYmFsYW5jZWQgZmlsbGluZyB3
aWxsIGluc3RlYWQgcHJvZHVjZSB0aGUgZm9sbG93aW5nCit3aXRoIHNsaWdodGx5IHNob3J0
ZXIgYnV0IG1vcmUgZXZlbiBsaW5lIGxlbmd0aHM6CisKK0BzbWFsbGV4YW1wbGUKKyJJdCdz
IG5vdCB0b28gZmFyLWZldGNoZWQgdG8gc2F5IHRoYXQgdGhlIGJlc3QgcHJvZ3JhbXMKK2Fy
ZSB0aGUgb25lcyB3cml0dGVuIHdoZW4gdGhlIHByb2dyYW1tZXIgaXMgc3VwcG9zZWQgdG8K
K2JlIHdvcmtpbmcgb24gc29tZXRoaW5nIGVsc2UuLi4gIFZlcnkgZ29vZCB0aGluZ3MgaGFw
cGVuCit3aGVuIG1hbmFnZW1lbnQgaXMgZW5saWdodGVuZWQgZW5vdWdoIHRvIGFwcHJlY2lh
dGUgdGhlCitpbXBvcnRhbmNlIG9mIGFsbG93aW5nIHByb2dyYW1tZXJzIHNvbWUgZnJlZSB0
aW1lIGZvcgorcHJvamVjdHMgb2YgdGhpcyBzb3J0LiIgIC0tIE1lbGluZGEgVmFyaWFuCitA
ZW5kIHNtYWxsZXhhbXBsZQorCitAZmluZGV4IGJhbGFuY2VkLWZpbGwtbW9kZQorQHZpbmRl
eCBiYWxhbmNlZC1maWxsLW1vZGUKKyAgQmFsYW5jZWQgRmlsbCBtb2RlIGlzIGRpc2FibGVk
IGJ5IGRlZmF1bHQuICBUbyB0b2dnbGUgaXQgZ2xvYmFsbHksCit0eXBlIEBrYmR7TS14IGJh
bGFuY2VkLWZpbGwtbW9kZX0uCisKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC1tYXhpbXVtLXdv
cmRzCisgIEZvciBzcGVlZCwgdGhlIG1heGltdW0gbGltaXQgb24gdGhlIG51bWJlciBvZiB3
b3JkcyB0aGF0IHRoZQorYmFsYW5jZWQgZmlsbCBhbGdvcml0aG0gd2lsbCBhdHRlbXB0IHRv
IHByb2Nlc3MgaW4gYSBzaW5nbGUgcGFyYWdyYXBoCitpcyBjb250cm9sbGVkIGJ5IEBjb2Rl
e2JhbGFuY2VkLWZpbGwtbWF4aW11bS13b3Jkc30uICBJZiB0aGUgbnVtYmVyCitvZiB3b3Jk
cyBpbiB0aGUgcGFyYWdyYXBoIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlbiBmaWxsaW5nIHdp
bGwgZmFsbAorYmFjayB0byB0aGUgZmFzdGVyIGdyZWVkeSBhbGdvcml0aG0uCisKKyAgVGhl
IGNvc3QgZnVuY3Rpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gcGxhY2UgdGhlIGxp
bmUgYnJlYWtzCitjYW4gYmUgdHVuZWQgdGhyb3VnaCBzZXZlcmFsIHZhcmlhYmxlcy4KKwor
QHZpbmRleCBiYWxhbmNlZC1maWxsLW1hcmdpbgorICBTZXQgQGNvZGV7YmFsYW5jZWQtZmls
bC1tYXJnaW59IHRvIHRoZSBudW1iZXIgb2YgY29sdW1ucyBiZWZvcmUKK3RoZSBmaWxsLWNv
bHVtbiB0aGF0IHRoZSBiYWxhbmNlZCBmaWxsIGFsZ29yaXRobSBzaG91bGQgYXR0ZW1wdAor
dG8gYnJlYWsgbGluZXMgYXQuICBBdHRlbXB0aW5nIHRvIGJyZWFrIGxpbmVzIHNsaWdodGx5
IHNob3J0CitvZiB0aGUgQGNvZGV7ZmlsbC1jb2x1bW59IGJ1dCBiZWluZyBhbGxvd2VkIHRv
IGdvIHVwIHRvIHRoZQorQGNvZGV7ZmlsbC1jb2x1bW59IGNhbiBoZWxwIHRvIG1ha2UgdGhl
IGxpbmVzIG1vcmUgZXZlbiBpbiBsZW5ndGguCisKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC13
aWRvd3MKKyAgU2V0IEBjb2Rle2JhbGFuY2VkLWZpbGwtd2lkb3dzfSB0byB0aGUgbWluaW11
bSBudW1iZXIgb2Ygd29yZHMgdGhhdAordGhlIGFsZ29yaXRobSBzaG91bGQgYXR0ZW1wdCB0
byBsZWF2ZSBvbiB0aGUgbGFzdCBsaW5lIG9mIGEgcGFyYWdyYXBoLgorSWYgdGhpcyBpcyBz
ZXQgdG8gYW4gZXh0cmVtZWx5IGhpZ2ggbnVtYmVyLCB0aGVuIHRoZSBiYWxhbmNlZCBmaWxs
aW5nCit3aWxsIGdlbmVyYWxseSB0cnkgdG8gbWFrZSB0aGUgbGFzdCBsaW5lIGFzIGZ1bGwg
YXMgYWxsIHRoZSBvdGhlcnMuCisKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC1sZW5ndGgtZXhw
b25lbnQKKyAgVGhlIEBjb2Rle2JhbGFuY2VkLWZpbGwtbGVuZ3RoLWV4cG9uZW50fSBpcyB0
aGUgbWFpbiBjb250cm9sIG9uIHRoZQorY29zdCBmdW5jdGlvbi4gIEl0IGFmZmVjdHMgdGhl
IHBlbmFsdHkgZm9yIGxpbmVzIHRoYXQgYXJlIHNob3J0ZXIgb3IKK2xvbmdlciB0aGFuIHRo
ZSB0YXJnZXQgbGVuZ3RoIHRvIHRoZSBtYXJnaW4uICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVu
Cit0aGUgdHdvIGxlbmd0aHMgd2lsbCBiZSByYWlzZWQgdG8gdGhpcyBwb3dlciB3aGVuIGNh
bGN1bGF0aW5nIHRoZQorY29zdCBvZiBhIHBvdGVudGlhbCBsaW5lIGJyZWFrLgorCitAdmlu
ZGV4IGJhbGFuY2VkLWZpbGwtcmFnZ2VkbmVzcy1wZW5hbHR5CitAdmluZGV4IGJhbGFuY2Vk
LWZpbGwtc2luZ2xlLXBlbmFsdHkKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC1icmVhay1wZW5h
bHR5CisgIFRoZXJlIGFyZSBhbHNvIHNldmVyYWwgbWlub3IgYWRkaXRpdmUgcGVuYWx0aWVz
IHRvIGhlbHAgaW1wcm92ZQordGhlIGFwcGVhcmFuY2UuICBUaGUgQGNvZGV7YmFsYW5jZWQt
ZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHl9IGFwcGxpZXMKK2ZvciBlYWNoIGNvbHVtbiBvZiBk
aWZmZXJlbmNlIGluIGxlbmd0aCBmb3IgYSBsaW5lIHJlbGF0aXZlIHRvIHRoZQorcHJldmlv
dXMgbGluZSwgdW5sZXNzIHRoaXMgaXMgdGhlIGxhc3QgbGluZSBhbmQgbG9uZ2VyIHRoYW4g
c2Vjb25kCit0byBsYXN0LiAgSGlnaGVyIG51bWJlcnMgbWFrZSBpdCB0cnkgaGFyZGVyIHRv
IGtlZXAgYWxsIGxpbmVzIGFzCitldmVuIGFzIHBvc3NpYmxlIGluIGxlbmd0aCBhdCB0aGUg
ZXhwZW5zZSBvZiBvdGhlciBmYWN0b3JzLiAgVGhlCitAY29kZXtiYWxhbmNlZC1maWxsLXNp
bmdsZS1wZW5hbHR5fSBpcyBhZGRlZCBlaXRoZXIgZm9yIHN0YXJ0aW5nIGEKK25ldyBzZW50
ZW5jZSB3aXRoIGEgc2luZ2xlIHdvcmQgcmlnaHQgYXQgdGhlIGVuZCBvZiBhIGxpbmUsIG9y
IGVsc2UKK2ZvciBlbmRpbmcgYSBzZW50ZW5jZSB3aXRoIGEgc2luZ2xlIHdvcmQgbGVmdCBh
dCB0aGUgc3RhcnQgb2YgYSBsaW5lLgorRmluYWxseSwgdGhlcmUgaXMgYSBAY29kZXtiYWxh
bmNlZC1maWxsLWJyZWFrLXBlbmFsdHl9IGZvciBlYWNoIGxpbmUKK2JyZWFrIGFkZGVkLiAg
VGhlIGxhcmdlciB0aGlzIGlzLCB0aGUgbW9yZSB0aGUgYWxnb3JpdGhtIHdpbGwgdHJ5IHRv
CittaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIGRlc3BpdGUgdGhlIG90aGVyIHBlbmFs
dGllcy4KKwogQG5vZGUgQ2FzZQogQHNlY3Rpb24gQ2FzZSBDb252ZXJzaW9uIENvbW1hbmRz
CiBAY2luZGV4IGNhc2UgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMv
TkVXUwppbmRleCAxMGU5MWVjNGFiLi4xMzc5YjJkOTBhIDEwMDY0NAotLS0gYS9ldGMvTkVX
UworKysgYi9ldGMvTkVXUwpAQCAtNTMsNiArNTMsMTIgQEAgdHJhc2ggd2hlbiBkZWxldGlu
Zy4gIERlZmF1bHQgaXMgbmlsLgogDAogKiBFZGl0aW5nIENoYW5nZXMgaW4gRW1hY3MgMzAu
MQogCisqKiBGaWxsaW5nIGNhbiBub3cgdHJ5IHRvIGJyZWFrIGxpbmVzIGV2ZW5seS4KK1Ro
ZSBuZXcgdXNlciBvcHRpb24gJ2JhbGFuY2VkLWZpbGwtbW9kZScgY2FuIGJlIHNldCB0byBu
b24tbmlsIHRvCittYWtlIGZpbGxpbmcgY29uc2lkZXIgdGhlIGVudGlyZSBwYXJhZ3JhcGgg
YXQgYSB0aW1lIGFuZCB0cnkgdG8KK3BsYWNlIGxpbmUgYnJlYWtzIG9wdGltYWxseSB0byBs
b29rIG1vcmUgbmVhdCBhbmQgZXZlbiwgYWNjb3JkaW5nCit0byBhIGNvc3QgZnVuY3Rpb24u
ICBUaGlzIGlzIGluc3BpcmVkIGJ5IHRoZSBLbnV0aC1QbGFzcyBhbGdvcml0aG0uCisKIC0t
LQogKiogTmV3IGNvbW1hbmQgJ2tpbGwtbWF0Y2hpbmctYnVmZmVycy1uby1hc2snLgogVGhp
cyB3b3JrcyBsaWtlICdraWxsLW1hdGNoaW5nLWJ1ZmZlcnMnLCBidXQgd2l0aG91dCBhc2tp
bmcgZm9yCmRpZmYgLS1naXQgYS9saXNwL3RleHRtb2Rlcy9maWxsLmVsIGIvbGlzcC90ZXh0
bW9kZXMvZmlsbC5lbAppbmRleCAyZmRlMmZmNmM0Li5jODdiMGFmZDNhIDEwMDY0NAotLS0g
YS9saXNwL3RleHRtb2Rlcy9maWxsLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVzL2ZpbGwuZWwK
QEAgLTEzMiw2ICsxMzIsODYgQEAgYWRhcHRpdmUtZmlsbC1mdW5jdGlvbgogICA6dmVyc2lv
biAiMjcuMSIKICAgOnR5cGUgJ2Z1bmN0aW9uKQogCisoZGVmaW5lLW1pbm9yLW1vZGUgYmFs
YW5jZWQtZmlsbC1tb2RlCisgICJUb2dnbGUgd2hldGhlciBmaWxsaW5nIHNob3VsZCB0cnkg
dG8gbmVhdGx5IGJhbGFuY2UgbGluZSBsZW5ndGhzLgorCitXaGVuIGVuYWJsZWQsIGZpbGxp
bmcgd2lsbCBjb25zaWRlciB0aGUgZW50aXJlIHBhcmFncmFwaCBhbmQKK3RyeSB0byBvcHRp
bWFsbHkgY2hvb3NlIGEgc2V0IG9mIGxpbmUgYnJlYWtzIHRvIG1pbmltaXplIGEKK2Nvc3Qg
ZnVuY3Rpb24gdGhhdCBwZW5hbGl6ZXMgdW50aWR5IHBhcmFncmFwaHMuICBUaGlzIG1heQor
cGxhY2UgbGluZSBicmVha3Mgc29vbmVyIHRoYW4gbmVjZXNzYXJ5IGlmIGl0IGltcHJvdmVz
IGxhdGVyCitsaW5lcy4gIFdoZW4gZGlzYWJsZWQsIGZpbGxpbmcgdXNlcyB0aGUgdHJhZGl0
aW9uYWwgZ3JlZWR5IGxpbmUKK2JyZWFraW5nIGFsZ29yaXRobS4KKworU2VlIEluZm8gbm9k
ZSBgKGVtYWNzKSBCYWxhbmNlZCBGaWxsJyBmb3IgbW9yZSBkZXRhaWxzLiIKKyAgOmdsb2Jh
bCB0CisgIDp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ2Zp
bGwpCisKKyhkZWZjdXN0b20gYmFsYW5jZWQtZmlsbC1tYXhpbXVtLXdvcmRzIDUwMAorICAi
TWF4aW11bSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHdvcmRzIHRoYXQgdGhlIGJhbGFuY2Vk
IGZpbGwKK2FsZ29yaXRobSB3aWxsIGF0dGVtcHQgdG8gcHJvY2VzcyBpbiBhIHNpbmdsZSBw
YXJhZ3JhcGguICBJZgordGhlIHBhcmFncmFwaCBleGNlZWRzIHRoaXMgbGltaXQsIGZpbGxp
bmcgd2lsbCBmYWxsIGJhY2sgdG8KK3RoZSBzdGFuZGFyZCBncmVlZHkgYWxnb3JpdGhtLiIK
KyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpncm91cCAnZmlsbCkK
KworKGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLW1hcmdpbiAzCisgICJOdW1iZXIgb2YgY29s
dW1ucyBiZWZvcmUgdGhlIGZpbGwtY29sdW1uIHRoYXQgdGhlIGJhbGFuY2VkIGZpbGwKK2Fs
Z29yaXRobSB3aWxsIGF0dGVtcHQgdG8gYnJlYWsgbGluZXMgYXQuICBBdHRlbXB0aW5nIHRv
IGJyZWFrCitsaW5lcyBzbGlnaHRseSBzaG9ydCBvZiB0aGUgZmlsbC1jb2x1bW4gYnV0IGJl
aW5nIGFsbG93ZWQgdG8KK2dvIHVwIHRvIHRoZSBmaWxsLWNvbHVtbiBjYW4gaGVscCB0byBt
YWtlIHRoZSBsaW5lcyBtb3JlIGV2ZW4KK2luIGxlbmd0aC4iCisgIDp2ZXJzaW9uICIzMC4x
IgorICA6dHlwZSAnaW50ZWdlcgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhkZWZjdXN0b20gYmFs
YW5jZWQtZmlsbC13aWRvd3MgMgorICAiTWluaW11bSBudW1iZXIgb2Ygd29yZHMgdGhhdCB0
aGUgYWxnb3JpdGhtIHdpbGwgYXR0ZW1wdCB0byBsZWF2ZQorb24gdGhlIGxhc3QgbGluZSBv
ZiBhIHBhcmFncmFwaC4gIElmIHRoaXMgaXMgc2V0IHRvIGFuIGV4dHJlbWVseQoraGlnaCBu
dW1iZXIsIHRoZW4gdGhlIGJhbGFuY2VkIGZpbGxpbmcgd2lsbCBnZW5lcmFsbHkgdHJ5IHRv
IG1ha2UKK3RoZSBsYXN0IGxpbmUgYXMgZnVsbCBhcyBhbGwgdGhlIG90aGVycy4iCisgIDp2
ZXJzaW9uICIzMC4xIgorICA6dHlwZSAnaW50ZWdlcgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhk
ZWZjdXN0b20gYmFsYW5jZWQtZmlsbC1sZW5ndGgtZXhwb25lbnQgMworICAiQ29udHJvbHMg
dGhlIHBlbmFsdHkgZm9yIGxpbmVzIHRoYXQgYXJlIHNob3J0ZXIgb3IgbG9uZ2VyIHRoYW4K
K3RoZSB0YXJnZXQgbGVuZ3RoIHRvIHRoZSBtYXJnaW4uICBUaGUgZGlmZmVyZW5jZSBiZXR3
ZWVuIHRoZQorYWN0dWFsIGFuZCB0YXJnZXQgbGVuZ3RoIHdpbGwgYmUgcmFpc2VkIHRvIHRo
aXMgcG93ZXIgd2hlbgorY2FsY3VsYXRpbmcgdGhlIGNvc3Qgb2YgYSBwb3RlbnRpYWwgbGlu
ZSBicmVhay4gIFRoaXMgaXMgdGhlCittYWluIGNvbnRyb2wgZm9yIHRoZSBjb3N0IGZ1bmN0
aW9uLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpncm91cCAn
ZmlsbCkKKworKGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLXJhZ2dlZG5lc3MtcGVuYWx0eSA0
MAorICAiQWRkaXRpb25hbCBwZW5hbHR5IGZvciBlYWNoIGNvbHVtbiBvZiBkaWZmZXJlbmNl
IGluIGxlbmd0aAorcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIGxpbmUsIHVubGVzcyB0aGlz
IGlzIHRoZSBsYXN0IGxpbmUKK2FuZCBsb25nZXIgdGhhbiBzZWNvbmQgdG8gbGFzdC4gIEhp
Z2hlciBudW1iZXJzIG1ha2UgaXQgdHJ5CitoYXJkZXIgdG8ga2VlcCBhbGwgbGluZXMgYXMg
ZXZlbiBhcyBwb3NzaWJsZSBpbiBsZW5ndGggYXQgdGhlCitleHBlbnNlIG9mIG90aGVyIGZh
Y3RvcnMuIgorICA6dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3Vw
ICdmaWxsKQorCisoZGVmY3VzdG9tIGJhbGFuY2VkLWZpbGwtc2luZ2xlLXBlbmFsdHkgMTUw
CisgICJBZGRpdGlvbmFsIHBlbmFsdHkgZWl0aGVyIGZvciBzdGFydGluZyBhIG5ldyBzZW50
ZW5jZSB3aXRoIGEKK3NpbmdsZSB3b3JkIHJpZ2h0IGF0IHRoZSBlbmQgb2YgYSBsaW5lLCBv
ciBlbHNlIGZvciBlbmRpbmcgYQorc2VudGVuY2Ugd2l0aCBhIHNpbmdsZSB3b3JkIGxlZnQg
YXQgdGhlIHN0YXJ0IG9mIGEgbGluZS4iCisgIDp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAn
aW50ZWdlcgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhkZWZjdXN0b20gYmFsYW5jZWQtZmlsbC1i
cmVhay1wZW5hbHR5IDUwCisgICJBZGRpdGlvbmFsIHBlbmFsdHkgZm9yIGVhY2ggbGluZSBi
cmVhayBhZGRlZC4gIFRoZSBsYXJnZXIgdGhpcworaXMsIHRoZSBtb3JlIHRoZSBhbGdvcml0
aG0gd2lsbCB0cnkgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZgorbGluZXMgZGVzcGl0ZSB0
aGUgb3RoZXIgcGVuYWx0aWVzLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRl
Z2VyCisgIDpncm91cCAnZmlsbCkKKwogKGRlZnZhciBmaWxsLWluZGVudC1hY2NvcmRpbmct
dG8tbW9kZSBuaWwgO1NjcmV3cyB1cCBDQy1tb2RlJ3MgZmlsbGluZyB0cmlja3MuCiAgICJX
aGV0aGVyIG9yIG5vdCBmaWxsaW5nIHNob3VsZCB0cnkgdG8gdXNlIHRoZSBtYWpvciBtb2Rl
J3MgaW5kZW50YXRpb24uIikKIApAQCAtNjQ0LDYgKzcyNCwxMzUgQEAgZmlsbC1pbmRlbnQt
dG8tbGVmdC1tYXJnaW4KICAgICAoaW5kZW50LWxpbmUtdG8gKGN1cnJlbnQtbGVmdC1tYXJn
aW4pKQogICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBiZWcgKHBvaW50KSAnZmFjZSAnZGVmYXVs
dCkpKQogCisoZGVmdW4gYmFsYW5jZWQtZmlsbC1icmVhay1saW5lcyAoZnJvbSB0byBqdXN0
aWZ5KQorICA7OyBCdWlsZCBhIHRhYmxlIG9mIHZpc2libGUgd29yZCB3aWR0aHMsIHdpdGgg
YW5kIHdpdGhvdXQgYW55IHByZWNlZGluZworICA7OyBzcGFjZXMsIGFsb25nIHdpdGggd2hl
dGhlciB0aGUgd29yZCBzdGFydHMgYSBuZXcgc2VudGVuY2UuICBXZSBnbyBieQorICA7OyBj
b2x1bW5zIGFuZCBub3QgY2hhcnMgdG8gaGFuZGxlIGludmlzaWJsZSB0ZXh0IChlc3BlY2lh
bGx5IGludmlzaWJsZQorICA7OyBzcGFjZXMpLCBldGMuCisgIChsZXQgKCh3b3JkcyAnKCkp
CisgICAgICAgIChjb3VudCAwKQorICAgICAgICAoc2VudGVuY2UtcmVnZXhwIChzZW50ZW5j
ZS1lbmQpKSkKKyAgICAoZ290by1jaGFyIHRvKQorICAgICh3aGlsZSAoPiAocG9pbnQpIGZy
b20pCisgICAgICAobGV0KiAoKHByZXZpb3VzIChwb2ludCkpCisgICAgICAgICAgICAgKGVu
ZCAoY3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgIChuZXh0IChwcm9nbiAoZmlsbC1t
b3ZlLXRvLWJyZWFrLXBvaW50IGZyb20pCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7
IE5lZWRlZCBmb3IgbW92aW5nIHBhc3Qgc29tZSBPcmctbW9kZSBsaW5rcworICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgKHdpdGgtc3BhY2Ug
KGN1cnJlbnQtY29sdW1uKSkKKyAgICAgICAgICAgICAod2l0aG91dC1zcGFjZSAocHJvZ24g
KHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgICAgKG5ldy1zZW50ZW5j
ZSAobG9va2luZy1iYWNrIHNlbnRlbmNlLXJlZ2V4cCBmcm9tKSkpCisgICAgICAgIChnb3Rv
LWNoYXIgbmV4dCkKKyAgICAgICAgOzsgSWYgcG9pbnQgZGlkbid0IG1vdmUsIHdlJ3JlIGFm
dGVyIHRoZSBmaXJzdCB3b3JkIG9mIHRoZSBsaW5lLgorICAgICAgICAod2hlbiAoPD0gcHJl
dmlvdXMgbmV4dCkKKyAgICAgICAgICAoZ290by1jaGFyIGZyb20pCisgICAgICAgICAgKHNl
dHEgd2l0aC1zcGFjZSAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAgICAgICAgd2l0aG91
dC1zcGFjZSAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgICAgOzsgTWVyZ2UgaW50byBwcmV2
aW91cyBlbnRyeSB3aGVuIG1vdmluZyBwYXN0IGludmlzaWJsZSB0ZXh0LgorICAgICAgICAo
aWYgKD0gZW5kIHdpdGhvdXQtc3BhY2UpCisgICAgICAgICAgICAoc2V0cSBlbmQgKCsgZW5k
IChvciAoY2FyIChwb3Agd29yZHMpKSAwKSkpKQorICAgICAgICAocHVzaCAobGlzdCAoLSBl
bmQgd2l0aC1zcGFjZSkgKC0gZW5kIHdpdGhvdXQtc3BhY2UpIG5ldy1zZW50ZW5jZSkKKyAg
ICAgICAgICAgICAgd29yZHMpKSkKKyAgICAoc2V0cSB3b3JkcyAodmNvbmNhdCB3b3Jkcykp
CisgICAgKHNldHEgY291bnQgKGxlbmd0aCB3b3JkcykpCisKKyAgICA7OyBBYm9ydCAoYW5k
IGZhbGwgYmFjayB0byBncmVlZHkgYWxnb3JpdGhtKSBpZiB3ZSBoYXZlIHRvbyBtYW55IHdv
cmRzLgorICAgIDs7IFRoZSBhbGdvcml0aG0gYmVsb3cgaXMgd29yc3QtY2FzZSBxdWFkcmF0
aWMgKHRob3VnaCB1c3VhbGx5IG5vdCkuCisgICAgOzsgQXN5bXB0b3RpY2FsbHkgZmFzdGVy
IGFsZ29yaXRobXMgZXhpc3QsIGJ1dCBhcmUgbW9yZSBjb21wbGljYXRlZC4KKyAgICAoaWYg
KD4gY291bnQgYmFsYW5jZWQtZmlsbC1tYXhpbXVtLXdvcmRzKQorICAgICAgICBuaWwKKwor
ICAgICAgOzsgQ29uc2lkZXIgZWFjaCB3b3JkIGFzIGEgY2FuZGlkYXRlIHRvIHN0YXJ0IGEg
bGluZSwgYW5kIGJ1aWxkIGEKKyAgICAgIDs7IHRhYmxlIG9mIHdoaWNoIHdvcmQgdGhlIHBy
ZXZpb3VzIGxpbmUgd291bGQgYmUgYmVzdCB0byBzdGFydCBvbgorICAgICAgOzsgYW5kIHRo
ZSB3aWR0aCBvZiB0aGUgcHJldmlvdXMgbGluZS4gIFVzZSBkeW5hbWljIHByb2dyYW1taW5n
IHRvCisgICAgICA7OyBtaW5pbWl6ZSBhIGNvc3QgZnVuY3Rpb24uCisgICAgICAobGV0ICgo
c3RhcnRzIChtYWtlLXZlY3RvciAoMSsgY291bnQpIDApKQorICAgICAgICAgICAgKHdpZHRo
cyAobWFrZS12ZWN0b3IgKDErIGNvdW50KSAwKSkpCisgICAgICAgIChsZXQqICgoc3RhcnQg
MCkKKyAgICAgICAgICAgICAgIChyb29tICgtIGZpbGwtY29sdW1uIChjdXJyZW50LWNvbHVt
bikpKQorICAgICAgICAgICAgICAgKGNvc3RzIChtYWtlLXZlY3RvciAoMSsgY291bnQpIG1v
c3QtcG9zaXRpdmUtZml4bnVtKSkKKyAgICAgICAgICAgICAgIChyYWdzIChtYWtlLXZlY3Rv
ciAoMSsgY291bnQpIGJhbGFuY2VkLWZpbGwtbWFyZ2luKSkpCisgICAgICAgICAgKGFzZXQg
Y29zdHMgMCAwKQorICAgICAgICAgICh3aGlsZSAoPCBzdGFydCBjb3VudCkKKyAgICAgICAg
ICAgIDs7IFRoZSByb29tIGZvciB0aGUgZmlyc3QgbGluZSBtYXkgYmUgZGlmZmVyZW50IHRo
YW4gdGhlIHJlc3QuCisgICAgICAgICAgICAoaWYgKD0gc3RhcnQgMSkKKyAgICAgICAgICAg
ICAgICAoc2V0cSByb29tICgtIGZpbGwtY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc3RyaW5nLXdpZHRoIChvciBmaWxsLXByZWZpeCAiIikpKSkpCisgICAgICAg
ICAgICA7OyBDb25zaWRlciBlYWNoIHdvcmQgdGhpcyBuZXcgbGluZSBtaWdodCBlbmQgb24u
ICBEb24ndCB0ZXN0CisgICAgICAgICAgICA7OyB3aWR0aCBhZ2FpbnN0IHJvb20geWV0OyB3
ZSB3YW50IGF0IGxlYXN0IG9uZSB3b3JkIHBlciBsaW5lLAorICAgICAgICAgICAgOzsgc28g
d2UgbmVlZCBhdCBsZWFzdCBvbmUgaXRlcmF0aW9uLgorICAgICAgICAgICAgKGxldCAoKGVu
ZCBzdGFydCkKKyAgICAgICAgICAgICAgICAgICh3aWR0aCAwKSkKKyAgICAgICAgICAgICAg
KHdoaWxlICg8IGVuZCBjb3VudCkKKyAgICAgICAgICAgICAgICA7OyBEb24ndCBhZGQgdGhl
IHNwYWNlIGJlZm9yZSB0aGUgZmlyc3Qgd29yZCB0byB0aGUgd2lkdGguCisgICAgICAgICAg
ICAgICAgKHNldHEgd2lkdGggKCsgd2lkdGggKG50aCAoaWYgKD0gZW5kIHN0YXJ0KSAxIDAp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiB3b3Jk
cyBlbmQpKSkpCisgICAgICAgICAgICAgICAgOzsgT3VyIGNvc3QgZnVuY3Rpb24gaXMgdGhl
IHN1bSBvZiB0aGUgYmVzdCB0b3RhbCBjb3N0CisgICAgICAgICAgICAgICAgOzsgZm9yIGFs
bCB0aGUgbGluZXMgcHJlY2VkaW5nIHRoZSBzdGFydCBvZiB0aGlzIG9uZSwKKyAgICAgICAg
ICAgICAgICAobGV0ICgoY29zdCAoKyAoYXJlZiBjb3N0cyBzdGFydCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7OyBwbHVzIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBtYXJn
aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwdCAoYWJzICgtIHJvb20g
YmFsYW5jZWQtZmlsbC1tYXJnaW4gd2lkdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDs7IGV4cG9uZW50aWF0ZWQgaWYgbm90IHRoZSBsYXN0IGxpbmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKG9yICgvPSAoMSsgZW5k
KSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDs7IG9yIGlmIHdlJ2QgbGVhdmUgYSB3aWRvdywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICg8ICgtICgxKyBlbmQpIHN0YXJ0KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5jZWQtZmlsbC13
aWRvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxh
bmNlZC1maWxsLWxlbmd0aC1leHBvbmVudCAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7OyBwbHVzIGEgcGVuYWx0eSBmb3IgYW4gdW5ldmVuIHJpZ2h0IHNpZGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAoYWJzICgtIHJvb20gd2lkdGgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIHJhZ3Mgc3Rh
cnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpZiBub3QgdGhl
IGxhc3QgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAob3Ig
KC89ICgxKyBlbmQpIGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOzsgdW5sZXNzIHRoZSBsYXN0IGxpbmUgaXMgbG9uZ2VyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKC0gcm9vbSB3aWR0aCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIHJhZ3Mg
c3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5j
ZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkgMCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOzsgcGx1cyBhIHBlbmFsdHkgaWYgZW5kaW5nIG9uIHRoZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDs7IHN0YXJ0IG9mIGEgbmV3IHNlbnRlbmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobnRoIDIgKGFyZWYgd29yZHMgZW5k
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5jZWQtZmlsbC1z
aW5nbGUtcGVuYWx0eSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFu
ZCBhIHBlbmFsdHkgaWYgc3RhcnRpbmcgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDs7IGEgc2luZ2xlIHdvcmQgYW5kIHRoZW4gYSBuZXcgc2VudGVuY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKDwgKDErIHN0YXJ0KSBjb3Vu
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoIDIgKGFy
ZWYgd29yZHMgKDErIHN0YXJ0KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYWxhbmNlZC1maWxsLXNpbmdsZS1wZW5hbHR5IDApCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOzsgYW5kIGEgcGVuYWx0eSBmb3IgZWFjaCBicmVhay4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxhbmNlZC1maWxsLWJyZWFrLXBlbmFsdHkp
KSkKKyAgICAgICAgICAgICAgICAgIDs7IEZvciBlbmRpbmcgYWZ0ZXIgaGVyZSwgaXMgdGhp
cyBhIGJldHRlciBzdGFydGluZyBwbGFjZT8KKyAgICAgICAgICAgICAgICAgICh3aGVuIChh
bmQgKDw9IGNvc3QgKGFyZWYgY29zdHMgKDErIGVuZCkpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAob3IgKDw9IHdpZHRoIHJvb20pICg9IGVuZCBzdGFydCkpKQorICAgICAg
ICAgICAgICAgICAgICAoYXNldCBjb3N0cyAoMSsgZW5kKSBjb3N0KQorICAgICAgICAgICAg
ICAgICAgICAoYXNldCBzdGFydHMgKDErIGVuZCkgc3RhcnQpCisgICAgICAgICAgICAgICAg
ICAgIChhc2V0IHdpZHRocyAoMSsgZW5kKSB3aWR0aCkKKyAgICAgICAgICAgICAgICAgICAg
KGFzZXQgcmFncyAoMSsgZW5kKSAoLSByb29tIHdpZHRoKSkpKQorICAgICAgICAgICAgICAg
IDs7IEJyZWFrIHRoZSBpbm5lciAoZW5kKSBsb29wIGlmIHdlJ3JlIG91dCBvZiByb29tIG5v
dy4KKyAgICAgICAgICAgICAgICAoaWYgKD49IHdpZHRoIHJvb20pCisgICAgICAgICAgICAg
ICAgICAgIChzZXRxIGVuZCBjb3VudCkpCisgICAgICAgICAgICAgICAgKHNldHEgZW5kICgx
KyBlbmQpKSkpCisgICAgICAgICAgICAoc2V0cSBzdGFydCAoMSsgc3RhcnQpKSkpCisKKyAg
ICAgICAgOzsgV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIG9mIHRoZSB0YWJsZSB0byBy
ZWNvbnN0cnVjdCBhIGxpc3QKKyAgICAgICAgOzsgb2YgdGhlIG9wdGltYWwgd2lkdGhzIGZv
ciBlYWNoIGxpbmUuCisgICAgICAgIChsZXQgKGNob3NlbikKKyAgICAgICAgICAobGV0ICgo
ZW5kIGNvdW50KSkKKyAgICAgICAgICAgICh3aGlsZSAoPiBlbmQgMCkKKyAgICAgICAgICAg
ICAgKGlmICg8IGVuZCBjb3VudCkKKyAgICAgICAgICAgICAgICAgIChwdXNoIChhcmVmIHdp
ZHRocyBlbmQpIGNob3NlbikpCisgICAgICAgICAgICAgIChzZXRxIGVuZCAoYXJlZiBzdGFy
dHMgZW5kKSkpKQorCisgICAgICAgICAgOzsgVGhlbiBpbnNlcnQgdGhvc2UgbGluZSBicmVh
a3MgYW5kIGp1c3RpZnkgZWFjaCBsaW5lLgorICAgICAgICAgIChtYXBjIChsYW1iZGEgKHdp
ZHRoKQorICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uICgrIChjdXJyZW50LWNv
bHVtbikgd2lkdGgpKQorICAgICAgICAgICAgICAgICAgKGZpbGwtbmV3bGluZSkKKwkJICAo
aWYganVzdGlmeQorCQkgICAgICAoc2F2ZS1leGN1cnNpb24KKwkJICAgICAgICAoZm9yd2Fy
ZC1saW5lIC0xKQorCQkgICAgICAgIChqdXN0aWZ5LWN1cnJlbnQtbGluZSBqdXN0aWZ5IG5p
bCB0KSkpKQorICAgICAgICAgICAgICAgIGNob3NlbikKKyAgICAgICAgICAoaWYganVzdGlm
eSAoanVzdGlmeS1jdXJyZW50LWxpbmUganVzdGlmeSB0IHQpKSkpKSkpCisKIChkZWZ1biBm
aWxsLXJlZ2lvbi1hcy1wYXJhZ3JhcGggKGZyb20gdG8gJm9wdGlvbmFsIGp1c3RpZnkKIAkJ
CQkgICAgICBub3NxdWVlemUgc3F1ZWV6ZS1hZnRlcikKICAgIkZpbGwgdGhlIHJlZ2lvbiBh
cyBpZiBpdCB3ZXJlIGEgc2luZ2xlIHBhcmFncmFwaC4KQEAgLTc2Miw2ICs5NzEsMTEgQEAg
ZmlsbC1yZWdpb24tYXMtcGFyYWdyYXBoCiAKIAk7OyBUaGlzIGlzIHRoZSBhY3R1YWwgZmls
bGluZyBsb29wLgogCShnb3RvLWNoYXIgZnJvbSkKKyAgICAgICAgOzsgQXR0ZW1wdCB0byBi
cmVhayBpbnRvIGJhbGFuY2VkIGxpbmVzIGlmIGRlc2lyZWQuCisgICAgICAgICh3aGVuIGJh
bGFuY2VkLWZpbGwtbW9kZQorICAgICAgICAgIChiYWxhbmNlZC1maWxsLWJyZWFrLWxpbmVz
IGZyb20gdG8ganVzdGlmeSkpCisgICAgICAgIDs7IE90aGVyd2lzZSAoaWYgcG9pbnQgaXMg
c3RpbGwgYXQgZnJvbSksCisgICAgICAgIDs7IGZhbGwgYmFjayB0byB0aGUgc3RhbmRhcmQg
Z3JlZWR5IGxpbmUgYnJlYWtpbmcgbG9vcC4KIAkobGV0IChsaW5lYmVnKQogICAgICAgICAg
ICh3aGlsZSAoPCAocG9pbnQpIHRvKQogCSAgICAoc2V0cSBsaW5lYmVnIChwb2ludCkpCmRp
ZmYgLS1naXQgYS90ZXN0L2xpc3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwgYi90ZXN0L2xp
c3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwKaW5kZXggZWY4MjJiYTgwNS4uMTFkYjZhNDk5
ZiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3RleHRtb2Rlcy9maWxsLXRlc3RzLmVsCisrKyBi
L3Rlc3QvbGlzcC90ZXh0bW9kZXMvZmlsbC10ZXN0cy5lbApAQCAtMTIxLDYgKzEyMSwyMSBA
QCB0ZXN0LWZpbGwtaGFza2VsbAogICA7OyB3CiAiKSkpCiAKKyhlcnQtZGVmdGVzdCBmaWxs
LXRlc3QtYmFsYW5jZWQtZmlsbC1tb2RlIG5pbAorICAiQmFzaWMgdGVzdCBvZiB0aGUgYGJh
bGFuY2VkLWZpbGwtbW9kZScgb3B0aW9uLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAo
aW5zZXJ0ICJDY2MgY2NjIGEgYmIgZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBl
ZWVlZSBhIGhoaGhoaGhoIGJiIGRkZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkK
KyAgICAoc2V0cS1sb2NhbCBiYWxhbmNlZC1maWxsLW1vZGUgbmlsKQorICAgIChmaWxsLXBh
cmFncmFwaCkKKyAgICAoc2hvdWxkIChzdHJpbmc9IChidWZmZXItc3RyaW5nKSAiQ2NjIGNj
YyBhIGJiXG5kZGRkIGJiIGJiIGFcbmNjYyBhXG5qampqampqampqIGFcbmVlZWVlIGFcbmho
aGhoaGhoIGJiXG5kZGRkLiIpKSkKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaW5zZXJ0
ICJDY2MgY2NjIGEgYmIgZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBlZWVlZSBh
IGhoaGhoaGhoIGJiIGRkZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkKKyAgICAo
c2V0cS1sb2NhbCBiYWxhbmNlZC1maWxsLW1vZGUgdCkKKyAgICAoZmlsbC1wYXJhZ3JhcGgp
CisgICAgKHNob3VsZCAoc3RyaW5nPSAoYnVmZmVyLXN0cmluZykgIkNjYyBjY2MgYVxuYmIg
ZGRkZCBiYlxuYmIgYSBjY2MgYVxuampqampqampqalxuYSBlZWVlZSBhXG5oaGhoaGhoaFxu
YmIgZGRkZC4iKSkpKQorCiAocHJvdmlkZSAnZmlsbC10ZXN0cykKIAogOzs7IGZpbGwtdGVz
dHMuZWwgZW5kcyBoZXJlCi0tIAoyLjE3LjEKCg==

--------------U6U1i80qvZoNZsVAvkQDbBAD--




Acknowledgement sent to Andrew Kensler <andrew@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#61028; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 4 Sep 2023 09:15:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.