Fw: xml-parse: file position of elements

Joseph Donaldson <[email protected]> Wed, 2 Feb 2022 19:11:49 +0000 (UTC)
Newsgroups gmane.lisp.scheme.bigloo
Message-ID <[email protected]>
------=_Part_5351822_936647154.1643829109283
Content-Type: multipart/alternative; 
	boundary="----=_Part_5351819_597603103.1643829109243"

------=_Part_5351819_597603103.1643829109243
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

=20

   ----- Forwarded Message ----- From: Joseph Donaldson <donaldsonjw@yahoo.=
com>To: Sven Hartrumpf <[email protected]>Sent: Tuesday, February 1, 2022, =
10:21:12 AM PSTSubject: Re: [bigloo] xml-parse: file position of elements
  Hello, Sven,
Here is an updated version that moves the start-position parameter to posit=
ion 4 and has the value of the element's starting < character. I also remov=
ed some debugging print statements that were erroneously left in place. Let=
 me know how it works for you.
Best Regards,Joe Donaldson

    On Tuesday, February 1, 2022, 02:42:52 AM PST, Sven Hartrumpf <hartrump=
[email protected]> wrote: =20
=20
 Hi Jue.

donaldsonj wrote 2022-01-31 23:57:
> Please find attached a modified version of the xml module found in the bi=
gloo web library. I believe it accomplishes what you requested. By default,=
 the xml-parse procedure returns the same output as the original. However, =
if you provide your own element constructing procedure taking the start-pos=
 of the element,
> the tag of the element, a list of attributes, and the body, you can obtai=
n the starting position of each element and use it as you please. A simple =
of way of doing this (shown below) is to use the list procedure as the elem=
ent constructor.
>
> (xml-parse input-port :procedure list)

Thanks!
One suggestion: For old calls like (xml-parse ... :procedure list) it would=
 be more
conservative to move the start-pos argument for 'make' from position 1 to p=
osition 4.
Assuming that the old code accesses list elements 1, 2 and 3, the old code =
will still work
with newer bigloo.

> Note the start-pos is the character position before the <=C2=A0 character=
 of the element. If you want it to be the position of the < character, the =
code can be updated.

Because of multibyte UTF-8 chars, it would be much more convenient to have =
the position of <.

Ciao
Sven
   =20
------=_Part_5351819_597603103.1643829109243
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body><div class=3D"ydpe9d8829byahoo-style-wrap" style=
=3D"font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 1=
3px;"><div></div>
        <div><br></div><div><br></div>
       =20
        </div><div id=3D"ydpa46a6bc8yahoo_quoted_4235647379" class=3D"ydpa4=
6a6bc8yahoo_quoted">
            <div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s=
ans-serif;font-size:13px;color:#26282a;">
                <div>----- Forwarded Message -----</div>
                <div><b>From:</b> Joseph Donaldson &lt;[email protected]=
m&gt;</div><div><b>To:</b> Sven Hartrumpf &lt;[email protected]&gt;</div><d=
iv><b>Sent:</b> Tuesday, February 1, 2022, 10:21:12 AM PST</div><div><b>Sub=
ject:</b> Re: [bigloo] xml-parse: file position of elements</div><div><br><=
/div>
                <div><div id=3D"ydpa46a6bc8yiv9406560804"><div><div style=
=3D"font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px=
;" class=3D"ydpa46a6bc8yiv9406560804ydpe06ebe4cyahoo-style-wrap"><div></div=
>
        <div dir=3D"ltr">Hello, Sven,</div><div dir=3D"ltr"><br clear=3D"no=
ne"></div><div dir=3D"ltr">Here is an updated version that moves the start-=
position parameter to position 4 and has the value of the element's startin=
g &lt; character. I also removed some debugging print statements that were =
erroneously left in place. Let me know how it works for you.</div><div dir=
=3D"ltr"><br clear=3D"none"></div><div dir=3D"ltr">Best Regards,</div><div =
dir=3D"ltr">Joe Donaldson<br clear=3D"none"></div><div><br clear=3D"none"><=
/div>
       =20
        </div><div id=3D"ydpa46a6bc8yiv9406560804yqt31297" class=3D"ydpa46a=
6bc8yiv9406560804yqt6489793602"><div id=3D"ydpa46a6bc8yiv9406560804ydp58718=
390yahoo_quoted_4275124974" class=3D"ydpa46a6bc8yiv9406560804ydp58718390yah=
oo_quoted">
            <div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s=
ans-serif;font-size:13px;color:#26282a;">
               =20
                <div>
                    On Tuesday, February 1, 2022, 02:42:52 AM PST, Sven Har=
trumpf &lt;[email protected]&gt; wrote:
                </div>
                <div><br clear=3D"none"></div>
                <div><br clear=3D"none"></div>
                <div><div dir=3D"ltr">Hi Jue.<br clear=3D"none"><br clear=
=3D"none">donaldsonj wrote 2022-01-31 23:57:<br clear=3D"none">&gt; Please =
find attached a modified version of the xml module found in the bigloo web =
library. I believe it accomplishes what you requested. By default, the xml-=
parse procedure returns the same output as the original. However, if you pr=
ovide your own element constructing procedure taking the start-pos of the e=
lement,<br clear=3D"none">&gt; the tag of the element, a list of attributes=
, and the body, you can obtain the starting position of each element and us=
e it as you please. A simple of way of doing this (shown below) is to use t=
he list procedure as the element constructor.<br clear=3D"none">&gt;<br cle=
ar=3D"none">&gt; (xml-parse input-port :procedure list)<br clear=3D"none"><=
br clear=3D"none">Thanks!<br clear=3D"none">One suggestion: For old calls l=
ike (xml-parse ... :procedure list) it would be more<br clear=3D"none">cons=
ervative to move the start-pos argument for 'make' from position 1 to posit=
ion 4.<br clear=3D"none">Assuming that the old code accesses list elements =
1, 2 and 3, the old code will still work<br clear=3D"none">with newer biglo=
o.<br clear=3D"none"><br clear=3D"none">&gt; Note the start-pos is the char=
acter position before the &lt;&nbsp; character of the element. If you want =
it to be the position of the &lt; character, the code can be updated.<br cl=
ear=3D"none"><br clear=3D"none">Because of multibyte UTF-8 chars, it would =
be much more convenient to have the position of &lt;.<div id=3D"ydpa46a6bc8=
yiv9406560804ydp58718390yqtfd83560" class=3D"ydpa46a6bc8yiv9406560804ydp587=
18390yqt0259929972"><br clear=3D"none"><br clear=3D"none">Ciao<br clear=3D"=
none">Sven<br clear=3D"none"></div></div></div>
            </div>
        </div></div></div></div></div>
            </div>
        </div></body></html>
------=_Part_5351819_597603103.1643829109243--

------=_Part_5351822_936647154.1643829109283
Content-Type: text/x-scheme
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xml.scm"
Content-ID: <[email protected]>

Oyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLwo7KiAgICBzZXJyYW5vL3ByZ20vcHJvamVjdC9iaWdsb28vYmlnbG9v
L2FwaS93ZWIvc3JjL0xsaWIveG1sLnNjbSAgICAgICovCjsqICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgKi8KOyogICAg
QXV0aG9yICAgICAgOiAgTWFudWVsIFNlcnJhbm8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwo7KiAgICBDcmVhdGlvbiAgICA6ICBGcmkgTWFyIDExIDE2OjIzOjUzIDIwMDUg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqICAgIExhc3QgY2hhbmdlIDogIFN1biBPY3Qg
IDcgMDg6NDY6MDMgMjAxOCAoc2VycmFubykgICAgICAgICAgICAgICAgKi8KOyogICAgQ29weXJp
Z2h0ICAgOiAgMjAwNS0xOCBNYW51ZWwgU2VycmFubyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwo7KiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICAgICovCjsqICAgIFhNTCBwYXJzaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KOyo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoK
OyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwo7KiAgICBUaGUgbW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKG1vZHVs
ZSBfX3dlYl94bWwKCiAgIChvcHRpb24gKHNldCEgKmRsb3Blbi1pbml0LWdjKiAjdCkpCiAgIAog
ICAoZXhwb3J0ICh4bWwtcGFyc2U6OnBhaXItbmlsIHBvcnQ6OmlucHV0LXBvcnQKCQkJCSMha2V5
CgkJCQkoY29udGVudC1sZW5ndGggMCkKCQkJCShwcm9jZWR1cmUgKGxhbWJkYSAodGFnIGF0dHJp
YnMgYm9keSBzdGFydC1wb3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobGlzdCB0YWcgYXR0cmlicyBib2R5KSkpCgkJCQkoc3BlY2lhbHMgJygpKQoJCQkJ
KHN0cmljdCAjdCkKCQkJCShlbmNvZGluZyAnVVRGLTgpCgkJCQkoZW9pICNmKSkKCSAgICh4bWwt
c3RyaW5nLWRlY29kZTo6YnN0cmluZyA6OmJzdHJpbmcpCgkgICAoeG1sLXN0cmluZy1kZWNvZGUh
Ojpic3RyaW5nIDo6YnN0cmluZykKCSAgICh4bWwtc3RyaW5nLWVuY29kZTo6YnN0cmluZyA6OmJz
dHJpbmcpCgkgICAocmVhZC14bWwgIyFvcHRpb25hbCAocG9ydDo6aW5wdXQtcG9ydCAoY3VycmVu
dC1pbnB1dC1wb3J0KSkpCgkgICAoeG1sLW1ldGFkYXRhIHhtbC10cmVlOjpwYWlyLW5pbCkpKQoK
OyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwo7KiAgICB4bWwtcGFyc2UgLi4uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmlu
ZSAoeG1sLXBhcnNlOjpwYWlyLW5pbCBwb3J0OjppbnB1dC1wb3J0CgkJCSAgICAgIyFrZXkKCQkJ
ICAgICAoY29udGVudC1sZW5ndGggMCkKCQkJICAgICAocHJvY2VkdXJlIChsYW1iZGEgKHRhZyBh
dHRyaWJzIGJvZHkgc3RhcnQtcG9zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGxpc3QgdGFnIGF0dHJpYnMgYm9keSkpKQoJCQkgICAgIChzcGVjaWFscyAn
KCkpCgkJCSAgICAgKHN0cmljdCAjdCkKCQkJICAgICAoZW5jb2RpbmcgJ1VURi04KQoJCQkgICAg
IChlb2kgI2YpKQogICAod2hlbiAoZWxvbmc/IGNvbnRlbnQtbGVuZ3RoKQogICAgICAoc2V0ISBj
b250ZW50LWxlbmd0aCAoZWxvbmctPmZpeG51bSBjb250ZW50LWxlbmd0aCkpKQogICAod2hlbiAo
YW5kIChmaXhudW0/IGNvbnRlbnQtbGVuZ3RoKSAoPmZ4IGNvbnRlbnQtbGVuZ3RoIDApKQogICAg
ICAoaW5wdXQtcG9ydC1maWxsLWJhcnJpZXItc2V0ISBwb3J0IGNvbnRlbnQtbGVuZ3RoKSkKICAg
KHdoZW4gKD5meCBjb250ZW50LWxlbmd0aCAwKQogICAgICAoc2V0ISBjb250ZW50LWxlbmd0aCAo
K2Z4IGNvbnRlbnQtbGVuZ3RoIChpbnB1dC1wb3J0LXBvc2l0aW9uIHBvcnQpKSkpCiAgIChsZXQg
bG9vcCAoKGRlY29kZXIgKGxhbWJkYSAoeCkgeCkpKQogICAgICAobGV0ICgob2JqIChyZWFkL3Jw
IHhtbC1ncmFtbWFyIHBvcnQgcHJvY2VkdXJlIHByb2NlZHVyZSBzcGVjaWFscyBzdHJpY3QgZGVj
b2RlciBlbmNvZGluZyAoaW5wdXQtcG9ydC1wb3NpdGlvbiBwb3J0KSkpKQoJICh3aGVuIChhbmQg
KGZpeG51bT8gY29udGVudC1sZW5ndGgpICg+ZnggY29udGVudC1sZW5ndGggMCkpCgkgICAgKGlu
cHV0LXBvcnQtZmlsbC1iYXJyaWVyLXNldCEgcG9ydCAtMSkpCgkgKGNvbmQKCSAgICAoKGVvZi1v
YmplY3Q/IG9iaikKCSAgICAgJygpKQoJICAgICgob3IgKGFuZCAocHJvY2VkdXJlPyBlb2kpIChl
b2kgb2JqKSkKCQkgKGFuZCAoPmZ4IGNvbnRlbnQtbGVuZ3RoIDApCgkJICAgICAgKD49ZnggKGlu
cHV0LXBvcnQtcG9zaXRpb24gcG9ydCkgY29udGVudC1sZW5ndGgpKSkKCSAgICAgKGxpc3Qgb2Jq
KSkKCSAgICAoKGFuZCAocGFpcj8gb2JqKSAoZXE/ICd4bWwtZGVjbCAoY2FyIG9iaikpKQoJICAg
ICAobGV0ICgoZW5jIChhc3NxICdlbmNvZGluZyAoY2RyIG9iaikpKSkKCQkoaWYgZW5jCgkJICAg
IChjb25zIG9iaiAobG9vcCAoZ2V0LWRlY29kZXIgKGNkciBlbmMpIGVuY29kaW5nKSkpCgkJICAg
IChjb25zIG9iaiAobG9vcCBkZWNvZGVyKSkpKSkKCSAgICAoZWxzZQoJICAgICAoY29ucyBvYmog
KGxvb3AgZGVjb2RlcikpKSkpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgeG1sLXBhcnNlLWVy
cm9yIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1wYXJzZS1lcnJvciBtc2cgb2JqIG5hbWUgcG9z
KQogICAocmFpc2UKICAgIChpbnN0YW50aWF0ZTo6JmlvLXBhcnNlLWVycm9yCiAgICAgICAocHJv
YyAneG1sLXBhcnNlKQogICAgICAgKG1zZyBtc2cpCiAgICAgICAob2JqIG9iaikKICAgICAgIChm
bmFtZSBuYW1lKQogICAgICAgKGxvY2F0aW9uIHBvcykpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyog
ICAgZXJyb3ItbGluZSAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKGVycm9yLWxpbmUgYyBwb3J0
KQogICAobGV0ICgobGluZSAocmVhZC1saW5lIHBvcnQpKSkKICAgICAgKHN0cmluZy1hcHBlbmQg
InsiIChzdHJpbmcgYykgIn0iIChpZiAoc3RyaW5nPyBsaW5lKSBsaW5lICIiKSkpKQoKOyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwo7KiAgICBzcGVjaWFsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZS1zdHJ1
Y3Qgc3BlY2lhbCB0YWcgYXR0cmlidXRlcyBib2R5IG93bmVyKQoKOyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo7
KiAgICBjb2xsZWN0LXVwLXRvIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZSAoY29sbGVjdC11cC10byBz
dGFydC1wb3MgaWdub3JlIHRhZyBhdHRyaWJ1dGVzIHBvcnQgbWFrZSBzcGVjaWFscyBzdHJpY3Qg
ZGVjb2RlciBlbmNvZGluZykKICAgCiAgIChkZWZpbmUgKGNvbGxlY3QgaWdub3JlIHRhZ3MpCiAg
ICAgIChsZXQgKChuYW1lIChpbnB1dC1wb3J0LW5hbWUgcG9ydCkpCgkgICAgKHBvIChpbnB1dC1w
b3J0LXBvc2l0aW9uIHBvcnQpKSkKCSAobGV0IGxvb3AgKChhY2MgJygpKQoJCSAgICAoaXRlbSAo
aWdub3JlKSkpCgkgICAgKGNvbmQKCSAgICAgICAoKHN5bWJvbD8gaXRlbSkKCQkoY29uZAoJCSAg
ICgoZXE/IGl0ZW0gdGFnKQoJCSAgICAobWFrZSB0YWcgYXR0cmlidXRlcyAocmV2ZXJzZSEgYWNj
KSBzdGFydC1wb3MpKQoJCSAgIChzdHJpY3QKCQkgICAgKHhtbC1wYXJzZS1lcnJvciAiSWxsZWdh
bCBjbG9zaW5nIHRhZyIKCQkgICAgICAgKGZvcm1hdCAiYH5hJyBleHBlY3RlZCwgYH5hJyBwcm92
aWRlZCIKCQkJICB0YWcgaXRlbSkKCQkgICAgICAgbmFtZSBwbykpCgkJICAgKGVsc2UKCQkgICAg
KG1ha2UgdGFnIGF0dHJpYnV0ZXMgKHJldmVyc2UhIGFjYykgc3RhcnQtcG9zKSkpKQoJICAgICAg
ICgoc3BlY2lhbD8gaXRlbSkKCQkobGV0ICgobml0ZW0gKG1ha2UgKHNwZWNpYWwtdGFnIGl0ZW0p
CgkJCQkoc3BlY2lhbC1hdHRyaWJ1dGVzIGl0ZW0pCgkJCQkoc3BlY2lhbC1ib2R5IGl0ZW0pCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQtcG9zKSkpCgkJICAgKGlmIChtZW1x
IChzcGVjaWFsLXRhZyBpdGVtKSB0YWdzKQoJCSAgICAgICAobG9vcCBhY2Mgbml0ZW0pCgkJICAg
ICAgIChiZWdpbgoJCQkgIChsaXN0IChtYWtlIHRhZyBhdHRyaWJ1dGVzIChyZXZlcnNlISBhY2Mp
IHN0YXJ0LXBvcykgbml0ZW0pKSkpKQoJICAgICAgICgoZW9mLW9iamVjdD8gaXRlbSkKCQkoaWYg
c3RyaWN0CgkJICAgICh4bWwtcGFyc2UtZXJyb3IKCQkgICAgICAgKGZvcm1hdCAiUHJlbWF0dXJl
IGVuZCBvZiBsaW5lLCBleHBlY3RpbmcgdGFnIGB+YSciCgkJCSAgdGFnKQoJCSAgICAgICBpdGVt
IG5hbWUgcG8pCgkJICAgIChtYWtlIHRhZyBhdHRyaWJ1dGVzIChyZXZlcnNlISBhY2MpIHN0YXJ0
LXBvcykpKQoJICAgICAgIChlbHNlCgkJKGxldCAoKHBvIChpbnB1dC1wb3J0LWxhc3QtdG9rZW4t
cG9zaXRpb24gcG9ydCkpKQoJCSAgIChsb29wIChlY29ucyBpdGVtIGFjYyAobGlzdCAnYXQgbmFt
ZSBwbykpIChpZ25vcmUpKSkpKSkpKQoKICAgKGxldCAoKHNwZWMgKGFzc3EgdGFnIHNwZWNpYWxz
KSkpCiAgICAgIChjb25kCgkgKChub3Qgc3BlYykKCSAgKGNvbGxlY3QgaWdub3JlICcoKSkpCgkg
KChudWxsPyAoY2RyIHNwZWMpKQoJICAobWFrZSB0YWcgYXR0cmlidXRlcyAnKCkgc3RhcnQtcG9z
KSkKCSAoKHByb2NlZHVyZT8gKGNkciBzcGVjKSkKCSAgKG1ha2UgdGFnIGF0dHJpYnV0ZXMgKChj
ZHIgc3BlYykgcG9ydCkgc3RhcnQtcG9zKSkKCSAoKHBhaXI/IChjZHIgc3BlYykpCgkgIChsZXQg
KChpZ25vcmUgKGxhbWJkYSAoKQoJCQkgICAocmVhZC9ycCB4bWwtZ3JhbW1hciBwb3J0CgkJCQkg
ICAgKGxhbWJkYSAodCBhIGIpIChzcGVjaWFsIHQgYSBiIHRhZykpCgkJCQkgICAgbWFrZQoJCQkJ
ICAgIHNwZWNpYWxzIHN0cmljdCBkZWNvZGVyIGVuY29kaW5nIChpbnB1dC1wb3J0LXBvc2l0aW9u
IHBvcnQpKSkpKSAKCSAgICAgKGNvbGxlY3QgaWdub3JlIChjZHIgc3BlYykpKSkKCSAoZWxzZQoJ
ICAoZXJyb3IgInhtbC1wYXJzZSIgIklsbGVnYWwgc3BlY2lhbCBoYW5kbGVyIiBzcGVjKSkpKSkK
CjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KOyogICAgYXR0cmlidXRlLXZhbHVlLWdyYW1tYXIgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZp
bmUgYXR0cmlidXRlLXZhbHVlLWdyYW1tYXIKICAgKHJlZ3VsYXItZ3JhbW1hciAoc3RyaWN0IHRh
ZykKICAgICAgKCgrIChpbiAiIFx0XG5cciIpKQogICAgICAgKGlnbm9yZSkpCiAgICAgICgoOiAj
XCIgKCogKG9yIChvdXQgI1xcICNcIikgKDogI1xcIGFsbCkpKSAjXCIpCiAgICAgICAodGhlLXN1
YnN0cmluZyAxICgtZnggKHRoZS1sZW5ndGgpIDEpKSkKICAgICAgKCg6ICNcJyAoKiAob3IgKG91
dCAjXFwgI1wnKSAoOiAjXFwgYWxsKSkpICNcJykKICAgICAgICh0aGUtc3Vic3RyaW5nIDEgKC1m
eCAodGhlLWxlbmd0aCkgMSkpKQogICAgICAoKDogKCsgZGlnaXQpICg/IChvciAiJSIgInB4IiAi
Y20iICJlbSIgIm1tIiAiaW5jaCIpKSkKICAgICAgIChpZiBzdHJpY3QKCSAgICh4bWwtcGFyc2Ut
ZXJyb3IgKGZvcm1hdCAiSWxsZWdhbCBgfmEnIGF0dHJpYnV0ZSB2YWx1ZSIgdGFnKQoJCQkgICAg
KHRoZS1zdHJpbmcpCgkJCSAgICAoaW5wdXQtcG9ydC1uYW1lICh0aGUtcG9ydCkpCgkJCSAgICAo
aW5wdXQtcG9ydC1wb3NpdGlvbiAodGhlLXBvcnQpKSkKCSAgICh0aGUtc3RyaW5nKSkpCiAgICAg
ICgoKyAob3V0ICIgXHRcblxyPD4oKXt9W11AIVwiJy8iKSkKICAgICAgIChpZiBzdHJpY3QKCSAg
ICh4bWwtcGFyc2UtZXJyb3IgKGZvcm1hdCAiSWxsZWdhbCBgfmEnIGF0dHJpYnV0ZSBjaGFyYWN0
ZXIiIHRhZykKCQkJICAgICh0aGUtc3RyaW5nKQoJCQkgICAgKGlucHV0LXBvcnQtbmFtZSAodGhl
LXBvcnQpKQoJCQkgICAgKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkpCgkgICAodGhl
LXN0cmluZykpKQogICAgICAoZWxzZQogICAgICAgKGxldCAoKGMgKHRoZS1mYWlsdXJlKSkpCgkg
IChpZiAobm90IChlb2Ytb2JqZWN0PyBjKSkKCSAgICAgIChpZiAob3Igc3RyaWN0CgkJICAgICAg
KG5vdCAob3IgKGNoYXI9PyBjICNcc3BhY2UpCgkJCSAgICAgICAoY2hhcj0/IGMgI1xOZXdsaW5l
KQoJCQkgICAgICAgKGNoYXI9PyBjICNcPikpKSkKCQkgICh4bWwtcGFyc2UtZXJyb3IKCQkgICAo
Zm9ybWF0ICJJbGxlZ2FsIGB+YScgYXR0cmlidXRlIGNoYXJhY3RlciIgdGFnKQoJCSAgIChlcnJv
ci1saW5lIGMgKHRoZS1wb3J0KSkKCQkgICAoaW5wdXQtcG9ydC1uYW1lICh0aGUtcG9ydCkpCgkJ
ICAgKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkpCgkJICAiICIpCgkgICAgICAoeG1s
LXBhcnNlLWVycm9yCgkgICAgICAgKGZvcm1hdCAiUHJlbWF0dXJlIGVuZCBvZiBsaW5lIGZvciB0
YWcgYH5hJyBhdHRyaWJ1dGUiIHRhZykKCSAgICAgICBjCgkgICAgICAgKGlucHV0LXBvcnQtbmFt
ZSAodGhlLXBvcnQpKQoJICAgICAgICgtZnggKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0
KSkgMSkpKSkpKSkKICAgICAgCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgYXR0cmlidXRlLWdyYW1t
YXIgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCihkZWZpbmUgYXR0cmlidXRlLWdyYW1tYXIKICAgKHJlZ3VsYXItZ3JhbW1h
ciAoKGlkICg6IChpbiAoImF6QVoiKSAiXyIpICgqIChpbiAoImF6QVowOSIpICI6Xy0iKSkpKQoJ
CSAgICAgdGFnCgkJICAgICBzdHJpY3QKCQkgICAgIGRlY29kZXIpCiAgICAgICgoKyAoaW4gIiBc
dFxuXHIiKSkKICAgICAgIChpZ25vcmUpKQogICAgICAoKDogaWQgIj0iKQogICAgICAgKGxldCog
KChrZXkgKHRoZS1zdWJzdHJpbmcgMCAoLWZ4ICh0aGUtbGVuZ3RoKSAxKSkpCgkgICAgICAodmFs
IChyZWFkL3JwIGF0dHJpYnV0ZS12YWx1ZS1ncmFtbWFyICh0aGUtcG9ydCkgc3RyaWN0IHRhZykp
KQoJICAoY29ucyAoc3RyaW5nLT5zeW1ib2wgKGRlY29kZXIga2V5KSkgKGRlY29kZXIgdmFsKSkp
KQogICAgICAoKDogaWQgKCsgYmxhbmspICI9IikKICAgICAgIChsZXQqICgoa2V5ICh0aGUtc3Vi
c3RyaW5nIDAgKC1meCAodGhlLWxlbmd0aCkgMikpKQoJICAgICAgKHZhbCAocmVhZC9ycCBhdHRy
aWJ1dGUtdmFsdWUtZ3JhbW1hciAodGhlLXBvcnQpIHN0cmljdCB0YWcpKSkKCSAgKGxldCBsb29w
ICgoaSAoLWZ4IChzdHJpbmctbGVuZ3RoIGtleSkgMSkpKQoJICAgICAoY2FzZSAoc3RyaW5nLXJl
ZiBrZXkgaSkKCQkoKCNcc3BhY2UgI1x0YWIgI1xOZXdsaW5lKQoJCSAobG9vcCAoLWZ4IGkgMSkp
KQoJCShlbHNlCgkJIChzZXQhIGtleSAoc3Vic3RyaW5nIGtleSAwICgrIGkgMSkpKSkpKQoJICAo
Y29ucyAoc3RyaW5nLT5zeW1ib2wgKGRlY29kZXIga2V5KSkgKGRlY29kZXIgdmFsKSkpKQogICAg
ICAoKDogaWQpCiAgICAgICAobGV0KiAoKGtleSAoZGVjb2RlciAodGhlLXN0cmluZykpKSkKCSAg
KGNvbnMgKHN0cmluZy0+c3ltYm9sIGtleSkga2V5KSkpCiAgICAgICgob3IgIi8+IiAiPiIpCiAg
ICAgICAodGhlLXN5bWJvbCkpCiAgICAgIChlbHNlCiAgICAgICAobGV0ICgoYyAodGhlLWZhaWx1
cmUpKSkKCSAgKGlmIChub3QgKGVvZi1vYmplY3Q/IGMpKQoJICAgICAgKHhtbC1wYXJzZS1lcnJv
ciAiSWxsZWdhbCBhdHRyaWJ1dGUgY2hhcmFjdGVyIgoJCQkgICAgICAgKGVycm9yLWxpbmUgYyAo
dGhlLXBvcnQpKQoJCQkgICAgICAgKGlucHV0LXBvcnQtbmFtZSAodGhlLXBvcnQpKQoJCQkgICAg
ICAgKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkpCgkgICAgICAoeG1sLXBhcnNlLWVy
cm9yCgkgICAgICAgKGZvcm1hdCAiUHJlbWF0dXJlIGVuZCBvZiBsaW5lLCBleHBlY3RpbmcgdGFn
IGB+YSciIHRhZykKCSAgICAgICBjCgkgICAgICAgKGlucHV0LXBvcnQtbmFtZSAodGhlLXBvcnQp
KQoJICAgICAgICgtZnggKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkgMSkpKSkpKSkK
CjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KOyogICAgY2RhdGEtZ3JhbW1hciAuLi4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZp
bmUgY2RhdGEtZ3JhbW1hcgogICAocmVndWxhci1ncmFtbWFyIChkZWNvZGVyKQogICAgICAoKCog
KG91dCAiXSIpKQogICAgICAgKGxldCogKChyZXMgKGRlY29kZXIgKHRoZS1zdHJpbmcpKSkKCSAg
ICAgIChyZXN0IChpZ25vcmUpKSkKCSAgKHN0cmluZy1hcHBlbmQgcmVzIHJlc3QpKSkKICAgICAg
KCJdIgogICAgICAgKHN0cmluZy1hcHBlbmQgIl0iIChpZ25vcmUpKSkKICAgICAgKCg6ICJdXT4i
ICg/ICJcbiIpKQogICAgICAgIiIpCiAgICAgIChlbHNlCiAgICAgICAobGV0KiAoKGMgKHRoZS1m
YWlsdXJlKSkKCSAgICAgIChtc2cgKGlmIChub3QgKGVvZi1vYmplY3Q/IGMpKQoJCSAgICAgICAi
SWxsZWdhbCA8IVtDREFUQVsgY2hhcmFjdGVyIgoJCSAgICAgICAiUHJlbWF0dXJlIGVuZCBvZiBs
aW5lLCBleHBlY3RpbmcgdGFnIGBdXT4nIikpKQoJICAoeG1sLXBhcnNlLWVycm9yIG1zZwoJCQkg
ICBjCgkJCSAgIChpbnB1dC1wb3J0LW5hbWUgKHRoZS1wb3J0KSkKCQkJICAgKGlucHV0LXBvcnQt
cG9zaXRpb24gKHRoZS1wb3J0KSkpKSkpKQoKOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo7KiAgICBnZXQtZGVj
b2RlciAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZSAoZ2V0LWRlY29kZXI6OnByb2NlZHVyZSBlbmM6
OmJzdHJpbmcgZHN0LWVuYykKICAgKGxldCAoKHNyYy1lbmMgKHN0cmluZy0+c3ltYm9sIChzdHJp
bmctdXBjYXNlIGVuYykpKSkKICAgICAgKGNvbmQKCSAoKG9yIChub3Qgc3JjLWVuYykgKGVxPyBz
cmMtZW5jIGRzdC1lbmMpKQoJICAobGFtYmRhICh4KSB4KSkKCSAoKGVxPyBzcmMtZW5jICdVVEYt
OCkKCSAgKGNvbmQKCSAgICAgKChtZW1xIGRzdC1lbmMgJyhJU08tODg1OS0xIElTTy04ODU5LTIg
SVNPLTg4NTktMTUpKQoJICAgICAgdXRmOC0+aXNvLWxhdGluKQoJICAgICAoKGVxPyBkc3QtZW5j
ICdVQ1MtMikKCSAgICAgIHV0Zjgtc3RyaW5nLT51Y3MyLXN0cmluZykKCSAgICAgKGVsc2UKCSAg
ICAgIChsYW1iZGEgKHgpIHgpKSkpCgkgKChtZW1xIHNyYy1lbmMgJyhJU08tODg1OS0xIElTTy04
ODU5LTIgSVNPLTg4NTktMTUpKQoJICAoY29uZAoJICAgICAoKGVxPyBkc3QtZW5jICdVVEYtOCkK
CSAgICAgIGlzby1sYXRpbi0+dXRmOCkKCSAgICAgKChlcT8gZHN0LWVuYyAnVUNTLTIpCgkgICAg
ICAobGFtYmRhICh4KQoJCSAodXRmOC1zdHJpbmctPnVjczItc3RyaW5nIChpc28tbGF0aW4tPnV0
ZjggeCkpKSkKCSAgICAgKGVsc2UKCSAgICAgIChsYW1iZGEgKHgpIHgpKSkpCgkgKGVsc2UKCSAg
KGxhbWJkYSAoeCkgeCkpKSkpCiAgICAgIAo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCjsqICAgIHhtbC1ncmFt
bWFyIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLwooZGVmaW5lIHhtbC1ncmFtbWFyCiAgIChyZWd1bGFyLWdyYW1t
YXIgKChpZCAoOiAoaW4gKCJhekFaIikgIiE/IikgKCogKGluICgiYXpBWjA5IikgIjpfLSIpKSkp
CgkJICAgICBuZXh0CgkJICAgICBtYWtlCgkJICAgICBzcGVjaWFscwoJCSAgICAgc3RyaWN0CgkJ
ICAgICBkZWNvZGVyCgkJICAgICBlbmNvZGluZwogICAgICAgICAgICAgICAgICAgICBwb3MpCiAg
ICAgIChkZWZpbmUgKHVwZGF0ZS1zdGFydC1wb3NpdGlvbiEpCiAgICAgICAoc2V0ISBwb3MgKCsg
KGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkgMSkpKQogICAgICAKICAgICAgKCgrIChp
biAiIFx0XG5cciIpKQogICAgICAgKHVwZGF0ZS1zdGFydC1wb3NpdGlvbiEpCiAgICAgICAodGhl
LXN0cmluZykpCiAgICAgICgoOiAiPCEtLSIKCSAgKCogKG9yIChvdXQgIi0iKSAoOiAiLSIgKG91
dCAiLSIpKSAoOiAiLS0iIChvdXQgIj4iKSkpKQoJICAiLS0+IikKICAgICAgICh1cGRhdGUtc3Rh
cnQtcG9zaXRpb24hKQogICAgICAgKGNvbnMgJ2NvbW1lbnQgKHRoZS1zdHJpbmcpKSkKICAgICAg
KCg6ICI8ISIgKDogKG9yIChvdXQgIlstIikgKDogIi0iIChvdXQgIi0iKSkpCgkJICAoKiAob3V0
ICI+XSIpKQoJCSAgKD8gKDogIlsiICgqIChvdXQgIl0iKSkgIl0iKSkKCQkgICgqIChvdXQgIj4i
KSkpICI+IikKICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgKGNvbnMgJ2Rl
Y2xhcmF0aW9uICh0aGUtc3RyaW5nKSkpCiAgICAgICgiPCFbQ0RBVEFbIgogICAgICAgKGxldCAo
KGNkYXRhIChyZWFkL3JwIGNkYXRhLWdyYW1tYXIgKHRoZS1wb3J0KSBkZWNvZGVyKSkpCiAgICAg
ICAgICAodXBkYXRlLXN0YXJ0LXBvc2l0aW9uISkKICAgICAgICAgIChjb25zICdjZGF0YSBjZGF0
YSkpKQogICAgICAoKDogIjw/eG1sICIgKCogKG91dCAiPz4iKSkgIj8+IikKICAgICAgIChsZXQg
KChzICh0aGUtc3Vic3RyaW5nIDYgKHRoZS1sZW5ndGgpKSkpCgkgIChzdHJpbmctc2V0ISBzICgt
ZnggKHN0cmluZy1sZW5ndGggcykgMikgI1xzcGFjZSkKCSAgKGxldCAoKHAgKG9wZW4taW5wdXQt
c3RyaW5nIHMpKSkKCSAgICAgKGxldCBsb29wICgoYXR0ciAnKCkpKQoJCShsZXQgKChvYmogKHJl
YWQvcnAgYXR0cmlidXRlLWdyYW1tYXIgcCAneG1sICN0IGRlY29kZXIpKSkKCQkgICAoY29uZAoJ
CSAgICAgICgocGFpcj8gb2JqKQoJCSAgICAgICAobG9vcCAoY29ucyBvYmogYXR0cikpKQoJCSAg
ICAgICgoZXE/IG9iaiAnPikKICAgICAgICAgICAgICAgICAgICAgICAodXBkYXRlLXN0YXJ0LXBv
c2l0aW9uISkKCQkgICAgICAgKGNvbnMgJ3htbC1kZWNsIGF0dHIpKSkpKSkpKQogICAgICAoKDog
Ijw/IiAoKiAob3V0ICI+IikpICI+IikKICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQog
ICAgICAgKGNvbnMgJ2luc3RydWN0aW9uICh0aGUtc3RyaW5nKSkpCiAgICAgICgoOiAiPCIgaWQg
Ij4iKQogICAgICAgKGxldCogKCh0ICh0aGUtc3Vic3RyaW5nIDEgKC1meCAodGhlLWxlbmd0aCkg
MSkpKQoJICAgICAgKHRzIChzdHJpbmctPnN5bWJvbCB0KSkKCSAgICAgIChwICh0aGUtcG9ydCkp
KQoJICAobGV0ICgoZWxlbWVudCAoY29sbGVjdC11cC10byBwb3MgaWdub3JlIHRzICcoKSBwIG1h
a2Ugc3BlY2lhbHMgc3RyaWN0IGRlY29kZXIgZW5jb2RpbmcpKSkKICAgICAgICAgICAgICh1cGRh
dGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgICAgICAgZWxlbWVudCkpKQogICAgICAoKDogIjwi
IGlkICIvPiIpCiAgICAgICAobGV0ICgodCAodGhlLXN1YnN0cmluZyAxICgtZnggKHRoZS1sZW5n
dGgpIDIpKSkpCiAgICAgICAgICAobGV0ICgocCBwb3MpKQogICAgICAgICAgICAgKHVwZGF0ZS1z
dGFydC1wb3NpdGlvbiEpCiAgICAgICAgICAgICAobWFrZSBwIChzdHJpbmctPnN5bWJvbCB0KSAn
KCkgJygpKSkpKQogICAgICAoKDogIjwiIGlkIChpbiAiIFxuXHRcciIpKQogICAgICAgKGxldCog
KCh0ICh0aGUtc3Vic3RyaW5nIDEgKC1meCAodGhlLWxlbmd0aCkgMSkpKQoJICAgICAgKHRzIChz
dHJpbmctPnN5bWJvbCB0KSkKCSAgICAgIChwICh0aGUtcG9ydCkpKQoJICAobGV0IGxvb3AgKChh
dHRyICcoKSkpCgkgICAgIChsZXQgKChvYmogKHJlYWQvcnAgYXR0cmlidXRlLWdyYW1tYXIgcCB0
IHN0cmljdCBkZWNvZGVyKSkpCgkJKGNvbmQKCQkgICAoKHBhaXI/IG9iaikKCQkgICAgKGxvb3Ag
KGNvbnMgb2JqIGF0dHIpKSkKCQkgICAoKGVxPyBvYmogJz4pCgkJICAgIChsZXQgKChlbGVtZW50
IChjb2xsZWN0LXVwLXRvIHBvcyBpZ25vcmUgdHMgKHJldmVyc2UhIGF0dHIpIHAgbWFrZSBzcGVj
aWFscyBzdHJpY3QgZGVjb2RlciBlbmNvZGluZykpKQogICAgICAgICAgICAgICAgICAgICAgICh1
cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQpKQoJ
CSAgICgoZXE/IG9iaiAnLz4pCiAgICAgICAgICAgICAgICAgICAgKGxldCAoKHAgcG9zKSkKICAg
ICAgICAgICAgICAgICAgICAgICAodXBkYXRlLXN0YXJ0LXBvc2l0aW9uISkKICAgICAgICAgICAg
ICAgICAgICAgICAobWFrZSBwIHRzIChyZXZlcnNlISBhdHRyKSAnKCkpKSkpKSkpKQogICAgICAo
KDogIjwvIiBpZCAiPiIpCiAgICAgICAodXBkYXRlLXN0YXJ0LXBvc2l0aW9uISkKICAgICAgIChz
dHJpbmctPnN5bWJvbCAodGhlLXN1YnN0cmluZyAyICgtZnggKHRoZS1sZW5ndGgpIDEpKSkpCiAg
ICAgICgoKyAob3V0ICI8IikpCiAgICAgICAodXBkYXRlLXN0YXJ0LXBvc2l0aW9uISkKICAgICAg
IChkZWNvZGVyICh0aGUtc3RyaW5nKSkpCiAgICAgIChlbHNlCiAgICAgICAobGV0ICgoYyAodGhl
LWZhaWx1cmUpKSkKCSAgKGNvbmQKCSAgICAgKChub3QgKGVvZi1vYmplY3Q/IGMpKQoJICAgICAg
KHhtbC1wYXJzZS1lcnJvciAiSWxsZWdhbCBjaGFyYWN0ZXIiCgkJCSAgICAgICAoZXJyb3ItbGlu
ZSBjICh0aGUtcG9ydCkpCgkJCSAgICAgICAoaW5wdXQtcG9ydC1uYW1lICh0aGUtcG9ydCkpCgkJ
CSAgICAgICAoaW5wdXQtcG9ydC1wb3NpdGlvbiAodGhlLXBvcnQpKSkpCgkgICAgIChlbHNlCgkg
ICAgICBjKSkpKSkpCgo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCjsqICAgIGNoYXItaGV4bnVtZXJpYz8gLi4u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KOyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwooZGVmaW5lIChjaGFyLWhleG51bWVyaWM/IGMpCiAgIChvciAoY2hhci1udW1lcmlj
PyBjKQogICAgICAgKGFuZCAoY2hhcj49PyBjICNcQSkgKGNoYXI8PT8gYyAjXEYpKQogICAgICAg
KGFuZCAoY2hhcj49PyBjICNcYSkgKGNoYXI8PT8gYyAjXGYpKSkpCgo7Ki0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CjsqICAgIHhtbC1zdHJpbmctZGVjb2RlLWlubmVyISAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwooZGVmaW5lICh4bWwtc3RyaW5nLWRl
Y29kZS1pbm5lciEgc3RyIG9sIG5sIHJlcykKICAgKGRlZmluZSAoY2hhci12YWx1ZSBjKQogICAg
ICAoY29uZAoJICgoY2hhci1udW1lcmljPyBjKQoJICAoLWZ4IChjaGFyLT5pbnRlZ2VyIGMpIChj
aGFyLT5pbnRlZ2VyICNcMCkpKQoJICgoY2hhcjw9PyBjICNcRikKCSAgKCtmeCAxMCAoLWZ4IChj
aGFyLT5pbnRlZ2VyIGMpIChjaGFyLT5pbnRlZ2VyICNcQSkpKSkKCSAoZWxzZQoJICAoK2Z4IDEw
ICgtZnggKGNoYXItPmludGVnZXIgYykgKGNoYXItPmludGVnZXIgI1xhKSkpKSkpCiAgIChsZXQg
KChvbC0yICgtZnggb2wgMikpKQogICAgICAobGV0IGxvb3AgKChpIDApCgkJIChqIDApKQoJIChp
ZiAoPWZ4IGogbmwpCgkgICAgIHJlcwoJICAgICAobGV0ICgoYyAoc3RyaW5nLXJlZiBzdHIgaSkp
KQoJCShpZiAoYW5kIChjaGFyPT8gYyAjXCUpICg8ZnggaSBvbC0yKSkKCQkgICAgKGxldCAoKGMx
IChzdHJpbmctcmVmIHN0ciAoK2Z4IGkgMSkpKQoJCQkgIChjMiAoc3RyaW5nLXJlZiBzdHIgKCtm
eCBpIDIpKSkpCgkJICAgICAgIChpZiAoYW5kIChjaGFyLWhleG51bWVyaWM/IGMxKSAoY2hhci1o
ZXhudW1lcmljPyBjMikpCgkJCSAgIChsZXQqICgodjEgKGNoYXItdmFsdWUgYzEpKQoJCQkJICAo
djIgKGNoYXItdmFsdWUgYzIpKQoJCQkJICAoZCAoaW50ZWdlci0+Y2hhciAoK2Z4ICgqZnggdjEg
MTYpIHYyKSkpKQoJCQkgICAgICAoc3RyaW5nLXNldCEgcmVzIGogZCkKCQkJICAgICAgKGxvb3Ag
KCtmeCBpIDMpICgrZnggaiAxKSkpCgkJCSAgIChiZWdpbgoJCQkgICAgICAoc3RyaW5nLXNldCEg
cmVzIGogYykKCQkJICAgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggaiAxKSkpKSkKCQkgICAgKGJl
Z2luCgkJICAgICAgIChzdHJpbmctc2V0ISByZXMgaiBjKQoJCSAgICAgICAobG9vcCAoK2Z4IGkg
MSkgKCtmeCBqIDEpKSkpKSkpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgeG1sLWNvdW50IC4u
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1jb3VudCBzdHIgb2wpCiAgIChsZXQgbG9vcCAo
KGkgMCkKCSAgICAgIChjIDApKQogICAgICAoY29uZAoJICgoPWZ4IGkgb2wpCgkgIGMpCgkgKChj
aGFyPT8gKHN0cmluZy1yZWYgc3RyIGkpICNcJikKCSAgKGNvbmQKCSAgICAgKChzdWJzdHJpbmct
YXQ/IHN0ciAiJmx0OyIgaSkKCSAgICAgIChsb29wICgrZnggaSA0KSAoK2Z4IGMgMSkpKQoJICAg
ICAoKHN1YnN0cmluZy1hdD8gc3RyICImZ3Q7IiBpKQoJICAgICAgKGxvb3AgKCtmeCBpIDQpICgr
ZnggYyAxKSkpCgkgICAgICgoc3Vic3RyaW5nLWF0PyBzdHIgIiZhbXA7IiBpKQoJICAgICAgKGxv
b3AgKCtmeCBpIDUpICgrZnggYyAxKSkpCgkgICAgICgoc3Vic3RyaW5nLWF0PyBzdHIgIiZxdW90
OyIgaSkKCSAgICAgIChsb29wICgrZnggaSA2KSAoK2Z4IGMgMSkpKQoJICAgICAoKHN1YnN0cmlu
Zy1hdD8gc3RyICImbmJzcDsiIGkpCgkgICAgICAobG9vcCAoK2Z4IGkgNikgKCtmeCBjIDEpKSkK
CSAgICAgKChzdWJzdHJpbmctYXQ/IHN0ciAiJiMiIGkpCgkgICAgICAobGV0IGxpaXAgKChpICgr
ZnggaSAyKSkpCgkJIChjb25kCgkJICAgICgoPWZ4IGkgb2wpCgkJICAgICBjKQoJCSAgICAoKGNo
YXItbnVtZXJpYz8gKHN0cmluZy1yZWYgc3RyIGkpKQoJCSAgICAgKGxpaXAgKCtmeCBpIDEpKSkK
CQkgICAgKGVsc2UKCQkgICAgIChsb29wICgrZnggaSAxKSAoK2Z4IGMgMSkpKSkpKQoJICAgICAo
ZWxzZQoJICAgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggYyAxKSkpKSkKCSAoZWxzZQoJICAobG9v
cCAoK2Z4IGkgMSkgKCtmeCBjIDEpKSkpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgeG1sLWRl
Y29kZSAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1kZWNvZGUhIHN0ciByZXMgb2wgbmwp
CiAgIChsZXQgbG9vcCAoKGkgMCkKCSAgICAgIChqIDApKQogICAgICAoY29uZAoJICgoPWZ4IGkg
b2wpCgkgIHJlcykKCSAoKGNoYXI9PyAoc3RyaW5nLXJlZiBzdHIgaSkgI1wmKQoJICAoY29uZAoJ
ICAgICAoKHN1YnN0cmluZy1hdD8gc3RyICImbHQ7IiBpKQoJICAgICAgKHN0cmluZy1zZXQhIHJl
cyBqICNcPCkKCSAgICAgIChsb29wICgrZnggaSA0KSAoK2Z4IGogMSkpKQoJICAgICAoKHN1YnN0
cmluZy1hdD8gc3RyICImZ3Q7IiBpKQoJICAgICAgKHN0cmluZy1zZXQhIHJlcyBqICNcPikKCSAg
ICAgIChsb29wICgrZnggaSA0KSAoK2Z4IGogMSkpKQoJICAgICAoKHN1YnN0cmluZy1hdD8gc3Ry
ICImYW1wOyIgaSkKCSAgICAgIChzdHJpbmctc2V0ISByZXMgaiAjXCYpCgkgICAgICAobG9vcCAo
K2Z4IGkgNSkgKCtmeCBqIDEpKSkKCSAgICAgKChzdWJzdHJpbmctYXQ/IHN0ciAiJnF1b3Q7IiBp
KQoJICAgICAgKHN0cmluZy1zZXQhIHJlcyBqICNcIikKCSAgICAgIChsb29wICgrZnggaSA2KSAo
K2Z4IGogMSkpKQoJICAgICAoKHN1YnN0cmluZy1hdD8gc3RyICImbmJzcDsiIGkpCgkgICAgICAo
c3RyaW5nLXNldCEgcmVzIGogI1xzcGFjZSkKCSAgICAgIChsb29wICgrZnggaSA2KSAoK2Z4IGog
MSkpKQoJICAgICAoKHN1YnN0cmluZy1hdD8gc3RyICImIyIgaSkKCSAgICAgIChsZXQgbGlpcCAo
KGkgKCtmeCBpIDIpKQoJCQkgKG4gMCkpCgkJIChpZiAoPWZ4IGkgb2wpCgkJICAgICByZXMKCQkg
ICAgIChsZXQgKChjIChzdHJpbmctcmVmIHN0ciBpKSkpCgkJCShpZiAoY2hhci1udW1lcmljPyBj
KQoJCQkgICAgKGxpaXAgKCtmeCBpIDEpCgkJCSAgICAgICAoK2Z4ICgqZnggbiAxMCkKCQkJCSAg
KC1meCAoY2hhci0+aW50ZWdlciBjKQoJCQkJICAgICAoY2hhci0+aW50ZWdlciAjXDApKSkpCgkJ
CSAgICAoYmVnaW4KCQkJICAgICAgIChzdHJpbmctc2V0ISByZXMgaiAoaW50ZWdlci0+Y2hhciBu
KSkKCQkJICAgICAgIChsb29wICgrZnggaSAxKSAoK2Z4IGogMSkpKSkpKSkpCgkgICAgIChlbHNl
CgkgICAgICAoc3RyaW5nLXNldCEgcmVzIGogKHN0cmluZy1yZWYgc3RyIGkpKQoJICAgICAgKGxv
b3AgKCtmeCBpIDEpICgrZnggaiAxKSkpKSkKCSAoZWxzZQoJICAoc3RyaW5nLXNldCEgcmVzIGog
KHN0cmluZy1yZWYgc3RyIGkpKQoJICAobG9vcCAoK2Z4IGkgMSkgKCtmeCBqIDEpKSkpKSkKCjsq
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KOyogICAgeG1sLXN0cmluZy1kZWNvZGUgLi4uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUg
KHhtbC1zdHJpbmctZGVjb2RlIHN0cikKICAgKGxldCAoKG9sIChzdHJpbmctbGVuZ3RoIHN0cikp
KQogICAgICAoaWYgKD49Znggb2wgMykKCSAgKGxldCAoKG5sICh4bWwtY291bnQgc3RyIG9sKSkp
CgkgICAgIChpZiAoPWZ4IG5sIG9sKQoJCSAoc3RyaW5nLWNvcHkgc3RyKQoJCSAobGV0ICgocmVz
IChtYWtlLXN0cmluZyBubCkpKQoJCSAgICAoeG1sLWRlY29kZSEgc3RyIHJlcyBvbCBubCkKCQkg
ICAgcmVzKSkpCgkgIChzdHJpbmctY29weSBzdHIpKSkpCiAgIAo7Ki0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCjsq
ICAgIHhtbC1zdHJpbmctZGVjb2RlISAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwooZGVmaW5lICh4bWwtc3RyaW5nLWRlY29k
ZSEgc3RyKQogICAobGV0ICgob2wgKHN0cmluZy1sZW5ndGggc3RyKSkpCiAgICAgIChpZiAoPj1m
eCBvbCAzKQoJICAobGV0ICgobmwgKHhtbC1jb3VudCBzdHIgb2wpKSkKCSAgICAgKGlmICg9Zngg
bmwgb2wpCgkJIHN0cgoJCSAoYmVnaW4KCQkgICAgKHhtbC1kZWNvZGUhIHN0ciBzdHIgb2wgbmwp
CgkJICAgIChzdHJpbmctc2hyaW5rISBzdHIgbmwpKSkpCgkgIHN0cikpKQoKOyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwo7KiAgICB4bWwtc3RyaW5nLWVuY29kZSAuLi4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZSAoeG1sLXN0cmlu
Zy1lbmNvZGUgc3RyKQogICAoZGVmaW5lIChjb3VudCBzdHIgb2wpCiAgICAgIChsZXQgbG9vcCAo
KGkgMCkKCQkgKG4gMCkpCgkgKGlmICg9ZnggaSBvbCkKCSAgICAgbgoJICAgICAobGV0ICgoYyAo
c3RyaW5nLXJlZiBzdHIgaSkpKQoJCShjYXNlIGMKCQkgICAoKCNcIikKCQkgICAgKGxvb3AgKCtm
eCBpIDEpICgrZnggbiA2KSkpCgkJICAgKCgjXCYpCgkJICAgIChsb29wICgrZnggaSAxKSAoK2Z4
IG4gNSkpKQoJCSAgICgoI1w8ICNcPikKCQkgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggbiA0KSkp
CgkJICAgKGVsc2UKCQkgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggbiAxKSkpKSkpKSkKICAgKGRl
ZmluZSAoZW5jb2RlIHN0ciBvbCBubCkKICAgICAgKGlmICg9Znggbmwgb2wpCgkgIHN0cgoJICAo
bGV0ICgocmVzIChtYWtlLXN0cmluZyBubCkpKQoJICAgICAobGV0IGxvb3AgKChpIDApCgkJCShq
IDApKQoJCShpZiAoPWZ4IGogbmwpCgkJICAgIHJlcwoJCSAgICAobGV0ICgoYyAoc3RyaW5nLXJl
ZiBzdHIgaSkpKQoJCSAgICAgICAoY2FzZSBjCgkJCSAgKCgjXDwpCgkJCSAgIChibGl0LXN0cmlu
ZyEgIiZsdDsiIDAgcmVzIGogNCkKCQkJICAgKGxvb3AgKCtmeCBpIDEpICgrZnggaiA0KSkpCgkJ
CSAgKCgjXD4pCgkJCSAgIChibGl0LXN0cmluZyEgIiZndDsiIDAgcmVzIGogNCkKCQkJICAgKGxv
b3AgKCtmeCBpIDEpICgrZnggaiA0KSkpCgkJCSAgKCgjXCYpCgkJCSAgIChibGl0LXN0cmluZyEg
IiZhbXA7IiAwIHJlcyBqIDUpCgkJCSAgIChsb29wICgrZnggaSAxKSAoK2Z4IGogNSkpKQoJCQkg
ICgoI1wiKQoJCQkgICAoYmxpdC1zdHJpbmchICImcXVvdDsiIDAgcmVzIGogNikKCQkJICAgKGxv
b3AgKCtmeCBpIDEpICgrZnggaiA2KSkpCgkJCSAgKGVsc2UKCQkJICAgKHN0cmluZy1zZXQhIHJl
cyBqIGMpCgkJCSAgIChsb29wICgrZnggaSAxKSAoK2Z4IGogMSkpKSkpKSkpKSkKICAgKGxldCAo
KG9sIChzdHJpbmctbGVuZ3RoIHN0cikpKQogICAgICAoZW5jb2RlIHN0ciBvbCAoY291bnQgc3Ry
IG9sKSkpKQoJIAo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCjsqICAgIHJlYWQteG1sIC4uLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KOyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwooZGVmaW5lIChyZWFkLXhtbCAjIW9wdGlvbmFsIChwb3J0OjppbnB1dC1wb3J0IChjdXJy
ZW50LWlucHV0LXBvcnQpKSkKICAgKHhtbC1wYXJzZSBwb3J0KSkKCjsqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
OyogICAgeG1sLW1ldGFkYXRhIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1tZXRhZGF0YSB4
bWwpCiAgIChsZXQgKCh4bWwtdmVyICNmKQoJICh4bWwtZW5jICNmKQoJICh4bWwtbGFuZyAjZikK
CSAocm9vdC12ZXIgMC4wKQoJICh4bWwtcm9vdCAjZikKCSAoeG1sLW5zICcoKSkpCiAgICAgIChs
ZXQgbG9vcDEgKChsIHhtbCkpCgkgKHdoZW4gKHBhaXI/IGwpCgkgICAgKG1hdGNoLWNhc2UgKGNh
ciBsKQoJICAgICAgICgoeG1sLWRlY2wgLiAoYW5kID9hdHRyICg/LSAuID8tKSkpCgkJKGZvci1l
YWNoIChsYW1iZGEgKGF0KQoJCQkgICAgIChjYXNlIChjYXIgYXQpCgkJCQkoKHZlcnNpb24pIChz
ZXQhIHhtbC12ZXIgKGNkciBhdHRyKSkpCgkJCQkoKGVuY29kaW5nKSAoc2V0ISB4bWwtZW5jIChj
ZHIgYXR0cikpKSkpCgkJCSAgYXR0cikpCgkgICAgICAgKCg/bWFyayA/bGF0dHIgLiA/LSkKCQko
bGV0IGxvb3AzICgobGF0dHIgbGF0dHIpKQoJCSAgICh1bmxlc3MgeG1sLXJvb3QgKHNldCEgeG1s
LXJvb3QgbWFyaykpCgkJICAgKHdoZW4gKHBhaXI/IGxhdHRyKQoJCSAgICAgIChsZXQgKChhdHRy
IChjYXIgbGF0dHIpKSkKCQkJIChjYXNlIChjYXIgYXR0cikKCQkJICAgICgoeG1sOmxhbmcpCgkJ
CSAgICAgKHNldCEgeG1sLWxhbmcgKGNkciBhdHRyKSkpCgkJCSAgICAoKHhtbG5zKQoJCQkgICAg
IChzZXQhIHhtbC1yb290IChjb25zIChjZHIgYXR0cikgeG1sLXJvb3QpKSkKCQkJICAgICgodmVy
c2lvbikKCQkJICAgICAoc2V0ISByb290LXZlciAoc3RyaW5nLT5udW1iZXIgKGNkciBhdHRyKSkp
KQoJCQkgICAgKGVsc2UKCQkJICAgICAobGV0ICgoc3RyIChzeW1ib2wtPnN0cmluZyAoY2FyIGF0
dHIpKSkpCgkJCQkod2hlbiAoc3Vic3RyaW5nPT8gc3RyICJ4bWxuczoiIDYpCgkJCQkgICAobGV0
KiAoKGwgKHN0cmluZy1sZW5ndGggc3RyKSkKCQkJCQkgIChzIChzdWJzdHJpbmcgc3RyIDYgbCkp
CgkJCQkJICAoc2kgKHN0cmluZy0+c3ltYm9sIHMpKSkKCQkJCSAgICAgIChzZXQhIHhtbC1ucwoJ
CQkJCSAgICAoY29ucyAoY29ucyAoY2RyIGF0dHIpIHNpKQoJCQkJCQkgIHhtbC1ucykpKSkpKSkK
CQkJIChsb29wMyAoY2RyIGxhdHRyKSkpKSkpKQoJICAgIChsb29wMSAoY2RyIGwpKSkpCiAgICAg
ICh1bmxlc3MgeG1sLXJvb3QKCSAoZXJyb3IgInhtbC1tZXRhZGF0YSIgIkVtcHR5IFhNTCBkb2N1
bWVudCAhIiB4bWwpKQogICAgICA7OyBWYWx1ZXMgYXJlIDoKICAgICAgOzsgLSBYTUwgVmVyc2lv
biAoMS4wIG9yIDEuMSkgb3IgI2YKICAgICAgOzsgLSBYTUwgRW5jb2RpbmcgKCNmIGlmIHVua25v
d24pCiAgICAgIDs7IC0geG1sOmxhbmcgdmFsdWUKICAgICAgOzsgLSBQYWlyLCB3aGljaCBjYXIg
aXMgdGhlIGZpcnN0IGRhdGEgbWFya3VwLCBhbmQKICAgICAgOzsgICBjZHIgdGhlIGRlZmF1bHQg
bmFtZXNwYWNlCiAgICAgIDs7IC0geG1sIGZpcnN0IGRhdGEgbWFya3VwIHZlcnNpb24gYXR0cmli
dXRlICgwIGlmIHVuc3BlY2lmaWVkKQogICAgICA7OyAtIGxpc3Qgb2YgcHJlZml4ZWQgbmFtZXNw
YWNlcyAocHJlZml4IC4gcGF0aCkKICAgICAgKHZhbHVlcyB4bWwtdmVyIHhtbC1lbmMgeG1sLWxh
bmcgeG1sLXJvb3Qgcm9vdC12ZXIgeG1sLW5zKSkpCg==

------=_Part_5351822_936647154.1643829109283--