<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>147850</bug_id>
          
          <creation_ts>2015-08-10 15:46:34 -0700</creation_ts>
          <short_desc>Add more strict mode tests</short_desc>
          <delta_ts>2015-09-03 19:43:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146477</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116366</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-10 15:46:34 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116648</commentid>
    <comment_count>1</comment_count>
      <attachid>258737</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-11 12:41:27 -0700</bug_when>
    <thetext>Created attachment 258737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116659</commentid>
    <comment_count>2</comment_count>
      <attachid>258737</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-11 12:59:41 -0700</bug_when>
    <thetext>Comment on attachment 258737
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258737&amp;action=review

r=me

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        * tests/stress/v8-crypto-strict.js: Added.

I think it would be better to just list the new test file names and not the individual functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116662</commentid>
    <comment_count>3</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-11 13:03:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 258737 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258737&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:17
&gt; &gt; +        * tests/stress/v8-crypto-strict.js: Added.
&gt; 
&gt; I think it would be better to just list the new test file names and not the
&gt; individual functions.

That makes sense, changing that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116663</commentid>
    <comment_count>4</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-11 13:07:19 -0700</bug_when>
    <thetext>Committed r188281 &lt;http://trac.webkit.org/changeset/188281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122432</commentid>
    <comment_count>5</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:20:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r188281 &lt;http://trac.webkit.org/changeset/188281&gt;

This was on the jsc-tailcall branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123302</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-03 19:43:45 -0700</bug_when>
    <thetext>Committed r189335: &lt;http://trac.webkit.org/changeset/189335&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258737</attachid>
            <date>2015-08-11 12:41:27 -0700</date>
            <delta_ts>2015-08-11 12:59:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147850-20150811124112.patch</filename>
            <type>text/plain</type>
            <size>469867</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
N2Y2YTczY2VkZWRlODIwNzZhNzVmYTljZWJhMjg5NWY2MDkyMWFjLi5iNmQ5Y2Q3MDRhNjJiNTkw
ODBlYjczODBkODQxNjU5ODlhOTlmZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3MTUgQEAKIDIwMTUtMDgtMTEgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRA
YXBwbGUuY29tPgogCisgICAgICAgIGpzYy10YWlsY2FsbDogQWRkIG1vcmUgc3RyaWN0IG1vZGUg
dGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Nzg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IHNob3VsZCBoYXZlIG1vcmUgdGVzdHMgaW4gc3RyaWN0IG1vZGUgdG8gaGF2ZSBiZXR0ZXIgdGVz
dCBjb3ZlcmFnZS4KKyAgICAgICAgVGhpcyBhZGRzIGEgY29weSBvZiB0aGUgdjgtdjYgdGVzdHMg
ZnJvbSBTdW5TcGlkZXIgYXMgSlNDIHN0cmVzcyB0ZXN0cywKKyAgICAgICAgd2l0aCAidXNlIHN0
cmljdCI7IGFkZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGVzLgorCisgICAgICAgIEEgZmV3IG1v
ZGlmaWNhdGlvbnMgd2VyZSBuZWNlc3NhcnkgdG8gbWFrZSB0aGUgZmlsZXMgdmFsaWQgaW4gc3Ry
aWN0CisgICAgICAgIG1vZGUsIG5hbWVseSBhZGRpbmcgYSBjb3VwbGUgb2YgInZhciIgc3RhdGVt
ZW50cyBhbmQgcmVtb3Zpbmcgc29tZQorICAgICAgICBnZW5lcmF0ZWQgY29kZSBpbiBlYXJsZXkt
Ym95ZXIgdGhhdCB3YXMgdXNpbmcgc3RyaW5ncyB3aXRoIG9jdGFsCisgICAgICAgIGVzY2FwZXMu
CisKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdjgtY3J5cHRvLXN0cmljdC5qczogQWRkZWQuCisg
ICAgICAgIChuYmkpOgorICAgICAgICAoYW0xKToKKyAgICAgICAgKGFtMik6CisgICAgICAgIChh
bTMpOgorICAgICAgICAoYW00KToKKyAgICAgICAgKHNldHVwRW5naW5lKToKKyAgICAgICAgKGlu
dDJjaGFyKToKKyAgICAgICAgKGludEF0KToKKyAgICAgICAgKGJucENvcHlUbyk6CisgICAgICAg
IChibnBGcm9tSW50KToKKyAgICAgICAgKG5idik6CisgICAgICAgIChibnBGcm9tU3RyaW5nKToK
KyAgICAgICAgKGJucENsYW1wKToKKyAgICAgICAgKGJuVG9TdHJpbmcpOgorICAgICAgICAoYm5O
ZWdhdGUpOgorICAgICAgICAoYm5BYnMpOgorICAgICAgICAoYm5Db21wYXJlVG8pOgorICAgICAg
ICAobmJpdHMpOgorICAgICAgICAoYm5CaXRMZW5ndGgpOgorICAgICAgICAoYm5wRExTaGlmdFRv
KToKKyAgICAgICAgKGJucERSU2hpZnRUbyk6CisgICAgICAgIChibnBMU2hpZnRUbyk6CisgICAg
ICAgIChibnBSU2hpZnRUbyk6CisgICAgICAgIChibnBTdWJUbyk6CisgICAgICAgIChibnBNdWx0
aXBseVRvKToKKyAgICAgICAgKGJucFNxdWFyZVRvKToKKyAgICAgICAgKGJucERpdlJlbVRvKToK
KyAgICAgICAgKGJuTW9kKToKKyAgICAgICAgKENsYXNzaWMpOgorICAgICAgICAoY0NvbnZlcnQp
OgorICAgICAgICAoY1JldmVydCk6CisgICAgICAgIChjUmVkdWNlKToKKyAgICAgICAgKGNNdWxU
byk6CisgICAgICAgIChjU3FyVG8pOgorICAgICAgICAoYm5wSW52RGlnaXQpOgorICAgICAgICAo
TW9udGdvbWVyeSk6CisgICAgICAgIChtb250Q29udmVydCk6CisgICAgICAgIChtb250UmV2ZXJ0
KToKKyAgICAgICAgKG1vbnRSZWR1Y2UpOgorICAgICAgICAobW9udFNxclRvKToKKyAgICAgICAg
KG1vbnRNdWxUbyk6CisgICAgICAgIChibnBJc0V2ZW4pOgorICAgICAgICAoYm5wRXhwKToKKyAg
ICAgICAgKGJuTW9kUG93SW50KToKKyAgICAgICAgKGJuQ2xvbmUpOgorICAgICAgICAoYm5JbnRW
YWx1ZSk6CisgICAgICAgIChibkJ5dGVWYWx1ZSk6CisgICAgICAgIChiblNob3J0VmFsdWUpOgor
ICAgICAgICAoYm5wQ2h1bmtTaXplKToKKyAgICAgICAgKGJuU2lnTnVtKToKKyAgICAgICAgKGJu
cFRvUmFkaXgpOgorICAgICAgICAoYm5wRnJvbVJhZGl4KToKKyAgICAgICAgKGJucEZyb21OdW1i
ZXIpOgorICAgICAgICAoYm5Ub0J5dGVBcnJheSk6CisgICAgICAgIChibkVxdWFscyk6CisgICAg
ICAgIChibk1heCk6CisgICAgICAgIChibnBCaXR3aXNlVG8pOgorICAgICAgICAob3BfYW5kKToK
KyAgICAgICAgKGJuQW5kKToKKyAgICAgICAgKG9wX29yKToKKyAgICAgICAgKGJuT3IpOgorICAg
ICAgICAob3BfeG9yKToKKyAgICAgICAgKGJuWG9yKToKKyAgICAgICAgKG9wX2FuZG5vdCk6Cisg
ICAgICAgIChibkFuZE5vdCk6CisgICAgICAgIChibk5vdCk6CisgICAgICAgIChiblNoaWZ0TGVm
dCk6CisgICAgICAgIChiblNoaWZ0UmlnaHQpOgorICAgICAgICAobGJpdCk6CisgICAgICAgIChi
bkdldExvd2VzdFNldEJpdCk6CisgICAgICAgIChjYml0KToKKyAgICAgICAgKGJuQml0Q291bnQp
OgorICAgICAgICAoYm5UZXN0Qml0KToKKyAgICAgICAgKGJuU2V0Qml0KToKKyAgICAgICAgKGJu
Q2xlYXJCaXQpOgorICAgICAgICAoYm5GbGlwQml0KToKKyAgICAgICAgKGJucEFkZFRvKToKKyAg
ICAgICAgKGJuQWRkKToKKyAgICAgICAgKGJuU3VidHJhY3QpOgorICAgICAgICAoYm5NdWx0aXBs
eSk6CisgICAgICAgIChibkRpdmlkZSk6CisgICAgICAgIChiblJlbWFpbmRlcik6CisgICAgICAg
IChibkRpdmlkZUFuZFJlbWFpbmRlcik6CisgICAgICAgIChibnBETXVsdGlwbHkpOgorICAgICAg
ICAoYm5wREFkZE9mZnNldCk6CisgICAgICAgIChOdWxsRXhwKToKKyAgICAgICAgKG5Ob3ApOgor
ICAgICAgICAobk11bFRvKToKKyAgICAgICAgKG5TcXJUbyk6CisgICAgICAgIChiblBvdyk6Cisg
ICAgICAgIChibnBNdWx0aXBseUxvd2VyVG8pOgorICAgICAgICAoYm5wTXVsdGlwbHlVcHBlclRv
KToKKyAgICAgICAgKEJhcnJldHQpOgorICAgICAgICAoYmFycmV0dENvbnZlcnQpOgorICAgICAg
ICAoYmFycmV0dFJldmVydCk6CisgICAgICAgIChiYXJyZXR0UmVkdWNlKToKKyAgICAgICAgKGJh
cnJldHRTcXJUbyk6CisgICAgICAgIChiYXJyZXR0TXVsVG8pOgorICAgICAgICAoYm5Nb2RQb3cp
OgorICAgICAgICAoYm5HQ0QpOgorICAgICAgICAoYm5wTW9kSW50KToKKyAgICAgICAgKGJuTW9k
SW52ZXJzZSk6CisgICAgICAgIChibklzUHJvYmFibGVQcmltZSk6CisgICAgICAgIChibnBNaWxs
ZXJSYWJpbik6CisgICAgICAgIChBcmNmb3VyKToKKyAgICAgICAgKEFSQzRpbml0KToKKyAgICAg
ICAgKEFSQzRuZXh0KToKKyAgICAgICAgKHBybmdfbmV3c3RhdGUpOgorICAgICAgICAocm5nX3Nl
ZWRfaW50KToKKyAgICAgICAgKHJuZ19zZWVkX3RpbWUpOgorICAgICAgICAocm5nX2dldF9ieXRl
KToKKyAgICAgICAgKHJuZ19nZXRfYnl0ZXMpOgorICAgICAgICAoU2VjdXJlUmFuZG9tKToKKyAg
ICAgICAgKHBhcnNlQmlnSW50KToKKyAgICAgICAgKGxpbmVicmspOgorICAgICAgICAoYnl0ZTJI
ZXgpOgorICAgICAgICAocGtjczFwYWQyKToKKyAgICAgICAgKFJTQUtleSk6CisgICAgICAgIChS
U0FTZXRQdWJsaWMpOgorICAgICAgICAoUlNBRG9QdWJsaWMpOgorICAgICAgICAoUlNBRW5jcnlw
dCk6CisgICAgICAgIChwa2NzMXVucGFkMik6CisgICAgICAgIChSU0FTZXRQcml2YXRlKToKKyAg
ICAgICAgKFJTQVNldFByaXZhdGVFeCk6CisgICAgICAgIChSU0FHZW5lcmF0ZSk6CisgICAgICAg
IChSU0FEb1ByaXZhdGUpOgorICAgICAgICAoUlNBRGVjcnlwdCk6CisgICAgICAgIChlbmNyeXB0
KToKKyAgICAgICAgKGRlY3J5cHQpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy92OC1kZWx0YWJs
dWUtc3RyaWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaW5oZXJpdHNG
cm9tKToKKyAgICAgICAgKE9yZGVyZWRDb2xsZWN0aW9uKToKKyAgICAgICAgKE9yZGVyZWRDb2xs
ZWN0aW9uLnByb3RvdHlwZS5hZGQpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLmF0KToKKyAgICAgICAgKE9yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5zaXplKToKKyAg
ICAgICAgKE9yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVGaXJzdCk6CisgICAgICAg
IChPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFN0cmVuZ3Ro
KToKKyAgICAgICAgKFN0cmVuZ3RoLnN0cm9uZ2VyKToKKyAgICAgICAgKFN0cmVuZ3RoLndlYWtl
cik6CisgICAgICAgIChTdHJlbmd0aC53ZWFrZXN0T2YpOgorICAgICAgICAoU3RyZW5ndGguc3Ry
b25nZXN0KToKKyAgICAgICAgKFN0cmVuZ3RoLnByb3RvdHlwZS5uZXh0V2Vha2VyKToKKyAgICAg
ICAgKENvbnN0cmFpbnQpOgorICAgICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuYWRkQ29uc3Ry
YWludCk6CisgICAgICAgIChDb25zdHJhaW50LnByb3RvdHlwZS5zYXRpc2Z5KToKKyAgICAgICAg
KENvbnN0cmFpbnQucHJvdG90eXBlLmRlc3Ryb3lDb25zdHJhaW50KToKKyAgICAgICAgKENvbnN0
cmFpbnQucHJvdG90eXBlLmlzSW5wdXQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50KToKKyAg
ICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCk6CisgICAgICAgIChV
bmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmNob29zZU1ldGhvZCk6CisgICAgICAgIChVbmFyeUNv
bnN0cmFpbnQucHJvdG90eXBlLmlzU2F0aXNmaWVkKToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUubWFya0lucHV0cyk6CisgICAgICAgIChVbmFyeUNvbnN0cmFpbnQucHJvdG90
eXBlLm91dHB1dCk6CisgICAgICAgIChVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3Vs
YXRlKToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVk
KToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24pOgorICAg
ICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGgpOgorICAgICAg
ICAoU3RheUNvbnN0cmFpbnQpOgorICAgICAgICAoU3RheUNvbnN0cmFpbnQucHJvdG90eXBlLmV4
ZWN1dGUpOgorICAgICAgICAoRWRpdENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQpOgorICAg
ICAgICAoRWRpdENvbnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUpOgorICAgICAgICAoQmluYXJ5
Q29uc3RyYWludCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VN
ZXRob2QpOgorICAgICAgICAoQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCk6
CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pc1NhdGlzZmllZCk6CisgICAg
ICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzKToKKyAgICAgICAgKEJp
bmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlucHV0KToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5yZWNhbGN1bGF0ZSk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJr
VW5zYXRpc2ZpZWQpOgorICAgICAgICAoQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRz
S25vd24pOgorICAgICAgICAoQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdy
YXBoKToKKyAgICAgICAgKFNjYWxlQ29uc3RyYWludCk6CisgICAgICAgIChTY2FsZUNvbnN0cmFp
bnQucHJvdG90eXBlLmFkZFRvR3JhcGgpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50LnByb3Rv
dHlwZS5yZW1vdmVGcm9tR3JhcGgpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50LnByb3RvdHlw
ZS5tYXJrSW5wdXRzKToKKyAgICAgICAgKFNjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0
ZSk6CisgICAgICAgIChTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlKToKKyAg
ICAgICAgKEVxdWFsaXR5Q29uc3RyYWludCk6CisgICAgICAgIChFcXVhbGl0eUNvbnN0cmFpbnQu
cHJvdG90eXBlLmV4ZWN1dGUpOgorICAgICAgICAoVmFyaWFibGUpOgorICAgICAgICAoVmFyaWFi
bGUucHJvdG90eXBlLmFkZENvbnN0cmFpbnQpOgorICAgICAgICAoVmFyaWFibGUucHJvdG90eXBl
LnJlbW92ZUNvbnN0cmFpbnQpOgorICAgICAgICAoUGxhbm5lcik6CisgICAgICAgIChQbGFubmVy
LnByb3RvdHlwZS5pbmNyZW1lbnRhbEFkZCk6CisgICAgICAgIChQbGFubmVyLnByb3RvdHlwZS5p
bmNyZW1lbnRhbFJlbW92ZSk6CisgICAgICAgIChQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrKToK
KyAgICAgICAgKFBsYW5uZXIucHJvdG90eXBlLm1ha2VQbGFuKToKKyAgICAgICAgKFBsYW5uZXIu
cHJvdG90eXBlLmV4dHJhY3RQbGFuRnJvbUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFBsYW5uZXIu
cHJvdG90eXBlLmFkZFByb3BhZ2F0ZSk6CisgICAgICAgIChQbGFubmVyLnByb3RvdHlwZS5yZW1v
dmVQcm9wYWdhdGVGcm9tKToKKyAgICAgICAgKFBsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFp
bnRzQ29uc3VtaW5nVG8pOgorICAgICAgICAoUGxhbik6CisgICAgICAgIChQbGFuLnByb3RvdHlw
ZS5hZGRDb25zdHJhaW50KToKKyAgICAgICAgKFBsYW4ucHJvdG90eXBlLnNpemUpOgorICAgICAg
ICAoUGxhbi5wcm90b3R5cGUuY29uc3RyYWludEF0KToKKyAgICAgICAgKFBsYW4ucHJvdG90eXBl
LmV4ZWN1dGUpOgorICAgICAgICAoY2hhaW5UZXN0KToKKyAgICAgICAgKHByb2plY3Rpb25UZXN0
KToKKyAgICAgICAgKGNoYW5nZSk6CisgICAgICAgIChkZWx0YUJsdWUpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy92OC1lYXJsZXktYm95ZXItc3RyaWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNj
X3ByaW50X2RlYnVnKToKKyAgICAgICAgKHNjX2FsZXJ0KToKKyAgICAgICAgKHNjX3R5cGVvZik6
CisgICAgICAgIChzY19lcnJvcik6CisgICAgICAgIChzY19yYWlzZSk6CisgICAgICAgIChzY193
aXRoSGFuZGxlckxhbWJkYSk6CisgICAgICAgIChzY19wdXRwcm9wQmFuZyk6CisgICAgICAgIChz
Y19nZXRwcm9wKToKKyAgICAgICAgKHNjX3JlbXByb3BCYW5nKToKKyAgICAgICAgKHNjX2FueTJT
dHJpbmcpOgorICAgICAgICAoc2NfaXNFcXYpOgorICAgICAgICAoc2NfaXNSZWFsKToKKyAgICAg
ICAgKHNjX2lzUmF0aW9uYWwpOgorICAgICAgICAoc2NfaXNJbnRlZ2VyKToKKyAgICAgICAgKHNj
X2lzSW5leGFjdCk6CisgICAgICAgIChzY19lcXVhbCk6CisgICAgICAgIChzY19sZXNzKToKKyAg
ICAgICAgKHNjX2dyZWF0ZXIpOgorICAgICAgICAoc2NfbGVzc0VxdWFsKToKKyAgICAgICAgKHNj
X2dyZWF0ZXJFcXVhbCk6CisgICAgICAgIChzY19pc1plcm8pOgorICAgICAgICAoc2NfaXNOZWdh
dGl2ZSk6CisgICAgICAgIChzY19pc09kZCk6CisgICAgICAgIChzY19wbHVzKToKKyAgICAgICAg
KHNjX211bHRpKToKKyAgICAgICAgKHNjX21pbnVzKToKKyAgICAgICAgKHNjX2Rpdik6CisgICAg
ICAgIChzY19xdW90aWVudCk6CisgICAgICAgIChzY19yZW1haW5kZXIpOgorICAgICAgICAoc2Nf
bW9kdWxvKToKKyAgICAgICAgKHNjX2V1Y2xpZF9nY2QpOgorICAgICAgICAoc2NfZ2NkKToKKyAg
ICAgICAgKHNjX2xjbSk6CisgICAgICAgIChzY19leGFjdDJpbmV4YWN0KToKKyAgICAgICAgKHNj
X2luZXhhY3QyZXhhY3QpOgorICAgICAgICAoc2NfbnVtYmVyMmpzc3RyaW5nKToKKyAgICAgICAg
KHNjX2pzc3RyaW5nMm51bWJlcik6CisgICAgICAgIChzY19ub3QpOgorICAgICAgICAoc2NfaXNC
b29sZWFuKToKKyAgICAgICAgKHNjX1BhaXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAg
KHNjX1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVPckRpc3BsYXlTdHJpbmcpOgorICAgICAgICAo
c2NfUGFpci5wcm90b3R5cGUuc2NfdG9EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKHNjX1BhaXIu
cHJvdG90eXBlLnNjX3RvV3JpdGVTdHJpbmcpOgorICAgICAgICAoc2NfaXNQYWlyKToKKyAgICAg
ICAgKHNjX2lzUGFpckVxdWFsKToKKyAgICAgICAgKHNjX2NvbnMpOgorICAgICAgICAoc2NfY29u
c1N0YXIpOgorICAgICAgICAoc2NfY2FyKToKKyAgICAgICAgKHNjX2Nkcik6CisgICAgICAgIChz
Y19zZXRDYXJCYW5nKToKKyAgICAgICAgKHNjX3NldENkckJhbmcpOgorICAgICAgICAoc2NfY2Fh
cik6CisgICAgICAgIChzY19jYWRyKToKKyAgICAgICAgKHNjX2NkYXIpOgorICAgICAgICAoc2Nf
Y2Rkcik6CisgICAgICAgIChzY19jYWFhcik6CisgICAgICAgIChzY19jYWRhcik6CisgICAgICAg
IChzY19jYWFkcik6CisgICAgICAgIChzY19jYWRkcik6CisgICAgICAgIChzY19jZGFhcik6Cisg
ICAgICAgIChzY19jZGFkcik6CisgICAgICAgIChzY19jZGRhcik6CisgICAgICAgIChzY19jZGRk
cik6CisgICAgICAgIChzY19jYWFhYXIpOgorICAgICAgICAoc2NfY2FhZGFyKToKKyAgICAgICAg
KHNjX2NhYWFkcik6CisgICAgICAgIChzY19jYWFkZHIpOgorICAgICAgICAoc2NfY2RhYWFyKToK
KyAgICAgICAgKHNjX2NkYWRhcik6CisgICAgICAgIChzY19jZGFhZHIpOgorICAgICAgICAoc2Nf
Y2RhZGRyKToKKyAgICAgICAgKHNjX2NhZGFhcik6CisgICAgICAgIChzY19jYWRkYXIpOgorICAg
ICAgICAoc2NfY2FkYWRyKToKKyAgICAgICAgKHNjX2NhZGRkcik6CisgICAgICAgIChzY19jZGRh
YXIpOgorICAgICAgICAoc2NfY2RkZGFyKToKKyAgICAgICAgKHNjX2NkZGFkcik6CisgICAgICAg
IChzY19jZGRkZHIpOgorICAgICAgICAoc2NfbGFzdFBhaXIpOgorICAgICAgICAoc2NfaXNOdWxs
KToKKyAgICAgICAgKHNjX2xpc3QpOgorICAgICAgICAoc2NfaW90YSk6CisgICAgICAgIChzY19t
YWtlTGlzdCk6CisgICAgICAgIChzY19sZW5ndGgpOgorICAgICAgICAoc2NfcmVtcSk6CisgICAg
ICAgIChzY19yZW1xQmFuZyk6CisgICAgICAgIChzY19kZWxldGUpOgorICAgICAgICAoc2NfZGVs
ZXRlQmFuZyk6CisgICAgICAgIChzY19yZXZlcnNlQXBwZW5kQmFuZyk6CisgICAgICAgIChzY19k
dWFsQXBwZW5kKToKKyAgICAgICAgKHNjX2FwcGVuZCk6CisgICAgICAgIChzY19kdWFsQXBwZW5k
QmFuZyk6CisgICAgICAgIChzY19hcHBlbmRCYW5nKToKKyAgICAgICAgKHNjX3JldmVyc2UpOgor
ICAgICAgICAoc2NfcmV2ZXJzZUJhbmcpOgorICAgICAgICAoc2NfbGlzdFRhaWwpOgorICAgICAg
ICAoc2NfbGlzdFJlZik6CisgICAgICAgIChzY19tZW1xKToKKyAgICAgICAgKHNjX21lbXYpOgor
ICAgICAgICAoc2NfbWVtYmVyKToKKyAgICAgICAgKHNjX2Fzc3EpOgorICAgICAgICAoc2NfYXNz
dik6CisgICAgICAgIChzY19hc3NvYyk6CisgICAgICAgIChzY19pc0NoYXJTdHJpbmdFcXVhbCk6
CisgICAgICAgIChzY19pc0NoYXJTdHJpbmdMZXNzKToKKyAgICAgICAgKHNjX2lzQ2hhclN0cmlu
Z0dyZWF0ZXIpOgorICAgICAgICAoc2NfaXNDaGFyU3RyaW5nTGVzc0VxdWFsKToKKyAgICAgICAg
KHNjX2lzQ2hhclN0cmluZ0dyZWF0ZXJFcXVhbCk6CisgICAgICAgIChzY19pc0NoYXJTdHJpbmdD
SUVxdWFsKToKKyAgICAgICAgKHNjX2lzQ2hhclN0cmluZ0NJTGVzcyk6CisgICAgICAgIChzY19p
c0NoYXJTdHJpbmdDSUdyZWF0ZXIpOgorICAgICAgICAoc2NfaXNDaGFyU3RyaW5nQ0lMZXNzRXF1
YWwpOgorICAgICAgICAoc2NfaXNDaGFyU3RyaW5nQ0lHcmVhdGVyRXF1YWwpOgorICAgICAgICAo
c2NfQ2hhcik6CisgICAgICAgIChzY19DaGFyLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAg
IChzY19DaGFyLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nKToKKyAgICAgICAgKHNjX2lzQ2hh
cik6CisgICAgICAgIChzY19pc0NoYXJPZkNsYXNzKToKKyAgICAgICAgKHNjX2lzQ2hhck51bWVy
aWMpOgorICAgICAgICAoc2NfaXNDaGFyV2hpdGVzcGFjZSk6CisgICAgICAgIChzY19pc0NoYXJV
cHBlckNhc2UpOgorICAgICAgICAoc2NfaXNDaGFyTG93ZXJDYXNlKToKKyAgICAgICAgKHNjX2No
YXIyaW50ZWdlcik6CisgICAgICAgIChzY19pbnRlZ2VyMmNoYXIpOgorICAgICAgICAoc2NfY2hh
clVwY2FzZSk6CisgICAgICAgIChzY19jaGFyRG93bmNhc2UpOgorICAgICAgICAoc2NfbWFrZUpT
U3RyaW5nT2ZMZW5ndGgpOgorICAgICAgICAoc2NfbWFrZWpzU3RyaW5nKToKKyAgICAgICAgKHNj
X2pzc3RyaW5nMmxpc3QpOgorICAgICAgICAoc2NfbGlzdDJqc3N0cmluZyk6CisgICAgICAgIChz
Y19WZWN0b3IucHJvdG90eXBlLnNjX3RvV3JpdGVPckRpc3BsYXlTdHJpbmcpOgorICAgICAgICAo
c2NfVmVjdG9yLnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJpbmcpOgorICAgICAgICAoc2NfVmVj
dG9yLnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nKToKKyAgICAgICAgKHNjX2lzVmVjdG9yKToK
KyAgICAgICAgKHNjX2lzVmVjdG9yRXF1YWwpOgorICAgICAgICAoc2NfbWFrZVZlY3Rvcik6Cisg
ICAgICAgIChzY192ZWN0b3IpOgorICAgICAgICAoc2NfdmVjdG9yTGVuZ3RoKToKKyAgICAgICAg
KHNjX3ZlY3RvclJlZik6CisgICAgICAgIChzY192ZWN0b3JTZXRCYW5nKToKKyAgICAgICAgKHNj
X3ZlY3RvcjJsaXN0KToKKyAgICAgICAgKHNjX2xpc3QydmVjdG9yKToKKyAgICAgICAgKHNjX3Zl
Y3RvckZpbGxCYW5nKToKKyAgICAgICAgKHNjX2NvcHlWZWN0b3IpOgorICAgICAgICAoc2NfdmVj
dG9yQ29weSk6CisgICAgICAgIChzY192ZWN0b3JDb3B5QmFuZyk6CisgICAgICAgIChzY19pc1By
b2NlZHVyZSk6CisgICAgICAgIChzY19tYXApOgorICAgICAgICAoc2NfbWFwQmFuZyk6CisgICAg
ICAgIChzY19mb3JFYWNoKToKKyAgICAgICAgKHNjX2ZpbHRlcik6CisgICAgICAgIChzY19maWx0
ZXJCYW5nKToKKyAgICAgICAgKHNjX2ZpbHRlck1hcDEpOgorICAgICAgICAoc2NfZmlsdGVyTWFw
Mik6CisgICAgICAgIChzY19maWx0ZXJNYXApOgorICAgICAgICAoc2NfYW55KToKKyAgICAgICAg
KHNjX2FueVByZWQpOgorICAgICAgICAoc2NfZXZlcnkpOgorICAgICAgICAoc2NfZXZlcnlQcmVk
KToKKyAgICAgICAgKHNjX2ZvcmNlKToKKyAgICAgICAgKHNjX21ha2VQcm9taXNlKToKKyAgICAg
ICAgKHNjX1ZhbHVlcyk6CisgICAgICAgIChzY192YWx1ZXMpOgorICAgICAgICAoc2NfY2FsbFdp
dGhWYWx1ZXMpOgorICAgICAgICAoc2NfZHluYW1pY1dpbmQpOgorICAgICAgICAoc2NfU3RydWN0
KToKKyAgICAgICAgKHNjX1N0cnVjdC5wcm90b3R5cGUuc2NfdG9EaXNwbGF5U3RyaW5nKToKKyAg
ICAgICAgKHNjX21ha2VTdHJ1Y3QpOgorICAgICAgICAoc2NfaXNTdHJ1Y3QpOgorICAgICAgICAo
c2NfaXNTdHJ1Y3ROYW1lZCk6CisgICAgICAgIChzY19zZXRTdHJ1Y3RGaWVsZEJhbmcpOgorICAg
ICAgICAoc2NfYml0Tm90KToKKyAgICAgICAgKHNjX2JpdEFuZCk6CisgICAgICAgIChzY19iaXRP
cik6CisgICAgICAgIChzY19iaXRYb3IpOgorICAgICAgICAoc2NfYml0THNoKToKKyAgICAgICAg
KHNjX2JpdFJzaCk6CisgICAgICAgIChzY19iaXRVcnNoKToKKyAgICAgICAgKHNjX2pzRmllbGQp
OgorICAgICAgICAoc2Nfc2V0SnNGaWVsZEJhbmcpOgorICAgICAgICAoc2NfZGVsZXRlSnNGaWVs
ZEJhbmcpOgorICAgICAgICAoc2NfanNDYWxsKToKKyAgICAgICAgKHNjX2pzTWV0aG9kQ2FsbCk6
CisgICAgICAgIChzY19qc05ldyk6CisgICAgICAgIChzY19wcmVnZXhwKToKKyAgICAgICAgKHNj
X3ByZWdleHBNYXRjaCk6CisgICAgICAgIChzY19wcmVnZXhwUmVwbGFjZSk6CisgICAgICAgIChz
Y19wcmVnZXhwUmVwbGFjZUFsbCk6CisgICAgICAgIChzY19wcmVnZXhwU3BsaXQpOgorICAgICAg
ICAoc2NfcmFuZG9tKToKKyAgICAgICAgKHNjX2N1cnJlbnREYXRlKToKKyAgICAgICAgKHNjX0hh
c2h0YWJsZSk6CisgICAgICAgIChzY19IYXNodGFibGUucHJvdG90eXBlLnRvU3RyaW5nKToKKyAg
ICAgICAgKHNjX0hhc2h0YWJsZUVsZW1lbnQpOgorICAgICAgICAoc2NfbWFrZUhhc2h0YWJsZSk6
CisgICAgICAgIChzY19oYXNodGFibGVQdXRCYW5nKToKKyAgICAgICAgKHNjX2hhc2h0YWJsZUdl
dCk6CisgICAgICAgIChzY19oYXNodGFibGVGb3JFYWNoKToKKyAgICAgICAgKHNjX2hhc2h0YWJs
ZUNvbnRhaW5zKToKKyAgICAgICAgKHNjX2hhc2gpOgorICAgICAgICAoc2NfY291bnRlckhhc2gp
OgorICAgICAgICAoc2NfVHJhbXBvbGluZSk6CisgICAgICAgIChzY19UcmFtcG9saW5lLnByb3Rv
dHlwZS5yZXN0YXJ0KToKKyAgICAgICAgKHNjX2JpbmRFeGl0TGFtYmRhLmVzY2FwZSk6CisgICAg
ICAgIChzY19iaW5kRXhpdExhbWJkYSk6CisgICAgICAgIChzY19CaW5kRXhpdEV4Y2VwdGlvbik6
CisgICAgICAgIChzY19FT0YpOgorICAgICAgICAoc2NfUG9ydCk6CisgICAgICAgIChzY19JbnB1
dFBvcnQpOgorICAgICAgICAoc2NfSW5wdXRQb3J0LnByb3RvdHlwZS5wZWVrQ2hhcik6CisgICAg
ICAgIChzY19JbnB1dFBvcnQucHJvdG90eXBlLnJlYWRDaGFyKToKKyAgICAgICAgKHNjX0lucHV0
UG9ydC5wcm90b3R5cGUuaXNDaGFyUmVhZHkpOgorICAgICAgICAoc2NfSW5wdXRQb3J0LnByb3Rv
dHlwZS5jbG9zZSk6CisgICAgICAgIChzY19FcnJvcklucHV0UG9ydC5wcm90b3R5cGUuZ2V0TmV4
dENoYXIpOgorICAgICAgICAoc2NfRXJyb3JJbnB1dFBvcnQucHJvdG90eXBlLmlzQ2hhclJlYWR5
KToKKyAgICAgICAgKHNjX1N0cmluZ0lucHV0UG9ydCk6CisgICAgICAgIChzY19TdHJpbmdJbnB1
dFBvcnQucHJvdG90eXBlLmdldE5leHRDaGFyKToKKyAgICAgICAgKHNjX1Rva2VuKToKKyAgICAg
ICAgKHNjX1Rva2VuaXplcik6CisgICAgICAgIChzY19Ub2tlbml6ZXIucHJvdG90eXBlLnBlZWtU
b2tlbik6CisgICAgICAgIChzY19Ub2tlbml6ZXIucHJvdG90eXBlLnJlYWRUb2tlbik6CisgICAg
ICAgIChzY19Ub2tlbml6ZXIucHJvdG90eXBlLm5leHRUb2tlbi5pc051bWJlckNoYXIpOgorICAg
ICAgICAoc2NfVG9rZW5pemVyLnByb3RvdHlwZS5uZXh0VG9rZW4pOgorICAgICAgICAoc2NfVG9r
ZW5pemVyLnByb3RvdHlwZS5uZXh0VG9rZW4uaXNXaGl0ZXNwYWNlT3JFT0YpOgorICAgICAgICAo
c2NfVG9rZW5pemVyLnByb3RvdHlwZS5uZXh0VG9rZW4ucmVhZFN0cmluZyk6CisgICAgICAgIChz
Y19Ub2tlbml6ZXIucHJvdG90eXBlLm5leHRUb2tlbi5yZWFkSWRPck51bWJlcik6CisgICAgICAg
IChzY19Ub2tlbml6ZXIucHJvdG90eXBlLm5leHRUb2tlbi5za2lwV2hpdGVzcGFjZUFuZENvbW1l
bnRzKToKKyAgICAgICAgKHNjX1Rva2VuaXplci5wcm90b3R5cGUubmV4dFRva2VuLnJlYWREb3Qp
OgorICAgICAgICAoc2NfVG9rZW5pemVyLnByb3RvdHlwZS5uZXh0VG9rZW4ucmVhZFNoYXJwKToK
KyAgICAgICAgKHNjX1JlYWRlcik6CisgICAgICAgIChzY19SZWFkZXIucHJvdG90eXBlLnJlYWQu
cmVhZExpc3QubWF0Y2hlc1BlZXIpOgorICAgICAgICAoc2NfUmVhZGVyLnByb3RvdHlwZS5yZWFk
KToKKyAgICAgICAgKHNjX1JlYWRlci5wcm90b3R5cGUucmVhZC5yZWFkUXVvdGUpOgorICAgICAg
ICAoc2NfUmVhZGVyLnByb3RvdHlwZS5yZWFkLnJlYWRWZWN0b3IpOgorICAgICAgICAoc2NfUmVh
ZGVyLnByb3RvdHlwZS5yZWFkLnN0b3JlUmVmZW5jZSk6CisgICAgICAgIChzY19SZWFkZXIucHJv
dG90eXBlLnJlYWQucmVhZFJlZmVyZW5jZSk6CisgICAgICAgIChzY19yZWFkKToKKyAgICAgICAg
KHNjX3JlYWRDaGFyKToKKyAgICAgICAgKHNjX3BlZWtDaGFyKToKKyAgICAgICAgKHNjX2lzQ2hh
clJlYWR5KToKKyAgICAgICAgKHNjX2Nsb3NlSW5wdXRQb3J0KToKKyAgICAgICAgKHNjX2lzSW5w
dXRQb3J0KToKKyAgICAgICAgKHNjX2lzRU9GT2JqZWN0KToKKyAgICAgICAgKHNjX2N1cnJlbnRJ
bnB1dFBvcnQpOgorICAgICAgICAoc2NfY2FsbFdpdGhJbnB1dEZpbGUpOgorICAgICAgICAoc2Nf
Y2FsbFdpdGhPdXRwdXRGaWxlKToKKyAgICAgICAgKHNjX3dpdGhJbnB1dEZyb21GaWxlKToKKyAg
ICAgICAgKHNjX3dpdGhPdXRwdXRUb0ZpbGUpOgorICAgICAgICAoc2Nfb3BlbklucHV0RmlsZSk6
CisgICAgICAgIChzY19vcGVuT3V0cHV0RmlsZSk6CisgICAgICAgIChzY19iYXNlbmFtZSk6Cisg
ICAgICAgIChzY19kaXJuYW1lKToKKyAgICAgICAgKHNjX3dpdGhJbnB1dEZyb21Qb3J0KToKKyAg
ICAgICAgKHNjX3dpdGhJbnB1dEZyb21TdHJpbmcpOgorICAgICAgICAoc2Nfd2l0aE91dHB1dFRv
UG9ydCk6CisgICAgICAgIChzY193aXRoT3V0cHV0VG9TdHJpbmcpOgorICAgICAgICAoLnQpOgor
ICAgICAgICAoc2Nfd2l0aE91dHB1dFRvUHJvY2VkdXJlKToKKyAgICAgICAgKHNjX29wZW5PdXRw
dXRTdHJpbmcpOgorICAgICAgICAoc2Nfb3BlbklucHV0U3RyaW5nKToKKyAgICAgICAgKHNjX091
dHB1dFBvcnQpOgorICAgICAgICAoc2NfT3V0cHV0UG9ydC5wcm90b3R5cGUuYXBwZW5kSlNTdHJp
bmcpOgorICAgICAgICAoc2NfT3V0cHV0UG9ydC5wcm90b3R5cGUuY2xvc2UpOgorICAgICAgICAo
c2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUuYXBwZW5kSlNTdHJpbmcpOgorICAgICAgICAo
c2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUuY2xvc2UpOgorICAgICAgICAoc2NfZ2V0T3V0
cHV0U3RyaW5nKToKKyAgICAgICAgKHNjX0Vycm9yT3V0cHV0UG9ydCk6CisgICAgICAgIChzY19F
cnJvck91dHB1dFBvcnQucHJvdG90eXBlLmFwcGVuZEpTU3RyaW5nKToKKyAgICAgICAgKHNjX0Vy
cm9yT3V0cHV0UG9ydC5wcm90b3R5cGUuY2xvc2UpOgorICAgICAgICAoc2NfaXNPdXRwdXRQb3J0
KToKKyAgICAgICAgKHNjX2Nsb3NlT3V0cHV0UG9ydCk6CisgICAgICAgIChzY193cml0ZSk6Cisg
ICAgICAgIChzY190b1dyaXRlU3RyaW5nKToKKyAgICAgICAgKHNjX2VzY2FwZVdyaXRlU3RyaW5n
KToKKyAgICAgICAgKHNjX2Rpc3BsYXkpOgorICAgICAgICAoc2NfdG9EaXNwbGF5U3RyaW5nKToK
KyAgICAgICAgKHNjX25ld2xpbmUpOgorICAgICAgICAoc2Nfd3JpdGVDaGFyKToKKyAgICAgICAg
KHNjX3dyaXRlQ2lyY2xlKToKKyAgICAgICAgKHNjX3RvV3JpdGVDaXJjbGVTdHJpbmcpOgorICAg
ICAgICAoc2NfcHJlcFdyaXRlQ2lyY2xlKToKKyAgICAgICAgKHNjX2dlblRvV3JpdGVDaXJjbGVT
dHJpbmcpOgorICAgICAgICAoc2NfUGFpci5wcm90b3R5cGUuc2NfdG9Xcml0ZUNpcmNsZVN0cmlu
Zyk6CisgICAgICAgIChzY19WZWN0b3IucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcp
OgorICAgICAgICAoc2NfcHJpbnQpOgorICAgICAgICAoc2NfZm9ybWF0KToKKyAgICAgICAgKHNj
X2pzc3RyaW5nMnN0cmluZyk6CisgICAgICAgIChzY19qc3N0cmluZzJzeW1ib2wpOgorICAgICAg
ICAoc2Nfc3RyaW5nMmpzc3RyaW5nKToKKyAgICAgICAgKHNjX3N5bWJvbDJqc3N0cmluZyk6Cisg
ICAgICAgIChzY19rZXl3b3JkMmpzc3RyaW5nKToKKyAgICAgICAgKHNjX2pzc3RyaW5nMmtleXdv
cmQpOgorICAgICAgICAoc2NfaXNLZXl3b3JkKToKKyAgICAgICAgKHNjX2dlbnN5bSk6CisgICAg
ICAgIChzY19pc0VxdWFsKToKKyAgICAgICAgKHNjX3N5bWJvbDJudW1iZXIpOgorICAgICAgICAo
c2Nfc3RyaW5nMmludGVnZXIpOgorICAgICAgICAoc2Nfc3RyaW5nMnJlYWwpOgorICAgICAgICAo
c2NfaXNTeW1ib2wpOgorICAgICAgICAoc2Nfc3RyaW5nMnN5bWJvbCk6CisgICAgICAgIChzY19z
eW1ib2xBcHBlbmQpOgorICAgICAgICAoc2NfY2hhcjJzdHJpbmcpOgorICAgICAgICAoc2NfY2hh
cjJzeW1ib2wpOgorICAgICAgICAoc2NfaXNTdHJpbmcpOgorICAgICAgICAoc2Nfc3RyaW5nKToK
KyAgICAgICAgKHNjX3N0cmluZ0xlbmd0aCk6CisgICAgICAgIChzY19zdHJpbmdSZWYpOgorICAg
ICAgICAoc2NfaXNTdHJpbmdFcXVhbCk6CisgICAgICAgIChzY19pc1N0cmluZ0xlc3MpOgorICAg
ICAgICAoc2NfaXNTdHJpbmdHcmVhdGVyKToKKyAgICAgICAgKHNjX2lzU3RyaW5nTGVzc0VxdWFs
KToKKyAgICAgICAgKHNjX2lzU3RyaW5nR3JlYXRlckVxdWFsKToKKyAgICAgICAgKHNjX2lzU3Ry
aW5nQ0lFcXVhbCk6CisgICAgICAgIChzY19pc1N0cmluZ0NJTGVzcyk6CisgICAgICAgIChzY19p
c1N0cmluZ0NJR3JlYXRlcik6CisgICAgICAgIChzY19pc1N0cmluZ0NJTGVzc0VxdWFsKToKKyAg
ICAgICAgKHNjX2lzU3RyaW5nQ0lHcmVhdGVyRXF1YWwpOgorICAgICAgICAoc2Nfc3Vic3RyaW5n
KToKKyAgICAgICAgKHNjX2lzU3Vic3RyaW5nX2F0KToKKyAgICAgICAgKHNjX3N0cmluZ0FwcGVu
ZCk6CisgICAgICAgIChzY19zdHJpbmdDb3B5KToKKyAgICAgICAgKHNjX2tleXdvcmQyc3RyaW5n
KToKKyAgICAgICAgKHNjX3N0cmluZzJrZXl3b3JkKToKKyAgICAgICAgKFN0cmluZy5wcm90b3R5
cGUuc2NfdG9EaXNwbGF5U3RyaW5nKToKKyAgICAgICAgKFN0cmluZy5wcm90b3R5cGUuc2NfdG9X
cml0ZVN0cmluZyk6CisgICAgICAgICguQmdMX25ib3llcnpkMmJlbmNobWFya3pkMik6CisgICAg
ICAgICguQmdMX3NldHVwemQyYm95ZXJ6ZDIpOgorICAgICAgICAoLkJnTF90ZXN0emQyYm95ZXJ6
ZDIpOgorICAgICAgICAoLnRyYW5zbGF0ZV90ZXJtX25ib3llcik6CisgICAgICAgICgudHJhbnNs
YXRlX2FyZ3NfbmJveWVyKToKKyAgICAgICAgKC51bnRyYW5zbGF0ZV90ZXJtX25ib3llcik6Cisg
ICAgICAgICguQmdMX3NjX3N5bWJvbHpkMnplM3N5bWJvbHpkMnJlY29yZF8xemUzX25ib3llcik6
CisgICAgICAgICgudHJhbnNsYXRlX2FsaXN0X25ib3llcik6CisgICAgICAgICguYXBwbHlfc3Vi
c3RfbmJveWVyKToKKyAgICAgICAgKC5hcHBseV9zdWJzdF9sc3RfbmJveWVyKToKKyAgICAgICAg
KC50YXV0b2xvZ3lwX25ib3llcik6CisgICAgICAgICgucmV3cml0ZV9uYm95ZXIpOgorICAgICAg
ICAoLnJld3JpdGVfYXJnc19uYm95ZXIpOgorICAgICAgICAoLm9uZV93YXlfdW5pZnkxX25ib3ll
cik6CisgICAgICAgICgudHJhbnNfb2ZfaW1wbGllczFfbmJveWVyKToKKyAgICAgICAgKC5pc190
ZXJtX2VxdWFsX25ib3llcik6CisgICAgICAgICguaXNfdGVybV9tZW1iZXJfbmJveWVyKToKKyAg
ICAgICAgKC5pbmQpOgorICAgICAgICAoLik6CisgICAgICAgICguZGVmX2xvb3ApOgorICAgICAg
ICAoLnJldHVybi5zY19pbmRfNDMpOgorICAgICAgICAoLnJldHVybi5tYWtlX3N0YXRlcyk6Cisg
ICAgICAgICgucmV0dXJuLkJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKToKKyAgICAg
ICAgKC5yZXR1cm4uY29uZl9zZXRfbWVyZ2VfbmV3X2JhbmcpOgorICAgICAgICAoLnJldHVybi5j
b25mX3NldF9hZGpvaW4pOgorICAgICAgICAoLnJldHVybi5CZ0xfc2NfY29uZnpkMnNldHpkMmFk
am9pbnphMl80NXphMik6CisgICAgICAgICgucmV0dXJuLkJnTF9zY19jb25memQyc2V0emQyYWRq
b2luemEyemEyXzQ2ejAwKToKKyAgICAgICAgKC5yZXR1cm4uY29uZl9zZXRfdW5pb24pOgorICAg
ICAgICAoLnJldHVybi5lbHNlLnNjX2xvb3AxXzc1KToKKyAgICAgICAgKC5yZXR1cm4uZm9ydyk6
CisgICAgICAgICgucmV0dXJuLmlzX3BhcnNlZCk6CisgICAgICAgICgucmV0dXJuLik6CisgICAg
ICAgICgucmV0dXJuLmRlcml2X3RyZWVzKToKKyAgICAgICAgKC5yZXR1cm4uQmdMX3NjX2Rlcml2
emQydHJlZXN6YTJfNDd6NzApOgorICAgICAgICAoLnJldHVybi5uYl9kZXJpdl90cmVlcyk6Cisg
ICAgICAgICgucmV0dXJuLkJnTF9zY19uYnpkMmRlcml2emQydHJlZXN6YTJfNDh6YTIpOgorICAg
ICAgICAoLnJldHVybi5sb29wMS5zY19sb29wMV8xMjcpOgorICAgICAgICAoLnJldHVybi5sb29w
MSk6CisgICAgICAgICguQmdMX21ha2V6ZDJwYXJzZXJ6ZDIpOgorICAgICAgICAoLkJnTF9wYXJz
ZXpkMnplM3BhcnNlZHpmM3pjMik6CisgICAgICAgICguQmdMX3BhcnNlemQyemUzdHJlZXN6MzEp
OgorICAgICAgICAoLkJnTF9wYXJzZXpkMnplM25iemQydHJlZXN6ZTMpOgorICAgICAgICAoLnRl
c3QpOgorICAgICAgICAoLkJnTF9lYXJsZXl6ZDJiZW5jaG1hcmt6ZDIpOgorICAgICAgICAoUnVu
QmVuY2htYXJrKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdjgtcmF5dHJhY2Utc3RyaWN0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKENsYXNzLmNyZWF0ZSk6CisgICAgICAgIChPYmplY3QuZXh0ZW5k
KToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5pbml0aWFsaXplKToK
KyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5hZGQpOgorICAgICAgICAo
RmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90eXBlLmFkZFNjYWxhcik6CisgICAgICAgIChGbG9n
LlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUuc3VidHJhY3QpOgorICAgICAgICAoRmxvZy5SYXlU
cmFjZXIuQ29sb3IucHJvdG90eXBlLm11bHRpcGx5KToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2Vy
LkNvbG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcik6CisgICAgICAgIChGbG9nLlJheVRyYWNl
ci5Db2xvci5wcm90b3R5cGUuZGl2aWRlRmFjdG9yKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2Vy
LkNvbG9yLnByb3RvdHlwZS5saW1pdCk6CisgICAgICAgIChGbG9nLlJheVRyYWNlci5Db2xvci5w
cm90b3R5cGUuZGlzdGFuY2UpOgorICAgICAgICAoRmxvZy5SYXlUcmFjZXIuQ29sb3IucHJvdG90
eXBlLmJsZW5kKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5icmln
aHRuZXNzKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgIChGbG9nLlJheVRyYWNlci5MaWdodC5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6
CisgICAgICAgIChGbG9nLlJheVRyYWNlci5MaWdodC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAoRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5pbml0aWFsaXplKToKKyAgICAg
ICAgKEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUuY29weSk6CisgICAgICAgIChGbG9n
LlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLm5vcm1hbGl6ZSk6CisgICAgICAgIChGbG9nLlJh
eVRyYWNlci5WZWN0b3IucHJvdG90eXBlLm1hZ25pdHVkZSk6CisgICAgICAgIChGbG9nLlJheVRy
YWNlci5WZWN0b3IucHJvdG90eXBlLmNyb3NzKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLlZl
Y3Rvci5wcm90b3R5cGUuZG90KToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90
b3R5cGUuYWRkKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUuc3Vi
dHJhY3QpOgorICAgICAgICAoRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5tdWx0aXBs
eVZlY3Rvcik6CisgICAgICAgIChGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLm11bHRp
cGx5U2NhbGFyKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUudG9T
dHJpbmcpOgorICAgICAgICAoRmxvZy5SYXlUcmFjZXIuUmF5LnByb3RvdHlwZS5pbml0aWFsaXpl
KToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLlJheS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAoRmxvZy5SYXlUcmFjZXIuU2NlbmUucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAg
ICAoRmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwuQmFzZU1hdGVyaWFsLnByb3RvdHlwZS5pbml0aWFs
aXplKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLkJhc2VNYXRlcmlhbC5wcm90
b3R5cGUuZ2V0Q29sb3IpOgorICAgICAgICAoRmxvZy5SYXlUcmFjZXIuTWF0ZXJpYWwuQmFzZU1h
dGVyaWFsLnByb3RvdHlwZS53cmFwVXApOgorICAgICAgICAoRmxvZy5SYXlUcmFjZXIuTWF0ZXJp
YWwuQmFzZU1hdGVyaWFsLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChGbG9nLlJheVRy
YWNlci5TaGFwZS5TcGhlcmUucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAgICAoRmxvZy5S
YXlUcmFjZXIuU2hhcGUuU3BoZXJlLnByb3RvdHlwZS5pbnRlcnNlY3QpOgorICAgICAgICAoRmxv
Zy5SYXlUcmFjZXIuU2hhcGUuU3BoZXJlLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChG
bG9nLlJheVRyYWNlci5TaGFwZS5QbGFuZS5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6CisgICAgICAg
IChGbG9nLlJheVRyYWNlci5TaGFwZS5QbGFuZS5wcm90b3R5cGUuaW50ZXJzZWN0KToKKyAgICAg
ICAgKEZsb2cuUmF5VHJhY2VyLlNoYXBlLlBsYW5lLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAg
ICAgIChGbG9nLlJheVRyYWNlci5JbnRlcnNlY3Rpb25JbmZvLnByb3RvdHlwZS5pbml0aWFsaXpl
KToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLkludGVyc2VjdGlvbkluZm8ucHJvdG90eXBlLnRv
U3RyaW5nKToKKyAgICAgICAgKEZsb2cuUmF5VHJhY2VyLkNhbWVyYS5wcm90b3R5cGUuaW5pdGlh
bGl6ZSk6CisgICAgICAgIChGbG9nLlJheVRyYWNlci5DYW1lcmEucHJvdG90eXBlLmdldFJheSk6
CisgICAgICAgIChGbG9nLlJheVRyYWNlci5DYW1lcmEucHJvdG90eXBlLnRvU3RyaW5nKToKKyAg
ICAgICAgKEZsb2cuUmF5VHJhY2VyLkJhY2tncm91bmQucHJvdG90eXBlLmluaXRpYWxpemUpOgor
ICAgICAgICAoRmxvZy5SYXlUcmFjZXIuRW5naW5lLnByb3RvdHlwZS5pbml0aWFsaXplKToKKyAg
ICAgICAgKEZsb2cuUmF5VHJhY2VyLkVuZ2luZS5wcm90b3R5cGUuc2V0UGl4ZWwpOgorICAgICAg
ICAoRmxvZy5SYXlUcmFjZXIuRW5naW5lLnByb3RvdHlwZS5yZW5kZXJTY2VuZSk6CisgICAgICAg
IChGbG9nLlJheVRyYWNlci5FbmdpbmUucHJvdG90eXBlLmdldFBpeGVsQ29sb3IpOgorICAgICAg
ICAoRmxvZy5SYXlUcmFjZXIuRW5naW5lLnByb3RvdHlwZS50ZXN0SW50ZXJzZWN0aW9uKToKKyAg
ICAgICAgKEZsb2cuUmF5VHJhY2VyLkVuZ2luZS5wcm90b3R5cGUuZ2V0UmVmbGVjdGlvblJheSk6
CisgICAgICAgIChGbG9nLlJheVRyYWNlci5FbmdpbmUucHJvdG90eXBlLnJheVRyYWNlKToKKyAg
ICAgICAgKHJlbmRlclNjZW5lKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdjgtcmVnZXhwLXN0
cmljdC5qczogQWRkZWQuCisgICAgICAgIChydW5SZWdFeHBCZW5jaG1hcmsucnVuQmxvY2swKToK
KyAgICAgICAgKHJ1blJlZ0V4cEJlbmNobWFyay5ydW5CbG9jazEpOgorICAgICAgICAocnVuUmVn
RXhwQmVuY2htYXJrKToKKyAgICAgICAgKHJ1blJlZ0V4cEJlbmNobWFyay5ydW5CbG9jazMpOgor
ICAgICAgICAocnVuUmVnRXhwQmVuY2htYXJrLnJ1bkJsb2NrNCk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL3Y4LXJpY2hhcmRzLXN0cmljdC5qczogQWRkZWQuCisgICAgICAgIChydW5SaWNoYXJk
cyk6CisgICAgICAgIChTY2hlZHVsZXIpOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5h
ZGRJZGxlVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFdvcmtlclRhc2sp
OgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5kbGVyVGFzayk6CisgICAgICAg
IChTY2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2spOgorICAgICAgICAoU2NoZWR1bGVy
LnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBl
LmFkZFRhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSk6CisgICAg
ICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnJlbGVhc2UpOgorICAgICAgICAoU2NoZWR1bGVyLnBy
b3RvdHlwZS5ob2xkQ3VycmVudCk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnN1c3Bl
bmRDdXJyZW50KToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucXVldWUpOgorICAgICAg
ICAoVGFza0NvbnRyb2xCbG9jayk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5zZXRSdW5uaW5nKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtB
c05vdEhlbGQpOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVs
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3BlbmRl
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNTdXNwZW5kZWQp
OgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzUnVubmFibGUpOgor
ICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFRhc2tD
b250cm9sQmxvY2sucHJvdG90eXBlLmNoZWNrUHJpb3JpdHlBZGQpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoSWRsZVRhc2spOgorICAg
ICAgICAoSWRsZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5
cGUudG9TdHJpbmcpOgorICAgICAgICAoRGV2aWNlVGFzayk6CisgICAgICAgIChEZXZpY2VUYXNr
LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoRGV2aWNlVGFzay5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICAoV29ya2VyVGFzayk6CisgICAgICAgIChXb3JrZXJUYXNrLnByb3RvdHlwZS5y
dW4pOgorICAgICAgICAoV29ya2VyVGFzay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAo
SGFuZGxlclRhc2spOgorICAgICAgICAoSGFuZGxlclRhc2sucHJvdG90eXBlLnJ1bik6CisgICAg
ICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoUGFja2V0KToK
KyAgICAgICAgKFBhY2tldC5wcm90b3R5cGUuYWRkVG8pOgorICAgICAgICAoUGFja2V0LnByb3Rv
dHlwZS50b1N0cmluZyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Y4LXNwbGF5LXN0cmljdC5q
czogQWRkZWQuCisgICAgICAgIChHZW5lcmF0ZVBheWxvYWRUcmVlKToKKyAgICAgICAgKEdlbmVy
YXRlS2V5KToKKyAgICAgICAgKEluc2VydE5ld05vZGUpOgorICAgICAgICAoU3BsYXlTZXR1cCk6
CisgICAgICAgIChTcGxheVRlYXJEb3duKToKKyAgICAgICAgKFNwbGF5UnVuKToKKyAgICAgICAg
KFNwbGF5VHJlZSk6CisgICAgICAgIChTcGxheVRyZWUucHJvdG90eXBlLmlzRW1wdHkpOgorICAg
ICAgICAoU3BsYXlUcmVlLnByb3RvdHlwZS5pbnNlcnQpOgorICAgICAgICAoU3BsYXlUcmVlLnBy
b3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAoU3BsYXlUcmVlLnByb3RvdHlwZS5maW5kKToKKyAg
ICAgICAgKFNwbGF5VHJlZS5wcm90b3R5cGUuZmluZE1heCk6CisgICAgICAgIChTcGxheVRyZWUu
cHJvdG90eXBlLmZpbmRHcmVhdGVzdExlc3NUaGFuKToKKyAgICAgICAgKFNwbGF5VHJlZS5wcm90
b3R5cGUuZXhwb3J0S2V5cyk6CisgICAgICAgIChTcGxheVRyZWUucHJvdG90eXBlLnNwbGF5Xyk6
CisgICAgICAgIChTcGxheVRyZWUuTm9kZSk6CisgICAgICAgIChTcGxheVRyZWUuTm9kZS5wcm90
b3R5cGUudHJhdmVyc2VfKToKKworMjAxNS0wOC0xMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVf
Y2xlbWVudEBhcHBsZS5jb20+CisKICAgICAgICAganNjLXRhaWxjYWxsOiBSRUdSRVNTSU9OOiBE
RkdCeXRlQ29kZVBhcnNlciBmYWlscyB3aGVuIGEgdGFpbCBjYWxsIGlzIGluc2lkZSBhIHRlcm5h
cnkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzg0
OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Y4LWNy
eXB0by1zdHJpY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Y4LWNy
eXB0by1zdHJpY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMzZDc3MzZiNDM3OTYwYWZmYmRlOTA1OTI3N2Y2
N2M1ZmNjYmY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvdjgtY3J5cHRvLXN0cmljdC5qcwpAQCAtMCwwICsxLDE2OTcgQEAKKyJ1c2Ugc3Ry
aWN0IjsKKworLyoKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA1ICBUb20gV3UKKyAqIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0
d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k
aWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBz
ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAqIGluY2x1ZGVkIGluIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMtSVMiIEFORCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELAorICogRVhQUkVTUywgSU1QTElFRCBPUiBPVEhFUldJU0UsIElOQ0xVRElORyBX
SVRIT1VUIExJTUlUQVRJT04sIEFOWQorICogV0FSUkFOVFkgT0YgTUVSQ0hBTlRBQklMSVRZIE9S
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICoKKyAqIElOIE5PIEVWRU5UIFNI
QUxMIFRPTSBXVSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkNJREVOVEFMLAorICogSU5E
SVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9GIEFOWSBLSU5ELCBPUiBBTlkgREFNQUdF
UyBXSEFUU09FVkVSCisgKiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9G
SVRTLCBXSEVUSEVSIE9SIE5PVCBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgREFN
QUdFLCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIEFSSVNJTkcgT1VUCisgKiBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRX
QVJFLgorICoKKyAqIEluIGFkZGl0aW9uLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbiBhcHBsaWVz
OgorICoKKyAqIEFsbCByZWRpc3RyaWJ1dGlvbnMgbXVzdCByZXRhaW4gYW4gaW50YWN0IGNvcHkg
b2YgdGhpcyBjb3B5cmlnaHQgbm90aWNlCisgKiBhbmQgZGlzY2xhaW1lci4KKyAqLworCisvLyBC
YXNpYyBKYXZhU2NyaXB0IEJOIGxpYnJhcnkgLSBzdWJzZXQgdXNlZnVsIGZvciBSU0EgZW5jcnlw
dGlvbi4KKworLy8gQml0cyBwZXIgZGlnaXQKK3ZhciBkYml0czsKK3ZhciBCSV9EQjsKK3ZhciBC
SV9ETTsKK3ZhciBCSV9EVjsKKwordmFyIEJJX0ZQOwordmFyIEJJX0ZWOwordmFyIEJJX0YxOwor
dmFyIEJJX0YyOworCisvLyBKYXZhU2NyaXB0IGVuZ2luZSBhbmFseXNpcwordmFyIGNhbmFyeSA9
IDB4ZGVhZGJlZWZjYWZlOwordmFyIGpfbG0gPSAoKGNhbmFyeSYweGZmZmZmZik9PTB4ZWZjYWZl
KTsKKworLy8gKHB1YmxpYykgQ29uc3RydWN0b3IKK2Z1bmN0aW9uIEJpZ0ludGVnZXIoYSxiLGMp
IHsKKyAgdGhpcy5hcnJheSA9IG5ldyBBcnJheSgpOworICBpZihhICE9IG51bGwpCisgICAgaWYo
Im51bWJlciIgPT0gdHlwZW9mIGEpIHRoaXMuZnJvbU51bWJlcihhLGIsYyk7CisgICAgZWxzZSBp
ZihiID09IG51bGwgJiYgInN0cmluZyIgIT0gdHlwZW9mIGEpIHRoaXMuZnJvbVN0cmluZyhhLDI1
Nik7CisgICAgZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKTsKK30KKworLy8gcmV0dXJuIG5ldywg
dW5zZXQgQmlnSW50ZWdlcgorZnVuY3Rpb24gbmJpKCkgeyByZXR1cm4gbmV3IEJpZ0ludGVnZXIo
bnVsbCk7IH0KKworLy8gYW06IENvbXB1dGUgd19qICs9ICh4KnRoaXNfaSksIHByb3BhZ2F0ZSBj
YXJyaWVzLAorLy8gYyBpcyBpbml0aWFsIGNhcnJ5LCByZXR1cm5zIGZpbmFsIGNhcnJ5LgorLy8g
YyA8IDMqZHZhbHVlLCB4IDwgMipkdmFsdWUsIHRoaXNfaSA8IGR2YWx1ZQorLy8gV2UgbmVlZCB0
byBzZWxlY3QgdGhlIGZhc3Rlc3Qgb25lIHRoYXQgd29ya3MgaW4gdGhpcyBlbnZpcm9ubWVudC4K
KworLy8gYW0xOiB1c2UgYSBzaW5nbGUgbXVsdCBhbmQgZGl2aWRlIHRvIGdldCB0aGUgaGlnaCBi
aXRzLAorLy8gbWF4IGRpZ2l0IGJpdHMgc2hvdWxkIGJlIDI2IGJlY2F1c2UKKy8vIG1heCBpbnRl
cm5hbCB2YWx1ZSA9IDIqZHZhbHVlXjItMipkdmFsdWUgKDwgMl41MykKK2Z1bmN0aW9uIGFtMShp
LHgsdyxqLGMsbikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciB3X2Fy
cmF5ICAgID0gdy5hcnJheTsKKyAgd2hpbGUoLS1uID49IDApIHsKKyAgICB2YXIgdiA9IHgqdGhp
c19hcnJheVtpKytdK3dfYXJyYXlbal0rYzsKKyAgICBjID0gTWF0aC5mbG9vcih2LzB4NDAwMDAw
MCk7CisgICAgd19hcnJheVtqKytdID0gdiYweDNmZmZmZmY7CisgIH0KKyAgcmV0dXJuIGM7Cit9
CisKKy8vIGFtMiBhdm9pZHMgYSBiaWcgbXVsdC1hbmQtZXh0cmFjdCBjb21wbGV0ZWx5LgorLy8g
TWF4IGRpZ2l0IGJpdHMgc2hvdWxkIGJlIDw9IDMwIGJlY2F1c2Ugd2UgZG8gYml0d2lzZSBvcHMK
Ky8vIG9uIHZhbHVlcyB1cCB0byAyKmhkdmFsdWVeMi1oZHZhbHVlLTEgKDwgMl4zMSkKK2Z1bmN0
aW9uIGFtMihpLHgsdyxqLGMsbikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7Cisg
IHZhciB3X2FycmF5ICAgID0gdy5hcnJheTsKKyAgdmFyIHhsID0geCYweDdmZmYsIHhoID0geD4+
MTU7CisgIHdoaWxlKC0tbiA+PSAwKSB7CisgICAgdmFyIGwgPSB0aGlzX2FycmF5W2ldJjB4N2Zm
ZjsKKyAgICB2YXIgaCA9IHRoaXNfYXJyYXlbaSsrXT4+MTU7CisgICAgdmFyIG0gPSB4aCpsK2gq
eGw7CisgICAgbCA9IHhsKmwrKChtJjB4N2ZmZik8PDE1KSt3X2FycmF5W2pdKyhjJjB4M2ZmZmZm
ZmYpOworICAgIGMgPSAobD4+PjMwKSsobT4+PjE1KSt4aCpoKyhjPj4+MzApOworICAgIHdfYXJy
YXlbaisrXSA9IGwmMHgzZmZmZmZmZjsKKyAgfQorICByZXR1cm4gYzsKK30KKworLy8gQWx0ZXJu
YXRlbHksIHNldCBtYXggZGlnaXQgYml0cyB0byAyOCBzaW5jZSBzb21lCisvLyBicm93c2VycyBz
bG93IGRvd24gd2hlbiBkZWFsaW5nIHdpdGggMzItYml0IG51bWJlcnMuCitmdW5jdGlvbiBhbTMo
aSx4LHcsaixjLG4pIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgd19h
cnJheSAgICA9IHcuYXJyYXk7CisKKyAgdmFyIHhsID0geCYweDNmZmYsIHhoID0geD4+MTQ7Cisg
IHdoaWxlKC0tbiA+PSAwKSB7CisgICAgdmFyIGwgPSB0aGlzX2FycmF5W2ldJjB4M2ZmZjsKKyAg
ICB2YXIgaCA9IHRoaXNfYXJyYXlbaSsrXT4+MTQ7CisgICAgdmFyIG0gPSB4aCpsK2gqeGw7Cisg
ICAgbCA9IHhsKmwrKChtJjB4M2ZmZik8PDE0KSt3X2FycmF5W2pdK2M7CisgICAgYyA9IChsPj4y
OCkrKG0+PjE0KSt4aCpoOworICAgIHdfYXJyYXlbaisrXSA9IGwmMHhmZmZmZmZmOworICB9Cisg
IHJldHVybiBjOworfQorCisvLyBUaGlzIGlzIHRhaWxvcmVkIHRvIFZNcyB3aXRoIDItYml0IHRh
Z2dpbmcuIEl0IG1ha2VzIHN1cmUKKy8vIHRoYXQgYWxsIHRoZSBjb21wdXRhdGlvbnMgc3RheSB3
aXRoaW4gdGhlIDI5IGJpdHMgYXZhaWxhYmxlLgorZnVuY3Rpb24gYW00KGkseCx3LGosYyxuKSB7
CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHdfYXJyYXkgICAgPSB3LmFy
cmF5OworCisgIHZhciB4bCA9IHgmMHgxZmZmLCB4aCA9IHg+PjEzOworICB3aGlsZSgtLW4gPj0g
MCkgeworICAgIHZhciBsID0gdGhpc19hcnJheVtpXSYweDFmZmY7CisgICAgdmFyIGggPSB0aGlz
X2FycmF5W2krK10+PjEzOworICAgIHZhciBtID0geGgqbCtoKnhsOworICAgIGwgPSB4bCpsKygo
bSYweDFmZmYpPDwxMykrd19hcnJheVtqXStjOworICAgIGMgPSAobD4+MjYpKyhtPj4xMykreGgq
aDsKKyAgICB3X2FycmF5W2orK10gPSBsJjB4M2ZmZmZmZjsKKyAgfQorICByZXR1cm4gYzsKK30K
KworLy8gYW0zLzI4IGlzIGJlc3QgZm9yIFNNLCBSaGlubywgYnV0IGFtNC8yNiBpcyBiZXN0IGZv
ciB2OC4KKy8vIEtlc3RyZWwgKE9wZXJhIDkuNSkgZ2V0cyBpdHMgYmVzdCByZXN1bHQgd2l0aCBh
bTQvMjYuCisvLyBJRTcgZG9lcyA5JSBiZXR0ZXIgd2l0aCBhbTMvMjggdGhhbiB3aXRoIGFtNC8y
Ni4KKy8vIEZpcmVmb3ggKFNNKSBnZXRzIDEwJSBmYXN0ZXIgd2l0aCBhbTMvMjggdGhhbiB3aXRo
IGFtNC8yNi4KKwordmFyIHNldHVwRW5naW5lID0gZnVuY3Rpb24oZm4sIGJpdHMpIHsKKyAgQmln
SW50ZWdlci5wcm90b3R5cGUuYW0gPSBmbjsKKyAgZGJpdHMgPSBiaXRzOworCisgIEJJX0RCID0g
ZGJpdHM7CisgIEJJX0RNID0gKCgxPDxkYml0cyktMSk7CisgIEJJX0RWID0gKDE8PGRiaXRzKTsK
KworICBCSV9GUCA9IDUyOworICBCSV9GViA9IE1hdGgucG93KDIsQklfRlApOworICBCSV9GMSA9
IEJJX0ZQLWRiaXRzOworICBCSV9GMiA9IDIqZGJpdHMtQklfRlA7Cit9CisKKworLy8gRGlnaXQg
Y29udmVyc2lvbnMKK3ZhciBCSV9STSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXoiOwordmFyIEJJX1JDID0gbmV3IEFycmF5KCk7Cit2YXIgcnIsdnY7CityciA9ICIwIi5j
aGFyQ29kZUF0KDApOworZm9yKHZ2ID0gMDsgdnYgPD0gOTsgKyt2dikgQklfUkNbcnIrK10gPSB2
djsKK3JyID0gImEiLmNoYXJDb2RlQXQoMCk7Citmb3IodnYgPSAxMDsgdnYgPCAzNjsgKyt2dikg
QklfUkNbcnIrK10gPSB2djsKK3JyID0gIkEiLmNoYXJDb2RlQXQoMCk7Citmb3IodnYgPSAxMDsg
dnYgPCAzNjsgKyt2dikgQklfUkNbcnIrK10gPSB2djsKKworZnVuY3Rpb24gaW50MmNoYXIobikg
eyByZXR1cm4gQklfUk0uY2hhckF0KG4pOyB9CitmdW5jdGlvbiBpbnRBdChzLGkpIHsKKyAgdmFy
IGMgPSBCSV9SQ1tzLmNoYXJDb2RlQXQoaSldOworICByZXR1cm4gKGM9PW51bGwpPy0xOmM7Cit9
CisKKy8vIChwcm90ZWN0ZWQpIGNvcHkgdGhpcyB0byByCitmdW5jdGlvbiBibnBDb3B5VG8ocikg
eworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciByX2FycmF5ICAgID0gci5h
cnJheTsKKworICBmb3IodmFyIGkgPSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHJfYXJyYXlbaV0g
PSB0aGlzX2FycmF5W2ldOworICByLnQgPSB0aGlzLnQ7CisgIHIucyA9IHRoaXMuczsKK30KKwor
Ly8gKHByb3RlY3RlZCkgc2V0IGZyb20gaW50ZWdlciB2YWx1ZSB4LCAtRFYgPD0geCA8IERWCitm
dW5jdGlvbiBibnBGcm9tSW50KHgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5Owor
ICB0aGlzLnQgPSAxOworICB0aGlzLnMgPSAoeDwwKT8tMTowOworICBpZih4ID4gMCkgdGhpc19h
cnJheVswXSA9IHg7CisgIGVsc2UgaWYoeCA8IC0xKSB0aGlzX2FycmF5WzBdID0geCtEVjsKKyAg
ZWxzZSB0aGlzLnQgPSAwOworfQorCisvLyByZXR1cm4gYmlnaW50IGluaXRpYWxpemVkIHRvIHZh
bHVlCitmdW5jdGlvbiBuYnYoaSkgeyB2YXIgciA9IG5iaSgpOyByLmZyb21JbnQoaSk7IHJldHVy
biByOyB9CisKKy8vIChwcm90ZWN0ZWQpIHNldCBmcm9tIHN0cmluZyBhbmQgcmFkaXgKK2Z1bmN0
aW9uIGJucEZyb21TdHJpbmcocyxiKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsK
KyAgdmFyIGs7CisgIGlmKGIgPT0gMTYpIGsgPSA0OworICBlbHNlIGlmKGIgPT0gOCkgayA9IDM7
CisgIGVsc2UgaWYoYiA9PSAyNTYpIGsgPSA4OyAvLyBieXRlIGFycmF5CisgIGVsc2UgaWYoYiA9
PSAyKSBrID0gMTsKKyAgZWxzZSBpZihiID09IDMyKSBrID0gNTsKKyAgZWxzZSBpZihiID09IDQp
IGsgPSAyOworICBlbHNlIHsgdGhpcy5mcm9tUmFkaXgocyxiKTsgcmV0dXJuOyB9CisgIHRoaXMu
dCA9IDA7CisgIHRoaXMucyA9IDA7CisgIHZhciBpID0gcy5sZW5ndGgsIG1pID0gZmFsc2UsIHNo
ID0gMDsKKyAgd2hpbGUoLS1pID49IDApIHsKKyAgICB2YXIgeCA9IChrPT04KT9zW2ldJjB4ZmY6
aW50QXQocyxpKTsKKyAgICBpZih4IDwgMCkgeworICAgICAgaWYocy5jaGFyQXQoaSkgPT0gIi0i
KSBtaSA9IHRydWU7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgbWkgPSBmYWxzZTsKKyAg
ICBpZihzaCA9PSAwKQorICAgICAgdGhpc19hcnJheVt0aGlzLnQrK10gPSB4OworICAgIGVsc2Ug
aWYoc2grayA+IEJJX0RCKSB7CisgICAgICB0aGlzX2FycmF5W3RoaXMudC0xXSB8PSAoeCYoKDE8
PChCSV9EQi1zaCkpLTEpKTw8c2g7CisgICAgICB0aGlzX2FycmF5W3RoaXMudCsrXSA9ICh4Pj4o
QklfREItc2gpKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgdGhpc19hcnJheVt0aGlzLnQtMV0g
fD0geDw8c2g7CisgICAgc2ggKz0gazsKKyAgICBpZihzaCA+PSBCSV9EQikgc2ggLT0gQklfREI7
CisgIH0KKyAgaWYoayA9PSA4ICYmIChzWzBdJjB4ODApICE9IDApIHsKKyAgICB0aGlzLnMgPSAt
MTsKKyAgICBpZihzaCA+IDApIHRoaXNfYXJyYXlbdGhpcy50LTFdIHw9ICgoMTw8KEJJX0RCLXNo
KSktMSk8PHNoOworICB9CisgIHRoaXMuY2xhbXAoKTsKKyAgaWYobWkpIEJpZ0ludGVnZXIuWkVS
Ty5zdWJUbyh0aGlzLHRoaXMpOworfQorCisvLyAocHJvdGVjdGVkKSBjbGFtcCBvZmYgZXhjZXNz
IGhpZ2ggd29yZHMKK2Z1bmN0aW9uIGJucENsYW1wKCkgeworICB2YXIgdGhpc19hcnJheSA9IHRo
aXMuYXJyYXk7CisgIHZhciBjID0gdGhpcy5zJkJJX0RNOworICB3aGlsZSh0aGlzLnQgPiAwICYm
IHRoaXNfYXJyYXlbdGhpcy50LTFdID09IGMpIC0tdGhpcy50OworfQorCisvLyAocHVibGljKSBy
ZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIGdpdmVuIHJhZGl4CitmdW5jdGlvbiBiblRv
U3RyaW5nKGIpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICBpZih0aGlzLnMg
PCAwKSByZXR1cm4gIi0iK3RoaXMubmVnYXRlKCkudG9TdHJpbmcoYik7CisgIHZhciBrOworICBp
ZihiID09IDE2KSBrID0gNDsKKyAgZWxzZSBpZihiID09IDgpIGsgPSAzOworICBlbHNlIGlmKGIg
PT0gMikgayA9IDE7CisgIGVsc2UgaWYoYiA9PSAzMikgayA9IDU7CisgIGVsc2UgaWYoYiA9PSA0
KSBrID0gMjsKKyAgZWxzZSByZXR1cm4gdGhpcy50b1JhZGl4KGIpOworICB2YXIga20gPSAoMTw8
ayktMSwgZCwgbSA9IGZhbHNlLCByID0gIiIsIGkgPSB0aGlzLnQ7CisgIHZhciBwID0gQklfREIt
KGkqQklfREIpJWs7CisgIGlmKGktLSA+IDApIHsKKyAgICBpZihwIDwgQklfREIgJiYgKGQgPSB0
aGlzX2FycmF5W2ldPj5wKSA+IDApIHsgbSA9IHRydWU7IHIgPSBpbnQyY2hhcihkKTsgfQorICAg
IHdoaWxlKGkgPj0gMCkgeworICAgICAgaWYocCA8IGspIHsKKyAgICAgICAgZCA9ICh0aGlzX2Fy
cmF5W2ldJigoMTw8cCktMSkpPDwoay1wKTsKKyAgICAgICAgZCB8PSB0aGlzX2FycmF5Wy0taV0+
PihwKz1CSV9EQi1rKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBkID0gKHRoaXNf
YXJyYXlbaV0+PihwLT1rKSkma207CisgICAgICAgIGlmKHAgPD0gMCkgeyBwICs9IEJJX0RCOyAt
LWk7IH0KKyAgICAgIH0KKyAgICAgIGlmKGQgPiAwKSBtID0gdHJ1ZTsKKyAgICAgIGlmKG0pIHIg
Kz0gaW50MmNoYXIoZCk7CisgICAgfQorICB9CisgIHJldHVybiBtP3I6IjAiOworfQorCisvLyAo
cHVibGljKSAtdGhpcworZnVuY3Rpb24gYm5OZWdhdGUoKSB7IHZhciByID0gbmJpKCk7IEJpZ0lu
dGVnZXIuWkVSTy5zdWJUbyh0aGlzLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB8dGhp
c3wKK2Z1bmN0aW9uIGJuQWJzKCkgeyByZXR1cm4gKHRoaXMuczwwKT90aGlzLm5lZ2F0ZSgpOnRo
aXM7IH0KKworLy8gKHB1YmxpYykgcmV0dXJuICsgaWYgdGhpcyA+IGEsIC0gaWYgdGhpcyA8IGEs
IDAgaWYgZXF1YWwKK2Z1bmN0aW9uIGJuQ29tcGFyZVRvKGEpIHsKKyAgdmFyIHRoaXNfYXJyYXkg
PSB0aGlzLmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisKKyAgdmFyIHIgPSB0aGlz
LnMtYS5zOworICBpZihyICE9IDApIHJldHVybiByOworICB2YXIgaSA9IHRoaXMudDsKKyAgciA9
IGktYS50OworICBpZihyICE9IDApIHJldHVybiByOworICB3aGlsZSgtLWkgPj0gMCkgaWYoKHI9
dGhpc19hcnJheVtpXS1hX2FycmF5W2ldKSAhPSAwKSByZXR1cm4gcjsKKyAgcmV0dXJuIDA7Cit9
CisKKy8vIHJldHVybnMgYml0IGxlbmd0aCBvZiB0aGUgaW50ZWdlciB4CitmdW5jdGlvbiBuYml0
cyh4KSB7CisgIHZhciByID0gMSwgdDsKKyAgaWYoKHQ9eD4+PjE2KSAhPSAwKSB7IHggPSB0OyBy
ICs9IDE2OyB9CisgIGlmKCh0PXg+PjgpICE9IDApIHsgeCA9IHQ7IHIgKz0gODsgfQorICBpZigo
dD14Pj40KSAhPSAwKSB7IHggPSB0OyByICs9IDQ7IH0KKyAgaWYoKHQ9eD4+MikgIT0gMCkgeyB4
ID0gdDsgciArPSAyOyB9CisgIGlmKCh0PXg+PjEpICE9IDApIHsgeCA9IHQ7IHIgKz0gMTsgfQor
ICByZXR1cm4gcjsKK30KKworLy8gKHB1YmxpYykgcmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBp
biAidGhpcyIKK2Z1bmN0aW9uIGJuQml0TGVuZ3RoKCkgeworICB2YXIgdGhpc19hcnJheSA9IHRo
aXMuYXJyYXk7CisgIGlmKHRoaXMudCA8PSAwKSByZXR1cm4gMDsKKyAgcmV0dXJuIEJJX0RCKih0
aGlzLnQtMSkrbmJpdHModGhpc19hcnJheVt0aGlzLnQtMV1eKHRoaXMucyZCSV9ETSkpOworfQor
CisvLyAocHJvdGVjdGVkKSByID0gdGhpcyA8PCBuKkRCCitmdW5jdGlvbiBibnBETFNoaWZ0VG8o
bixyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHJfYXJyYXkgPSBy
LmFycmF5OworICB2YXIgaTsKKyAgZm9yKGkgPSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHJfYXJy
YXlbaStuXSA9IHRoaXNfYXJyYXlbaV07CisgIGZvcihpID0gbi0xOyBpID49IDA7IC0taSkgcl9h
cnJheVtpXSA9IDA7CisgIHIudCA9IHRoaXMudCtuOworICByLnMgPSB0aGlzLnM7Cit9CisKKy8v
IChwcm90ZWN0ZWQpIHIgPSB0aGlzID4+IG4qREIKK2Z1bmN0aW9uIGJucERSU2hpZnRUbyhuLHIp
IHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgcl9hcnJheSA9IHIuYXJy
YXk7CisgIGZvcih2YXIgaSA9IG47IGkgPCB0aGlzLnQ7ICsraSkgcl9hcnJheVtpLW5dID0gdGhp
c19hcnJheVtpXTsKKyAgci50ID0gTWF0aC5tYXgodGhpcy50LW4sMCk7CisgIHIucyA9IHRoaXMu
czsKK30KKworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgPDwgbgorZnVuY3Rpb24gYm5wTFNoaWZ0
VG8obixyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHJfYXJyYXkg
PSByLmFycmF5OworICB2YXIgYnMgPSBuJUJJX0RCOworICB2YXIgY2JzID0gQklfREItYnM7Cisg
IHZhciBibSA9ICgxPDxjYnMpLTE7CisgIHZhciBkcyA9IE1hdGguZmxvb3Iobi9CSV9EQiksIGMg
PSAodGhpcy5zPDxicykmQklfRE0sIGk7CisgIGZvcihpID0gdGhpcy50LTE7IGkgPj0gMDsgLS1p
KSB7CisgICAgcl9hcnJheVtpK2RzKzFdID0gKHRoaXNfYXJyYXlbaV0+PmNicyl8YzsKKyAgICBj
ID0gKHRoaXNfYXJyYXlbaV0mYm0pPDxiczsKKyAgfQorICBmb3IoaSA9IGRzLTE7IGkgPj0gMDsg
LS1pKSByX2FycmF5W2ldID0gMDsKKyAgcl9hcnJheVtkc10gPSBjOworICByLnQgPSB0aGlzLnQr
ZHMrMTsKKyAgci5zID0gdGhpcy5zOworICByLmNsYW1wKCk7Cit9CisKKy8vIChwcm90ZWN0ZWQp
IHIgPSB0aGlzID4+IG4KK2Z1bmN0aW9uIGJucFJTaGlmdFRvKG4scikgeworICB2YXIgdGhpc19h
cnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgci5zID0gdGhp
cy5zOworICB2YXIgZHMgPSBNYXRoLmZsb29yKG4vQklfREIpOworICBpZihkcyA+PSB0aGlzLnQp
IHsgci50ID0gMDsgcmV0dXJuOyB9CisgIHZhciBicyA9IG4lQklfREI7CisgIHZhciBjYnMgPSBC
SV9EQi1iczsKKyAgdmFyIGJtID0gKDE8PGJzKS0xOworICByX2FycmF5WzBdID0gdGhpc19hcnJh
eVtkc10+PmJzOworICBmb3IodmFyIGkgPSBkcysxOyBpIDwgdGhpcy50OyArK2kpIHsKKyAgICBy
X2FycmF5W2ktZHMtMV0gfD0gKHRoaXNfYXJyYXlbaV0mYm0pPDxjYnM7CisgICAgcl9hcnJheVtp
LWRzXSA9IHRoaXNfYXJyYXlbaV0+PmJzOworICB9CisgIGlmKGJzID4gMCkgcl9hcnJheVt0aGlz
LnQtZHMtMV0gfD0gKHRoaXMucyZibSk8PGNiczsKKyAgci50ID0gdGhpcy50LWRzOworICByLmNs
YW1wKCk7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIC0gYQorZnVuY3Rpb24gYm5wU3Vi
VG8oYSxyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgdmFyIHJfYXJyYXkg
PSByLmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIHZhciBpID0gMCwgYyA9IDAs
IG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKKyAgd2hpbGUoaSA8IG0pIHsKKyAgICBjICs9IHRo
aXNfYXJyYXlbaV0tYV9hcnJheVtpXTsKKyAgICByX2FycmF5W2krK10gPSBjJkJJX0RNOworICAg
IGMgPj49IEJJX0RCOworICB9CisgIGlmKGEudCA8IHRoaXMudCkgeworICAgIGMgLT0gYS5zOwor
ICAgIHdoaWxlKGkgPCB0aGlzLnQpIHsKKyAgICAgIGMgKz0gdGhpc19hcnJheVtpXTsKKyAgICAg
IHJfYXJyYXlbaSsrXSA9IGMmQklfRE07CisgICAgICBjID4+PSBCSV9EQjsKKyAgICB9CisgICAg
YyArPSB0aGlzLnM7CisgIH0KKyAgZWxzZSB7CisgICAgYyArPSB0aGlzLnM7CisgICAgd2hpbGUo
aSA8IGEudCkgeworICAgICAgYyAtPSBhX2FycmF5W2ldOworICAgICAgcl9hcnJheVtpKytdID0g
YyZCSV9ETTsKKyAgICAgIGMgPj49IEJJX0RCOworICAgIH0KKyAgICBjIC09IGEuczsKKyAgfQor
ICByLnMgPSAoYzwwKT8tMTowOworICBpZihjIDwgLTEpIHJfYXJyYXlbaSsrXSA9IEJJX0RWK2M7
CisgIGVsc2UgaWYoYyA+IDApIHJfYXJyYXlbaSsrXSA9IGM7CisgIHIudCA9IGk7CisgIHIuY2xh
bXAoKTsKK30KKworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgKiBhLCByICE9IHRoaXMsYSAoSEFD
IDE0LjEyKQorLy8gInRoaXMiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0
ZS4KK2Z1bmN0aW9uIGJucE11bHRpcGx5VG8oYSxyKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhp
cy5hcnJheTsKKyAgdmFyIHJfYXJyYXkgPSByLmFycmF5OworICB2YXIgeCA9IHRoaXMuYWJzKCks
IHkgPSBhLmFicygpOworICB2YXIgeV9hcnJheSA9IHkuYXJyYXk7CisKKyAgdmFyIGkgPSB4LnQ7
CisgIHIudCA9IGkreS50OworICB3aGlsZSgtLWkgPj0gMCkgcl9hcnJheVtpXSA9IDA7CisgIGZv
cihpID0gMDsgaSA8IHkudDsgKytpKSByX2FycmF5W2kreC50XSA9IHguYW0oMCx5X2FycmF5W2ld
LHIsaSwwLHgudCk7CisgIHIucyA9IDA7CisgIHIuY2xhbXAoKTsKKyAgaWYodGhpcy5zICE9IGEu
cykgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHIscik7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHIgPSB0
aGlzXjIsIHIgIT0gdGhpcyAoSEFDIDE0LjE2KQorZnVuY3Rpb24gYm5wU3F1YXJlVG8ocikgewor
ICB2YXIgeCA9IHRoaXMuYWJzKCk7CisgIHZhciB4X2FycmF5ID0geC5hcnJheTsKKyAgdmFyIHJf
YXJyYXkgPSByLmFycmF5OworCisgIHZhciBpID0gci50ID0gMip4LnQ7CisgIHdoaWxlKC0taSA+
PSAwKSByX2FycmF5W2ldID0gMDsKKyAgZm9yKGkgPSAwOyBpIDwgeC50LTE7ICsraSkgeworICAg
IHZhciBjID0geC5hbShpLHhfYXJyYXlbaV0sciwyKmksMCwxKTsKKyAgICBpZigocl9hcnJheVtp
K3gudF0rPXguYW0oaSsxLDIqeF9hcnJheVtpXSxyLDIqaSsxLGMseC50LWktMSkpID49IEJJX0RW
KSB7CisgICAgICByX2FycmF5W2kreC50XSAtPSBCSV9EVjsKKyAgICAgIHJfYXJyYXlbaSt4LnQr
MV0gPSAxOworICAgIH0KKyAgfQorICBpZihyLnQgPiAwKSByX2FycmF5W3IudC0xXSArPSB4LmFt
KGkseF9hcnJheVtpXSxyLDIqaSwwLDEpOworICByLnMgPSAwOworICByLmNsYW1wKCk7Cit9CisK
Ky8vIChwcm90ZWN0ZWQpIGRpdmlkZSB0aGlzIGJ5IG0sIHF1b3RpZW50IGFuZCByZW1haW5kZXIg
dG8gcSwgciAoSEFDIDE0LjIwKQorLy8gciAhPSBxLCB0aGlzICE9IG0uICBxIG9yIHIgbWF5IGJl
IG51bGwuCitmdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscikgeworICB2YXIgcG0gPSBtLmFicygp
OworICBpZihwbS50IDw9IDApIHJldHVybjsKKyAgdmFyIHB0ID0gdGhpcy5hYnMoKTsKKyAgaWYo
cHQudCA8IHBtLnQpIHsKKyAgICBpZihxICE9IG51bGwpIHEuZnJvbUludCgwKTsKKyAgICBpZihy
ICE9IG51bGwpIHRoaXMuY29weVRvKHIpOworICAgIHJldHVybjsKKyAgfQorICBpZihyID09IG51
bGwpIHIgPSBuYmkoKTsKKyAgdmFyIHkgPSBuYmkoKSwgdHMgPSB0aGlzLnMsIG1zID0gbS5zOwor
ICB2YXIgcG1fYXJyYXkgPSBwbS5hcnJheTsKKyAgdmFyIG5zaCA9IEJJX0RCLW5iaXRzKHBtX2Fy
cmF5W3BtLnQtMV0pOyAgICAgIC8vIG5vcm1hbGl6ZSBtb2R1bHVzCisgIGlmKG5zaCA+IDApIHsg
cG0ubFNoaWZ0VG8obnNoLHkpOyBwdC5sU2hpZnRUbyhuc2gscik7IH0KKyAgZWxzZSB7IHBtLmNv
cHlUbyh5KTsgcHQuY29weVRvKHIpOyB9CisgIHZhciB5cyA9IHkudDsKKworICB2YXIgeV9hcnJh
eSA9IHkuYXJyYXk7CisgIHZhciB5MCA9IHlfYXJyYXlbeXMtMV07CisgIGlmKHkwID09IDApIHJl
dHVybjsKKyAgdmFyIHl0ID0geTAqKDE8PEJJX0YxKSsoKHlzPjEpP3lfYXJyYXlbeXMtMl0+PkJJ
X0YyOjApOworICB2YXIgZDEgPSBCSV9GVi95dCwgZDIgPSAoMTw8QklfRjEpL3l0LCBlID0gMTw8
QklfRjI7CisgIHZhciBpID0gci50LCBqID0gaS15cywgdCA9IChxPT1udWxsKT9uYmkoKTpxOwor
ICB5LmRsU2hpZnRUbyhqLHQpOworCisgIHZhciByX2FycmF5ID0gci5hcnJheTsKKyAgaWYoci5j
b21wYXJlVG8odCkgPj0gMCkgeworICAgIHJfYXJyYXlbci50KytdID0gMTsKKyAgICByLnN1YlRv
KHQscik7CisgIH0KKyAgQmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpOworICB0LnN1YlRv
KHkseSk7IC8vICJuZWdhdGl2ZSIgeSBzbyB3ZSBjYW4gcmVwbGFjZSBzdWIgd2l0aCBhbSBsYXRl
cgorICB3aGlsZSh5LnQgPCB5cykgeV9hcnJheVt5LnQrK10gPSAwOworICB3aGlsZSgtLWogPj0g
MCkgeworICAgIC8vIEVzdGltYXRlIHF1b3RpZW50IGRpZ2l0CisgICAgdmFyIHFkID0gKHJfYXJy
YXlbLS1pXT09eTApP0JJX0RNOk1hdGguZmxvb3Iocl9hcnJheVtpXSpkMSsocl9hcnJheVtpLTFd
K2UpKmQyKTsKKyAgICBpZigocl9hcnJheVtpXSs9eS5hbSgwLHFkLHIsaiwwLHlzKSkgPCBxZCkg
eyAgICAgICAgLy8gVHJ5IGl0IG91dAorICAgICAgeS5kbFNoaWZ0VG8oaix0KTsKKyAgICAgIHIu
c3ViVG8odCxyKTsKKyAgICAgIHdoaWxlKHJfYXJyYXlbaV0gPCAtLXFkKSByLnN1YlRvKHQscik7
CisgICAgfQorICB9CisgIGlmKHEgIT0gbnVsbCkgeworICAgIHIuZHJTaGlmdFRvKHlzLHEpOwor
ICAgIGlmKHRzICE9IG1zKSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocSxxKTsKKyAgfQorICByLnQg
PSB5czsKKyAgci5jbGFtcCgpOworICBpZihuc2ggPiAwKSByLnJTaGlmdFRvKG5zaCxyKTsgICAg
ICAgIC8vIERlbm9ybWFsaXplIHJlbWFpbmRlcgorICBpZih0cyA8IDApIEJpZ0ludGVnZXIuWkVS
Ty5zdWJUbyhyLHIpOworfQorCisvLyAocHVibGljKSB0aGlzIG1vZCBhCitmdW5jdGlvbiBibk1v
ZChhKSB7CisgIHZhciByID0gbmJpKCk7CisgIHRoaXMuYWJzKCkuZGl2UmVtVG8oYSxudWxsLHIp
OworICBpZih0aGlzLnMgPCAwICYmIHIuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTykgPiAwKSBh
LnN1YlRvKHIscik7CisgIHJldHVybiByOworfQorCisvLyBNb2R1bGFyIHJlZHVjdGlvbiB1c2lu
ZyAiY2xhc3NpYyIgYWxnb3JpdGhtCitmdW5jdGlvbiBDbGFzc2ljKG0pIHsgdGhpcy5tID0gbTsg
fQorZnVuY3Rpb24gY0NvbnZlcnQoeCkgeworICBpZih4LnMgPCAwIHx8IHguY29tcGFyZVRvKHRo
aXMubSkgPj0gMCkgcmV0dXJuIHgubW9kKHRoaXMubSk7CisgIGVsc2UgcmV0dXJuIHg7Cit9Citm
dW5jdGlvbiBjUmV2ZXJ0KHgpIHsgcmV0dXJuIHg7IH0KK2Z1bmN0aW9uIGNSZWR1Y2UoeCkgeyB4
LmRpdlJlbVRvKHRoaXMubSxudWxsLHgpOyB9CitmdW5jdGlvbiBjTXVsVG8oeCx5LHIpIHsgeC5t
dWx0aXBseVRvKHkscik7IHRoaXMucmVkdWNlKHIpOyB9CitmdW5jdGlvbiBjU3FyVG8oeCxyKSB7
IHguc3F1YXJlVG8ocik7IHRoaXMucmVkdWNlKHIpOyB9CisKK0NsYXNzaWMucHJvdG90eXBlLmNv
bnZlcnQgPSBjQ29udmVydDsKK0NsYXNzaWMucHJvdG90eXBlLnJldmVydCA9IGNSZXZlcnQ7CitD
bGFzc2ljLnByb3RvdHlwZS5yZWR1Y2UgPSBjUmVkdWNlOworQ2xhc3NpYy5wcm90b3R5cGUubXVs
VG8gPSBjTXVsVG87CitDbGFzc2ljLnByb3RvdHlwZS5zcXJUbyA9IGNTcXJUbzsKKworLy8gKHBy
b3RlY3RlZCkgcmV0dXJuICItMS90aGlzICUgMl5EQiI7IHVzZWZ1bCBmb3IgTW9udC4gcmVkdWN0
aW9uCisvLyBqdXN0aWZpY2F0aW9uOgorLy8gICAgICAgICB4eSA9PSAxIChtb2QgbSkKKy8vICAg
ICAgICAgeHkgPSAgMStrbQorLy8gICB4eSgyLXh5KSA9ICgxK2ttKSgxLWttKQorLy8geFt5KDIt
eHkpXSA9IDEta14ybV4yCisvLyB4W3koMi14eSldID09IDEgKG1vZCBtXjIpCisvLyBpZiB5IGlz
IDEveCBtb2QgbSwgdGhlbiB5KDIteHkpIGlzIDEveCBtb2QgbV4yCisvLyBzaG91bGQgcmVkdWNl
IHggYW5kIHkoMi14eSkgYnkgbV4yIGF0IGVhY2ggc3RlcCB0byBrZWVwIHNpemUgYm91bmRlZC4K
Ky8vIEpTIG11bHRpcGx5ICJvdmVyZmxvd3MiIGRpZmZlcmVudGx5IGZyb20gQy9DKyssIHNvIGNh
cmUgaXMgbmVlZGVkIGhlcmUuCitmdW5jdGlvbiBibnBJbnZEaWdpdCgpIHsKKyAgdmFyIHRoaXNf
YXJyYXkgPSB0aGlzLmFycmF5OworICBpZih0aGlzLnQgPCAxKSByZXR1cm4gMDsKKyAgdmFyIHgg
PSB0aGlzX2FycmF5WzBdOworICBpZigoeCYxKSA9PSAwKSByZXR1cm4gMDsKKyAgdmFyIHkgPSB4
JjM7ICAgICAgICAgIC8vIHkgPT0gMS94IG1vZCAyXjIKKyAgeSA9ICh5KigyLSh4JjB4ZikqeSkp
JjB4ZjsgICAgLy8geSA9PSAxL3ggbW9kIDJeNAorICB5ID0gKHkqKDItKHgmMHhmZikqeSkpJjB4
ZmY7ICAvLyB5ID09IDEveCBtb2QgMl44CisgIHkgPSAoeSooMi0oKCh4JjB4ZmZmZikqeSkmMHhm
ZmZmKSkpJjB4ZmZmZjsgICAvLyB5ID09IDEveCBtb2QgMl4xNgorICAvLyBsYXN0IHN0ZXAgLSBj
YWxjdWxhdGUgaW52ZXJzZSBtb2QgRFYgZGlyZWN0bHk7CisgIC8vIGFzc3VtZXMgMTYgPCBEQiA8
PSAzMiBhbmQgYXNzdW1lcyBhYmlsaXR5IHRvIGhhbmRsZSA0OC1iaXQgaW50cworICB5ID0gKHkq
KDIteCp5JUJJX0RWKSklQklfRFY7ICAgICAgICAgIC8vIHkgPT0gMS94IG1vZCAyXmRiaXRzCisg
IC8vIHdlIHJlYWxseSB3YW50IHRoZSBuZWdhdGl2ZSBpbnZlcnNlLCBhbmQgLURWIDwgeSA8IERW
CisgIHJldHVybiAoeT4wKT9CSV9EVi15Oi15OworfQorCisvLyBNb250Z29tZXJ5IHJlZHVjdGlv
bgorZnVuY3Rpb24gTW9udGdvbWVyeShtKSB7CisgIHRoaXMubSA9IG07CisgIHRoaXMubXAgPSBt
LmludkRpZ2l0KCk7CisgIHRoaXMubXBsID0gdGhpcy5tcCYweDdmZmY7CisgIHRoaXMubXBoID0g
dGhpcy5tcD4+MTU7CisgIHRoaXMudW0gPSAoMTw8KEJJX0RCLTE1KSktMTsKKyAgdGhpcy5tdDIg
PSAyKm0udDsKK30KKworLy8geFIgbW9kIG0KK2Z1bmN0aW9uIG1vbnRDb252ZXJ0KHgpIHsKKyAg
dmFyIHIgPSBuYmkoKTsKKyAgeC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7CisgIHIuZGl2
UmVtVG8odGhpcy5tLG51bGwscik7CisgIGlmKHgucyA8IDAgJiYgci5jb21wYXJlVG8oQmlnSW50
ZWdlci5aRVJPKSA+IDApIHRoaXMubS5zdWJUbyhyLHIpOworICByZXR1cm4gcjsKK30KKworLy8g
eC9SIG1vZCBtCitmdW5jdGlvbiBtb250UmV2ZXJ0KHgpIHsKKyAgdmFyIHIgPSBuYmkoKTsKKyAg
eC5jb3B5VG8ocik7CisgIHRoaXMucmVkdWNlKHIpOworICByZXR1cm4gcjsKK30KKworLy8geCA9
IHgvUiBtb2QgbSAoSEFDIDE0LjMyKQorZnVuY3Rpb24gbW9udFJlZHVjZSh4KSB7CisgIHZhciB4
X2FycmF5ID0geC5hcnJheTsKKyAgd2hpbGUoeC50IDw9IHRoaXMubXQyKSAgICAgICAgLy8gcGFk
IHggc28gYW0gaGFzIGVub3VnaCByb29tIGxhdGVyCisgICAgeF9hcnJheVt4LnQrK10gPSAwOwor
ICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5tLnQ7ICsraSkgeworICAgIC8vIGZhc3RlciB3YXkg
b2YgY2FsY3VsYXRpbmcgdTAgPSB4W2ldKm1wIG1vZCBEVgorICAgIHZhciBqID0geF9hcnJheVtp
XSYweDdmZmY7CisgICAgdmFyIHUwID0gKGoqdGhpcy5tcGwrKCgoaip0aGlzLm1waCsoeF9hcnJh
eVtpXT4+MTUpKnRoaXMubXBsKSZ0aGlzLnVtKTw8MTUpKSZCSV9ETTsKKyAgICAvLyB1c2UgYW0g
dG8gY29tYmluZSB0aGUgbXVsdGlwbHktc2hpZnQtYWRkIGludG8gb25lIGNhbGwKKyAgICBqID0g
aSt0aGlzLm0udDsKKyAgICB4X2FycmF5W2pdICs9IHRoaXMubS5hbSgwLHUwLHgsaSwwLHRoaXMu
bS50KTsKKyAgICAvLyBwcm9wYWdhdGUgY2FycnkKKyAgICB3aGlsZSh4X2FycmF5W2pdID49IEJJ
X0RWKSB7IHhfYXJyYXlbal0gLT0gQklfRFY7IHhfYXJyYXlbKytqXSsrOyB9CisgIH0KKyAgeC5j
bGFtcCgpOworICB4LmRyU2hpZnRUbyh0aGlzLm0udCx4KTsKKyAgaWYoeC5jb21wYXJlVG8odGhp
cy5tKSA+PSAwKSB4LnN1YlRvKHRoaXMubSx4KTsKK30KKworLy8gciA9ICJ4XjIvUiBtb2QgbSI7
IHggIT0gcgorZnVuY3Rpb24gbW9udFNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0aGlzLnJl
ZHVjZShyKTsgfQorCisvLyByID0gInh5L1IgbW9kIG0iOyB4LHkgIT0gcgorZnVuY3Rpb24gbW9u
dE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQorCitN
b250Z29tZXJ5LnByb3RvdHlwZS5jb252ZXJ0ID0gbW9udENvbnZlcnQ7CitNb250Z29tZXJ5LnBy
b3RvdHlwZS5yZXZlcnQgPSBtb250UmV2ZXJ0OworTW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNl
ID0gbW9udFJlZHVjZTsKK01vbnRnb21lcnkucHJvdG90eXBlLm11bFRvID0gbW9udE11bFRvOwor
TW9udGdvbWVyeS5wcm90b3R5cGUuc3FyVG8gPSBtb250U3FyVG87CisKKy8vIChwcm90ZWN0ZWQp
IHRydWUgaWZmIHRoaXMgaXMgZXZlbgorZnVuY3Rpb24gYm5wSXNFdmVuKCkgeworICB2YXIgdGhp
c19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHJldHVybiAoKHRoaXMudD4wKT8odGhpc19hcnJheVsw
XSYxKTp0aGlzLnMpID09IDA7Cit9CisKKy8vIChwcm90ZWN0ZWQpIHRoaXNeZSwgZSA8IDJeMzIs
IGRvaW5nIHNxciBhbmQgbXVsIHdpdGggInIiIChIQUMgMTQuNzkpCitmdW5jdGlvbiBibnBFeHAo
ZSx6KSB7CisgIGlmKGUgPiAweGZmZmZmZmZmIHx8IGUgPCAxKSByZXR1cm4gQmlnSW50ZWdlci5P
TkU7CisgIHZhciByID0gbmJpKCksIHIyID0gbmJpKCksIGcgPSB6LmNvbnZlcnQodGhpcyksIGkg
PSBuYml0cyhlKS0xOworICBnLmNvcHlUbyhyKTsKKyAgd2hpbGUoLS1pID49IDApIHsKKyAgICB6
LnNxclRvKHIscjIpOworICAgIGlmKChlJigxPDxpKSkgPiAwKSB6Lm11bFRvKHIyLGcscik7Cisg
ICAgZWxzZSB7IHZhciB0ID0gcjsgciA9IHIyOyByMiA9IHQ7IH0KKyAgfQorICByZXR1cm4gei5y
ZXZlcnQocik7Cit9CisKKy8vIChwdWJsaWMpIHRoaXNeZSAlIG0sIDAgPD0gZSA8IDJeMzIKK2Z1
bmN0aW9uIGJuTW9kUG93SW50KGUsbSkgeworICB2YXIgejsKKyAgaWYoZSA8IDI1NiB8fCBtLmlz
RXZlbigpKSB6ID0gbmV3IENsYXNzaWMobSk7IGVsc2UgeiA9IG5ldyBNb250Z29tZXJ5KG0pOwor
ICByZXR1cm4gdGhpcy5leHAoZSx6KTsKK30KKworLy8gcHJvdGVjdGVkCitCaWdJbnRlZ2VyLnBy
b3RvdHlwZS5jb3B5VG8gPSBibnBDb3B5VG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tSW50
ID0gYm5wRnJvbUludDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmZyb21TdHJpbmcgPSBibnBGcm9t
U3RyaW5nOworQmlnSW50ZWdlci5wcm90b3R5cGUuY2xhbXAgPSBibnBDbGFtcDsKK0JpZ0ludGVn
ZXIucHJvdG90eXBlLmRsU2hpZnRUbyA9IGJucERMU2hpZnRUbzsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmRyU2hpZnRUbyA9IGJucERSU2hpZnRUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmxTaGlm
dFRvID0gYm5wTFNoaWZ0VG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5yU2hpZnRUbyA9IGJucFJT
aGlmdFRvOworQmlnSW50ZWdlci5wcm90b3R5cGUuc3ViVG8gPSBibnBTdWJUbzsKK0JpZ0ludGVn
ZXIucHJvdG90eXBlLm11bHRpcGx5VG8gPSBibnBNdWx0aXBseVRvOworQmlnSW50ZWdlci5wcm90
b3R5cGUuc3F1YXJlVG8gPSBibnBTcXVhcmVUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmRpdlJl
bVRvID0gYm5wRGl2UmVtVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5pbnZEaWdpdCA9IGJucElu
dkRpZ2l0OworQmlnSW50ZWdlci5wcm90b3R5cGUuaXNFdmVuID0gYm5wSXNFdmVuOworQmlnSW50
ZWdlci5wcm90b3R5cGUuZXhwID0gYm5wRXhwOworCisvLyBwdWJsaWMKK0JpZ0ludGVnZXIucHJv
dG90eXBlLnRvU3RyaW5nID0gYm5Ub1N0cmluZzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm5lZ2F0
ZSA9IGJuTmVnYXRlOworQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gYm5BYnM7CitCaWdJbnRl
Z2VyLnByb3RvdHlwZS5jb21wYXJlVG8gPSBibkNvbXBhcmVUbzsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmJpdExlbmd0aCA9IGJuQml0TGVuZ3RoOworQmlnSW50ZWdlci5wcm90b3R5cGUubW9kID0g
Ym5Nb2Q7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RQb3dJbnQgPSBibk1vZFBvd0ludDsKKwor
Ly8gImNvbnN0YW50cyIKK0JpZ0ludGVnZXIuWkVSTyA9IG5idigwKTsKK0JpZ0ludGVnZXIuT05F
ID0gbmJ2KDEpOworLy8gQ29weXJpZ2h0IChjKSAyMDA1ICBUb20gV3UKKy8vIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisvLyBTZWUgIkxJQ0VOU0UiIGZvciBkZXRhaWxzLgorCisvLyBFeHRlbmRlZCBK
YXZhU2NyaXB0IEJOIGZ1bmN0aW9ucywgcmVxdWlyZWQgZm9yIFJTQSBwcml2YXRlIG9wcy4KKwor
Ly8gKHB1YmxpYykKK2Z1bmN0aW9uIGJuQ2xvbmUoKSB7IHZhciByID0gbmJpKCk7IHRoaXMuY29w
eVRvKHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSByZXR1cm4gdmFsdWUgYXMgaW50ZWdl
cgorZnVuY3Rpb24gYm5JbnRWYWx1ZSgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5
OworICBpZih0aGlzLnMgPCAwKSB7CisgICAgaWYodGhpcy50ID09IDEpIHJldHVybiB0aGlzX2Fy
cmF5WzBdLUJJX0RWOworICAgIGVsc2UgaWYodGhpcy50ID09IDApIHJldHVybiAtMTsKKyAgfQor
ICBlbHNlIGlmKHRoaXMudCA9PSAxKSByZXR1cm4gdGhpc19hcnJheVswXTsKKyAgZWxzZSBpZih0
aGlzLnQgPT0gMCkgcmV0dXJuIDA7CisgIC8vIGFzc3VtZXMgMTYgPCBEQiA8IDMyCisgIHJldHVy
biAoKHRoaXNfYXJyYXlbMV0mKCgxPDwoMzItQklfREIpKS0xKSk8PEJJX0RCKXx0aGlzX2FycmF5
WzBdOworfQorCisvLyAocHVibGljKSByZXR1cm4gdmFsdWUgYXMgYnl0ZQorZnVuY3Rpb24gYm5C
eXRlVmFsdWUoKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgcmV0dXJuICh0
aGlzLnQ9PTApP3RoaXMuczoodGhpc19hcnJheVswXTw8MjQpPj4yNDsKK30KKworLy8gKHB1Ymxp
YykgcmV0dXJuIHZhbHVlIGFzIHNob3J0IChhc3N1bWVzIERCPj0xNikKK2Z1bmN0aW9uIGJuU2hv
cnRWYWx1ZSgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICByZXR1cm4gKHRo
aXMudD09MCk/dGhpcy5zOih0aGlzX2FycmF5WzBdPDwxNik+PjE2OworfQorCisvLyAocHJvdGVj
dGVkKSByZXR1cm4geCBzLnQuIHJeeCA8IERWCitmdW5jdGlvbiBibnBDaHVua1NpemUocikgeyBy
ZXR1cm4gTWF0aC5mbG9vcihNYXRoLkxOMipCSV9EQi9NYXRoLmxvZyhyKSk7IH0KKworLy8gKHB1
YmxpYykgMCBpZiB0aGlzID09IDAsIDEgaWYgdGhpcyA+IDAKK2Z1bmN0aW9uIGJuU2lnTnVtKCkg
eworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIGlmKHRoaXMucyA8IDApIHJldHVy
biAtMTsKKyAgZWxzZSBpZih0aGlzLnQgPD0gMCB8fCAodGhpcy50ID09IDEgJiYgdGhpc19hcnJh
eVswXSA8PSAwKSkgcmV0dXJuIDA7CisgIGVsc2UgcmV0dXJuIDE7Cit9CisKKy8vIChwcm90ZWN0
ZWQpIGNvbnZlcnQgdG8gcmFkaXggc3RyaW5nCitmdW5jdGlvbiBibnBUb1JhZGl4KGIpIHsKKyAg
aWYoYiA9PSBudWxsKSBiID0gMTA7CisgIGlmKHRoaXMuc2lnbnVtKCkgPT0gMCB8fCBiIDwgMiB8
fCBiID4gMzYpIHJldHVybiAiMCI7CisgIHZhciBjcyA9IHRoaXMuY2h1bmtTaXplKGIpOworICB2
YXIgYSA9IE1hdGgucG93KGIsY3MpOworICB2YXIgZCA9IG5idihhKSwgeSA9IG5iaSgpLCB6ID0g
bmJpKCksIHIgPSAiIjsKKyAgdGhpcy5kaXZSZW1UbyhkLHkseik7CisgIHdoaWxlKHkuc2lnbnVt
KCkgPiAwKSB7CisgICAgciA9IChhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEp
ICsgcjsKKyAgICB5LmRpdlJlbVRvKGQseSx6KTsKKyAgfQorICByZXR1cm4gei5pbnRWYWx1ZSgp
LnRvU3RyaW5nKGIpICsgcjsKK30KKworLy8gKHByb3RlY3RlZCkgY29udmVydCBmcm9tIHJhZGl4
IHN0cmluZworZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYikgeworICB0aGlzLmZyb21JbnQoMCk7
CisgIGlmKGIgPT0gbnVsbCkgYiA9IDEwOworICB2YXIgY3MgPSB0aGlzLmNodW5rU2l6ZShiKTsK
KyAgdmFyIGQgPSBNYXRoLnBvdyhiLGNzKSwgbWkgPSBmYWxzZSwgaiA9IDAsIHcgPSAwOworICBm
b3IodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkgeworICAgIHZhciB4ID0gaW50QXQocyxp
KTsKKyAgICBpZih4IDwgMCkgeworICAgICAgaWYocy5jaGFyQXQoaSkgPT0gIi0iICYmIHRoaXMu
c2lnbnVtKCkgPT0gMCkgbWkgPSB0cnVlOworICAgICAgY29udGludWU7CisgICAgfQorICAgIHcg
PSBiKncreDsKKyAgICBpZigrK2ogPj0gY3MpIHsKKyAgICAgIHRoaXMuZE11bHRpcGx5KGQpOwor
ICAgICAgdGhpcy5kQWRkT2Zmc2V0KHcsMCk7CisgICAgICBqID0gMDsKKyAgICAgIHcgPSAwOwor
ICAgIH0KKyAgfQorICBpZihqID4gMCkgeworICAgIHRoaXMuZE11bHRpcGx5KE1hdGgucG93KGIs
aikpOworICAgIHRoaXMuZEFkZE9mZnNldCh3LDApOworICB9CisgIGlmKG1pKSBCaWdJbnRlZ2Vy
LlpFUk8uc3ViVG8odGhpcyx0aGlzKTsKK30KKworLy8gKHByb3RlY3RlZCkgYWx0ZXJuYXRlIGNv
bnN0cnVjdG9yCitmdW5jdGlvbiBibnBGcm9tTnVtYmVyKGEsYixjKSB7CisgIGlmKCJudW1iZXIi
ID09IHR5cGVvZiBiKSB7CisgICAgLy8gbmV3IEJpZ0ludGVnZXIoaW50LGludCxSTkcpCisgICAg
aWYoYSA8IDIpIHRoaXMuZnJvbUludCgxKTsKKyAgICBlbHNlIHsKKyAgICAgIHRoaXMuZnJvbU51
bWJlcihhLGMpOworICAgICAgaWYoIXRoaXMudGVzdEJpdChhLTEpKSAgICAvLyBmb3JjZSBNU0Ig
c2V0CisgICAgICAgIHRoaXMuYml0d2lzZVRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChhLTEp
LG9wX29yLHRoaXMpOworICAgICAgaWYodGhpcy5pc0V2ZW4oKSkgdGhpcy5kQWRkT2Zmc2V0KDEs
MCk7IC8vIGZvcmNlIG9kZAorICAgICAgd2hpbGUoIXRoaXMuaXNQcm9iYWJsZVByaW1lKGIpKSB7
CisgICAgICAgIHRoaXMuZEFkZE9mZnNldCgyLDApOworICAgICAgICBpZih0aGlzLmJpdExlbmd0
aCgpID4gYSkgdGhpcy5zdWJUbyhCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQoYS0xKSx0aGlzKTsK
KyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgLy8gbmV3IEJpZ0ludGVnZXIoaW50
LFJORykKKyAgICB2YXIgeCA9IG5ldyBBcnJheSgpLCB0ID0gYSY3OworICAgIHgubGVuZ3RoID0g
KGE+PjMpKzE7CisgICAgYi5uZXh0Qnl0ZXMoeCk7CisgICAgaWYodCA+IDApIHhbMF0gJj0gKCgx
PDx0KS0xKTsgZWxzZSB4WzBdID0gMDsKKyAgICB0aGlzLmZyb21TdHJpbmcoeCwyNTYpOworICB9
Cit9CisKKy8vIChwdWJsaWMpIGNvbnZlcnQgdG8gYmlnZW5kaWFuIGJ5dGUgYXJyYXkKK2Z1bmN0
aW9uIGJuVG9CeXRlQXJyYXkoKSB7CisgIHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAg
dmFyIGkgPSB0aGlzLnQsIHIgPSBuZXcgQXJyYXkoKTsKKyAgclswXSA9IHRoaXMuczsKKyAgdmFy
IHAgPSBCSV9EQi0oaSpCSV9EQiklOCwgZCwgayA9IDA7CisgIGlmKGktLSA+IDApIHsKKyAgICBp
ZihwIDwgQklfREIgJiYgKGQgPSB0aGlzX2FycmF5W2ldPj5wKSAhPSAodGhpcy5zJkJJX0RNKT4+
cCkKKyAgICAgIHJbaysrXSA9IGR8KHRoaXMuczw8KEJJX0RCLXApKTsKKyAgICB3aGlsZShpID49
IDApIHsKKyAgICAgIGlmKHAgPCA4KSB7CisgICAgICAgIGQgPSAodGhpc19hcnJheVtpXSYoKDE8
PHApLTEpKTw8KDgtcCk7CisgICAgICAgIGQgfD0gdGhpc19hcnJheVstLWldPj4ocCs9QklfREIt
OCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZCA9ICh0aGlzX2FycmF5W2ldPj4o
cC09OCkpJjB4ZmY7CisgICAgICAgIGlmKHAgPD0gMCkgeyBwICs9IEJJX0RCOyAtLWk7IH0KKyAg
ICAgIH0KKyAgICAgIGlmKChkJjB4ODApICE9IDApIGQgfD0gLTI1NjsKKyAgICAgIGlmKGsgPT0g
MCAmJiAodGhpcy5zJjB4ODApICE9IChkJjB4ODApKSArK2s7CisgICAgICBpZihrID4gMCB8fCBk
ICE9IHRoaXMucykgcltrKytdID0gZDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHI7Cit9CisKK2Z1
bmN0aW9uIGJuRXF1YWxzKGEpIHsgcmV0dXJuKHRoaXMuY29tcGFyZVRvKGEpPT0wKTsgfQorZnVu
Y3Rpb24gYm5NaW4oYSkgeyByZXR1cm4odGhpcy5jb21wYXJlVG8oYSk8MCk/dGhpczphOyB9Citm
dW5jdGlvbiBibk1heChhKSB7IHJldHVybih0aGlzLmNvbXBhcmVUbyhhKT4wKT90aGlzOmE7IH0K
KworLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgb3AgYSAoYml0d2lzZSkKK2Z1bmN0aW9uIGJucEJp
dHdpc2VUbyhhLG9wLHIpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIg
YV9hcnJheSAgICA9IGEuYXJyYXk7CisgIHZhciByX2FycmF5ICAgID0gci5hcnJheTsKKyAgdmFy
IGksIGYsIG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKKyAgZm9yKGkgPSAwOyBpIDwgbTsgKytp
KSByX2FycmF5W2ldID0gb3AodGhpc19hcnJheVtpXSxhX2FycmF5W2ldKTsKKyAgaWYoYS50IDwg
dGhpcy50KSB7CisgICAgZiA9IGEucyZCSV9ETTsKKyAgICBmb3IoaSA9IG07IGkgPCB0aGlzLnQ7
ICsraSkgcl9hcnJheVtpXSA9IG9wKHRoaXNfYXJyYXlbaV0sZik7CisgICAgci50ID0gdGhpcy50
OworICB9CisgIGVsc2UgeworICAgIGYgPSB0aGlzLnMmQklfRE07CisgICAgZm9yKGkgPSBtOyBp
IDwgYS50OyArK2kpIHJfYXJyYXlbaV0gPSBvcChmLGFfYXJyYXlbaV0pOworICAgIHIudCA9IGEu
dDsKKyAgfQorICByLnMgPSBvcCh0aGlzLnMsYS5zKTsKKyAgci5jbGFtcCgpOworfQorCisvLyAo
cHVibGljKSB0aGlzICYgYQorZnVuY3Rpb24gb3BfYW5kKHgseSkgeyByZXR1cm4geCZ5OyB9Citm
dW5jdGlvbiBibkFuZChhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3BfYW5k
LHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB0aGlzIHwgYQorZnVuY3Rpb24gb3Bfb3Io
eCx5KSB7IHJldHVybiB4fHk7IH0KK2Z1bmN0aW9uIGJuT3IoYSkgeyB2YXIgciA9IG5iaSgpOyB0
aGlzLmJpdHdpc2VUbyhhLG9wX29yLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB0aGlz
IF4gYQorZnVuY3Rpb24gb3BfeG9yKHgseSkgeyByZXR1cm4geF55OyB9CitmdW5jdGlvbiBiblhv
cihhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3BfeG9yLHIpOyByZXR1cm4g
cjsgfQorCisvLyAocHVibGljKSB0aGlzICYgfmEKK2Z1bmN0aW9uIG9wX2FuZG5vdCh4LHkpIHsg
cmV0dXJuIHgmfnk7IH0KK2Z1bmN0aW9uIGJuQW5kTm90KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhp
cy5iaXR3aXNlVG8oYSxvcF9hbmRub3Qscik7IHJldHVybiByOyB9CisKKy8vIChwdWJsaWMpIH50
aGlzCitmdW5jdGlvbiBibk5vdCgpIHsKKyAgdmFyIHRoaXNfYXJyYXkgPSB0aGlzLmFycmF5Owor
ICB2YXIgciA9IG5iaSgpOworICB2YXIgcl9hcnJheSA9IHIuYXJyYXk7CisKKyAgZm9yKHZhciBp
ID0gMDsgaSA8IHRoaXMudDsgKytpKSByX2FycmF5W2ldID0gQklfRE0mfnRoaXNfYXJyYXlbaV07
CisgIHIudCA9IHRoaXMudDsKKyAgci5zID0gfnRoaXMuczsKKyAgcmV0dXJuIHI7Cit9CisKKy8v
IChwdWJsaWMpIHRoaXMgPDwgbgorZnVuY3Rpb24gYm5TaGlmdExlZnQobikgeworICB2YXIgciA9
IG5iaSgpOworICBpZihuIDwgMCkgdGhpcy5yU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLmxTaGlm
dFRvKG4scik7CisgIHJldHVybiByOworfQorCisvLyAocHVibGljKSB0aGlzID4+IG4KK2Z1bmN0
aW9uIGJuU2hpZnRSaWdodChuKSB7CisgIHZhciByID0gbmJpKCk7CisgIGlmKG4gPCAwKSB0aGlz
LmxTaGlmdFRvKC1uLHIpOyBlbHNlIHRoaXMuclNoaWZ0VG8obixyKTsKKyAgcmV0dXJuIHI7Cit9
CisKKy8vIHJldHVybiBpbmRleCBvZiBsb3dlc3QgMS1iaXQgaW4geCwgeCA8IDJeMzEKK2Z1bmN0
aW9uIGxiaXQoeCkgeworICBpZih4ID09IDApIHJldHVybiAtMTsKKyAgdmFyIHIgPSAwOworICBp
ZigoeCYweGZmZmYpID09IDApIHsgeCA+Pj0gMTY7IHIgKz0gMTY7IH0KKyAgaWYoKHgmMHhmZikg
PT0gMCkgeyB4ID4+PSA4OyByICs9IDg7IH0KKyAgaWYoKHgmMHhmKSA9PSAwKSB7IHggPj49IDQ7
IHIgKz0gNDsgfQorICBpZigoeCYzKSA9PSAwKSB7IHggPj49IDI7IHIgKz0gMjsgfQorICBpZigo
eCYxKSA9PSAwKSArK3I7CisgIHJldHVybiByOworfQorCisvLyAocHVibGljKSByZXR1cm5zIGlu
ZGV4IG9mIGxvd2VzdCAxLWJpdCAob3IgLTEgaWYgbm9uZSkKK2Z1bmN0aW9uIGJuR2V0TG93ZXN0
U2V0Qml0KCkgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIGZvcih2YXIgaSA9
IDA7IGkgPCB0aGlzLnQ7ICsraSkKKyAgICBpZih0aGlzX2FycmF5W2ldICE9IDApIHJldHVybiBp
KkJJX0RCK2xiaXQodGhpc19hcnJheVtpXSk7CisgIGlmKHRoaXMucyA8IDApIHJldHVybiB0aGlz
LnQqQklfREI7CisgIHJldHVybiAtMTsKK30KKworLy8gcmV0dXJuIG51bWJlciBvZiAxIGJpdHMg
aW4geAorZnVuY3Rpb24gY2JpdCh4KSB7CisgIHZhciByID0gMDsKKyAgd2hpbGUoeCAhPSAwKSB7
IHggJj0geC0xOyArK3I7IH0KKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMpIHJldHVybiBu
dW1iZXIgb2Ygc2V0IGJpdHMKK2Z1bmN0aW9uIGJuQml0Q291bnQoKSB7CisgIHZhciByID0gMCwg
eCA9IHRoaXMucyZCSV9ETTsKKyAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMudDsgKytpKSByICs9
IGNiaXQodGhpc19hcnJheVtpXV54KTsKKyAgcmV0dXJuIHI7Cit9CisKKy8vIChwdWJsaWMpIHRy
dWUgaWZmIG50aCBiaXQgaXMgc2V0CitmdW5jdGlvbiBiblRlc3RCaXQobikgeworICB2YXIgdGhp
c19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHZhciBqID0gTWF0aC5mbG9vcihuL0JJX0RCKTsKKyAg
aWYoaiA+PSB0aGlzLnQpIHJldHVybih0aGlzLnMhPTApOworICByZXR1cm4oKHRoaXNfYXJyYXlb
al0mKDE8PChuJUJJX0RCKSkpIT0wKTsKK30KKworLy8gKHByb3RlY3RlZCkgdGhpcyBvcCAoMTw8
bikKK2Z1bmN0aW9uIGJucENoYW5nZUJpdChuLG9wKSB7CisgIHZhciByID0gQmlnSW50ZWdlci5P
TkUuc2hpZnRMZWZ0KG4pOworICB0aGlzLmJpdHdpc2VUbyhyLG9wLHIpOworICByZXR1cm4gcjsK
K30KKworLy8gKHB1YmxpYykgdGhpcyB8ICgxPDxuKQorZnVuY3Rpb24gYm5TZXRCaXQobikgeyBy
ZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixvcF9vcik7IH0KKworLy8gKHB1YmxpYykgdGhpcyAmIH4o
MTw8bikKK2Z1bmN0aW9uIGJuQ2xlYXJCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixv
cF9hbmRub3QpOyB9CisKKy8vIChwdWJsaWMpIHRoaXMgXiAoMTw8bikKK2Z1bmN0aW9uIGJuRmxp
cEJpdChuKSB7IHJldHVybiB0aGlzLmNoYW5nZUJpdChuLG9wX3hvcik7IH0KKworLy8gKHByb3Rl
Y3RlZCkgciA9IHRoaXMgKyBhCitmdW5jdGlvbiBibnBBZGRUbyhhLHIpIHsKKyAgdmFyIHRoaXNf
YXJyYXkgPSB0aGlzLmFycmF5OworICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIHZhciByX2Fy
cmF5ID0gci5hcnJheTsKKyAgdmFyIGkgPSAwLCBjID0gMCwgbSA9IE1hdGgubWluKGEudCx0aGlz
LnQpOworICB3aGlsZShpIDwgbSkgeworICAgIGMgKz0gdGhpc19hcnJheVtpXSthX2FycmF5W2ld
OworICAgIHJfYXJyYXlbaSsrXSA9IGMmQklfRE07CisgICAgYyA+Pj0gQklfREI7CisgIH0KKyAg
aWYoYS50IDwgdGhpcy50KSB7CisgICAgYyArPSBhLnM7CisgICAgd2hpbGUoaSA8IHRoaXMudCkg
eworICAgICAgYyArPSB0aGlzX2FycmF5W2ldOworICAgICAgcl9hcnJheVtpKytdID0gYyZCSV9E
TTsKKyAgICAgIGMgPj49IEJJX0RCOworICAgIH0KKyAgICBjICs9IHRoaXMuczsKKyAgfQorICBl
bHNlIHsKKyAgICBjICs9IHRoaXMuczsKKyAgICB3aGlsZShpIDwgYS50KSB7CisgICAgICBjICs9
IGFfYXJyYXlbaV07CisgICAgICByX2FycmF5W2krK10gPSBjJkJJX0RNOworICAgICAgYyA+Pj0g
QklfREI7CisgICAgfQorICAgIGMgKz0gYS5zOworICB9CisgIHIucyA9IChjPDApPy0xOjA7Cisg
IGlmKGMgPiAwKSByX2FycmF5W2krK10gPSBjOworICBlbHNlIGlmKGMgPCAtMSkgcl9hcnJheVtp
KytdID0gQklfRFYrYzsKKyAgci50ID0gaTsKKyAgci5jbGFtcCgpOworfQorCisvLyAocHVibGlj
KSB0aGlzICsgYQorZnVuY3Rpb24gYm5BZGQoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLmFkZFRv
KGEscik7IHJldHVybiByOyB9CisKKy8vIChwdWJsaWMpIHRoaXMgLSBhCitmdW5jdGlvbiBiblN1
YnRyYWN0KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5zdWJUbyhhLHIpOyByZXR1cm4gcjsgfQor
CisvLyAocHVibGljKSB0aGlzICogYQorZnVuY3Rpb24gYm5NdWx0aXBseShhKSB7IHZhciByID0g
bmJpKCk7IHRoaXMubXVsdGlwbHlUbyhhLHIpOyByZXR1cm4gcjsgfQorCisvLyAocHVibGljKSB0
aGlzIC8gYQorZnVuY3Rpb24gYm5EaXZpZGUoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLmRpdlJl
bVRvKGEscixudWxsKTsgcmV0dXJuIHI7IH0KKworLy8gKHB1YmxpYykgdGhpcyAlIGEKK2Z1bmN0
aW9uIGJuUmVtYWluZGVyKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLG51bGws
cik7IHJldHVybiByOyB9CisKKy8vIChwdWJsaWMpIFt0aGlzL2EsdGhpcyVhXQorZnVuY3Rpb24g
Ym5EaXZpZGVBbmRSZW1haW5kZXIoYSkgeworICB2YXIgcSA9IG5iaSgpLCByID0gbmJpKCk7Cisg
IHRoaXMuZGl2UmVtVG8oYSxxLHIpOworICByZXR1cm4gbmV3IEFycmF5KHEscik7Cit9CisKKy8v
IChwcm90ZWN0ZWQpIHRoaXMgKj0gbiwgdGhpcyA+PSAwLCAxIDwgbiA8IERWCitmdW5jdGlvbiBi
bnBETXVsdGlwbHkobikgeworICB2YXIgdGhpc19hcnJheSA9IHRoaXMuYXJyYXk7CisgIHRoaXNf
YXJyYXlbdGhpcy50XSA9IHRoaXMuYW0oMCxuLTEsdGhpcywwLDAsdGhpcy50KTsKKyAgKyt0aGlz
LnQ7CisgIHRoaXMuY2xhbXAoKTsKK30KKworLy8gKHByb3RlY3RlZCkgdGhpcyArPSBuIDw8IHcg
d29yZHMsIHRoaXMgPj0gMAorZnVuY3Rpb24gYm5wREFkZE9mZnNldChuLHcpIHsKKyAgdmFyIHRo
aXNfYXJyYXkgPSB0aGlzLmFycmF5OworICB3aGlsZSh0aGlzLnQgPD0gdykgdGhpc19hcnJheVt0
aGlzLnQrK10gPSAwOworICB0aGlzX2FycmF5W3ddICs9IG47CisgIHdoaWxlKHRoaXNfYXJyYXlb
d10gPj0gQklfRFYpIHsKKyAgICB0aGlzX2FycmF5W3ddIC09IEJJX0RWOworICAgIGlmKCsrdyA+
PSB0aGlzLnQpIHRoaXNfYXJyYXlbdGhpcy50KytdID0gMDsKKyAgICArK3RoaXNfYXJyYXlbd107
CisgIH0KK30KKworLy8gQSAibnVsbCIgcmVkdWNlcgorZnVuY3Rpb24gTnVsbEV4cCgpIHt9Citm
dW5jdGlvbiBuTm9wKHgpIHsgcmV0dXJuIHg7IH0KK2Z1bmN0aW9uIG5NdWxUbyh4LHkscikgeyB4
Lm11bHRpcGx5VG8oeSxyKTsgfQorZnVuY3Rpb24gblNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIp
OyB9CisKK051bGxFeHAucHJvdG90eXBlLmNvbnZlcnQgPSBuTm9wOworTnVsbEV4cC5wcm90b3R5
cGUucmV2ZXJ0ID0gbk5vcDsKK051bGxFeHAucHJvdG90eXBlLm11bFRvID0gbk11bFRvOworTnVs
bEV4cC5wcm90b3R5cGUuc3FyVG8gPSBuU3FyVG87CisKKy8vIChwdWJsaWMpIHRoaXNeZQorZnVu
Y3Rpb24gYm5Qb3coZSkgeyByZXR1cm4gdGhpcy5leHAoZSxuZXcgTnVsbEV4cCgpKTsgfQorCisv
LyAocHJvdGVjdGVkKSByID0gbG93ZXIgbiB3b3JkcyBvZiAidGhpcyAqIGEiLCBhLnQgPD0gbgor
Ly8gInRoaXMiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS4KK2Z1bmN0
aW9uIGJucE11bHRpcGx5TG93ZXJUbyhhLG4scikgeworICB2YXIgcl9hcnJheSA9IHIuYXJyYXk7
CisgIHZhciBhX2FycmF5ID0gYS5hcnJheTsKKyAgdmFyIGkgPSBNYXRoLm1pbih0aGlzLnQrYS50
LG4pOworICByLnMgPSAwOyAvLyBhc3N1bWVzIGEsdGhpcyA+PSAwCisgIHIudCA9IGk7CisgIHdo
aWxlKGkgPiAwKSByX2FycmF5Wy0taV0gPSAwOworICB2YXIgajsKKyAgZm9yKGogPSByLnQtdGhp
cy50OyBpIDwgajsgKytpKSByX2FycmF5W2krdGhpcy50XSA9IHRoaXMuYW0oMCxhX2FycmF5W2ld
LHIsaSwwLHRoaXMudCk7CisgIGZvcihqID0gTWF0aC5taW4oYS50LG4pOyBpIDwgajsgKytpKSB0
aGlzLmFtKDAsYV9hcnJheVtpXSxyLGksMCxuLWkpOworICByLmNsYW1wKCk7Cit9CisKKy8vIChw
cm90ZWN0ZWQpIHIgPSAidGhpcyAqIGEiIHdpdGhvdXQgbG93ZXIgbiB3b3JkcywgbiA+IDAKKy8v
ICJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUgaWYgYXBwcm9wcmlhdGUuCitmdW5jdGlv
biBibnBNdWx0aXBseVVwcGVyVG8oYSxuLHIpIHsKKyAgdmFyIHJfYXJyYXkgPSByLmFycmF5Owor
ICB2YXIgYV9hcnJheSA9IGEuYXJyYXk7CisgIC0tbjsKKyAgdmFyIGkgPSByLnQgPSB0aGlzLnQr
YS50LW47CisgIHIucyA9IDA7IC8vIGFzc3VtZXMgYSx0aGlzID49IDAKKyAgd2hpbGUoLS1pID49
IDApIHJfYXJyYXlbaV0gPSAwOworICBmb3IoaSA9IE1hdGgubWF4KG4tdGhpcy50LDApOyBpIDwg
YS50OyArK2kpCisgICAgcl9hcnJheVt0aGlzLnQraS1uXSA9IHRoaXMuYW0obi1pLGFfYXJyYXlb
aV0sciwwLDAsdGhpcy50K2ktbik7CisgIHIuY2xhbXAoKTsKKyAgci5kclNoaWZ0VG8oMSxyKTsK
K30KKworLy8gQmFycmV0dCBtb2R1bGFyIHJlZHVjdGlvbgorZnVuY3Rpb24gQmFycmV0dChtKSB7
CisgIC8vIHNldHVwIEJhcnJldHQKKyAgdGhpcy5yMiA9IG5iaSgpOworICB0aGlzLnEzID0gbmJp
KCk7CisgIEJpZ0ludGVnZXIuT05FLmRsU2hpZnRUbygyKm0udCx0aGlzLnIyKTsKKyAgdGhpcy5t
dSA9IHRoaXMucjIuZGl2aWRlKG0pOworICB0aGlzLm0gPSBtOworfQorCitmdW5jdGlvbiBiYXJy
ZXR0Q29udmVydCh4KSB7CisgIGlmKHgucyA8IDAgfHwgeC50ID4gMip0aGlzLm0udCkgcmV0dXJu
IHgubW9kKHRoaXMubSk7CisgIGVsc2UgaWYoeC5jb21wYXJlVG8odGhpcy5tKSA8IDApIHJldHVy
biB4OworICBlbHNlIHsgdmFyIHIgPSBuYmkoKTsgeC5jb3B5VG8ocik7IHRoaXMucmVkdWNlKHIp
OyByZXR1cm4gcjsgfQorfQorCitmdW5jdGlvbiBiYXJyZXR0UmV2ZXJ0KHgpIHsgcmV0dXJuIHg7
IH0KKworLy8geCA9IHggbW9kIG0gKEhBQyAxNC40MikKK2Z1bmN0aW9uIGJhcnJldHRSZWR1Y2Uo
eCkgeworICB4LmRyU2hpZnRUbyh0aGlzLm0udC0xLHRoaXMucjIpOworICBpZih4LnQgPiB0aGlz
Lm0udCsxKSB7IHgudCA9IHRoaXMubS50KzE7IHguY2xhbXAoKTsgfQorICB0aGlzLm11Lm11bHRp
cGx5VXBwZXJUbyh0aGlzLnIyLHRoaXMubS50KzEsdGhpcy5xMyk7CisgIHRoaXMubS5tdWx0aXBs
eUxvd2VyVG8odGhpcy5xMyx0aGlzLm0udCsxLHRoaXMucjIpOworICB3aGlsZSh4LmNvbXBhcmVU
byh0aGlzLnIyKSA8IDApIHguZEFkZE9mZnNldCgxLHRoaXMubS50KzEpOworICB4LnN1YlRvKHRo
aXMucjIseCk7CisgIHdoaWxlKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0aGlz
Lm0seCk7Cit9CisKKy8vIHIgPSB4XjIgbW9kIG07IHggIT0gcgorZnVuY3Rpb24gYmFycmV0dFNx
clRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgfQorCisvLyByID0geCp5
IG1vZCBtOyB4LHkgIT0gcgorZnVuY3Rpb24gYmFycmV0dE11bFRvKHgseSxyKSB7IHgubXVsdGlw
bHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQorCitCYXJyZXR0LnByb3RvdHlwZS5jb252ZXJ0
ID0gYmFycmV0dENvbnZlcnQ7CitCYXJyZXR0LnByb3RvdHlwZS5yZXZlcnQgPSBiYXJyZXR0UmV2
ZXJ0OworQmFycmV0dC5wcm90b3R5cGUucmVkdWNlID0gYmFycmV0dFJlZHVjZTsKK0JhcnJldHQu
cHJvdG90eXBlLm11bFRvID0gYmFycmV0dE11bFRvOworQmFycmV0dC5wcm90b3R5cGUuc3FyVG8g
PSBiYXJyZXR0U3FyVG87CisKKy8vIChwdWJsaWMpIHRoaXNeZSAlIG0gKEhBQyAxNC44NSkKK2Z1
bmN0aW9uIGJuTW9kUG93KGUsbSkgeworICB2YXIgZV9hcnJheSA9IGUuYXJyYXk7CisgIHZhciBp
ID0gZS5iaXRMZW5ndGgoKSwgaywgciA9IG5idigxKSwgejsKKyAgaWYoaSA8PSAwKSByZXR1cm4g
cjsKKyAgZWxzZSBpZihpIDwgMTgpIGsgPSAxOworICBlbHNlIGlmKGkgPCA0OCkgayA9IDM7Cisg
IGVsc2UgaWYoaSA8IDE0NCkgayA9IDQ7CisgIGVsc2UgaWYoaSA8IDc2OCkgayA9IDU7CisgIGVs
c2UgayA9IDY7CisgIGlmKGkgPCA4KQorICAgIHogPSBuZXcgQ2xhc3NpYyhtKTsKKyAgZWxzZSBp
ZihtLmlzRXZlbigpKQorICAgIHogPSBuZXcgQmFycmV0dChtKTsKKyAgZWxzZQorICAgIHogPSBu
ZXcgTW9udGdvbWVyeShtKTsKKworICAvLyBwcmVjb21wdXRhdGlvbgorICB2YXIgZyA9IG5ldyBB
cnJheSgpLCBuID0gMywgazEgPSBrLTEsIGttID0gKDE8PGspLTE7CisgIGdbMV0gPSB6LmNvbnZl
cnQodGhpcyk7CisgIGlmKGsgPiAxKSB7CisgICAgdmFyIGcyID0gbmJpKCk7CisgICAgei5zcXJU
byhnWzFdLGcyKTsKKyAgICB3aGlsZShuIDw9IGttKSB7CisgICAgICBnW25dID0gbmJpKCk7Cisg
ICAgICB6Lm11bFRvKGcyLGdbbi0yXSxnW25dKTsKKyAgICAgIG4gKz0gMjsKKyAgICB9CisgIH0K
KworICB2YXIgaiA9IGUudC0xLCB3LCBpczEgPSB0cnVlLCByMiA9IG5iaSgpLCB0OworICBpID0g
bmJpdHMoZV9hcnJheVtqXSktMTsKKyAgd2hpbGUoaiA+PSAwKSB7CisgICAgaWYoaSA+PSBrMSkg
dyA9IChlX2FycmF5W2pdPj4oaS1rMSkpJmttOworICAgIGVsc2UgeworICAgICAgdyA9IChlX2Fy
cmF5W2pdJigoMTw8KGkrMSkpLTEpKTw8KGsxLWkpOworICAgICAgaWYoaiA+IDApIHcgfD0gZV9h
cnJheVtqLTFdPj4oQklfREIraS1rMSk7CisgICAgfQorCisgICAgbiA9IGs7CisgICAgd2hpbGUo
KHcmMSkgPT0gMCkgeyB3ID4+PSAxOyAtLW47IH0KKyAgICBpZigoaSAtPSBuKSA8IDApIHsgaSAr
PSBCSV9EQjsgLS1qOyB9CisgICAgaWYoaXMxKSB7ICAgLy8gcmV0ID09IDEsIGRvbid0IGJvdGhl
ciBzcXVhcmluZyBvciBtdWx0aXBseWluZyBpdAorICAgICAgZ1t3XS5jb3B5VG8ocik7CisgICAg
ICBpczEgPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB3aGlsZShuID4gMSkgeyB6
LnNxclRvKHIscjIpOyB6LnNxclRvKHIyLHIpOyBuIC09IDI7IH0KKyAgICAgIGlmKG4gPiAwKSB6
LnNxclRvKHIscjIpOyBlbHNlIHsgdCA9IHI7IHIgPSByMjsgcjIgPSB0OyB9CisgICAgICB6Lm11
bFRvKHIyLGdbd10scik7CisgICAgfQorCisgICAgd2hpbGUoaiA+PSAwICYmIChlX2FycmF5W2pd
JigxPDxpKSkgPT0gMCkgeworICAgICAgei5zcXJUbyhyLHIyKTsgdCA9IHI7IHIgPSByMjsgcjIg
PSB0OworICAgICAgaWYoLS1pIDwgMCkgeyBpID0gQklfREItMTsgLS1qOyB9CisgICAgfQorICB9
CisgIHJldHVybiB6LnJldmVydChyKTsKK30KKworLy8gKHB1YmxpYykgZ2NkKHRoaXMsYSkgKEhB
QyAxNC41NCkKK2Z1bmN0aW9uIGJuR0NEKGEpIHsKKyAgdmFyIHggPSAodGhpcy5zPDApP3RoaXMu
bmVnYXRlKCk6dGhpcy5jbG9uZSgpOworICB2YXIgeSA9IChhLnM8MCk/YS5uZWdhdGUoKTphLmNs
b25lKCk7CisgIGlmKHguY29tcGFyZVRvKHkpIDwgMCkgeyB2YXIgdCA9IHg7IHggPSB5OyB5ID0g
dDsgfQorICB2YXIgaSA9IHguZ2V0TG93ZXN0U2V0Qml0KCksIGcgPSB5LmdldExvd2VzdFNldEJp
dCgpOworICBpZihnIDwgMCkgcmV0dXJuIHg7CisgIGlmKGkgPCBnKSBnID0gaTsKKyAgaWYoZyA+
IDApIHsKKyAgICB4LnJTaGlmdFRvKGcseCk7CisgICAgeS5yU2hpZnRUbyhnLHkpOworICB9Cisg
IHdoaWxlKHguc2lnbnVtKCkgPiAwKSB7CisgICAgaWYoKGkgPSB4LmdldExvd2VzdFNldEJpdCgp
KSA+IDApIHguclNoaWZ0VG8oaSx4KTsKKyAgICBpZigoaSA9IHkuZ2V0TG93ZXN0U2V0Qml0KCkp
ID4gMCkgeS5yU2hpZnRUbyhpLHkpOworICAgIGlmKHguY29tcGFyZVRvKHkpID49IDApIHsKKyAg
ICAgIHguc3ViVG8oeSx4KTsKKyAgICAgIHguclNoaWZ0VG8oMSx4KTsKKyAgICB9CisgICAgZWxz
ZSB7CisgICAgICB5LnN1YlRvKHgseSk7CisgICAgICB5LnJTaGlmdFRvKDEseSk7CisgICAgfQor
ICB9CisgIGlmKGcgPiAwKSB5LmxTaGlmdFRvKGcseSk7CisgIHJldHVybiB5OworfQorCisvLyAo
cHJvdGVjdGVkKSB0aGlzICUgbiwgbiA8IDJeMjYKK2Z1bmN0aW9uIGJucE1vZEludChuKSB7Cisg
IHZhciB0aGlzX2FycmF5ID0gdGhpcy5hcnJheTsKKyAgaWYobiA8PSAwKSByZXR1cm4gMDsKKyAg
dmFyIGQgPSBCSV9EViVuLCByID0gKHRoaXMuczwwKT9uLTE6MDsKKyAgaWYodGhpcy50ID4gMCkK
KyAgICBpZihkID09IDApIHIgPSB0aGlzX2FycmF5WzBdJW47CisgICAgZWxzZSBmb3IodmFyIGkg
PSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHIgPSAoZCpyK3RoaXNfYXJyYXlbaV0pJW47CisgIHJl
dHVybiByOworfQorCisvLyAocHVibGljKSAxL3RoaXMgJSBtIChIQUMgMTQuNjEpCitmdW5jdGlv
biBibk1vZEludmVyc2UobSkgeworICB2YXIgYWMgPSBtLmlzRXZlbigpOworICBpZigodGhpcy5p
c0V2ZW4oKSAmJiBhYykgfHwgbS5zaWdudW0oKSA9PSAwKSByZXR1cm4gQmlnSW50ZWdlci5aRVJP
OworICB2YXIgdSA9IG0uY2xvbmUoKSwgdiA9IHRoaXMuY2xvbmUoKTsKKyAgdmFyIGEgPSBuYnYo
MSksIGIgPSBuYnYoMCksIGMgPSBuYnYoMCksIGQgPSBuYnYoMSk7CisgIHdoaWxlKHUuc2lnbnVt
KCkgIT0gMCkgeworICAgIHdoaWxlKHUuaXNFdmVuKCkpIHsKKyAgICAgIHUuclNoaWZ0VG8oMSx1
KTsKKyAgICAgIGlmKGFjKSB7CisgICAgICAgIGlmKCFhLmlzRXZlbigpIHx8ICFiLmlzRXZlbigp
KSB7IGEuYWRkVG8odGhpcyxhKTsgYi5zdWJUbyhtLGIpOyB9CisgICAgICAgIGEuclNoaWZ0VG8o
MSxhKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoIWIuaXNFdmVuKCkpIGIuc3ViVG8obSxiKTsK
KyAgICAgIGIuclNoaWZ0VG8oMSxiKTsKKyAgICB9CisgICAgd2hpbGUodi5pc0V2ZW4oKSkgewor
ICAgICAgdi5yU2hpZnRUbygxLHYpOworICAgICAgaWYoYWMpIHsKKyAgICAgICAgaWYoIWMuaXNF
dmVuKCkgfHwgIWQuaXNFdmVuKCkpIHsgYy5hZGRUbyh0aGlzLGMpOyBkLnN1YlRvKG0sZCk7IH0K
KyAgICAgICAgYy5yU2hpZnRUbygxLGMpOworICAgICAgfQorICAgICAgZWxzZSBpZighZC5pc0V2
ZW4oKSkgZC5zdWJUbyhtLGQpOworICAgICAgZC5yU2hpZnRUbygxLGQpOworICAgIH0KKyAgICBp
Zih1LmNvbXBhcmVUbyh2KSA+PSAwKSB7CisgICAgICB1LnN1YlRvKHYsdSk7CisgICAgICBpZihh
YykgYS5zdWJUbyhjLGEpOworICAgICAgYi5zdWJUbyhkLGIpOworICAgIH0KKyAgICBlbHNlIHsK
KyAgICAgIHYuc3ViVG8odSx2KTsKKyAgICAgIGlmKGFjKSBjLnN1YlRvKGEsYyk7CisgICAgICBk
LnN1YlRvKGIsZCk7CisgICAgfQorICB9CisgIGlmKHYuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05F
KSAhPSAwKSByZXR1cm4gQmlnSW50ZWdlci5aRVJPOworICBpZihkLmNvbXBhcmVUbyhtKSA+PSAw
KSByZXR1cm4gZC5zdWJ0cmFjdChtKTsKKyAgaWYoZC5zaWdudW0oKSA8IDApIGQuYWRkVG8obSxk
KTsgZWxzZSByZXR1cm4gZDsKKyAgaWYoZC5zaWdudW0oKSA8IDApIHJldHVybiBkLmFkZChtKTsg
ZWxzZSByZXR1cm4gZDsKK30KKwordmFyIGxvd3ByaW1lcyA9IFsyLDMsNSw3LDExLDEzLDE3LDE5
LDIzLDI5LDMxLDM3LDQxLDQzLDQ3LDUzLDU5LDYxLDY3LDcxLDczLDc5LDgzLDg5LDk3LDEwMSwx
MDMsMTA3LDEwOSwxMTMsMTI3LDEzMSwxMzcsMTM5LDE0OSwxNTEsMTU3LDE2MywxNjcsMTczLDE3
OSwxODEsMTkxLDE5MywxOTcsMTk5LDIxMSwyMjMsMjI3LDIyOSwyMzMsMjM5LDI0MSwyNTEsMjU3
LDI2MywyNjksMjcxLDI3NywyODEsMjgzLDI5MywzMDcsMzExLDMxMywzMTcsMzMxLDMzNywzNDcs
MzQ5LDM1MywzNTksMzY3LDM3MywzNzksMzgzLDM4OSwzOTcsNDAxLDQwOSw0MTksNDIxLDQzMSw0
MzMsNDM5LDQ0Myw0NDksNDU3LDQ2MSw0NjMsNDY3LDQ3OSw0ODcsNDkxLDQ5OSw1MDMsNTA5XTsK
K3ZhciBscGxpbSA9ICgxPDwyNikvbG93cHJpbWVzW2xvd3ByaW1lcy5sZW5ndGgtMV07CisKKy8v
IChwdWJsaWMpIHRlc3QgcHJpbWFsaXR5IHdpdGggY2VydGFpbnR5ID49IDEtLjVedAorZnVuY3Rp
b24gYm5Jc1Byb2JhYmxlUHJpbWUodCkgeworICB2YXIgaSwgeCA9IHRoaXMuYWJzKCk7CisgIHZh
ciB4X2FycmF5ID0geC5hcnJheTsKKyAgaWYoeC50ID09IDEgJiYgeF9hcnJheVswXSA8PSBsb3dw
cmltZXNbbG93cHJpbWVzLmxlbmd0aC0xXSkgeworICAgIGZvcihpID0gMDsgaSA8IGxvd3ByaW1l
cy5sZW5ndGg7ICsraSkKKyAgICAgIGlmKHhfYXJyYXlbMF0gPT0gbG93cHJpbWVzW2ldKSByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYoeC5pc0V2ZW4oKSkgcmV0dXJu
IGZhbHNlOworICBpID0gMTsKKyAgd2hpbGUoaSA8IGxvd3ByaW1lcy5sZW5ndGgpIHsKKyAgICB2
YXIgbSA9IGxvd3ByaW1lc1tpXSwgaiA9IGkrMTsKKyAgICB3aGlsZShqIDwgbG93cHJpbWVzLmxl
bmd0aCAmJiBtIDwgbHBsaW0pIG0gKj0gbG93cHJpbWVzW2orK107CisgICAgbSA9IHgubW9kSW50
KG0pOworICAgIHdoaWxlKGkgPCBqKSBpZihtJWxvd3ByaW1lc1tpKytdID09IDApIHJldHVybiBm
YWxzZTsKKyAgfQorICByZXR1cm4geC5taWxsZXJSYWJpbih0KTsKK30KKworLy8gKHByb3RlY3Rl
ZCkgdHJ1ZSBpZiBwcm9iYWJseSBwcmltZSAoSEFDIDQuMjQsIE1pbGxlci1SYWJpbikKK2Z1bmN0
aW9uIGJucE1pbGxlclJhYmluKHQpIHsKKyAgdmFyIG4xID0gdGhpcy5zdWJ0cmFjdChCaWdJbnRl
Z2VyLk9ORSk7CisgIHZhciBrID0gbjEuZ2V0TG93ZXN0U2V0Qml0KCk7CisgIGlmKGsgPD0gMCkg
cmV0dXJuIGZhbHNlOworICB2YXIgciA9IG4xLnNoaWZ0UmlnaHQoayk7CisgIHQgPSAodCsxKT4+
MTsKKyAgaWYodCA+IGxvd3ByaW1lcy5sZW5ndGgpIHQgPSBsb3dwcmltZXMubGVuZ3RoOworICB2
YXIgYSA9IG5iaSgpOworICBmb3IodmFyIGkgPSAwOyBpIDwgdDsgKytpKSB7CisgICAgYS5mcm9t
SW50KGxvd3ByaW1lc1tpXSk7CisgICAgdmFyIHkgPSBhLm1vZFBvdyhyLHRoaXMpOworICAgIGlm
KHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSAhPSAwICYmIHkuY29tcGFyZVRvKG4xKSAhPSAw
KSB7CisgICAgICB2YXIgaiA9IDE7CisgICAgICB3aGlsZShqKysgPCBrICYmIHkuY29tcGFyZVRv
KG4xKSAhPSAwKSB7CisgICAgICAgIHkgPSB5Lm1vZFBvd0ludCgyLHRoaXMpOworICAgICAgICBp
Zih5LmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgPT0gMCkgcmV0dXJuIGZhbHNlOworICAgICAg
fQorICAgICAgaWYoeS5jb21wYXJlVG8objEpICE9IDApIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
IH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIHByb3RlY3RlZAorQmlnSW50ZWdlci5wcm90b3R5
cGUuY2h1bmtTaXplID0gYm5wQ2h1bmtTaXplOworQmlnSW50ZWdlci5wcm90b3R5cGUudG9SYWRp
eCA9IGJucFRvUmFkaXg7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tUmFkaXggPSBibnBGcm9t
UmFkaXg7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tTnVtYmVyID0gYm5wRnJvbU51bWJlcjsK
K0JpZ0ludGVnZXIucHJvdG90eXBlLmJpdHdpc2VUbyA9IGJucEJpdHdpc2VUbzsKK0JpZ0ludGVn
ZXIucHJvdG90eXBlLmNoYW5nZUJpdCA9IGJucENoYW5nZUJpdDsKK0JpZ0ludGVnZXIucHJvdG90
eXBlLmFkZFRvID0gYm5wQWRkVG87CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5kTXVsdGlwbHkgPSBi
bnBETXVsdGlwbHk7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0ID0gYm5wREFkZE9m
ZnNldDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5TG93ZXJUbyA9IGJucE11bHRpcGx5
TG93ZXJUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5VXBwZXJUbyA9IGJucE11bHRp
cGx5VXBwZXJUbzsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludCA9IGJucE1vZEludDsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLm1pbGxlclJhYmluID0gYm5wTWlsbGVyUmFiaW47CisKKy8vIHB1
YmxpYworQmlnSW50ZWdlci5wcm90b3R5cGUuY2xvbmUgPSBibkNsb25lOworQmlnSW50ZWdlci5w
cm90b3R5cGUuaW50VmFsdWUgPSBibkludFZhbHVlOworQmlnSW50ZWdlci5wcm90b3R5cGUuYnl0
ZVZhbHVlID0gYm5CeXRlVmFsdWU7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaG9ydFZhbHVlID0g
Ym5TaG9ydFZhbHVlOworQmlnSW50ZWdlci5wcm90b3R5cGUuc2lnbnVtID0gYm5TaWdOdW07CitC
aWdJbnRlZ2VyLnByb3RvdHlwZS50b0J5dGVBcnJheSA9IGJuVG9CeXRlQXJyYXk7CitCaWdJbnRl
Z2VyLnByb3RvdHlwZS5lcXVhbHMgPSBibkVxdWFsczsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm1p
biA9IGJuTWluOworQmlnSW50ZWdlci5wcm90b3R5cGUubWF4ID0gYm5NYXg7CitCaWdJbnRlZ2Vy
LnByb3RvdHlwZS5hbmQgPSBibkFuZDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gYm5PcjsK
K0JpZ0ludGVnZXIucHJvdG90eXBlLnhvciA9IGJuWG9yOworQmlnSW50ZWdlci5wcm90b3R5cGUu
YW5kTm90ID0gYm5BbmROb3Q7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBibk5vdDsKK0Jp
Z0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IGJuU2hpZnRMZWZ0OworQmlnSW50ZWdlci5w
cm90b3R5cGUuc2hpZnRSaWdodCA9IGJuU2hpZnRSaWdodDsKK0JpZ0ludGVnZXIucHJvdG90eXBl
LmdldExvd2VzdFNldEJpdCA9IGJuR2V0TG93ZXN0U2V0Qml0OworQmlnSW50ZWdlci5wcm90b3R5
cGUuYml0Q291bnQgPSBibkJpdENvdW50OworQmlnSW50ZWdlci5wcm90b3R5cGUudGVzdEJpdCA9
IGJuVGVzdEJpdDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLnNldEJpdCA9IGJuU2V0Qml0OworQmln
SW50ZWdlci5wcm90b3R5cGUuY2xlYXJCaXQgPSBibkNsZWFyQml0OworQmlnSW50ZWdlci5wcm90
b3R5cGUuZmxpcEJpdCA9IGJuRmxpcEJpdDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGJu
QWRkOworQmlnSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3QgPSBiblN1YnRyYWN0OworQmlnSW50
ZWdlci5wcm90b3R5cGUubXVsdGlwbHkgPSBibk11bHRpcGx5OworQmlnSW50ZWdlci5wcm90b3R5
cGUuZGl2aWRlID0gYm5EaXZpZGU7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5yZW1haW5kZXIgPSBi
blJlbWFpbmRlcjsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmRpdmlkZUFuZFJlbWFpbmRlciA9IGJu
RGl2aWRlQW5kUmVtYWluZGVyOworQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gYm5Nb2RQ
b3c7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2RJbnZlcnNlID0gYm5Nb2RJbnZlcnNlOworQmln
SW50ZWdlci5wcm90b3R5cGUucG93ID0gYm5Qb3c7CitCaWdJbnRlZ2VyLnByb3RvdHlwZS5nY2Qg
PSBibkdDRDsKK0JpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJvYmFibGVQcmltZSA9IGJuSXNQcm9i
YWJsZVByaW1lOworCisvLyBCaWdJbnRlZ2VyIGludGVyZmFjZXMgbm90IGltcGxlbWVudGVkIGlu
IGpzYm46CisKKy8vIEJpZ0ludGVnZXIoaW50IHNpZ251bSwgYnl0ZVtdIG1hZ25pdHVkZSkKKy8v
IGRvdWJsZSBkb3VibGVWYWx1ZSgpCisvLyBmbG9hdCBmbG9hdFZhbHVlKCkKKy8vIGludCBoYXNo
Q29kZSgpCisvLyBsb25nIGxvbmdWYWx1ZSgpCisvLyBzdGF0aWMgQmlnSW50ZWdlciB2YWx1ZU9m
KGxvbmcgdmFsKQorLy8gcHJuZzQuanMgLSB1c2VzIEFyY2ZvdXIgYXMgYSBQUk5HCisKK2Z1bmN0
aW9uIEFyY2ZvdXIoKSB7CisgIHRoaXMuaSA9IDA7CisgIHRoaXMuaiA9IDA7CisgIHRoaXMuUyA9
IG5ldyBBcnJheSgpOworfQorCisvLyBJbml0aWFsaXplIGFyY2ZvdXIgY29udGV4dCBmcm9tIGtl
eSwgYW4gYXJyYXkgb2YgaW50cywgZWFjaCBmcm9tIFswLi4yNTVdCitmdW5jdGlvbiBBUkM0aW5p
dChrZXkpIHsKKyAgdmFyIGksIGosIHQ7CisgIGZvcihpID0gMDsgaSA8IDI1NjsgKytpKQorICAg
IHRoaXMuU1tpXSA9IGk7CisgIGogPSAwOworICBmb3IoaSA9IDA7IGkgPCAyNTY7ICsraSkgewor
ICAgIGogPSAoaiArIHRoaXMuU1tpXSArIGtleVtpICUga2V5Lmxlbmd0aF0pICYgMjU1OworICAg
IHQgPSB0aGlzLlNbaV07CisgICAgdGhpcy5TW2ldID0gdGhpcy5TW2pdOworICAgIHRoaXMuU1tq
XSA9IHQ7CisgIH0KKyAgdGhpcy5pID0gMDsKKyAgdGhpcy5qID0gMDsKK30KKworZnVuY3Rpb24g
QVJDNG5leHQoKSB7CisgIHZhciB0OworICB0aGlzLmkgPSAodGhpcy5pICsgMSkgJiAyNTU7Cisg
IHRoaXMuaiA9ICh0aGlzLmogKyB0aGlzLlNbdGhpcy5pXSkgJiAyNTU7CisgIHQgPSB0aGlzLlNb
dGhpcy5pXTsKKyAgdGhpcy5TW3RoaXMuaV0gPSB0aGlzLlNbdGhpcy5qXTsKKyAgdGhpcy5TW3Ro
aXMual0gPSB0OworICByZXR1cm4gdGhpcy5TWyh0ICsgdGhpcy5TW3RoaXMuaV0pICYgMjU1XTsK
K30KKworQXJjZm91ci5wcm90b3R5cGUuaW5pdCA9IEFSQzRpbml0OworQXJjZm91ci5wcm90b3R5
cGUubmV4dCA9IEFSQzRuZXh0OworCisvLyBQbHVnIGluIHlvdXIgUk5HIGNvbnN0cnVjdG9yIGhl
cmUKK2Z1bmN0aW9uIHBybmdfbmV3c3RhdGUoKSB7CisgIHJldHVybiBuZXcgQXJjZm91cigpOwor
fQorCisvLyBQb29sIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQgYW5kIGdyZWF0ZXIgdGhh
biAzMi4KKy8vIEFuIGFycmF5IG9mIGJ5dGVzIHRoZSBzaXplIG9mIHRoZSBwb29sIHdpbGwgYmUg
cGFzc2VkIHRvIGluaXQoKQordmFyIHJuZ19wc2l6ZSA9IDI1NjsKKy8vIFJhbmRvbSBudW1iZXIg
Z2VuZXJhdG9yIC0gcmVxdWlyZXMgYSBQUk5HIGJhY2tlbmQsIGUuZy4gcHJuZzQuanMKKworLy8g
Rm9yIGJlc3QgcmVzdWx0cywgcHV0IGNvZGUgbGlrZQorLy8gPGJvZHkgb25DbGljaz0ncm5nX3Nl
ZWRfdGltZSgpOycgb25LZXlQcmVzcz0ncm5nX3NlZWRfdGltZSgpOyc+CisvLyBpbiB5b3VyIG1h
aW4gSFRNTCBkb2N1bWVudC4KKwordmFyIHJuZ19zdGF0ZTsKK3ZhciBybmdfcG9vbDsKK3ZhciBy
bmdfcHB0cjsKKworLy8gTWl4IGluIGEgMzItYml0IGludGVnZXIgaW50byB0aGUgcG9vbAorZnVu
Y3Rpb24gcm5nX3NlZWRfaW50KHgpIHsKKyAgcm5nX3Bvb2xbcm5nX3BwdHIrK10gXj0geCAmIDI1
NTsKKyAgcm5nX3Bvb2xbcm5nX3BwdHIrK10gXj0gKHggPj4gOCkgJiAyNTU7CisgIHJuZ19wb29s
W3JuZ19wcHRyKytdIF49ICh4ID4+IDE2KSAmIDI1NTsKKyAgcm5nX3Bvb2xbcm5nX3BwdHIrK10g
Xj0gKHggPj4gMjQpICYgMjU1OworICBpZihybmdfcHB0ciA+PSBybmdfcHNpemUpIHJuZ19wcHRy
IC09IHJuZ19wc2l6ZTsKK30KKworLy8gTWl4IGluIHRoZSBjdXJyZW50IHRpbWUgKHcvbWlsbGlz
ZWNvbmRzKSBpbnRvIHRoZSBwb29sCitmdW5jdGlvbiBybmdfc2VlZF90aW1lKCkgeworICAvLyBV
c2UgcHJlLWNvbXB1dGVkIGRhdGUgdG8gYXZvaWQgbWFraW5nIHRoZSBiZW5jaG1hcmsgCisgIC8v
IHJlc3VsdHMgZGVwZW5kZW50IG9uIHRoZSBjdXJyZW50IGRhdGUuCisgIHJuZ19zZWVkX2ludCgx
MTIyOTI2OTg5NDg3KTsKK30KKworLy8gSW5pdGlhbGl6ZSB0aGUgcG9vbCB3aXRoIGp1bmsgaWYg
bmVlZGVkLgoraWYocm5nX3Bvb2wgPT0gbnVsbCkgeworICBybmdfcG9vbCA9IG5ldyBBcnJheSgp
OworICBybmdfcHB0ciA9IDA7CisgIHZhciB0OworICB3aGlsZShybmdfcHB0ciA8IHJuZ19wc2l6
ZSkgeyAgLy8gZXh0cmFjdCBzb21lIHJhbmRvbW5lc3MgZnJvbSBNYXRoLnJhbmRvbSgpCisgICAg
dCA9IE1hdGguZmxvb3IoNjU1MzYgKiBNYXRoLnJhbmRvbSgpKTsKKyAgICBybmdfcG9vbFtybmdf
cHB0cisrXSA9IHQgPj4+IDg7CisgICAgcm5nX3Bvb2xbcm5nX3BwdHIrK10gPSB0ICYgMjU1Owor
ICB9CisgIHJuZ19wcHRyID0gMDsKKyAgcm5nX3NlZWRfdGltZSgpOworICAvL3JuZ19zZWVkX2lu
dCh3aW5kb3cuc2NyZWVuWCk7CisgIC8vcm5nX3NlZWRfaW50KHdpbmRvdy5zY3JlZW5ZKTsKK30K
KworZnVuY3Rpb24gcm5nX2dldF9ieXRlKCkgeworICBpZihybmdfc3RhdGUgPT0gbnVsbCkgewor
ICAgIHJuZ19zZWVkX3RpbWUoKTsKKyAgICBybmdfc3RhdGUgPSBwcm5nX25ld3N0YXRlKCk7Cisg
ICAgcm5nX3N0YXRlLmluaXQocm5nX3Bvb2wpOworICAgIGZvcihybmdfcHB0ciA9IDA7IHJuZ19w
cHRyIDwgcm5nX3Bvb2wubGVuZ3RoOyArK3JuZ19wcHRyKQorICAgICAgcm5nX3Bvb2xbcm5nX3Bw
dHJdID0gMDsKKyAgICBybmdfcHB0ciA9IDA7CisgICAgLy9ybmdfcG9vbCA9IG51bGw7CisgIH0K
KyAgLy8gVE9ETzogYWxsb3cgcmVzZWVkaW5nIGFmdGVyIGZpcnN0IHJlcXVlc3QKKyAgcmV0dXJu
IHJuZ19zdGF0ZS5uZXh0KCk7Cit9CisKK2Z1bmN0aW9uIHJuZ19nZXRfYnl0ZXMoYmEpIHsKKyAg
dmFyIGk7CisgIGZvcihpID0gMDsgaSA8IGJhLmxlbmd0aDsgKytpKSBiYVtpXSA9IHJuZ19nZXRf
Ynl0ZSgpOworfQorCitmdW5jdGlvbiBTZWN1cmVSYW5kb20oKSB7fQorCitTZWN1cmVSYW5kb20u
cHJvdG90eXBlLm5leHRCeXRlcyA9IHJuZ19nZXRfYnl0ZXM7CisvLyBEZXBlbmRzIG9uIGpzYm4u
anMgYW5kIHJuZy5qcworCisvLyBjb252ZXJ0IGEgKGhleCkgc3RyaW5nIHRvIGEgYmlnbnVtIG9i
amVjdAorZnVuY3Rpb24gcGFyc2VCaWdJbnQoc3RyLHIpIHsKKyAgcmV0dXJuIG5ldyBCaWdJbnRl
Z2VyKHN0cixyKTsKK30KKworZnVuY3Rpb24gbGluZWJyayhzLG4pIHsKKyAgdmFyIHJldCA9ICIi
OworICB2YXIgaSA9IDA7CisgIHdoaWxlKGkgKyBuIDwgcy5sZW5ndGgpIHsKKyAgICByZXQgKz0g
cy5zdWJzdHJpbmcoaSxpK24pICsgIlxuIjsKKyAgICBpICs9IG47CisgIH0KKyAgcmV0dXJuIHJl
dCArIHMuc3Vic3RyaW5nKGkscy5sZW5ndGgpOworfQorCitmdW5jdGlvbiBieXRlMkhleChiKSB7
CisgIGlmKGIgPCAweDEwKQorICAgIHJldHVybiAiMCIgKyBiLnRvU3RyaW5nKDE2KTsKKyAgZWxz
ZQorICAgIHJldHVybiBiLnRvU3RyaW5nKDE2KTsKK30KKworLy8gUEtDUyMxICh0eXBlIDIsIHJh
bmRvbSkgcGFkIGlucHV0IHN0cmluZyBzIHRvIG4gYnl0ZXMsIGFuZCByZXR1cm4gYSBiaWdpbnQK
K2Z1bmN0aW9uIHBrY3MxcGFkMihzLG4pIHsKKyAgaWYobiA8IHMubGVuZ3RoICsgMTEpIHsKKyAg
ICBhbGVydCgiTWVzc2FnZSB0b28gbG9uZyBmb3IgUlNBIik7CisgICAgcmV0dXJuIG51bGw7Cisg
IH0KKyAgdmFyIGJhID0gbmV3IEFycmF5KCk7CisgIHZhciBpID0gcy5sZW5ndGggLSAxOworICB3
aGlsZShpID49IDAgJiYgbiA+IDApIGJhWy0tbl0gPSBzLmNoYXJDb2RlQXQoaS0tKTsKKyAgYmFb
LS1uXSA9IDA7CisgIHZhciBybmcgPSBuZXcgU2VjdXJlUmFuZG9tKCk7CisgIHZhciB4ID0gbmV3
IEFycmF5KCk7CisgIHdoaWxlKG4gPiAyKSB7IC8vIHJhbmRvbSBub24temVybyBwYWQKKyAgICB4
WzBdID0gMDsKKyAgICB3aGlsZSh4WzBdID09IDApIHJuZy5uZXh0Qnl0ZXMoeCk7CisgICAgYmFb
LS1uXSA9IHhbMF07CisgIH0KKyAgYmFbLS1uXSA9IDI7CisgIGJhWy0tbl0gPSAwOworICByZXR1
cm4gbmV3IEJpZ0ludGVnZXIoYmEpOworfQorCisvLyAiZW1wdHkiIFJTQSBrZXkgY29uc3RydWN0
b3IKK2Z1bmN0aW9uIFJTQUtleSgpIHsKKyAgdGhpcy5uID0gbnVsbDsKKyAgdGhpcy5lID0gMDsK
KyAgdGhpcy5kID0gbnVsbDsKKyAgdGhpcy5wID0gbnVsbDsKKyAgdGhpcy5xID0gbnVsbDsKKyAg
dGhpcy5kbXAxID0gbnVsbDsKKyAgdGhpcy5kbXExID0gbnVsbDsKKyAgdGhpcy5jb2VmZiA9IG51
bGw7Cit9CisKKy8vIFNldCB0aGUgcHVibGljIGtleSBmaWVsZHMgTiBhbmQgZSBmcm9tIGhleCBz
dHJpbmdzCitmdW5jdGlvbiBSU0FTZXRQdWJsaWMoTixFKSB7CisgIGlmKE4gIT0gbnVsbCAmJiBF
ICE9IG51bGwgJiYgTi5sZW5ndGggPiAwICYmIEUubGVuZ3RoID4gMCkgeworICAgIHRoaXMubiA9
IHBhcnNlQmlnSW50KE4sMTYpOworICAgIHRoaXMuZSA9IHBhcnNlSW50KEUsMTYpOworICB9Cisg
IGVsc2UKKyAgICBhbGVydCgiSW52YWxpZCBSU0EgcHVibGljIGtleSIpOworfQorCisvLyBQZXJm
b3JtIHJhdyBwdWJsaWMgb3BlcmF0aW9uIG9uICJ4IjogcmV0dXJuIHheZSAobW9kIG4pCitmdW5j
dGlvbiBSU0FEb1B1YmxpYyh4KSB7CisgIHJldHVybiB4Lm1vZFBvd0ludCh0aGlzLmUsIHRoaXMu
bik7Cit9CisKKy8vIFJldHVybiB0aGUgUEtDUyMxIFJTQSBlbmNyeXB0aW9uIG9mICJ0ZXh0IiBh
cyBhbiBldmVuLWxlbmd0aCBoZXggc3RyaW5nCitmdW5jdGlvbiBSU0FFbmNyeXB0KHRleHQpIHsK
KyAgdmFyIG0gPSBwa2NzMXBhZDIodGV4dCwodGhpcy5uLmJpdExlbmd0aCgpKzcpPj4zKTsKKyAg
aWYobSA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgdmFyIGMgPSB0aGlzLmRvUHVibGljKG0pOwor
ICBpZihjID09IG51bGwpIHJldHVybiBudWxsOworICB2YXIgaCA9IGMudG9TdHJpbmcoMTYpOwor
ICBpZigoaC5sZW5ndGggJiAxKSA9PSAwKSByZXR1cm4gaDsgZWxzZSByZXR1cm4gIjAiICsgaDsK
K30KKworLy8gUmV0dXJuIHRoZSBQS0NTIzEgUlNBIGVuY3J5cHRpb24gb2YgInRleHQiIGFzIGEg
QmFzZTY0LWVuY29kZWQgc3RyaW5nCisvL2Z1bmN0aW9uIFJTQUVuY3J5cHRCNjQodGV4dCkgewor
Ly8gIHZhciBoID0gdGhpcy5lbmNyeXB0KHRleHQpOworLy8gIGlmKGgpIHJldHVybiBoZXgyYjY0
KGgpOyBlbHNlIHJldHVybiBudWxsOworLy99CisKKy8vIHByb3RlY3RlZAorUlNBS2V5LnByb3Rv
dHlwZS5kb1B1YmxpYyA9IFJTQURvUHVibGljOworCisvLyBwdWJsaWMKK1JTQUtleS5wcm90b3R5
cGUuc2V0UHVibGljID0gUlNBU2V0UHVibGljOworUlNBS2V5LnByb3RvdHlwZS5lbmNyeXB0ID0g
UlNBRW5jcnlwdDsKKy8vUlNBS2V5LnByb3RvdHlwZS5lbmNyeXB0X2I2NCA9IFJTQUVuY3J5cHRC
NjQ7CisvLyBEZXBlbmRzIG9uIHJzYS5qcyBhbmQganNibjIuanMKKworLy8gVW5kbyBQS0NTIzEg
KHR5cGUgMiwgcmFuZG9tKSBwYWRkaW5nIGFuZCwgaWYgdmFsaWQsIHJldHVybiB0aGUgcGxhaW50
ZXh0CitmdW5jdGlvbiBwa2NzMXVucGFkMihkLG4pIHsKKyAgdmFyIGIgPSBkLnRvQnl0ZUFycmF5
KCk7CisgIHZhciBpID0gMDsKKyAgd2hpbGUoaSA8IGIubGVuZ3RoICYmIGJbaV0gPT0gMCkgKytp
OworICBpZihiLmxlbmd0aC1pICE9IG4tMSB8fCBiW2ldICE9IDIpCisgICAgcmV0dXJuIG51bGw7
CisgICsraTsKKyAgd2hpbGUoYltpXSAhPSAwKQorICAgIGlmKCsraSA+PSBiLmxlbmd0aCkgcmV0
dXJuIG51bGw7CisgIHZhciByZXQgPSAiIjsKKyAgd2hpbGUoKytpIDwgYi5sZW5ndGgpCisgICAg
cmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYltpXSk7CisgIHJldHVybiByZXQ7Cit9CisKKy8v
IFNldCB0aGUgcHJpdmF0ZSBrZXkgZmllbGRzIE4sIGUsIGFuZCBkIGZyb20gaGV4IHN0cmluZ3MK
K2Z1bmN0aW9uIFJTQVNldFByaXZhdGUoTixFLEQpIHsKKyAgaWYoTiAhPSBudWxsICYmIEUgIT0g
bnVsbCAmJiBOLmxlbmd0aCA+IDAgJiYgRS5sZW5ndGggPiAwKSB7CisgICAgdGhpcy5uID0gcGFy
c2VCaWdJbnQoTiwxNik7CisgICAgdGhpcy5lID0gcGFyc2VJbnQoRSwxNik7CisgICAgdGhpcy5k
ID0gcGFyc2VCaWdJbnQoRCwxNik7CisgIH0KKyAgZWxzZQorICAgIGFsZXJ0KCJJbnZhbGlkIFJT
QSBwcml2YXRlIGtleSIpOworfQorCisvLyBTZXQgdGhlIHByaXZhdGUga2V5IGZpZWxkcyBOLCBl
LCBkIGFuZCBDUlQgcGFyYW1zIGZyb20gaGV4IHN0cmluZ3MKK2Z1bmN0aW9uIFJTQVNldFByaXZh
dGVFeChOLEUsRCxQLFEsRFAsRFEsQykgeworICBpZihOICE9IG51bGwgJiYgRSAhPSBudWxsICYm
IE4ubGVuZ3RoID4gMCAmJiBFLmxlbmd0aCA+IDApIHsKKyAgICB0aGlzLm4gPSBwYXJzZUJpZ0lu
dChOLDE2KTsKKyAgICB0aGlzLmUgPSBwYXJzZUludChFLDE2KTsKKyAgICB0aGlzLmQgPSBwYXJz
ZUJpZ0ludChELDE2KTsKKyAgICB0aGlzLnAgPSBwYXJzZUJpZ0ludChQLDE2KTsKKyAgICB0aGlz
LnEgPSBwYXJzZUJpZ0ludChRLDE2KTsKKyAgICB0aGlzLmRtcDEgPSBwYXJzZUJpZ0ludChEUCwx
Nik7CisgICAgdGhpcy5kbXExID0gcGFyc2VCaWdJbnQoRFEsMTYpOworICAgIHRoaXMuY29lZmYg
PSBwYXJzZUJpZ0ludChDLDE2KTsKKyAgfQorICBlbHNlCisgICAgYWxlcnQoIkludmFsaWQgUlNB
IHByaXZhdGUga2V5Iik7Cit9CisKKy8vIEdlbmVyYXRlIGEgbmV3IHJhbmRvbSBwcml2YXRlIGtl
eSBCIGJpdHMgbG9uZywgdXNpbmcgcHVibGljIGV4cHQgRQorZnVuY3Rpb24gUlNBR2VuZXJhdGUo
QixFKSB7CisgIHZhciBybmcgPSBuZXcgU2VjdXJlUmFuZG9tKCk7CisgIHZhciBxcyA9IEI+PjE7
CisgIHRoaXMuZSA9IHBhcnNlSW50KEUsMTYpOworICB2YXIgZWUgPSBuZXcgQmlnSW50ZWdlcihF
LDE2KTsKKyAgZm9yKDs7KSB7CisgICAgZm9yKDs7KSB7CisgICAgICB0aGlzLnAgPSBuZXcgQmln
SW50ZWdlcihCLXFzLDEscm5nKTsKKyAgICAgIGlmKHRoaXMucC5zdWJ0cmFjdChCaWdJbnRlZ2Vy
Lk9ORSkuZ2NkKGVlKS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpID09IDAgJiYgdGhpcy5wLmlz
UHJvYmFibGVQcmltZSgxMCkpIGJyZWFrOworICAgIH0KKyAgICBmb3IoOzspIHsKKyAgICAgIHRo
aXMucSA9IG5ldyBCaWdJbnRlZ2VyKHFzLDEscm5nKTsKKyAgICAgIGlmKHRoaXMucS5zdWJ0cmFj
dChCaWdJbnRlZ2VyLk9ORSkuZ2NkKGVlKS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpID09IDAg
JiYgdGhpcy5xLmlzUHJvYmFibGVQcmltZSgxMCkpIGJyZWFrOworICAgIH0KKyAgICBpZih0aGlz
LnAuY29tcGFyZVRvKHRoaXMucSkgPD0gMCkgeworICAgICAgdmFyIHQgPSB0aGlzLnA7CisgICAg
ICB0aGlzLnAgPSB0aGlzLnE7CisgICAgICB0aGlzLnEgPSB0OworICAgIH0KKyAgICB2YXIgcDEg
PSB0aGlzLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOworICAgIHZhciBxMSA9IHRoaXMucS5z
dWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSk7CisgICAgdmFyIHBoaSA9IHAxLm11bHRpcGx5KHExKTsK
KyAgICBpZihwaGkuZ2NkKGVlKS5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpID09IDApIHsKKyAg
ICAgIHRoaXMubiA9IHRoaXMucC5tdWx0aXBseSh0aGlzLnEpOworICAgICAgdGhpcy5kID0gZWUu
bW9kSW52ZXJzZShwaGkpOworICAgICAgdGhpcy5kbXAxID0gdGhpcy5kLm1vZChwMSk7CisgICAg
ICB0aGlzLmRtcTEgPSB0aGlzLmQubW9kKHExKTsKKyAgICAgIHRoaXMuY29lZmYgPSB0aGlzLnEu
bW9kSW52ZXJzZSh0aGlzLnApOworICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CisKKy8vIFBl
cmZvcm0gcmF3IHByaXZhdGUgb3BlcmF0aW9uIG9uICJ4IjogcmV0dXJuIHheZCAobW9kIG4pCitm
dW5jdGlvbiBSU0FEb1ByaXZhdGUoeCkgeworICBpZih0aGlzLnAgPT0gbnVsbCB8fCB0aGlzLnEg
PT0gbnVsbCkKKyAgICByZXR1cm4geC5tb2RQb3codGhpcy5kLCB0aGlzLm4pOworCisgIC8vIFRP
RE86IHJlLWNhbGN1bGF0ZSBhbnkgbWlzc2luZyBDUlQgcGFyYW1zCisgIHZhciB4cCA9IHgubW9k
KHRoaXMucCkubW9kUG93KHRoaXMuZG1wMSwgdGhpcy5wKTsKKyAgdmFyIHhxID0geC5tb2QodGhp
cy5xKS5tb2RQb3codGhpcy5kbXExLCB0aGlzLnEpOworCisgIHdoaWxlKHhwLmNvbXBhcmVUbyh4
cSkgPCAwKQorICAgIHhwID0geHAuYWRkKHRoaXMucCk7CisgIHJldHVybiB4cC5zdWJ0cmFjdCh4
cSkubXVsdGlwbHkodGhpcy5jb2VmZikubW9kKHRoaXMucCkubXVsdGlwbHkodGhpcy5xKS5hZGQo
eHEpOworfQorCisvLyBSZXR1cm4gdGhlIFBLQ1MjMSBSU0EgZGVjcnlwdGlvbiBvZiAiY3RleHQi
LgorLy8gImN0ZXh0IiBpcyBhbiBldmVuLWxlbmd0aCBoZXggc3RyaW5nIGFuZCB0aGUgb3V0cHV0
IGlzIGEgcGxhaW4gc3RyaW5nLgorZnVuY3Rpb24gUlNBRGVjcnlwdChjdGV4dCkgeworICB2YXIg
YyA9IHBhcnNlQmlnSW50KGN0ZXh0LCAxNik7CisgIHZhciBtID0gdGhpcy5kb1ByaXZhdGUoYyk7
CisgIGlmKG0gPT0gbnVsbCkgcmV0dXJuIG51bGw7CisgIHJldHVybiBwa2NzMXVucGFkMihtLCAo
dGhpcy5uLmJpdExlbmd0aCgpKzcpPj4zKTsKK30KKworLy8gUmV0dXJuIHRoZSBQS0NTIzEgUlNB
IGRlY3J5cHRpb24gb2YgImN0ZXh0Ii4KKy8vICJjdGV4dCIgaXMgYSBCYXNlNjQtZW5jb2RlZCBz
dHJpbmcgYW5kIHRoZSBvdXRwdXQgaXMgYSBwbGFpbiBzdHJpbmcuCisvL2Z1bmN0aW9uIFJTQUI2
NERlY3J5cHQoY3RleHQpIHsKKy8vICB2YXIgaCA9IGI2NHRvaGV4KGN0ZXh0KTsKKy8vICBpZiho
KSByZXR1cm4gdGhpcy5kZWNyeXB0KGgpOyBlbHNlIHJldHVybiBudWxsOworLy99CisKKy8vIHBy
b3RlY3RlZAorUlNBS2V5LnByb3RvdHlwZS5kb1ByaXZhdGUgPSBSU0FEb1ByaXZhdGU7CisKKy8v
IHB1YmxpYworUlNBS2V5LnByb3RvdHlwZS5zZXRQcml2YXRlID0gUlNBU2V0UHJpdmF0ZTsKK1JT
QUtleS5wcm90b3R5cGUuc2V0UHJpdmF0ZUV4ID0gUlNBU2V0UHJpdmF0ZUV4OworUlNBS2V5LnBy
b3RvdHlwZS5nZW5lcmF0ZSA9IFJTQUdlbmVyYXRlOworUlNBS2V5LnByb3RvdHlwZS5kZWNyeXB0
ID0gUlNBRGVjcnlwdDsKKy8vUlNBS2V5LnByb3RvdHlwZS5iNjRfZGVjcnlwdCA9IFJTQUI2NERl
Y3J5cHQ7CisKKwordmFyIG5WYWx1ZT0iYTUyNjE5Mzk5NzU5NDhiYjdhNThkZmZlNWZmNTRlNjVm
MDQ5OGY5MTc1ZjVhMDkyODg4MTBiODk3NTg3MWU5OWFmM2I1ZGQ5NDA1N2IwZmMwNzUzNWY1Zjk3
NDQ0NTA0ZmEzNTE2OWQ0NjFkMGQzMGNmMDE5MmUzMDc3MjdjMDY1MTY4Yzc4ODc3MWM1NjFhOTQw
MGZiNDkxNzVlOWU2YWE0ZTIzZmUxMWFmNjllOTQxMmRkMjNiMGNiNjY4NGM0YzI0MjliY2UxMzll
ODQ4YWIyNmQwODI5MDczMzUxZjRhY2QzNjA3NGVhZmQwMzZhNWViODMzNTlkMmE2OThkMyI7Cit2
YXIgZVZhbHVlPSIxMDAwMSI7Cit2YXIgZFZhbHVlPSI4ZTk5MTJmNmQzNjQ1ODk0ZThkMzhjYjU4
YzBkYjgxZmY1MTZjZjRjN2U1YTE0YzdmMWVkZGIxNDU5ZDJjZGVkNGQ4ZDI5M2ZjOTdhZWU2YWVm
Yjg2MTg1OWM4YjZhM2QxZGZlNzEwNDYzZTFmOWRkYzcyMDQ4YzA5NzUxOTcxYzRhNTgwYWE1MWVi
NTIzMzU3YTNjYzQ4ZDMxY2ZhZDFkNGExNjUwNjZlZDkyZDQ3NDhmYjY1NzEyMTFkYTVjYjE0YmMx
MWI2ZTJkZjdjMWE1NTllNmQ1YWMxY2Q1Yzk0NzAzYTIyODkxNDY0ZmJhMjNkMGQ5NjUwODYyNzdh
MTYxIjsKK3ZhciBwVmFsdWU9ImQwOTBjZTU4YTkyYzc1MjMzYTY0ODZjYjBhOTIwOWJmMzU4M2I2
NGY1NDBjNzZmNTI5NGJiOTdkMjg1ZWVkMzNhZWMyMjBiZGUxNGIyNDE3OTUxMTc4YWMxNTJjZWFi
NmRhNzA5MDkwNWI0NzgxOTU0OThiMzUyMDQ4ZjE1ZTdkIjsKK3ZhciBxVmFsdWU9ImNhYjU3NWRj
NjUyYmI2NmRmMTVhMDM1OTYwOWQ1MWQxZGIxODQ3NTBjMDBjNjY5OGI5MGVmMzQ2NWM5OTY1NTEw
M2VkYmYwZDU0YzU2YWVjMGNlM2M0ZDIyNTkyMzM4MDkyYTEyNmEwY2M0OWY2NWE0YTMwZDIyMmI0
MTFlNThmIjsKK3ZhciBkbXAxVmFsdWU9IjFhMjRiY2E4ZTI3M2RmMmYwZTQ3YzE5OWJiZjY3ODYw
NGU3ZGY3MjE1NDgwYzc3YzhkYjM5ZjQ5YjAwMGNlMmNmNzUwMDAzOGFjZmZmNTQzM2I3ZDU4MmEw
MWYxODI2ZTZmNGQ0MmUxYzU3ZjVlMWZlZjdiMTJhYWJjNTlmZDI1IjsKK3ZhciBkbXExVmFsdWU9
IjNkMDY5ODJlZmJiZTQ3MzM5ZTFmNmQzNmIxMjE2YjhhNzQxZDQxMGIwYzY2MmY1NGY3MTE4YjI3
YjlhNGVjOWQ5MTQzMzdlYjM5ODQxZDg2NjZmMzAzNDQwOGNmOTRmNWI2MmYxMWM0MDJmYzk5NGZl
MTVhMDU0OTMxNTBkOWZkIjsKK3ZhciBjb2VmZlZhbHVlPSIzYTNlNzMxYWNkODk2MGI3ZmY5ZWI4
MWE3ZmY5M2JkMWNmYTc0Y2JkNTY5ODdkYjU4YjQ1OTRmYjA5YzA5MDg0ZGIxNzM0YzgxNDNmOThi
NjAyYjk4MWFhYTkyNDNjYTI4ZGViNjliNWIyODBlZThkY2VlMGZkMjYyNWU1MzI1MCI7CisKK3Nl
dHVwRW5naW5lKGFtMywgMjgpOworCit2YXIgVEVYVCA9ICJUaGUgcXVpY2sgYnJvd24gZm94IGp1
bXBlZCBvdmVyIHRoZSBleHRyZW1lbHkgbGF6eSBmcm9nISAiICsKKyAgICAiTm93IGlzIHRoZSB0
aW1lIGZvciBhbGwgZ29vZCBtZW4gdG8gY29tZSB0byB0aGUgcGFydHkuIjsKK3ZhciBlbmNyeXB0
ZWQ7CisKK2Z1bmN0aW9uIGVuY3J5cHQoKSB7CisgIHZhciBSU0EgPSBuZXcgUlNBS2V5KCk7Cisg
IFJTQS5zZXRQdWJsaWMoblZhbHVlLCBlVmFsdWUpOworICBSU0Euc2V0UHJpdmF0ZUV4KG5WYWx1
ZSwgZVZhbHVlLCBkVmFsdWUsIHBWYWx1ZSwgcVZhbHVlLCBkbXAxVmFsdWUsIGRtcTFWYWx1ZSwg
Y29lZmZWYWx1ZSk7CisgIGVuY3J5cHRlZCA9IFJTQS5lbmNyeXB0KFRFWFQpOworfQorCitmdW5j
dGlvbiBkZWNyeXB0KCkgeworICB2YXIgUlNBID0gbmV3IFJTQUtleSgpOworICBSU0Euc2V0UHVi
bGljKG5WYWx1ZSwgZVZhbHVlKTsKKyAgUlNBLnNldFByaXZhdGVFeChuVmFsdWUsIGVWYWx1ZSwg
ZFZhbHVlLCBwVmFsdWUsIHFWYWx1ZSwgZG1wMVZhbHVlLCBkbXExVmFsdWUsIGNvZWZmVmFsdWUp
OworICB2YXIgZGVjcnlwdGVkID0gUlNBLmRlY3J5cHQoZW5jcnlwdGVkKTsKKyAgaWYgKGRlY3J5
cHRlZCAhPSBURVhUKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJDcnlwdG8gb3BlcmF0aW9uIGZh
aWxlZCIpOworICB9Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgODsgKytpKSB7CisgIGVuY3J5
cHQoKTsKKyAgZGVjcnlwdCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy92OC1kZWx0YWJsdWUtc3RyaWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy92OC1kZWx0YWJsdWUtc3RyaWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiYWRi
ZTk0N2M0NGQwZTE0ZWYwYzBiYjg5NmY2MmI5ZTE1ZDU5N2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Y4LWRlbHRhYmx1ZS1zdHJpY3QuanMK
QEAgLTAsMCArMSw4NzggQEAKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQ29weXJpZ2h0IDIwMDggdGhl
IFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAx
OTk2IEpvaG4gTWFsb25leSBhbmQgTWFyaW8gV29sY3prby4KKworLy8gVGhpcyBwcm9ncmFtIGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8v
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLy8gKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKy8vCisvLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisvLyBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv
biwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisvLyBUaGlzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBE
ZWx0YUJsdWUgYmVuY2htYXJrIGlzIGRlcml2ZWQKKy8vIGZyb20gdGhlIFNtYWxsdGFsayBpbXBs
ZW1lbnRhdGlvbiBieSBKb2huIE1hbG9uZXkgYW5kIE1hcmlvCisvLyBXb2xjemtvLiBTb21lIHBh
cnRzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGRpcmVjdGx5LCB3aGVyZWFzCisvLyBvdGhlcnMgaGF2
ZSBiZWVuIG1vZGlmaWVkIG1vcmUgYWdncmVzaXZlbHkgdG8gbWFrZSBpdCBmZWVsCisvLyBtb3Jl
IGxpa2UgYSBKYXZhU2NyaXB0IHByb2dyYW0uCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxl
bWVudGF0aW9uIG9mIHRoZSBEZWx0YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0
aG0sIGFzIGRlc2NyaWJlZCBpbjoKKyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFu
IEluY3JlbWVudGFsIENvbnN0cmFpbnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4g
RnJlZW1hbi1CZW5zb24gYW5kIEpvaG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVu
aWNhdGlvbnMgb2YgdGhlIEFDTSwKKyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBv
ZiBXYXNoaW5ndG9uIFRSIDg5LTA4LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsg
aXMgd3JpdHRlbiBpbiBhIGdyb3Rlc3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQg
bW9kZWwgaXMgYnVpbHQgYnkgc2lkZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2
ZSBrZXB0IGl0IHRoaXMgd2F5IHRvIGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBv
cmlnaW5hbAorICogaW1wbGVtZW50YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQg
ICBNIG8gZCBlIGwgLS0tICovCisKK09iamVjdC5wcm90b3R5cGUuaW5oZXJpdHNGcm9tID0gZnVu
Y3Rpb24gKHNodXBlcikgeworICBmdW5jdGlvbiBJbmhlcml0ZXIoKSB7IH0KKyAgSW5oZXJpdGVy
LnByb3RvdHlwZSA9IHNodXBlci5wcm90b3R5cGU7CisgIHRoaXMucHJvdG90eXBlID0gbmV3IElu
aGVyaXRlcigpOworICB0aGlzLnN1cGVyQ29uc3RydWN0b3IgPSBzaHVwZXI7Cit9CisKK2Z1bmN0
aW9uIE9yZGVyZWRDb2xsZWN0aW9uKCkgeworICB0aGlzLmVsbXMgPSBuZXcgQXJyYXkoKTsKK30K
KworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlbG0pIHsKKyAg
dGhpcy5lbG1zLnB1c2goZWxtKTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmF0
ID0gZnVuY3Rpb24gKGluZGV4KSB7CisgIHJldHVybiB0aGlzLmVsbXNbaW5kZXhdOworfQorCitP
cmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
IHRoaXMuZWxtcy5sZW5ndGg7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1v
dmVGaXJzdCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZWxtcy5wb3AoKTsKK30KKwor
T3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChlbG0pIHsKKyAg
dmFyIGluZGV4ID0gMCwgc2tpcHBlZCA9IDA7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5l
bG1zLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHZhbHVlID0gdGhpcy5lbG1zW2ldOworICAgIGlm
ICh2YWx1ZSAhPSBlbG0pIHsKKyAgICAgIHRoaXMuZWxtc1tpbmRleF0gPSB2YWx1ZTsKKyAgICAg
IGluZGV4Kys7CisgICAgfSBlbHNlIHsKKyAgICAgIHNraXBwZWQrKzsKKyAgICB9CisgIH0KKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBza2lwcGVkOyBpKyspCisgICAgdGhpcy5lbG1zLnBvcCgpOwor
fQorCisvKiAtLS0gKgorICogUyB0IHIgZSBuIGcgdCBoCisgKiAtLS0gKi8KKworLyoqCisgKiBT
dHJlbmd0aHMgYXJlIHVzZWQgdG8gbWVhc3VyZSB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiBj
b25zdHJhaW50cy4KKyAqIE5ldyBzdHJlbmd0aHMgbWF5IGJlIGluc2VydGVkIGluIHRoZSBzdHJl
bmd0aCBoaWVyYXJjaHkgd2l0aG91dAorICogZGlzcnVwdGluZyBjdXJyZW50IGNvbnN0cmFpbnRz
LiAgU3RyZW5ndGhzIGNhbm5vdCBiZSBjcmVhdGVkIG91dHNpZGUKKyAqIHRoaXMgY2xhc3MsIHNv
IHBvaW50ZXIgY29tcGFyaXNvbiBjYW4gYmUgdXNlZCBmb3IgdmFsdWUgY29tcGFyaXNvbi4KKyAq
LworZnVuY3Rpb24gU3RyZW5ndGgoc3RyZW5ndGhWYWx1ZSwgbmFtZSkgeworICB0aGlzLnN0cmVu
Z3RoVmFsdWUgPSBzdHJlbmd0aFZhbHVlOworICB0aGlzLm5hbWUgPSBuYW1lOworfQorCitTdHJl
bmd0aC5zdHJvbmdlciA9IGZ1bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3Ro
VmFsdWUgPCBzMi5zdHJlbmd0aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXIgPSBmdW5jdGlv
biAoczEsIHMyKSB7CisgIHJldHVybiBzMS5zdHJlbmd0aFZhbHVlID4gczIuc3RyZW5ndGhWYWx1
ZTsKK30KKworU3RyZW5ndGgud2Vha2VzdE9mID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1
cm4gdGhpcy53ZWFrZXIoczEsIHMyKSA/IHMxIDogczI7Cit9CisKK1N0cmVuZ3RoLnN0cm9uZ2Vz
dCA9IGZ1bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHRoaXMuc3Ryb25nZXIoczEsIHMyKSA/
IHMxIDogczI7Cit9CisKK1N0cmVuZ3RoLnByb3RvdHlwZS5uZXh0V2Vha2VyID0gZnVuY3Rpb24g
KCkgeworICBzd2l0Y2ggKHRoaXMuc3RyZW5ndGhWYWx1ZSkgeworICAgIGNhc2UgMDogcmV0dXJu
IFN0cmVuZ3RoLldFQUtFU1Q7CisgICAgY2FzZSAxOiByZXR1cm4gU3RyZW5ndGguV0VBS19ERUZB
VUxUOworICAgIGNhc2UgMjogcmV0dXJuIFN0cmVuZ3RoLk5PUk1BTDsKKyAgICBjYXNlIDM6IHJl
dHVybiBTdHJlbmd0aC5TVFJPTkdfREVGQVVMVDsKKyAgICBjYXNlIDQ6IHJldHVybiBTdHJlbmd0
aC5QUkVGRVJSRUQ7CisgICAgY2FzZSA1OiByZXR1cm4gU3RyZW5ndGguUkVRVUlSRUQ7CisgIH0K
K30KKworLy8gU3RyZW5ndGggY29uc3RhbnRzLgorU3RyZW5ndGguUkVRVUlSRUQgICAgICAgID0g
bmV3IFN0cmVuZ3RoKDAsICJyZXF1aXJlZCIpOworU3RyZW5ndGguU1RPTkdfUFJFRkVSUkVEID0g
bmV3IFN0cmVuZ3RoKDEsICJzdHJvbmdQcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlBSRUZFUlJFRCAg
ICAgICA9IG5ldyBTdHJlbmd0aCgyLCAicHJlZmVycmVkIik7CitTdHJlbmd0aC5TVFJPTkdfREVG
QVVMVCAgPSBuZXcgU3RyZW5ndGgoMywgInN0cm9uZ0RlZmF1bHQiKTsKK1N0cmVuZ3RoLk5PUk1B
TCAgICAgICAgICA9IG5ldyBTdHJlbmd0aCg0LCAibm9ybWFsIik7CitTdHJlbmd0aC5XRUFLX0RF
RkFVTFQgICAgPSBuZXcgU3RyZW5ndGgoNSwgIndlYWtEZWZhdWx0Iik7CitTdHJlbmd0aC5XRUFL
RVNUICAgICAgICAgPSBuZXcgU3RyZW5ndGgoNiwgIndlYWtlc3QiKTsKKworLyogLS0tICoKKyAq
IEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIEFuIGFic3RyYWN0IGNs
YXNzIHJlcHJlc2VudGluZyBhIHN5c3RlbS1tYWludGFpbmFibGUgcmVsYXRpb25zaGlwCisgKiAo
b3IgImNvbnN0cmFpbnQiKSBiZXR3ZWVuIGEgc2V0IG9mIHZhcmlhYmxlcy4gQSBjb25zdHJhaW50
IHN1cHBsaWVzCisgKiBhIHN0cmVuZ3RoIGluc3RhbmNlIHZhcmlhYmxlOyBjb25jcmV0ZSBzdWJj
bGFzc2VzIHByb3ZpZGUgYSBtZWFucworICogb2Ygc3RvcmluZyB0aGUgY29uc3RyYWluZWQgdmFy
aWFibGVzIGFuZCBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZAorICogdG8gcmVwcmVzZW50IGEg
Y29uc3RyYWludC4KKyAqLworZnVuY3Rpb24gQ29uc3RyYWludChzdHJlbmd0aCkgeworICB0aGlz
LnN0cmVuZ3RoID0gc3RyZW5ndGg7Cit9CisKKy8qKgorICogQWN0aXZhdGUgdGhpcyBjb25zdHJh
aW50IGFuZCBhdHRlbXB0IHRvIHNhdGlzZnkgaXQuCisgKi8KK0NvbnN0cmFpbnQucHJvdG90eXBl
LmFkZENvbnN0cmFpbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuYWRkVG9HcmFwaCgpOworICBw
bGFubmVyLmluY3JlbWVudGFsQWRkKHRoaXMpOworfQorCisvKioKKyAqIEF0dGVtcHQgdG8gZmlu
ZCBhIHdheSB0byBlbmZvcmNlIHRoaXMgY29uc3RyYWludC4gSWYgc3VjY2Vzc2Z1bCwKKyAqIHJl
Y29yZCB0aGUgc29sdXRpb24sIHBlcmhhcHMgbW9kaWZ5aW5nIHRoZSBjdXJyZW50IGRhdGFmbG93
CisgKiBncmFwaC4gQW5zd2VyIHRoZSBjb25zdHJhaW50IHRoYXQgdGhpcyBjb25zdHJhaW50IG92
ZXJyaWRlcywgaWYKKyAqIHRoZXJlIGlzIG9uZSwgb3IgbmlsLCBpZiB0aGVyZSBpc24ndC4KKyAq
IEFzc3VtZTogSSBhbSBub3QgYWxyZWFkeSBzYXRpc2ZpZWQuCisgKi8KK0NvbnN0cmFpbnQucHJv
dG90eXBlLnNhdGlzZnkgPSBmdW5jdGlvbiAobWFyaykgeworICB0aGlzLmNob29zZU1ldGhvZCht
YXJrKTsKKyAgaWYgKCF0aGlzLmlzU2F0aXNmaWVkKCkpIHsKKyAgICBpZiAodGhpcy5zdHJlbmd0
aCA9PSBTdHJlbmd0aC5SRVFVSVJFRCkKKyAgICAgIGFsZXJ0KCJDb3VsZCBub3Qgc2F0aXNmeSBh
IHJlcXVpcmVkIGNvbnN0cmFpbnQhIik7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgdGhpcy5t
YXJrSW5wdXRzKG1hcmspOworICB2YXIgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAgdmFyIG92ZXJy
aWRkZW4gPSBvdXQuZGV0ZXJtaW5lZEJ5OworICBpZiAob3ZlcnJpZGRlbiAhPSBudWxsKSBvdmVy
cmlkZGVuLm1hcmtVbnNhdGlzZmllZCgpOworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gdGhpczsKKyAg
aWYgKCFwbGFubmVyLmFkZFByb3BhZ2F0ZSh0aGlzLCBtYXJrKSkKKyAgICBhbGVydCgiQ3ljbGUg
ZW5jb3VudGVyZWQiKTsKKyAgb3V0Lm1hcmsgPSBtYXJrOworICByZXR1cm4gb3ZlcnJpZGRlbjsK
K30KKworQ29uc3RyYWludC5wcm90b3R5cGUuZGVzdHJveUNvbnN0cmFpbnQgPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLmlzU2F0aXNmaWVkKCkpIHBsYW5uZXIuaW5jcmVtZW50YWxSZW1vdmUo
dGhpcyk7CisgIGVsc2UgdGhpcy5yZW1vdmVGcm9tR3JhcGgoKTsKK30KKworLyoqCisgKiBOb3Jt
YWwgY29uc3RyYWludHMgYXJlIG5vdCBpbnB1dCBjb25zdHJhaW50cy4gIEFuIGlucHV0IGNvbnN0
cmFpbnQKKyAqIGlzIG9uZSB0aGF0IGRlcGVuZHMgb24gZXh0ZXJuYWwgc3RhdGUsIHN1Y2ggYXMg
dGhlIG1vdXNlLCB0aGUKKyAqIGtleWJvcmQsIGEgY2xvY2ssIG9yIHNvbWUgYXJiaXRyYXR5IHBp
ZWNlIG9mIGltcGVyYXRpdmUgY29kZS4KKyAqLworQ29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1
dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIGZhbHNlOworfQorCisvKiAtLS0gKgorICogVSBu
IGEgciB5ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQWJzdHJh
Y3Qgc3VwZXJjbGFzcyBmb3IgY29uc3RyYWludHMgaGF2aW5nIGEgc2luZ2xlIHBvc3NpYmxlIG91
dHB1dAorICogdmFyaWFibGUuCisgKi8KK2Z1bmN0aW9uIFVuYXJ5Q29uc3RyYWludCh2LCBzdHJl
bmd0aCkgeworICBVbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHN0
cmVuZ3RoKTsKKyAgdGhpcy5teU91dHB1dCA9IHY7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7
CisgIHRoaXMuYWRkQ29uc3RyYWludCgpOworfQorCitVbmFyeUNvbnN0cmFpbnQuaW5oZXJpdHNG
cm9tKENvbnN0cmFpbnQpOworCisvKioKKyAqIEFkZHMgdGhpcyBjb25zdHJhaW50IHRvIHRoZSBj
b25zdHJhaW50IGdyYXBoCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFw
aCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5teU91dHB1dC5hZGRDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCisvKioKKyAqIERlY2lkZXMgaWYgdGhpcyBj
b25zdHJhaW50IGNhbiBiZSBzYXRpc2ZpZWQgYW5kIHJlY29yZHMgdGhhdAorICogZGVjaXNpb24u
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kID0gZnVuY3Rpb24g
KG1hcmspIHsKKyAgdGhpcy5zYXRpc2ZpZWQgPSAodGhpcy5teU91dHB1dC5tYXJrICE9IG1hcmsp
CisgICAgJiYgU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy5teU91dHB1dC53
YWxrU3RyZW5ndGgpOworfQorCisvKioKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGNvbnN0cmFp
bnQgaXMgc2F0aXNmaWVkIGluIHRoZSBjdXJyZW50IHNvbHV0aW9uLgorICovCitVbmFyeUNvbnN0
cmFpbnQucHJvdG90eXBlLmlzU2F0aXNmaWVkID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhp
cy5zYXRpc2ZpZWQ7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya0lucHV0cyA9
IGZ1bmN0aW9uIChtYXJrKSB7CisgIC8vIGhhcyBubyBpbnB1dHMKK30KKworLyoqCisgKiBSZXR1
cm5zIHRoZSBjdXJyZW50IG91dHB1dCB2YXJpYWJsZS4KKyAqLworVW5hcnlDb25zdHJhaW50LnBy
b3RvdHlwZS5vdXRwdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLm15T3V0cHV0Owor
fQorCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBm
bGFnLCBhbmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQg
b3V0cHV0IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMg
c2F0aXNmaWVkLgorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0g
ZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LndhbGtTdHJlbmd0aCA9IHRoaXMuc3RyZW5n
dGg7CisgIHRoaXMubXlPdXRwdXQuc3RheSA9ICF0aGlzLmlzSW5wdXQoKTsKKyAgaWYgKHRoaXMu
bXlPdXRwdXQuc3RheSkgdGhpcy5leGVjdXRlKCk7IC8vIFN0YXkgb3B0aW1pemF0aW9uCit9CisK
Ky8qKgorICogUmVjb3JkcyB0aGF0IHRoaXMgY29uc3RyYWludCBpcyB1bnNhdGlzZmllZAorICov
CitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgp
IHsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3Rv
dHlwZS5pbnB1dHNLbm93biA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRydWU7Cit9CisKK1Vu
YXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkgewor
ICBpZiAodGhpcy5teU91dHB1dCAhPSBudWxsKSB0aGlzLm15T3V0cHV0LnJlbW92ZUNvbnN0cmFp
bnQodGhpcyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisgKiBT
IHQgYSB5ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogVmFyaWFi
bGVzIHRoYXQgc2hvdWxkLCB3aXRoIHNvbWUgbGV2ZWwgb2YgcHJlZmVyZW5jZSwgc3RheSB0aGUg
c2FtZS4KKyAqIFBsYW5uZXJzIG1heSBleHBsb2l0IHRoZSBmYWN0IHRoYXQgaW5zdGFuY2VzLCBp
ZiBzYXRpc2ZpZWQsIHdpbGwgbm90CisgKiBjaGFuZ2UgdGhlaXIgb3V0cHV0IGR1cmluZyBwbGFu
IGV4ZWN1dGlvbi4gIFRoaXMgaXMgY2FsbGVkICJzdGF5CisgKiBvcHRpbWl6YXRpb24iLgorICov
CitmdW5jdGlvbiBTdGF5Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgU3RheUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK1N0YXlDb25zdHJhaW50Lmlu
aGVyaXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCitTdGF5Q29uc3RyYWludC5wcm90b3R5cGUu
ZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgLy8gU3RheSBjb25zdHJhaW50cyBkbyBub3RoaW5n
Cit9CisKKy8qIC0tLSAqCisgKiBFIGQgaSB0ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0t
ICovCisKKy8qKgorICogQSB1bmFyeSBpbnB1dCBjb25zdHJhaW50IHVzZWQgdG8gbWFyayBhIHZh
cmlhYmxlIHRoYXQgdGhlIGNsaWVudAorICogd2lzaGVzIHRvIGNoYW5nZS4KKyAqLworZnVuY3Rp
b24gRWRpdENvbnN0cmFpbnQodiwgc3RyKSB7CisgIEVkaXRDb25zdHJhaW50LnN1cGVyQ29uc3Ry
dWN0b3IuY2FsbCh0aGlzLCB2LCBzdHIpOworfQorCitFZGl0Q29uc3RyYWludC5pbmhlcml0c0Zy
b20oVW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBFZGl0cyBpbmRpY2F0ZSB0aGF0IGEgdmFy
aWFibGUgaXMgdG8gYmUgY2hhbmdlZCBieSBpbXBlcmF0aXZlIGNvZGUuCisgKi8KK0VkaXRDb25z
dHJhaW50LnByb3RvdHlwZS5pc0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsK
K30KKworRWRpdENvbnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7Cisg
IC8vIEVkaXQgY29uc3RyYWludHMgZG8gbm90aGluZworfQorCisvKiAtLS0gKgorICogQiBpIG4g
YSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKwordmFyIERpcmVjdGlvbiA9
IG5ldyBPYmplY3QoKTsKK0RpcmVjdGlvbi5OT05FICAgICA9IDA7CitEaXJlY3Rpb24uRk9SV0FS
RCAgPSAxOworRGlyZWN0aW9uLkJBQ0tXQVJEID0gLTE7CisKKy8qKgorICogQWJzdHJhY3Qgc3Vw
ZXJjbGFzcyBmb3IgY29uc3RyYWludHMgaGF2aW5nIHR3byBwb3NzaWJsZSBvdXRwdXQKKyAqIHZh
cmlhYmxlcy4KKyAqLworZnVuY3Rpb24gQmluYXJ5Q29uc3RyYWludCh2YXIxLCB2YXIyLCBzdHJl
bmd0aCkgeworICBCaW5hcnlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCBz
dHJlbmd0aCk7CisgIHRoaXMudjEgPSB2YXIxOworICB0aGlzLnYyID0gdmFyMjsKKyAgdGhpcy5k
aXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisK
K0JpbmFyeUNvbnN0cmFpbnQuaW5oZXJpdHNGcm9tKENvbnN0cmFpbnQpOworCisvKioKKyAqIERl
Y2lkZXMgaWYgdGhpcyBjb25zdHJhaW50IGNhbiBiZSBzYXRpc2ZpZWQgYW5kIHdoaWNoIHdheSBp
dAorICogc2hvdWxkIGZsb3cgYmFzZWQgb24gdGhlIHJlbGF0aXZlIHN0cmVuZ3RoIG9mIHRoZSB2
YXJpYWJsZXMgcmVsYXRlZCwKKyAqIGFuZCByZWNvcmQgdGhhdCBkZWNpc2lvbi4KKyAqLworQmlu
YXJ5Q29uc3RyYWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kID0gZnVuY3Rpb24gKG1hcmspIHsK
KyAgaWYgKHRoaXMudjEubWFyayA9PSBtYXJrKSB7CisgICAgdGhpcy5kaXJlY3Rpb24gPSAodGhp
cy52Mi5tYXJrICE9IG1hcmsgJiYgU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhp
cy52Mi53YWxrU3RyZW5ndGgpKQorICAgICAgPyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBE
aXJlY3Rpb24uTk9ORTsKKyAgfQorICBpZiAodGhpcy52Mi5tYXJrID09IG1hcmspIHsKKyAgICB0
aGlzLmRpcmVjdGlvbiA9ICh0aGlzLnYxLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdl
cih0aGlzLnN0cmVuZ3RoLCB0aGlzLnYxLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlv
bi5CQUNLV0FSRAorICAgICAgOiBEaXJlY3Rpb24uTk9ORTsKKyAgfQorICBpZiAoU3RyZW5ndGgu
d2Vha2VyKHRoaXMudjEud2Fsa1N0cmVuZ3RoLCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpIHsKKyAg
ICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMu
djEud2Fsa1N0cmVuZ3RoKQorICAgICAgPyBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgICAgIDogRGly
ZWN0aW9uLk5PTkU7CisgIH0gZWxzZSB7CisgICAgdGhpcy5kaXJlY3Rpb24gPSBTdHJlbmd0aC5z
dHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLnYyLndhbGtTdHJlbmd0aCkKKyAgICAgID8gRGly
ZWN0aW9uLkZPUldBUkQKKyAgICAgIDogRGlyZWN0aW9uLkJBQ0tXQVJECisgIH0KK30KKworLyoq
CisgKiBBZGQgdGhpcyBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW50IGdyYXBoCisgKi8KK0Jp
bmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmFkZFRvR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIHRo
aXMudjEuYWRkQ29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy52Mi5hZGRDb25zdHJhaW50KHRoaXMp
OworICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKioKKyAqIEFuc3dl
ciB0cnVlIGlmIHRoaXMgY29uc3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29s
dXRpb24uCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlzU2F0aXNmaWVkID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gIT0gRGlyZWN0aW9uLk5PTkU7Cit9
CisKKy8qKgorICogTWFyayB0aGUgaW5wdXQgdmFyaWFibGUgd2l0aCB0aGUgZ2l2ZW4gbWFyay4K
KyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uICht
YXJrKSB7CisgIHRoaXMuaW5wdXQoKS5tYXJrID0gbWFyazsKK30KKworLyoqCisgKiBSZXR1cm5z
IHRoZSBjdXJyZW50IGlucHV0IHZhcmlhYmxlCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90
eXBlLmlucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0aW9uID09IERp
cmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjEgOiB0aGlzLnYyOworfQorCisvKioKKyAqIFJldHVy
bnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJv
dG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLmRpcmVjdGlvbiA9
PSBEaXJlY3Rpb24uRk9SV0FSRCkgPyB0aGlzLnYyIDogdGhpcy52MTsKK30KKworLyoqCisgKiBD
YWxjdWxhdGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aCwgdGhlIHN0YXkgZmxhZywgYW5kLCBpZiBp
dCBpcworICogJ3N0YXknLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IG91dHB1dCBvZiB0aGlz
CisgKiBjb25zdHJhaW50LiBBc3N1bWUgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZC4KKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxhdGUgPSBmdW5jdGlvbiAoKSB7
CisgIHZhciBpaG4gPSB0aGlzLmlucHV0KCksIG91dCA9IHRoaXMub3V0cHV0KCk7CisgIG91dC53
YWxrU3RyZW5ndGggPSBTdHJlbmd0aC53ZWFrZXN0T2YodGhpcy5zdHJlbmd0aCwgaWhuLndhbGtT
dHJlbmd0aCk7CisgIG91dC5zdGF5ID0gaWhuLnN0YXk7CisgIGlmIChvdXQuc3RheSkgdGhpcy5l
eGVjdXRlKCk7Cit9CisKKy8qKgorICogUmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhpcyBjb25zdHJh
aW50IGlzIHVuc2F0aXNmaWVkLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJr
VW5zYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9u
Lk5PTkU7Cit9CisKK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlucHV0c0tub3duID0gZnVu
Y3Rpb24gKG1hcmspIHsKKyAgdmFyIGkgPSB0aGlzLmlucHV0KCk7CisgIHJldHVybiBpLm1hcmsg
PT0gbWFyayB8fCBpLnN0YXkgfHwgaS5kZXRlcm1pbmVkQnkgPT0gbnVsbDsKK30KKworQmluYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkgeworICBp
ZiAodGhpcy52MSAhPSBudWxsKSB0aGlzLnYxLnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7CisgIGlm
ICh0aGlzLnYyICE9IG51bGwpIHRoaXMudjIucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgdGhp
cy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKK30KKworLyogLS0tICoKKyAqIFMgYyBhIGwg
ZSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIFJlbGF0ZXMgdHdv
IHZhcmlhYmxlcyBieSB0aGUgbGluZWFyIHNjYWxpbmcgcmVsYXRpb25zaGlwOiAidjIgPQorICog
KHYxICogc2NhbGUpICsgb2Zmc2V0Ii4gRWl0aGVyIHYxIG9yIHYyIG1heSBiZSBjaGFuZ2VkIHRv
IG1haW50YWluCisgKiB0aGlzIHJlbGF0aW9uc2hpcCBidXQgdGhlIHNjYWxlIGZhY3RvciBhbmQg
b2Zmc2V0IGFyZSBjb25zaWRlcmVkCisgKiByZWFkLW9ubHkuCisgKi8KK2Z1bmN0aW9uIFNjYWxl
Q29uc3RyYWludChzcmMsIHNjYWxlLCBvZmZzZXQsIGRlc3QsIHN0cmVuZ3RoKSB7CisgIHRoaXMu
ZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7CisgIHRoaXMuc2NhbGUgPSBzY2FsZTsKKyAgdGhp
cy5vZmZzZXQgPSBvZmZzZXQ7CisgIFNjYWxlQ29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNh
bGwodGhpcywgc3JjLCBkZXN0LCBzdHJlbmd0aCk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5pbmhl
cml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFp
bnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGguCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5
cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29u
c3RydWN0b3IucHJvdG90eXBlLmFkZFRvR3JhcGguY2FsbCh0aGlzKTsKKyAgdGhpcy5zY2FsZS5h
ZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLm9mZnNldC5hZGRDb25zdHJhaW50KHRoaXMpOwor
fQorCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCA9IGZ1bmN0aW9u
ICgpIHsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbW92
ZUZyb21HcmFwaC5jYWxsKHRoaXMpOworICBpZiAodGhpcy5zY2FsZSAhPSBudWxsKSB0aGlzLnNj
YWxlLnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7CisgIGlmICh0aGlzLm9mZnNldCAhPSBudWxsKSB0
aGlzLm9mZnNldC5yZW1vdmVDb25zdHJhaW50KHRoaXMpOworfQorCitTY2FsZUNvbnN0cmFpbnQu
cHJvdG90eXBlLm1hcmtJbnB1dHMgPSBmdW5jdGlvbiAobWFyaykgeworICBTY2FsZUNvbnN0cmFp
bnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUubWFya0lucHV0cy5jYWxsKHRoaXMsIG1hcmsp
OworICB0aGlzLnNjYWxlLm1hcmsgPSB0aGlzLm9mZnNldC5tYXJrID0gbWFyazsKK30KKworLyoq
CisgKiBFbmZvcmNlIHRoaXMgY29uc3RyYWludC4gQXNzdW1lIHRoYXQgaXQgaXMgc2F0aXNmaWVk
LgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLmRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRk9SV0FSRCkgeworICAgIHRoaXMu
djIudmFsdWUgPSB0aGlzLnYxLnZhbHVlICogdGhpcy5zY2FsZS52YWx1ZSArIHRoaXMub2Zmc2V0
LnZhbHVlOworICB9IGVsc2UgeworICAgIHRoaXMudjEudmFsdWUgPSAodGhpcy52Mi52YWx1ZSAt
IHRoaXMub2Zmc2V0LnZhbHVlKSAvIHRoaXMuc2NhbGUudmFsdWU7CisgIH0KK30KKworLyoqCisg
KiBDYWxjdWxhdGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aCwgdGhlIHN0YXkgZmxhZywgYW5kLCBp
ZiBpdCBpcworICogJ3N0YXknLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IG91dHB1dCBvZiB0
aGlzIGNvbnN0cmFpbnQuIEFzc3VtZQorICogdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZC4K
KyAqLworU2NhbGVDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAgb3V0
LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4ud2Fs
a1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheSAmJiB0aGlzLnNjYWxlLnN0YXkgJiYg
dGhpcy5vZmZzZXQuc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsKK30KKwor
LyogLS0tICoKKyAqIEUgcSB1IGEgbCBpIHQgIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAt
LS0gKi8KKworLyoqCisgKiBDb25zdHJhaW5zIHR3byB2YXJpYWJsZXMgdG8gaGF2ZSB0aGUgc2Ft
ZSB2YWx1ZS4KKyAqLworZnVuY3Rpb24gRXF1YWxpdHlDb25zdHJhaW50KHZhcjEsIHZhcjIsIHN0
cmVuZ3RoKSB7CisgIEVxdWFsaXR5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgdmFyMSwgdmFyMiwgc3RyZW5ndGgpOworfQorCitFcXVhbGl0eUNvbnN0cmFpbnQuaW5oZXJp
dHNGcm9tKEJpbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJh
aW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRpc2ZpZWQuCisgKi8KK0VxdWFsaXR5Q29uc3RyYWlu
dC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5vdXRwdXQoKS52YWx1
ZSA9IHRoaXMuaW5wdXQoKS52YWx1ZTsKK30KKworLyogLS0tICoKKyAqIFYgYSByIGkgYSBiIGwg
ZQorICogLS0tICovCisKKy8qKgorICogQSBjb25zdHJhaW5lZCB2YXJpYWJsZS4gSW4gYWRkaXRp
b24gdG8gaXRzIHZhbHVlLCBpdCBtYWludGFpbiB0aGUKKyAqIHN0cnVjdHVyZSBvZiB0aGUgY29u
c3RyYWludCBncmFwaCwgdGhlIGN1cnJlbnQgZGF0YWZsb3cgZ3JhcGgsIGFuZAorICogdmFyaW91
cyBwYXJhbWV0ZXJzIG9mIGludGVyZXN0IHRvIHRoZSBEZWx0YUJsdWUgaW5jcmVtZW50YWwKKyAq
IGNvbnN0cmFpbnQgc29sdmVyLgorICoqLworZnVuY3Rpb24gVmFyaWFibGUobmFtZSwgaW5pdGlh
bFZhbHVlKSB7CisgIHRoaXMudmFsdWUgPSBpbml0aWFsVmFsdWUgfHwgMDsKKyAgdGhpcy5jb25z
dHJhaW50cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICB0aGlzLmRldGVybWluZWRCeSA9
IG51bGw7CisgIHRoaXMubWFyayA9IDA7CisgIHRoaXMud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgu
V0VBS0VTVDsKKyAgdGhpcy5zdGF5ID0gdHJ1ZTsKKyAgdGhpcy5uYW1lID0gbmFtZTsKK30KKwor
LyoqCisgKiBBZGQgdGhlIGdpdmVuIGNvbnN0cmFpbnQgdG8gdGhlIHNldCBvZiBhbGwgY29uc3Ry
YWludHMgdGhhdCByZWZlcgorICogdGhpcyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90
eXBlLmFkZENvbnN0cmFpbnQgPSBmdW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLmFk
ZChjKTsKK30KKworLyoqCisgKiBSZW1vdmVzIGFsbCB0cmFjZXMgb2YgYyBmcm9tIHRoaXMgdmFy
aWFibGUuCisgKi8KK1ZhcmlhYmxlLnByb3RvdHlwZS5yZW1vdmVDb25zdHJhaW50ID0gZnVuY3Rp
b24gKGMpIHsKKyAgdGhpcy5jb25zdHJhaW50cy5yZW1vdmUoYyk7CisgIGlmICh0aGlzLmRldGVy
bWluZWRCeSA9PSBjKSB0aGlzLmRldGVybWluZWRCeSA9IG51bGw7Cit9CisKKy8qIC0tLSAqCisg
KiBQIGwgYSBuIG4gZSByCisgKiAtLS0gKi8KKworLyoqCisgKiBUaGUgRGVsdGFCbHVlIHBsYW5u
ZXIKKyAqLworZnVuY3Rpb24gUGxhbm5lcigpIHsKKyAgdGhpcy5jdXJyZW50TWFyayA9IDA7Cit9
CisKKy8qKgorICogQXR0ZW1wdCB0byBzYXRpc2Z5IHRoZSBnaXZlbiBjb25zdHJhaW50IGFuZCwg
aWYgc3VjY2Vzc2Z1bCwKKyAqIGluY3JlbWVudGFsbHkgdXBkYXRlIHRoZSBkYXRhZmxvdyBncmFw
aC4gIERldGFpbHM6IElmIHNhdGlmeWluZworICogdGhlIGNvbnN0cmFpbnQgaXMgc3VjY2Vzc2Z1
bCwgaXQgbWF5IG92ZXJyaWRlIGEgd2Vha2VyIGNvbnN0cmFpbnQKKyAqIG9uIGl0cyBvdXRwdXQu
IFRoZSBhbGdvcml0aG0gYXR0ZW1wdHMgdG8gcmVzYXRpc2Z5IHRoYXQKKyAqIGNvbnN0cmFpbnQg
dXNpbmcgc29tZSBvdGhlciBtZXRob2QuIFRoaXMgcHJvY2VzcyBpcyByZXBlYXRlZAorICogdW50
aWwgZWl0aGVyIGEpIGl0IHJlYWNoZXMgYSB2YXJpYWJsZSB0aGF0IHdhcyBub3QgcHJldmlvdXNs
eQorICogZGV0ZXJtaW5lZCBieSBhbnkgY29uc3RyYWludCBvciBiKSBpdCByZWFjaGVzIGEgY29u
c3RyYWludCB0aGF0CisgKiBpcyB0b28gd2VhayB0byBiZSBzYXRpc2ZpZWQgdXNpbmcgYW55IG9m
IGl0cyBtZXRob2RzLiBUaGUKKyAqIHZhcmlhYmxlcyBvZiBjb25zdHJhaW50cyB0aGF0IGhhdmUg
YmVlbiBwcm9jZXNzZWQgYXJlIG1hcmtlZCB3aXRoCisgKiBhIHVuaXF1ZSBtYXJrIHZhbHVlIHNv
IHRoYXQgd2Uga25vdyB3aGVyZSB3ZSd2ZSBiZWVuLiBUaGlzIGFsbG93cworICogdGhlIGFsZ29y
aXRobSB0byBhdm9pZCBnZXR0aW5nIGludG8gYW4gaW5maW5pdGUgbG9vcCBldmVuIGlmIHRoZQor
ICogY29uc3RyYWludCBncmFwaCBoYXMgYW4gaW5hZHZlcnRlbnQgY3ljbGUuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmluY3JlbWVudGFsQWRkID0gZnVuY3Rpb24gKGMpIHsKKyAgdmFyIG1hcmsg
PSB0aGlzLm5ld01hcmsoKTsKKyAgdmFyIG92ZXJyaWRkZW4gPSBjLnNhdGlzZnkobWFyayk7Cisg
IHdoaWxlIChvdmVycmlkZGVuICE9IG51bGwpCisgICAgb3ZlcnJpZGRlbiA9IG92ZXJyaWRkZW4u
c2F0aXNmeShtYXJrKTsKK30KKworLyoqCisgKiBFbnRyeSBwb2ludCBmb3IgcmV0cmFjdGluZyBh
IGNvbnN0cmFpbnQuIFJlbW92ZSB0aGUgZ2l2ZW4KKyAqIGNvbnN0cmFpbnQgYW5kIGluY3JlbWVu
dGFsbHkgdXBkYXRlIHRoZSBkYXRhZmxvdyBncmFwaC4KKyAqIERldGFpbHM6IFJldHJhY3Rpbmcg
dGhlIGdpdmVuIGNvbnN0cmFpbnQgbWF5IGFsbG93IHNvbWUgY3VycmVudGx5CisgKiB1bnNhdGlz
ZmlhYmxlIGRvd25zdHJlYW0gY29uc3RyYWludCB0byBiZSBzYXRpc2ZpZWQuIFdlIHRoZXJlZm9y
ZSBjb2xsZWN0CisgKiBhIGxpc3Qgb2YgdW5zYXRpc2ZpZWQgZG93bnN0cmVhbSBjb25zdHJhaW50
cyBhbmQgYXR0ZW1wdCB0bworICogc2F0aXNmeSBlYWNoIG9uZSBpbiB0dXJuLiBUaGlzIGxpc3Qg
aXMgdHJhdmVyc2VkIGJ5IGNvbnN0cmFpbnQKKyAqIHN0cmVuZ3RoLCBzdHJvbmdlc3QgZmlyc3Qs
IGFzIGEgaGV1cmlzdGljIGZvciBhdm9pZGluZworICogdW5uZWNlc3NhcmlseSBhZGRpbmcgYW5k
IHRoZW4gb3ZlcnJpZGluZyB3ZWFrIGNvbnN0cmFpbnRzLgorICogQXNzdW1lOiBjIGlzIHNhdGlz
ZmllZC4KKyAqLworUGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxSZW1vdmUgPSBmdW5jdGlv
biAoYykgeworICB2YXIgb3V0ID0gYy5vdXRwdXQoKTsKKyAgYy5tYXJrVW5zYXRpc2ZpZWQoKTsK
KyAgYy5yZW1vdmVGcm9tR3JhcGgoKTsKKyAgdmFyIHVuc2F0aXNmaWVkID0gdGhpcy5yZW1vdmVQ
cm9wYWdhdGVGcm9tKG91dCk7CisgIHZhciBzdHJlbmd0aCA9IFN0cmVuZ3RoLlJFUVVJUkVEOwor
ICBkbyB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bnNhdGlzZmllZC5zaXplKCk7IGkrKykg
eworICAgICAgdmFyIHUgPSB1bnNhdGlzZmllZC5hdChpKTsKKyAgICAgIGlmICh1LnN0cmVuZ3Ro
ID09IHN0cmVuZ3RoKQorICAgICAgICB0aGlzLmluY3JlbWVudGFsQWRkKHUpOworICAgIH0KKyAg
ICBzdHJlbmd0aCA9IHN0cmVuZ3RoLm5leHRXZWFrZXIoKTsKKyAgfSB3aGlsZSAoc3RyZW5ndGgg
IT0gU3RyZW5ndGguV0VBS0VTVCk7Cit9CisKKy8qKgorICogU2VsZWN0IGEgcHJldmlvdXNseSB1
bnVzZWQgbWFyayB2YWx1ZS4KKyAqLworUGxhbm5lci5wcm90b3R5cGUubmV3TWFyayA9IGZ1bmN0
aW9uICgpIHsKKyAgcmV0dXJuICsrdGhpcy5jdXJyZW50TWFyazsKK30KKworLyoqCisgKiBFeHRy
YWN0IGEgcGxhbiBmb3IgcmVzYXRpc2ZhY3Rpb24gc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gc291
cmNlCisgKiBjb25zdHJhaW50cywgdXN1YWxseSBhIHNldCBvZiBpbnB1dCBjb25zdHJhaW50cy4g
VGhpcyBtZXRob2QKKyAqIGFzc3VtZXMgdGhhdCBzdGF5IG9wdGltaXphdGlvbiBpcyBkZXNpcmVk
OyB0aGUgcGxhbiB3aWxsIGNvbnRhaW4KKyAqIG9ubHkgY29uc3RyYWludHMgd2hvc2Ugb3V0cHV0
IHZhcmlhYmxlcyBhcmUgbm90IHN0YXkuIENvbnN0cmFpbnRzCisgKiB0aGF0IGRvIG5vIGNvbXB1
dGF0aW9uLCBzdWNoIGFzIHN0YXkgYW5kIGVkaXQgY29uc3RyYWludHMsIGFyZQorICogbm90IGlu
Y2x1ZGVkIGluIHRoZSBwbGFuLgorICogRGV0YWlsczogVGhlIG91dHB1dHMgb2YgYSBjb25zdHJh
aW50IGFyZSBtYXJrZWQgd2hlbiBpdCBpcyBhZGRlZAorICogdG8gdGhlIHBsYW4gdW5kZXIgY29u
c3RydWN0aW9uLiBBIGNvbnN0cmFpbnQgbWF5IGJlIGFwcGVuZGVkIHRvCisgKiB0aGUgcGxhbiB3
aGVuIGFsbCBpdHMgaW5wdXQgdmFyaWFibGVzIGFyZSBrbm93bi4gQSB2YXJpYWJsZSBpcworICog
a25vd24gaWYgZWl0aGVyIGEpIHRoZSB2YXJpYWJsZSBpcyBtYXJrZWQgKGluZGljYXRpbmcgdGhh
dCBoYXMKKyAqIGJlZW4gY29tcHV0ZWQgYnkgYSBjb25zdHJhaW50IGFwcGVhcmluZyBlYXJsaWVy
IGluIHRoZSBwbGFuKSwgYikKKyAqIHRoZSB2YXJpYWJsZSBpcyAnc3RheScgKGkuZS4gaXQgaXMg
YSBjb25zdGFudCBhdCBwbGFuIGV4ZWN1dGlvbgorICogdGltZSksIG9yIGMpIHRoZSB2YXJpYWJs
ZSBpcyBub3QgZGV0ZXJtaW5lZCBieSBhbnkKKyAqIGNvbnN0cmFpbnQuIFRoZSBsYXN0IHByb3Zp
c2lvbiBpcyBmb3IgcGFzdCBzdGF0ZXMgb2YgaGlzdG9yeQorICogdmFyaWFibGVzLCB3aGljaCBh
cmUgbm90IHN0YXkgYnV0IHdoaWNoIGFyZSBhbHNvIG5vdCBjb21wdXRlZCBieQorICogYW55IGNv
bnN0cmFpbnQuCisgKiBBc3N1bWU6IHNvdXJjZXMgYXJlIGFsbCBzYXRpc2ZpZWQuCisgKi8KK1Bs
YW5uZXIucHJvdG90eXBlLm1ha2VQbGFuID0gZnVuY3Rpb24gKHNvdXJjZXMpIHsKKyAgdmFyIG1h
cmsgPSB0aGlzLm5ld01hcmsoKTsKKyAgdmFyIHBsYW4gPSBuZXcgUGxhbigpOworICB2YXIgdG9k
byA9IHNvdXJjZXM7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsKKyAgICB2YXIgYyA9IHRv
ZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBpZiAoYy5vdXRwdXQoKS5tYXJrICE9IG1hcmsgJiYgYy5p
bnB1dHNLbm93bihtYXJrKSkgeworICAgICAgcGxhbi5hZGRDb25zdHJhaW50KGMpOworICAgICAg
Yy5vdXRwdXQoKS5tYXJrID0gbWFyazsKKyAgICAgIHRoaXMuYWRkQ29uc3RyYWludHNDb25zdW1p
bmdUbyhjLm91dHB1dCgpLCB0b2RvKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHBsYW47Cit9CisK
Ky8qKgorICogRXh0cmFjdCBhIHBsYW4gZm9yIHJlc2F0aXNmeWluZyBzdGFydGluZyBmcm9tIHRo
ZSBvdXRwdXQgb2YgdGhlCisgKiBnaXZlbiBjb25zdHJhaW50cywgdXN1YWxseSBhIHNldCBvZiBp
bnB1dCBjb25zdHJhaW50cy4KKyAqLworUGxhbm5lci5wcm90b3R5cGUuZXh0cmFjdFBsYW5Gcm9t
Q29uc3RyYWludHMgPSBmdW5jdGlvbiAoY29uc3RyYWludHMpIHsKKyAgdmFyIHNvdXJjZXMgPSBu
ZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25zdHJhaW50
cy5zaXplKCk7IGkrKykgeworICAgIHZhciBjID0gY29uc3RyYWludHMuYXQoaSk7CisgICAgaWYg
KGMuaXNJbnB1dCgpICYmIGMuaXNTYXRpc2ZpZWQoKSkKKyAgICAgIC8vIG5vdCBpbiBwbGFuIGFs
cmVhZHkgYW5kIGVsaWdpYmxlIGZvciBpbmNsdXNpb24KKyAgICAgIHNvdXJjZXMuYWRkKGMpOwor
ICB9CisgIHJldHVybiB0aGlzLm1ha2VQbGFuKHNvdXJjZXMpOworfQorCisvKioKKyAqIFJlY29t
cHV0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RocyBhbmQgc3RheSBmbGFncyBvZiBhbGwgdmFyaWFi
bGVzCisgKiBkb3duc3RyZWFtIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IGFuZCByZWNvbXB1dGUg
dGhlIGFjdHVhbAorICogdmFsdWVzIG9mIGFsbCB2YXJpYWJsZXMgd2hvc2Ugc3RheSBmbGFnIGlz
IHRydWUuIElmIGEgY3ljbGUgaXMKKyAqIGRldGVjdGVkLCByZW1vdmUgdGhlIGdpdmVuIGNvbnN0
cmFpbnQgYW5kIGFuc3dlcgorICogZmFsc2UuIE90aGVyd2lzZSwgYW5zd2VyIHRydWUuCisgKiBE
ZXRhaWxzOiBDeWNsZXMgYXJlIGRldGVjdGVkIHdoZW4gYSBtYXJrZWQgdmFyaWFibGUgaXMKKyAq
IGVuY291bnRlcmVkIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIFRoZSBzZW5k
ZXIgaXMKKyAqIGFzc3VtZWQgdG8gaGF2ZSBtYXJrZWQgdGhlIGlucHV0cyBvZiB0aGUgZ2l2ZW4g
Y29uc3RyYWludCB3aXRoCisgKiB0aGUgZ2l2ZW4gbWFyay4gVGh1cywgZW5jb3VudGVyaW5nIGEg
bWFya2VkIG5vZGUgZG93bnN0cmVhbSBvZgorICogdGhlIG91dHB1dCBjb25zdHJhaW50IG1lYW5z
IHRoYXQgdGhlcmUgaXMgYSBwYXRoIGZyb20gdGhlCisgKiBjb25zdHJhaW50J3Mgb3V0cHV0IHRv
IG9uZSBvZiBpdHMgaW5wdXRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5hZGRQcm9wYWdhdGUg
PSBmdW5jdGlvbiAoYywgbWFyaykgeworICB2YXIgdG9kbyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlv
bigpOworICB0b2RvLmFkZChjKTsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZh
ciBkID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChkLm91dHB1dCgpLm1hcmsgPT0gbWFy
aykgeworICAgICAgdGhpcy5pbmNyZW1lbnRhbFJlbW92ZShjKTsKKyAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgZC5yZWNhbGN1bGF0ZSgpOworICAgIHRoaXMuYWRkQ29uc3RyYWludHND
b25zdW1pbmdUbyhkLm91dHB1dCgpLCB0b2RvKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwor
CisvKioKKyAqIFVwZGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RocyBhbmQgc3RheSBmbGFncyBv
ZiBhbGwgdmFyaWFibGVzCisgKiBkb3duc3RyZWFtIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50LiBB
bnN3ZXIgYSBjb2xsZWN0aW9uIG9mCisgKiB1bnNhdGlzZmllZCBjb25zdHJhaW50cyBzb3J0ZWQg
aW4gb3JkZXIgb2YgZGVjcmVhc2luZyBzdHJlbmd0aC4KKyAqLworUGxhbm5lci5wcm90b3R5cGUu
cmVtb3ZlUHJvcGFnYXRlRnJvbSA9IGZ1bmN0aW9uIChvdXQpIHsKKyAgb3V0LmRldGVybWluZWRC
eSA9IG51bGw7CisgIG91dC53YWxrU3RyZW5ndGggPSBTdHJlbmd0aC5XRUFLRVNUOworICBvdXQu
c3RheSA9IHRydWU7CisgIHZhciB1bnNhdGlzZmllZCA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigp
OworICB2YXIgdG9kbyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICB0b2RvLmFkZChvdXQp
OworICB3aGlsZSAodG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIHYgPSB0b2RvLnJlbW92ZUZp
cnN0KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsr
KSB7CisgICAgICB2YXIgYyA9IHYuY29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAoIWMuaXNT
YXRpc2ZpZWQoKSkKKyAgICAgICAgdW5zYXRpc2ZpZWQuYWRkKGMpOworICAgIH0KKyAgICB2YXIg
ZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHYu
Y29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBuZXh0ID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIGlmIChuZXh0ICE9IGRldGVybWluaW5nICYmIG5leHQuaXNTYXRpc2Zp
ZWQoKSkgeworICAgICAgICBuZXh0LnJlY2FsY3VsYXRlKCk7CisgICAgICAgIHRvZG8uYWRkKG5l
eHQub3V0cHV0KCkpOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7
Cit9CisKK1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5j
dGlvbiAodiwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAg
dmFyIGNjID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7
IGkrKykgeworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcg
JiYgYy5pc1NhdGlzZmllZCgpKQorICAgICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAqLworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVk
IGxpc3Qgb2YgY29uc3RyYWludHMgdG8gYmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJl
c2F0aXNmeSBhbGwgY3VycmVudGx5IHNhdGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNl
IG9mCisgKiBvbmUgb3IgbW9yZSBjaGFuZ2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4o
KSB7CisgIHRoaXMudiA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3Rv
dHlwZS5hZGRDb25zdHJhaW50ID0gZnVuY3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30K
KworUGxhbi5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5z
aXplKCk7Cit9CisKK1BsYW4ucHJvdG90eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRl
eCkgeworICByZXR1cm4gdGhpcy52LmF0KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhl
Y3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsg
aSsrKSB7CisgICAgdmFyIGMgPSB0aGlzLmNvbnN0cmFpbnRBdChpKTsKKyAgICBjLmV4ZWN1dGUo
KTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0tICovCisKKy8qKgorICog
VGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4gQSBsb25nIGNoYWluIG9m
IGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3aXRoIGEgc3RheSBjb25z
dHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQgaXMgdGhlbiBhZGRlZCB0
byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVhc3VyZWQgZm9yIGFkZGlu
ZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFjdGluZworICogYW5kIGV4
ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRoZXJlIGFyZSB0d28gY2Fz
ZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlzIHN0cm9uZ2VyIHRoYW4g
dGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHByb3BhZ2F0ZSBkb3duIHRo
ZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2UgMiwgdGhlIGFkZGVkIGNv
bnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgc28gaXQgY2Fu
bm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2UgaXMsCisgKiBvZiBjb3Vy
c2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3aGVyZSBiZXR3ZWVuIHRo
ZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWluVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGwsIGZpcnN0ID0gbnVsbCwg
bGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVhbGl0eSBjb25zdHJhaW50
cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2YXIgbmFtZSA9ICJ2IiAr
IGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAgaWYgKHByZXYgIT0gbnVs
bCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwgU3RyZW5ndGguUkVRVUlS
RUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAoaSA9PSBuKSBsYXN0ID0g
djsKKyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJl
bmd0aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZp
cnN0LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxl
Y3Rpb24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFj
dFBsYW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
aSsrKSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlm
IChsYXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7Cisg
IH0KK30KKworLyoqCisgKiBUaGlzIHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlh
YmxlcyByZWxhdGVkIHRvIGVhY2gKKyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zv
cm1hdGlvbiAoc2NhbGUgYW5kIG9mZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBj
aGFuZ2UgYSB2YXJpYWJsZSBvbiBlaXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRv
IGNoYW5nZSB0aGUgc2NhbGUgYW5kIG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9q
ZWN0aW9uVGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUg
PSBuZXcgVmFyaWFibGUoInNjYWxlIiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxl
KCJvZmZzZXQiLCAxMDAwKTsKKyAgdmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFy
IGRlc3RzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwg
bjsgaSsrKSB7CisgICAgc3JjID0gbmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0
ID0gbmV3IFZhcmlhYmxlKCJkc3QiICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAg
bmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFMKTsKKyAgICBuZXcgU2NhbGVD
b25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJlbmd0aC5SRVFVSVJFRCk7Cisg
IH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFsdWUgIT0gMTE3MCkgYWxlcnQo
IlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwgMTA1MCk7CisgIGlmIChzcmMu
dmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQiKTsKKyAgY2hhbmdlKHNjYWxl
LCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CisgICAgaWYgKGRlc3Rz
LmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFsZXJ0KCJQcm9qZWN0aW9uIDMg
ZmFpbGVkIik7CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICB9Cit9CisKK2Z1
bmN0aW9uIGNoYW5nZSh2LCBuZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3Ry
YWludCh2LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENv
bGxlY3Rpb24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0
cmFjdFBsYW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
OyBpKyspIHsKKyAgICB2LnZhbHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7Cisg
IH0KKyAgZWRpdC5kZXN0cm95Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUg
aG9sZGluZyB0aGUgY3VycmVudCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5j
dGlvbiBkZWx0YUJsdWUoKSB7CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgx
MDApOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDE1NTsgKytpKQorICAgIGRlbHRhQmx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy92OC1lYXJs
ZXktYm95ZXItc3RyaWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy92
OC1lYXJsZXktYm95ZXItc3RyaWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NDVjOGY3ZDc0NzdjMmMyNGIy
ZGVjMWUzZjg4MDdkYmY2OGU3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3Y4LWVhcmxleS1ib3llci1zdHJpY3QuanMKQEAgLTAsMCArMSw0
NTg5IEBACisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgc2NoZW1l
MmpzLCBleGNlcHQgZm9yIHRoZQorLy8gYmVuY2htYXJrIGhhcm5lc3MgY29kZSBhdCB0aGUgYmVn
aW5uaW5nIGFuZCBlbmQgb2YgdGhlIGZpbGUuCisidXNlIHN0cmljdCI7CisKKy8qKioqKioqKioq
KioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8qKioqKioq
KioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8qKioq
KioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8KKy8q
KioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioqKi8K
Ky8qKioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioqKioq
Ki8KKy8qKioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioqKioq
KioqKi8KKy8qKioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioqKioq
KioqKioqKi8KKy8qKioqKioqKioqKioqIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQgKioq
KioqKioqKioqKi8KKy8qCisgKiBUbyB1c2Ugd3JpdGUvcHJpbnRzLy4uLiB0aGUgZGVmYXVsdC1v
dXRwdXQgcG9ydCBoYXMgdG8gYmUgc2V0IGZpcnN0LgorICogU2ltcGx5IHNldHRpbmcgU0NfREVG
QVVMVF9PVVQgYW5kIFNDX0VSUk9SX09VVCB0byB0aGUgZGVzaXJlZCB2YWx1ZXMKKyAqIHNob3Vs
ZCBkbyB0aGUgdHJpY2suCisgKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdGhlIHN0ZC1vdXQg
YW5kIGVycm9yLXBvcnQgYXJlIHJlZGlyZWN0ZWQgdG8KKyAqIGEgRElWLgorZnVuY3Rpb24gaW5p
dFJ1bnRpbWUoKSB7CisgICAgZnVuY3Rpb24gZXNjYXBlSFRNTChzKSB7CisgICAgICAgIHZhciB0
bXAgPSBzOworICAgICAgICB0bXAgPSB0bXAucmVwbGFjZSgvJi9nLCAiJmFtcDsiKTsKKyAgICAg
ICAgdG1wID0gdG1wLnJlcGxhY2UoLzwvZywgIiZsdDsiKTsKKyAgICAgICAgdG1wID0gdG1wLnJl
cGxhY2UoLz4vZywgIiZndDsiKTsKKyAgICAgICAgdG1wID0gdG1wLnJlcGxhY2UoLyAvZywgIiZu
YnNwOyIpOworICAgICAgICB0bXAgPSB0bXAucmVwbGFjZSgvXG4vZywgIjxiciAvPiIpOworICAg
ICAgICB0bXAgPSB0bXAucmVwbGFjZSgvXHQvZywgIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwIik7
CisgICAgICAgIHJldHVybiB0bXA7CisgICAgICAgIAorICAgIH0KKworICAgIGRvY3VtZW50Lndy
aXRlKCI8ZGl2IGlkPSdzdGRvdXQnPjwvZGl2PiIpOworICAgIFNDX0RFRkFVTFRfT1VUID0gbmV3
IHNjX0dlbmVyaWNPdXRwdXRQb3J0KAorICAgICAgICBmdW5jdGlvbihzKSB7CisgICAgICAgICAg
ICB2YXIgc3Rkb3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ZG91dCcpOworICAgICAg
ICAgICAgc3Rkb3V0LmlubmVySFRNTCA9IHN0ZG91dC5pbm5lckhUTUwgKyBlc2NhcGVIVE1MKHMp
OworICAgICAgICB9KTsKKyAgICBTQ19FUlJPUl9PVVQgPSBTQ19ERUZBVUxUX09VVDsKK30KKyov
CisKKworZnVuY3Rpb24gc2NfcHJpbnRfZGVidWcoKSB7CisgICAgc2NfcHJpbnQuYXBwbHkobnVs
bCwgYXJndW1lbnRzKTsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCAqanMqKSkgKi8KK3ZhciBzY19K
U19HTE9CQUxTID0gdGhpczsKKwordmFyIF9fc2NfTElORT0tMTsKK3ZhciBfX3NjX0ZJTEU9IiI7
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19hbGVydCgpIHsKKyAg
IHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOworICAgdmFyIHMgPSAiIjsKKyAgIHZhciBpOwor
CisgICBmb3IoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgcyArPSBzY190b0Rpc3Bs
YXlTdHJpbmcoYXJndW1lbnRzWyBpIF0pOworICAgfQorCisgICByZXR1cm4gYWxlcnQoIHMgKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3R5cGVvZiggeCAp
IHsKKyAgIHJldHVybiB0eXBlb2YgeDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2Vycm9yKCkgeworICAgIHZhciBhID0gW3NjX2pzc3RyaW5nMnN5bWJvbCgi
KmVycm9yKiIpXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkr
KykgeworICAgICAgICBhW2krMV0gPSBhcmd1bWVudHNbaV07CisgICAgfQorICAgIHRocm93IGE7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwcmVm
aXggInRocm93ICIpKSkKKyovCitmdW5jdGlvbiBzY19yYWlzZShvYmopIHsKKyAgICB0aHJvdyBv
Ymo7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB3aXRoLWhhbmRsZXItbGFtYmRhKSkgKi8KK2Z1
bmN0aW9uIHNjX3dpdGhIYW5kbGVyTGFtYmRhKGhhbmRsZXIsIGJvZHkpIHsKKyAgICB0cnkgewor
ICAgICAgICByZXR1cm4gYm9keSgpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZiAoIWUu
X2ludGVybmFsRXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIoZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCit2YXIgc2NfcHJvcGVy
dGllcyA9IG5ldyBPYmplY3QoKTsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0
aW9uIHNjX3B1dHByb3BCYW5nKHN5bSwga2V5LCB2YWwpIHsKKyAgICB2YXIgaHQgPSBzY19wcm9w
ZXJ0aWVzW3N5bV07CisgICAgaWYgKCFodCkgeworICAgICAgICBodCA9IG5ldyBPYmplY3QoKTsK
KyAgICAgICAgc2NfcHJvcGVydGllc1tzeW1dID0gaHQ7CisgICAgfQorICAgIGh0W2tleV0gPSB2
YWw7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19nZXRwcm9w
KHN5bSwga2V5KSB7CisgICAgdmFyIGh0ID0gc2NfcHJvcGVydGllc1tzeW1dOworICAgIGlmICho
dCkgeworICAgICAgICBpZiAoa2V5IGluIGh0KQorICAgICAgICAgICAgcmV0dXJuIGh0W2tleV07
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVu
Y3Rpb24gc2NfcmVtcHJvcEJhbmcoc3ltLCBrZXkpIHsKKyAgICB2YXIgaHQgPSBzY19wcm9wZXJ0
aWVzW3N5bV07CisgICAgaWYgKGh0KQorICAgICAgICBkZWxldGUgaHRba2V5XTsKK30KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2FueTJTdHJpbmcobykgeworICAg
IHJldHVybiBqc3N0cmluZzJzdHJpbmcoc2NfdG9EaXNwbGF5U3RyaW5nKG8pKTsKK30gICAgCisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIg
Ij09PSIpKQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0Vxdihv
MSwgbzIpIHsKKyAgICByZXR1cm4gKG8xID09PSBvMik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj09PSIpKQorICAgICAgICAg
ICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc0VxKG8xLCBvMikgeworICAgIHJldHVy
biAobzEgPT09IG8yKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
dHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBzY19pc051bWJlcihuKSB7CisgICAgcmV0dXJuICh0
eXBlb2YgbiA9PT0gIm51bWJlciIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzQ29tcGxleChuKSB7CisgICAg
cmV0dXJuIHNjX2lzTnVtYmVyKG4pOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzUmVhbChuKSB7CisgICAgcmV0
dXJuIHNjX2lzTnVtYmVyKG4pOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzUmF0aW9uYWwobikgeworICAgIHJl
dHVybiBzY19pc1JlYWwobik7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNJbnRlZ2VyKG4pIHsKKyAgICByZXR1
cm4gKHBhcnNlSW50KG4pID09PSBuKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIiwgZmFs
c2UiKSkpCisqLworLy8gd2UgZG9uJ3QgaGF2ZSBleGFjdCBudW1iZXJzLi4uCitmdW5jdGlvbiBz
Y19pc0V4YWN0KG4pIHsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIsIHRydWUiKSkKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNJbmV4YWN0KG4pIHsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ID0gPWZ4ID1mbCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj09PSIpKSkKKyov
CitmdW5jdGlvbiBzY19lcXVhbCh4KSB7CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspCisgICAgICAgIGlmICh4ICE9PSBhcmd1bWVudHNbaV0pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCA8IDxmeCA8ZmwpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaW5maXggMiAyICI8IikpKQorKi8KK2Z1bmN0aW9uIHNjX2xlc3MoeCkgeworICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICh4
ID49IGFyZ3VtZW50c1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgeCA9
IGFyZ3VtZW50c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCA+ID5meCA+ZmwpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChw
ZWVwaG9sZSAoaW5maXggMiAyICI+IikpKQorKi8KK2Z1bmN0aW9uIHNjX2dyZWF0ZXIoeCwgeSkg
eworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmICh4IDw9IGFyZ3VtZW50c1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgeCA9IGFyZ3VtZW50c1tpXTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCA8PSA8PWZ4IDw9ZmwpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisg
ICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICI8PSIpKSkKKyovCitmdW5jdGlvbiBzY19s
ZXNzRXF1YWwoeCwgeSkgeworICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0
aDsgaSsrKSB7CisgICAgICAgIGlmICh4ID4gYXJndW1lbnRzW2ldKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB4ID0gYXJndW1lbnRzW2ldOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ID49ID49ZmwgPj1meCkKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj49IikpKQorKi8K
K2Z1bmN0aW9uIHNjX2dyZWF0ZXJFcXVhbCh4LCB5KSB7CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHggPCBhcmd1bWVudHNbaV0p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHggPSBhcmd1bWVudHNbaV07Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiPT09IDAi
KSkpCisqLworZnVuY3Rpb24gc2NfaXNaZXJvKHgpIHsKKyAgICByZXR1cm4gKHggPT09IDApOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiPiAwIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzUG9z
aXRpdmUoeCkgeworICAgIHJldHVybiAoeCA+IDApOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZp
eCAiPCAwIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzTmVnYXRpdmUoeCkgeworICAgIHJldHVybiAo
eCA8IDApOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJv
b2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiJTI9PT0xIikpKQorKi8KK2Z1bmN0
aW9uIHNjX2lzT2RkKHgpIHsKKyAgICByZXR1cm4gKHggJSAyID09PSAxKTsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVl
cGhvbGUgKHBvc3RmaXggIiUyPT09MCIpKSkKKyovCitmdW5jdGlvbiBzY19pc0V2ZW4oeCkgewor
ICAgIHJldHVybiAoeCAlIDIgPT09IDApOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAq
LwordmFyIHNjX21heCA9IE1hdGgubWF4OworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3Zh
ciBzY19taW4gPSBNYXRoLm1pbjsKKworLyoqKiBNRVRBICgoZXhwb3J0ICsgK2Z4ICtmbCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAwICNmICIrIiAiMCIpKSkKKyovCitmdW5jdGlvbiBz
Y19wbHVzKCkgeworICAgIHZhciBzdW0gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJn
dW1lbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBzdW0gKz0gYXJndW1lbnRzW2ldOworICAgIHJl
dHVybiBzdW07Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAqICpmeCAqZmwpCisgICAgICAgICAg
IChwZWVwaG9sZSAoaW5maXggMCAjZiAiKiIgIjEiKSkpCisqLworZnVuY3Rpb24gc2NfbXVsdGko
KSB7CisgICAgdmFyIHByb2R1Y3QgPSAxOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1l
bnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBwcm9kdWN0ICo9IGFyZ3VtZW50c1tpXTsKKyAgICBy
ZXR1cm4gcHJvZHVjdDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IC0gLWZ4IC1mbCkKKyAgICAg
ICAgICAgKHBlZXBob2xlIChtaW51cykpKQorKi8KK2Z1bmN0aW9uIHNjX21pbnVzKHgpIHsKKyAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgcmV0dXJuIC14OworICAgIGVs
c2UgeworICAgICAgICB2YXIgcmVzID0geDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICByZXMgLT0gYXJndW1lbnRzW2ldOwor
ICAgICAgICByZXR1cm4gcmVzOworICAgIH0KK30KKworLyoqKiBNRVRBICgoZXhwb3J0IC8gL2Zs
KQorICAgICAgICAgICAocGVlcGhvbGUgKGRpdikpKQorKi8KK2Z1bmN0aW9uIHNjX2Rpdih4KSB7
CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpCisgICAgICAgIHJldHVybiAxL3g7Cisg
ICAgZWxzZSB7CisgICAgICAgIHZhciByZXMgPSB4OworICAgICAgICBmb3IgKHZhciBpID0gMTsg
aSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHJlcyAvPSBhcmd1bWVudHNb
aV07CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLwordmFyIHNjX2FicyA9IE1hdGguYWJzOworCisvKioqIE1FVEEgKChleHBvcnQgcXVv
dGllbnQgL2Z4KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAicGFyc2VJbnQoIiB4ICIv
IiB5ICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX3F1b3RpZW50KHgsIHkpIHsKKyAgICByZXR1cm4g
cGFyc2VJbnQoeCAvIHkpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAoaW5maXggMiAyICIlIikpKQorKi8KK2Z1bmN0aW9uIHNjX3JlbWFpbmRlcih4
LCB5KSB7CisgICAgcmV0dXJuIHggJSB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgIChwZWVwaG9sZSAobW9kdWxvKSkpCisqLworZnVuY3Rpb24gc2NfbW9kdWxvKHgs
IHkpIHsKKyAgICB2YXIgcmVtYWluZGVyID0geCAlIHk7CisgICAgLy8gaWYgdGhleSBkb24ndCBo
YXZlIHRoZSBzYW1lIHNpZ24KKyAgICBpZiAoKHJlbWFpbmRlciAqIHkpIDwgMCkKKyAgICAgICAg
cmV0dXJuIHJlbWFpbmRlciArIHk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmVtYWluZGVy
OworfQorCitmdW5jdGlvbiBzY19ldWNsaWRfZ2NkKGEsIGIpIHsKKyAgICB2YXIgdGVtcDsKKyAg
ICBpZiAoYSA9PT0gMCkgcmV0dXJuIGI7CisgICAgaWYgKGIgPT09IDApIHJldHVybiBhOworICAg
IGlmIChhIDwgMCkge2EgPSAtYTt9OworICAgIGlmIChiIDwgMCkge2IgPSAtYjt9OworICAgIGlm
IChiID4gYSkge3RlbXAgPSBhOyBhID0gYjsgYiA9IHRlbXA7fTsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBhICU9IGI7CisgICAgICAgIGlmKGEgPT09IDApIHtyZXR1cm4gYjt9OworICAg
ICAgICBiICU9IGE7CisgICAgICAgIGlmKGIgPT09IDApIHtyZXR1cm4gYTt9OworICAgIH07Cisg
ICAgcmV0dXJuIGI7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19nY2QoKSB7CisgICAgdmFyIGdjZCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyBpKyspCisgICAgICAgIGdjZCA9IHNjX2V1Y2xpZF9nY2QoZ2NkLCBhcmd1
bWVudHNbaV0pOworICAgIHJldHVybiBnY2Q7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkp
ICovCitmdW5jdGlvbiBzY19sY20oKSB7CisgICAgdmFyIGxjbSA9IDE7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGYgPSBNYXRo
LnJvdW5kKGFyZ3VtZW50c1tpXSAvIHNjX2V1Y2xpZF9nY2QoYXJndW1lbnRzW2ldLCBsY20pKTsK
KyAgICAgICAgbGNtICo9IE1hdGguYWJzKGYpOworICAgIH0KKyAgICByZXR1cm4gbGNtOworfQor
CisvLyBMSU1JVEFUSU9OOiBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGRvbid0IG1ha2Ugc2Vu
c2UgaW4gZmxvYXRpbmcgcG9pbnQgd29ybGQuCisvL3ZhciBTQ19NQVhfREVDSU1BTFMgPSAxMDAw
MDAwCisvLworLy8gZnVuY3Rpb24gc2NfbnVtZXJhdG9yKHgpIHsKKy8vICAgICB2YXIgcm91bmRl
ZCA9IE1hdGgucm91bmQoeCAqIFNDX01BWF9ERUNJTUFMUyk7CisvLyAgICAgcmV0dXJuIE1hdGgu
cm91bmQocm91bmRlZCAvIHNjX2V1Y2xpZF9nY2Qocm91bmRlZCwgU0NfTUFYX0RFQ0lNQUxTKSk7
CisvLyB9CisKKy8vIGZ1bmN0aW9uIHNjX2Rlbm9taW5hdG9yKHgpIHsKKy8vICAgICB2YXIgcm91
bmRlZCA9IE1hdGgucm91bmQoeCAqIFNDX01BWF9ERUNJTUFMUyk7CisvLyAgICAgcmV0dXJuIE1h
dGgucm91bmQoU0NfTUFYX0RFQ0lNQUxTIC8gc2NfZXVjbGlkX2djZChyb3VuZGVkLCBTQ19NQVhf
REVDSU1BTFMpKTsKKy8vIH0KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19m
bG9vciA9IE1hdGguZmxvb3I7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2Nl
aWxpbmcgPSBNYXRoLmNlaWw7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX3Ry
dW5jYXRlID0gcGFyc2VJbnQ7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX3Jv
dW5kID0gTWF0aC5yb3VuZDsKKworLy8gTElNSVRBVElPTjogc2NfcmF0aW9uYWxpemUgZG9lc24n
dCBtYWtlIHNlbnNlIGluIGEgZmxvYXRpbmcgcG9pbnQgd29ybGQuCisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkpICovCit2YXIgc2NfZXhwID0gTWF0aC5leHA7CisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLwordmFyIHNjX2xvZyA9IE1hdGgubG9nOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK3ZhciBzY19zaW4gPSBNYXRoLnNpbjsKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2
YXIgc2NfY29zID0gTWF0aC5jb3M7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNj
X3RhbiA9IE1hdGgudGFuOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19hc2lu
ID0gTWF0aC5hc2luOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19hY29zID0g
TWF0aC5hY29zOworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK3ZhciBzY19hdGFuID0gTWF0
aC5hdGFuOworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX3NxcnQgPSBNYXRo
LnNxcnQ7CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2V4cHQgPSBNYXRoLnBv
dzsKKworLy8gTElNSVRBVElPTjogd2UgZG9uJ3QgaGF2ZSBjb21wbGV4IG51bWJlcnMuCisvLyBM
SU1JVEFUSU9OOiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgaGVuY2Ugbm90IGltcGxlbWVu
dGVkLgorLy8gTElNSVRBVElPTjogbWFrZS1yZWN0YW5ndWxhciwgbWFrZS1wb2xhciwgcmVhbC1w
YXJ0LCBpbWFnLXBhcnQsIG1hZ25pdHVkZSwgYW5nbGUKKy8vIExJTUlUQVRJT046IDIgYXJndW1l
bnQgYXRhbgorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aWQpKSkKKyovCitmdW5jdGlvbiBzY19leGFjdDJpbmV4YWN0KHgpIHsKKyAgICByZXR1cm4geDsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGlkKSkp
CisqLworZnVuY3Rpb24gc2NfaW5leGFjdDJleGFjdCh4KSB7CisgICAgcmV0dXJuIHg7Cit9CisK
K2Z1bmN0aW9uIHNjX251bWJlcjJqc3N0cmluZyh4LCByYWRpeCkgeworICAgIGlmIChyYWRpeCkK
KyAgICAgICAgcmV0dXJuIHgudG9TdHJpbmcocmFkaXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIHgudG9TdHJpbmcoKTsKK30KKworZnVuY3Rpb24gc2NfanNzdHJpbmcybnVtYmVyKHMsIHJh
ZGl4KSB7CisgICAgaWYgKHMgPT09ICIiKSByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmFkaXgp
IHsKKyAgICAgICAgdmFyIHQgPSBwYXJzZUludChzLCByYWRpeCk7CisgICAgICAgIGlmICghdCAm
JiB0ICE9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIHZlcmlmeSB0aGF0IGVhY2ggY2hh
ciBpcyBpbiByYW5nZS4gKHBhcnNlSW50IGlnbm9yZXMgbGVhZGluZworICAgICAgICAvLyB3aGl0
ZSBhbmQgdHJhaWxpbmcgY2hhcnMpCisgICAgICAgIHZhciBhbGxvd2VkQ2hhcnMgPSAiMDEyMzQ1
Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIuc3Vic3RyaW5nKDAsIHJhZGl4KzEpOwor
ICAgICAgICBpZiAoKG5ldyBSZWdFeHAoIl5bIithbGxvd2VkQ2hhcnMrIl0qJCIsICJpIikpLnRl
c3QocykpCisgICAgICAgICAgICByZXR1cm4gdDsKKyAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHQgPSArczsgLy8gZG9lcyBub3QgaWdub3JlIHRy
YWlsaW5nIGNoYXJzLgorICAgICAgICBpZiAoIXQgJiYgdCAhPT0gMCkgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAvLyBzaW1wbHkgdmVyaWZ5IHRoYXQgZmlyc3QgY2hhciBpcyBub3Qgd2hpdGVzcGFj
ZS4KKyAgICAgICAgdmFyIGMgPSBzLmNoYXJBdCgwKTsKKyAgICAgICAgLy8gaWYgK2MgaXMgMCwg
YnV0IHRoZSBjaGFyIGlzIG5vdCAiMCIsIHRoZW4gd2UgaGF2ZSBhIHdoaXRlc3BhY2UuCisgICAg
ICAgIGlmICgrYyA9PT0gMCAmJiBjICE9PSAiMCIpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHQ7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0
eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAobm90KSkpCisqLworZnVuY3Rpb24gc2Nf
bm90KGIpIHsKKyAgICByZXR1cm4gYiA9PT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNCb29sZWFu
KGIpIHsKKyAgICByZXR1cm4gKGIgPT09IHRydWUpIHx8IChiID09PSBmYWxzZSk7Cit9CisKK2Z1
bmN0aW9uIHNjX1BhaXIoY2FyLCBjZHIpIHsKKyAgICB0aGlzLmNhciA9IGNhcjsKKyAgICB0aGlz
LmNkciA9IGNkcjsKK30KKworc2NfUGFpci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gc2NfdG9EaXNwbGF5U3RyaW5nKHRoaXMpOworfTsKK3NjX1BhaXIucHJv
dG90eXBlLnNjX3RvV3JpdGVPckRpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbih3cml0ZU9yRGlzcGxh
eSkgeworICAgIHZhciBjdXJyZW50ID0gdGhpczsKKworICAgIHZhciByZXMgPSAiKCI7CisKKyAg
ICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHJlcyArPSB3cml0ZU9yRGlzcGxheShjdXJyZW50LmNh
cik7CisgICAgICAgIGlmIChzY19pc1BhaXIoY3VycmVudC5jZHIpKSB7CisgICAgICAgICAgICBy
ZXMgKz0gIiAiOworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuY2RyOworICAgICAgICB9
IGVsc2UgaWYgKGN1cnJlbnQuY2RyICE9PSBudWxsKSB7CisgICAgICAgICAgICByZXMgKz0gIiAu
ICIgKyB3cml0ZU9yRGlzcGxheShjdXJyZW50LmNkcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfSBlbHNlIC8vIGN1cnJlbnQuY2RyID09IG51bGwKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAgICAgCisgICAgcmVzICs9ICIpIjsKKworICAgIHJldHVybiByZXM7Cit9Owor
c2NfUGFpci5wcm90b3R5cGUuc2NfdG9EaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIHRoaXMuc2NfdG9Xcml0ZU9yRGlzcGxheVN0cmluZyhzY190b0Rpc3BsYXlTdHJpbmcp
OworfTsKK3NjX1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVTdHJpbmcgPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gdGhpcy5zY190b1dyaXRlT3JEaXNwbGF5U3RyaW5nKHNjX3RvV3JpdGVTdHJp
bmcpOworfTsKKy8vIHNjX1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcgaW4g
SU8uanMKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKQor
ICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIiBpbnN0YW5jZW9mIHNjX1BhaXIiKSkpCisq
LworZnVuY3Rpb24gc2NfaXNQYWlyKHApIHsKKyAgICByZXR1cm4gKHAgaW5zdGFuY2VvZiBzY19Q
YWlyKTsKK30KKworZnVuY3Rpb24gc2NfaXNQYWlyRXF1YWwocDEsIHAyLCBjb21wKSB7CisgICAg
cmV0dXJuIChjb21wKHAxLmNhciwgcDIuY2FyKSAmJiBjb21wKHAxLmNkciwgcDIuY2RyKSk7Cit9
CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIg
Im5ldyBzY19QYWlyKCIgY2FyICIsICIgY2RyICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NvbnMo
Y2FyLCBjZHIpIHsKKyAgICByZXR1cm4gbmV3IHNjX1BhaXIoY2FyLCBjZHIpOworfQorCisvKioq
IE1FVEEgKChleHBvcnQgY29ucyopKSAqLworZnVuY3Rpb24gc2NfY29uc1N0YXIoKSB7CisgICAg
dmFyIHJlcyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgZm9yICh2YXIg
aSA9IGFyZ3VtZW50cy5sZW5ndGgtMjsgaSA+PSAwOyBpLS0pCisgICAgICAgIHJlcyA9IG5ldyBz
Y19QYWlyKGFyZ3VtZW50c1tpXSwgcmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhciIpKSkK
KyovCitmdW5jdGlvbiBzY19jYXIocCkgeworICAgIHJldHVybiBwLmNhcjsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jZHIiKSkp
CisqLworZnVuY3Rpb24gc2NfY2RyKHApIHsKKyAgICByZXR1cm4gcC5jZHI7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgcCAiLmNhciA9
ICIgdmFsKSkpCisqLworZnVuY3Rpb24gc2Nfc2V0Q2FyQmFuZyhwLCB2YWwpIHsKKyAgICBwLmNh
ciA9IHZhbDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMiBwICIuY2RyID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY19zZXRDZHJCYW5n
KHAsIHZhbCkgeworICAgIHAuY2RyID0gdmFsOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jYXIiKSkpCisqLworZnVuY3Rp
b24gc2NfY2FhcihwKSB7IHJldHVybiBwLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhciIpKSkKKyovCitmdW5j
dGlvbiBzY19jYWRyKHApIHsgcmV0dXJuIHAuY2RyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2RyIikpKQorKi8KK2Z1
bmN0aW9uIHNjX2NkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIiKSkpCisqLwor
ZnVuY3Rpb24gc2NfY2RkcihwKSB7IHJldHVybiBwLmNkci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNhci5jYXIiKSkp
CisqLworZnVuY3Rpb24gc2NfY2FhYXIocCkgeyByZXR1cm4gcC5jYXIuY2FyLmNhcjsgfQorLyoq
KiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIu
Y2RyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWRhcihwKSB7IHJldHVybiBwLmNhci5jZHIu
Y2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9z
dGZpeCAiLmNkci5jYXIuY2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhYWRyKHApIHsgcmV0dXJu
IHAuY2RyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkZHIo
cCkgeyByZXR1cm4gcC5jZHIuY2RyLmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAg
ICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5jYXIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlv
biBzY19jZGFhcihwKSB7IHJldHVybiBwLmNhci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jYXIuY2RyIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2NkYWRyKHApIHsgcmV0dXJuIHAuY2RyLmNhci5jZHI7IH0KKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNk
ci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNk
cjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIi5jZHIuY2RyLmNkciIpKSkKKyovCitmdW5jdGlvbiBzY19jZGRkcihwKSB7IHJldHVybiBw
LmNkci5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVw
aG9sZSAocG9zdGZpeCAiLmNhci5jYXIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19jYWFh
YXIocCkgeyByZXR1cm4gcC5jYXIuY2FyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5jYXIuY2FyIikpKQor
Ki8KK2Z1bmN0aW9uIHNjX2NhYWRhcihwKSB7IHJldHVybiBwLmNhci5jZHIuY2FyLmNhcjsgfQor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5j
ZHIuY2FyLmNhci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FhYWRyKHApIHsgcmV0dXJuIHAu
Y2RyLmNhci5jYXIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChw
ZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIuY2FyLmNhciIpKSkKKyovCitmdW5jdGlvbiBzY19j
YWFkZHIocCkgeyByZXR1cm4gcC5jZHIuY2RyLmNhci5jYXI7IH0KKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNhci5jYXIuY2RyIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2NkYWFhcihwKSB7IHJldHVybiBwLmNhci5jYXIuY2FyLmNkcjsg
fQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
Ii5jYXIuY2RyLmNhci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RhZGFyKHApIHsgcmV0dXJu
IHAuY2FyLmNkci5jYXIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jYXIuY2FyLmNkciIpKSkKKyovCitmdW5jdGlvbiBz
Y19jZGFhZHIocCkgeyByZXR1cm4gcC5jZHIuY2FyLmNhci5jZHI7IH0KKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNkci5jYXIuY2Ry
IikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkYWRkcihwKSB7IHJldHVybiBwLmNkci5jZHIuY2FyLmNk
cjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3Rm
aXggIi5jYXIuY2FyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkYWFyKHApIHsgcmV0
dXJuIHAuY2FyLmNhci5jZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAg
ICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jZHIuY2RyLmNhciIpKSkKKyovCitmdW5jdGlv
biBzY19jYWRkYXIocCkgeyByZXR1cm4gcC5jYXIuY2RyLmNkci5jYXI7IH0KKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2RyLmNhci5jZHIu
Y2FyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NhZGFkcihwKSB7IHJldHVybiBwLmNkci5jYXIuY2Ry
LmNhcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBv
c3RmaXggIi5jZHIuY2RyLmNkci5jYXIiKSkpCisqLworZnVuY3Rpb24gc2NfY2FkZGRyKHApIHsg
cmV0dXJuIHAuY2RyLmNkci5jZHIuY2FyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNhci5jYXIuY2RyLmNkciIpKSkKKyovCitmdW5j
dGlvbiBzY19jZGRhYXIocCkgeyByZXR1cm4gcC5jYXIuY2FyLmNkci5jZHI7IH0KKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2FyLmNkci5j
ZHIuY2RyIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NkZGRhcihwKSB7IHJldHVybiBwLmNhci5jZHIu
Y2RyLmNkcjsgfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUg
KHBvc3RmaXggIi5jZHIuY2FyLmNkci5jZHIiKSkpCisqLworZnVuY3Rpb24gc2NfY2RkYWRyKHAp
IHsgcmV0dXJuIHAuY2RyLmNhci5jZHIuY2RyOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLmNkci5jZHIuY2RyLmNkciIpKSkKKyovCitm
dW5jdGlvbiBzY19jZGRkZHIocCkgeyByZXR1cm4gcC5jZHIuY2RyLmNkci5jZHI7IH0KKworLyoq
KiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2xhc3RQYWlyKGwpIHsKKyAgICBp
ZiAoIXNjX2lzUGFpcihsKSkgc2NfZXJyb3IoInNjX2xhc3RQYWlyOiBwYWlyIGV4cGVjdGVkIik7
CisgICAgdmFyIHJlcyA9IGw7CisgICAgdmFyIGNkciA9IGwuY2RyOworICAgIHdoaWxlIChzY19p
c1BhaXIoY2RyKSkgeworICAgICAgICByZXMgPSBjZHI7CisgICAgICAgIGNkciA9IHJlcy5jZHI7
CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAg
ICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIgPT09
IG51bGwiKSkpCisqLworZnVuY3Rpb24gc2NfaXNOdWxsKG8pIHsKKyAgICByZXR1cm4gKG8gPT09
IG51bGwpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJv
b2wpKQorKi8KK2Z1bmN0aW9uIHNjX2lzTGlzdChvKSB7CisgICAgdmFyIHJhYmJpdDsKKyAgICB2
YXIgdHVydGxlOworCisgICAgdmFyIHJhYmJpdCA9IG87CisgICAgdmFyIHR1cnRsZSA9IG87Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKHJhYmJpdCA9PT0gbnVsbCB8fAorICAgICAg
ICAgICAgKHJhYmJpdCBpbnN0YW5jZW9mIHNjX1BhaXIgJiYgcmFiYml0LmNkciA9PT0gbnVsbCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIGVuZCBvZiBsaXN0CisgICAgICAgIGVsc2Ug
aWYgKChyYWJiaXQgaW5zdGFuY2VvZiBzY19QYWlyKSAmJgorICAgICAgICAgICAgICAgICAocmFi
Yml0LmNkciBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICByYWJiaXQgPSByYWJi
aXQuY2RyLmNkcjsKKyAgICAgICAgICAgIHR1cnRsZSA9IHR1cnRsZS5jZHI7CisgICAgICAgICAg
ICBpZiAocmFiYml0ID09PSB0dXJ0bGUpIHJldHVybiBmYWxzZTsgLy8gY3ljbGUKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBwYWlyCisgICAgfQorfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdCgpIHsKKyAgICB2
YXIgcmVzID0gbnVsbDsKKyAgICB2YXIgYSA9IGFyZ3VtZW50czsKKyAgICBmb3IgKHZhciBpID0g
YS5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pCisgICAgICAgIHJlcyA9IG5ldyBzY19QYWlyKGFbaV0s
IHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2lvdGEobnVtLCBpbml0KSB7CisgICB2YXIgcmVzID0gbnVsbDsKKyAgIGlm
ICghaW5pdCkgaW5pdCA9IDA7CisgICBmb3IgKHZhciBpID0gbnVtIC0gMTsgaSA+PSAwOyBpLS0p
CisgICAgICByZXMgPSBuZXcgc2NfUGFpcihpICsgaW5pdCwgcmVzKTsKKyAgIHJldHVybiByZXM7
Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tYWtlTGlzdChu
YkVscywgZmlsbCkgeworICAgIHZhciByZXMgPSBudWxsOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbmJFbHM7IGkrKykKKyAgICAgICAgcmVzID0gbmV3IHNjX1BhaXIoZmlsbCwgcmVzKTsKKyAg
ICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24g
c2NfbGVuZ3RoKGwpIHsKKyAgICB2YXIgcmVzID0gMDsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkg
eworICAgICAgICByZXMrKzsKKyAgICAgICAgbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4g
cmVzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmVtcShv
LCBsKSB7CisgICAgdmFyIGR1bW15ID0geyBjZHIgOiBudWxsIH07CisgICAgdmFyIHRhaWwgPSBk
dW1teTsKKyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworICAgICAgICBpZiAobC5jYXIgIT09IG8p
IHsKKyAgICAgICAgICAgIHRhaWwuY2RyID0gc2NfY29ucyhsLmNhciwgbnVsbCk7CisgICAgICAg
ICAgICB0YWlsID0gdGFpbC5jZHI7CisgICAgICAgIH0KKyAgICAgICAgbCA9IGwuY2RyOworICAg
IH0KKyAgICByZXR1cm4gZHVtbXkuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAq
LworZnVuY3Rpb24gc2NfcmVtcUJhbmcobywgbCkgeworICAgIHZhciBkdW1teSA9IHsgY2RyIDog
bnVsbCB9OworICAgIHZhciB0YWlsID0gZHVtbXk7CisgICAgdmFyIG5lZWRzQXNzaWcgPSB0cnVl
OworICAgIHdoaWxlIChsICE9PSBudWxsKSB7CisgICAgICAgIGlmIChsLmNhciA9PT0gbykgewor
ICAgICAgICAgICAgbmVlZHNBc3NpZyA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAobmVlZHNBc3NpZykgeworICAgICAgICAgICAgICAgIHRhaWwuY2RyID0gbDsKKyAg
ICAgICAgICAgICAgICBuZWVkc0Fzc2lnID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB0YWlsID0gbDsKKyAgICAgICAgfQorICAgICAgICBsID0gbC5jZHI7CisgICAgfQorICAg
IHRhaWwuY2RyID0gbnVsbDsKKyAgICByZXR1cm4gZHVtbXkuY2RyOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZGVsZXRlKG8sIGwpIHsKKyAgICB2YXIgZHVt
bXkgPSB7IGNkciA6IG51bGwgfTsKKyAgICB2YXIgdGFpbCA9IGR1bW15OworICAgIHdoaWxlIChs
ICE9PSBudWxsKSB7CisgICAgICAgIGlmICghc2NfaXNFcXVhbChsLmNhciwgbykpIHsKKyAgICAg
ICAgICAgIHRhaWwuY2RyID0gc2NfY29ucyhsLmNhciwgbnVsbCk7CisgICAgICAgICAgICB0YWls
ID0gdGFpbC5jZHI7CisgICAgICAgIH0KKyAgICAgICAgbCA9IGwuY2RyOworICAgIH0KKyAgICBy
ZXR1cm4gZHVtbXkuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rp
b24gc2NfZGVsZXRlQmFuZyhvLCBsKSB7CisgICAgdmFyIGR1bW15ID0geyBjZHIgOiBudWxsIH07
CisgICAgdmFyIHRhaWwgPSBkdW1teTsKKyAgICB2YXIgbmVlZHNBc3NpZyA9IHRydWU7CisgICAg
d2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKHNjX2lzRXF1YWwobC5jYXIsIG8pKSB7
CisgICAgICAgICAgICBuZWVkc0Fzc2lnID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChuZWVkc0Fzc2lnKSB7CisgICAgICAgICAgICAgICAgdGFpbC5jZHIgPSBsOwor
ICAgICAgICAgICAgICAgIG5lZWRzQXNzaWcgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHRhaWwgPSBsOworICAgICAgICB9CisgICAgICAgIGwgPSBsLmNkcjsKKyAgICB9Cisg
ICAgdGFpbC5jZHIgPSBudWxsOworICAgIHJldHVybiBkdW1teS5jZHI7Cit9CisKK2Z1bmN0aW9u
IHNjX3JldmVyc2VBcHBlbmRCYW5nKGwxLCBsMikgeworICAgIHZhciByZXMgPSBsMjsKKyAgICB3
aGlsZSAobDEgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9IHJlczsKKyAgICAgICAgcmVz
ID0gbDE7CisgICAgICAgIGwxID0gbDEuY2RyOworICAgICAgICByZXMuY2RyID0gdG1wOworICAg
IH0KKyAgICByZXR1cm4gcmVzOworfQorICAgICAgICAKK2Z1bmN0aW9uIHNjX2R1YWxBcHBlbmQo
bDEsIGwyKSB7CisgICAgaWYgKGwxID09PSBudWxsKSByZXR1cm4gbDI7CisgICAgaWYgKGwyID09
PSBudWxsKSByZXR1cm4gbDE7CisgICAgdmFyIHJldiA9IHNjX3JldmVyc2UobDEpOworICAgIHJl
dHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXYsIGwyKTsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2FwcGVuZCgpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMCkKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgdmFyIHJlcyA9IGFyZ3VtZW50
c1thcmd1bWVudHMubGVuZ3RoIC0gMV07CisgICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5n
dGggLSAyOyBpID49IDA7IGktLSkKKyAgICAgICAgcmVzID0gc2NfZHVhbEFwcGVuZChhcmd1bWVu
dHNbaV0sIHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworZnVuY3Rpb24gc2NfZHVhbEFwcGVu
ZEJhbmcobDEsIGwyKSB7CisgICAgaWYgKGwxID09PSBudWxsKSByZXR1cm4gbDI7CisgICAgaWYg
KGwyID09PSBudWxsKSByZXR1cm4gbDE7CisgICAgdmFyIHRtcCA9IGwxOworICAgIHdoaWxlICh0
bXAuY2RyICE9PSBudWxsKSB0bXA9dG1wLmNkcjsKKyAgICB0bXAuY2RyID0gbDI7CisgICAgcmV0
dXJuIGwxOworfQorICAgIAorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNj
X2FwcGVuZEJhbmcoKSB7CisgICAgdmFyIHJlcyA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisgICAgICAgIHJlcyA9IHNjX2R1YWxBcHBlbmRC
YW5nKHJlcywgYXJndW1lbnRzW2ldKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcmV2ZXJzZShsMSkgeworICAgIHZhciByZXMg
PSBudWxsOworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworICAgICAgICByZXMgPSBzY19jb25z
KGwxLmNhciwgcmVzKTsKKyAgICAgICAgbDEgPSBsMS5jZHI7CisgICAgfQorICAgIHJldHVybiBy
ZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19yZXZlcnNl
QmFuZyhsKSB7CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKGwsIG51bGwpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbGlzdFRhaWwobCwgaykg
eworICAgIHZhciByZXMgPSBsOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7Cisg
ICAgICAgIHJlcyA9IHJlcy5jZHI7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19saXN0UmVmKGwsIGspIHsKKyAgICBy
ZXR1cm4gc2NfbGlzdFRhaWwobCwgaykuY2FyOworfQorCisvKiAvLyB1bm9wdGltaXplZCBnZW5l
cmljIHZlcnNpb25zCitmdW5jdGlvbiBzY19tZW1YKG8sIGwsIGNvbXApIHsKKyAgICB3aGlsZSAo
bCAhPSBudWxsKSB7CisgICAgICAgIGlmIChjb21wKGwuY2FyLCBvKSkKKyAgICAgICAgICAgIHJl
dHVybiBsOworICAgICAgICBsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
K2Z1bmN0aW9uIHNjX21lbXEobywgbCkgeyByZXR1cm4gc2NfbWVtWChvLCBsLCBzY19pc0VxKTsg
fQorZnVuY3Rpb24gc2NfbWVtdihvLCBsKSB7IHJldHVybiBzY19tZW1YKG8sIGwsIHNjX2lzRXF2
KTsgfQorZnVuY3Rpb24gc2NfbWVtYmVyKG8sIGwpIHsgcmV0dXJuIHNjX21lbVgobywgbCwgc2Nf
aXNFcXVhbCk7IH0KKyovCisKKy8qIG9wdGltaXplZCB2ZXJzaW9ucyAqLworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX21lbXEobywgbCkgeworICAgIHdoaWxlIChsICE9
PSBudWxsKSB7CisgICAgICAgIGlmIChsLmNhciA9PT0gbykKKyAgICAgICAgICAgIHJldHVybiBs
OworICAgICAgICBsID0gbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKy8qKiog
TUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19tZW12KG8sIGwpIHsKKyAgICB3aGls
ZSAobCAhPT0gbnVsbCkgeworICAgICAgICBpZiAobC5jYXIgPT09IG8pCisgICAgICAgICAgICBy
ZXR1cm4gbDsKKyAgICAgICAgbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWVtYmVyKG8sIGwpIHsK
KyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworICAgICAgICBpZiAoc2NfaXNFcXVhbChsLmNhcixv
KSkKKyAgICAgICAgICAgIHJldHVybiBsOworICAgICAgICBsID0gbC5jZHI7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworLyogLy8gZ2VuZXJpYyB1bm9wdGltaXplZCB2ZXJzaW9ucwor
ZnVuY3Rpb24gc2NfYXNzWChvLCBhbCwgY29tcCkgeworICAgIHdoaWxlIChhbCAhPSBudWxsKSB7
CisgICAgICAgIGlmIChjb21wKGFsLmNhci5jYXIsIG8pKQorICAgICAgICAgICAgcmV0dXJuIGFs
LmNhcjsKKyAgICAgICAgYWwgPSBhbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
K2Z1bmN0aW9uIHNjX2Fzc3EobywgYWwpIHsgcmV0dXJuIHNjX2Fzc1gobywgYWwsIHNjX2lzRXEp
OyB9CitmdW5jdGlvbiBzY19hc3N2KG8sIGFsKSB7IHJldHVybiBzY19hc3NYKG8sIGFsLCBzY19p
c0Vxdik7IH0KK2Z1bmN0aW9uIHNjX2Fzc29jKG8sIGFsKSB7IHJldHVybiBzY19hc3NYKG8sIGFs
LCBzY19pc0VxdWFsKTsgfQorKi8KKy8vIG9wdGltaXplZCB2ZXJzaW9ucworLyoqKiBNRVRBICgo
ZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Fzc3EobywgYWwpIHsKKyAgICB3aGlsZSAoYWwg
IT09IG51bGwpIHsKKyAgICAgICAgaWYgKGFsLmNhci5jYXIgPT09IG8pCisgICAgICAgICAgICBy
ZXR1cm4gYWwuY2FyOworICAgICAgICBhbCA9IGFsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2Fzc3Yobywg
YWwpIHsKKyAgICB3aGlsZSAoYWwgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKGFsLmNhci5jYXIg
PT09IG8pCisgICAgICAgICAgICByZXR1cm4gYWwuY2FyOworICAgICAgICBhbCA9IGFsLmNkcjsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX2Fzc29jKG8sIGFsKSB7CisgICAgd2hpbGUgKGFsICE9PSBudWxsKSB7Cisg
ICAgICAgIGlmIChzY19pc0VxdWFsKGFsLmNhci5jYXIsIG8pKQorICAgICAgICAgICAgcmV0dXJu
IGFsLmNhcjsKKyAgICAgICAgYWwgPSBhbC5jZHI7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworLyogY2FuIGJlIHVzZWQgZm9yIG11dGFibGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVycyAq
LworZnVuY3Rpb24gc2NfaXNDaGFyU3RyaW5nRXF1YWwoY3MxLCBjczIpIHsgcmV0dXJuIGNzMS52
YWwgPT09IGNzMi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0xlc3MoY3MxLCBjczIp
IHsgcmV0dXJuIGNzMS52YWwgPCBjczIudmFsOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdH
cmVhdGVyKGNzMSwgY3MyKSB7IHJldHVybiBjczEudmFsID4gY3MyLnZhbDsgfQorZnVuY3Rpb24g
c2NfaXNDaGFyU3RyaW5nTGVzc0VxdWFsKGNzMSwgY3MyKSB7IHJldHVybiBjczEudmFsIDw9IGNz
Mi52YWw7IH0KK2Z1bmN0aW9uIHNjX2lzQ2hhclN0cmluZ0dyZWF0ZXJFcXVhbChjczEsIGNzMikg
eyByZXR1cm4gY3MxLnZhbCA+PSBjczIudmFsOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdD
SUVxdWFsKGNzMSwgY3MyKQorICAgIHsgcmV0dXJuIGNzMS52YWwudG9Mb3dlckNhc2UoKSA9PT0g
Y3MyLnZhbC50b0xvd2VyQ2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUxlc3Mo
Y3MxLCBjczIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpIDwgY3MyLnZhbC50
b0xvd2VyQ2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUdyZWF0ZXIoY3MxLCBj
czIpCisgICAgeyByZXR1cm4gY3MxLnZhbC50b0xvd2VyQ2FzZSgpID4gY3MyLnZhbC50b0xvd2Vy
Q2FzZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUxlc3NFcXVhbChjczEsIGNzMikK
KyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPD0gY3MyLnZhbC50b0xvd2VyQ2Fz
ZSgpOyB9CitmdW5jdGlvbiBzY19pc0NoYXJTdHJpbmdDSUdyZWF0ZXJFcXVhbChjczEsIGNzMikK
KyAgICB7IHJldHVybiBjczEudmFsLnRvTG93ZXJDYXNlKCkgPj0gY3MyLnZhbC50b0xvd2VyQ2Fz
ZSgpOyB9CisKKworCisKK2Z1bmN0aW9uIHNjX0NoYXIoYykgeworICAgIHZhciBjYWNoZWQgPSBz
Y19DaGFyLmxhenlbY107CisgICAgaWYgKGNhY2hlZCkKKyAgICAgICAgcmV0dXJuIGNhY2hlZDsK
KyAgICB0aGlzLnZhbCA9IGM7CisgICAgc2NfQ2hhci5sYXp5W2NdID0gdGhpczsKKyAgICAvLyBh
ZGQgcmV0dXJuLCBzbyBGRiBkb2VzIG5vdCBjb21wbGFpbi4KKyAgICByZXR1cm4gdW5kZWZpbmVk
OworfQorc2NfQ2hhci5sYXp5ID0gbmV3IE9iamVjdCgpOworCitzY19DaGFyLnByb3RvdHlwZS50
b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnZhbDsKK307CisvLyBzY190
b0Rpc3BsYXlTdHJpbmcgPT0gdG9TdHJpbmcKK3NjX0NoYXIucHJvdG90eXBlLnNjX3RvV3JpdGVT
dHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIiNcXCIgKyB0aGlzLnZhbDsKK307CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICJpbnN0YW5jZW9mIHNjX0NoYXIiKSkpCisqLworZnVuY3Rp
b24gc2NfaXNDaGFyKGMpIHsKKyAgICByZXR1cm4gKGMgaW5zdGFuY2VvZiBzY19DaGFyKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI9PykKKyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAg
ICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPT09ICIgYzIgIi52YWwiKSkpCisq
LwordmFyIHNjX2lzQ2hhckVxdWFsID0gc2NfaXNDaGFyU3RyaW5nRXF1YWw7CisvKioqIE1FVEEg
KChleHBvcnQgY2hhcjw/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVl
cGhvbGUgKGhvbGUgMiBjMSAiLnZhbCA8ICIgYzIgIi52YWwiKSkpCisqLwordmFyIHNjX2lzQ2hh
ckxlc3MgPSBzY19pc0NoYXJTdHJpbmdMZXNzOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXI+PykK
KyAgICAgICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEg
Ii52YWwgPiAiIGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJHcmVhdGVyID0gc2NfaXND
aGFyU3RyaW5nR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyPD0/KQorICAgICAgICAg
ICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbCA8PSAi
IGMyICIudmFsIikpKQorKi8KK3ZhciBzY19pc0NoYXJMZXNzRXF1YWwgPSBzY19pc0NoYXJTdHJp
bmdMZXNzRXF1YWw7CisvKioqIE1FVEEgKChleHBvcnQgY2hhcj49PykKKyAgICAgICAgICAgKHR5
cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwgPj0gIiBjMiAi
LnZhbCIpKSkKKyovCit2YXIgc2NfaXNDaGFyR3JlYXRlckVxdWFsID0gc2NfaXNDaGFyU3RyaW5n
R3JlYXRlckVxdWFsOworLyoqKiBNRVRBICgoZXhwb3J0IGNoYXItY2k9PykKKyAgICAgICAgICAg
KHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgYzEgIi52YWwudG9Mb3dl
ckNhc2UoKSA9PT0gIiBjMiAiLnZhbC50b0xvd2VyQ2FzZSgpIikpKQorKi8KK3ZhciBzY19pc0No
YXJDSUVxdWFsID0gc2NfaXNDaGFyU3RyaW5nQ0lFcXVhbDsKKy8qKiogTUVUQSAoKGV4cG9ydCBj
aGFyLWNpPD8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPCAiIGMyICIudmFsLnRvTG93ZXJDYXNlKCki
KSkpCisqLwordmFyIHNjX2lzQ2hhckNJTGVzcyA9IHNjX2lzQ2hhclN0cmluZ0NJTGVzczsKKy8q
KiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPj8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIGMxICIudmFsLnRvTG93ZXJDYXNlKCkgPiAiIGMyICIu
dmFsLnRvTG93ZXJDYXNlKCkiKSkpCisqLwordmFyIHNjX2lzQ2hhckNJR3JlYXRlciA9IHNjX2lz
Q2hhclN0cmluZ0NJR3JlYXRlcjsKKy8qKiogTUVUQSAoKGV4cG9ydCBjaGFyLWNpPD0/KQorICAg
ICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZh
bC50b0xvd2VyQ2FzZSgpIDw9ICIgYzIgIi52YWwudG9Mb3dlckNhc2UoKSIpKSkKKyovCit2YXIg
c2NfaXNDaGFyQ0lMZXNzRXF1YWwgPSBzY19pc0NoYXJTdHJpbmdDSUxlc3NFcXVhbDsKKy8qKiog
TUVUQSAoKGV4cG9ydCBjaGFyLWNpPj0/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAgICAg
ICAgICAocGVlcGhvbGUgKGhvbGUgMiBjMSAiLnZhbC50b0xvd2VyQ2FzZSgpID49ICIgYzIgIi52
YWwudG9Mb3dlckNhc2UoKSIpKSkKKyovCit2YXIgc2NfaXNDaGFyQ0lHcmVhdGVyRXF1YWwgPSBz
Y19pc0NoYXJTdHJpbmdDSUdyZWF0ZXJFcXVhbDsKKwordmFyIFNDX05VTUJFUl9DTEFTUyA9ICIw
MTIzNDU2Nzg5IjsKK3ZhciBTQ19XSElURVNQQUNFX0NMQVNTID0gJyBcclxuXHRcZic7Cit2YXIg
U0NfTE9XRVJfQ0xBU1MgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonOwordmFyIFNDX1VQ
UEVSX0NMQVNTID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzsKKworZnVuY3Rpb24gc2Nf
aXNDaGFyT2ZDbGFzcyhjLCBjbCkgeyByZXR1cm4gKGNsLmluZGV4T2YoYykgIT0gLTEpOyB9Cisv
KioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8KK2Z1bmN0
aW9uIHNjX2lzQ2hhckFscGhhYmV0aWMoYykKKyAgICB7IHJldHVybiBzY19pc0NoYXJPZkNsYXNz
KGMudmFsLCBTQ19MT1dFUl9DTEFTUykgfHwKKyAgICAgICAgICBzY19pc0NoYXJPZkNsYXNzKGMu
dmFsLCBTQ19VUFBFUl9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDEgIlNDX05VTUJFUl9D
TEFTUy5pbmRleE9mKCIgYyAiLnZhbCkgIT0gLTEiKSkpCisqLworZnVuY3Rpb24gc2NfaXNDaGFy
TnVtZXJpYyhjKQorICAgIHsgcmV0dXJuIHNjX2lzQ2hhck9mQ2xhc3MoYy52YWwsIFNDX05VTUJF
Ul9DTEFTUyk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHR5cGUgYm9v
bCkpCisqLworZnVuY3Rpb24gc2NfaXNDaGFyV2hpdGVzcGFjZShjKSB7CisgICAgdmFyIHRtcCA9
IGMudmFsOworICAgIHJldHVybiB0bXAgPT09ICIgIiB8fCB0bXAgPT09ICJcciIgfHwgdG1wID09
PSAiXG4iIHx8IHRtcCA9PT0gIlx0IiB8fCB0bXAgPT09ICJcZiI7Cit9CisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAxICJTQ19VUFBFUl9DTEFTUy5pbmRleE9mKCIgYyAiLnZhbCkgIT0gLTEiKSkpCisqLwor
ZnVuY3Rpb24gc2NfaXNDaGFyVXBwZXJDYXNlKGMpCisgICAgeyByZXR1cm4gc2NfaXNDaGFyT2ZD
bGFzcyhjLnZhbCwgU0NfVVBQRVJfQ0xBU1MpOyB9CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisg
ICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJTQ19M
T1dFUl9DTEFTUy5pbmRleE9mKCIgYyAiLnZhbCkgIT0gLTEiKSkpCisqLworZnVuY3Rpb24gc2Nf
aXNDaGFyTG93ZXJDYXNlKGMpCisgICAgeyByZXR1cm4gc2NfaXNDaGFyT2ZDbGFzcyhjLnZhbCwg
U0NfTE9XRVJfQ0xBU1MpOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChwb3N0Zml4ICIudmFsLmNoYXJDb2RlQXQoMCkiKSkpCisqLworZnVuY3Rpb24g
c2NfY2hhcjJpbnRlZ2VyKGMpCisgICAgeyByZXR1cm4gYy52YWwuY2hhckNvZGVBdCgwKTsgfQor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMSAibmV3
IHNjX0NoYXIoU3RyaW5nLmZyb21DaGFyQ29kZSgiIG4gIikpIikpKQorKi8KK2Z1bmN0aW9uIHNj
X2ludGVnZXIyY2hhcihuKQorICAgIHsgcmV0dXJuIG5ldyBzY19DaGFyKFN0cmluZy5mcm9tQ2hh
ckNvZGUobikpOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBo
b2xlIChob2xlIDEgIm5ldyBzY19DaGFyKCIgYyAiLnZhbC50b1VwcGVyQ2FzZSgpKSIpKSkKKyov
CitmdW5jdGlvbiBzY19jaGFyVXBjYXNlKGMpCisgICAgeyByZXR1cm4gbmV3IHNjX0NoYXIoYy52
YWwudG9VcHBlckNhc2UoKSk7IH0KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDEgIm5ldyBzY19DaGFyKCIgYyAiLnZhbC50b0xvd2VyQ2FzZSgpKSIp
KSkKKyovCitmdW5jdGlvbiBzY19jaGFyRG93bmNhc2UoYykKKyAgICB7IHJldHVybiBuZXcgc2Nf
Q2hhcihjLnZhbC50b0xvd2VyQ2FzZSgpKTsgfQorCitmdW5jdGlvbiBzY19tYWtlSlNTdHJpbmdP
Zkxlbmd0aChrLCBjKSB7CisgICAgdmFyIGZpbGw7CisgICAgaWYgKGMgPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgZmlsbCA9ICIgIjsKKyAgICBlbHNlCisgICAgICAgIGZpbGwgPSBjOworICAgIHZh
ciByZXMgPSAiIjsKKyAgICB2YXIgbGVuID0gMTsKKyAgICAvLyBldmVyeSByb3VuZCBkb3VibGVz
IHRoZSBzaXplIG9mIGZpbGwuCisgICAgd2hpbGUgKGsgPj0gbGVuKSB7CisgICAgICAgIGlmIChr
ICYgbGVuKQorICAgICAgICAgICAgcmVzID0gcmVzLmNvbmNhdChmaWxsKTsKKyAgICAgICAgZmls
bCA9IGZpbGwuY29uY2F0KGZpbGwpOworICAgICAgICBsZW4gKj0gMjsKKyAgICB9CisgICAgcmV0
dXJuIHJlczsKK30KKworZnVuY3Rpb24gc2NfbWFrZWpzU3RyaW5nKGssIGMpIHsKKyAgICB2YXIg
ZmlsbDsKKyAgICBpZiAoYykKKyAgICAgICAgZmlsbCA9IGMudmFsOworICAgIGVsc2UKKyAgICAg
ICAgZmlsbCA9ICIgIjsKKyAgICByZXR1cm4gc2NfbWFrZUpTU3RyaW5nT2ZMZW5ndGgoaywgZmls
bCk7Cit9CisKK2Z1bmN0aW9uIHNjX2pzc3RyaW5nMmxpc3QocykgeworICAgIHZhciByZXMgPSBu
dWxsOworICAgIGZvciAodmFyIGkgPSBzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAg
ICByZXMgPSBzY19jb25zKG5ldyBzY19DaGFyKHMuY2hhckF0KGkpKSwgcmVzKTsKKyAgICByZXR1
cm4gcmVzOworfQorCitmdW5jdGlvbiBzY19saXN0Mmpzc3RyaW5nKGwpIHsKKyAgICB2YXIgYSA9
IG5ldyBBcnJheSgpOworICAgIHdoaWxlKGwgIT09IG51bGwpIHsKKyAgICAgICAgYS5wdXNoKGwu
Y2FyLnZhbCk7CisgICAgICAgIGwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuICIiLmNvbmNh
dC5hcHBseSgiIiwgYSk7Cit9CisKK3ZhciBzY19WZWN0b3IgPSBBcnJheTsKKworc2NfVmVjdG9y
LnByb3RvdHlwZS5zY190b1dyaXRlT3JEaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24od3JpdGVPckRp
c3BsYXkpIHsKKyAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiAiIygpIjsKKworICAg
IHZhciByZXMgPSAiIygiICsgd3JpdGVPckRpc3BsYXkodGhpc1swXSk7CisgICAgZm9yICh2YXIg
aSA9IDE7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKQorICAgICAgICByZXMgKz0gIiAiICsgd3JpdGVP
ckRpc3BsYXkodGhpc1tpXSk7CisgICAgcmVzICs9ICIpIjsKKyAgICByZXR1cm4gcmVzOworfTsK
K3NjX1ZlY3Rvci5wcm90b3R5cGUuc2NfdG9EaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHRoaXMuc2NfdG9Xcml0ZU9yRGlzcGxheVN0cmluZyhzY190b0Rpc3BsYXlTdHJp
bmcpOworfTsKK3NjX1ZlY3Rvci5wcm90b3R5cGUuc2NfdG9Xcml0ZVN0cmluZyA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB0aGlzLnNjX3RvV3JpdGVPckRpc3BsYXlTdHJpbmcoc2NfdG9Xcml0
ZVN0cmluZyk7Cit9OworCisvKioqIE1FVEEgKChleHBvcnQgdmVjdG9yPyBhcnJheT8pCisgICAg
ICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3Rh
bmNlb2Ygc2NfVmVjdG9yIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzVmVjdG9yKHYpIHsKKyAgICBy
ZXR1cm4gKHYgaW5zdGFuY2VvZiBzY19WZWN0b3IpOworfQorCisvLyBvbmx5IGFwcGxpZXMgdG8g
dmVjdG9ycworZnVuY3Rpb24gc2NfaXNWZWN0b3JFcXVhbCh2MSwgdjIsIGNvbXApIHsKKyAgICBp
ZiAodjEubGVuZ3RoICE9PSB2Mi5sZW5ndGgpIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHYxLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoIWNvbXAodjFbaV0sIHYyW2ld
KSkgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgbWFrZS12ZWN0b3IgbWFrZS1hcnJheSkpICovCitmdW5jdGlvbiBzY19tYWtlVmVjdG9yKHNp
emUsIGZpbGwpIHsKKyAgICB2YXIgYSA9IG5ldyBzY19WZWN0b3Ioc2l6ZSk7CisgICAgaWYgKGZp
bGwgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgc2NfdmVjdG9yRmlsbEJhbmcoYSwgZmlsbCk7Cisg
ICAgcmV0dXJuIGE7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCB2ZWN0b3IgYXJyYXkpCisgICAg
ICAgICAgIChwZWVwaG9sZSAodmVjdG9yKSkpCisqLworZnVuY3Rpb24gc2NfdmVjdG9yKCkgewor
ICAgIHZhciBhID0gbmV3IHNjX1ZlY3RvcigpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJn
dW1lbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBhLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgICBy
ZXR1cm4gYTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHZlY3Rvci1sZW5ndGggYXJyYXktbGVu
Z3RoKQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXggIi5sZW5ndGgiKSkpCisqLworZnVu
Y3Rpb24gc2NfdmVjdG9yTGVuZ3RoKHYpIHsKKyAgICByZXR1cm4gdi5sZW5ndGg7Cit9CisKKy8q
KiogTUVUQSAoKGV4cG9ydCB2ZWN0b3ItcmVmIGFycmF5LXJlZikKKyAgICAgICAgICAgKHBlZXBo
b2xlIChob2xlIDIgdiAiWyIgcG9zICJdIikpKQorKi8KK2Z1bmN0aW9uIHNjX3ZlY3RvclJlZih2
LCBwb3MpIHsKKyAgICByZXR1cm4gdltwb3NdOworfQorCisvKioqIE1FVEEgKChleHBvcnQgdmVj
dG9yLXNldCEgYXJyYXktc2V0ISkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDMgdiAiWyIg
cG9zICJdID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY192ZWN0b3JTZXRCYW5nKHYsIHBvcywg
dmFsKSB7CisgICAgdltwb3NdID0gdmFsOworfQorCisvKioqIE1FVEEgKChleHBvcnQgdmVjdG9y
LT5saXN0IGFycmF5LT5saXN0KSkgKi8KK2Z1bmN0aW9uIHNjX3ZlY3RvcjJsaXN0KGEpIHsKKyAg
ICB2YXIgcmVzID0gbnVsbDsKKyAgICBmb3IgKHZhciBpID0gYS5sZW5ndGgtMTsgaSA+PSAwOyBp
LS0pCisgICAgICAgIHJlcyA9IHNjX2NvbnMoYVtpXSwgcmVzKTsKKyAgICByZXR1cm4gcmVzOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgbGlzdC0+dmVjdG9yIGxpc3QtPmFycmF5KSkgKi8KK2Z1
bmN0aW9uIHNjX2xpc3QydmVjdG9yKGwpIHsKKyAgICB2YXIgYSA9IG5ldyBzY19WZWN0b3IoKTsK
KyAgICB3aGlsZShsICE9PSBudWxsKSB7CisgICAgICAgIGEucHVzaChsLmNhcik7CisgICAgICAg
IGwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIGE7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCB2ZWN0b3ItZmlsbCEgYXJyYXktZmlsbCEpKSAqLworZnVuY3Rpb24gc2NfdmVjdG9yRmlsbEJh
bmcoYSwgZmlsbCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAg
ICAgICAgYVtpXSA9IGZpbGw7Cit9CisKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX2NvcHlWZWN0b3IoYSwgbGVuKSB7CisgICAgaWYgKGxlbiA8PSBhLmxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgbGVuKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFy
IHRtcCA9IGEuY29uY2F0KCk7CisgICAgICAgIHRtcC5sZW5ndGggPSBsZW47CisgICAgICAgIHJl
dHVybiB0bXA7CisgICAgfQorfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAg
IChwZWVwaG9sZSAoaG9sZSAzIGEgIi5zbGljZSgiIHN0YXJ0ICIsIiBlbmQgIikiKSkpCisqLwor
ZnVuY3Rpb24gc2NfdmVjdG9yQ29weShhLCBzdGFydCwgZW5kKSB7CisgICAgcmV0dXJuIGEuc2xp
Y2Uoc3RhcnQsIGVuZCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlv
biBzY192ZWN0b3JDb3B5QmFuZyh0YXJnZXQsIHRzdGFydCwgc291cmNlLCBzc3RhcnQsIHNlbmQp
IHsKKyAgICBpZiAoIXNzdGFydCkgc3N0YXJ0ID0gMDsKKyAgICBpZiAoIXNlbmQpIHNlbmQgPSBz
b3VyY2UubGVuZ3RoOworCisgICAgLy8gaWYgdGFyZ2V0ID09IHNvdXJjZSB3ZSBkb24ndCB3YW50
IHRvIG92ZXJ3cml0ZSBub3QgeWV0IGNvcGllZCBlbGVtZW50cy4KKyAgICBpZiAodHN0YXJ0IDw9
IHNzdGFydCkgeworICAgICAgICBmb3IgKHZhciBpID0gdHN0YXJ0LCBqID0gc3N0YXJ0OyBqIDwg
c2VuZDsgaSsrLCBqKyspIHsKKyAgICAgICAgICAgIHRhcmdldFtpXSA9IHNvdXJjZVtqXTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBkaWZmID0gc2VuZCAtIHNzdGFydDsK
KyAgICAgICAgZm9yICh2YXIgaSA9IHRzdGFydCArIGRpZmYgLSAxLCBqID0gc2VuZCAtIDE7Cisg
ICAgICAgICAgICAgaiA+PSBzc3RhcnQ7CisgICAgICAgICAgICAgaS0tLCBqLS0pIHsKKyAgICAg
ICAgICAgIHRhcmdldFtpXSA9IHNvdXJjZVtqXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gdGFyZ2V0OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBl
IGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAxICJ0eXBlb2YgIiBvICIgPT09ICdm
dW5jdGlvbiciKSkpCisqLworZnVuY3Rpb24gc2NfaXNQcm9jZWR1cmUobykgeworICAgIHJldHVy
biAodHlwZW9mIG8gPT09ICJmdW5jdGlvbiIpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
KSAqLworZnVuY3Rpb24gc2NfYXBwbHkocHJvYykgeworICAgIHZhciBhcmdzID0gbmV3IEFycmF5
KCk7CisgICAgLy8gZmlyc3QgcGFydCBvZiBhcmd1bWVudHMgYXJlIG5vdCBpbiBsaXN0LWZvcm0u
CisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKQorICAg
ICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTsKKyAgICB2YXIgbCA9IGFyZ3VtZW50c1thcmd1
bWVudHMubGVuZ3RoIC0gMV07CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAgICAgYXJn
cy5wdXNoKGwuY2FyKTsKKyAgICAgICAgbCA9IGwuY2RyOworICAgIH0KKyAgICByZXR1cm4gcHJv
Yy5hcHBseShudWxsLCBhcmdzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX21hcChwcm9jLCBsMSkgeworICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAvLyBlbHNlCisgICAgdmFyIG5iQXBwbHlBcmdzID0gYXJn
dW1lbnRzLmxlbmd0aCAtIDE7CisgICAgdmFyIGFwcGx5QXJncyA9IG5ldyBBcnJheShuYkFwcGx5
QXJncyk7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmJBcHBseUFyZ3M7IGkrKykgeworICAgICAg
ICAgICAgYXBwbHlBcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXS5jYXI7CisgICAgICAgICAgICBh
cmd1bWVudHNbaSArIDFdID0gYXJndW1lbnRzW2kgKyAxXS5jZHI7CisgICAgICAgIH0KKyAgICAg
ICAgcmV2cmVzID0gc2NfY29ucyhwcm9jLmFwcGx5KG51bGwsIGFwcGx5QXJncyksIHJldnJlcyk7
CisgICAgfQorICAgIHJldHVybiBzY19yZXZlcnNlQXBwZW5kQmFuZyhyZXZyZXMsIG51bGwpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWFwQmFuZyhwcm9j
LCBsMSkgeworICAgIGlmIChsMSA9PT0gdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICAvLyBlbHNlCisgICAgdmFyIGwxX29yaWcgPSBsMTsKKyAgICB2YXIgbmJBcHBseUFyZ3Mg
PSBhcmd1bWVudHMubGVuZ3RoIC0gMTsKKyAgICB2YXIgYXBwbHlBcmdzID0gbmV3IEFycmF5KG5i
QXBwbHlBcmdzKTsKKyAgICB3aGlsZSAobDEgIT09IG51bGwpIHsKKyAgICAgICAgdmFyIHRtcCA9
IGwxOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKyAg
ICAgICAgICAgIGFwcGx5QXJnc1tpXSA9IGFyZ3VtZW50c1tpICsgMV0uY2FyOworICAgICAgICAg
ICAgYXJndW1lbnRzW2kgKyAxXSA9IGFyZ3VtZW50c1tpICsgMV0uY2RyOworICAgICAgICB9Cisg
ICAgICAgIHRtcC5jYXIgPSBwcm9jLmFwcGx5KG51bGwsIGFwcGx5QXJncyk7CisgICAgfQorICAg
IHJldHVybiBsMV9vcmlnOworfQorICAgICAKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY19mb3JFYWNoKHByb2MsIGwxKSB7CisgICAgaWYgKGwxID09PSB1bmRlZmluZWQp
CisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgLy8gZWxzZQorICAgIHZhciBuYkFwcGx5
QXJncyA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOworICAgIHZhciBhcHBseUFyZ3MgPSBuZXcgQXJy
YXkobmJBcHBseUFyZ3MpOworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG5iQXBwbHlBcmdzOyBpKyspIHsKKyAgICAgICAgICAgIGFwcGx5QXJn
c1tpXSA9IGFyZ3VtZW50c1tpICsgMV0uY2FyOworICAgICAgICAgICAgYXJndW1lbnRzW2kgKyAx
XSA9IGFyZ3VtZW50c1tpICsgMV0uY2RyOworICAgICAgICB9CisgICAgICAgIHByb2MuYXBwbHko
bnVsbCwgYXBwbHlBcmdzKTsKKyAgICB9CisgICAgLy8gYWRkIHJldHVybiBzbyBGRiBkb2VzIG5v
dCBjb21wbGFpbi4KKyAgICByZXR1cm4gdW5kZWZpbmVkOworfQorCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZmlsdGVyKHByb2MsIGwxKSB7CisgICAgdmFyIGR1bW15
ID0geyBjZHIgOiBudWxsIH07CisgICAgdmFyIHRhaWwgPSBkdW1teTsKKyAgICB3aGlsZSAobDEg
IT09IG51bGwpIHsKKyAgICAgICAgaWYgKHByb2MobDEuY2FyKSAhPT0gZmFsc2UpIHsKKyAgICAg
ICAgICAgIHRhaWwuY2RyID0gc2NfY29ucyhsMS5jYXIsIG51bGwpOworICAgICAgICAgICAgdGFp
bCA9IHRhaWwuY2RyOworICAgICAgICB9CisgICAgICAgIGwxID0gbDEuY2RyOworICAgIH0KKyAg
ICByZXR1cm4gZHVtbXkuY2RyOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVu
Y3Rpb24gc2NfZmlsdGVyQmFuZyhwcm9jLCBsMSkgeworICAgIHZhciBoZWFkID0gc2NfY29ucygi
ZHVtbXkiLCBsMSk7CisgICAgdmFyIGl0ID0gaGVhZDsKKyAgICB2YXIgbmV4dCA9IGwxOworICAg
IHdoaWxlIChuZXh0ICE9PSBudWxsKSB7CisgICAgICAgIGlmIChwcm9jKG5leHQuY2FyKSAhPT0g
ZmFsc2UpIHsKKyAgICAgICAgICAgIGl0LmNkciA9IG5leHQKKyAgICAgICAgICAgIGl0ID0gbmV4
dDsKKyAgICAgICAgfQorICAgICAgICBuZXh0ID0gbmV4dC5jZHI7CisgICAgfQorICAgIGl0LmNk
ciA9IG51bGw7CisgICAgcmV0dXJuIGhlYWQuY2RyOworfQorCitmdW5jdGlvbiBzY19maWx0ZXJN
YXAxKHByb2MsIGwxKSB7CisgICAgdmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9
PSBudWxsKSB7CisgICAgICAgIHZhciB0bXAgPSBwcm9jKGwxLmNhcikKKyAgICAgICAgaWYgKHRt
cCAhPT0gZmFsc2UpIHJldnJlcyA9IHNjX2NvbnModG1wLCByZXZyZXMpOworICAgICAgICBsMSA9
IGwxLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJldnJlcywg
bnVsbCk7Cit9CitmdW5jdGlvbiBzY19maWx0ZXJNYXAyKHByb2MsIGwxLCBsMikgeworICAgIHZh
ciByZXZyZXMgPSBudWxsOworICAgIHdoaWxlIChsMSAhPT0gbnVsbCkgeworICAgICAgICB2YXIg
dG1wID0gcHJvYyhsMS5jYXIsIGwyLmNhcik7CisgICAgICAgIGlmKHRtcCAhPT0gZmFsc2UpIHJl
dnJlcyA9IHNjX2NvbnModG1wLCByZXZyZXMpOworICAgICAgICBsMSA9IGwxLmNkcjsKKyAgICAg
ICAgbDIgPSBsMi5jZHIKKyAgICB9CisgICAgcmV0dXJuIHNjX3JldmVyc2VBcHBlbmRCYW5nKHJl
dnJlcywgbnVsbCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19maWx0ZXJNYXAocHJvYywgbDEsIGwyLCBsMykgeworICAgIGlmIChsMiA9PT0gdW5kZWZpbmVk
KQorICAgICAgICByZXR1cm4gc2NfZmlsdGVyTWFwMShwcm9jLCBsMSk7CisgICAgZWxzZSBpZiAo
bDMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgcmV0dXJuIHNjX2ZpbHRlck1hcDIocHJvYywgbDEs
IGwyKTsKKyAgICAvLyBlbHNlCisgICAgdmFyIG5iQXBwbHlBcmdzID0gYXJndW1lbnRzLmxlbmd0
aCAtIDE7CisgICAgdmFyIGFwcGx5QXJncyA9IG5ldyBBcnJheShuYkFwcGx5QXJncyk7CisgICAg
dmFyIHJldnJlcyA9IG51bGw7CisgICAgd2hpbGUgKGwxICE9PSBudWxsKSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbmJBcHBseUFyZ3M7IGkrKykgeworICAgICAgICAgICAgYXBwbHlB
cmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXS5jYXI7CisgICAgICAgICAgICBhcmd1bWVudHNbaSAr
IDFdID0gYXJndW1lbnRzW2kgKyAxXS5jZHI7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHRtcCA9
IHByb2MuYXBwbHkobnVsbCwgYXBwbHlBcmdzKTsKKyAgICAgICAgaWYodG1wICE9PSBmYWxzZSkg
cmV2cmVzID0gc2NfY29ucyh0bXAsIHJldnJlcyk7CisgICAgfQorICAgIHJldHVybiBzY19yZXZl
cnNlQXBwZW5kQmFuZyhyZXZyZXMsIG51bGwpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
KSAqLworZnVuY3Rpb24gc2NfYW55KHByb2MsIGwpIHsKKyAgICB2YXIgcmV2cmVzID0gbnVsbDsK
KyAgICB3aGlsZSAobCAhPT0gbnVsbCkgeworICAgICAgICB2YXIgdG1wID0gcHJvYyhsLmNhcik7
CisgICAgICAgIGlmKHRtcCAhPT0gZmFsc2UpIHJldHVybiB0bXA7CisgICAgICAgIGwgPSBsLmNk
cjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKioqIE1FVEEgKChleHBvcnQgYW55
PykKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIgInNjX2FueSgiIHByb2MgIiwiIGwgIikg
IT09IGZhbHNlIikpKQorKi8KK2Z1bmN0aW9uIHNjX2FueVByZWQocHJvYywgbCkgeworICAgIHJl
dHVybiBzY19hbnkocHJvYywgbCkhPT0gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19ldmVyeShwcm9jLCBsKSB7CisgICAgdmFyIHJldnJlcyA9IG51
bGw7CisgICAgdmFyIHRtcCA9IHRydWU7CisgICAgd2hpbGUgKGwgIT09IG51bGwpIHsKKyAgICAg
ICAgdG1wID0gcHJvYyhsLmNhcik7CisgICAgICAgIGlmICh0bXAgPT09IGZhbHNlKSByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGwgPSBsLmNkcjsKKyAgICB9CisgICAgcmV0dXJuIHRtcDsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0IGV2ZXJ5PykKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDIg
InNjX2V2ZXJ5KCIgcHJvYyAiLCIgbCAiKSAhPT0gZmFsc2UiKSkpCisqLworZnVuY3Rpb24gc2Nf
ZXZlcnlQcmVkKHByb2MsIGwpIHsKKyAgICB2YXIgdG1wID0gc2NfZXZlcnkocHJvYywgbCk7Cisg
ICAgaWYgKHRtcCAhPT0gZmFsc2UpIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBvc3RmaXgg
IigpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2ZvcmNlKG8pIHsKKyAgICByZXR1cm4gbygpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfbWFrZVByb21pc2UocHJv
YykgeworICAgIHZhciBpc1Jlc3VsdFJlYWR5ID0gZmFsc2U7CisgICAgdmFyIHJlc3VsdCA9IHVu
ZGVmaW5lZDsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghaXNSZXN1bHRS
ZWFkeSkgeworICAgICAgICAgICAgdmFyIHRtcCA9IHByb2MoKTsKKyAgICAgICAgICAgIGlmICgh
aXNSZXN1bHRSZWFkeSkgeworICAgICAgICAgICAgICAgIGlzUmVzdWx0UmVhZHkgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRtcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHNjX1ZhbHVlcyh2
YWx1ZXMpIHsKKyAgICB0aGlzLnZhbHVlcyA9IHZhbHVlczsKK30KKworLyoqKiBNRVRBICgoZXhw
b3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHZhbHVlcykpKQorKi8KK2Z1bmN0aW9uIHNj
X3ZhbHVlcygpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgcmV0
dXJuIGFyZ3VtZW50c1swXTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBuZXcgc2NfVmFsdWVz
KGFyZ3VtZW50cyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19jYWxsV2l0aFZhbHVlcyhwcm9kdWNlciwgY29uc3VtZXIpIHsKKyAgICB2YXIgcHJvZHVjZWQg
PSBwcm9kdWNlcigpOworICAgIGlmIChwcm9kdWNlZCBpbnN0YW5jZW9mIHNjX1ZhbHVlcykKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVyLmFwcGx5KG51bGwsIHByb2R1Y2VkLnZhbHVlcyk7CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gY29uc3VtZXIocHJvZHVjZWQpOworfQorCisvKioqIE1FVEEg
KChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZHluYW1pY1dpbmQoYmVmb3JlLCB0aHVuaywg
YWZ0ZXIpIHsKKyAgICBiZWZvcmUoKTsKKyAgICB0cnkgeworICAgICAgICB2YXIgcmVzID0gdGh1
bmsoKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBhZnRl
cigpOworICAgIH0KK30KKworCisvLyBUT0RPOiBldmFsL3NjaGVtZS1yZXBvcnQtZW52aXJvbm1l
bnQvbnVsbC1lbnZpcm9ubWVudC9pbnRlcmFjdGlvbi1lbnZpcm9ubWVudAorCisvLyBMSU1JVEFU
SU9OOiAnbG9hZCcgZG9lc24ndCBleGlzdCB3aXRob3V0IGZpbGVzLgorLy8gTElNSVRBVElPTjog
dHJhbnNjcmlwdC1vbi90cmFuc2NyaXB0LW9mZiBkb2Vzbid0IGV4aXN0IHdpdGhvdXQgZmlsZXMu
CisKKworZnVuY3Rpb24gc2NfU3RydWN0KG5hbWUpIHsKKyAgICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorc2NfU3RydWN0LnByb3RvdHlwZS5zY190b0Rpc3BsYXlTdHJpbmcgPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gIiM8c3RydWN0IiArIHNjX2hhc2godGhpcykgKyAiPiI7Cit9Oworc2NfU3Ry
dWN0LnByb3RvdHlwZS5zY190b1dyaXRlU3RyaW5nID0gc2NfU3RydWN0LnByb3RvdHlwZS5zY190
b0Rpc3BsYXlTdHJpbmc7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBl
ZXBob2xlIChob2xlIDEgIm5ldyBzY19TdHJ1Y3QoIiBuYW1lICIpIikpKQorKi8KK2Z1bmN0aW9u
IHNjX21ha2VTdHJ1Y3QobmFtZSkgeworICAgIHJldHVybiBuZXcgc2NfU3RydWN0KG5hbWUpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfU3RydWN0IikpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzU3RydWN0KG8pIHsKKyAgICByZXR1cm4gKG8gaW5zdGFuY2VvZiBzY19T
dHJ1Y3QpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJv
b2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyICIoIiAxICIgaW5zdGFuY2VvZiBzY19T
dHJ1Y3QpICYmICggIiAxICIubmFtZSA9PT0gIiAwICIpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2lz
U3RydWN0TmFtZWQobmFtZSwgcykgeworICAgIHJldHVybiAoKHMgaW5zdGFuY2VvZiBzY19TdHJ1
Y3QpICYmIChzLm5hbWUgPT09IG5hbWUpKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHN0cnVj
dC1maWVsZCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xlIDMgMCAiWyIgMiAiXSIpKSkKKyov
CitmdW5jdGlvbiBzY19nZXRTdHJ1Y3RGaWVsZChzLCBuYW1lLCBmaWVsZCkgeworICAgIHJldHVy
biBzW2ZpZWxkXTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0IHN0cnVjdC1maWVsZC1zZXQhKQor
ICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgNCAwICJbIiAyICJdID0gIiAzKSkpCisqLworZnVu
Y3Rpb24gc2Nfc2V0U3RydWN0RmllbGRCYW5nKHMsIG5hbWUsIGZpZWxkLCB2YWwpIHsKKyAgICBz
W2ZpZWxkXSA9IHZhbDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAo
cGVlcGhvbGUgKHByZWZpeCAifiIpKSkKKyovCitmdW5jdGlvbiBzY19iaXROb3QoeCkgeworICAg
IHJldHVybiB+eDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKGluZml4IDIgMiAiJiIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRBbmQoeCwgeSkgewor
ICAgIHJldHVybiB4ICYgeTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKGluZml4IDIgMiAifCIpKSkKKyovCitmdW5jdGlvbiBzY19iaXRPcih4LCB5
KSB7CisgICAgcmV0dXJuIHggfCB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICJeIikpKQorKi8KK2Z1bmN0aW9uIHNjX2JpdFhv
cih4LCB5KSB7CisgICAgcmV0dXJuIHggXiB5OworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAoaW5maXggMiAyICI8PCIpKSkKKyovCitmdW5jdGlvbiBz
Y19iaXRMc2goeCwgeSkgeworICAgIHJldHVybiB4IDw8IHk7Cit9CisKKy8qKiogTUVUQSAoKGV4
cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpbmZpeCAyIDIgIj4+IikpKQorKi8KK2Z1
bmN0aW9uIHNjX2JpdFJzaCh4LCB5KSB7CisgICAgcmV0dXJuIHggPj4geTsKK30KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGluZml4IDIgMiAiPj4+Iikp
KQorKi8KK2Z1bmN0aW9uIHNjX2JpdFVyc2goeCwgeSkgeworICAgIHJldHVybiB4ID4+PiB5Owor
fQorCisvKioqIE1FVEEgKChleHBvcnQganMtZmllbGQganMtcHJvcGVydHkpCisgICAgICAgICAg
IChwZWVwaG9sZSAoaG9sZSAyIG8gIlsiIGZpZWxkICJdIikpKQorKi8KK2Z1bmN0aW9uIHNjX2pz
RmllbGQobywgZmllbGQpIHsKKyAgICByZXR1cm4gb1tmaWVsZF07Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCBqcy1maWVsZC1zZXQhIGpzLXByb3BlcnR5LXNldCEpCisgICAgICAgICAgIChwZWVw
aG9sZSAoaG9sZSAzIG8gIlsiIGZpZWxkICJdID0gIiB2YWwpKSkKKyovCitmdW5jdGlvbiBzY19z
ZXRKc0ZpZWxkQmFuZyhvLCBmaWVsZCwgdmFsKSB7CisgICAgcmV0dXJuIG9bZmllbGRdID0gdmFs
OworfQorCisvKioqIE1FVEEgKChleHBvcnQganMtZmllbGQtZGVsZXRlISBqcy1wcm9wZXJ0eS1k
ZWxldGUhKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiAiZGVsZXRlIiBvICJbIiBmaWVs
ZCAiXSIpKSkKKyovCitmdW5jdGlvbiBzY19kZWxldGVKc0ZpZWxkQmFuZyhvLCBmaWVsZCkgewor
ICAgIGRlbGV0ZSBvW2ZpZWxkXTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAocGVlcGhvbGUgKGpzQ2FsbCkpKQorKi8KK2Z1bmN0aW9uIHNjX2pzQ2FsbChvLCBmdW4p
IHsKKyAgICB2YXIgYXJncyA9IG5ldyBBcnJheSgpOworICAgIGZvciAodmFyIGkgPSAyOyBpIDwg
YXJndW1lbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBhcmdzW2ktMl0gPSBhcmd1bWVudHNbaV07
CisgICAgcmV0dXJuIGZ1bi5hcHBseShvLCBhcmdzKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0
ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKGpzTWV0aG9kQ2FsbCkpKQorKi8KK2Z1bmN0aW9u
IHNjX2pzTWV0aG9kQ2FsbChvLCBmaWVsZCkgeworICAgIHZhciBhcmdzID0gbmV3IEFycmF5KCk7
CisgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspCisgICAgICAg
IGFyZ3NbaS0yXSA9IGFyZ3VtZW50c1tpXTsKKyAgICByZXR1cm4gb1tmaWVsZF0uYXBwbHkobywg
YXJncyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBuZXcganMtbmV3KQorICAgICAgICAgICAo
cGVlcGhvbGUgKGpzTmV3KSkpCisqLworZnVuY3Rpb24gc2NfanNOZXcoYykgeworICAgIHZhciBl
dmFsU3RyID0gIm5ldyBjKCI7CisgICAgZXZhbFN0ciArPWFyZ3VtZW50cy5sZW5ndGggPiAxPyAi
YXJndW1lbnRzWzFdIjogIiI7CisgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVu
Z3RoOyBpKyspCisgICAgICAgIGV2YWxTdHIgKz0gIiwgYXJndW1lbnRzWyIgKyBpICsgIl0iOwor
ICAgIGV2YWxTdHIgKz0iKSI7CisgICAgcmV0dXJuIGV2YWwoZXZhbFN0cik7Cit9ICAgIAorCisv
LyA9PT09PT09PT09PT09PT09PT09PT09PT0gUmVnRXhwID09PT09PT09PT09PT09PT09PT09Cisv
KioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cChyZSkgeworICAg
IHJldHVybiBuZXcgUmVnRXhwKHNjX3N0cmluZzJqc3N0cmluZyhyZSkpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cE1hdGNoKHJlLCBzKSB7Cisg
ICAgdmFyIHJlZyA9IChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPyByZSA6IHNjX3ByZWdleHAocmUp
OworICAgIHZhciB0bXAgPSByZWcuZXhlYyhzY19zdHJpbmcyanNzdHJpbmcocykpOworICAgIAor
ICAgIGlmICh0bXAgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHZhciByZXMgPSBu
dWxsOworICAgIGZvciAodmFyIGkgPSB0bXAubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7CisgICAg
ICAgIGlmICh0bXBbaV0gIT09IG51bGwpIHsKKyAgICAgICAgICAgIHJlcyA9IHNjX2NvbnMoc2Nf
anNzdHJpbmcyc3RyaW5nKHRtcFtpXSksIHJlcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICByZXMgPSBzY19jb25zKGZhbHNlLCByZXMpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiByZXM7Cit9CisgICAKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19wcmVnZXhwUmVwbGFjZShyZSwgczEsIHMyKSB7CisgICB2YXIgcmVnOworICAgdmFyIGpzczEg
PSBzY19zdHJpbmcyanNzdHJpbmcoczEpOworICAgdmFyIGpzczIgPSBzY19zdHJpbmcyanNzdHJp
bmcoczIpOworCisgICBpZiAocmUgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgICBpZiAocmUu
Z2xvYmFsKQorICAgICAgICAgICByZWcgPSByZTsKKyAgICAgICBlbHNlCisgICAgICAgICAgIHJl
ZyA9IG5ldyBSZWdFeHAocmUuc291cmNlKTsKKyAgIH0gZWxzZSB7CisgICAgICAgcmVnID0gbmV3
IFJlZ0V4cChzY19zdHJpbmcyanNzdHJpbmcocmUpKTsKKyAgIH0KKworICAgcmV0dXJuIGpzczEu
cmVwbGFjZShyZWcsIGpzczIpOworfQorICAgCisvKioqIE1FVEEgKChleHBvcnQgcHJlZ2V4cC1y
ZXBsYWNlKikpICovCitmdW5jdGlvbiBzY19wcmVnZXhwUmVwbGFjZUFsbChyZSwgczEsIHMyKSB7
CisgICB2YXIgcmVnOworICAgdmFyIGpzczEgPSBzY19zdHJpbmcyanNzdHJpbmcoczEpOworICAg
dmFyIGpzczIgPSBzY19zdHJpbmcyanNzdHJpbmcoczIpOworCisgICBpZiAocmUgaW5zdGFuY2Vv
ZiBSZWdFeHApIHsKKyAgICAgIGlmIChyZS5nbG9iYWwpCisgICAgICAgICAgcmVnID0gcmU7Cisg
ICAgICBlbHNlCisgICAgICAgICAgcmVnID0gbmV3IFJlZ0V4cChyZS5zb3VyY2UsICJnIik7Cisg
ICB9IGVsc2UgeworICAgICAgIHJlZyA9IG5ldyBSZWdFeHAoc2Nfc3RyaW5nMmpzc3RyaW5nKHJl
KSwgImciKTsKKyAgIH0KKworICAgcmV0dXJuIGpzczEucmVwbGFjZShyZWcsIGpzczIpOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfcHJlZ2V4cFNwbGl0KHJl
LCBzKSB7CisgICB2YXIgcmVnID0gKChyZSBpbnN0YW5jZW9mIFJlZ0V4cCkgPworICAgICAgICAg
ICAgICByZSA6CisgICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2Nfc3RyaW5nMmpzc3RyaW5nKHJl
KSkpOworICAgdmFyIGpzcyA9IHNjX3N0cmluZzJqc3N0cmluZyhzKTsKKyAgIHZhciB0bXAgPSBq
c3Muc3BsaXQocmVnKTsKKworICAgaWYgKHRtcCA9PSBudWxsKSByZXR1cm4gZmFsc2U7CisKKyAg
IHJldHVybiBzY192ZWN0b3IybGlzdCh0bXApOworfQorICAgCisKKy8qID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSAqLworLyogT3RoZXIgbGlicmFyeSBzdHVmZiAqLworLyogPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ICovCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChob2xl
IDEgIk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoiICduICIpIikpKQorKi8KK2Z1bmN0aW9uIHNj
X3JhbmRvbShuKSB7CisgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpuKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0IGN1cnJlbnQtZGF0ZSkKKyAgICAgICAgICAgKHBlZXBob2xl
IChob2xlIDAgIm5ldyBEYXRlKCkiKSkpCisqLworZnVuY3Rpb24gc2NfY3VycmVudERhdGUoKSB7
CisgICByZXR1cm4gbmV3IERhdGUoKTsKK30KKworZnVuY3Rpb24gc2NfSGFzaHRhYmxlKCkgewor
fQorc2NfSGFzaHRhYmxlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiAiI3slaGFzaHRhYmxlfSI7Cit9OworLy8gc2NfdG9Xcml0ZVN0cmluZyA9PSBzY190b0Rp
c3BsYXlTdHJpbmcgPT0gdG9TdHJpbmcKKworZnVuY3Rpb24gc2NfSGFzaHRhYmxlRWxlbWVudChr
ZXksIHZhbCkgeworICAgIHRoaXMua2V5ID0ga2V5OworICAgIHRoaXMudmFsID0gdmFsOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAwICJu
ZXcgc2NfSGFzaHRhYmxlKCkiKSkpCisqLworZnVuY3Rpb24gc2NfbWFrZUhhc2h0YWJsZSgpIHsK
KyAgICByZXR1cm4gbmV3IHNjX0hhc2h0YWJsZSgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2NfaGFzaHRhYmxlUHV0QmFuZyhodCwga2V5LCB2YWwpIHsKKyAg
ICB2YXIgaGFzaCA9IHNjX2hhc2goa2V5KTsKKyAgICBodFtoYXNoXSA9IG5ldyBzY19IYXNodGFi
bGVFbGVtZW50KGtleSwgdmFsKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1
bmN0aW9uIHNjX2hhc2h0YWJsZUdldChodCwga2V5KSB7CisgICAgdmFyIGhhc2ggPSBzY19oYXNo
KGtleSk7CisgICAgaWYgKGhhc2ggaW4gaHQpCisgICAgICAgIHJldHVybiBodFtoYXNoXS52YWw7
CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkpICovCitmdW5jdGlvbiBzY19oYXNodGFibGVGb3JFYWNoKGh0LCBmKSB7CisgICAgZm9y
ICh2YXIgdiBpbiBodCkgeworICAgICAgICBpZiAoaHRbdl0gaW5zdGFuY2VvZiBzY19IYXNodGFi
bGVFbGVtZW50KQorICAgICAgICAgICAgZihodFt2XS5rZXksIGh0W3ZdLnZhbCk7CisgICAgfQor
fQorCisvKioqIE1FVEEgKChleHBvcnQgaGFzaHRhYmxlLWNvbnRhaW5zPykKKyAgICAgICAgICAg
KHBlZXBob2xlIChob2xlIDIgInNjX2hhc2goIiAxICIpIGluICIgMCkpKQorKi8KK2Z1bmN0aW9u
IHNjX2hhc2h0YWJsZUNvbnRhaW5zKGh0LCBrZXkpIHsKKyAgICB2YXIgaGFzaCA9IHNjX2hhc2go
a2V5KTsKKyAgICBpZiAoaGFzaCBpbiBodCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZhciBTQ19IQVNIX0NPVU5URVIgPSAwOwor
CitmdW5jdGlvbiBzY19oYXNoKG8pIHsKKyAgICBpZiAobyA9PT0gbnVsbCkKKyAgICAgICAgcmV0
dXJuICJudWxsIjsKKyAgICBlbHNlIGlmIChvID09PSB1bmRlZmluZWQpCisgICAgICAgIHJldHVy
biAidW5kZWZpbmVkIjsKKyAgICBlbHNlIGlmIChvID09PSB0cnVlKQorICAgICAgICByZXR1cm4g
InRydWUiOworICAgIGVsc2UgaWYgKG8gPT09IGZhbHNlKQorICAgICAgICByZXR1cm4gImZhbHNl
IjsKKyAgICBlbHNlIGlmICh0eXBlb2YgbyA9PT0gIm51bWJlciIpCisgICAgICAgIHJldHVybiAi
bnVtLSIgKyBvOworICAgIGVsc2UgaWYgKHR5cGVvZiBvID09PSAic3RyaW5nIikKKyAgICAgICAg
cmV0dXJuICJqc3N0ci0iICsgbzsKKyAgICBlbHNlIGlmIChvLnNjX2dldEhhc2gpCisgICAgICAg
IHJldHVybiBvLnNjX2dldEhhc2goKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBzY19jb3Vu
dGVySGFzaC5jYWxsKG8pOworfQorZnVuY3Rpb24gc2NfY291bnRlckhhc2goKSB7CisgICAgaWYg
KCF0aGlzLnNjX2hhc2gpIHsKKyAgICAgICAgdGhpcy5zY19oYXNoID0gImhhc2gtIiArIFNDX0hB
U0hfQ09VTlRFUjsKKyAgICAgICAgU0NfSEFTSF9DT1VOVEVSKys7CisgICAgfQorICAgIHJldHVy
biB0aGlzLnNjX2hhc2g7Cit9CisKK2Z1bmN0aW9uIHNjX1RyYW1wb2xpbmUoYXJncywgbWF4VGFp
bENhbGxzKSB7CisgICAgdGhpc1snX190cmFtcG9saW5lIHJldHVybl9fJ10gPSB0cnVlOworICAg
IHRoaXMuYXJncyA9IGFyZ3M7CisgICAgdGhpcy5NQVhfVEFJTF9DQUxMcyA9IG1heFRhaWxDYWxs
czsKK30KKy8vIFRPRE86IGNhbGwvY2Mgc3R1ZmYKK3NjX1RyYW1wb2xpbmUucHJvdG90eXBlLnJl
c3RhcnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbyA9IHRoaXM7CisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgLy8gc2V0IGJvdGggZ2xvYmFscy4KKyAgICAgICAgU0NfVEFJTF9PQkpFQ1Qu
Y2FsbHMgPSBvLk1BWF9UQUlMX0NBTExzLTE7CisgICAgICAgIHZhciBmdW4gPSBvLmFyZ3MuY2Fs
bGVlOworICAgICAgICB2YXIgcmVzID0gZnVuLmFwcGx5KFNDX1RBSUxfT0JKRUNULCBvLmFyZ3Mp
OworICAgICAgICBpZiAocmVzIGluc3RhbmNlb2Ygc2NfVHJhbXBvbGluZSkKKyAgICAgICAgICAg
IG8gPSByZXM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgfQor
fQorCisvKioqIE1FVEEgKChleHBvcnQgYmluZC1leGl0LWxhbWJkYSkpICovCitmdW5jdGlvbiBz
Y19iaW5kRXhpdExhbWJkYShwcm9jKSB7CisgICAgdmFyIGVzY2FwZV9vYmogPSBuZXcgc2NfQmlu
ZEV4aXRFeGNlcHRpb24oKTsKKyAgICB2YXIgZXNjYXBlID0gZnVuY3Rpb24ocmVzKSB7CisgICAg
ICAgIGVzY2FwZV9vYmoucmVzID0gcmVzOworICAgICAgICB0aHJvdyBlc2NhcGVfb2JqOworICAg
IH07CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIHByb2MoZXNjYXBlKTsKKyAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgaWYgKGUgPT09IGVzY2FwZV9vYmopIHsKKyAgICAgICAgICAgIHJldHVy
biBlLnJlczsKKyAgICAgICAgfQorICAgICAgICB0aHJvdyBlOworICAgIH0KK30KK2Z1bmN0aW9u
IHNjX0JpbmRFeGl0RXhjZXB0aW9uKCkgeworICAgIHRoaXMuX2ludGVybmFsRXhjZXB0aW9uID0g
dHJ1ZTsKK30KKwordmFyIFNDX1NDTTJKU19HTE9CQUxTID0gbmV3IE9iamVjdCgpOworCisvLyBk
ZWZhdWx0IHRhaWwtY2FsbCBkZXB0aC4KKy8vIG5vcm1hbGx5IHRoZSBwcm9ncmFtIHNob3VsZCBz
ZXQgaXQgYWdhaW4uIGJ1dCBqdXN0IGluIGNhc2UuLi4KK3ZhciBTQ19UQUlMX09CSkVDVCA9IG5l
dyBPYmplY3QoKTsKK1NDX1NDTTJKU19HTE9CQUxTLlRBSUxfT0JKRUNUID0gU0NfVEFJTF9PQkpF
Q1Q7CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gSS9PID09PT09PT09PT09PT09PT09PT09
PT09CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfRU9GKCkgeworfQordmFyIFNDX0VP
Rl9PQkpFQ1QgPSBuZXcgc2NfRU9GKCk7CisKK2Z1bmN0aW9uIHNjX1BvcnQoKSB7Cit9CisKKy8q
IC0tLS0tLS0tLS0tLS0tLSBJbnB1dCBwb3J0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKworZnVuY3Rpb24gc2NfSW5wdXRQb3J0KCkgeworfQorc2NfSW5wdXRQb3J0
LnByb3RvdHlwZSA9IG5ldyBzY19Qb3J0KCk7CisKK3NjX0lucHV0UG9ydC5wcm90b3R5cGUucGVl
a0NoYXIgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoISgicGVla2VkIiBpbiB0aGlzKSkKKyAgICAg
ICAgdGhpcy5wZWVrZWQgPSB0aGlzLmdldE5leHRDaGFyKCk7CisgICAgcmV0dXJuIHRoaXMucGVl
a2VkOworfQorc2NfSW5wdXRQb3J0LnByb3RvdHlwZS5yZWFkQ2hhciA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciB0bXAgPSB0aGlzLnBlZWtDaGFyKCk7CisgICAgZGVsZXRlIHRoaXMucGVla2VkOwor
ICAgIHJldHVybiB0bXA7Cit9CitzY19JbnB1dFBvcnQucHJvdG90eXBlLmlzQ2hhclJlYWR5ID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRydWU7Cit9CitzY19JbnB1dFBvcnQucHJvdG90eXBl
LmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgLy8gZG8gbm90aGluZworfQorCisvKiAuLi4uLi4u
Li4uLi4uLiBTdHJpbmcgcG9ydCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCitmdW5jdGlv
biBzY19FcnJvcklucHV0UG9ydCgpIHsKK307CitzY19FcnJvcklucHV0UG9ydC5wcm90b3R5cGUg
PSBuZXcgc2NfSW5wdXRQb3J0KCk7CitzY19FcnJvcklucHV0UG9ydC5wcm90b3R5cGUuZ2V0TmV4
dENoYXIgPSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiY2FuJ3QgcmVhZCBmcm9tIGVycm9yLXBv
cnQuIjsKK307CitzY19FcnJvcklucHV0UG9ydC5wcm90b3R5cGUuaXNDaGFyUmVhZHkgPSBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gZmFsc2U7Cit9OworICAgIAorCisvKiAuLi4uLi4uLi4uLi4u
LiBTdHJpbmcgcG9ydCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCisKK2Z1bmN0aW9uIHNj
X1N0cmluZ0lucHV0UG9ydChqc1N0cikgeworICAgIC8vIHdlIGFyZSBnb2luZyB0byBkbyBzb21l
IGNoYXJBdHMgb24gdGhlIHN0ci4KKyAgICAvLyBpbnN0ZWFkIG9mIHJlY3JlYXRpbmcgYWxsIHRo
ZSB0aW1lIGEgU3RyaW5nLW9iamVjdCwgd2UKKyAgICAvLyBjcmVhdGUgb25lIGluIHRoZSBiZWdp
bm5pbmcuIChub3Qgc3VyZSwgaWYgdGhpcyBpcyByZWFsbHkgYW4gb3B0aW0pCisgICAgdGhpcy5z
dHIgPSBuZXcgU3RyaW5nKGpzU3RyKTsKKyAgICB0aGlzLnBvcyA9IDA7Cit9CitzY19TdHJpbmdJ
bnB1dFBvcnQucHJvdG90eXBlID0gbmV3IHNjX0lucHV0UG9ydCgpOworc2NfU3RyaW5nSW5wdXRQ
b3J0LnByb3RvdHlwZS5nZXROZXh0Q2hhciA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0aGlzLnBv
cyA+PSB0aGlzLnN0ci5sZW5ndGgpCisgICAgICAgIHJldHVybiBTQ19FT0ZfT0JKRUNUOworICAg
IHJldHVybiB0aGlzLnN0ci5jaGFyQXQodGhpcy5wb3MrKyk7Cit9OworCisvKiAtLS0tLS0tLS0t
LS0tIFJlYWQgYW5kIG90aGVyIGxpYi1mdW5zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KK2Z1bmN0aW9uIHNjX1Rva2VuKHR5cGUsIHZhbCwgcG9zKSB7CisgICAgdGhpcy50eXBl
ID0gdHlwZTsKKyAgICB0aGlzLnZhbCA9IHZhbDsKKyAgICB0aGlzLnBvcyA9IHBvczsKK30KK3Nj
X1Rva2VuLkVPRiA9IDAvKkVPRiovOworc2NfVG9rZW4uT1BFTl9QQVIgPSAxLypPUEVOX1BBUiov
Oworc2NfVG9rZW4uQ0xPU0VfUEFSID0gMi8qQ0xPU0VfUEFSKi87CitzY19Ub2tlbi5PUEVOX0JS
QUNFID0gMy8qT1BFTl9CUkFDRSovOworc2NfVG9rZW4uQ0xPU0VfQlJBQ0UgPSA0LypDTE9TRV9C
UkFDRSovOworc2NfVG9rZW4uT1BFTl9CUkFDS0VUID0gNS8qT1BFTl9CUkFDS0VUKi87CitzY19U
b2tlbi5DTE9TRV9CUkFDS0VUID0gNi8qQ0xPU0VfQlJBQ0tFVCovOworc2NfVG9rZW4uV0hJVEVT
UEFDRSA9IDcvKldISVRFU1BBQ0UqLzsKK3NjX1Rva2VuLlFVT1RFID0gOC8qUVVPVEUqLzsKK3Nj
X1Rva2VuLklEID0gOS8qSUQqLzsKK3NjX1Rva2VuLkRPVCA9IDEwLypET1QqLzsKK3NjX1Rva2Vu
LlNUUklORyA9IDExLypTVFJJTkcqLzsKK3NjX1Rva2VuLk5VTUJFUiA9IDEyLypOVU1CRVIqLzsK
K3NjX1Rva2VuLkVSUk9SID0gMTMvKkVSUk9SKi87CitzY19Ub2tlbi5WRUNUT1JfQkVHSU4gPSAx
NC8qVkVDVE9SX0JFR0lOKi87CitzY19Ub2tlbi5UUlVFID0gMTUvKlRSVUUqLzsKK3NjX1Rva2Vu
LkZBTFNFID0gMTYvKkZBTFNFKi87CitzY19Ub2tlbi5VTlNQRUNJRklFRCA9IDE3LypVTlNQRUNJ
RklFRCovOworc2NfVG9rZW4uUkVGRVJFTkNFID0gMTgvKlJFRkVSRU5DRSovOworc2NfVG9rZW4u
U1RPUkUgPSAxOS8qU1RPUkUqLzsKK3NjX1Rva2VuLkNIQVIgPSAyMC8qQ0hBUiovOworCit2YXIg
U0NfSURfQ0xBU1MgPSBTQ19MT1dFUl9DTEFTUyArIFNDX1VQUEVSX0NMQVNTICsgIiEkJSorLS4v
Ojw9Pj9AXl9+IjsKK2Z1bmN0aW9uIHNjX1Rva2VuaXplcihwb3J0KSB7CisgICAgdGhpcy5wb3J0
ID0gcG9ydDsKK30KK3NjX1Rva2VuaXplci5wcm90b3R5cGUucGVla1Rva2VuID0gZnVuY3Rpb24o
KSB7CisgICAgaWYgKHRoaXMucGVla2VkKQorICAgICAgICByZXR1cm4gdGhpcy5wZWVrZWQ7Cisg
ICAgdmFyIG5ld1Rva2VuID0gdGhpcy5uZXh0VG9rZW4oKTsKKyAgICB0aGlzLnBlZWtlZCA9IG5l
d1Rva2VuOworICAgIHJldHVybiBuZXdUb2tlbjsKK307CitzY19Ub2tlbml6ZXIucHJvdG90eXBl
LnJlYWRUb2tlbiA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0bXAgPSB0aGlzLnBlZWtUb2tlbigp
OworICAgIGRlbGV0ZSB0aGlzLnBlZWtlZDsKKyAgICByZXR1cm4gdG1wOworfTsKK3NjX1Rva2Vu
aXplci5wcm90b3R5cGUubmV4dFRva2VuID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHBvcnQgPSB0
aGlzLnBvcnQ7CisgICAgCisgICAgZnVuY3Rpb24gaXNOdW1iZXJDaGFyKGMpIHsKKyAgICAgICAg
cmV0dXJuIChjID49ICIwIiAmJiBjIDw9ICI5Iik7CisgICAgfTsKKyAgICBmdW5jdGlvbiBpc0lk
T3JOdW1iZXJDaGFyKGMpIHsKKyAgICAgICAgcmV0dXJuIFNDX0lEX0NMQVNTLmluZGV4T2YoYykg
IT0gLTEgfHwgLy8gSUQtY2hhcgorICAgICAgICAgICAgKGMgPj0gIjAiICYmIGMgPD0gIjkiKTsK
KyAgICB9CisgICAgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGMpIHsKKyAgICAgICAgcmV0dXJuIGMg
PT09ICIgIiB8fCBjID09PSAiXHIiIHx8IGMgPT09ICJcbiIgfHwgYyA9PT0gIlx0IiB8fCBjID09
PSAiXGYiOworICAgIH07CisgICAgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlT3JFT0YoYykgeworICAg
ICAgICByZXR1cm4gaXNXaGl0ZXNwYWNlKGMpIHx8IGMgPT09IFNDX0VPRl9PQkpFQ1Q7CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIHJlYWRTdHJpbmcoKSB7CisgICAgICAgIHJlcyA9ICIiOworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgdmFyIGMgPSBwb3J0LnJlYWRDaGFyKCk7
CisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIGNhc2UgJyInOgorICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTEvKlNUUklORyovLCByZXMpOworICAgICAg
ICAgICAgY2FzZSAiXFwiOgorICAgICAgICAgICAgICAgIHZhciB0bXAgPSBwb3J0LnJlYWRDaGFy
KCk7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0bXApIHsKKyAgICAgICAgICAgICAgICBjYXNl
ICcwJzogcmVzICs9ICJcMCI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2EnOiByZXMg
Kz0gIlxhIjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnYic6IHJlcyArPSAiXGIiOyBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdmJzogcmVzICs9ICJcZiI7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgJ24nOiByZXMgKz0gIlxuIjsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAncic6IHJlcyArPSAiXHIiOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICd0
JzogcmVzICs9ICJcdCI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3YnOiByZXMgKz0g
Ilx2IjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnIic6IHJlcyArPSAnIic7IGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgJ1xcJzogcmVzICs9ICdcXCc7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAvKiBoZXhhLW51bWJlciAq
LworICAgICAgICAgICAgICAgICAgICB2YXIgbmIgPSAwOworICAgICAgICAgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhleEMgPSBwb3J0LnBl
ZWtDaGFyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGV4QyA+PSAnMCcgJiYgaGV4
QyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnJlYWRDaGFyKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmIgPSBuYiAqIDE2ICsgaGV4Qy5jaGFyQ29k
ZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGhleEMgPj0gJ2EnICYmIGhleEMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9ydC5yZWFkQ2hhcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5i
ID0gbmIgKiAxNiArIGhleEMuY2hhckNvZGVBdCgwKSAtICdhJy5jaGFyQ29kZUF0KDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoZXhDID49ICdBJyAmJiBoZXhDIDw9ICdG
JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucmVhZENoYXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuYiA9IG5iICogMTYgKyBoZXhDLmNoYXJDb2RlQXQoMCkg
LSAnQScuY2hhckNvZGVBdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBjaGFyIGlzbid0IHBhcnQgb2YgaGV4
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2Rl
KG5iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBpZiAo
dG1wID09PSBTQ19FT0ZfT0JKRUNUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAidW5jbG9zZWQgc3RyaW5nLWxpdGVyYWwiICsgcmVz
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXMgKz0gdG1w
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKGMgPT09IFNDX0VPRl9PQkpFQ1QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgInVuY2xv
c2VkIHN0cmluZy1saXRlcmFsIiArIHJlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJlcyArPSBjOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICBm
dW5jdGlvbiByZWFkSWRPck51bWJlcihmaXJzdENoYXIpIHsKKyAgICAgICAgdmFyIHJlcyA9IGZp
cnN0Q2hhcjsKKyAgICAgICAgd2hpbGUgKGlzSWRPck51bWJlckNoYXIocG9ydC5wZWVrQ2hhcigp
KSkKKyAgICAgICAgICAgIHJlcyArPSBwb3J0LnJlYWRDaGFyKCk7CisgICAgICAgIGlmIChpc05h
TihyZXMpKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbig5LypJRCovLCByZXMpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEyLypOVU1CRVIq
LywgcmVzIC0gMCk7CisgICAgfTsKKyAgICAKKyAgICBmdW5jdGlvbiBza2lwV2hpdGVzcGFjZUFu
ZENvbW1lbnRzKCkgeworICAgICAgICB2YXIgZG9uZSA9IGZhbHNlOworICAgICAgICB3aGlsZSAo
IWRvbmUpIHsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgd2hpbGUgKGlz
V2hpdGVzcGFjZShwb3J0LnBlZWtDaGFyKCkpKQorICAgICAgICAgICAgICAgIHBvcnQucmVhZENo
YXIoKTsKKyAgICAgICAgICAgIGlmIChwb3J0LnBlZWtDaGFyKCkgPT09ICc7JykgeworICAgICAg
ICAgICAgICAgIHBvcnQucmVhZENoYXIoKTsKKyAgICAgICAgICAgICAgICBkb25lID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY3Vy
Q2hhciA9IHBvcnQucmVhZENoYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckNoYXIg
PT09IFNDX0VPRl9PQkpFQ1QgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoYXIgPT09
ICdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIHJl
YWREb3QoKSB7CisgICAgICAgIGlmIChpc1doaXRlc3BhY2UocG9ydC5wZWVrQ2hhcigpKSkKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgc2NfVG9rZW4oMTAvKkRPVCovKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHJlYWRJZE9yTnVtYmVyKCIuIik7CisgICAgfTsKKworICAgIGZ1
bmN0aW9uIHJlYWRTaGFycCgpIHsKKyAgICAgICAgdmFyIGMgPSBwb3J0LnJlYWRDaGFyKCk7Cisg
ICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykpCisgICAgICAgICAgICByZXR1cm4gbmV3IHNjX1Rv
a2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0dGVybjAuIik7CisKKyAgICAgICAgLy8gcmVmZXJl
bmNlCisgICAgICAgIGlmIChpc051bWJlckNoYXIoYykpIHsKKyAgICAgICAgICAgIHZhciBuYiA9
IGMgLSAwOworICAgICAgICAgICAgd2hpbGUgKGlzTnVtYmVyQ2hhcihwb3J0LnBlZWtDaGFyKCkp
KQorICAgICAgICAgICAgICAgIG5iID0gbmIqMTAgKyAocG9ydC5yZWFkQ2hhcigpIC0gMCk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHBvcnQucmVhZENoYXIoKSkgeworICAgICAgICAgICAgY2FzZSAn
Iyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxOC8qUkVGRVJFTkNFKi8s
IG5iKTsKKyAgICAgICAgICAgIGNhc2UgJz0nOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
c2NfVG9rZW4oMTkvKlNUT1JFKi8sIG5iKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRlcm4x
LiIgKyBuYik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoYyA9PT0g
IigiKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigxNC8qVkVDVE9SX0JFR0lOKi8p
OworICAgICAgICAKKyAgICAgICAgaWYgKGMgPT09ICJcXCIpIHsgLy8gY2hhcmFjdGVyCisgICAg
ICAgICAgICB2YXIgdG1wID0gIiIKKyAgICAgICAgICAgIHdoaWxlICghaXNXaGl0ZXNwYWNlT3JF
T0YocG9ydC5wZWVrQ2hhcigpKSkKKyAgICAgICAgICAgICAgICB0bXAgKz0gcG9ydC5yZWFkQ2hh
cigpOworICAgICAgICAgICAgc3dpdGNoICh0bXAubGVuZ3RoKSB7CisgICAgICAgICAgICBjYXNl
IDA6IC8vIGl0J3MgZXNjYXBpbmcgYSB3aGl0ZXNwYWNlIGNoYXI6CisgICAgICAgICAgICAgICAg
aWYgKHNjX2lzRU9GT2JqZWN0KHBvcnQucGVla0NoYXIpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFkICMtcGF0dGVybjIuIik7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2Vu
KDIwLypDSEFSKi8sIHBvcnQucmVhZENoYXIoKSk7CisgICAgICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbigyMC8qQ0hBUiovLCB0bXApOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypF
UlJPUiovLCAidW5rbm93biBjaGFyYWN0ZXIgZGVzY3JpcHRpb246ICNcXCIgKyB0bXApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gc29tZSBjb25zdGFudHMgKCN0LCAj
ZiwgI3Vuc3BlY2lmaWVkKQorICAgICAgICB2YXIgcmVzOworICAgICAgICB2YXIgbmVlZGluZzsK
KyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgIGNhc2UgJ3QnOiByZXMgPSBuZXcgc2NfVG9r
ZW4oMTUvKlRSVUUqLywgdHJ1ZSk7IG5lZWRpbmcgPSAiIjsgYnJlYWs7CisgICAgICAgIGNhc2Ug
J2YnOiByZXMgPSBuZXcgc2NfVG9rZW4oMTYvKkZBTFNFKi8sIGZhbHNlKTsgbmVlZGluZyA9ICIi
OyBicmVhazsKKyAgICAgICAgY2FzZSAndSc6IHJlcyA9IG5ldyBzY19Ub2tlbigxNy8qVU5TUEVD
SUZJRUQqLywgdW5kZWZpbmVkKTsgbmVlZGluZyA9ICJuc3BlY2lmaWVkIjsgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiov
LCAiYmFkICMtcGF0dGVybjM6ICIgKyBjKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSh0cnVl
KSB7CisgICAgICAgICAgICBjID0gcG9ydC5wZWVrQ2hhcigpOworICAgICAgICAgICAgaWYgKChp
c1doaXRlc3BhY2VPckVPRihjKSB8fCBjID09PSAnKScpICYmCisgICAgICAgICAgICAgICAgbmVl
ZGluZyA9PSAiIikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgZWxz
ZSBpZiAoaXNXaGl0ZXNwYWNlKGMpIHx8IG5lZWRpbmcgPT0gIiIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBzY19Ub2tlbigxMy8qRVJST1IqLywgImJhZCAjLXBhdHRlcm40ICIgKyBjICsg
IiAiICsgbmVlZGluZyk7CisgICAgICAgICAgICBlbHNlIGlmIChuZWVkaW5nLmNoYXJBdCgwKSA9
PSBjKSB7CisgICAgICAgICAgICAgICAgcG9ydC5yZWFkQ2hhcigpOyAvLyBjb25zdW1lCisgICAg
ICAgICAgICAgICAgbmVlZGluZyA9IG5lZWRpbmcuc2xpY2UoMSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDEzLypFUlJPUiovLCAiYmFk
ICMtcGF0dGVybjUiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9OworCisgICAgc2tpcFdo
aXRlc3BhY2VBbmRDb21tZW50cygpOworICAgIHZhciBjdXJDaGFyID0gcG9ydC5yZWFkQ2hhcigp
OworICAgIGlmIChjdXJDaGFyID09PSBTQ19FT0ZfT0JKRUNUKQorICAgICAgICByZXR1cm4gbmV3
IHNjX1Rva2VuKDAvKkVPRiovLCBjdXJDaGFyKTsKKyAgICBzd2l0Y2ggKGN1ckNoYXIpCisgICAg
eworICAgIGNhc2UgIiAiOgorICAgIGNhc2UgIlxuIjoKKyAgICBjYXNlICJcdCI6CisgICAgICAg
IHJldHVybiByZWFkV2hpdGVzcGFjZSgpOworICAgIGNhc2UgIigiOgorICAgICAgICByZXR1cm4g
bmV3IHNjX1Rva2VuKDEvKk9QRU5fUEFSKi8pOworICAgIGNhc2UgIikiOgorICAgICAgICByZXR1
cm4gbmV3IHNjX1Rva2VuKDIvKkNMT1NFX1BBUiovKTsKKyAgICBjYXNlICJ7IjoKKyAgICAgICAg
cmV0dXJuIG5ldyBzY19Ub2tlbigzLypPUEVOX0JSQUNFKi8pOworICAgIGNhc2UgIn0iOgorICAg
ICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDQvKkNMT1NFX0JSQUNFKi8pOworICAgIGNhc2UgIlsi
OgorICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDUvKk9QRU5fQlJBQ0tFVCovKTsKKyAgICBj
YXNlICJdIjoKKyAgICAgICAgcmV0dXJuIG5ldyBzY19Ub2tlbig2LypDTE9TRV9CUkFDS0VUKi8p
OworICAgIGNhc2UgIiciOgorICAgICAgICByZXR1cm4gbmV3IHNjX1Rva2VuKDgvKlFVT1RFKi8p
OworICAgIGNhc2UgIiMiOgorICAgICAgICByZXR1cm4gcmVhZFNoYXJwKCk7CisgICAgY2FzZSAi
LiI6CisgICAgICAgIHJldHVybiByZWFkRG90KCk7CisgICAgY2FzZSAnIic6CisgICAgICAgIHJl
dHVybiByZWFkU3RyaW5nKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGlzSWRPck51bWJl
ckNoYXIoY3VyQ2hhcikpCisgICAgICAgICAgICByZXR1cm4gcmVhZElkT3JOdW1iZXIoY3VyQ2hh
cik7CisgICAgICAgIHRocm93ICJ1bmV4cGVjdGVkIGNoYXJhY3RlcjogIiArIGN1ckNoYXI7Cisg
ICAgfQorfTsKKworZnVuY3Rpb24gc2NfUmVhZGVyKHRva2VuaXplcikgeworICAgIHRoaXMudG9r
ZW5pemVyID0gdG9rZW5pemVyOworICAgIHRoaXMuYmFja3JlZiA9IG5ldyBBcnJheSgpOworfQor
c2NfUmVhZGVyLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gcmVh
ZExpc3QobGlzdEJlZ2luVHlwZSkgeworICAgICAgICBmdW5jdGlvbiBtYXRjaGVzUGVlcihvcGVu
LCBjbG9zZSkgeworICAgICAgICAgICAgcmV0dXJuIG9wZW4gPT09IDEvKk9QRU5fUEFSKi8gJiYg
Y2xvc2UgPT09IDIvKkNMT1NFX1BBUiovCisgICAgICAgICAgICAgICAgfHwgb3BlbiA9PT0gMy8q
T1BFTl9CUkFDRSovICYmIGNsb3NlID09PSA0LypDTE9TRV9CUkFDRSovCisgICAgICAgICAgICAg
ICAgfHwgb3BlbiA9PT0gNS8qT1BFTl9CUkFDS0VUKi8gJiYgY2xvc2UgPT09IDYvKkNMT1NFX0JS
QUNLRVQqLzsKKyAgICAgICAgfTsKKyAgICAgICAgdmFyIHJlcyA9IG51bGw7CisKKyAgICAgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHZhciB0b2tlbiA9IHRva2VuaXplci5wZWVrVG9r
ZW4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIDIvKkNMT1NFX1BBUiovOgorICAgICAgICAgICAgY2FzZSA0LypDTE9T
RV9CUkFDRSovOgorICAgICAgICAgICAgY2FzZSA2LypDTE9TRV9CUkFDS0VUKi86CisgICAgICAg
ICAgICAgICAgaWYgKG1hdGNoZXNQZWVyKGxpc3RCZWdpblR5cGUsIHRva2VuLnR5cGUpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRva2VuaXplci5yZWFkVG9rZW4oKTsgLy8gY29uc3VtZSB0b2tl
bgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NfcmV2ZXJzZUJhbmcocmVzKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgImNsb3NpbmcgcGFy
IGRvZXNuJ3QgbWF0Y2g6ICIgKyBsaXN0QmVnaW5UeXBlCisgICAgICAgICAgICAgICAgICAgICAg
ICArICIgIiArIGxpc3RFbmRUeXBlOworCisgICAgICAgICAgICBjYXNlIDAvKkVPRiovOgorICAg
ICAgICAgICAgICAgIHRocm93ICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIjsKKworICAgICAgICAg
ICAgY2FzZSAxMC8qRE9UKi86CisgICAgICAgICAgICAgICAgdG9rZW5pemVyLnJlYWRUb2tlbigp
OyAvLyBjb25zdW1lIHRva2VuCisgICAgICAgICAgICAgICAgdmFyIGNkciA9IHRoaXMucmVhZCgp
OworICAgICAgICAgICAgICAgIHZhciBwYXIgPSB0b2tlbml6ZXIucmVhZFRva2VuKCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFtYXRjaGVzUGVlcihsaXN0QmVnaW5UeXBlLCBwYXIudHlwZSkpCisg
ICAgICAgICAgICAgICAgICAgIHRocm93ICJjbG9zaW5nIHBhciBkb2Vzbid0IG1hdGNoOiAiICsg
bGlzdEJlZ2luVHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBwYXIudHlwZTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY19yZXZl
cnNlQXBwZW5kQmFuZyhyZXMsIGNkcik7CisgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVzID0gc2NfY29ucyh0aGlzLnJlYWQoKSwgcmVz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgZnVuY3Rpb24gcmVhZFF1
b3RlKCkgeworICAgICAgICByZXR1cm4gc2NfY29ucygicXVvdGUiLCBzY19jb25zKHRoaXMucmVh
ZCgpLCBudWxsKSk7CisgICAgfTsKKyAgICBmdW5jdGlvbiByZWFkVmVjdG9yKCkgeworICAgICAg
ICAvLyBvcGVuaW5nLXBhcmVudGhlc2lzIGlzIGFscmVhZHkgY29uc3VtZWQKKyAgICAgICAgdmFy
IGEgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHZh
ciB0b2tlbiA9IHRva2VuaXplci5wZWVrVG9rZW4oKTsKKyAgICAgICAgICAgIHN3aXRjaCAodG9r
ZW4udHlwZSkgeworICAgICAgICAgICAgY2FzZSAyLypDTE9TRV9QQVIqLzoKKyAgICAgICAgICAg
ICAgICB0b2tlbml6ZXIucmVhZFRva2VuKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGEu
cHVzaCh0aGlzLnJlYWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgZnVuY3Rpb24gc3RvcmVSZWZlbmNlKG5iKSB7CisgICAgICAgIHZhciB0bXAgPSB0aGlzLnJl
YWQoKTsKKyAgICAgICAgdGhpcy5iYWNrcmVmW25iXSA9IHRtcDsKKyAgICAgICAgcmV0dXJuIHRt
cDsKKyAgICB9OworICAgICAgICAKKyAgICBmdW5jdGlvbiByZWFkUmVmZXJlbmNlKG5iKSB7Cisg
ICAgICAgIGlmIChuYiBpbiB0aGlzLmJhY2tyZWYpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5i
YWNrcmVmW25iXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgImJhZCByZWZlcmVu
Y2U6ICIgKyBuYjsKKyAgICB9OworICAgIAorICAgIHZhciB0b2tlbml6ZXIgPSB0aGlzLnRva2Vu
aXplcjsKKworICAgIHZhciB0b2tlbiA9IHRva2VuaXplci5yZWFkVG9rZW4oKTsKKworICAgIC8v
IGhhbmRsZSBlcnJvcgorICAgIGlmICh0b2tlbi50eXBlID09PSAxMy8qRVJST1IqLykKKyAgICAg
ICAgdGhyb3cgdG9rZW4udmFsOworICAgIAorICAgIHN3aXRjaCAodG9rZW4udHlwZSkgeworICAg
IGNhc2UgMS8qT1BFTl9QQVIqLzoKKyAgICBjYXNlIDMvKk9QRU5fQlJBQ0UqLzoKKyAgICBjYXNl
IDUvKk9QRU5fQlJBQ0tFVCovOgorICAgICAgICByZXR1cm4gcmVhZExpc3QuY2FsbCh0aGlzLCB0
b2tlbi50eXBlKTsKKyAgICBjYXNlIDgvKlFVT1RFKi86CisgICAgICAgIHJldHVybiByZWFkUXVv
dGUuY2FsbCh0aGlzKTsKKyAgICBjYXNlIDExLypTVFJJTkcqLzoKKyAgICAgICAgcmV0dXJuIHNj
X2pzc3RyaW5nMnN0cmluZyh0b2tlbi52YWwpOworICAgIGNhc2UgMjAvKkNIQVIqLzoKKyAgICAg
ICAgcmV0dXJuIG5ldyBzY19DaGFyKHRva2VuLnZhbCk7CisgICAgY2FzZSAxNC8qVkVDVE9SX0JF
R0lOKi86CisgICAgICAgIHJldHVybiByZWFkVmVjdG9yLmNhbGwodGhpcyk7CisgICAgY2FzZSAx
OC8qUkVGRVJFTkNFKi86CisgICAgICAgIHJldHVybiByZWFkUmVmZXJlbmNlLmNhbGwodGhpcywg
dG9rZW4udmFsKTsKKyAgICBjYXNlIDE5LypTVE9SRSovOgorICAgICAgICByZXR1cm4gc3RvcmVS
ZWZlbmNlLmNhbGwodGhpcywgdG9rZW4udmFsKTsKKyAgICBjYXNlIDkvKklEKi86CisgICAgICAg
IHJldHVybiBzY19qc3N0cmluZzJzeW1ib2wodG9rZW4udmFsKTsKKyAgICBjYXNlIDAvKkVPRiov
OgorICAgIGNhc2UgMTIvKk5VTUJFUiovOgorICAgIGNhc2UgMTUvKlRSVUUqLzoKKyAgICBjYXNl
IDE2LypGQUxTRSovOgorICAgIGNhc2UgMTcvKlVOU1BFQ0lGSUVEKi86CisgICAgICAgIHJldHVy
biB0b2tlbi52YWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhyb3cgInVuZXhwZWN0ZWQgdG9r
ZW4gIiArIHRva2VuLnR5cGUgKyAiICIgKyB0b2tlbi52YWw7CisgICAgfQorfTsKKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX3JlYWQocG9ydCkgeworICAgIGlmIChw
b3J0ID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSB0aGUgcG9ydCBoYXNuJ3QgYmVlbiBnaXZl
bi4KKyAgICAgICAgcG9ydCA9IFNDX0RFRkFVTFRfSU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4u
LgorICAgIHZhciByZWFkZXIgPSBuZXcgc2NfUmVhZGVyKG5ldyBzY19Ub2tlbml6ZXIocG9ydCkp
OworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkg
Ki8KK2Z1bmN0aW9uIHNjX3JlYWRDaGFyKHBvcnQpIHsKKyAgICBpZiAocG9ydCA9PT0gdW5kZWZp
bmVkKSAvLyB3ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4uCisgICAgICAgIHBv
cnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuLi4KKyAgICB2YXIgdCA9
IHBvcnQucmVhZENoYXIoKTsKKyAgICByZXR1cm4gdCA9PT0gU0NfRU9GX09CSkVDVD8gdDogbmV3
IHNjX0NoYXIodCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
cGVla0NoYXIocG9ydCkgeworICAgIGlmIChwb3J0ID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3Vt
ZSB0aGUgcG9ydCBoYXNuJ3QgYmVlbiBnaXZlbi4KKyAgICAgICAgcG9ydCA9IFNDX0RFRkFVTFRf
SU47IC8vIFRIUkVBRDogc2hhcmVkIHZhci4uLgorICAgIHZhciB0ID0gcG9ydC5wZWVrQ2hhcigp
OworICAgIHJldHVybiB0ID09PSBTQ19FT0ZfT0JKRUNUPyB0OiBuZXcgc2NfQ2hhcih0KTsKK30g
ICAgCisvKioqIE1FVEEgKChleHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpKQorKi8K
K2Z1bmN0aW9uIHNjX2lzQ2hhclJlYWR5KHBvcnQpIHsKKyAgICBpZiAocG9ydCA9PT0gdW5kZWZp
bmVkKSAvLyB3ZSBhc3N1bWUgdGhlIHBvcnQgaGFzbid0IGJlZW4gZ2l2ZW4uCisgICAgICAgIHBv
cnQgPSBTQ19ERUZBVUxUX0lOOyAvLyBUSFJFQUQ6IHNoYXJlZCB2YXIuLi4KKyAgICByZXR1cm4g
cG9ydC5pc0NoYXJSZWFkeSgpOworfQorLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAg
ICAocGVlcGhvbGUgKHBvc3RmaXggIi5jbG9zZSgpIikpKQorKi8KK2Z1bmN0aW9uIHNjX2Nsb3Nl
SW5wdXRQb3J0KHApIHsKKyAgICByZXR1cm4gcC5jbG9zZSgpOworfQorCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
cG9zdGZpeCAiIGluc3RhbmNlb2Ygc2NfSW5wdXRQb3J0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lz
SW5wdXRQb3J0KG8pIHsKKyAgICByZXR1cm4gKG8gaW5zdGFuY2VvZiBzY19JbnB1dFBvcnQpOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgZW9mLW9iamVjdD8pCisgICAgICAgICAgICh0eXBlIGJv
b2wpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiID09PSBTQ19FT0ZfT0JKRUNUIikp
KQorKi8KK2Z1bmN0aW9uIHNjX2lzRU9GT2JqZWN0KG8pIHsKKyAgICByZXR1cm4gbyA9PT0gU0Nf
RU9GX09CSkVDVDsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKGhvbGUgMCAiU0NfREVGQVVMVF9JTiIpKSkKKyovCitmdW5jdGlvbiBzY19jdXJyZW50
SW5wdXRQb3J0KCkgeworICAgIHJldHVybiBTQ19ERUZBVUxUX0lOOworfQorCisvKiAtLS0tLS0t
LS0tLS0gZmlsZSBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIC0tLS0tLS0tLS0tKi8KKy8q
KiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jYWxsV2l0aElucHV0RmlsZShz
LCBwcm9jKSB7CisgICAgdGhyb3cgImNhbid0IG9wZW4gIiArIHM7Cit9CisKKy8qKiogTUVUQSAo
KGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19jYWxsV2l0aE91dHB1dEZpbGUocywgcHJvYykg
eworICAgIHRocm93ICJjYW4ndCBvcGVuICIgKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQg
I3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aElucHV0RnJvbUZpbGUocywgdGh1bmspIHsKKyAgICB0
aHJvdyAiY2FuJ3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb0ZpbGUocywgdGh1bmspIHsKKyAgICB0aHJvdyAiY2Fu
J3Qgb3BlbiAiICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9u
IHNjX29wZW5JbnB1dEZpbGUocykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIgKyBzOworfQor
CisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfb3Blbk91dHB1dEZpbGUo
cykgeworICAgIHRocm93ICJjYW4ndCBvcGVuICIgKyBzOworfQorCisvKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19iYXNlbmFt
ZShwKSB7CisgICB2YXIgaSA9IHAubGFzdEluZGV4T2YoJy8nKTsKKworICAgaWYoaSA+PSAwKQor
ICAgICAgcmV0dXJuIHAuc3Vic3RyaW5nKGkgKyAxLCBwLmxlbmd0aCk7CisgICBlbHNlCisgICAg
ICByZXR1cm4gJyc7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBz
Y19kaXJuYW1lKHApIHsKKyAgIHZhciBpID0gcC5sYXN0SW5kZXhPZignLycpOworCisgICBpZihp
ID49IDApCisgICAgICByZXR1cm4gcC5zdWJzdHJpbmcoMCwgaSk7CisgICBlbHNlCisgICAgICBy
ZXR1cm4gJyc7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChl
eHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aElucHV0RnJvbVBvcnQocCwgdGh1bmspIHsK
KyAgICB0cnkgeworICAgICAgICB2YXIgdG1wID0gU0NfREVGQVVMVF9JTjsgLy8gVEhSRUFEOiBz
aGFyZWQgdmFyLgorICAgICAgICBTQ19ERUZBVUxUX0lOID0gcDsKKyAgICAgICAgcmV0dXJuIHRo
dW5rKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgU0NfREVGQVVMVF9JTiA9IHRtcDsKKyAg
ICB9Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193aXRoSW5w
dXRGcm9tU3RyaW5nKHMsIHRodW5rKSB7CisgICAgcmV0dXJuIHNjX3dpdGhJbnB1dEZyb21Qb3J0
KG5ldyBzY19TdHJpbmdJbnB1dFBvcnQoc2Nfc3RyaW5nMmpzc3RyaW5nKHMpKSwgdGh1bmspOwor
fQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd2l0aE91dHB1dFRv
UG9ydChwLCB0aHVuaykgeworICAgIHRyeSB7CisgICAgICAgIHZhciB0bXAgPSBTQ19ERUZBVUxU
X09VVDsgLy8gVEhSRUFEOiBzaGFyZWQgdmFyLgorICAgICAgICBTQ19ERUZBVUxUX09VVCA9IHA7
CisgICAgICAgIHJldHVybiB0aHVuaygpOworICAgIH0gZmluYWxseSB7CisgICAgICAgIFNDX0RF
RkFVTFRfT1VUID0gdG1wOworICAgIH0KK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8K
K2Z1bmN0aW9uIHNjX3dpdGhPdXRwdXRUb1N0cmluZyh0aHVuaykgeworICAgIHZhciBwID0gbmV3
IHNjX1N0cmluZ091dHB1dFBvcnQoKTsKKyAgICBzY193aXRoT3V0cHV0VG9Qb3J0KHAsIHRodW5r
KTsKKyAgICByZXR1cm4gcC5jbG9zZSgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAq
LworZnVuY3Rpb24gc2Nfd2l0aE91dHB1dFRvUHJvY2VkdXJlKHByb2MsIHRodW5rKSB7CisgICAg
dmFyIHQgPSBmdW5jdGlvbihzKSB7IHByb2Moc2NfanNzdHJpbmcyc3RyaW5nKHMpKTsgfTsKKyAg
ICByZXR1cm4gc2Nfd2l0aE91dHB1dFRvUG9ydChuZXcgc2NfR2VuZXJpY091dHB1dFBvcnQodCks
IHRodW5rKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhv
bGUgKGhvbGUgMCAibmV3IHNjX1N0cmluZ091dHB1dFBvcnQoKSIpKSkKKyovCitmdW5jdGlvbiBz
Y19vcGVuT3V0cHV0U3RyaW5nKCkgeworICAgIHJldHVybiBuZXcgc2NfU3RyaW5nT3V0cHV0UG9y
dCgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfb3Blbklu
cHV0U3RyaW5nKHN0cikgeworICAgIHJldHVybiBuZXcgc2NfU3RyaW5nSW5wdXRQb3J0KHNjX3N0
cmluZzJqc3N0cmluZyhzdHIpKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK2Z1
bmN0aW9uIHNjX091dHB1dFBvcnQoKSB7Cit9CitzY19PdXRwdXRQb3J0LnByb3RvdHlwZSA9IG5l
dyBzY19Qb3J0KCk7CitzY19PdXRwdXRQb3J0LnByb3RvdHlwZS5hcHBlbmRKU1N0cmluZyA9IGZ1
bmN0aW9uKG9iaikgeworICAgIC8qIGRvIG5vdGhpbmcgKi8KK30KK3NjX091dHB1dFBvcnQucHJv
dG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgLyogZG8gbm90aGluZyAqLworfQorCitm
dW5jdGlvbiBzY19TdHJpbmdPdXRwdXRQb3J0KCkgeworICAgIHRoaXMucmVzID0gIiI7Cit9Citz
Y19TdHJpbmdPdXRwdXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19PdXRwdXRQb3J0KCk7CitzY19T
dHJpbmdPdXRwdXRQb3J0LnByb3RvdHlwZS5hcHBlbmRKU1N0cmluZyA9IGZ1bmN0aW9uKHMpIHsK
KyAgICB0aGlzLnJlcyArPSBzOworfQorc2NfU3RyaW5nT3V0cHV0UG9ydC5wcm90b3R5cGUuY2xv
c2UgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gc2NfanNzdHJpbmcyc3RyaW5nKHRoaXMucmVz
KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KSkgKi8KK2Z1bmN0aW9uIHNjX2dldE91dHB1
dFN0cmluZyhzcCkgeworICAgIHJldHVybiBzY19qc3N0cmluZzJzdHJpbmcoc3AucmVzKTsKK30K
KyAgICAKKworZnVuY3Rpb24gc2NfRXJyb3JPdXRwdXRQb3J0KCkgeworfQorc2NfRXJyb3JPdXRw
dXRQb3J0LnByb3RvdHlwZSA9IG5ldyBzY19PdXRwdXRQb3J0KCk7CitzY19FcnJvck91dHB1dFBv
cnQucHJvdG90eXBlLmFwcGVuZEpTU3RyaW5nID0gZnVuY3Rpb24ocykgeworICAgIHRocm93ICJk
b24ndCB3cml0ZSBvbiBFcnJvclBvcnQhIjsKK30KK3NjX0Vycm9yT3V0cHV0UG9ydC5wcm90b3R5
cGUuY2xvc2UgPSBmdW5jdGlvbigpIHsKKyAgICAvKiBkbyBub3RoaW5nICovCit9CisKK2Z1bmN0
aW9uIHNjX0dlbmVyaWNPdXRwdXRQb3J0KGFwcGVuZEpTU3RyaW5nLCBjbG9zZSkgeworICAgIHRo
aXMuYXBwZW5kSlNTdHJpbmcgPSBhcHBlbmRKU1N0cmluZzsKKyAgICBpZiAoY2xvc2UpCisgICAg
ICAgIHRoaXMuY2xvc2UgPSBjbG9zZTsKK30KK3NjX0dlbmVyaWNPdXRwdXRQb3J0LnByb3RvdHlw
ZSA9IG5ldyBzY19PdXRwdXRQb3J0KCk7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAg
ICAgICAgKHR5cGUgYm9vbCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIgaW5zdGFu
Y2VvZiBzY19PdXRwdXRQb3J0IikpKQorKi8KK2Z1bmN0aW9uIHNjX2lzT3V0cHV0UG9ydChvKSB7
CisgICAgcmV0dXJuIChvIGluc3RhbmNlb2Ygc2NfT3V0cHV0UG9ydCk7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChwb3N0Zml4ICIuY2xvc2UoKSIp
KSkKKyovCitmdW5jdGlvbiBzY19jbG9zZU91dHB1dFBvcnQocCkgeworICAgIHJldHVybiBwLmNs
b3NlKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSB3cml0ZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBv
cnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfd3JpdGUobywgcCkgeworICAgIGlmIChwID09PSB1bmRl
ZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKyAgICAgICAgcCA9IFNDX0RFRkFVTFRfT1VU
OworICAgIHAuYXBwZW5kSlNTdHJpbmcoc2NfdG9Xcml0ZVN0cmluZyhvKSk7Cit9CisKK2Z1bmN0
aW9uIHNjX3RvV3JpdGVTdHJpbmcobykgeworICAgIGlmIChvID09PSBudWxsKQorICAgICAgICBy
ZXR1cm4gIigpIjsKKyAgICBlbHNlIGlmIChvID09PSB0cnVlKQorICAgICAgICByZXR1cm4gIiN0
IjsKKyAgICBlbHNlIGlmIChvID09PSBmYWxzZSkKKyAgICAgICAgcmV0dXJuICIjZiI7CisgICAg
ZWxzZSBpZiAobyA9PT0gdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gIiN1bnNwZWNpZmllZCI7
CisgICAgZWxzZSBpZiAodHlwZW9mIG8gPT09ICdmdW5jdGlvbicpCisgICAgICAgIHJldHVybiAi
Izxwcm9jZWR1cmUgIiArIHNjX2hhc2gobykgKyAiPiI7CisgICAgZWxzZSBpZiAoby5zY190b1dy
aXRlU3RyaW5nKQorICAgICAgICByZXR1cm4gby5zY190b1dyaXRlU3RyaW5nKCk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gby50b1N0cmluZygpOworfQorCitmdW5jdGlvbiBzY19lc2NhcGVX
cml0ZVN0cmluZyhzKSB7CisgICAgdmFyIHJlcyA9ICIiOworICAgIHZhciBqID0gMDsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgeworICAgICAgICBzd2l0Y2ggKHMuY2hhckF0
KGkpKSB7CisgICAgICAgIGNhc2UgIlwwIjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxc
MCI7IGogPSBpICsgMTsgYnJlYWs7CisgICAgICAgIGNhc2UgIlxiIjogcmVzICs9IHMuc3Vic3Ry
aW5nKGosIGkpICsgIlxcYiI7IGogPSBpICsgMTsgYnJlYWs7CisgICAgICAgIGNhc2UgIlxmIjog
cmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcZiI7IGogPSBpICsgMTsgYnJlYWs7CisgICAg
ICAgIGNhc2UgIlxuIjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcbiI7IGogPSBpICsg
MTsgYnJlYWs7CisgICAgICAgIGNhc2UgIlxyIjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsg
IlxcciI7IGogPSBpICsgMTsgYnJlYWs7CisgICAgICAgIGNhc2UgIlx0IjogcmVzICs9IHMuc3Vi
c3RyaW5nKGosIGkpICsgIlxcdCI7IGogPSBpICsgMTsgYnJlYWs7CisgICAgICAgIGNhc2UgIlx2
IjogcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpICsgIlxcdiI7IGogPSBpICsgMTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgJyInOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAnXFwiJzsgaiA9IGkg
KyAxOyBicmVhazsKKyAgICAgICAgY2FzZSAiXFwiOiByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkg
KyAiXFxcXCI7IGogPSBpICsgMTsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICB2YXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKCJcYSIgIT09ICJhIiAmJiBj
ID09ICJcYSIpIHsKKyAgICAgICAgICAgICAgICByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAi
XFxhIjsgaiA9IGkgKyAxOyBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICgiXHYiICE9PSAidiIgJiYgYyA9PSAiXHYiKSB7CisgICAgICAgICAgICAgICAgcmVzICs9IHMu
c3Vic3RyaW5nKGosIGkpICsgIlxcdiI7IGogPSBpICsgMTsgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAvL2lmIChzLmNoYXJBdChpKSA8ICcgJyB8fCBzLmNoYXJDb2RlQXQo
aSkgPiAxMjcpIHsKKyAgICAgICAgICAgIC8vIENBUkU6IE1hbnVlbCBpcyB0aGlzIE9LIHdpdGgg
SE9QPworICAgICAgICAgICAgaWYgKHMuY2hhckF0KGkpIDwgJyAnKSB7CisgICAgICAgICAgICAg
ICAgLyogbm9uIHByaW50YWJsZSBjaGFyYWN0ZXIgYW5kIHNwZWNpYWwgY2hhcnMgKi8KKyAgICAg
ICAgICAgICAgICByZXMgKz0gcy5zdWJzdHJpbmcoaiwgaSkgKyAiXFx4IiArIHMuY2hhckNvZGVB
dChpKS50b1N0cmluZygxNik7CisgICAgICAgICAgICAgICAgaiA9IGkgKyAxOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLy8gZWxzZSBqdXN0IGxldCBpIGluY3JlYXNlLi4uCisgICAgICAg
IH0KKyAgICB9CisgICAgcmVzICs9IHMuc3Vic3RyaW5nKGosIGkpOworICAgIHJldHVybiByZXM7
Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSBkaXNwbGF5IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkpICovCitmdW5jdGlvbiBzY19kaXNwbGF5KG8sIHApIHsKKyAgICBpZiAocCA9PT0gdW5kZWZp
bmVkKSAvLyB3ZSBhc3N1bWUgbm90IGdpdmVuCisgICAgICAgIHAgPSBTQ19ERUZBVUxUX09VVDsK
KyAgICBwLmFwcGVuZEpTU3RyaW5nKHNjX3RvRGlzcGxheVN0cmluZyhvKSk7Cit9CisKK2Z1bmN0
aW9uIHNjX3RvRGlzcGxheVN0cmluZyhvKSB7CisgICAgaWYgKG8gPT09IG51bGwpCisgICAgICAg
IHJldHVybiAiKCkiOworICAgIGVsc2UgaWYgKG8gPT09IHRydWUpCisgICAgICAgIHJldHVybiAi
I3QiOworICAgIGVsc2UgaWYgKG8gPT09IGZhbHNlKQorICAgICAgICByZXR1cm4gIiNmIjsKKyAg
ICBlbHNlIGlmIChvID09PSB1bmRlZmluZWQpCisgICAgICAgIHJldHVybiAiI3Vuc3BlY2lmaWVk
IjsKKyAgICBlbHNlIGlmICh0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJykKKyAgICAgICAgcmV0dXJu
ICIjPHByb2NlZHVyZSAiICsgc2NfaGFzaChvKSArICI+IjsKKyAgICBlbHNlIGlmIChvLnNjX3Rv
RGlzcGxheVN0cmluZykKKyAgICAgICAgcmV0dXJuIG8uc2NfdG9EaXNwbGF5U3RyaW5nKCk7Cisg
ICAgZWxzZQorICAgICAgICByZXR1cm4gby50b1N0cmluZygpOworfQorCisvKiAtLS0tLS0tLS0t
LS0tLS0tLS0gbmV3bGluZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nf
bmV3bGluZShwKSB7CisgICAgaWYgKHAgPT09IHVuZGVmaW5lZCkgLy8gd2UgYXNzdW1lIG5vdCBn
aXZlbgorICAgICAgICBwID0gU0NfREVGQVVMVF9PVVQ7CisgICAgcC5hcHBlbmRKU1N0cmluZygi
XG4iKTsKK30KKyAgICAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSB3cml0ZS1jaGFyIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY193cml0ZUNoYXIoYywgcCkgeworICAgIGlm
IChwID09PSB1bmRlZmluZWQpIC8vIHdlIGFzc3VtZSBub3QgZ2l2ZW4KKyAgICAgICAgcCA9IFND
X0RFRkFVTFRfT1VUOworICAgIHAuYXBwZW5kSlNTdHJpbmcoYy52YWwpOworfQorCisvKiAtLS0t
LS0tLS0tLS0tLS0tLS0gd3JpdGUtY2lyY2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitm
dW5jdGlvbiBzY193cml0ZUNpcmNsZShvLCBwKSB7CisgICAgaWYgKHAgPT09IHVuZGVmaW5lZCkg
Ly8gd2UgYXNzdW1lIG5vdCBnaXZlbgorICAgICAgICBwID0gU0NfREVGQVVMVF9PVVQ7CisgICAg
cC5hcHBlbmRKU1N0cmluZyhzY190b1dyaXRlQ2lyY2xlU3RyaW5nKG8pKTsKK30KKworZnVuY3Rp
b24gc2NfdG9Xcml0ZUNpcmNsZVN0cmluZyhvKSB7CisgICAgdmFyIHN5bWIgPSBzY19nZW5zeW0o
IndyaXRlQ2lyY2xlIik7CisgICAgdmFyIG5iUG9pbnRlciA9IG5ldyBPYmplY3QoKTsKKyAgICBu
YlBvaW50ZXIubmIgPSAwOworICAgIHNjX3ByZXBXcml0ZUNpcmNsZShvLCBzeW1iLCBuYlBvaW50
ZXIpOworICAgIHJldHVybiBzY19nZW5Ub1dyaXRlQ2lyY2xlU3RyaW5nKG8sIHN5bWIpOworfQor
CitmdW5jdGlvbiBzY19wcmVwV3JpdGVDaXJjbGUobywgc3ltYiwgbmJQb2ludGVyKSB7CisgICAg
Ly8gVE9ETyBzY19TdHJ1Y3QKKyAgICBpZiAobyBpbnN0YW5jZW9mIHNjX1BhaXIgfHwKKyAgICAg
ICAgbyBpbnN0YW5jZW9mIHNjX1ZlY3RvcikgeworICAgICAgICBpZiAob1tzeW1iXSAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICAvLyBub3QgdGhlIGZpcnN0IHZpc2l0LgorICAgICAgICAg
ICAgb1tzeW1iXSsrOworICAgICAgICAgICAgLy8gdW5sZXNzIHRoZXJlIGlzIGFscmVhZHkgYSBu
dW1iZXIsIGFzc2lnbiBvbmUuCisgICAgICAgICAgICBpZiAoIW9bc3ltYiArICJuYiJdKSBvW3N5
bWIgKyAibmIiXSA9IG5iUG9pbnRlci5uYisrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIG9bc3ltYl0gPSAwOworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIHNjX1Bh
aXIpIHsKKyAgICAgICAgICAgIHNjX3ByZXBXcml0ZUNpcmNsZShvLmNhciwgc3ltYiwgbmJQb2lu
dGVyKTsKKyAgICAgICAgICAgIHNjX3ByZXBXcml0ZUNpcmNsZShvLmNkciwgc3ltYiwgbmJQb2lu
dGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
by5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBzY19wcmVwV3JpdGVDaXJjbGUob1tpXSwg
c3ltYiwgbmJQb2ludGVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gc2NfZ2Vu
VG9Xcml0ZUNpcmNsZVN0cmluZyhvLCBzeW1iKSB7CisgICAgaWYgKCEobyBpbnN0YW5jZW9mIHNj
X1BhaXIgfHwKKyAgICAgICAgICBvIGluc3RhbmNlb2Ygc2NfVmVjdG9yKSkKKyAgICAgICAgcmV0
dXJuIHNjX3RvV3JpdGVTdHJpbmcobyk7CisgICAgcmV0dXJuIG8uc2NfdG9Xcml0ZUNpcmNsZVN0
cmluZyhzeW1iKTsKK30KK3NjX1BhaXIucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcg
PSBmdW5jdGlvbihzeW1iLCBpbkxpc3QpIHsKKyAgICBpZiAodGhpc1tzeW1iICsgInVzZSJdKSB7
IC8vIHVzZS1mbGFnIGlzIHNldC4gSnVzdCB1c2UgaXQuCisgICAgICAgIHZhciBuYiA9IHRoaXNb
c3ltYiArICJuYiJdOworICAgICAgICBpZiAodGhpc1tzeW1iXS0tID09PSAwKSB7IC8vIGlmIHdl
IGFyZSB0aGUgbGFzdCB1c2UuIHJlbW92ZSBhbGwgZmllbGRzLgorICAgICAgICAgICAgZGVsZXRl
IHRoaXNbc3ltYl07CisgICAgICAgICAgICBkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisgICAg
ICAgICAgICBkZWxldGUgdGhpc1tzeW1iICsgInVzZSJdOworICAgICAgICB9CisgICAgICAgIGlm
IChpbkxpc3QpCisgICAgICAgICAgICByZXR1cm4gJy4gIycgKyBuYiArICcjJzsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmV0dXJuICcjJyArIG5iICsgJyMnOworICAgIH0KKyAgICBpZiAo
dGhpc1tzeW1iXS0tID09PSAwKSB7IC8vIGlmIHdlIGFyZSB0aGUgbGFzdCB1c2UuIHJlbW92ZSBh
bGwgZmllbGRzLgorICAgICAgICBkZWxldGUgdGhpc1tzeW1iXTsKKyAgICAgICAgZGVsZXRlIHRo
aXNbc3ltYiArICJuYiJdOworICAgICAgICBkZWxldGUgdGhpc1tzeW1iICsgInVzZSJdOworICAg
IH0KKworICAgIHZhciByZXMgPSAiIjsKKyAgICAKKyAgICBpZiAodGhpc1tzeW1iXSAhPT0gdW5k
ZWZpbmVkKSB7IC8vIGltcGxpZXMgPiAwCisgICAgICAgIHRoaXNbc3ltYiArICJ1c2UiXSA9IHRy
dWU7CisgICAgICAgIGlmIChpbkxpc3QpCisgICAgICAgICAgICByZXMgKz0gJy4gIycgKyB0aGlz
W3N5bWIgKyAibmIiXSArICc9JzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzICs9ICcj
JyArIHRoaXNbc3ltYiArICJuYiJdICsgJz0nOworICAgICAgICBpbkxpc3QgPSBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIWluTGlzdCkKKyAgICAgICAgcmVzICs9ICIoIjsKKyAgICAKKyAgICAv
LyBwcmludCBjYXIKKyAgICByZXMgKz0gc2NfZ2VuVG9Xcml0ZUNpcmNsZVN0cmluZyh0aGlzLmNh
ciwgc3ltYik7CisgICAgCisgICAgaWYgKHNjX2lzUGFpcih0aGlzLmNkcikpIHsKKyAgICAgICAg
cmVzICs9ICIgIiArIHRoaXMuY2RyLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcoc3ltYiwgdHJ1ZSk7
CisgICAgfSBlbHNlIGlmICh0aGlzLmNkciAhPT0gbnVsbCkgeworICAgICAgICByZXMgKz0gIiAu
ICIgKyBzY19nZW5Ub1dyaXRlQ2lyY2xlU3RyaW5nKHRoaXMuY2RyLCBzeW1iKTsKKyAgICB9Cisg
ICAgaWYgKCFpbkxpc3QpCisgICAgICAgIHJlcyArPSAiKSI7CisgICAgcmV0dXJuIHJlczsKK307
CitzY19WZWN0b3IucHJvdG90eXBlLnNjX3RvV3JpdGVDaXJjbGVTdHJpbmcgPSBmdW5jdGlvbihz
eW1iKSB7CisgICAgaWYgKHRoaXNbc3ltYiArICJ1c2UiXSkgeyAvLyB1c2UtZmxhZyBpcyBzZXQu
IEp1c3QgdXNlIGl0LgorICAgICAgICB2YXIgbmIgPSB0aGlzW3N5bWIgKyAibmIiXTsKKyAgICAg
ICAgaWYgKHRoaXNbc3ltYl0tLSA9PT0gMCkgeyAvLyBpZiB3ZSBhcmUgdGhlIGxhc3QgdXNlLiBy
ZW1vdmUgYWxsIGZpZWxkcy4KKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzW3N5bWJdOworICAgICAg
ICAgICAgZGVsZXRlIHRoaXNbc3ltYiArICJuYiJdOworICAgICAgICAgICAgZGVsZXRlIHRoaXNb
c3ltYiArICJ1c2UiXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJyMnICsgbmIgKyAnIyc7
CisgICAgfQorICAgIGlmICh0aGlzW3N5bWJdLS0gPT09IDApIHsgLy8gaWYgd2UgYXJlIHRoZSBs
YXN0IHVzZS4gcmVtb3ZlIGFsbCBmaWVsZHMuCisgICAgICAgIGRlbGV0ZSB0aGlzW3N5bWJdOwor
ICAgICAgICBkZWxldGUgdGhpc1tzeW1iICsgIm5iIl07CisgICAgICAgIGRlbGV0ZSB0aGlzW3N5
bWIgKyAidXNlIl07CisgICAgfQorCisgICAgdmFyIHJlcyA9ICIiOworICAgIGlmICh0aGlzW3N5
bWJdICE9PSB1bmRlZmluZWQpIHsgLy8gaW1wbGllcyA+IDAKKyAgICAgICAgdGhpc1tzeW1iICsg
InVzZSJdID0gdHJ1ZTsKKyAgICAgICAgcmVzICs9ICcjJyArIHRoaXNbc3ltYiArICJuYiJdICsg
Jz0nOworICAgIH0KKyAgICByZXMgKz0gIiMoIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVzICs9IHNjX2dlblRvV3JpdGVDaXJjbGVTdHJp
bmcodGhpc1tpXSwgc3ltYik7CisgICAgICAgIGlmIChpIDwgdGhpcy5sZW5ndGggLSAxKSByZXMg
Kz0gIiAiOworICAgIH0KKyAgICByZXMgKz0gIikiOworICAgIHJldHVybiByZXM7Cit9OworCisK
Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLSBwcmludCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwor
ZnVuY3Rpb24gc2NfcHJpbnQocykgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7
CisgICAgICAgIHNjX2Rpc3BsYXkocyk7CisgICAgICAgIHNjX25ld2xpbmUoKTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgc2NfZGlzcGxheShhcmd1bWVudHNbaV0pOworICAgICAgICBzY19u
ZXdsaW5lKCk7CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gZm9ybWF0IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKioqIE1F
VEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2NfZm9ybWF0KHMsIGFyZ3MpIHsKKyAgIHZh
ciBsZW4gPSBzLmxlbmd0aDsKKyAgIHZhciBwID0gbmV3IHNjX1N0cmluZ091dHB1dFBvcnQoKTsK
KyAgIHZhciBpID0gMCwgaiA9IDE7CisKKyAgIHdoaWxlKCBpIDwgbGVuICkgeworICAgICAgdmFy
IGkyID0gcy5pbmRleE9mKCJ+IiwgaSk7CisKKyAgICAgIGlmIChpMiA9PSAtMSkgeworICAgICAg
ICAgIHAuYXBwZW5kSlNTdHJpbmcoIHMuc3Vic3RyaW5nKCBpLCBsZW4gKSApOworICAgICAgICAg
IHJldHVybiBwLmNsb3NlKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKGkyID4gaSkg
eworICAgICAgICAgICAgaWYgKGkyID09IChsZW4gLSAxKSkgeworICAgICAgICAgICAgICAgIHAu
YXBwZW5kSlNTdHJpbmcocy5zdWJzdHJpbmcoaSwgbGVuKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHAuY2xvc2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICBwLmFw
cGVuZEpTU3RyaW5nKHMuc3Vic3RyaW5nKGksIGkyKSk7CisgICAgICAgICAgICAgICBpID0gaTI7
CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIHN3aXRjaChzLmNoYXJDb2Rl
QXQoaTIgKyAxKSkgeworICAgICAgICAgICAgY2FzZSA2NToKKyAgICAgICAgICAgIGNhc2UgOTc6
CisgICAgICAgICAgICAgICAvLyBhCisgICAgICAgICAgICAgICBzY19kaXNwbGF5KGFyZ3VtZW50
c1tqXSwgcCk7CisgICAgICAgICAgICAgICBpICs9IDI7IGorKzsKKyAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIDgzOgorICAgICAgICAgICAgY2FzZSAxMTU6CisgICAg
ICAgICAgICAgICAvLyBzCisgICAgICAgICAgICAgICBzY193cml0ZShhcmd1bWVudHNbal0sIHAp
OworICAgICAgICAgICAgICAgaSArPSAyOyBqKys7CisgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgY2FzZSA4NjoKKyAgICAgICAgICAgIGNhc2UgMTE4OgorICAgICAgICAgICAg
ICAgLy8gdgorICAgICAgICAgICAgICAgc2NfZGlzcGxheShhcmd1bWVudHNbal0sIHApOworICAg
ICAgICAgICAgICAgcC5hcHBlbmRKU1N0cmluZygiXG4iKTsKKyAgICAgICAgICAgICAgIGkgKz0g
MjsgaisrOworICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgNjc6Cisg
ICAgICAgICAgICBjYXNlIDk5OgorICAgICAgICAgICAgICAgLy8gYworICAgICAgICAgICAgICAg
cC5hcHBlbmRKU1N0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKGFyZ3VtZW50c1tqXSkpOworICAg
ICAgICAgICAgICAgaSArPSAyOyBqKys7CisgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgY2FzZSA4ODoKKyAgICAgICAgICAgIGNhc2UgMTIwOgorICAgICAgICAgICAgICAgLy8g
eAorICAgICAgICAgICAgICAgcC5hcHBlbmRKU1N0cmluZyhhcmd1bWVudHNbal0udG9TdHJpbmco
NikpOworICAgICAgICAgICAgICAgaSArPSAyOyBqKys7CisgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSA3OToKKyAgICAgICAgICAgIGNhc2UgMTExOgorICAgICAgICAg
ICAgICAgLy8gbworICAgICAgICAgICAgICAgcC5hcHBlbmRKU1N0cmluZyhhcmd1bWVudHNbal0u
dG9TdHJpbmcoOCkpOworICAgICAgICAgICAgICAgaSArPSAyOyBqKys7CisgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSA2NjoKKyAgICAgICAgICAgIGNhc2UgOTg6Cisg
ICAgICAgICAgICAgICAvLyBiCisgICAgICAgICAgICAgICBwLmFwcGVuZEpTU3RyaW5nKGFyZ3Vt
ZW50c1tqXS50b1N0cmluZygyKSk7CisgICAgICAgICAgICAgICBpICs9IDI7IGorKzsKKyAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDM3Ogor
ICAgICAgICAgICAgY2FzZSAxMTA6CisgICAgICAgICAgICAgICAvLyAlLCBuCisgICAgICAgICAg
ICAgICBwLmFwcGVuZEpTU3RyaW5nKCJcbiIpOworICAgICAgICAgICAgICAgaSArPSAyOyBicmVh
azsKKworICAgICAgICAgICAgY2FzZSAxMTQ6CisgICAgICAgICAgICAgICAvLyByCisgICAgICAg
ICAgICAgICBwLmFwcGVuZEpTU3RyaW5nKCJcciIpOworICAgICAgICAgICAgICAgaSArPSAyOyBi
cmVhazsKKworICAgICAgICAgICAgY2FzZSAxMjY6CisgICAgICAgICAgICAgICAvLyB+CisgICAg
ICAgICAgICAgICBwLmFwcGVuZEpTU3RyaW5nKCJ+Iik7CisgICAgICAgICAgICAgICBpICs9IDI7
IGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgc2NfZXJyb3Io
ICJmb3JtYXQ6IGlsbGVnYWwgfiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArIFN0cmluZy5m
cm9tQ2hhckNvZGUocy5jaGFyQ29kZUF0KGkyICsgMSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgKyAiIHNlcXVlbmNlIiApOworICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICAg
fQorICAgICAgfQorICAgfQorCisgICByZXR1cm4gcC5jbG9zZSgpOworfQorCisvKiAtLS0tLS0t
LS0tLS0tLS0tLS0gZ2xvYmFsIHBvcnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3ZhciBTQ19ERUZBVUxUX0lOID0gbmV3IHNjX0Vycm9y
SW5wdXRQb3J0KCk7Cit2YXIgU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfRXJyb3JPdXRwdXRQb3J0
KCk7Cit2YXIgU0NfRVJST1JfT1VUID0gbmV3IHNjX0Vycm9yT3V0cHV0UG9ydCgpOworCit2YXIg
c2NfU1lNQk9MX1BSRUZJWCA9ICJcdTFFOUMiOwordmFyIHNjX0tFWVdPUkRfUFJFRklYID0gIlx1
MUU5RCI7CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChp
ZCkpKSAqLworZnVuY3Rpb24gc2NfanNzdHJpbmcyc3RyaW5nKHMpIHsKKyAgICByZXR1cm4gczsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZp
eCAiJ1xcdTFFOUMnICsiKSkpCisqLworZnVuY3Rpb24gc2NfanNzdHJpbmcyc3ltYm9sKHMpIHsK
KyAgICByZXR1cm4gc2NfU1lNQk9MX1BSRUZJWCArIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9y
dCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChpZCkpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmlu
ZzJqc3N0cmluZyhzKSB7CisgICAgcmV0dXJuIHM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHBlZXBob2xlIChzeW1ib2wyanNzdHJpbmdfaW1tdXRhYmxlKSkpCisq
LworZnVuY3Rpb24gc2Nfc3ltYm9sMmpzc3RyaW5nKHMpIHsKKyAgICByZXR1cm4gcy5zbGljZSgx
KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHBv
c3RmaXggIi5zbGljZSgxKSIpKSkKKyovCitmdW5jdGlvbiBzY19rZXl3b3JkMmpzc3RyaW5nKGsp
IHsKKyAgICByZXR1cm4gay5zbGljZSgxKTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAiJ1xcdTFFOUQnICsiKSkpCisqLworZnVuY3Rp
b24gc2NfanNzdHJpbmcya2V5d29yZChzKSB7CisgICAgcmV0dXJuIHNjX0tFWVdPUkRfUFJFRklY
ICsgczsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29s
KSkKKyovCitmdW5jdGlvbiBzY19pc0tleXdvcmQocykgeworICAgIHJldHVybiAodHlwZW9mIHMg
PT09ICJzdHJpbmciKSAmJgorICAgICAgICAocy5jaGFyQXQoMCkgPT09IHNjX0tFWVdPUkRfUFJF
RklYKTsKK30KKworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2dlbnN5bSA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciBjb3VudGVyID0gMTAwMDsKKyAgICByZXR1cm4gZnVuY3Rp
b24oc3ltKSB7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgaWYgKCFzeW0pIHN5bSA9IHNj
X1NZTUJPTF9QUkVGSVg7CisgICAgICAgIHJldHVybiBzeW0gKyAicyIgKyBjb3VudGVyICsgIn4i
ICsgIl5zQy1HZU5zWW0gIjsKKyAgICB9OworfSgpOworCisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNFcXVhbChvMSwg
bzIpIHsKKyAgICByZXR1cm4gKChvMSA9PT0gbzIpIHx8CisgICAgICAgICAgICAoc2NfaXNQYWly
KG8xKSAmJiBzY19pc1BhaXIobzIpCisgICAgICAgICAgICAgJiYgc2NfaXNQYWlyRXF1YWwobzEs
IG8yLCBzY19pc0VxdWFsKSkgfHwKKyAgICAgICAgICAgIChzY19pc1ZlY3RvcihvMSkgJiYgc2Nf
aXNWZWN0b3IobzIpCisgICAgICAgICAgICAgJiYgc2NfaXNWZWN0b3JFcXVhbChvMSwgbzIsIHNj
X2lzRXF1YWwpKSk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCBudW1iZXItPnN5bWJvbCBpbnRl
Z2VyLT5zeW1ib2wpKSAqLworZnVuY3Rpb24gc2NfbnVtYmVyMnN5bWJvbCh4LCByYWRpeCkgewor
ICAgIHJldHVybiBzY19TWU1CT0xfUFJFRklYICsgc2NfbnVtYmVyMmpzc3RyaW5nKHgsIHJhZGl4
KTsKK30KKyAgICAKKy8qKiogTUVUQSAoKGV4cG9ydCBudW1iZXItPnN0cmluZyBpbnRlZ2VyLT5z
dHJpbmcpKSAqLwordmFyIHNjX251bWJlcjJzdHJpbmcgPSBzY19udW1iZXIyanNzdHJpbmc7CisK
Ky8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCitmdW5jdGlvbiBzY19zeW1ib2wybnVtYmVyKHMs
IHJhZGl4KSB7CisgICAgcmV0dXJuIHNjX2pzc3RyaW5nMm51bWJlcihzLnNsaWNlKDEpLCByYWRp
eCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3RyaW5nMm51bWJl
ciA9IHNjX2pzc3RyaW5nMm51bWJlcjsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAg
ICAgICAocGVlcGhvbGUgKHByZWZpeCAiKyIgcykpKQorICAgICAgICAgICA7OyBwZWVwaG9sZSB3
aWxsIG9ubHkgYXBwbHkgaWYgbm8gcmFkaXggaXMgZ2l2ZW4uCisqLworZnVuY3Rpb24gc2Nfc3Ry
aW5nMmludGVnZXIocywgcmFkaXgpIHsKKyAgICBpZiAoIXJhZGl4KSByZXR1cm4gK3M7CisgICAg
cmV0dXJuIHBhcnNlSW50KHMsIHJhZGl4KTsKK30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQor
ICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAiKyIpKSkKKyovCitmdW5jdGlvbiBzY19zdHJp
bmcycmVhbChzKSB7CisgICAgcmV0dXJuICtzOworfQorCisKKy8qKiogTUVUQSAoKGV4cG9ydCAj
dCkKKyAgICAgICAgICAgKHR5cGUgYm9vbCkpCisqLworZnVuY3Rpb24gc2NfaXNTeW1ib2wocykg
eworICAgIHJldHVybiAodHlwZW9mIHMgPT09ICJzdHJpbmciKSAmJgorICAgICAgICAocy5jaGFy
QXQoMCkgPT09IHNjX1NZTUJPTF9QUkVGSVgpOworfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
CisgICAgICAgICAgIChwZWVwaG9sZSAoc3ltYm9sMnN0cmluZ19pbW11dGFibGUpKSkKKyovCitm
dW5jdGlvbiBzY19zeW1ib2wyc3RyaW5nKHMpIHsKKyAgICByZXR1cm4gcy5zbGljZSgxKTsKK30K
KworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZpeCAi
J1xcdTFFOUMnICsiKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMnN5bWJvbChzKSB7CisgICAg
cmV0dXJuIHNjX1NZTUJPTF9QUkVGSVggKyBzOworfQorCisvKioqIE1FVEEgKChleHBvcnQgc3lt
Ym9sLWFwcGVuZCkKKyAgICAgICAgICAgKHBlZXBob2xlIChzeW1ib2xBcHBlbmRfaW1tdXRhYmxl
KSkpCisqLworZnVuY3Rpb24gc2Nfc3ltYm9sQXBwZW5kKCkgeworICAgIHZhciByZXMgPSBzY19T
WU1CT0xfUFJFRklYOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKQorICAgICAgICByZXMgKz0gYXJndW1lbnRzW2ldLnNsaWNlKDEpOworICAgIHJldHVybiBy
ZXM7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChw
b3N0Zml4ICIudmFsIikpKQorKi8KK2Z1bmN0aW9uIHNjX2NoYXIyc3RyaW5nKGMpIHsgcmV0dXJu
IGMudmFsOyB9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xl
IChob2xlIDEgIidcXHUxRTlDJyArICIgYyAiLnZhbCIpKSkKKyovCitmdW5jdGlvbiBzY19jaGFy
MnN5bWJvbChjKSB7IHJldHVybiBzY19TWU1CT0xfUFJFRklYICsgYy52YWw7IH0KKworLyoqKiBN
RVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAodHlwZSBib29sKSkKKyovCitmdW5jdGlvbiBz
Y19pc1N0cmluZyhzKSB7CisgICAgcmV0dXJuICh0eXBlb2YgcyA9PT0gInN0cmluZyIpICYmCisg
ICAgICAgIChzLmNoYXJBdCgwKSAhPT0gc2NfU1lNQk9MX1BSRUZJWCk7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2NfbWFrZVN0cmluZyA9IHNjX21ha2Vqc1N0cmluZzsK
KworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLworZnVuY3Rpb24gc2Nfc3RyaW5nKCkgewor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBh
cmd1bWVudHNbaV0gPSBhcmd1bWVudHNbaV0udmFsOworICAgIHJldHVybiAiIi5jb25jYXQuYXBw
bHkoIiIsIGFyZ3VtZW50cyk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAg
ICAgKHBlZXBob2xlIChwb3N0Zml4ICIubGVuZ3RoIikpKQorKi8KK2Z1bmN0aW9uIHNjX3N0cmlu
Z0xlbmd0aChzKSB7IHJldHVybiBzLmxlbmd0aDsgfQorCisvKioqIE1FVEEgKChleHBvcnQgI3Qp
KSAqLworZnVuY3Rpb24gc2Nfc3RyaW5nUmVmKHMsIGspIHsKKyAgICByZXR1cm4gbmV3IHNjX0No
YXIocy5jaGFyQXQoaykpOworfQorCisvKiB0aGVyZSdzIG5vIHN0cmluZ1NldCBpbiB0aGUgaW1t
dXRhYmxlIHZlcnNpb24KK2Z1bmN0aW9uIHNjX3N0cmluZ1NldChzLCBrLCBjKQorKi8KKworCisv
KioqIE1FVEEgKChleHBvcnQgc3RyaW5nPT8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAg
ICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEgIiA9PT0gIiBzdHIyKSkpCisqLworZnVuY3Rp
b24gc2NfaXNTdHJpbmdFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4gczEgPT09IHMyOworfQor
LyoqKiBNRVRBICgoZXhwb3J0IHN0cmluZzw/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAg
ICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPCAiIHN0cjIpKSkKKyovCitmdW5jdGlv
biBzY19pc1N0cmluZ0xlc3MoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxIDwgczI7Cit9CisvKioq
IE1FVEEgKChleHBvcnQgc3RyaW5nPj8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAg
ICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEgIiA+ICIgc3RyMikpKQorKi8KK2Z1bmN0aW9uIHNj
X2lzU3RyaW5nR3JlYXRlcihzMSwgczIpIHsKKyAgICByZXR1cm4gczEgPiBzMjsKK30KKy8qKiog
TUVUQSAoKGV4cG9ydCBzdHJpbmc8PT8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAg
ICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEgIiA8PSAiIHN0cjIpKSkKKyovCitmdW5jdGlvbiBz
Y19pc1N0cmluZ0xlc3NFcXVhbChzMSwgczIpIHsKKyAgICByZXR1cm4gczEgPD0gczI7Cit9Cisv
KioqIE1FVEEgKChleHBvcnQgc3RyaW5nPj0/KQorICAgICAgICAgICAodHlwZSBib29sKQorICAg
ICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIgPj0gIiBzdHIyKSkpCisqLworZnVuY3Rp
b24gc2NfaXNTdHJpbmdHcmVhdGVyRXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxID49IHMy
OworfQorLyoqKiBNRVRBICgoZXhwb3J0IHN0cmluZy1jaT0/KQorICAgICAgICAgICAodHlwZSBi
b29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIxICIudG9Mb3dlckNhc2UoKSA9
PT0gIiBzdHIyICIudG9Mb3dlckNhc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0cmluZ0NJ
RXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxLnRvTG93ZXJDYXNlKCkgPT09IHMyLnRvTG93
ZXJDYXNlKCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgc3RyaW5nLWNpPD8pCisgICAgICAgICAg
ICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEgIi50b0xvd2Vy
Q2FzZSgpIDwgIiBzdHIyICIudG9Mb3dlckNhc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19pc1N0
cmluZ0NJTGVzcyhzMSwgczIpIHsKKyAgICByZXR1cm4gczEudG9Mb3dlckNhc2UoKSA8IHMyLnRv
TG93ZXJDYXNlKCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgc3RyaW5nLWNpPj8pCisgICAgICAg
ICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAyIHN0cjEgIi50b0xv
d2VyQ2FzZSgpID4gIiBzdHIyICIudG9Mb3dlckNhc2UoKSIpKSkKKyovCitmdW5jdGlvbiBzY19p
c1N0cmluZ0NJR3JlYXRlcihzMSwgczIpIHsKKyAgICByZXR1cm4gczEudG9Mb3dlckNhc2UoKSA+
IHMyLnRvTG93ZXJDYXNlKCk7Cit9CisvKioqIE1FVEEgKChleHBvcnQgc3RyaW5nLWNpPD0/KQor
ICAgICAgICAgICAodHlwZSBib29sKQorICAgICAgICAgICAocGVlcGhvbGUgKGhvbGUgMiBzdHIx
ICIudG9Mb3dlckNhc2UoKSA8PSAiIHN0cjIgIi50b0xvd2VyQ2FzZSgpIikpKQorKi8KK2Z1bmN0
aW9uIHNjX2lzU3RyaW5nQ0lMZXNzRXF1YWwoczEsIHMyKSB7CisgICAgcmV0dXJuIHMxLnRvTG93
ZXJDYXNlKCkgPD0gczIudG9Mb3dlckNhc2UoKTsKK30KKy8qKiogTUVUQSAoKGV4cG9ydCBzdHJp
bmctY2k+PT8pCisgICAgICAgICAgICh0eXBlIGJvb2wpCisgICAgICAgICAgIChwZWVwaG9sZSAo
aG9sZSAyIHN0cjEgIi50b0xvd2VyQ2FzZSgpID49ICIgc3RyMiAiLnRvTG93ZXJDYXNlKCkiKSkp
CisqLworZnVuY3Rpb24gc2NfaXNTdHJpbmdDSUdyZWF0ZXJFcXVhbChzMSwgczIpIHsKKyAgICBy
ZXR1cm4gczEudG9Mb3dlckNhc2UoKSA+PSBzMi50b0xvd2VyQ2FzZSgpOworfQorCisvKioqIE1F
VEEgKChleHBvcnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAoaG9sZSAzIHMgIi5zdWJzdHJp
bmcoIiBzdGFydCAiLCAiIGVuZCAiKSIpKSkKKyovCitmdW5jdGlvbiBzY19zdWJzdHJpbmcocywg
c3RhcnQsIGVuZCkgeworICAgIHJldHVybiBzLnN1YnN0cmluZyhzdGFydCwgZW5kKTsKK30KKwor
LyoqKiBNRVRBICgoZXhwb3J0ICN0KSkKKyovCitmdW5jdGlvbiBzY19pc1N1YnN0cmluZ19hdChz
MSwgczIsIGkpIHsKKyAgICByZXR1cm4gczIgPT0gczEuc3Vic3RyaW5nKGksIGkrIHMyLmxlbmd0
aCk7Cit9CisKKy8qKiogTUVUQSAoKGV4cG9ydCAjdCkKKyAgICAgICAgICAgKHBlZXBob2xlIChp
bmZpeCAwICNmICIrIiAiJyciKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nQXBwZW5kKCkgewor
ICAgIHJldHVybiAiIi5jb25jYXQuYXBwbHkoIiIsIGFyZ3VtZW50cyk7Cit9CisKKy8qKiogTUVU
QSAoKGV4cG9ydCAjdCkpICovCit2YXIgc2Nfc3RyaW5nMmxpc3QgPSBzY19qc3N0cmluZzJsaXN0
OworCisvKioqIE1FVEEgKChleHBvcnQgI3QpKSAqLwordmFyIHNjX2xpc3Qyc3RyaW5nID0gc2Nf
bGlzdDJqc3N0cmluZzsKKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVl
cGhvbGUgKGlkKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nQ29weShzKSB7CisgICAgcmV0dXJu
IHM7Cit9CisKKy8qIHRoZXJlJ3Mgbm8gc3RyaW5nLWZpbGwgaW4gdGhlIGltbXV0YWJsZSB2ZXJz
aW9uCitmdW5jdGlvbiBzY19zdHJpbmdGaWxsKHMsIGMpCisqLworCisvKioqIE1FVEEgKChleHBv
cnQgI3QpCisgICAgICAgICAgIChwZWVwaG9sZSAocG9zdGZpeCAiLnNsaWNlKDEpIikpKQorKi8K
K2Z1bmN0aW9uIHNjX2tleXdvcmQyc3RyaW5nKG8pIHsKKyAgICByZXR1cm4gby5zbGljZSgxKTsK
K30KKworLyoqKiBNRVRBICgoZXhwb3J0ICN0KQorICAgICAgICAgICAocGVlcGhvbGUgKHByZWZp
eCAiJ1xcdTFFOUQnICsiKSkpCisqLworZnVuY3Rpb24gc2Nfc3RyaW5nMmtleXdvcmQobykgewor
ICAgIHJldHVybiBzY19LRVlXT1JEX1BSRUZJWCArIG87Cit9CisKK1N0cmluZy5wcm90b3R5cGUu
c2NfdG9EaXNwbGF5U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMuY2hhckF0KDAp
ID09PSBzY19TWU1CT0xfUFJFRklYKQorICAgICAgICAvLyBUT0RPOiBjYXJlIGZvciBzeW1ib2xz
IHdpdGggc3BhY2VzIChlc2NhcGUtY2hhcnMgc3ltYm9scykuCisgICAgICAgIHJldHVybiB0aGlz
LnNsaWNlKDEpOworICAgIGVsc2UgaWYgKHRoaXMuY2hhckF0KDApID09PSBzY19LRVlXT1JEX1BS
RUZJWCkKKyAgICAgICAgcmV0dXJuICI6IiArIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gdGhpcy50b1N0cmluZygpOworfTsKKworU3RyaW5nLnByb3RvdHlwZS5zY190
b1dyaXRlU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMuY2hhckF0KDApID09PSBz
Y19TWU1CT0xfUFJFRklYKQorICAgICAgICAvLyBUT0RPOiBjYXJlIGZvciBzeW1ib2xzIHdpdGgg
c3BhY2VzIChlc2NhcGUtY2hhcnMgc3ltYm9scykuCisgICAgICAgIHJldHVybiB0aGlzLnNsaWNl
KDEpOworICAgIGVsc2UgaWYgKHRoaXMuY2hhckF0KDApID09PSBzY19LRVlXT1JEX1BSRUZJWCkK
KyAgICAgICAgcmV0dXJuICI6IiArIHRoaXMuc2xpY2UoMSk7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gJyInICsgc2NfZXNjYXBlV3JpdGVTdHJpbmcodGhpcykgKyAnIic7Cit9OworLyogRXhw
b3J0ZWQgVmFyaWFibGVzICovCit2YXIgQmdMX3Rlc3R6ZDJib3llcnpkMjsKK3ZhciBCZ0xfbmJv
eWVyemQyYmVuY2htYXJremQyOwordmFyIEJnTF9zZXR1cHpkMmJveWVyemQyOworLyogRW5kIEV4
cG9ydHMgKi8KKwordmFyIHRyYW5zbGF0ZV90ZXJtX25ib3llcjsKK3ZhciB0cmFuc2xhdGVfYXJn
c19uYm95ZXI7Cit2YXIgdW50cmFuc2xhdGVfdGVybV9uYm95ZXI7Cit2YXIgQmdMX3NjX3N5bWJv
bHpkMnplM3N5bWJvbHpkMnJlY29yZF8xemUzX25ib3llcjsKK3ZhciBCZ0xfc2NfemEyc3ltYm9s
emQycmVjb3Jkc3pkMmFsaXN0emEyXzJ6MDBfbmJveWVyOwordmFyIHRyYW5zbGF0ZV9hbGlzdF9u
Ym95ZXI7Cit2YXIgYXBwbHlfc3Vic3RfbmJveWVyOwordmFyIGFwcGx5X3N1YnN0X2xzdF9uYm95
ZXI7Cit2YXIgdGF1dG9sb2d5cF9uYm95ZXI7Cit2YXIgaWZfY29uc3RydWN0b3JfbmJveWVyOwor
dmFyIHJld3JpdGVfY291bnRfbmJveWVyOwordmFyIHJld3JpdGVfbmJveWVyOwordmFyIHJld3Jp
dGVfYXJnc19uYm95ZXI7Cit2YXIgdW5pZnlfc3Vic3RfbmJveWVyOwordmFyIG9uZV93YXlfdW5p
ZnkxX25ib3llcjsKK3ZhciBmYWxzZV90ZXJtX25ib3llcjsKK3ZhciB0cnVlX3Rlcm1fbmJveWVy
OwordmFyIHRyYW5zX29mX2ltcGxpZXMxX25ib3llcjsKK3ZhciBpc190ZXJtX2VxdWFsX25ib3ll
cjsKK3ZhciBpc190ZXJtX21lbWJlcl9uYm95ZXI7Cit2YXIgY29uc3RfbmJveWVyOwordmFyIHNj
X2NvbnN0XzNfbmJveWVyOwordmFyIHNjX2NvbnN0XzRfbmJveWVyOworeworICAgIChzY19jb25z
dF80X25ib3llciA9IChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNp
bXBsaWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2ltcGxpZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5l
dyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3UiLG51bGwpKSkpKSksKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19QYWlyKCJcdTFF
OUN1IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLG51bGwpKSkpKSks
bnVsbCkpKSkpKSk7CisgICAgKHNjX2NvbnN0XzNfbmJveWVyID0gc2NfbGlzdCgobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb21waWxl
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Zvcm0iLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Nv
ZGVnZW4iLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29wdGltaXplIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2Zvcm0iLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXFwIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2dyZWF0ZXJwIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFF
OUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc2VxcCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlcmVxcCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYm9vbGVhbiIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNv
ciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51
bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZmYiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1w
bGllcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW1wbGllcyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNldmVuMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVsbCkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q29kZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc3ViMSIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDY291bnRwcy0iLChuZXcgc2NfUGFpcigiXHUxRTlDbCIsKG5ldyBzY19QYWly
KCJcdTFFOUNwcmVkIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2NvdW50cHMtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3ByZWQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFjdC0iLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmFjdC1sb29wIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNyZXZlcnNlLSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlLWxvb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNkaXZpZGVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6
ZXJvcCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVyIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkp
KSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNhc3N1bWUtdHJ1ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN2YXIiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYWxpc3QiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIs
KG5ldyBzY19QYWlyKCJcdTFFOUN2YXIiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3QiLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYWxpc3QiLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDYXNzdW1lLWZhbHNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIs
KG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25z
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZiIsbnVsbCkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhbGlzdCIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN0YXV0b2xvZ3ktY2hlY2tlciIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0YXV0b2xvZ3lw
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3JtYWxpemUiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbmls
IixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmYWxzaWZ5IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZhbHNp
ZnkxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3JtYWxpemUiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
bmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwcmltZSIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwcmltZTEiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc3ViMSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQi
LChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNxIixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDb3IiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNxIixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKCJcdTFFOUNx
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZiIsbnVsbCkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3AiLG51bGwpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3AiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN0IixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lt
cGxpZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNxIixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3EiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSksbnVsbCkpKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSxudWxsKSkpKSkpKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNudW1iZXJwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkp
LG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNi
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2MiLG51bGwpKSkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5
Q2QiLChuZXcgc2NfUGFpcigiXHUxRTlDZSIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFp
cigiXHUxRTlDZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNlIixudWxsKSkpKSkpKSksKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2UiLG51bGwpKSkpKSkpKSxudWxs
KSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSxu
dWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIs
KG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2Nf
UGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkp
KSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIs
KG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKCJcdTFF
OUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNiIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNm
aXgiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkp
LCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSks
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVy
ZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwp
KSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZWFu
aW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzLXRyZWUiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKCJc
dTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxs
KSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
cGx1cy10cmVlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigi
XHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cy1mcmluZ2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVs
bCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZpeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2EiLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2IiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVz
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJv
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkp
KSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2V4ZWMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNwZHMiLChuZXcgc2NfUGFpcigiXHUxRTlDZW52
cm4iLG51bGwpKSkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNleGVjIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2V4
ZWMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNwZHMiLChuZXcg
c2NfUGFpcigiXHUxRTlDZW52cm4iLG51bGwpKSkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2Vu
dnJuIixudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWMtZmxhdHRlbiIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLChuZXcgc2NfUGFp
cigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSxudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q29yIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2Ii
LG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2Vx
dWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJzZSIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q21lbWJlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVuZ3RoIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZXZlcnNlIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChu
ZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaW50
ZXJzZWN0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnRoIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksKG5ldyBzY19QYWly
KCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm8iLG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNleHAiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNq
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNleHAiLChuZXcgc2Nf
UGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNrIixudWxsKSkpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZXhwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcg
c2NfUGFpcigiXHUxRTlDayIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2V4cCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXhw
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDaiIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoIlx1MUU5Q2siLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmV2ZXJz
ZS1sb29wIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhcHBlbmQiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3JldmVyc2UtbG9vcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDY291bnQtbGlzdCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNzb3J0LWxwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2NvdW50LWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvdW50LWxpc3Qi
LChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5k
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSkp
KSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsbnVsbCkpKSkpKSxudWxs
KSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5k
ZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3F1b3RpZW50IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxs
KSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4Iiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bvd2VyLWV2YWwi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2JpZy1wbHVzMSIsKG5ldyBzY19QYWly
KCJcdTFFOUNsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDYmFz
ZSIsbnVsbCkpKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwb3dlci1ldmFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2wiLChuZXcgc2NfUGFp
cigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkp
KSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDYmlnLXBsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVs
bCkpKSkpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDcG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDcG93ZXItZXZhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q2Jhc2UiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Jl
bWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNyZW1haW5kZXIi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Jl
bWFpbmRlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVybyIsbnVsbCkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNxdW90
aWVudCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNpIixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNvciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChuZXcgc2NfUGFp
cigiXHUxRTlDaiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNqIiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNyZW1haW5kZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJc
dTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3AiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJv
cCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItZXZhbCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcG93ZXItcmVwIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2kiLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkpKSwobmV3IHNjX1Bh
aXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3Bv
d2VyLWV2YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2JpZy1wbHVzIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwb3dlci1yZXAiLChuZXcgc2NfUGFpcigiXHUx
RTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3Bvd2VyLXJlcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2Jhc2UiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDemVybyIsbnVsbCkpLChuZXcgc2NfUGFpcigiXHUxRTlDYmFzZSIsbnVsbCkpKSkp
KSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiYXNlIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19Q
YWlyKCJcdTFFOUNqIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2djZCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNudGgiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxs
KSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnRoIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcg
c2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNudGgiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkp
KSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVy
ZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Zp
eCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJl
bmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFp
cigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVu
Y2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIs
KG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLG51bGwpKSkpKSks
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFF
OUNjIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDdyIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcmVtYWluZGVy
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJc
dTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8i
LG51bGwpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNkaWZmZXJlbmNlIiwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBzY19QYWly
KCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixu
dWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2Nf
UGFpcigiXHUxRTlDYiIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIixudWxsKSkpKSkpLG51bGwpKSkp
KSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FkZDEi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2Nf
UGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUNhZGQxIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xl
c3NwIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigi
XHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3RpbWVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSxudWxs
KSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxu
dWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNwbHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDemVyb3Ai
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSksbnVsbCkpKSkpKSwgKG5l
dyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
Z2NkIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDZ2NkIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbHVl
IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3JtYWxpemUiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbHVlIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNj
X1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19QYWly
KCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25z
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q25pbCIsbnVsbCkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25saXN0cCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsaXN0cCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ29waGVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51
bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3NhbWVmcmluZ2Ui
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2ZsYXR0ZW4iLChuZXcgc2NfUGFpcigi
XHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlc3QtZmFjdG9yIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q29yIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWly
KCJcdTFFOUN5IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSksbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxs
KSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNncmVhdGVzdC1mYWN0b3IiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigoMSks
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZ3JlYXRlc3QtZmFj
dG9yIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkp
KSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigoMSksbnVsbCkp
KSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSxudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3RpbWVzLWxpc3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzLWxpc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIs
bnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMtbGlzdCIsKG5l
dyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3By
aW1lLWxpc3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYW5kIiwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNwcmltZS1saXN0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwp
KSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ByaW1lLWxpc3QiLChuZXcgc2Nf
UGFpcigiXHUxRTlDeSIsbnVsbCkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1Bh
aXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIs
KG5ldyBzY19QYWlyKCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0
aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN3IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwp
KSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhbmQiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUx
RTlDeiIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDb3IiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSxudWxsKSkpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoIlx1
MUU5Q3ciLChuZXcgc2NfUGFpcigoMSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZ3JlYXRlcmVxcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZXNzcCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSks
bnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDb3IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFs
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q3plcm8iLG51bGwpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2FuZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbnVtYmVycCIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IiwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSks
bnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVs
bCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVs
bCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVz
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKDEpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKHNjX2xpc3QoIlx1MUU5
Q2FuZCIsIChuZXcgc2NfUGFpcigiXHUxRTlDbm90IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSwgKG5ldyBzY19Q
YWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2IiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm8iLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q251bWJl
cnAiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsbnVsbCkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
bnVtYmVycCIsKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc3ViMSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFF
OUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDc3ViMSIsKG5ldyBzY19QYWlyKCJcdTFFOUNi
IixudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSks
bnVsbCkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGVsZXRl
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDbCIsbnVsbCkpKSkp
KSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcg
c2NfUGFpcigiXHUxRTlDbCIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWly
KCJcdTFFOUNsIixudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1
YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQyIiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNkZWxldGUiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNsIixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNzb3J0MiIsKG5ldyBzY19QYWlyKCJcdTFFOUNsIixudWxsKSkp
KSxudWxsKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Rzb3J0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3gi
LG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3NvcnQyIiwobmV3IHNj
X1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlD
ZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4MSIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
MiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4MyIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5ldyBzY19Q
YWlyKCJcdTFFOUN4NCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29ucyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4NSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY29u
cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4NiIsKG5ldyBzY19QYWlyKCJcdTFFOUN4NyIsbnVsbCkp
KSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKCg2KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNsZW5ndGgiLChuZXcg
c2NfUGFpcigiXHUxRTlDeDciLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBz
Y19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlm
ZmVyZW5jZSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxs
KSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKDIpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDZml4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkpLG51
bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q3F1b3RpZW50IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNw
bHVzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCgyKSxudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigiXHUx
RTlDeSIsKG5ldyBzY19QYWlyKCgyKSxudWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwg
KG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUx
RTlDc2lnbWEiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm8iLG51bGwpKSwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVz
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2kiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2FkZDEiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsbnVsbCkpKSksbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKDIpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVh
bCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQxIiwobmV3IHNjX1Bh
aXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q251bWJlcnAiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDYWRkMSIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYWRkMSIsKG5ldyBzY19QYWlyKCJc
dTFFOUN4IixudWxsKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVuY2UiLChuZXcgc2NfUGFpcigiXHUxRTlDeiIsKG5ldyBz
Y19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlc3Nw
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSkp
KSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNub3QiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2xlc3NwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFp
cigiXHUxRTlDeiIsbnVsbCkpKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3AiLChuZXcg
c2NfUGFpcigiXHUxRTlDeiIsKG5ldyBzY19QYWlyKCJcdTFFOUN5IixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q25vdCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDbGVzc3AiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IixudWxsKSkpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFp
cigiXHUxRTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZml4
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3oiLG51bGwpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSkp
LG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNwbHVzLXRyZWUiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2RlbGV0ZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51
bGwpKSkpKSksbnVsbCkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNtZW1iZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFF
OUN5IixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2RpZmZlcmVu
Y2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q21lYW5pbmciLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q3BsdXMtdHJlZSIsKG5ldyBzY19QYWlyKCJcdTFFOUN5Iixu
dWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDbWVhbmluZyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNj
X1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNtZWFuaW5nIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNw
bHVzLXRyZWUiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKCJc
dTFFOUNhIixudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5l
dyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhZGQx
IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q251bWJlcnAiLChuZXcgc2NfUGFpcigiXHUxRTlDeSIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChu
ZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5l
dyBzY19QYWlyKCJcdTFFOUNmaXgiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVs
bCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q250aCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDbmlsIixudWxsKSksKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6ZXJvcCIsKG5ldyBzY19QYWlyKCJcdTFFOUNpIixudWxsKSkpKSwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19Q
YWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2Nf
UGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xhc3Qi
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVuZCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksbnVsbCkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpLChuZXcgc2NfUGFp
cigobmV3IHNjX1BhaXIoIlx1MUU5Q2xhc3QiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3
IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSkpLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NvbnMiLChuZXcgc2NfUGFpcigobmV3IHNj
X1BhaXIoIlx1MUU5Q2NhciIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGFzdCIs
KG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoIlx1
MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpKSksbnVs
bCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKCJcdTFFOUN6IixudWxsKSkpKSkpLChuZXcgc2Nf
UGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNsZXNzcCIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3ki
LG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3QiLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1MUU5
Q3oiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChu
ZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSwobmV3IHNjX1BhaXIoIlx1
MUU5Q3oiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChuZXcgc2NfUGFpcigi
XHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbm1lbnQi
LChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlD
YXBwZW5kIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVs
bCkpKSkpKSxudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2lmIiwo
bmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNhc3NpZ25lZHAiLChuZXcgc2NfUGFpcigi
XHUxRTlDeCIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2Fzc2lnbm1lbnQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5l
dyBzY19QYWlyKCJcdTFFOUNhIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIo
Ilx1MUU5Q2Fzc2lnbm1lbnQiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsKG5ldyBzY19QYWlyKCJc
dTFFOUNiIixudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpLCAobmV3IHNjX1BhaXIo
Ilx1MUU5Q2VxdWFsIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjYXIiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2dvcGhlciIsKG5ldyBzY19QYWlyKCJcdTFFOUN4
IixudWxsKSkpKSxudWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIs
KG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDbGlzdHAiLChuZXcgc2NfUGFpcigiXHUx
RTlDeCIsbnVsbCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY2FyIiwobmV3
IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmbGF0dGVuIiwobmV3IHNjX1BhaXIoIlx1MUU5
Q3giLG51bGwpKSkpLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3pl
cm8iLG51bGwpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwgKG5ldyBzY19QYWlyKCJcdTFFOUNl
cXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19Q
YWlyKChuZXcgc2NfUGFpcigiXHUxRTlDY2RyIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNnb3BoZXIiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSksbnVs
bCkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigo
bmV3IHNjX1BhaXIoIlx1MUU5Q2xpc3RwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3giLG51bGwpKSkp
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2NkciIsKG5ldyBzY19QYWlyKChuZXcg
c2NfUGFpcigiXHUxRTlDZmxhdHRlbiIsKG5ldyBzY19QYWlyKCJcdTFFOUN4IixudWxsKSkpKSxu
dWxsKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNjb25zIiwobmV3IHNjX1Bh
aXIoKG5ldyBzY19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDbmlsIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpKSksbnVsbCkpKSkp
KSwgKG5ldyBzY19QYWlyKCJcdTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDcXVvdGllbnQiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3RpbWVzIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLChuZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSkpKSwo
bmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDaWYiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3plcm9wIiwobmV3
IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3plcm8iLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNmaXgiLChu
ZXcgc2NfUGFpcigiXHUxRTlDeCIsbnVsbCkpKSksbnVsbCkpKSkpKSkpLG51bGwpKSkpKSksIChu
ZXcgc2NfUGFpcigiXHUxRTlDZXF1YWwiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5
Q2dldCIsKG5ldyBzY19QYWlyKCJcdTFFOUNqIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJc
dTFFOUNzZXQiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIsKG5ldyBzY19QYWlyKCJcdTFFOUN2YWwi
LChuZXcgc2NfUGFpcigiXHUxRTlDbWVtIixudWxsKSkpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNj
X1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUNpZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigi
XHUxRTlDZXFwIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFpcigiXHUxRTlDaSIs
bnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoIlx1MUU5Q3ZhbCIsKG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigiXHUxRTlDZ2V0IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2oiLChuZXcgc2NfUGFpcigiXHUx
RTlDbWVtIixudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpKSk7CisgICAgKGNvbnN0
X25ib3llciA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3giLChuZXcgc2NfUGFp
cigiXHUxRTlDZiIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNhIiwo
bmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFp
cigiXHUxRTlDcGx1cyIsKG5ldyBzY19QYWlyKCJcdTFFOUNjIiwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUN6ZXJvIixudWxsKSksbnVsbCkpKSkpKSxudWxsKSkpKSkpLG51bGwpKSkp
KSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDeSIsKG5ldyBzY19QYWlyKCJcdTFF
OUNmIiwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKCJcdTFFOUN0aW1lcyIsKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDdGltZXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYSIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNiIixudWxsKSkpKSkpLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1
MUU5Q3BsdXMiLChuZXcgc2NfUGFpcigiXHUxRTlDYyIsKG5ldyBzY19QYWlyKCJcdTFFOUNkIixu
dWxsKSkpKSkpLG51bGwpKSkpKSksbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIoKG5ldyBzY19QYWly
KCJcdTFFOUN6IiwobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLChuZXcgc2NfUGFpcigobmV3IHNjX1Bh
aXIoIlx1MUU5Q3JldmVyc2UiLChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2FwcGVu
ZCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDYXBwZW5kIiwobmV3IHNjX1BhaXIo
Ilx1MUU5Q2EiLChuZXcgc2NfUGFpcigiXHUxRTlDYiIsbnVsbCkpKSkpKSwobmV3IHNjX1BhaXIo
KG5ldyBzY19QYWlyKCJcdTFFOUNuaWwiLG51bGwpKSxudWxsKSkpKSkpLG51bGwpKSkpLG51bGwp
KSkpKSksKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDdSIsKG5ldyBzY19QYWlyKCJc
dTFFOUNlcXVhbCIsKG5ldyBzY19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDcGx1cyIsKG5ldyBz
Y19QYWlyKCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBz
Y19QYWlyKChuZXcgc2NfUGFpcigiXHUxRTlDZGlmZmVyZW5jZSIsKG5ldyBzY19QYWlyKCJcdTFF
OUN4IiwobmV3IHNjX1BhaXIoIlx1MUU5Q3kiLG51bGwpKSkpKSksbnVsbCkpKSkpKSkpLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3ciLChuZXcgc2NfUGFpcigiXHUxRTlDbGVzc3Ai
LChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3JlbWFpbmRlciIsKG5ldyBzY19QYWly
KCJcdTFFOUNhIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2IiLG51bGwpKSkpKSksKG5ldyBzY19QYWly
KChuZXcgc2NfUGFpcigiXHUxRTlDbWVtYmVyIiwobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2xlbmd0aCIsKG5ldyBzY19QYWlyKCJcdTFFOUNi
IixudWxsKSkpKSxudWxsKSkpKSkpLG51bGwpKSkpKSkpKSxudWxsKSkpKSkpKSkpKSk7CisgICAg
QmdMX25ib3llcnpkMmJlbmNobWFya3pkMiA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgYXJn
cyA9IG51bGw7CisgICAgICAgIGZvciAodmFyIHNjX3RtcCA9IGFyZ3VtZW50cy5sZW5ndGggLSAx
OyBzY190bXAgPj0gMDsgc2NfdG1wLS0pIHsKKyAgICAgICAgICAgIGFyZ3MgPSBzY19jb25zKGFy
Z3VtZW50c1tzY190bXBdLCBhcmdzKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgbjsKKyAgICAg
ICAgcmV0dXJuICgobiA9ICgoYXJncyA9PT0gbnVsbCk/KDApOihhcmdzLmNhcikpKSwgKEJnTF9z
ZXR1cHpkMmJveWVyemQyKCkpLCAoQmdMX3J1bnpkMmJlbmNobWFya3pkMigoIm5ib3llciIrKHNj
X251bWJlcjJzdHJpbmcobikpKSwgKDEpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVy
biAoQmdMX3Rlc3R6ZDJib3llcnpkMihuKSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKHJld3JpdGVz
KSB7CisgICAgICAgICAgICBpZiAoKHNjX2lzTnVtYmVyKHJld3JpdGVzKSkpCisgICAgICAgICAg
ICAgICAgc3dpdGNoIChuKSB7CisgICAgICAgICAgICAgICAgY2FzZSAoMCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAocmV3cml0ZXM9PT0oOTUwMjQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAoMSk6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiAocmV3cml0ZXM9PT0oNTkxNzc3KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgKDIpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KHJld3JpdGVzPT09KDE4MTM5NzUpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAoMyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAocmV3cml0
ZXM9PT0oNTM3NTY3OCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlICg0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRlcz09PSgx
NjQ0NTQwNikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlICg1KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRlcz09PSg1MTUwNzcz
OSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSkpKTsKKyAgICB9OworICAgIEJnTF9zZXR1cHpk
MmJveWVyemQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07Cisg
ICAgQmdMX3Rlc3R6ZDJib3llcnpkMiA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9OworICAgIHRyYW5zbGF0ZV90ZXJtX25ib3llciA9IGZ1bmN0aW9uKHRlcm0pIHsK
KyAgICAgICAgdmFyIGxzdDsKKyAgICAgICAgcmV0dXJuICghKHRlcm0gaW5zdGFuY2VvZiBzY19Q
YWlyKT90ZXJtOihuZXcgc2NfUGFpcigoQmdMX3NjX3N5bWJvbHpkMnplM3N5bWJvbHpkMnJlY29y
ZF8xemUzX25ib3llcigodGVybS5jYXIpKSksICgobHN0ID0gKHRlcm0uY2RyKSksICgobHN0ID09
PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigodHJhbnNsYXRlX3Rlcm1fbmJveWVyKChsc3QuY2Fy
KSkpLCAodHJhbnNsYXRlX2FyZ3NfbmJveWVyKChsc3QuY2RyKSkpKSkpKSkpKTsKKyAgICB9Owor
ICAgIHRyYW5zbGF0ZV9hcmdzX25ib3llciA9IGZ1bmN0aW9uKGxzdCkgeworICAgICAgICB2YXIg
c2NfbHN0XzU7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICByZXR1cm4gKChsc3QgPT09IG51
bGwpP251bGw6KG5ldyBzY19QYWlyKCgodGVybSA9IChsc3QuY2FyKSksICghKHRlcm0gaW5zdGFu
Y2VvZiBzY19QYWlyKT90ZXJtOihuZXcgc2NfUGFpcigoQmdMX3NjX3N5bWJvbHpkMnplM3N5bWJv
bHpkMnJlY29yZF8xemUzX25ib3llcigodGVybS5jYXIpKSksICh0cmFuc2xhdGVfYXJnc19uYm95
ZXIoKHRlcm0uY2RyKSkpKSkpKSwgKChzY19sc3RfNSA9IChsc3QuY2RyKSksICgoc2NfbHN0XzUg
PT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKCh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKHNjX2xz
dF81LmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigoc2NfbHN0XzUuY2RyKSkpKSkpKSkp
KTsKKyAgICB9OworICAgIHVudHJhbnNsYXRlX3Rlcm1fbmJveWVyID0gZnVuY3Rpb24odGVybSkg
eworICAgICAgICB2YXIgb3B0ck9wbmQ7CisgICAgICAgIHZhciB0YWlsMTEzMTsKKyAgICAgICAg
dmFyIEwxMTI3OworICAgICAgICB2YXIgZmFsc2VIZWFkMTEzMDsKKyAgICAgICAgdmFyIHN5bWJv
bF9yZWNvcmQ7CisgICAgICAgIGlmICghKHRlcm0gaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAg
ICAgICAgIHJldHVybiB0ZXJtOworICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgKGZhbHNlSGVhZDExMzAgPSAobmV3IHNjX1BhaXIobnVsbCwgbnVsbCkpKTsKKyAg
ICAgICAgICAgICAgICAoTDExMjcgPSAodGVybS5jZHIpKTsKKyAgICAgICAgICAgICAgICAodGFp
bDExMzEgPSBmYWxzZUhlYWQxMTMwKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIShMMTEyNyA9
PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgKHRhaWwxMTMxLmNkciA9IChuZXcgc2NfUGFpcigodW50cmFuc2xhdGVfdGVybV9uYm95ZXIo
KEwxMTI3LmNhcikpKSwgbnVsbCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh0YWlsMTEz
MSA9ICh0YWlsMTEzMS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIChMMTEyNyA9IChM
MTEyNy5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAob3B0ck9wbmQgPSAoZmFsc2VIZWFkMTEzMC5jZHIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKG5ldyBzY19QYWlyKCgoc3ltYm9sX3JlY29yZCA9ICh0ZXJtLmNhcikp
LCAoc3ltYm9sX3JlY29yZFsoMCldKSksIG9wdHJPcG5kKSk7CisgICAgICAgICAgICB9CisgICAg
fTsKKyAgICBCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyID0g
ZnVuY3Rpb24oc3ltKSB7CisgICAgICAgIHZhciByOworICAgICAgICB2YXIgeDsKKyAgICAgICAg
cmV0dXJuICgoeCA9IChzY19hc3NxKHN5bSwgQmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJh
bGlzdHphMl8yejAwX25ib3llcikpKSwgKCh4IT09IGZhbHNlKT8oeC5jZHIpOigociA9IFtzeW0s
IG51bGxdKSwgKEJnTF9zY196YTJzeW1ib2x6ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9uYm95
ZXIgPSAobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKHN5bSwgcikpLCBCZ0xfc2NfemEyc3ltYm9s
emQycmVjb3Jkc3pkMmFsaXN0emEyXzJ6MDBfbmJveWVyKSkpLCByKSkpOworICAgIH07CisgICAg
KEJnTF9zY196YTJzeW1ib2x6ZDJyZWNvcmRzemQyYWxpc3R6YTJfMnowMF9uYm95ZXIgPSBudWxs
KTsKKyAgICB0cmFuc2xhdGVfYWxpc3RfbmJveWVyID0gZnVuY3Rpb24oYWxpc3QpIHsKKyAgICAg
ICAgdmFyIHNjX2FsaXN0XzY7CisgICAgICAgIHZhciB0ZXJtOworICAgICAgICByZXR1cm4gKChh
bGlzdCA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKG5ldyBzY19QYWlyKChhbGlzdC5jYXIu
Y2FyKSwgKCh0ZXJtID0gKGFsaXN0LmNhci5jZHIpKSwgKCEodGVybSBpbnN0YW5jZW9mIHNjX1Bh
aXIpP3Rlcm06KG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3Jk
XzF6ZTNfbmJveWVyKCh0ZXJtLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigodGVybS5j
ZHIpKSkpKSkpKSksICgoc2NfYWxpc3RfNiA9IChhbGlzdC5jZHIpKSwgKChzY19hbGlzdF82ID09
PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoKHNjX2FsaXN0XzYuY2FyLmNh
ciksICh0cmFuc2xhdGVfdGVybV9uYm95ZXIoKHNjX2FsaXN0XzYuY2FyLmNkcikpKSkpLCAodHJh
bnNsYXRlX2FsaXN0X25ib3llcigoc2NfYWxpc3RfNi5jZHIpKSkpKSkpKSkpOworICAgIH07Cisg
ICAgYXBwbHlfc3Vic3RfbmJveWVyID0gZnVuY3Rpb24oYWxpc3QsIHRlcm0pIHsKKyAgICAgICAg
dmFyIGxzdDsKKyAgICAgICAgdmFyIHRlbXBfdGVtcDsKKyAgICAgICAgcmV0dXJuICghKHRlcm0g
aW5zdGFuY2VvZiBzY19QYWlyKT8oKHRlbXBfdGVtcCA9IChzY19hc3NxKHRlcm0sIGFsaXN0KSkp
LCAoKHRlbXBfdGVtcCE9PSBmYWxzZSk/KHRlbXBfdGVtcC5jZHIpOnRlcm0pKToobmV3IHNjX1Bh
aXIoKHRlcm0uY2FyKSwgKChsc3QgPSAodGVybS5jZHIpKSwgKChsc3QgPT09IG51bGwpP251bGw6
KG5ldyBzY19QYWlyKChhcHBseV9zdWJzdF9uYm95ZXIoYWxpc3QsIChsc3QuY2FyKSkpLCAoYXBw
bHlfc3Vic3RfbHN0X25ib3llcihhbGlzdCwgKGxzdC5jZHIpKSkpKSkpKSkpOworICAgIH07Cisg
ICAgYXBwbHlfc3Vic3RfbHN0X25ib3llciA9IGZ1bmN0aW9uKGFsaXN0LCBsc3QpIHsKKyAgICAg
ICAgdmFyIHNjX2xzdF83OworICAgICAgICByZXR1cm4gKChsc3QgPT09IG51bGwpP251bGw6KG5l
dyBzY19QYWlyKChhcHBseV9zdWJzdF9uYm95ZXIoYWxpc3QsIChsc3QuY2FyKSkpLCAoKHNjX2xz
dF83ID0gKGxzdC5jZHIpKSwgKChzY19sc3RfNyA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIo
KGFwcGx5X3N1YnN0X25ib3llcihhbGlzdCwgKHNjX2xzdF83LmNhcikpKSwgKGFwcGx5X3N1YnN0
X2xzdF9uYm95ZXIoYWxpc3QsIChzY19sc3RfNy5jZHIpKSkpKSkpKSkpOworICAgIH07CisgICAg
dGF1dG9sb2d5cF9uYm95ZXIgPSBmdW5jdGlvbihzY194XzExLCB0cnVlX2xzdCwgZmFsc2VfbHN0
KSB7CisgICAgICAgIHZhciB0bXAxMTI1OworICAgICAgICB2YXIgeDsKKyAgICAgICAgdmFyIHRt
cDExMjY7CisgICAgICAgIHZhciBzY194Xzg7CisgICAgICAgIHZhciBzY190bXAxMTI1Xzk7Cisg
ICAgICAgIHZhciBzY190bXAxMTI2XzEwOworICAgICAgICB2YXIgc2NfeF8xMTsKKyAgICAgICAg
dmFyIHRydWVfbHN0OworICAgICAgICB2YXIgZmFsc2VfbHN0OworICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgaWYgKCgoKHNjX3RtcDExMjZfMTAgPSAoaXNfdGVybV9lcXVhbF9u
Ym95ZXIoc2NfeF8xMSwgdHJ1ZV90ZXJtX25ib3llcikpKSwgKChzY190bXAxMTI2XzEwIT09IGZh
bHNlKT9zY190bXAxMTI2XzEwOihpc190ZXJtX21lbWJlcl9uYm95ZXIoc2NfeF8xMSwgdHJ1ZV9s
c3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoKCgoc2NfdG1wMTEyNV85ID0gKGlzX3Rlcm1f
ZXF1YWxfbmJveWVyKHNjX3hfMTEsIGZhbHNlX3Rlcm1fbmJveWVyKSkpLCAoKHNjX3RtcDExMjVf
OSE9PSBmYWxzZSk/c2NfdG1wMTEyNV85Oihpc190ZXJtX21lbWJlcl9uYm95ZXIoc2NfeF8xMSwg
ZmFsc2VfbHN0KSkpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlmICghKHNjX3hf
MTEgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCgoc2NfeF8xMS5jYXIpPT09aWZfY29uc3RydWN0b3JfbmJveWVyKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKCgoc2NfeF84ID0gKHNjX3hfMTEuY2RyLmNhcikpLCAodG1w
MTEyNiA9IChpc190ZXJtX2VxdWFsX25ib3llcihzY194XzgsIHRydWVfdGVybV9uYm95ZXIpKSks
ICgodG1wMTEyNiE9PSBmYWxzZSk/dG1wMTEyNjooaXNfdGVybV9tZW1iZXJfbmJveWVyKHNjX3hf
OCwgdHJ1ZV9sc3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNjX3hfMTEgPSAoc2NfeF8xMS5jZHIuY2RyLmNhcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHgg
PSAoc2NfeF8xMS5jZHIuY2FyKSksICh0bXAxMTI1ID0gKGlzX3Rlcm1fZXF1YWxfbmJveWVyKHgs
IGZhbHNlX3Rlcm1fbmJveWVyKSkpLCAoKHRtcDExMjUhPT0gZmFsc2UpP3RtcDExMjU6KGlzX3Rl
cm1fbWVtYmVyX25ib3llcih4LCBmYWxzZV9sc3QpKSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzY194XzExID0gKHNjX3hfMTEuY2RyLmNkci5jZHIu
Y2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKHRhdXRvbG9neXBfbmJveWVyKChzY194XzEx
LmNkci5jZHIuY2FyKSwgKG5ldyBzY19QYWlyKChzY194XzExLmNkci5jYXIpLCB0cnVlX2xzdCkp
LCBmYWxzZV9sc3QpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZmFsc2VfbHN0ID0gKG5ldyBzY19QYWlyKChzY194XzExLmNkci5jYXIpLCBmYWxzZV9sc3QpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY194XzExID0g
KHNjX3hfMTEuY2RyLmNkci5jZHIuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworICAgIChpZl9jb25zdHJ1Y3Rvcl9uYm95
ZXIgPSAiXHUxRTlDKiIpOworICAgIChyZXdyaXRlX2NvdW50X25ib3llciA9ICgwKSk7CisgICAg
cmV3cml0ZV9uYm95ZXIgPSBmdW5jdGlvbih0ZXJtKSB7CisgICAgICAgIHZhciB0ZXJtMjsKKyAg
ICAgICAgdmFyIHNjX3Rlcm1fMTI7CisgICAgICAgIHZhciBsc3Q7CisgICAgICAgIHZhciBzeW1i
b2xfcmVjb3JkOworICAgICAgICB2YXIgc2NfbHN0XzEzOworICAgICAgICB7CisgICAgICAgICAg
ICAoKytyZXdyaXRlX2NvdW50X25ib3llcik7CisgICAgICAgICAgICBpZiAoISh0ZXJtIGluc3Rh
bmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAoc2NfdGVybV8x
MiA9IChuZXcgc2NfUGFpcigodGVybS5jYXIpLCAoKHNjX2xzdF8xMyA9ICh0ZXJtLmNkcikpLCAo
KHNjX2xzdF8xMyA9PT0gbnVsbCk/bnVsbDoobmV3IHNjX1BhaXIoKHJld3JpdGVfbmJveWVyKChz
Y19sc3RfMTMuY2FyKSkpLCAocmV3cml0ZV9hcmdzX25ib3llcigoc2NfbHN0XzEzLmNkcikpKSkp
KSkpKSk7CisgICAgICAgICAgICAgICAgICAgIChsc3QgPSAoKHN5bWJvbF9yZWNvcmQgPSAodGVy
bS5jYXIpKSwgKHN5bWJvbF9yZWNvcmRbKDEpXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0ID09PSBudWxsKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NfdGVybV8xMjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgo
dGVybTIgPSAoKGxzdC5jYXIpLmNkci5jYXIpKSwgKHVuaWZ5X3N1YnN0X25ib3llciA9IG51bGwp
LCAob25lX3dheV91bmlmeTFfbmJveWVyKHNjX3Rlcm1fMTIsIHRlcm0yKSkpIT09IGZhbHNlKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXdyaXRlX25ib3llcigo
YXBwbHlfc3Vic3RfbmJveWVyKHVuaWZ5X3N1YnN0X25ib3llciwgKChsc3QuY2FyKS5jZHIuY2Ry
LmNhcikpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGxzdCA9IChsc3QuY2RyKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIHJld3JpdGVf
YXJnc19uYm95ZXIgPSBmdW5jdGlvbihsc3QpIHsKKyAgICAgICAgdmFyIHNjX2xzdF8xNDsKKyAg
ICAgICAgcmV0dXJuICgobHN0ID09PSBudWxsKT9udWxsOihuZXcgc2NfUGFpcigocmV3cml0ZV9u
Ym95ZXIoKGxzdC5jYXIpKSksICgoc2NfbHN0XzE0ID0gKGxzdC5jZHIpKSwgKChzY19sc3RfMTQg
PT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChyZXdyaXRlX25ib3llcigoc2NfbHN0XzE0LmNh
cikpKSwgKHJld3JpdGVfYXJnc19uYm95ZXIoKHNjX2xzdF8xNC5jZHIpKSkpKSkpKSkpOworICAg
IH07CisgICAgKHVuaWZ5X3N1YnN0X25ib3llciA9ICJcdTFFOUMqIik7CisgICAgb25lX3dheV91
bmlmeTFfbmJveWVyID0gZnVuY3Rpb24odGVybTEsIHRlcm0yKSB7CisgICAgICAgIHZhciBsc3Qx
OworICAgICAgICB2YXIgbHN0MjsKKyAgICAgICAgdmFyIHRlbXBfdGVtcDsKKyAgICAgICAgaWYg
KCEodGVybTIgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAodGVtcF90ZW1wID0gKHNjX2Fzc3EodGVybTIsIHVuaWZ5X3N1YnN0X25ib3llcikpKTsK
KyAgICAgICAgICAgICAgICBpZiAoKHRlbXBfdGVtcCE9PSBmYWxzZSkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoaXNfdGVybV9lcXVhbF9uYm95ZXIodGVybTEsICh0ZW1wX3RlbXAuY2Ry
KSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKChzY19p
c051bWJlcih0ZXJtMikpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY19pc0Vx
dWFsKHRlcm0xLCB0ZXJtMikpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaWZ5X3N1YnN0
X25ib3llciA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIodGVybTIsIHRlcm0xKSksIHVuaWZ5
X3N1YnN0X25ib3llcikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaWYgKCEodGVybTEgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
aWYgKCgodGVybTEuY2FyKT09PSh0ZXJtMi5jYXIpKSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDEgPSAodGVybTEuY2RyKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAobHN0MiA9ICh0ZXJtMi5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsc3Qx
ID09PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsc3Qy
ID09PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgobHN0MiA9PT0gbnVsbCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgoKG9uZV93YXlfdW5pZnkxX25ib3llcigobHN0MS5jYXIpLCAobHN0Mi5jYXIpKSkhPT0gZmFs
c2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDEgPSAobHN0MS5jZHIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxzdDIgPSAobHN0
Mi5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKyAgICAoZmFsc2VfdGVybV9uYm95
ZXIgPSAiXHUxRTlDKiIpOworICAgICh0cnVlX3Rlcm1fbmJveWVyID0gIlx1MUU5QyoiKTsKKyAg
ICB0cmFuc19vZl9pbXBsaWVzMV9uYm95ZXIgPSBmdW5jdGlvbihuKSB7CisgICAgICAgIHZhciBz
Y19uXzE1OworICAgICAgICByZXR1cm4gKChzY19pc0VxdWFsKG4sICgxKSkpPyhzY19saXN0KCJc
dTFFOUNpbXBsaWVzIiwgKDApLCAoMSkpKTooc2NfbGlzdCgiXHUxRTlDYW5kIiwgKHNjX2xpc3Qo
Ilx1MUU5Q2ltcGxpZXMiLCAobi0oMSkpLCBuKSksICgoc2Nfbl8xNSA9IChuLSgxKSkpLCAoKHNj
X2lzRXF1YWwoc2Nfbl8xNSwgKDEpKSk/KHNjX2xpc3QoIlx1MUU5Q2ltcGxpZXMiLCAoMCksICgx
KSkpOihzY19saXN0KCJcdTFFOUNhbmQiLCAoc2NfbGlzdCgiXHUxRTlDaW1wbGllcyIsIChzY19u
XzE1LSgxKSksIHNjX25fMTUpKSwgKHRyYW5zX29mX2ltcGxpZXMxX25ib3llcigoc2Nfbl8xNS0o
MSkpKSkpKSkpKSkpOworICAgIH07CisgICAgaXNfdGVybV9lcXVhbF9uYm95ZXIgPSBmdW5jdGlv
bih4LCB5KSB7CisgICAgICAgIHZhciBsc3QxOworICAgICAgICB2YXIgbHN0MjsKKyAgICAgICAg
dmFyIHIyOworICAgICAgICB2YXIgcjE7CisgICAgICAgIGlmICgoeCBpbnN0YW5jZW9mIHNjX1Bh
aXIpKQorICAgICAgICAgICAgaWYgKCh5IGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAg
ICAgICAgaWYgKCgoKHIxID0gKHguY2FyKSksIChyMiA9ICh5LmNhcikpLCAocjE9PT1yMikpIT09
IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
KGxzdDEgPSAoeC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIChsc3QyID0gKHkuY2Ry
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgobHN0MSA9PT0gbnVsbCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAobHN0MiA9PT0gbnVsbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxzdDIg
PT09IG51bGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChpc190ZXJtX2VxdWFsX25ib3llcigobHN0MS5j
YXIpLCAobHN0Mi5jYXIpKSkhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGxzdDEgPSAobHN0MS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGxzdDIgPSAobHN0Mi5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXR1cm4gKHNjX2lzRXF1YWwoeCwgeSkpOworICAgIH07CisgICAgaXNf
dGVybV9tZW1iZXJfbmJveWVyID0gZnVuY3Rpb24oeCwgbHN0KSB7CisgICAgICAgIHZhciB4Owor
ICAgICAgICB2YXIgbHN0OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYg
KChsc3QgPT09IG51bGwpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoKChpc190ZXJtX2VxdWFsX25ib3llcih4LCAo
bHN0LmNhcikpKSE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKGxzdCA9IChsc3QuY2Ry
KSk7CisgICAgICAgIH0KKyAgICB9OworICAgIEJnTF9zZXR1cHpkMmJveWVyemQyID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBzeW1ib2xfcmVjb3JkOworICAgICAgICB2YXIgdmFsdWU7Cisg
ICAgICAgIHZhciBCZ0xfc2Nfc3ltYm9semQycmVjb3JkXzE2emQyOworICAgICAgICB2YXIgc3lt
OworICAgICAgICB2YXIgc2Nfc3ltXzE3OworICAgICAgICB2YXIgdGVybTsKKyAgICAgICAgdmFy
IGxzdDsKKyAgICAgICAgdmFyIHNjX3Rlcm1fMTg7CisgICAgICAgIHZhciBzY190ZXJtXzE5Owor
ICAgICAgICB7CisgICAgICAgICAgICAoQmdMX3NjX3phMnN5bWJvbHpkMnJlY29yZHN6ZDJhbGlz
dHphMl8yejAwX25ib3llciA9IG51bGwpOworICAgICAgICAgICAgKGlmX2NvbnN0cnVjdG9yX25i
b3llciA9IChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyKCJc
dTFFOUNpZiIpKSk7CisgICAgICAgICAgICAoZmFsc2VfdGVybV9uYm95ZXIgPSAoKHNjX3Rlcm1f
MTkgPSAobmV3IHNjX1BhaXIoIlx1MUU5Q2YiLG51bGwpKSksICghKHNjX3Rlcm1fMTkgaW5zdGFu
Y2VvZiBzY19QYWlyKT9zY190ZXJtXzE5OihuZXcgc2NfUGFpcigoQmdMX3NjX3N5bWJvbHpkMnpl
M3N5bWJvbHpkMnJlY29yZF8xemUzX25ib3llcigoc2NfdGVybV8xOS5jYXIpKSksICh0cmFuc2xh
dGVfYXJnc19uYm95ZXIoKHNjX3Rlcm1fMTkuY2RyKSkpKSkpKSk7CisgICAgICAgICAgICAodHJ1
ZV90ZXJtX25ib3llciA9ICgoc2NfdGVybV8xOCA9IChuZXcgc2NfUGFpcigiXHUxRTlDdCIsbnVs
bCkpKSwgKCEoc2NfdGVybV8xOCBpbnN0YW5jZW9mIHNjX1BhaXIpP3NjX3Rlcm1fMTg6KG5ldyBz
Y19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyKChz
Y190ZXJtXzE4LmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigoc2NfdGVybV8xOC5jZHIp
KSkpKSkpKTsKKyAgICAgICAgICAgIChsc3QgPSBzY19jb25zdF8zX25ib3llcik7CisgICAgICAg
ICAgICB3aGlsZSAoIShsc3QgPT09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAodGVybSA9IChsc3QuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgoKHRlcm0gaW5zdGFuY2VvZiBzY19QYWlyKSYmKCgodGVybS5jYXIpPT09Ilx1MUU5Q2VxdWFs
IikmJigodGVybS5jZHIuY2FyKSBpbnN0YW5jZW9mIHNjX1BhaXIpKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX3N5bV8xNyA9ICgo
dGVybS5jZHIuY2FyKS5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUg
PSAobmV3IHNjX1BhaXIoKCEodGVybSBpbnN0YW5jZW9mIHNjX1BhaXIpP3Rlcm06KG5ldyBzY19Q
YWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyKCh0ZXJt
LmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigodGVybS5jZHIpKSkpKSksICgoc3ltID0g
KCh0ZXJtLmNkci5jYXIpLmNhcikpLCAoQmdMX3NjX3N5bWJvbHpkMnJlY29yZF8xNnpkMiA9IChC
Z0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNfbmJveWVyKHN5bSkpKSwgKEJn
TF9zY19zeW1ib2x6ZDJyZWNvcmRfMTZ6ZDJbKDEpXSkpKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzeW1ib2xfcmVjb3JkID0gKEJnTF9zY19zeW1ib2x6ZDJ6ZTNzeW1ib2x6ZDJy
ZWNvcmRfMXplM19uYm95ZXIoc2Nfc3ltXzE3KSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzeW1ib2xfcmVjb3JkWygxKV0gPSB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIChz
Y19lcnJvcigiQURELUxFTU1BIGRpZCBub3QgbGlrZSB0ZXJtOiAgIiwgdGVybSkpOworICAgICAg
ICAgICAgICAgICAgICAobHN0ID0gKGxzdC5jZHIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07Cisg
ICAgQmdMX3Rlc3R6ZDJib3llcnpkMiA9IGZ1bmN0aW9uKG4pIHsKKyAgICAgICAgdmFyIG9wdHJP
cG5kOworICAgICAgICB2YXIgdGVybTsKKyAgICAgICAgdmFyIHNjX25fMjA7CisgICAgICAgIHZh
ciBhbnN3ZXI7CisgICAgICAgIHZhciBzY190ZXJtXzIxOworICAgICAgICB2YXIgc2NfdGVybV8y
MjsKKyAgICAgICAgeworICAgICAgICAgICAgKHJld3JpdGVfY291bnRfbmJveWVyID0gKDApKTsK
KyAgICAgICAgICAgICh0ZXJtID0gc2NfY29uc3RfNF9uYm95ZXIpOworICAgICAgICAgICAgKHNj
X25fMjAgPSBuKTsKKyAgICAgICAgICAgIHdoaWxlICghKHNjX25fMjA9PT0gMCkpIHsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICh0ZXJtID0gKHNjX2xpc3QoIlx1MUU5
Q29yIiwgdGVybSwgKG5ldyBzY19QYWlyKCJcdTFFOUNmIixudWxsKSkpKSk7CisgICAgICAgICAg
ICAgICAgICAgICgtLXNjX25fMjApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIChzY190ZXJtXzIyID0gdGVybSk7CisgICAgICAgICAgICBpZiAoIShzY190
ZXJtXzIyIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgKG9wdHJPcG5kID0g
c2NfdGVybV8yMik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKG9wdHJPcG5k
ID0gKG5ldyBzY19QYWlyKChCZ0xfc2Nfc3ltYm9semQyemUzc3ltYm9semQycmVjb3JkXzF6ZTNf
bmJveWVyKChzY190ZXJtXzIyLmNhcikpKSwgKHRyYW5zbGF0ZV9hcmdzX25ib3llcigoc2NfdGVy
bV8yMi5jZHIpKSkpKSk7CisgICAgICAgICAgICAoc2NfdGVybV8yMSA9IChhcHBseV9zdWJzdF9u
Ym95ZXIoKChjb25zdF9uYm95ZXIgPT09IG51bGwpP251bGw6KG5ldyBzY19QYWlyKChuZXcgc2Nf
UGFpcigoY29uc3RfbmJveWVyLmNhci5jYXIpLCAodHJhbnNsYXRlX3Rlcm1fbmJveWVyKChjb25z
dF9uYm95ZXIuY2FyLmNkcikpKSkpLCAodHJhbnNsYXRlX2FsaXN0X25ib3llcigoY29uc3RfbmJv
eWVyLmNkcikpKSkpKSwgb3B0ck9wbmQpKSk7CisgICAgICAgICAgICAoYW5zd2VyID0gKHRhdXRv
bG9neXBfbmJveWVyKChyZXdyaXRlX25ib3llcihzY190ZXJtXzIxKSksIG51bGwsIG51bGwpKSk7
CisgICAgICAgICAgICAoc2Nfd3JpdGUocmV3cml0ZV9jb3VudF9uYm95ZXIpKTsKKyAgICAgICAg
ICAgIChzY19kaXNwbGF5KCIgcmV3cml0ZXMiKSk7CisgICAgICAgICAgICAoc2NfbmV3bGluZSgp
KTsKKyAgICAgICAgICAgIGlmICgoYW5zd2VyIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV3cml0ZV9jb3VudF9uYm95ZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKK30KKy8qIEV4cG9ydGVkIFZh
cmlhYmxlcyAqLwordmFyIEJnTF9wYXJzZXpkMnplM25iemQydHJlZXN6ZTM7Cit2YXIgQmdMX2Vh
cmxleXpkMmJlbmNobWFya3pkMjsKK3ZhciBCZ0xfcGFyc2V6ZDJ6ZTNwYXJzZWR6ZjN6YzI7Cit2
YXIgdGVzdDsKK3ZhciBCZ0xfcGFyc2V6ZDJ6ZTN0cmVlc3ozMTsKK3ZhciBCZ0xfbWFrZXpkMnBh
cnNlcnpkMjsKKy8qIEVuZCBFeHBvcnRzICovCisKK3ZhciBjb25zdF9lYXJsZXk7Cit7CisgICAg
KGNvbnN0X2VhcmxleSA9IChuZXcgc2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q3MiLChuZXcg
c2NfUGFpcigobmV3IHNjX1BhaXIoIlx1MUU5Q2EiLG51bGwpKSwobmV3IHNjX1BhaXIoKG5ldyBz
Y19QYWlyKCJcdTFFOUNzIiwobmV3IHNjX1BhaXIoIlx1MUU5Q3MiLG51bGwpKSkpLG51bGwpKSkp
KSksbnVsbCkpKTsKKyAgICBCZ0xfbWFrZXpkMnBhcnNlcnpkMiA9IGZ1bmN0aW9uKGdyYW1tYXIs
IGxleGVyKSB7CisgICAgICAgIHZhciBpOworICAgICAgICB2YXIgcGFyc2VyX2Rlc2NyOworICAg
ICAgICB2YXIgZGVmX2xvb3A7CisgICAgICAgIHZhciBuYl9udHM7CisgICAgICAgIHZhciBuYW1l
czsKKyAgICAgICAgdmFyIHN0ZXBzOworICAgICAgICB2YXIgcHJlZGljdG9yczsKKyAgICAgICAg
dmFyIGVuZGVyczsKKyAgICAgICAgdmFyIHN0YXJ0ZXJzOworICAgICAgICB2YXIgbnRzOworICAg
ICAgICB2YXIgc2NfbmFtZXNfMTsKKyAgICAgICAgdmFyIHNjX3N0ZXBzXzI7CisgICAgICAgIHZh
ciBzY19wcmVkaWN0b3JzXzM7CisgICAgICAgIHZhciBzY19lbmRlcnNfNDsKKyAgICAgICAgdmFy
IHNjX3N0YXJ0ZXJzXzU7CisgICAgICAgIHZhciBuYl9jb25mczsKKyAgICAgICAgdmFyIEJnTF9z
Y19kZWZ6ZDJsb29wXzZ6ZDI7CisgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfN3pkMjsKKyAg
ICAgICAgdmFyIHNjX250c184OworICAgICAgICB2YXIgQmdMX3NjX2RlZnpkMmxvb3BfOXpkMjsK
KyAgICAgICAgdmFyIGluZDsKKyAgICAgICAgeworICAgICAgICAgICAgaW5kID0gZnVuY3Rpb24o
bnQsIHNjX250c18xMCkgeworICAgICAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgKGkgPSAoKHNjX250c18xMC5sZW5ndGgpLSgxKSkpOwor
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKChpPj0oMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfaXNF
cXVhbCgoc2NfbnRzXzEwW2ldKSwgbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAg
ICAgKHNjX250c184ID0gKChCZ0xfc2NfZGVmemQybG9vcF85emQyID0gZnVuY3Rpb24oZGVmcywg
c2NfbnRzXzExKSB7CisgICAgICAgICAgICAgICAgdmFyIHJ1bGVfbG9vcDsKKyAgICAgICAgICAg
ICAgICB2YXIgaGVhZDsKKyAgICAgICAgICAgICAgICB2YXIgZGVmOworICAgICAgICAgICAgICAg
IHJldHVybiAoKGRlZnMgaW5zdGFuY2VvZiBzY19QYWlyKT8oKGRlZiA9IChkZWZzLmNhcikpLCAo
aGVhZCA9IChkZWYuY2FyKSksIChydWxlX2xvb3AgPSBmdW5jdGlvbihydWxlcywgc2NfbnRzXzEy
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBudDsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGw7CisgICAgICAgICAgICAgICAgICAgIHZhciBzY19udHNfMTM7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBydWxlOworICAgICAgICAgICAgICAgICAgICBpZiAoKHJ1bGVzIGluc3RhbmNlb2Yg
c2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHJ1bGUgPSAocnVsZXMuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGwgPSBydWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfbnRzXzEzID0g
c2NfbnRzXzEyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFu
Y2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnQgPSAobC5jYXIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2NfbnRzXzEzID0gKCgoc2NfbWVtYmVyKG50LCBzY19u
dHNfMTMpKSE9PSBmYWxzZSk/c2NfbnRzXzEzOihuZXcgc2NfUGFpcihudCwgc2NfbnRzXzEzKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJ1bGVfbG9v
cCgocnVsZXMuY2RyKSwgc2NfbnRzXzEzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAo
QmdMX3NjX2RlZnpkMmxvb3BfOXpkMigoZGVmcy5jZHIpLCBzY19udHNfMTIpKTsKKyAgICAgICAg
ICAgICAgICB9KSwgKHJ1bGVfbG9vcCgoZGVmLmNkciksICgoKHNjX21lbWJlcihoZWFkLCBzY19u
dHNfMTEpKSE9PSBmYWxzZSk/c2NfbnRzXzExOihuZXcgc2NfUGFpcihoZWFkLCBzY19udHNfMTEp
KSkpKSk6KHNjX2xpc3QydmVjdG9yKChzY19yZXZlcnNlKHNjX250c18xMSkpKSkpOworICAgICAg
ICAgICAgfSksIChCZ0xfc2NfZGVmemQybG9vcF85emQyKGdyYW1tYXIsIG51bGwpKSkpOworICAg
ICAgICAgICAgKEJnTF9zY19uYnpkMm50c183emQyID0gKHNjX250c184Lmxlbmd0aCkpOworICAg
ICAgICAgICAgKG5iX2NvbmZzID0gKCgoQmdMX3NjX2RlZnpkMmxvb3BfNnpkMiA9IGZ1bmN0aW9u
KGRlZnMsIEJnTF9zY19uYnpkMmNvbmZzXzE0emQyKSB7CisgICAgICAgICAgICAgICAgdmFyIHJ1
bGVfbG9vcDsKKyAgICAgICAgICAgICAgICB2YXIgZGVmOworICAgICAgICAgICAgICAgIHJldHVy
biAoKGRlZnMgaW5zdGFuY2VvZiBzY19QYWlyKT8oKGRlZiA9IChkZWZzLmNhcikpLCAocnVsZV9s
b29wID0gZnVuY3Rpb24ocnVsZXMsIEJnTF9zY19uYnpkMmNvbmZzXzE1emQyKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQy
Y29uZnNfMTZ6ZDI7CisgICAgICAgICAgICAgICAgICAgIHZhciBydWxlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoKHJ1bGVzIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bGUgPSAocnVsZXMuY2Fy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSBydWxlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQyY29uZnNfMTZ6ZDIgPSBCZ0xfc2NfbmJ6ZDJj
b25mc18xNXpkMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChsIGluc3Rh
bmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrK0JnTF9zY19uYnpkMmNvbmZzXzE2emQyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJ1bGVfbG9vcCgo
cnVsZXMuY2RyKSwgKEJnTF9zY19uYnpkMmNvbmZzXzE2emQyKygxKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChCZ0xfc2NfZGVmemQybG9vcF82emQyKChkZWZzLmNkciksIEJnTF9z
Y19uYnpkMmNvbmZzXzE1emQyKSk7CisgICAgICAgICAgICAgICAgfSksIChydWxlX2xvb3AoKGRl
Zi5jZHIpLCBCZ0xfc2NfbmJ6ZDJjb25mc18xNHpkMikpKTpCZ0xfc2NfbmJ6ZDJjb25mc18xNHpk
Mik7CisgICAgICAgICAgICB9KSwgKEJnTF9zY19kZWZ6ZDJsb29wXzZ6ZDIoZ3JhbW1hciwgKDAp
KSkpK0JnTF9zY19uYnpkMm50c183emQyKSk7CisgICAgICAgICAgICAoc2Nfc3RhcnRlcnNfNSA9
IChzY19tYWtlVmVjdG9yKEJnTF9zY19uYnpkMm50c183emQyLCBudWxsKSkpOworICAgICAgICAg
ICAgKHNjX2VuZGVyc180ID0gKHNjX21ha2VWZWN0b3IoQmdMX3NjX25iemQybnRzXzd6ZDIsIG51
bGwpKSk7CisgICAgICAgICAgICAoc2NfcHJlZGljdG9yc18zID0gKHNjX21ha2VWZWN0b3IoQmdM
X3NjX25iemQybnRzXzd6ZDIsIG51bGwpKSk7CisgICAgICAgICAgICAoc2Nfc3RlcHNfMiA9IChz
Y19tYWtlVmVjdG9yKG5iX2NvbmZzLCBmYWxzZSkpKTsKKyAgICAgICAgICAgIChzY19uYW1lc18x
ID0gKHNjX21ha2VWZWN0b3IobmJfY29uZnMsIGZhbHNlKSkpOworICAgICAgICAgICAgKG50cyA9
IHNjX250c184KTsKKyAgICAgICAgICAgIChzdGFydGVycyA9IHNjX3N0YXJ0ZXJzXzUpOworICAg
ICAgICAgICAgKGVuZGVycyA9IHNjX2VuZGVyc180KTsKKyAgICAgICAgICAgIChwcmVkaWN0b3Jz
ID0gc2NfcHJlZGljdG9yc18zKTsKKyAgICAgICAgICAgIChzdGVwcyA9IHNjX3N0ZXBzXzIpOwor
ICAgICAgICAgICAgKG5hbWVzID0gc2NfbmFtZXNfMSk7CisgICAgICAgICAgICAobmJfbnRzID0g
KHNjX250c184Lmxlbmd0aCkpOworICAgICAgICAgICAgKGkgPSAobmJfbnRzLSgxKSkpOworICAg
ICAgICAgICAgd2hpbGUgKChpPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAoc2Nfc3RlcHNfMltpXSA9IChpLW5iX250cykpOworICAgICAgICAgICAgICAg
ICAgICAoc2NfbmFtZXNfMVtpXSA9IChzY19saXN0KChzY19udHNfOFtpXSksICgwKSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgKHNjX2VuZGVyc180W2ldID0gKHNjX2xpc3QoaSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgKC0taSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZGVmX2xvb3AgPSBmdW5jdGlvbihkZWZzLCBjb25mKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHJ1bGVfbG9vcDsKKyAgICAgICAgICAgICAgICB2YXIgaGVhZDsKKyAgICAgICAg
ICAgICAgICB2YXIgZGVmOworICAgICAgICAgICAgICAgIHJldHVybiAoKGRlZnMgaW5zdGFuY2Vv
ZiBzY19QYWlyKT8oKGRlZiA9IChkZWZzLmNhcikpLCAoaGVhZCA9IChkZWYuY2FyKSksIChydWxl
X2xvb3AgPSBmdW5jdGlvbihydWxlcywgY29uZiwgcnVsZV9udW0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgIHZhciBzY19pXzE3OworICAgICAgICAg
ICAgICAgICAgICB2YXIgbnQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAg
ICAgICAgICAgICB2YXIgc2NfY29uZl8xODsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2lf
MTk7CisgICAgICAgICAgICAgICAgICAgIHZhciBydWxlOworICAgICAgICAgICAgICAgICAgICBp
ZiAoKHJ1bGVzIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bGUgPSAocnVsZXMuY2FyKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWVzW2NvbmZdID0gKHNjX2xpc3QoaGVhZCwgcnVs
ZV9udW0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2lfMTkgPSAoaW5kKGhl
YWQsIG50cykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhcnRlcnNbc2NfaV8x
OV0gPSAobmV3IHNjX1BhaXIoY29uZiwgKHN0YXJ0ZXJzW3NjX2lfMTldKSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobCA9IHJ1bGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzY19jb25mXzE4ID0gY29uZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKChsIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50ID0gKGwuY2Fy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RlcHNbc2NfY29uZl8x
OF0gPSAoaW5kKG50LCBudHMpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2NfaV8xNyA9IChpbmQobnQsIG50cykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChwcmVkaWN0b3JzW3NjX2lfMTddID0gKG5ldyBzY19QYWlyKHNjX2NvbmZfMTgs
IChwcmVkaWN0b3JzW3NjX2lfMTddKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKytzY19jb25mXzE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c3RlcHNbc2NfY29uZl8xOF0gPSAoKGluZChoZWFkLCBudHMpKS1uYl9udHMpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoaSA9IChpbmQoaGVhZCwgbnRzKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChlbmRlcnNbaV0gPSAobmV3IHNjX1BhaXIoc2NfY29uZl8xOCwgKGVu
ZGVyc1tpXSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChydWxlX2xv
b3AoKHJ1bGVzLmNkciksIChzY19jb25mXzE4KygxKSksIChydWxlX251bSsoMSkpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoZGVmX2xvb3AoKGRlZnMuY2RyKSwgY29uZikpOworICAg
ICAgICAgICAgICAgIH0pLCAocnVsZV9sb29wKChkZWYuY2RyKSwgY29uZiwgKDEpKSkpOnVuZGVm
aW5lZCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgKGRlZl9sb29wKGdyYW1tYXIsIChz
Y19udHNfOC5sZW5ndGgpKSk7CisgICAgICAgICAgICAocGFyc2VyX2Rlc2NyID0gW2xleGVyLCBz
Y19udHNfOCwgc2Nfc3RhcnRlcnNfNSwgc2NfZW5kZXJzXzQsIHNjX3ByZWRpY3RvcnNfMywgc2Nf
c3RlcHNfMiwgc2NfbmFtZXNfMV0pOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGlucHV0
KSB7CisgICAgICAgICAgICAgICAgdmFyIG9wdHJPcG5kOworICAgICAgICAgICAgICAgIHZhciBz
Y19vcHRyT3BuZF8yMDsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfb3B0ck9wbmRfMjE7CisgICAg
ICAgICAgICAgICAgdmFyIHNjX29wdHJPcG5kXzIyOworICAgICAgICAgICAgICAgIHZhciBsb29w
MTsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlemEyXzIzemEyOworICAgICAgICAg
ICAgICAgIHZhciB0b2tzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJudHNfMjR6
ZDI7CisgICAgICAgICAgICAgICAgdmFyIHNjX3N0ZXBzXzI1OworICAgICAgICAgICAgICAgIHZh
ciBzY19lbmRlcnNfMjY7CisgICAgICAgICAgICAgICAgdmFyIHN0YXRlX251bTsKKyAgICAgICAg
ICAgICAgICB2YXIgQmdMX3NjX3N0YXRlc3phMl8yN3phMjsKKyAgICAgICAgICAgICAgICB2YXIg
c3RhdGVzOworICAgICAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAgICAgIHZhciBjb25m
OworICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgIHZhciB0b2tfbnRzOwor
ICAgICAgICAgICAgICAgIHZhciBzY19pXzI4OworICAgICAgICAgICAgICAgIHZhciBzY19pXzI5
OworICAgICAgICAgICAgICAgIHZhciBsMTsKKyAgICAgICAgICAgICAgICB2YXIgbDI7CisgICAg
ICAgICAgICAgICAgdmFyIHRvazsKKyAgICAgICAgICAgICAgICB2YXIgdGFpbDExMjk7CisgICAg
ICAgICAgICAgICAgdmFyIEwxMTI1OworICAgICAgICAgICAgICAgIHZhciBnb2FsX2VuZGVyczsK
KyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlc3phMl8zMHphMjsKKyAgICAgICAgICAg
ICAgICB2YXIgQmdMX3NjX25iemQybnRzXzMxemQyOworICAgICAgICAgICAgICAgIHZhciBCZ0xf
c2NfbmJ6ZDJjb25mc18zMnpkMjsKKyAgICAgICAgICAgICAgICB2YXIgbmJfdG9rczsKKyAgICAg
ICAgICAgICAgICB2YXIgZ29hbF9zdGFydGVyczsKKyAgICAgICAgICAgICAgICB2YXIgc2Nfc3Rh
dGVzXzMzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJjb25mc18zNHpkMjsKKyAg
ICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQydG9rc18zNXpkMjsKKyAgICAgICAgICAgICAg
ICB2YXIgc2NfdG9rc18zNjsKKyAgICAgICAgICAgICAgICB2YXIgZmFsc2VIZWFkMTEyODsKKyAg
ICAgICAgICAgICAgICB2YXIgc2NfbmFtZXNfMzc7CisgICAgICAgICAgICAgICAgdmFyIHNjX3N0
ZXBzXzM4OworICAgICAgICAgICAgICAgIHZhciBzY19wcmVkaWN0b3JzXzM5OworICAgICAgICAg
ICAgICAgIHZhciBzY19lbmRlcnNfNDA7CisgICAgICAgICAgICAgICAgdmFyIHNjX3N0YXJ0ZXJz
XzQxOworICAgICAgICAgICAgICAgIHZhciBzY19udHNfNDI7CisgICAgICAgICAgICAgICAgdmFy
IGxleGVyOworICAgICAgICAgICAgICAgIHZhciBzY19pbmRfNDM7CisgICAgICAgICAgICAgICAg
dmFyIG1ha2Vfc3RhdGVzOworICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfY29uZnpkMnNldHpk
MmdldHphMl80NHphMjsKKyAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXRfbWVyZ2VfbmV3X2Jh
bmc7CisgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0X2Fkam9pbjsKKyAgICAgICAgICAgICAg
ICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTI7CisgICAgICAgICAgICAg
ICAgdmFyIEJnTF9zY19jb25memQyc2V0emQyYWRqb2luemEyemEyXzQ2ejAwOworICAgICAgICAg
ICAgICAgIHZhciBjb25mX3NldF91bmlvbjsKKyAgICAgICAgICAgICAgICB2YXIgZm9ydzsKKyAg
ICAgICAgICAgICAgICB2YXIgaXNfcGFyc2VkOworICAgICAgICAgICAgICAgIHZhciBkZXJpdl90
cmVlczsKKyAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfNDd6NzA7
CisgICAgICAgICAgICAgICAgdmFyIG5iX2Rlcml2X3RyZWVzOworICAgICAgICAgICAgICAgIHZh
ciBCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzQ4emEyOworICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgc2NfaW5kXzQzID0gZnVuY3Rpb24obnQsIHNjX250c180OSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSAoKHNjX250c180OS5sZW5ndGgp
LSgxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaT49KDApKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfaXNFcXVhbCgoc2NfbnRzXzQ5W2ldKSwgbnQp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoLS1pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbWFrZV9z
dGF0ZXMgPSBmdW5jdGlvbihCZ0xfc2NfbmJ6ZDJ0b2tzXzUwemQyLCBCZ0xfc2NfbmJ6ZDJjb25m
c181MXpkMikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHY7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19zdGF0ZXNf
NTI7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNjX3N0YXRlc181MiA9IChzY19tYWtlVmVjdG9yKChCZ0xfc2NfbmJ6ZDJ0b2tzXzUwemQy
KygxKSksIGZhbHNlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpID0gQmdMX3Nj
X25iemQydG9rc181MHpkMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChp
Pj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh2ID0gKHNjX21ha2VWZWN0b3IoKEJnTF9zY19uYnpk
MmNvbmZzXzUxemQyKygxKSksIGZhbHNlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHZbKDApXSA9ICgtMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNjX3N0YXRlc181MltpXSA9IHYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKC0taSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHNjX3N0YXRlc181MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6
YTJfNDR6YTIgPSBmdW5jdGlvbihzdGF0ZSwgQmdMX3NjX3N0YXRlemQybnVtXzUzemQyLCBzY19j
b25mXzU0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uZl9zZXQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXRfNTV6ZDI7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKChCZ0xfc2NfY29uZnpkMnNldF81NXpkMiA9IChzdGF0ZVso
c2NfY29uZl81NCsoMSkpXSkpLCAoKEJnTF9zY19jb25memQyc2V0XzU1emQyIT09IGZhbHNlKT9C
Z0xfc2NfY29uZnpkMnNldF81NXpkMjooKGNvbmZfc2V0ID0gKHNjX21ha2VWZWN0b3IoKEJnTF9z
Y19zdGF0ZXpkMm51bV81M3pkMisoNikpLCBmYWxzZSkpKSwgKGNvbmZfc2V0WygxKV0gPSAoLTMp
KSwgKGNvbmZfc2V0WygyKV0gPSAoLTEpKSwgKGNvbmZfc2V0WygzKV0gPSAoLTEpKSwgKGNvbmZf
c2V0Wyg0KV0gPSAoLTEpKSwgKHN0YXRlWyhzY19jb25mXzU0KygxKSldID0gY29uZl9zZXQpLCBj
b25mX3NldCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uZl9zZXRfbWVyZ2VfbmV3X2JhbmcgPSBmdW5jdGlvbihjb25mX3NldCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICgoY29uZl9zZXRbKChjb25mX3NldFsoMSldKSsoNSkpXSA9
IChjb25mX3NldFsoNCldKSksIChjb25mX3NldFsoMSldID0gKGNvbmZfc2V0WygzKV0pKSwgKGNv
bmZfc2V0WygzKV0gPSAoLTEpKSwgKGNvbmZfc2V0Wyg0KV0gPSAoLTEpKSk7CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGNvbmZfc2V0X2Fkam9pbiA9IGZ1bmN0
aW9uKHN0YXRlLCBjb25mX3NldCwgc2NfY29uZl81NiwgaSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHRhaWw7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0YWlsID0g
KGNvbmZfc2V0WygzKV0pKSwgKGNvbmZfc2V0WyhpKyg1KSldID0gKC0xKSksIChjb25mX3NldFso
dGFpbCsoNSkpXSA9IGkpLCAoY29uZl9zZXRbKDMpXSA9IGkpLCAoKHRhaWw8KDApKT8oKGNvbmZf
c2V0WygwKV0gPSAoc3RhdGVbKDApXSkpLCAoc3RhdGVbKDApXSA9IHNjX2NvbmZfNTYpKTp1bmRl
ZmluZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgQmdM
X3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJfNDV6YTIgPSBmdW5jdGlvbihzY19zdGF0ZXNfNTcs
IEJnTF9zY19zdGF0ZXpkMm51bV81OHpkMiwgbCwgaSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfNTk7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHN0YXRlID0gKHNjX3N0YXRlc181N1tCZ0xfc2Nfc3RhdGV6ZDJudW1fNTh6
ZDJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKChsMSBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzY19jb25mXzU5ID0gKGwxLmNhcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNvbmZfc2V0ID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0
emEyKHN0YXRlLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNTh6ZDIsIHNjX2NvbmZfNTkpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChjb25mX3NldFsoaSsoNSkpXSk9
PT0gZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZfc2V0X2Fkam9p
bihzdGF0ZSwgY29uZl9zZXQsIHNjX2NvbmZfNTksIGkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEg
PSAobDEuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6
YTJfNDZ6MDAgPSBmdW5jdGlvbihzY19zdGF0ZXNfNjAsIEJnTF9zY19zdGF0ZXN6YTJfNjF6YTIs
IEJnTF9zY19zdGF0ZXpkMm51bV82MnpkMiwgc2NfY29uZl82MywgaSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQyc2V0emEyXzY0ejcwOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIEJnTF9zY19zdGF0ZXphMl82NXphMjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHN0YXRlID0gKHNjX3N0YXRlc182MFtC
Z0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDJdKSksICgoKChjb25mX3NldCA9IChzdGF0ZVsoc2NfY29u
Zl82MysoMSkpXSkpLCAoKGNvbmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZh
bHNlKSkhPT0gZmFsc2UpPygoQmdMX3NjX3N0YXRlemEyXzY1emEyID0gKEJnTF9zY19zdGF0ZXN6
YTJfNjF6YTJbQmdMX3NjX3N0YXRlemQybnVtXzYyemQyXSkpLCAoQmdMX3NjX2NvbmZ6ZDJzZXR6
YTJfNjR6NzAgPSAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJnZXR6YTJfNDR6YTIoQmdMX3NjX3N0YXRl
emEyXzY1emEyLCBCZ0xfc2Nfc3RhdGV6ZDJudW1fNjJ6ZDIsIHNjX2NvbmZfNjMpKSksICgoKEJn
TF9zY19jb25memQyc2V0emEyXzY0ejcwWyhpKyg1KSldKT09PSBmYWxzZSk/KGNvbmZfc2V0X2Fk
am9pbihCZ0xfc2Nfc3RhdGV6YTJfNjV6YTIsIEJnTF9zY19jb25memQyc2V0emEyXzY0ejcwLCBz
Y19jb25mXzYzLCBpKSk6dW5kZWZpbmVkKSwgdHJ1ZSk6ZmFsc2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgY29uZl9zZXRfdW5pb24gPSBmdW5jdGlvbihz
dGF0ZSwgY29uZl9zZXQsIHNjX2NvbmZfNjYsIG90aGVyX3NldCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGkgPSAob3RoZXJfc2V0WygyKV0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoKGk+PSgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCgoY29uZl9zZXRbKGkrKDUpKV0pPT09IGZhbHNlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoY29uZl9zZXRfYWRqb2luKHN0YXRlLCBjb25mX3NldCwgc2NfY29uZl82NiwgaSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpID0gKG90aGVyX3Nl
dFsoaSsoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaSA9IChvdGhlcl9zZXRbKGkrKDUpKV0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgZm9ydyA9IGZ1bmN0aW9uKHNjX3N0YXRlc182NywgQmdMX3Nj
X3N0YXRlemQybnVtXzY4emQyLCBzY19zdGFydGVyc182OSwgc2NfZW5kZXJzXzcwLCBzY19wcmVk
aWN0b3JzXzcxLCBzY19zdGVwc183Miwgc2NfbnRzXzczKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbmV4dF9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHN0YXJ0ZXJfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXJ0ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NfbF83NDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBzY19sb29wMV83NTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBoZWFkOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19jb25memQy
c2V0Xzc2emQyOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9zY19zdGF0ZXpkMm51
bV83N3pkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzY19zdGF0ZXNfNzg7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgcHJlZHM7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX2NvbmZ6ZDJzZXRf
Nzl6ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzY19jb25mXzgwOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJn
TF9zY19uYnpkMm50c184MXpkMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19zdGF0
ZV84MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc2Nfc3RhdGVfODIgPSAoc2Nfc3RhdGVzXzY3W0JnTF9zY19zdGF0ZXpkMm51bV82OHpk
Ml0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzgxemQy
ID0gKHNjX250c183My5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfY29uZl84MCA9IChzY19zdGF0ZV84MlsoMCld
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNjX2NvbmZfODA+
PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RlcCA9IChzY19zdGVwc183
MltzY19jb25mXzgwXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzl6ZDIgPSAoc2Nfc3RhdGVfODJbKHNjX2NvbmZfODAr
KDEpKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhl
YWQgPSAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzl6ZDJbKDQpXSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nfc3RhdGVfODJbKDApXSA9IChCZ0xfc2NfY29u
ZnpkMnNldF83OXpkMlsoMCldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjb25mX3NldF9tZXJnZV9uZXdfYmFuZyhCZ0xfc2NfY29uZnpkMnNldF83OXpk
MikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHN0
ZXA+PSgwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNjX2xfNzQgPSAoc2Nfc3RhcnRlcnNfNjlbc3RlcF0pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2xfNzQgaW5zdGFuY2Vv
ZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3RhcnRlciA9IChzY19sXzc0LmNhcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0
ZXJfc2V0ID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKHNjX3N0YXRlXzgyLCBC
Z0xfc2Nfc3RhdGV6ZDJudW1fNjh6ZDIsIHN0YXJ0ZXIpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChzdGFydGVyX3Nl
dFsoQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKyg1KSldKT09PSBmYWxzZSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29uZl9zZXRfYWRqb2luKHNjX3N0YXRlXzgyLCBzdGFydGVyX3NldCwgc3Rh
cnRlciwgQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19sXzc0ID0g
KHNjX2xfNzQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19sXzc0ID0gKHNj
X2xfNzQuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzcwW3N0ZXBdKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChsIGluc3RhbmNlb2Ygc2Nf
UGFpcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGVuZGVyID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoY29uZl9zZXQgPSAo
c2Nfc3RhdGVfODJbKGVuZGVyKygxKSldKSksICgoY29uZl9zZXQhPT0gZmFsc2UpPyhjb25mX3Nl
dFsoQmdMX3NjX3N0YXRlemQybnVtXzY4emQyKyg1KSldKTpmYWxzZSkpIT09IGZhbHNlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChuZXh0ID0gKHNjX2NvbmZfODArKDEpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChuZXh0X3NldCA9IChCZ0xfc2NfY29uZnpkMnNldHpkMmdldHphMl80NHphMihzY19zdGF0ZV84
MiwgQmdMX3NjX3N0YXRlemQybnVtXzY4emQyLCBuZXh0KSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9z
ZXRfdW5pb24oc2Nfc3RhdGVfODIsIG5leHRfc2V0LCBuZXh0LCBCZ0xfc2NfY29uZnpkMnNldF83
OXpkMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBy
ZWRzID0gKHNjX3ByZWRpY3RvcnNfNzFbKHN0ZXArQmdMX3NjX25iemQybnRzXzgxemQyKV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Nf
c3RhdGVzXzc4ID0gc2Nfc3RhdGVzXzY3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPSBzY19zdGF0ZV84Mik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXpk
Mm51bV83N3pkMiA9IEJnTF9zY19zdGF0ZXpkMm51bV82OHpkMik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19jb25memQyc2V0Xzc2
emQyID0gQmdMX3NjX2NvbmZ6ZDJzZXRfNzl6ZDIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2xvb3AxXzc1ID0gZnVuY3Rpb24obCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgc2Nfc3RhdGVfODM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBCZ0xfc2NfbmV4dHpkMnNldF84NHpkMjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX25leHRf
ODU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBwcmVkX3NldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmVkOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgaW5zdGFuY2VvZiBzY19Q
YWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAocHJlZCA9IChsLmNhcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpID0gaGVhZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKChpPj0oMCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChwcmVkX3NldCA9ICgoc2Nfc3RhdGVfODMgPSAoc2Nfc3RhdGVzXzc4W2ldKSksIChzY19zdGF0
ZV84M1socHJlZCsoMSkpXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJlZF9zZXQhPT0gZmFs
c2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX25l
eHRfODUgPSAocHJlZCsoMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19uZXh0
emQyc2V0Xzg0emQyID0gKEJnTF9zY19jb25memQyc2V0emQyZ2V0emEyXzQ0emEyKHN0YXRlLCBC
Z0xfc2Nfc3RhdGV6ZDJudW1fNzd6ZDIsIHNjX25leHRfODUpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb25mX3NldF91bmlvbihzdGF0ZSwgQmdMX3NjX25leHR6ZDJzZXRfODR6ZDIsIHNj
X25leHRfODUsIHByZWRfc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGkgPSAoQmdMX3NjX2NvbmZ6ZDJzZXRfNzZ6ZDJbKGkrKDUpKV0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzc1KChsLmNkcikpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzY19sb29wMV83NShwcmVkcykpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBpc19wYXJzZWQgPSBmdW5jdGlvbihu
dCwgaSwgaiwgc2NfbnRzXzg2LCBzY19lbmRlcnNfODcsIHNjX3N0YXRlc184OCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfODk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBC
Z0xfc2NfbnR6YTJfOTB6YTI7CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEJnTF9zY19udHphMl85MHphMiA9IChzY19pbmRfNDMobnQsIHNj
X250c184NikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKEJnTF9zY19udHph
Ml85MHphMiE9PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19udHNfODYubGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsID0gKHNjX2VuZGVyc184N1tCZ0xf
c2NfbnR6YTJfOTB6YTJdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc2NfY29uZl84OSA9IChsLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHN0YXRlID0gKHNjX3N0YXRlc184OFtqXSkp
LCAoY29uZl9zZXQgPSAoc3RhdGVbKHNjX2NvbmZfODkrKDEpKV0pKSwgKChjb25mX3NldCE9PSBm
YWxzZSk/KGNvbmZfc2V0WyhpKyg1KSldKTpmYWxzZSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNk
cikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgZGVyaXZfdHJlZXMgPSBm
dW5jdGlvbihzY19jb25mXzkxLCBpLCBqLCBzY19lbmRlcnNfOTIsIHNjX3N0ZXBzXzkzLCBzY19u
YW1lc185NCwgc2NfdG9rc185NSwgc2Nfc3RhdGVzXzk2LCBCZ0xfc2NfbmJ6ZDJudHNfOTd6ZDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sb29wMV85ODsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBwcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWU7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChuYW1lID0gKHNjX25hbWVzXzk0W3Nj
X2NvbmZfOTFdKSksICgobmFtZSE9PSBmYWxzZSk/KChzY19jb25mXzkxPEJnTF9zY19uYnpkMm50
c185N3pkMik/KHNjX2xpc3QoKHNjX2xpc3QobmFtZSwgKChzY190b2tzXzk1W2ldKS5jYXIpKSkp
KTooc2NfbGlzdCgoc2NfbGlzdChuYW1lKSkpKSk6KChwcmV2ID0gKHNjX2NvbmZfOTEtKDEpKSks
IChzY19sb29wMV85OCA9IGZ1bmN0aW9uKGwxLCBsMikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBsb29wMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kZXJf
c2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZW5kZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsMjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGVuZGVyID0gKGwxLmNhcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChlbmRlcl9zZXQgPSAoKHN0YXRlID0gKHNjX3N0YXRlc185NltqXSkpLCAoc3RhdGVb
KGVuZGVyKygxKSldKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgoZW5kZXJfc2V0IT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9vcDIgPSBmdW5jdGlvbihrLCBsMikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb29wMzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kZXJfdHJlZXM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBy
ZXZfdHJlZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBzY19zdGF0ZV85OTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbDI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChr
Pj0oMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCgoaz49aSkmJigoKHNjX3N0YXRlXzk5ID0gKHNjX3N0YXRlc185Nltr
XSkpLCAoY29uZl9zZXQgPSAoc2Nfc3RhdGVfOTlbKHByZXYrKDEpKV0pKSwgKChjb25mX3NldCE9
PSBmYWxzZSk/KGNvbmZfc2V0WyhpKyg1KSldKTpmYWxzZSkpIT09IGZhbHNlKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAocHJldl90cmVlcyA9IChkZXJpdl90cmVlcyhwcmV2LCBpLCBrLCBzY19l
bmRlcnNfOTIsIHNjX3N0ZXBzXzkzLCBzY19uYW1lc185NCwgc2NfdG9rc185NSwgc2Nfc3RhdGVz
Xzk2LCBCZ0xfc2NfbmJ6ZDJudHNfOTd6ZDIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmRlcl90cmVlcyA9
IChkZXJpdl90cmVlcyhlbmRlciwgaywgaiwgc2NfZW5kZXJzXzkyLCBzY19zdGVwc185Mywgc2Nf
bmFtZXNfOTQsIHNjX3Rva3NfOTUsIHNjX3N0YXRlc185NiwgQmdMX3NjX25iemQybnRzXzk3emQy
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb29wMyA9IGZ1bmN0aW9uKGwzLCBsMikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGw0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2wyXzEwMDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBlbmRlcl90cmVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsMyBpbnN0YW5jZW9mIHNjX1Bh
aXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZGVy
X3RyZWUgPSAoc2NfbGlzdCgobDMuY2FyKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGw0
ID0gcHJldl90cmVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19sMl8xMDAgPSBsMik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobDQgaW5zdGFuY2VvZiBzY19QYWlyKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzY19sMl8xMDAgPSAobmV3IHNjX1BhaXIoKHNjX2FwcGVuZCgobDQuY2FyKSwgZW5k
ZXJfdHJlZSkpLCBzY19sMl8xMDApKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGw0ID0gKGw0LmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9vcDMoKGwz
LmNkciksIHNjX2wyXzEwMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3AyKChlbmRlcl9zZXRbKGsrKDUp
KV0pLCBsMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvb3AzKGVuZGVy
X3RyZWVzLCBsMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoayA9IChlbmRlcl9zZXRb
KGsrKDUpKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY19sb29wMV85OCgobDEuY2RyKSwgbDIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsb29wMigo
ZW5kZXJfc2V0WygyKV0pLCBsMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDEgPSAobDEu
Y2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICB9KSwgKHNjX2xvb3AxXzk4KChzY19lbmRlcnNfOTJbKHNjX3N0ZXBz
XzkzW3ByZXZdKV0pLCBudWxsKSkpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzQ3ejcwID0gZnVuY3Rpb24obnQs
IGksIGosIHNjX250c18xMDEsIHNjX2VuZGVyc18xMDIsIHNjX3N0ZXBzXzEwMywgc2NfbmFtZXNf
MTA0LCBzY190b2tzXzEwNSwgc2Nfc3RhdGVzXzEwNikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfMTA3OworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGw7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJlZXM7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX25iemQybnRzXzEwOHpkMjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBCZ0xfc2NfbnR6YTJfMTA5emEyOworICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2NfbnR6YTJfMTA5emEy
ID0gKHNjX2luZF80MyhudCwgc2NfbnRzXzEwMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKEJnTF9zY19udHphMl8xMDl6YTIhPT0gZmFsc2UpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
QmdMX3NjX25iemQybnRzXzEwOHpkMiA9IChzY19udHNfMTAxLmxlbmd0aCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwgPSAoc2NfZW5kZXJzXzEwMltCZ0xfc2NfbnR6
YTJfMTA5emEyXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz
ID0gbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwg
aW5zdGFuY2VvZiBzY19QYWlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNj
X2NvbmZfMTA3ID0gKGwuY2FyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgoKChzdGF0ZSA9IChzY19zdGF0ZXNfMTA2W2pdKSksIChjb25mX3NldCA9
IChzdGF0ZVsoc2NfY29uZl8xMDcrKDEpKV0pKSwgKChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZf
c2V0WyhpKyg1KSldKTpmYWxzZSkpIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlcyA9IChzY19hcHBlbmQoKGRl
cml2X3RyZWVzKHNjX2NvbmZfMTA3LCBpLCBqLCBzY19lbmRlcnNfMTAyLCBzY19zdGVwc18xMDMs
IHNjX25hbWVzXzEwNCwgc2NfdG9rc18xMDUsIHNjX3N0YXRlc18xMDYsIEJnTF9zY19uYnpkMm50
c18xMDh6ZDIpKSwgdHJlZXMpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVzOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIG5iX2Rl
cml2X3RyZWVzID0gZnVuY3Rpb24oc2NfY29uZl8xMTAsIGksIGosIHNjX2VuZGVyc18xMTEsIHNj
X3N0ZXBzXzExMiwgc2NfdG9rc18xMTMsIHNjX3N0YXRlc18xMTQsIEJnTF9zY19uYnpkMm50c18x
MTV6ZDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19sb29wMV8xMTY7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgdG1wMTEyNDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBwcmV2OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgocHJldiA9IChzY19j
b25mXzExMC0oMSkpKSwgKCgoKHRtcDExMjQgPSAoc2NfY29uZl8xMTA8QmdMX3NjX25iemQybnRz
XzExNXpkMikpLCAoKHRtcDExMjQhPT0gZmFsc2UpP3RtcDExMjQ6KChzY19zdGVwc18xMTJbcHJl
dl0pPCgwKSkpKSE9PSBmYWxzZSk/KDEpOigoc2NfbG9vcDFfMTE2ID0gZnVuY3Rpb24obCwgc2Nf
bl8xMTgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmJfZW5kZXJfdHJlZXM7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5iX3ByZXZfdHJlZXM7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZfc2V0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgZW5kZXJfc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19z
dGF0ZV8xMTc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuZGVyOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzY19uXzExODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgaW5zdGFuY2VvZiBzY19Q
YWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXIgPSAobC5jYXIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kZXJfc2V0ID0gKChzY19zdGF0ZV8x
MTcgPSAoc2Nfc3RhdGVzXzExNFtqXSkpLCAoc2Nfc3RhdGVfMTE3WyhlbmRlcisoMSkpXSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGVuZGVyX3NldCE9
PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVu
ZGVyX3NldFsoMildKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobiA9IHNjX25fMTE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICgoaz49KDApKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGs+PWkpJiYoKChzdGF0ZSA9IChz
Y19zdGF0ZXNfMTE0W2tdKSksIChjb25mX3NldCA9IChzdGF0ZVsocHJldisoMSkpXSkpLCAoKGNv
bmZfc2V0IT09IGZhbHNlKT8oY29uZl9zZXRbKGkrKDUpKV0pOmZhbHNlKSkhPT0gZmFsc2UpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG5iX3ByZXZfdHJlZXMgPSAobmJfZGVyaXZfdHJlZXMocHJldiwgaSwgaywgc2NfZW5k
ZXJzXzExMSwgc2Nfc3RlcHNfMTEyLCBzY190b2tzXzExMywgc2Nfc3RhdGVzXzExNCwgQmdMX3Nj
X25iemQybnRzXzExNXpkMikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChuYl9lbmRlcl90cmVlcyA9IChuYl9kZXJpdl90cmVl
cyhlbmRlciwgaywgaiwgc2NfZW5kZXJzXzExMSwgc2Nfc3RlcHNfMTEyLCBzY190b2tzXzExMywg
c2Nfc3RhdGVzXzExNCwgQmdMX3NjX25iemQybnRzXzExNXpkMikpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrID0gKGVuZGVy
X3NldFsoaysoNSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG4gKz0obmJfcHJldl90cmVlcypuYl9lbmRlcl90cmVlcykp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoayA9IChlbmRlcl9zZXRbKGsrKDUpKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2NfbG9vcDFfMTE2KChsLmNkciksIG4pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGwgPSAobC5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjX25fMTE4OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAo
c2NfbG9vcDFfMTE2KChzY19lbmRlcnNfMTExWyhzY19zdGVwc18xMTJbcHJldl0pXSksICgwKSkp
KSkpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBCZ0xfc2Nf
bmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzQ4emEyID0gZnVuY3Rpb24obnQsIGksIGosIHNjX250c18x
MTksIHNjX2VuZGVyc18xMjAsIHNjX3N0ZXBzXzEyMSwgc2NfdG9rc18xMjIsIHNjX3N0YXRlc18x
MjMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19j
b25mXzEyNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG5iX3RyZWVzOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEJnTF9z
Y19uYnpkMm50c18xMjV6ZDI7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX250
emEyXzEyNnphMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoQmdMX3NjX250emEyXzEyNnphMiA9IChzY19pbmRfNDMobnQsIHNjX250c18x
MTkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChCZ0xfc2NfbnR6YTJfMTI2
emEyIT09IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19uYnpkMm50c18xMjV6ZDIgPSAo
c2NfbnRzXzExOS5sZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsID0gKHNjX2VuZGVyc18xMjBbQmdMX3NjX250emEyXzEyNnphMl0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChuYl90cmVlcyA9ICgwKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjX2NvbmZfMTI0ID0gKGwuY2FyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKChzdGF0ZSA9
IChzY19zdGF0ZXNfMTIzW2pdKSksIChjb25mX3NldCA9IChzdGF0ZVsoc2NfY29uZl8xMjQrKDEp
KV0pKSwgKChjb25mX3NldCE9PSBmYWxzZSk/KGNvbmZfc2V0WyhpKyg1KSldKTpmYWxzZSkpIT09
IGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChuYl90cmVlcyA9ICgobmJfZGVyaXZfdHJlZXMoc2NfY29uZl8xMjQsIGksIGos
IHNjX2VuZGVyc18xMjAsIHNjX3N0ZXBzXzEyMSwgc2NfdG9rc18xMjIsIHNjX3N0YXRlc18xMjMs
IEJnTF9zY19uYnpkMm50c18xMjV6ZDIpKStuYl90cmVlcykpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYl90cmVlczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICAobGV4ZXIgPSAocGFyc2VyX2Rlc2NyWygwKV0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgKHNjX250c180MiA9IChwYXJzZXJfZGVzY3JbKDEpXSkpOworICAgICAgICAgICAg
ICAgICAgICAoc2Nfc3RhcnRlcnNfNDEgPSAocGFyc2VyX2Rlc2NyWygyKV0pKTsKKyAgICAgICAg
ICAgICAgICAgICAgKHNjX2VuZGVyc180MCA9IChwYXJzZXJfZGVzY3JbKDMpXSkpOworICAgICAg
ICAgICAgICAgICAgICAoc2NfcHJlZGljdG9yc18zOSA9IChwYXJzZXJfZGVzY3JbKDQpXSkpOwor
ICAgICAgICAgICAgICAgICAgICAoc2Nfc3RlcHNfMzggPSAocGFyc2VyX2Rlc2NyWyg1KV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgKHNjX25hbWVzXzM3ID0gKHBhcnNlcl9kZXNjclsoNildKSk7
CisgICAgICAgICAgICAgICAgICAgIChmYWxzZUhlYWQxMTI4ID0gKG5ldyBzY19QYWlyKG51bGws
IG51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgIChMMTEyNSA9IChsZXhlcihpbnB1dCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgKHRhaWwxMTI5ID0gZmFsc2VIZWFkMTEyOCk7CisgICAgICAg
ICAgICAgICAgICAgIHdoaWxlICghKEwxMTI1ID09PSBudWxsKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2sgPSAoTDExMjUuY2Fy
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gKHRvay5jZHIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAobDIgPSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoKGwxIGluc3RhbmNlb2Ygc2NfUGFpcikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNjX2lfMjkgPSAoc2NfaW5kXzQzKChsMS5jYXIpLCBzY19udHNfNDIpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNjX2lfMjkhPT0gZmFsc2UpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGwxID0gKGwxLmNkcikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobDIgPSAobmV3IHNjX1BhaXIoc2NfaV8yOSwg
bDIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsMSA9IChsMS5jZHIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc2Nfb3B0ck9wbmRfMjIgPSAobmV3IHNjX1BhaXIoKHRvay5jYXIp
LCAoc2NfcmV2ZXJzZShsMikpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY19v
cHRyT3BuZF8yMSA9IChuZXcgc2NfUGFpcihzY19vcHRyT3BuZF8yMiwgbnVsbCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodGFpbDExMjkuY2RyID0gc2Nfb3B0ck9wbmRfMjEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWlsMTEyOSA9ICh0YWlsMTEyOS5jZHIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTDExMjUgPSAoTDExMjUuY2RyKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgKHNjX29wdHJPcG5kXzIwID0gKGZhbHNlSGVhZDExMjguY2RyKSk7CisgICAgICAg
ICAgICAgICAgICAgIChzY190b2tzXzM2ID0gKHNjX2xpc3QydmVjdG9yKHNjX29wdHJPcG5kXzIw
KSkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQydG9rc18zNXpkMiA9IChzY190
b2tzXzM2Lmxlbmd0aCkpOworICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQyY29uZnNf
MzR6ZDIgPSAoc2Nfc3RlcHNfMzgubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChzY19z
dGF0ZXNfMzMgPSAobWFrZV9zdGF0ZXMoQmdMX3NjX25iemQydG9rc18zNXpkMiwgQmdMX3NjX25i
emQyY29uZnNfMzR6ZDIpKSk7CisgICAgICAgICAgICAgICAgICAgIChnb2FsX3N0YXJ0ZXJzID0g
KHNjX3N0YXJ0ZXJzXzQxWygwKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19jb25m
emQyc2V0emQyYWRqb2luemEyXzQ1emEyKHNjX3N0YXRlc18zMywgKDApLCBnb2FsX3N0YXJ0ZXJz
LCAoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgKGZvcncoc2Nfc3RhdGVzXzMzLCAoMCksIHNj
X3N0YXJ0ZXJzXzQxLCBzY19lbmRlcnNfNDAsIHNjX3ByZWRpY3RvcnNfMzksIHNjX3N0ZXBzXzM4
LCBzY19udHNfNDIpKTsKKyAgICAgICAgICAgICAgICAgICAgKHNjX2lfMjggPSAoMCkpOworICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjX2lfMjg8QmdMX3NjX25iemQydG9rc18zNXpkMikp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodG9rX250cyA9ICgoc2NfdG9rc18zNltzY19pXzI4XSkuY2RyKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKEJnTF9zY19jb25memQyc2V0emQyYWRqb2luemEyXzQ1emEyKHNjX3N0
YXRlc18zMywgKHNjX2lfMjgrKDEpKSwgdG9rX250cywgc2NfaV8yOCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChmb3J3KHNjX3N0YXRlc18zMywgKHNjX2lfMjgrKDEpKSwgc2Nfc3Rh
cnRlcnNfNDEsIHNjX2VuZGVyc180MCwgc2NfcHJlZGljdG9yc18zOSwgc2Nfc3RlcHNfMzgsIHNj
X250c180MikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrK3NjX2lfMjgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIChuYl90b2tzID0gKHNjX3Rva3NfMzYubGVuZ3RoKSk7CisgICAgICAgICAgICAg
ICAgICAgIChCZ0xfc2NfbmJ6ZDJjb25mc18zMnpkMiA9IChzY19zdGVwc18zOC5sZW5ndGgpKTsK
KyAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19uYnpkMm50c18zMXpkMiA9IChzY19udHNfNDIu
bGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGVzemEyXzMwemEyID0g
KG1ha2Vfc3RhdGVzKG5iX3Rva3MsIEJnTF9zY19uYnpkMmNvbmZzXzMyemQyKSkpOworICAgICAg
ICAgICAgICAgICAgICAoZ29hbF9lbmRlcnMgPSAoc2NfZW5kZXJzXzQwWygwKV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgKGwgPSBnb2FsX2VuZGVycyk7CisgICAgICAgICAgICAgICAgICAgIHdo
aWxlICgobCBpbnN0YW5jZW9mIHNjX1BhaXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmYgPSAobC5jYXIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6
MDAoc2Nfc3RhdGVzXzMzLCBCZ0xfc2Nfc3RhdGVzemEyXzMwemEyLCBuYl90b2tzLCBjb25mLCAo
MCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobCA9IChsLmNkcikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIChpID0gbmJfdG9rcyk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoaT49KDAp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzdGF0ZXMgPSBzY19zdGF0ZXNfMzMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChCZ0xfc2Nfc3RhdGVzemEyXzI3emEyID0gQmdMX3NjX3N0YXRlc3phMl8zMHphMik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlX251bSA9IGkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzY19lbmRlcnNfMjYgPSBzY19lbmRlcnNfNDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzY19zdGVwc18yNSA9IHNjX3N0ZXBzXzM4KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoQmdMX3NjX25iemQybnRzXzI0emQyID0gQmdMX3NjX25iemQybnRz
XzMxemQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG9rcyA9IHNjX3Rva3NfMzYp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTIgPSAo
QmdMX3NjX3N0YXRlc3phMl8zMHphMltpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvb3AxID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzY19sb29wMV8xMjc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQmdMX3NjX3N0YXRlc3phMl8x
Mjh6YTI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY19zdGF0ZXNfMTI5
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgajsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzY19pXzEzMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlYWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25mX3NldDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjX2NvbmZfMTMxOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2NfY29uZl8xMzEgPSAoQmdMX3NjX3N0YXRlemEyXzIzemEyWygwKV0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2NfY29uZl8xMzE+PSgwKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uZl9zZXQgPSAoQmdMX3NjX3N0YXRlemEyXzIzemEy
WyhzY19jb25mXzEzMSsoMSkpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoaGVhZCA9IChjb25mX3NldFsoNCldKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChCZ0xfc2Nfc3RhdGV6YTJfMjN6YTJbKDApXSA9IChj
b25mX3NldFsoMCldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjb25mX3NldF9tZXJnZV9uZXdfYmFuZyhjb25mX3NldCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NfaV8xMzAgPSBoZWFkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChzY19pXzEzMD49KDAp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpID0g
c2NfaV8xMzApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChqID0gc3RhdGVfbnVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc2Nfc3RhdGVzXzEyOSA9IHN0YXRlcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJnTF9zY19zdGF0ZXN6
YTJfMTI4emEyID0gQmdMX3NjX3N0YXRlc3phMl8yN3phMik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXYgPSAoc2NfY29uZl8xMzEtKDEp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCgoc2NfY29uZl8xMzE+PUJnTF9zY19uYnpkMm50c18yNHpkMikmJigoc2Nfc3RlcHNfMjVb
cHJldl0pPj0oMCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2NfbG9vcDFfMTI3ID0gZnVuY3Rpb24obCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBlbmRlcl9zZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBlbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKGwgaW5zdGFuY2VvZiBzY19QYWlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZW5kZXIgPSAobC5jYXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5k
ZXJfc2V0ID0gKChzdGF0ZSA9IChzY19zdGF0ZXNfMTI5W2pdKSksIChzdGF0ZVsoZW5kZXIrKDEp
KV0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlbmRlcl9zZXQhPT0gZmFsc2UpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoayA9IChl
bmRlcl9zZXRbKDIpXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChrPj0o
MCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKGs+PWkpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCgoQmdMX3NjX2NvbmZ6ZDJzZXR6ZDJhZGpvaW56YTJ6YTJfNDZ6
MDAoc2Nfc3RhdGVzXzEyOSwgQmdMX3NjX3N0YXRlc3phMl8xMjh6YTIsIGssIHByZXYsIGkpKSE9
PSBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJn
TF9zY19jb25memQyc2V0emQyYWRqb2luemEyemEyXzQ2ejAwKHNjX3N0YXRlc18xMjksIEJnTF9z
Y19zdGF0ZXN6YTJfMTI4emEyLCBqLCBlbmRlciwgaykpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoayA9IChlbmRlcl9zZXRbKGsrKDUpKV0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHNjX2xvb3AxXzEyNygobC5jZHIpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsID0gKGwuY2RyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzY19sb29wMV8xMjcoKHNjX2VuZGVyc18yNlsoc2Nfc3RlcHNfMjVbcHJldl0pXSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
Y19pXzEzMCA9IChjb25mX3NldFsoc2NfaV8xMzArKDUpKV0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKGxvb3AxKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVk
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9vcDEoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKC0taSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKG9wdHJPcG5kID0g
QmdMX3NjX3N0YXRlc3phMl8zMHphMik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2Nf
bnRzXzQyLCBzY19zdGFydGVyc180MSwgc2NfZW5kZXJzXzQwLCBzY19wcmVkaWN0b3JzXzM5LCBz
Y19zdGVwc18zOCwgc2NfbmFtZXNfMzcsIHNjX3Rva3NfMzYsIG9wdHJPcG5kLCBpc19wYXJzZWQs
IEJnTF9zY19kZXJpdnpkMnRyZWVzemEyXzQ3ejcwLCBCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVz
emEyXzQ4emEyXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9
CisgICAgfTsKKyAgICBCZ0xfcGFyc2V6ZDJ6ZTNwYXJzZWR6ZjN6YzIgPSBmdW5jdGlvbihwYXJz
ZSwgbnQsIGksIGopIHsKKyAgICAgICAgdmFyIGlzX3BhcnNlZDsKKyAgICAgICAgdmFyIHN0YXRl
czsKKyAgICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIG50czsKKyAgICAgICAgcmV0dXJu
ICgobnRzID0gKHBhcnNlWygwKV0pKSwgKGVuZGVycyA9IChwYXJzZVsoMildKSksIChzdGF0ZXMg
PSAocGFyc2VbKDcpXSkpLCAoaXNfcGFyc2VkID0gKHBhcnNlWyg4KV0pKSwgKGlzX3BhcnNlZChu
dCwgaSwgaiwgbnRzLCBlbmRlcnMsIHN0YXRlcykpKTsKKyAgICB9OworICAgIEJnTF9wYXJzZXpk
MnplM3RyZWVzejMxID0gZnVuY3Rpb24ocGFyc2UsIG50LCBpLCBqKSB7CisgICAgICAgIHZhciBC
Z0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl8xMzJ6NzA7CisgICAgICAgIHZhciBzdGF0ZXM7CisgICAg
ICAgIHZhciB0b2tzOworICAgICAgICB2YXIgbmFtZXM7CisgICAgICAgIHZhciBzdGVwczsKKyAg
ICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIG50czsKKyAgICAgICAgcmV0dXJuICgobnRz
ID0gKHBhcnNlWygwKV0pKSwgKGVuZGVycyA9IChwYXJzZVsoMildKSksIChzdGVwcyA9IChwYXJz
ZVsoNCldKSksIChuYW1lcyA9IChwYXJzZVsoNSldKSksICh0b2tzID0gKHBhcnNlWyg2KV0pKSwg
KHN0YXRlcyA9IChwYXJzZVsoNyldKSksIChCZ0xfc2NfZGVyaXZ6ZDJ0cmVlc3phMl8xMzJ6NzAg
PSAocGFyc2VbKDkpXSkpLCAoQmdMX3NjX2Rlcml2emQydHJlZXN6YTJfMTMyejcwKG50LCBpLCBq
LCBudHMsIGVuZGVycywgc3RlcHMsIG5hbWVzLCB0b2tzLCBzdGF0ZXMpKSk7CisgICAgfTsKKyAg
ICBCZ0xfcGFyc2V6ZDJ6ZTNuYnpkMnRyZWVzemUzID0gZnVuY3Rpb24ocGFyc2UsIG50LCBpLCBq
KSB7CisgICAgICAgIHZhciBCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzEzM3phMjsKKyAg
ICAgICAgdmFyIHN0YXRlczsKKyAgICAgICAgdmFyIHRva3M7CisgICAgICAgIHZhciBzdGVwczsK
KyAgICAgICAgdmFyIGVuZGVyczsKKyAgICAgICAgdmFyIG50czsKKyAgICAgICAgcmV0dXJuICgo
bnRzID0gKHBhcnNlWygwKV0pKSwgKGVuZGVycyA9IChwYXJzZVsoMildKSksIChzdGVwcyA9IChw
YXJzZVsoNCldKSksICh0b2tzID0gKHBhcnNlWyg2KV0pKSwgKHN0YXRlcyA9IChwYXJzZVsoNyld
KSksIChCZ0xfc2NfbmJ6ZDJkZXJpdnpkMnRyZWVzemEyXzEzM3phMiA9IChwYXJzZVsoMTApXSkp
LCAoQmdMX3NjX25iemQyZGVyaXZ6ZDJ0cmVlc3phMl8xMzN6YTIobnQsIGksIGosIG50cywgZW5k
ZXJzLCBzdGVwcywgdG9rcywgc3RhdGVzKSkpOworICAgIH07CisgICAgdGVzdCA9IGZ1bmN0aW9u
KGspIHsKKyAgICAgICAgdmFyIHg7CisgICAgICAgIHZhciBwOworICAgICAgICByZXR1cm4gKChw
ID0gKEJnTF9tYWtlemQycGFyc2VyemQyKGNvbnN0X2VhcmxleSwgZnVuY3Rpb24obCkgeworICAg
ICAgICAgICAgdmFyIHNjX3hfMTM0OworICAgICAgICAgICAgdmFyIHRhaWwxMTM0OworICAgICAg
ICAgICAgdmFyIEwxMTMwOworICAgICAgICAgICAgdmFyIGZhbHNlSGVhZDExMzM7CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgKGZhbHNlSGVhZDExMzMgPSAobmV3IHNjX1BhaXIobnVs
bCwgbnVsbCkpKTsKKyAgICAgICAgICAgICAgICAodGFpbDExMzQgPSBmYWxzZUhlYWQxMTMzKTsK
KyAgICAgICAgICAgICAgICAoTDExMzAgPSBsKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIShM
MTEzMCA9PT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgKHRhaWwxMTM0LmNkciA9IChuZXcgc2NfUGFpcigoKHNjX3hfMTM0ID0gKEwxMTMw
LmNhcikpLCAoc2NfbGlzdChzY194XzEzNCwgc2NfeF8xMzQpKSksIG51bGwpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAodGFpbDExMzQgPSAodGFpbDExMzQuY2RyKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAoTDExMzAgPSAoTDExMzAuY2RyKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIChmYWxzZUhlYWQx
MTMzLmNkcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0pKSksICh4ID0gKHAoKHNjX3ZlY3Rv
cjJsaXN0KChzY19tYWtlVmVjdG9yKGssICJcdTFFOUNhIikpKSkpKSksIChzY19sZW5ndGgoKEJn
TF9wYXJzZXpkMnplM3RyZWVzejMxKHgsICJcdTFFOUNzIiwgKDApLCBrKSkpKSk7CisgICAgfTsK
KyAgICBCZ0xfZWFybGV5emQyYmVuY2htYXJremQyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZh
ciBhcmdzID0gbnVsbDsKKyAgICAgICAgZm9yICh2YXIgc2NfdG1wID0gYXJndW1lbnRzLmxlbmd0
aCAtIDE7IHNjX3RtcCA+PSAwOyBzY190bXAtLSkgeworICAgICAgICAgICAgYXJncyA9IHNjX2Nv
bnMoYXJndW1lbnRzW3NjX3RtcF0sIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIHZhciBrOwor
ICAgICAgICByZXR1cm4gKChrID0gKChhcmdzID09PSBudWxsKT8oNyk6KGFyZ3MuY2FyKSkpLCAo
QmdMX3J1bnpkMmJlbmNobWFya3pkMigiZWFybGV5IiwgKDEpLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHJldHVybiAodGVzdChrKSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKHJlc3VsdCkgewor
ICAgICAgICAgICAgcmV0dXJuICgoc2NfZGlzcGxheShyZXN1bHQpKSwgKHNjX25ld2xpbmUoKSks
IHJlc3VsdCA9PSAxMzIpOworICAgICAgICB9KSkpOworICAgIH07Cit9CisKKworLyoqKioqKioq
KioqKiogRU5EIE9GIEdFTkVSQVRFRCBDT0RFICoqKioqKioqKioqKiovCisvLyBJbnZva2UgdGhp
cyBmdW5jdGlvbiB0byBydW4gYSBiZW5jaG1hcmsuCisvLyBUaGUgZmlyc3QgYXJndW1lbnQgaXMg
YSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGJlbmNobWFyay4KKy8vIFRoZSBzZWNvbmQgYXJndW1l
bnQgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIGJlbmNobWFyay4KKy8vIFRoZSB0
aGlyZCBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uIHRoYXQgcnVucyB0aGUgYmVuY2htYXJrLgorLy8g
VGhlIGZvdXJ0aCBhcmd1bWVudCBpcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgd2FybnMgaWYgdGhl
IHJlc3VsdAorLy8gcmV0dXJuZWQgYnkgdGhlIGJlbmNobWFyayBpcyBpbmNvcnJlY3QuCisvLwor
Ly8gRXhhbXBsZToKKy8vIFJ1bkJlbmNobWFyaygibmV3IEFycmF5KCkiLAorLy8gICAgICAgICAg
ICAgIDEsCisvLyAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBuZXcgQXJyYXkoMTAwMDAwMCk7
IH0KKy8vICAgICAgICAgICAgICBmdW5jdGlvbiAodikgeworLy8gICAgICAgICAgICAgICAgcmV0
dXJuICh2IGluc3RhbmNlb2YgQXJyYXkpICYmICh2Lmxlbmd0aCA9PSAxMDAwMDAwKTsKKy8vICAg
ICAgICAgICAgICB9KTsKKworU0NfREVGQVVMVF9PVVQgPSBuZXcgc2NfR2VuZXJpY091dHB1dFBv
cnQoZnVuY3Rpb24ocykge30pOworU0NfRVJST1JfT1VUID0gU0NfREVGQVVMVF9PVVQ7CisKK2Z1
bmN0aW9uIFJ1bkJlbmNobWFyayhuYW1lLCBjb3VudCwgcnVuLCB3YXJuKSB7CisgIGZvciAodmFy
IG4gPSAwOyBuIDwgY291bnQ7ICsrbikgeworICAgIHZhciByZXN1bHQgPSBydW4oKTsKKyAgICBp
ZiAoIXdhcm4ocmVzdWx0KSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCJFYXJsZXkgb3IgQm95
ZXIgZGlkIGluY29ycmVjdCBudW1iZXIgb2YgcmV3cml0ZXMiKTsKKyAgICB9CisgIH0KK30KKwor
dmFyIEJnTF9ydW56ZDJiZW5jaG1hcmt6ZDIgPSBSdW5CZW5jaG1hcms7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgNDsgKytpKSB7CisgIEJnTF9lYXJsZXl6ZDJiZW5jaG1hcmt6ZDIoKTsKKyAgQmdM
X25ib3llcnpkMmJlbmNobWFya3pkMigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy92OC1yYXl0cmFjZS1zdHJpY3QuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Y4LXJheXRyYWNlLXN0cmljdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NmNhNmU4OTIzYjdkZmQ3Yzc2NWZiMTg5OWYzZjhiMGM5YmU1ZDIwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy92OC1yYXl0cmFjZS1zdHJpY3Qu
anMKQEAgLTAsMCArMSw5MDQgQEAKKyJ1c2Ugc3RyaWN0IjsKKworLy8gVGhlIHJheSB0cmFjZXIg
Y29kZSBpbiB0aGlzIGZpbGUgaXMgd3JpdHRlbiBieSBBZGFtIEJ1cm1pc3Rlci4gSXQKKy8vIGlz
IGF2YWlsYWJsZSBpbiBpdHMgb3JpZ2luYWwgZm9ybSBmcm9tOgorLy8KKy8vICAgaHR0cDovL2xh
YnMuZmxvZy5uei5jby9yYXl0cmFjZXIvCisvLworLy8gSXQgaGFzIGJlZW4gbW9kaWZpZWQgc2xp
Z2h0bHkgYnkgR29vZ2xlIHRvIHdvcmsgYXMgYSBzdGFuZGFsb25lCisvLyBiZW5jaG1hcmssIGJ1
dCB0aGUgYWxsIHRoZSBjb21wdXRhdGlvbmFsIGNvZGUgcmVtYWlucworLy8gdW50b3VjaGVkLiBU
aGlzIGZpbGUgYWxzbyBjb250YWlucyBhIGNvcHkgb2YgcGFydHMgb2YgdGhlIFByb3RvdHlwZQor
Ly8gSmF2YVNjcmlwdCBmcmFtZXdvcmsgd2hpY2ggaXMgdXNlZCBieSB0aGUgcmF5IHRyYWNlci4K
KworLy8gVmFyaWFibGUgdXNlZCB0byBob2xkIGEgbnVtYmVyIHRoYXQgY2FuIGJlIHVzZWQgdG8g
dmVyaWZ5IHRoYXQKKy8vIHRoZSBzY2VuZSB3YXMgcmF5IHRyYWNlZCBjb3JyZWN0bHkuCit2YXIg
Y2hlY2tOdW1iZXI7CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworLy8gVGhlIGZvbGxvd2luZyBpcyBhIGNvcHkgb2YgcGFydHMgb2YgdGhlIFByb3RvdHlwZSBK
YXZhU2NyaXB0IGxpYnJhcnk6CisKKy8vIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywg
dmVyc2lvbiAxLjUuMAorLy8gKGMpIDIwMDUtMjAwNyBTYW0gU3RlcGhlbnNvbgorLy8KKy8vIFBy
b3RvdHlwZSBpcyBmcmVlbHkgZGlzdHJpYnV0YWJsZSB1bmRlciB0aGUgdGVybXMgb2YgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UuCisvLyBGb3IgZGV0YWlscywgc2VlIHRoZSBQcm90b3R5cGUgd2ViIHNp
dGU6IGh0dHA6Ly9wcm90b3R5cGUuY29uaW8ubmV0LworCisKK3ZhciBDbGFzcyA9IHsKKyAgY3Jl
YXRlOiBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICB0aGlzLmlu
aXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB9CisgIH0KK307CisKKworT2Jq
ZWN0LmV4dGVuZCA9IGZ1bmN0aW9uKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHsKKyAgZm9yICh2YXIg
cHJvcGVydHkgaW4gc291cmNlKSB7CisgICAgZGVzdGluYXRpb25bcHJvcGVydHldID0gc291cmNl
W3Byb3BlcnR5XTsKKyAgfQorICByZXR1cm4gZGVzdGluYXRpb247Cit9OworCisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoZSByZXN0IG9mIHRoaXMgZmls
ZSBpcyB0aGUgYWN0dWFsIHJheSB0cmFjZXIgd3JpdHRlbiBieSBBZGFtCisvLyBCdXJtaXN0ZXIu
IEl0J3MgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisvLworLy8gICBm
bG9nL2NvbG9yLmpzCisvLyAgIGZsb2cvbGlnaHQuanMKKy8vICAgZmxvZy92ZWN0b3IuanMKKy8v
ICAgZmxvZy9yYXkuanMKKy8vICAgZmxvZy9zY2VuZS5qcworLy8gICBmbG9nL21hdGVyaWFsL2Jh
c2VtYXRlcmlhbC5qcworLy8gICBmbG9nL21hdGVyaWFsL3NvbGlkLmpzCisvLyAgIGZsb2cvbWF0
ZXJpYWwvY2hlc3Nib2FyZC5qcworLy8gICBmbG9nL3NoYXBlL2Jhc2VzaGFwZS5qcworLy8gICBm
bG9nL3NoYXBlL3NwaGVyZS5qcworLy8gICBmbG9nL3NoYXBlL3BsYW5lLmpzCisvLyAgIGZsb2cv
aW50ZXJzZWN0aW9uaW5mby5qcworLy8gICBmbG9nL2NhbWVyYS5qcworLy8gICBmbG9nL2JhY2tn
cm91bmQuanMKKy8vICAgZmxvZy9lbmdpbmUuanMKKworCisvKiBGYWtlIGEgRmxvZy4qIG5hbWVz
cGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9Owor
aWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIg
PSB7fTsKKworRmxvZy5SYXlUcmFjZXIuQ29sb3IgPSBDbGFzcy5jcmVhdGUoKTsKKworRmxvZy5S
YXlUcmFjZXIuQ29sb3IucHJvdG90eXBlID0geworICAgIHJlZCA6IDAuMCwKKyAgICBncmVlbiA6
IDAuMCwKKyAgICBibHVlIDogMC4wLAorCisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKHIsIGcs
IGIpIHsKKyAgICAgICAgaWYoIXIpIHIgPSAwLjA7CisgICAgICAgIGlmKCFnKSBnID0gMC4wOwor
ICAgICAgICBpZighYikgYiA9IDAuMDsKKworICAgICAgICB0aGlzLnJlZCA9IHI7CisgICAgICAg
IHRoaXMuZ3JlZW4gPSBnOworICAgICAgICB0aGlzLmJsdWUgPSBiOworICAgIH0sCisKKyAgICBh
ZGQgOiBmdW5jdGlvbihjMSwgYzIpeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEZsb2cuUmF5
VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICByZXN1bHQucmVkID0gYzEucmVkICsgYzIu
cmVkOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiArIGMyLmdyZWVuOworICAgICAg
ICByZXN1bHQuYmx1ZSA9IGMxLmJsdWUgKyBjMi5ibHVlOworCisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfSwKKworICAgIGFkZFNjYWxhcjogZnVuY3Rpb24oYzEsIHMpeworICAgICAgICB2
YXIgcmVzdWx0ID0gbmV3IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICBy
ZXN1bHQucmVkID0gYzEucmVkICsgczsKKyAgICAgICAgcmVzdWx0LmdyZWVuID0gYzEuZ3JlZW4g
KyBzOworICAgICAgICByZXN1bHQuYmx1ZSA9IGMxLmJsdWUgKyBzOworCisgICAgICAgIHJlc3Vs
dC5saW1pdCgpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIHN1YnRy
YWN0OiBmdW5jdGlvbihjMSwgYzIpeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEZsb2cuUmF5
VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICByZXN1bHQucmVkID0gYzEucmVkIC0gYzIu
cmVkOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiAtIGMyLmdyZWVuOworICAgICAg
ICByZXN1bHQuYmx1ZSA9IGMxLmJsdWUgLSBjMi5ibHVlOworCisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfSwKKworICAgIG11bHRpcGx5IDogZnVuY3Rpb24oYzEsIGMyKSB7CisgICAgICAg
IHZhciByZXN1bHQgPSBuZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMCwwLDApOworCisgICAgICAg
IHJlc3VsdC5yZWQgPSBjMS5yZWQgKiBjMi5yZWQ7CisgICAgICAgIHJlc3VsdC5ncmVlbiA9IGMx
LmdyZWVuICogYzIuZ3JlZW47CisgICAgICAgIHJlc3VsdC5ibHVlID0gYzEuYmx1ZSAqIGMyLmJs
dWU7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgbXVsdGlwbHlTY2Fs
YXIgOiBmdW5jdGlvbihjMSwgZikgeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEZsb2cuUmF5
VHJhY2VyLkNvbG9yKDAsMCwwKTsKKworICAgICAgICByZXN1bHQucmVkID0gYzEucmVkICogZjsK
KyAgICAgICAgcmVzdWx0LmdyZWVuID0gYzEuZ3JlZW4gKiBmOworICAgICAgICByZXN1bHQuYmx1
ZSA9IGMxLmJsdWUgKiBmOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAg
IGRpdmlkZUZhY3RvciA6IGZ1bmN0aW9uKGMxLCBmKSB7CisgICAgICAgIHZhciByZXN1bHQgPSBu
ZXcgRmxvZy5SYXlUcmFjZXIuQ29sb3IoMCwwLDApOworCisgICAgICAgIHJlc3VsdC5yZWQgPSBj
MS5yZWQgLyBmOworICAgICAgICByZXN1bHQuZ3JlZW4gPSBjMS5ncmVlbiAvIGY7CisgICAgICAg
IHJlc3VsdC5ibHVlID0gYzEuYmx1ZSAvIGY7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9LAorCisgICAgbGltaXQ6IGZ1bmN0aW9uKCl7CisgICAgICAgIHRoaXMucmVkID0gKHRoaXMu
cmVkID4gMC4wKSA/ICggKHRoaXMucmVkID4gMS4wKSA/IDEuMCA6IHRoaXMucmVkICkgOiAwLjA7
CisgICAgICAgIHRoaXMuZ3JlZW4gPSAodGhpcy5ncmVlbiA+IDAuMCkgPyAoICh0aGlzLmdyZWVu
ID4gMS4wKSA/IDEuMCA6IHRoaXMuZ3JlZW4gKSA6IDAuMDsKKyAgICAgICAgdGhpcy5ibHVlID0g
KHRoaXMuYmx1ZSA+IDAuMCkgPyAoICh0aGlzLmJsdWUgPiAxLjApID8gMS4wIDogdGhpcy5ibHVl
ICkgOiAwLjA7CisgICAgfSwKKworICAgIGRpc3RhbmNlIDogZnVuY3Rpb24oY29sb3IpIHsKKyAg
ICAgICAgdmFyIGQgPSBNYXRoLmFicyh0aGlzLnJlZCAtIGNvbG9yLnJlZCkgKyBNYXRoLmFicyh0
aGlzLmdyZWVuIC0gY29sb3IuZ3JlZW4pICsgTWF0aC5hYnModGhpcy5ibHVlIC0gY29sb3IuYmx1
ZSk7CisgICAgICAgIHJldHVybiBkOworICAgIH0sCisKKyAgICBibGVuZDogZnVuY3Rpb24oYzEs
IGMyLCB3KXsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigw
LDAsMCk7CisgICAgICAgIHJlc3VsdCA9IEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5h
ZGQoCisgICAgICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5t
dWx0aXBseVNjYWxhcihjMSwgMSAtIHcpLAorICAgICAgICAgICAgICAgICAgICBGbG9nLlJheVRy
YWNlci5Db2xvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIoYzIsIHcpCisgICAgICAgICAgICAg
ICAgICApOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBicmlnaHRuZXNz
IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciByID0gTWF0aC5mbG9vcih0aGlzLnJlZCoyNTUp
OworICAgICAgICB2YXIgZyA9IE1hdGguZmxvb3IodGhpcy5ncmVlbioyNTUpOworICAgICAgICB2
YXIgYiA9IE1hdGguZmxvb3IodGhpcy5ibHVlKjI1NSk7CisgICAgICAgIHJldHVybiAociAqIDc3
ICsgZyAqIDE1MCArIGIgKiAyOSkgPj4gODsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHZhciByID0gTWF0aC5mbG9vcih0aGlzLnJlZCoyNTUpOworICAg
ICAgICB2YXIgZyA9IE1hdGguZmxvb3IodGhpcy5ncmVlbioyNTUpOworICAgICAgICB2YXIgYiA9
IE1hdGguZmxvb3IodGhpcy5ibHVlKjI1NSk7CisKKyAgICAgICAgcmV0dXJuICJyZ2IoIisgciAr
IiwiKyBnICsiLCIrIGIgKyIpIjsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFj
ZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYo
dHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7
fTsKKworRmxvZy5SYXlUcmFjZXIuTGlnaHQgPSBDbGFzcy5jcmVhdGUoKTsKKworRmxvZy5SYXlU
cmFjZXIuTGlnaHQucHJvdG90eXBlID0geworICAgIHBvc2l0aW9uOiBudWxsLAorICAgIGNvbG9y
OiBudWxsLAorICAgIGludGVuc2l0eTogMTAuMCwKKworICAgIGluaXRpYWxpemUgOiBmdW5jdGlv
bihwb3MsIGNvbG9yLCBpbnRlbnNpdHkpIHsKKyAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvczsK
KyAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yOworICAgICAgICB0aGlzLmludGVuc2l0eSA9IChp
bnRlbnNpdHkgPyBpbnRlbnNpdHkgOiAxMC4wKTsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAnTGlnaHQgWycgKyB0aGlzLnBvc2l0aW9uLngg
KyAnLCcgKyB0aGlzLnBvc2l0aW9uLnkgKyAnLCcgKyB0aGlzLnBvc2l0aW9uLnogKyAnXSc7Cisg
ICAgfQorfQorLyogRmFrZSBhIEZsb2cuKiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9
PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikg
PT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLlZl
Y3RvciA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBl
ID0geworICAgIHggOiAwLjAsCisgICAgeSA6IDAuMCwKKyAgICB6IDogMC4wLAorCisgICAgaW5p
dGlhbGl6ZSA6IGZ1bmN0aW9uKHgsIHksIHopIHsKKyAgICAgICAgdGhpcy54ID0gKHggPyB4IDog
MCk7CisgICAgICAgIHRoaXMueSA9ICh5ID8geSA6IDApOworICAgICAgICB0aGlzLnogPSAoeiA/
IHogOiAwKTsKKyAgICB9LAorCisgICAgY29weTogZnVuY3Rpb24odmVjdG9yKXsKKyAgICAgICAg
dGhpcy54ID0gdmVjdG9yLng7CisgICAgICAgIHRoaXMueSA9IHZlY3Rvci55OworICAgICAgICB0
aGlzLnogPSB2ZWN0b3IuejsKKyAgICB9LAorCisgICAgbm9ybWFsaXplIDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBtID0gdGhpcy5tYWduaXR1ZGUoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBG
bG9nLlJheVRyYWNlci5WZWN0b3IodGhpcy54IC8gbSwgdGhpcy55IC8gbSwgdGhpcy56IC8gbSk7
CisgICAgfSwKKworICAgIG1hZ25pdHVkZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
TWF0aC5zcXJ0KCh0aGlzLnggKiB0aGlzLngpICsgKHRoaXMueSAqIHRoaXMueSkgKyAodGhpcy56
ICogdGhpcy56KSk7CisgICAgfSwKKworICAgIGNyb3NzIDogZnVuY3Rpb24odykgeworICAgICAg
ICByZXR1cm4gbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLXRoaXMueiAqIHcueSArIHRoaXMueSAqIHcueiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnogKiB3LnggLSB0
aGlzLnggKiB3LnosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
dGhpcy55ICogdy54ICsgdGhpcy54ICogdy55KTsKKyAgICB9LAorCisgICAgZG90IDogZnVuY3Rp
b24odykgeworICAgICAgICByZXR1cm4gdGhpcy54ICogdy54ICsgdGhpcy55ICogdy55ICsgdGhp
cy56ICogdy56OworICAgIH0sCisKKyAgICBhZGQgOiBmdW5jdGlvbih2LCB3KSB7CisgICAgICAg
IHJldHVybiBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKHcueCArIHYueCwgdy55ICsgdi55LCB3
LnogKyB2LnopOworICAgIH0sCisKKyAgICBzdWJ0cmFjdCA6IGZ1bmN0aW9uKHYsIHcpIHsKKyAg
ICAgICAgaWYoIXcgfHwgIXYpIHRocm93ICdWZWN0b3JzIG11c3QgYmUgZGVmaW5lZCBbJyArIHYg
KyAnLCcgKyB3ICsgJ10nOworICAgICAgICByZXR1cm4gbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3Rv
cih2LnggLSB3LngsIHYueSAtIHcueSwgdi56IC0gdy56KTsKKyAgICB9LAorCisgICAgbXVsdGlw
bHlWZWN0b3IgOiBmdW5jdGlvbih2LCB3KSB7CisgICAgICAgIHJldHVybiBuZXcgRmxvZy5SYXlU
cmFjZXIuVmVjdG9yKHYueCAqIHcueCwgdi55ICogdy55LCB2LnogKiB3LnopOworICAgIH0sCisK
KyAgICBtdWx0aXBseVNjYWxhciA6IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBGbG9nLlJheVRyYWNlci5WZWN0b3Iodi54ICogdywgdi55ICogdywgdi56ICogdyk7CisgICAg
fSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gJ1ZlY3Rv
ciBbJyArIHRoaXMueCArICcsJyArIHRoaXMueSArICcsJyArIHRoaXMueiArICddJzsKKyAgICB9
Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1
bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAn
dW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuUmF5ID0g
Q2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLlJheS5wcm90b3R5cGUgPSB7CisgICAg
cG9zaXRpb24gOiBudWxsLAorICAgIGRpcmVjdGlvbiA6IG51bGwsCisgICAgaW5pdGlhbGl6ZSA6
IGZ1bmN0aW9uKHBvcywgZGlyKSB7CisgICAgICAgIHRoaXMucG9zaXRpb24gPSBwb3M7CisgICAg
ICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyOworICAgIH0sCisKKyAgICB0b1N0cmluZyA6IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdSYXkgWycgKyB0aGlzLnBvc2l0aW9uICsgJywnICsg
dGhpcy5kaXJlY3Rpb24gKyAnXSc7CisgICAgfQorfQorLyogRmFrZSBhIEZsb2cuKiBuYW1lc3Bh
Y2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cgPSB7fTsKK2lm
KHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyID0g
e307CisKK0Zsb2cuUmF5VHJhY2VyLlNjZW5lID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5
VHJhY2VyLlNjZW5lLnByb3RvdHlwZSA9IHsKKyAgICBjYW1lcmEgOiBudWxsLAorICAgIHNoYXBl
cyA6IFtdLAorICAgIGxpZ2h0cyA6IFtdLAorICAgIGJhY2tncm91bmQgOiBudWxsLAorCisgICAg
aW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNhbWVyYSA9IG5ldyBGbG9n
LlJheVRyYWNlci5DYW1lcmEoCisgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9y
KDAsMCwtNSksCisgICAgICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKDAsMCwxKSwK
KyAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5WZWN0b3IoMCwxLDApCisgICAgICAgICk7
CisgICAgICAgIHRoaXMuc2hhcGVzID0gbmV3IEFycmF5KCk7CisgICAgICAgIHRoaXMubGlnaHRz
ID0gbmV3IEFycmF5KCk7CisgICAgICAgIHRoaXMuYmFja2dyb3VuZCA9IG5ldyBGbG9nLlJheVRy
YWNlci5CYWNrZ3JvdW5kKG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLDAsMC41KSwgMC4yKTsK
KyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cp
ID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2Vy
KSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKK2lmKHR5cGVvZihGbG9nLlJh
eVRyYWNlci5NYXRlcmlhbCkgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyLk1hdGVyaWFs
ID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLkJhc2VNYXRlcmlhbCA9IENsYXNzLmNy
ZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5CYXNlTWF0ZXJpYWwucHJvdG90eXBl
ID0geworCisgICAgZ2xvc3M6IDIuMCwgICAgICAgICAgICAgLy8gWzAuLi5pbmZpbml0eV0gMCA9
IG1hdHQKKyAgICB0cmFuc3BhcmVuY3k6IDAuMCwgICAgICAvLyAwPW9wYXF1ZQorICAgIHJlZmxl
Y3Rpb246IDAuMCwgICAgICAgIC8vIFswLi4uaW5maW5pdHldIDAgPSBubyByZWZsZWN0aW9uCisg
ICAgcmVmcmFjdGlvbjogMC41MCwKKyAgICBoYXNUZXh0dXJlOiBmYWxzZSwKKworICAgIGluaXRp
YWxpemUgOiBmdW5jdGlvbigpIHsKKworICAgIH0sCisKKyAgICBnZXRDb2xvcjogZnVuY3Rpb24o
dSwgdil7CisKKyAgICB9LAorCisgICAgd3JhcFVwOiBmdW5jdGlvbih0KXsKKyAgICAgICAgdCA9
IHQgJSAyLjA7CisgICAgICAgIGlmKHQgPCAtMSkgdCArPSAyLjA7CisgICAgICAgIGlmKHQgPj0g
MSkgdCAtPSAyLjA7CisgICAgICAgIHJldHVybiB0OworICAgIH0sCisKKyAgICB0b1N0cmluZyA6
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdNYXRlcmlhbCBbZ2xvc3M9JyArIHRoaXMu
Z2xvc3MgKyAnLCB0cmFuc3BhcmVuY3k9JyArIHRoaXMudHJhbnNwYXJlbmN5ICsgJywgaGFzVGV4
dHVyZT0nICsgdGhpcy5oYXNUZXh0dXJlICsnXSc7CisgICAgfQorfQorLyogRmFrZSBhIEZsb2cu
KiBuYW1lc3BhY2UgKi8KK2lmKHR5cGVvZihGbG9nKSA9PSAndW5kZWZpbmVkJykgdmFyIEZsb2cg
PSB7fTsKK2lmKHR5cGVvZihGbG9nLlJheVRyYWNlcikgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5
VHJhY2VyID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLlNvbGlkID0gQ2xhc3MuY3Jl
YXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLlNvbGlkLnByb3RvdHlwZSA9IE9iamVj
dC5leHRlbmQoCisgICAgbmV3IEZsb2cuUmF5VHJhY2VyLk1hdGVyaWFsLkJhc2VNYXRlcmlhbCgp
LCB7CisgICAgICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihjb2xvciwgcmVmbGVjdGlvbiwgcmVm
cmFjdGlvbiwgdHJhbnNwYXJlbmN5LCBnbG9zcykgeworICAgICAgICAgICAgdGhpcy5jb2xvciA9
IGNvbG9yOworICAgICAgICAgICAgdGhpcy5yZWZsZWN0aW9uID0gcmVmbGVjdGlvbjsKKyAgICAg
ICAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0gdHJhbnNwYXJlbmN5OworICAgICAgICAgICAgdGhp
cy5nbG9zcyA9IGdsb3NzOworICAgICAgICAgICAgdGhpcy5oYXNUZXh0dXJlID0gZmFsc2U7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgZ2V0Q29sb3I6IGZ1bmN0aW9uKHUsIHYpeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuY29sb3I7CisgICAgICAgIH0sCisKKyAgICAgICAgdG9TdHJpbmcgOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gJ1NvbGlkTWF0ZXJpYWwgW2dsb3NzPScg
KyB0aGlzLmdsb3NzICsgJywgdHJhbnNwYXJlbmN5PScgKyB0aGlzLnRyYW5zcGFyZW5jeSArICcs
IGhhc1RleHR1cmU9JyArIHRoaXMuaGFzVGV4dHVyZSArJ10nOworICAgICAgICB9CisgICAgfQor
KTsKKy8qIEZha2UgYSBGbG9nLiogbmFtZXNwYWNlICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3Vu
ZGVmaW5lZCcpIHZhciBGbG9nID0ge307CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1
bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlciA9IHt9OworCitGbG9nLlJheVRyYWNlci5NYXRlcmlh
bC5DaGVzc2JvYXJkID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLk1hdGVyaWFs
LkNoZXNzYm9hcmQucHJvdG90eXBlID0gT2JqZWN0LmV4dGVuZCgKKyAgICBuZXcgRmxvZy5SYXlU
cmFjZXIuTWF0ZXJpYWwuQmFzZU1hdGVyaWFsKCksIHsKKyAgICAgICAgY29sb3JFdmVuOiBudWxs
LAorICAgICAgICBjb2xvck9kZDogbnVsbCwKKyAgICAgICAgZGVuc2l0eTogMC41LAorCisgICAg
ICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihjb2xvckV2ZW4sIGNvbG9yT2RkLCByZWZsZWN0aW9u
LCB0cmFuc3BhcmVuY3ksIGdsb3NzLCBkZW5zaXR5KSB7CisgICAgICAgICAgICB0aGlzLmNvbG9y
RXZlbiA9IGNvbG9yRXZlbjsKKyAgICAgICAgICAgIHRoaXMuY29sb3JPZGQgPSBjb2xvck9kZDsK
KyAgICAgICAgICAgIHRoaXMucmVmbGVjdGlvbiA9IHJlZmxlY3Rpb247CisgICAgICAgICAgICB0
aGlzLnRyYW5zcGFyZW5jeSA9IHRyYW5zcGFyZW5jeTsKKyAgICAgICAgICAgIHRoaXMuZ2xvc3Mg
PSBnbG9zczsKKyAgICAgICAgICAgIHRoaXMuZGVuc2l0eSA9IGRlbnNpdHk7CisgICAgICAgICAg
ICB0aGlzLmhhc1RleHR1cmUgPSB0cnVlOworICAgICAgICB9LAorCisgICAgICAgIGdldENvbG9y
OiBmdW5jdGlvbih1LCB2KXsKKyAgICAgICAgICAgIHZhciB0ID0gdGhpcy53cmFwVXAodSAqIHRo
aXMuZGVuc2l0eSkgKiB0aGlzLndyYXBVcCh2ICogdGhpcy5kZW5zaXR5KTsKKworICAgICAgICAg
ICAgaWYodCA8IDAuMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xvckV2ZW47Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sb3JPZGQ7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgdG9TdHJpbmcgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gJ0NoZXNzTWF0ZXJpYWwgW2dsb3NzPScgKyB0aGlzLmdsb3NzICsgJywgdHJhbnNw
YXJlbmN5PScgKyB0aGlzLnRyYW5zcGFyZW5jeSArICcsIGhhc1RleHR1cmU9JyArIHRoaXMuaGFz
VGV4dHVyZSArJ10nOworICAgICAgICB9CisgICAgfQorKTsKKy8qIEZha2UgYSBGbG9nLiogbmFt
ZXNwYWNlICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9nID0ge307
CitpZih0eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRyYWNl
ciA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyLlNoYXBlKSA9PSAndW5kZWZpbmVkJykg
RmxvZy5SYXlUcmFjZXIuU2hhcGUgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuU2hhcGUuU3BoZXJl
ID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlNwaGVyZS5wcm90b3R5
cGUgPSB7CisgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKHBvcywgcmFkaXVzLCBtYXRlcmlhbCkg
eworICAgICAgICB0aGlzLnJhZGl1cyA9IHJhZGl1czsKKyAgICAgICAgdGhpcy5wb3NpdGlvbiA9
IHBvczsKKyAgICAgICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsOworICAgIH0sCisKKyAgICBp
bnRlcnNlY3Q6IGZ1bmN0aW9uKHJheSl7CisgICAgICAgIHZhciBpbmZvID0gbmV3IEZsb2cuUmF5
VHJhY2VyLkludGVyc2VjdGlvbkluZm8oKTsKKyAgICAgICAgaW5mby5zaGFwZSA9IHRoaXM7CisK
KyAgICAgICAgdmFyIGRzdCA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUuc3VidHJh
Y3QocmF5LnBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTsKKworICAgICAgICB2YXIgQiA9IGRzdC5k
b3QocmF5LmRpcmVjdGlvbik7CisgICAgICAgIHZhciBDID0gZHN0LmRvdChkc3QpIC0gKHRoaXMu
cmFkaXVzICogdGhpcy5yYWRpdXMpOworICAgICAgICB2YXIgRCA9IChCICogQikgLSBDOworCisg
ICAgICAgIGlmKEQgPiAwKXsgLy8gaW50ZXJzZWN0aW9uIQorICAgICAgICAgICAgaW5mby5pc0hp
dCA9IHRydWU7CisgICAgICAgICAgICBpbmZvLmRpc3RhbmNlID0gKC1CKSAtIE1hdGguc3FydChE
KTsKKyAgICAgICAgICAgIGluZm8ucG9zaXRpb24gPSBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJv
dG90eXBlLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJheS5wb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF5
LmRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLmRpc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgICAgICAgICBpbmZvLm5vcm1hbCA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5w
cm90b3R5cGUuc3VidHJhY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm8ucG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMucG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApLm5vcm1hbGl6ZSgpOworCisgICAgICAgICAgICBpbmZvLmNvbG9yID0gdGhpcy5t
YXRlcmlhbC5nZXRDb2xvcigwLDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5m
by5pc0hpdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmZvOworICAgIH0s
CisKKyAgICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuICdTcGhlcmUg
W3Bvc2l0aW9uPScgKyB0aGlzLnBvc2l0aW9uICsgJywgcmFkaXVzPScgKyB0aGlzLnJhZGl1cyAr
ICddJzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9m
KEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5
VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKK2lmKHR5cGVvZihG
bG9nLlJheVRyYWNlci5TaGFwZSkgPT0gJ3VuZGVmaW5lZCcpIEZsb2cuUmF5VHJhY2VyLlNoYXBl
ID0ge307CisKK0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlBsYW5lID0gQ2xhc3MuY3JlYXRlKCk7CisK
K0Zsb2cuUmF5VHJhY2VyLlNoYXBlLlBsYW5lLnByb3RvdHlwZSA9IHsKKyAgICBkOiAwLjAsCisK
KyAgICBpbml0aWFsaXplIDogZnVuY3Rpb24ocG9zLCBkLCBtYXRlcmlhbCkgeworICAgICAgICB0
aGlzLnBvc2l0aW9uID0gcG9zOworICAgICAgICB0aGlzLmQgPSBkOworICAgICAgICB0aGlzLm1h
dGVyaWFsID0gbWF0ZXJpYWw7CisgICAgfSwKKworICAgIGludGVyc2VjdDogZnVuY3Rpb24ocmF5
KXsKKyAgICAgICAgdmFyIGluZm8gPSBuZXcgRmxvZy5SYXlUcmFjZXIuSW50ZXJzZWN0aW9uSW5m
bygpOworCisgICAgICAgIHZhciBWZCA9IHRoaXMucG9zaXRpb24uZG90KHJheS5kaXJlY3Rpb24p
OworICAgICAgICBpZihWZCA9PSAwKSByZXR1cm4gaW5mbzsgLy8gbm8gaW50ZXJzZWN0aW9uCisK
KyAgICAgICAgdmFyIHQgPSAtKHRoaXMucG9zaXRpb24uZG90KHJheS5wb3NpdGlvbikgKyB0aGlz
LmQpIC8gVmQ7CisgICAgICAgIGlmKHQgPD0gMCkgcmV0dXJuIGluZm87CisKKyAgICAgICAgaW5m
by5zaGFwZSA9IHRoaXM7CisgICAgICAgIGluZm8uaXNIaXQgPSB0cnVlOworICAgICAgICBpbmZv
LnBvc2l0aW9uID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5hZGQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJheS5wb3NpdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIuVmVj
dG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJheS5kaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOworICAgICAgICBpbmZvLm5vcm1hbCA9IHRoaXMucG9zaXRpb247CisgICAgICAgIGlu
Zm8uZGlzdGFuY2UgPSB0OworCisgICAgICAgIGlmKHRoaXMubWF0ZXJpYWwuaGFzVGV4dHVyZSl7
CisgICAgICAgICAgICB2YXIgdlUgPSBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKHRoaXMucG9z
aXRpb24ueSwgdGhpcy5wb3NpdGlvbi56LCAtdGhpcy5wb3NpdGlvbi54KTsKKyAgICAgICAgICAg
IHZhciB2ViA9IHZVLmNyb3NzKHRoaXMucG9zaXRpb24pOworICAgICAgICAgICAgdmFyIHUgPSBp
bmZvLnBvc2l0aW9uLmRvdCh2VSk7CisgICAgICAgICAgICB2YXIgdiA9IGluZm8ucG9zaXRpb24u
ZG90KHZWKTsKKyAgICAgICAgICAgIGluZm8uY29sb3IgPSB0aGlzLm1hdGVyaWFsLmdldENvbG9y
KHUsdik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbmZvLmNvbG9yID0gdGhpcy5t
YXRlcmlhbC5nZXRDb2xvcigwLDApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluZm87
CisgICAgfSwKKworICAgIHRvU3RyaW5nIDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4g
J1BsYW5lIFsnICsgdGhpcy5wb3NpdGlvbiArICcsIGQ9JyArIHRoaXMuZCArICddJzsKKyAgICB9
Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1
bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAn
dW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuSW50ZXJz
ZWN0aW9uSW5mbyA9IENsYXNzLmNyZWF0ZSgpOworCitGbG9nLlJheVRyYWNlci5JbnRlcnNlY3Rp
b25JbmZvLnByb3RvdHlwZSA9IHsKKyAgICBpc0hpdDogZmFsc2UsCisgICAgaGl0Q291bnQ6IDAs
CisgICAgc2hhcGU6IG51bGwsCisgICAgcG9zaXRpb246IG51bGwsCisgICAgbm9ybWFsOiBudWxs
LAorICAgIGNvbG9yOiBudWxsLAorICAgIGRpc3RhbmNlOiBudWxsLAorCisgICAgaW5pdGlhbGl6
ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLmNvbG9yID0gbmV3IEZsb2cuUmF5VHJhY2Vy
LkNvbG9yKDAsMCwwKTsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHJldHVybiAnSW50ZXJzZWN0aW9uIFsnICsgdGhpcy5wb3NpdGlvbiArICddJzsKKyAg
ICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVzcGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09
ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9OworaWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9
PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIgPSB7fTsKKworRmxvZy5SYXlUcmFjZXIuQ2Ft
ZXJhID0gQ2xhc3MuY3JlYXRlKCk7CisKK0Zsb2cuUmF5VHJhY2VyLkNhbWVyYS5wcm90b3R5cGUg
PSB7CisgICAgcG9zaXRpb246IG51bGwsCisgICAgbG9va0F0OiBudWxsLAorICAgIGVxdWF0b3I6
IG51bGwsCisgICAgdXA6IG51bGwsCisgICAgc2NyZWVuOiBudWxsLAorCisgICAgaW5pdGlhbGl6
ZSA6IGZ1bmN0aW9uKHBvcywgbG9va0F0LCB1cCkgeworICAgICAgICB0aGlzLnBvc2l0aW9uID0g
cG9zOworICAgICAgICB0aGlzLmxvb2tBdCA9IGxvb2tBdDsKKyAgICAgICAgdGhpcy51cCA9IHVw
OworICAgICAgICB0aGlzLmVxdWF0b3IgPSBsb29rQXQubm9ybWFsaXplKCkuY3Jvc3ModGhpcy51
cCk7CisgICAgICAgIHRoaXMuc2NyZWVuID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlw
ZS5hZGQodGhpcy5wb3NpdGlvbiwgdGhpcy5sb29rQXQpOworICAgIH0sCisKKyAgICBnZXRSYXk6
IGZ1bmN0aW9uKHZ4LCB2eSl7CisgICAgICAgIHZhciBwb3MgPSBGbG9nLlJheVRyYWNlci5WZWN0
b3IucHJvdG90eXBlLnN1YnRyYWN0KAorICAgICAgICAgICAgdGhpcy5zY3JlZW4sCisgICAgICAg
ICAgICBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAorICAgICAgICAg
ICAgICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIodGhp
cy5lcXVhdG9yLCB2eCksCisgICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnBy
b3RvdHlwZS5tdWx0aXBseVNjYWxhcih0aGlzLnVwLCB2eSkKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKTsKKyAgICAgICAgcG9zLnkgPSBwb3MueSAqIC0xOworICAgICAgICB2YXIgZGlyID0gRmxv
Zy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAgICAgIHBvcywK
KyAgICAgICAgICAgIHRoaXMucG9zaXRpb24KKyAgICAgICAgKTsKKworICAgICAgICB2YXIgcmF5
ID0gbmV3IEZsb2cuUmF5VHJhY2VyLlJheShwb3MsIGRpci5ub3JtYWxpemUoKSk7CisKKyAgICAg
ICAgcmV0dXJuIHJheTsKKyAgICB9LAorCisgICAgdG9TdHJpbmcgOiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHJldHVybiAnUmF5IFtdJzsKKyAgICB9Cit9CisvKiBGYWtlIGEgRmxvZy4qIG5hbWVz
cGFjZSAqLworaWYodHlwZW9mKEZsb2cpID09ICd1bmRlZmluZWQnKSB2YXIgRmxvZyA9IHt9Owor
aWYodHlwZW9mKEZsb2cuUmF5VHJhY2VyKSA9PSAndW5kZWZpbmVkJykgRmxvZy5SYXlUcmFjZXIg
PSB7fTsKKworRmxvZy5SYXlUcmFjZXIuQmFja2dyb3VuZCA9IENsYXNzLmNyZWF0ZSgpOworCitG
bG9nLlJheVRyYWNlci5CYWNrZ3JvdW5kLnByb3RvdHlwZSA9IHsKKyAgICBjb2xvciA6IG51bGws
CisgICAgYW1iaWVuY2UgOiAwLjAsCisKKyAgICBpbml0aWFsaXplIDogZnVuY3Rpb24oY29sb3Is
IGFtYmllbmNlKSB7CisgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgdGhpcy5h
bWJpZW5jZSA9IGFtYmllbmNlOworICAgIH0KK30KKy8qIEZha2UgYSBGbG9nLiogbmFtZXNwYWNl
ICovCitpZih0eXBlb2YoRmxvZykgPT0gJ3VuZGVmaW5lZCcpIHZhciBGbG9nID0ge307CitpZih0
eXBlb2YoRmxvZy5SYXlUcmFjZXIpID09ICd1bmRlZmluZWQnKSBGbG9nLlJheVRyYWNlciA9IHt9
OworCitGbG9nLlJheVRyYWNlci5FbmdpbmUgPSBDbGFzcy5jcmVhdGUoKTsKKworRmxvZy5SYXlU
cmFjZXIuRW5naW5lLnByb3RvdHlwZSA9IHsKKyAgICBjYW52YXM6IG51bGwsIC8qIDJkIGNvbnRl
eHQgd2UgY2FuIHJlbmRlciB0byAqLworCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9u
cyl7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5leHRlbmQoeworICAgICAgICAgICAg
ICAgIGNhbnZhc0hlaWdodDogMTAwLAorICAgICAgICAgICAgICAgIGNhbnZhc1dpZHRoOiAxMDAs
CisgICAgICAgICAgICAgICAgcGl4ZWxXaWR0aDogMiwKKyAgICAgICAgICAgICAgICBwaXhlbEhl
aWdodDogMiwKKyAgICAgICAgICAgICAgICByZW5kZXJEaWZmdXNlOiBmYWxzZSwKKyAgICAgICAg
ICAgICAgICByZW5kZXJTaGFkb3dzOiBmYWxzZSwKKyAgICAgICAgICAgICAgICByZW5kZXJIaWdo
bGlnaHRzOiBmYWxzZSwKKyAgICAgICAgICAgICAgICByZW5kZXJSZWZsZWN0aW9uczogZmFsc2Us
CisgICAgICAgICAgICAgICAgcmF5RGVwdGg6IDIKKyAgICAgICAgICAgIH0sIG9wdGlvbnMgfHwg
e30pOworCisgICAgICAgIHRoaXMub3B0aW9ucy5jYW52YXNIZWlnaHQgLz0gdGhpcy5vcHRpb25z
LnBpeGVsSGVpZ2h0OworICAgICAgICB0aGlzLm9wdGlvbnMuY2FudmFzV2lkdGggLz0gdGhpcy5v
cHRpb25zLnBpeGVsV2lkdGg7CisKKyAgICAgICAgLyogVE9ETzogZHluYW1pY2FsbHkgaW5jbHVk
ZSBvdGhlciBzY3JpcHRzICovCisgICAgfSwKKworICAgIHNldFBpeGVsOiBmdW5jdGlvbih4LCB5
LCBjb2xvcil7CisgICAgICAgIHZhciBweFcsIHB4SDsKKyAgICAgICAgcHhXID0gdGhpcy5vcHRp
b25zLnBpeGVsV2lkdGg7CisgICAgICAgIHB4SCA9IHRoaXMub3B0aW9ucy5waXhlbEhlaWdodDsK
KworICAgICAgICBpZiAodGhpcy5jYW52YXMpIHsKKyAgICAgICAgICB0aGlzLmNhbnZhcy5maWxs
U3R5bGUgPSBjb2xvci50b1N0cmluZygpOworICAgICAgICAgIHRoaXMuY2FudmFzLmZpbGxSZWN0
ICh4ICogcHhXLCB5ICogcHhILCBweFcsIHB4SCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgaWYgKHggPT09ICB5KSB7CisgICAgICAgICAgICBjaGVja051bWJlciArPSBjb2xvci5icmln
aHRuZXNzKCk7CisgICAgICAgICAgfQorICAgICAgICAgIC8vIHByaW50KHggKiBweFcsIHkgKiBw
eEgsIHB4VywgcHhIKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZW5kZXJTY2VuZTogZnVu
Y3Rpb24oc2NlbmUsIGNhbnZhcyl7CisgICAgICAgIGNoZWNrTnVtYmVyID0gMDsKKyAgICAgICAg
LyogR2V0IGNhbnZhcyAqLworICAgICAgICBpZiAoY2FudmFzKSB7CisgICAgICAgICAgdGhpcy5j
YW52YXMgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICB0aGlzLmNhbnZhcyA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY2FudmFz
SGVpZ2h0ID0gdGhpcy5vcHRpb25zLmNhbnZhc0hlaWdodDsKKyAgICAgICAgdmFyIGNhbnZhc1dp
ZHRoID0gdGhpcy5vcHRpb25zLmNhbnZhc1dpZHRoOworCisgICAgICAgIGZvcih2YXIgeT0wOyB5
IDwgY2FudmFzSGVpZ2h0OyB5KyspeworICAgICAgICAgICAgZm9yKHZhciB4PTA7IHggPCBjYW52
YXNXaWR0aDsgeCsrKXsKKyAgICAgICAgICAgICAgICB2YXIgeXAgPSB5ICogMS4wIC8gY2FudmFz
SGVpZ2h0ICogMiAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHAgPSB4ICogMS4w
IC8gY2FudmFzV2lkdGggKiAyIC0gMTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJh
eSA9IHNjZW5lLmNhbWVyYS5nZXRSYXkoeHAsIHlwKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNvbG9yID0gdGhpcy5nZXRQaXhlbENvbG9yKHJheSwgc2NlbmUpOworCisgICAgICAg
ICAgICAgICAgdGhpcy5zZXRQaXhlbCh4LCB5LCBjb2xvcik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNoZWNrTnVtYmVyICE9PSAyMzIxKSB7CisgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJTY2VuZSByZW5kZXJlZCBpbmNvcnJlY3RseSIpOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIGdldFBpeGVsQ29sb3I6IGZ1bmN0aW9uKHJheSwgc2NlbmUpeworICAgICAg
ICB2YXIgaW5mbyA9IHRoaXMudGVzdEludGVyc2VjdGlvbihyYXksIHNjZW5lLCBudWxsKTsKKyAg
ICAgICAgaWYoaW5mby5pc0hpdCl7CisgICAgICAgICAgICB2YXIgY29sb3IgPSB0aGlzLnJheVRy
YWNlKGluZm8sIHJheSwgc2NlbmUsIDApOworICAgICAgICAgICAgcmV0dXJuIGNvbG9yOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBzY2VuZS5iYWNrZ3JvdW5kLmNvbG9yOworICAgIH0sCisK
KyAgICB0ZXN0SW50ZXJzZWN0aW9uOiBmdW5jdGlvbihyYXksIHNjZW5lLCBleGNsdWRlKXsKKyAg
ICAgICAgdmFyIGhpdHMgPSAwOworICAgICAgICB2YXIgYmVzdCA9IG5ldyBGbG9nLlJheVRyYWNl
ci5JbnRlcnNlY3Rpb25JbmZvKCk7CisgICAgICAgIGJlc3QuZGlzdGFuY2UgPSAyMDAwOworCisg
ICAgICAgIGZvcih2YXIgaT0wOyBpPHNjZW5lLnNoYXBlcy5sZW5ndGg7IGkrKyl7CisgICAgICAg
ICAgICB2YXIgc2hhcGUgPSBzY2VuZS5zaGFwZXNbaV07CisKKyAgICAgICAgICAgIGlmKHNoYXBl
ICE9IGV4Y2x1ZGUpeworICAgICAgICAgICAgICAgIHZhciBpbmZvID0gc2hhcGUuaW50ZXJzZWN0
KHJheSk7CisgICAgICAgICAgICAgICAgaWYoaW5mby5pc0hpdCAmJiBpbmZvLmRpc3RhbmNlID49
IDAgJiYgaW5mby5kaXN0YW5jZSA8IGJlc3QuZGlzdGFuY2UpeworICAgICAgICAgICAgICAgICAg
ICBiZXN0ID0gaW5mbzsKKyAgICAgICAgICAgICAgICAgICAgaGl0cysrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiZXN0LmhpdENvdW50ID0g
aGl0czsKKyAgICAgICAgcmV0dXJuIGJlc3Q7CisgICAgfSwKKworICAgIGdldFJlZmxlY3Rpb25S
YXk6IGZ1bmN0aW9uKFAsTixWKXsKKyAgICAgICAgdmFyIGMxID0gLU4uZG90KFYpOworICAgICAg
ICB2YXIgUjEgPSBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLmFkZCgKKyAgICAgICAg
ICAgIEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIoTiwgMipj
MSksCisgICAgICAgICAgICBWCisgICAgICAgICk7CisgICAgICAgIHJldHVybiBuZXcgRmxvZy5S
YXlUcmFjZXIuUmF5KFAsIFIxKTsKKyAgICB9LAorCisgICAgcmF5VHJhY2U6IGZ1bmN0aW9uKGlu
Zm8sIHJheSwgc2NlbmUsIGRlcHRoKXsKKyAgICAgICAgLy8gQ2FsYyBhbWJpZW50CisgICAgICAg
IHZhciBjb2xvciA9IEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxh
cihpbmZvLmNvbG9yLCBzY2VuZS5iYWNrZ3JvdW5kLmFtYmllbmNlKTsKKyAgICAgICAgdmFyIG9s
ZENvbG9yID0gY29sb3I7CisgICAgICAgIHZhciBzaGluaW5lc3MgPSBNYXRoLnBvdygxMCwgaW5m
by5zaGFwZS5tYXRlcmlhbC5nbG9zcyArIDEpOworCisgICAgICAgIGZvcih2YXIgaT0wOyBpPHNj
ZW5lLmxpZ2h0cy5sZW5ndGg7IGkrKyl7CisgICAgICAgICAgICB2YXIgbGlnaHQgPSBzY2VuZS5s
aWdodHNbaV07CisKKyAgICAgICAgICAgIC8vIENhbGMgZGlmZnVzZSBsaWdodGluZworICAgICAg
ICAgICAgdmFyIHYgPSBGbG9nLlJheVRyYWNlci5WZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWdodC5wb3NpdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5wb3NpdGlvbgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkubm9ybWFsaXplKCk7CisKKyAgICAgICAgICAgIGlmKHRoaXMub3B0aW9ucy5y
ZW5kZXJEaWZmdXNlKXsKKyAgICAgICAgICAgICAgICB2YXIgTCA9IHYuZG90KGluZm8ubm9ybWFs
KTsKKyAgICAgICAgICAgICAgICBpZihMID4gMC4wKXsKKyAgICAgICAgICAgICAgICAgICAgY29s
b3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUuYWRkKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5tdWx0aXBseSgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5jb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFj
ZXIuQ29sb3IucHJvdG90eXBlLm11bHRpcGx5U2NhbGFyKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHQuY29sb3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGdyZWF0ZXIg
dGhlIGRlcHRoIHRoZSBtb3JlIGFjY3VyYXRlIHRoZSBjb2xvdXJzLCBidXQKKyAgICAgICAgICAg
IC8vIHRoaXMgaXMgZXhwb25lbnRpYWxseSAoISkgZXhwZW5zaXZlCisgICAgICAgICAgICBpZihk
ZXB0aCA8PSB0aGlzLm9wdGlvbnMucmF5RGVwdGgpeworICAgICAgICAgIC8vIGNhbGN1bGF0ZSBy
ZWZsZWN0aW9uIHJheQorICAgICAgICAgIGlmKHRoaXMub3B0aW9ucy5yZW5kZXJSZWZsZWN0aW9u
cyAmJiBpbmZvLnNoYXBlLm1hdGVyaWFsLnJlZmxlY3Rpb24gPiAwKQorICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgdmFyIHJlZmxlY3Rpb25SYXkgPSB0aGlzLmdldFJlZmxlY3Rpb25SYXkoaW5m
by5wb3NpdGlvbiwgaW5mby5ub3JtYWwsIHJheS5kaXJlY3Rpb24pOworICAgICAgICAgICAgICB2
YXIgcmVmbCA9IHRoaXMudGVzdEludGVyc2VjdGlvbihyZWZsZWN0aW9uUmF5LCBzY2VuZSwgaW5m
by5zaGFwZSk7CisKKyAgICAgICAgICAgICAgaWYgKHJlZmwuaXNIaXQgJiYgcmVmbC5kaXN0YW5j
ZSA+IDApeworICAgICAgICAgICAgICAgICAgcmVmbC5jb2xvciA9IHRoaXMucmF5VHJhY2UocmVm
bCwgcmVmbGVjdGlvblJheSwgc2NlbmUsIGRlcHRoICsgMSk7CisgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICByZWZsLmNvbG9yID0gc2NlbmUuYmFja2dyb3VuZC5jb2xv
cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgY29sb3Ig
PSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUuYmxlbmQoCisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICByZWZsLmNvbG9yLAorICAgICAgICAgICAg
ICAgICAgICBpbmZvLnNoYXBlLm1hdGVyaWFsLnJlZmxlY3Rpb24KKyAgICAgICAgICAgICAgICAg
ICk7CisgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gUmVmcmFjdGlvbgorICAgICAg
ICAgICAgICAgIC8qIFRPRE8gKi8KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUmVu
ZGVyIHNoYWRvd3MgYW5kIGhpZ2hsaWdodHMgKi8KKworICAgICAgICAgICAgdmFyIHNoYWRvd0lu
Zm8gPSBuZXcgRmxvZy5SYXlUcmFjZXIuSW50ZXJzZWN0aW9uSW5mbygpOworCisgICAgICAgICAg
ICBpZih0aGlzLm9wdGlvbnMucmVuZGVyU2hhZG93cyl7CisgICAgICAgICAgICAgICAgdmFyIHNo
YWRvd1JheSA9IG5ldyBGbG9nLlJheVRyYWNlci5SYXkoaW5mby5wb3NpdGlvbiwgdik7CisKKyAg
ICAgICAgICAgICAgICBzaGFkb3dJbmZvID0gdGhpcy50ZXN0SW50ZXJzZWN0aW9uKHNoYWRvd1Jh
eSwgc2NlbmUsIGluZm8uc2hhcGUpOworICAgICAgICAgICAgICAgIGlmKHNoYWRvd0luZm8uaXNI
aXQgJiYgc2hhZG93SW5mby5zaGFwZSAhPSBpbmZvLnNoYXBlIC8qJiYgc2hhZG93SW5mby5zaGFw
ZS50eXBlICE9ICdQTEFORScqLyl7CisgICAgICAgICAgICAgICAgICAgIHZhciB2QSA9IEZsb2cu
UmF5VHJhY2VyLkNvbG9yLnByb3RvdHlwZS5tdWx0aXBseVNjYWxhcihjb2xvciwgMC41KTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGRCID0gKDAuNSAqIE1hdGgucG93KHNoYWRvd0luZm8uc2hh
cGUubWF0ZXJpYWwudHJhbnNwYXJlbmN5LCAwLjUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29s
b3IgPSBGbG9nLlJheVRyYWNlci5Db2xvci5wcm90b3R5cGUuYWRkU2NhbGFyKHZBLGRCKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgIC8vIFBob25nIHNwZWN1bGFy
IGhpZ2hsaWdodHMKKyAgICAgIGlmKHRoaXMub3B0aW9ucy5yZW5kZXJIaWdobGlnaHRzICYmICFz
aGFkb3dJbmZvLmlzSGl0ICYmIGluZm8uc2hhcGUubWF0ZXJpYWwuZ2xvc3MgPiAwKXsKKyAgICAg
ICAgdmFyIEx2ID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnNoYXBlLnBvc2l0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAg
ICApLm5vcm1hbGl6ZSgpOworCisgICAgICAgIHZhciBFID0gRmxvZy5SYXlUcmFjZXIuVmVjdG9y
LnByb3RvdHlwZS5zdWJ0cmFjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2VuZS5j
YW1lcmEucG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5zaGFwZS5w
b3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKS5ub3JtYWxpemUoKTsKKworICAgICAg
ICB2YXIgSCA9IEZsb2cuUmF5VHJhY2VyLlZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
dgorICAgICAgICAgICAgICAgICAgICAgICAgKS5ub3JtYWxpemUoKTsKKworICAgICAgICB2YXIg
Z2xvc3NXZWlnaHQgPSBNYXRoLnBvdyhNYXRoLm1heChpbmZvLm5vcm1hbC5kb3QoSCksIDApLCBz
aGluaW5lc3MpOworICAgICAgICBjb2xvciA9IEZsb2cuUmF5VHJhY2VyLkNvbG9yLnByb3RvdHlw
ZS5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvZy5SYXlUcmFjZXIuQ29sb3Iu
cHJvdG90eXBlLm11bHRpcGx5U2NhbGFyKGxpZ2h0LmNvbG9yLCBnbG9zc1dlaWdodCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29sb3IubGltaXQoKTsKKyAgICAgICAgcmV0
dXJuIGNvbG9yOworICAgIH0KK307CisKKworZnVuY3Rpb24gcmVuZGVyU2NlbmUoKXsKKyAgICB2
YXIgc2NlbmUgPSBuZXcgRmxvZy5SYXlUcmFjZXIuU2NlbmUoKTsKKworICAgIHNjZW5lLmNhbWVy
YSA9IG5ldyBGbG9nLlJheVRyYWNlci5DYW1lcmEoCisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKDAsIDAsIC0xNSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKC0wLjIsIDAsIDUpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3RvcigwLCAxLCAwKQorICAgICAgICAg
ICAgICAgICAgICApOworCisgICAgc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBGbG9nLlJheVRyYWNl
ci5CYWNrZ3JvdW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxvZy5S
YXlUcmFjZXIuQ29sb3IoMC41LCAwLjUsIDAuNSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICB2YXIgc3Bo
ZXJlID0gbmV3IEZsb2cuUmF5VHJhY2VyLlNoYXBlLlNwaGVyZSgKKyAgICAgICAgbmV3IEZsb2cu
UmF5VHJhY2VyLlZlY3RvcigtMS41LCAxLjUsIDIpLAorICAgICAgICAxLjUsCisgICAgICAgIG5l
dyBGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5Tb2xpZCgKKyAgICAgICAgICAgIG5ldyBGbG9nLlJh
eVRyYWNlci5Db2xvcigwLDAuNSwwLjUpLAorICAgICAgICAgICAgMC4zLAorICAgICAgICAgICAg
MC4wLAorICAgICAgICAgICAgMC4wLAorICAgICAgICAgICAgMi4wCisgICAgICAgICkKKyAgICAp
OworCisgICAgdmFyIHNwaGVyZTEgPSBuZXcgRmxvZy5SYXlUcmFjZXIuU2hhcGUuU3BoZXJlKAor
ICAgICAgICBuZXcgRmxvZy5SYXlUcmFjZXIuVmVjdG9yKDEsIDAuMjUsIDEpLAorICAgICAgICAw
LjUsCisgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5Tb2xpZCgKKyAgICAgICAg
ICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xvcigwLjksMC45LDAuOSksCisgICAgICAgICAgICAw
LjEsCisgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAxLjUK
KyAgICAgICAgKQorICAgICk7CisKKyAgICB2YXIgcGxhbmUgPSBuZXcgRmxvZy5SYXlUcmFjZXIu
U2hhcGUuUGxhbmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGbG9nLlJh
eVRyYWNlci5WZWN0b3IoMC4xLCAwLjksIC0wLjUpLm5vcm1hbGl6ZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBGbG9nLlJheVRyYWNlci5NYXRlcmlhbC5DaGVzc2JvYXJkKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDEsMSwxKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGbG9nLlJheVRyYWNlci5Db2xv
cigwLDAsMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisKKyAgICBzY2VuZS5zaGFwZXMucHVzaChwbGFuZSk7CisgICAgc2Nl
bmUuc2hhcGVzLnB1c2goc3BoZXJlKTsKKyAgICBzY2VuZS5zaGFwZXMucHVzaChzcGhlcmUxKTsK
KworICAgIHZhciBsaWdodCA9IG5ldyBGbG9nLlJheVRyYWNlci5MaWdodCgKKyAgICAgICAgbmV3
IEZsb2cuUmF5VHJhY2VyLlZlY3Rvcig1LCAxMCwgLTEpLAorICAgICAgICBuZXcgRmxvZy5SYXlU
cmFjZXIuQ29sb3IoMC44LCAwLjgsIDAuOCkKKyAgICApOworCisgICAgdmFyIGxpZ2h0MSA9IG5l
dyBGbG9nLlJheVRyYWNlci5MaWdodCgKKyAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLlZlY3Rv
cigtMywgNSwgLTE1KSwKKyAgICAgICAgbmV3IEZsb2cuUmF5VHJhY2VyLkNvbG9yKDAuOCwgMC44
LCAwLjgpLAorICAgICAgICAxMDAKKyAgICApOworCisgICAgc2NlbmUubGlnaHRzLnB1c2gobGln
aHQpOworICAgIHNjZW5lLmxpZ2h0cy5wdXNoKGxpZ2h0MSk7CisKKyAgICB2YXIgaW1hZ2VXaWR0
aCA9IDEwMDsgLy8gJEYoJ2ltYWdlV2lkdGgnKTsKKyAgICB2YXIgaW1hZ2VIZWlnaHQgPSAxMDA7
IC8vICRGKCdpbWFnZUhlaWdodCcpOworICAgIHZhciBwaXhlbFNpemUgPSAiNSw1Ii5zcGxpdCgn
LCcpOyAvLyAgJEYoJ3BpeGVsU2l6ZScpLnNwbGl0KCcsJyk7CisgICAgdmFyIHJlbmRlckRpZmZ1
c2UgPSB0cnVlOyAvLyAkRigncmVuZGVyRGlmZnVzZScpOworICAgIHZhciByZW5kZXJTaGFkb3dz
ID0gdHJ1ZTsgLy8gJEYoJ3JlbmRlclNoYWRvd3MnKTsKKyAgICB2YXIgcmVuZGVySGlnaGxpZ2h0
cyA9IHRydWU7IC8vICRGKCdyZW5kZXJIaWdobGlnaHRzJyk7CisgICAgdmFyIHJlbmRlclJlZmxl
Y3Rpb25zID0gdHJ1ZTsgLy8gJEYoJ3JlbmRlclJlZmxlY3Rpb25zJyk7CisgICAgdmFyIHJheURl
cHRoID0gMjsvLyRGKCdyYXlEZXB0aCcpOworCisgICAgdmFyIHJheXRyYWNlciA9IG5ldyBGbG9n
LlJheVRyYWNlci5FbmdpbmUoCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbnZhc1dpZHRoOiBp
bWFnZVdpZHRoLAorICAgICAgICAgICAgY2FudmFzSGVpZ2h0OiBpbWFnZUhlaWdodCwKKyAgICAg
ICAgICAgIHBpeGVsV2lkdGg6IHBpeGVsU2l6ZVswXSwKKyAgICAgICAgICAgIHBpeGVsSGVpZ2h0
OiBwaXhlbFNpemVbMV0sCisgICAgICAgICAgICAicmVuZGVyRGlmZnVzZSI6IHJlbmRlckRpZmZ1
c2UsCisgICAgICAgICAgICAicmVuZGVySGlnaGxpZ2h0cyI6IHJlbmRlckhpZ2hsaWdodHMsCisg
ICAgICAgICAgICAicmVuZGVyU2hhZG93cyI6IHJlbmRlclNoYWRvd3MsCisgICAgICAgICAgICAi
cmVuZGVyUmVmbGVjdGlvbnMiOiByZW5kZXJSZWZsZWN0aW9ucywKKyAgICAgICAgICAgICJyYXlE
ZXB0aCI6IHJheURlcHRoCisgICAgICAgIH0KKyAgICApOworCisgICAgcmF5dHJhY2VyLnJlbmRl
clNjZW5lKHNjZW5lLCBudWxsLCAwKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kp
CisgIHJlbmRlclNjZW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3Y4LXJlZ2V4cC1zdHJpY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3Y4LXJlZ2V4cC1zdHJpY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JiODg1MmFlOWQwZmZm
MmM2ZTY0MDVjOGM4YmI0OGFjMjkwYjBiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdjgtcmVnZXhwLXN0cmljdC5qcwpAQCAtMCwwICsxLDE2
MTUgQEAKKyJ1c2Ugc3RyaWN0IjsKKworLy8gQ29weXJpZ2h0IDIwMDkgdGhlIFY4IHByb2plY3Qg
YXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBB
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbiAyMDA5LTAxLTMwLgorCisvLyBUaGlzIGJlbmNobWFy
ayBpcyBnZW5lcmF0ZWQgYnkgbG9hZGluZyA1MCBvZiB0aGUgbW9zdCBwb3B1bGFyIHBhZ2VzCisv
LyBvbiB0aGUgd2ViIGFuZCBsb2dnaW5nIGFsbCByZWdleHAgb3BlcmF0aW9ucyBwZXJmb3JtZWQu
ICBFYWNoCisvLyBvcGVyYXRpb24gaXMgZ2l2ZW4gYSB3ZWlnaHQgdGhhdCBpcyBjYWxjdWxhdGVk
IGZyb20gYW4gZXN0aW1hdGUgb2YKKy8vIHRoZSBwb3B1bGFyaXR5IG9mIHRoZSBwYWdlcyB3aGVy
ZSBpdCBvY2N1cnMgYW5kIHRoZSBudW1iZXIgb2YgdGltZXMKKy8vIGl0IGlzIGV4ZWN1dGVkIHdo
aWxlIGxvYWRpbmcgZWFjaCBwYWdlLiAgRmluYWxseSB0aGUgbGl0ZXJhbAorLy8gbGV0dGVycyBp
biB0aGUgZGF0YSBhcmUgZW5jb2RlZCB1c2luZyBST1QxMyBpbiBhIHdheSB0aGF0IGRvZXMgbm90
CisvLyBhZmZlY3QgaG93IHRoZSByZWdleHBzIG1hdGNoIHRoZWlyIGlucHV0LgorCitmdW5jdGlv
biBydW5SZWdFeHBCZW5jaG1hcmsoKSB7CisgIHZhciByZTAgPSAvXmJhLzsKKyAgdmFyIHJlMSA9
IC8oKChcdyspOlwvXC8pKFteXC86XSopKDooXGQrKSk/KT8oW14jP10qKShcPyhbXiNdKikpPygj
KC4qKSk/LzsKKyAgdmFyIHJlMiA9IC9eXHMqfFxzKiQvZzsKKyAgdmFyIHJlMyA9IC9cYlFCWlBi
YWdlYnlfY3lucHJ1YnlxcmVcYi87CisgIHZhciByZTQgPSAvLC87CisgIHZhciByZTUgPSAvXGJR
QlpQYmFnZWJ5X2N5bnBydWJ5cXJlXGIvZzsKKyAgdmFyIHJlNiA9IC9eW1xzXHhhMF0rfFtcc1x4
YTBdKyQvZzsKKyAgdmFyIHJlNyA9IC8oXGQqKShcRCopL2c7CisgIHZhciByZTggPSAvPS87Cisg
IHZhciByZTkgPSAvKF58XHMpbGh2XC1oKFxzfCQpLzsKKyAgdmFyIHN0cjAgPSAnWmJtdnl5bi81
LjAgKEp2YXFiamY7IEg7IEp2YXFiamYgQUcgNS4xOyByYS1IRikgTmNjeXJKcm9YdmcvNTI4Ljkg
KFhVR1pZLCB5dnhyIFRycHhiKSBQdWVienIvMi4wLjE1Ny4wIEZuc25ldi81MjguOSc7CisgIHZh
ciByZTEwID0gL1wjL2c7CisgIHZhciByZTExID0gL1wuL2c7CisgIHZhciByZTEyID0gLycvZzsK
KyAgdmFyIHJlMTMgPSAvXD9bXHdcV10qKHNldnJhcXZxfHB1bmFhcnl2cXx0ZWJoY3ZxKT0oW15c
Jlw/I10qKS9pOworICB2YXIgc3RyMSA9ICdGdWJweGpuaXIgU3luZnUgOS4wICBlMTE1JzsKKyAg
dmFyIHJlMTQgPSAvXHMrL2c7CisgIHZhciByZTE1ID0gL15ccyooXFMqKFxzK1xTKykqKVxzKiQv
OworICB2YXIgcmUxNiA9IC8oLVthLXpdKS9pOworICBmdW5jdGlvbiBydW5CbG9jazAoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2NTExOyBpKyspIHsKKyAgICAgIHJlMC5leGVjKCdweXZw
eCcpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE4NDQ7IGkrKykgeworICAgICAg
cmUxLmV4ZWMoJ3VnZ2M6Ly9qamouc25wcm9iYngucGJ6L3lidHZhLmN1YycpOworICAgIH0KKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDczOTsgaSsrKSB7CisgICAgICAnUUJaUGJhZ2VieV9jeW5w
cnVieXFyZScucmVwbGFjZShyZTIsICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA1OTg7IGkrKykgeworICAgICAgcmUxLmV4ZWMoJ3VnZ2M6Ly9qamouc25wcm9iYngucGJ6Lycp
OworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ1NDsgaSsrKSB7CisgICAgICByZTEu
ZXhlYygndWdnYzovL2pqai5zbnByb2JieC5wYnovZmVwdS5jdWMnKTsKKyAgICB9CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAzNTI7IGkrKykgeworICAgICAgL3FxcXF8cXFxfHFxfHF8WlpaWnxa
Wlp8Wlp8WnxsbGxsfGxsfGx8dXV8dXxVVXxVfHp6fHp8ZmZ8ZnxnZ3xnfHNzc3xzc3xzfG1tbXxt
bXxtL2cuZXhlYygncXFxcSwgWlpaIHEsIGxsbGwnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAzMTI7IGkrKykgeworICAgICAgcmUzLmV4ZWMoJ3ZhY2hnZ3JrZyBRQlpQYmFnZWJ5
X2N5bnBydWJ5cXJlJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjgyOyBpKysp
IHsKKyAgICAgIHJlNC5leGVjKCcvWmxGY25wclVienJjbnRyL1ZhcXJrLUZ2Z3JVYnpyLDEwMDAw
MDAwJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTc3OyBpKyspIHsKKyAgICAg
ICd2YWNoZ2dya2cnLnJlcGxhY2UocmU1LCAnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTcwOyBpKyspIHsKKyAgICAgICc1MjguOScucmVwbGFjZShyZTYsICcnKTsKKyAgICAg
IHJlNy5leGVjKCc1MjgnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNTY7IGkr
KykgeworICAgICAgcmU4LmV4ZWMoJ1ZDUGh5Z2hlcj1yYS1IRicpOworICAgICAgcmU4LmV4ZWMo
J0NlcnNyZWVycVBoeWdoZXI9cmEtSEYnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxNDQ7IGkrKykgeworICAgICAgcmUwLmV4ZWMoJ3hybGNlcmZmJyk7CisgICAgfQorICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTM5OyBpKyspIHsKKyAgICAgICc1MjEnLnJlcGxhY2UocmU2LCAn
Jyk7CisgICAgICByZTcuZXhlYygnNTIxJyk7CisgICAgICByZTkuZXhlYygnJyk7CisgICAgICAv
SnJvWHZnXC8oXFMrKS8uZXhlYyhzdHIwKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMzc7IGkrKykgeworICAgICAgJ3F2aSAuc29fenJhaCcucmVwbGFjZShyZTEwLCAnJyk7Cisg
ICAgICAncXZpIC5zb196cmFoJy5yZXBsYWNlKC9cWy9nLCAnJyk7CisgICAgICAncXZpLnNvX3py
YWgnLnJlcGxhY2UocmUxMSwgJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEx
NzsgaSsrKSB7CisgICAgICAndXZxcXJhX3J5cnonLnJlcGxhY2UocmUyLCAnJyk7CisgICAgfQor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgOTU7IGkrKykgeworICAgICAgLyg/Ol58OylccypzZXZy
YXFmZ3JlX3luYXQ9KFteO10qKS8uZXhlYygnc2V2cmFxZmdyZV9uYWJhPW52cSUzUW42c3M5cDg1
bjg2OHJvOXMwNTlwbjg1NDczNTk1Nm8zJTI2ZXJzJTNRJTI2ZGYlM1ElMjZ2cGdsJTNRSEYnKTsK
KyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA5MzsgaSsrKSB7CisgICAgICAndWdnYzov
L3VienIuemxmY25wci5wYnovdmFxcmsucHN6Jy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgIHJl
MTMuZXhlYygndWdnYzovL3VienIuemxmY25wci5wYnovdmFxcmsucHN6Jyk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgOTI7IGkrKykgeworICAgICAgc3RyMS5yZXBsYWNlKC8oW2Et
ekEtWl18XHMpKy8sICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4NTsgaSsr
KSB7CisgICAgICAnc3ZlZmcnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3N2ZWZnJy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICd1Z2djOi8vY2Vic3Z5ci56bGZjbnByLnBiei92YXFyay5w
c3onLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgJ3luZmcnLnJlcGxhY2UocmUxNCwgJycpOwor
ICAgICAgJ3luZmcnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgcmUxNi5leGVjKCdxdmZjeW5s
Jyk7CisgICAgICByZTEzLmV4ZWMoJ3VnZ2M6Ly9jZWJzdnlyLnpsZmNucHIucGJ6L3ZhcXJrLnBz
eicpOworICAgIH0KKyAgfQorICB2YXIgcmUxNyA9IC8oXnxbXlxcXSlcIlxcXC9RbmdyXCgoLT9b
MC05XSspXClcXFwvXCIvZzsKKyAgdmFyIHN0cjIgPSAneyJhbnpyIjoiIiwiYWh6b3JlU2Jlem5n
Ijp7IlBoZWVyYXBsUXJwdnpueVF2dHZnZiI6MiwiUGhlZXJhcGxRcnB2em55RnJjbmVuZ2JlIjoi
LiIsIlZmRXJucUJheWwiOmdlaHIsIlBoZWVyYXBsVGViaGNGdm1yZiI6WzNdLCJBaHpvcmVUZWJo
Y0Z2bXJmIjpbM10sIkNyZXByYWdUZWJoY0Z2bXJmIjpbM10sIlBoZWVyYXBsVGViaGNGcmNuZW5n
YmUiOiIsIiwiUGhlZXJhcGxGbHpvYnkiOiJceGE0IiwiQW5BRmx6b2J5IjoiQW5BIiwiUGhlZXJh
cGxBcnRuZ3ZpckNuZ2dyZWEiOjAsIkFoem9yZUFydG5ndmlyQ25nZ3JlYSI6MSwiQ3JlcHJhZ0Ni
ZnZndmlyQ25nZ3JlYSI6MCwiQ3JlcHJhZ0FydG5ndmlyQ25nZ3JlYSI6MCwiQXJ0bmd2aXJWYXN2
YXZnbEZsem9ieSI6Ii1WYXN2YXZnbCIsIkFydG5ndmlyRnZ0YSI6Ii0iLCJBaHpvcmVRcnB2em55
UXZ0dmdmIjoyLCJBaHpvcmVRcnB2em55RnJjbmVuZ2JlIjoiLiIsIkFoem9yZVRlYmhjRnJjbmVu
Z2JlIjoiLCIsIlBoZWVyYXBsQ2Jmdmd2aXJDbmdncmVhIjowLCJDYmZ2Z3ZpclZhc3ZhdmdsRmx6
b2J5IjoiVmFzdmF2Z2wiLCJDYmZ2Z3ZpckZ2dGEiOiIrIiwiQ3JlcHJhZ1FycHZ6bnlRdnR2Z2Yi
OjIsIkNyZXByYWdRcnB2em55RnJjbmVuZ2JlIjoiLiIsIkNyZXByYWdUZWJoY0ZyY25lbmdiZSI6
IiwiLCJDcmVwcmFnRmx6b2J5IjoiJSIsIkNyZVp2eXlyRmx6b2J5IjoiXHUyMDMwIiwiQW5ndmly
UXZ0dmdmIjpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiXSwiUXZ0dmdG
aG9mZ3ZnaGd2YmEiOjF9LCJxbmdyR3Z6clNiZXpuZyI6eyJOWlFyZnZ0YW5nYmUiOiJOWiIsIlBu
eXJhcW5lIjp7Ilp2YUZoY2NiZWdycVFuZ3JHdnpyIjoiQC02MjEzNTU2ODAwMDAwMEAiLCJabmtG
aGNjYmVncnFRbmdyR3Z6ciI6IkAyNTM0MDIzMDA3OTk5OTlAIiwiTnl0YmV2Z3V6R2xjciI6MSwi
UG55cmFxbmVHbGNyIjoxLCJSZW5mIjpbMV0sIkdqYlF2dHZnTHJuZVpuayI6MjAyOSwiVmZFcm5x
QmF5bCI6Z2Vocn0sIlFuZ3JGcmNuZW5nYmUiOiIvIiwiU3ZlZmdRbmxCc0pycngiOjAsIlBueXJh
cW5lSnJyeEVoeXIiOjAsIlNoeXlRbmdyR3Z6ckNuZ2dyZWEiOiJxcXFxLCBxcSBaWlpaIGxsbGwg
VVU6eno6ZmYiLCJZYmF0UW5nckNuZ2dyZWEiOiJxcXFxLCBxcSBaWlpaIGxsbGwiLCJZYmF0R3Z6
ckNuZ2dyZWEiOiJVVTp6ejpmZiIsIlpiYWd1UW5sQ25nZ3JlYSI6IlpaWlogcXEiLCJDWlFyZnZ0
YW5nYmUiOiJDWiIsIkVTUDExMjNDbmdncmVhIjoicXFxLCBxcSBaWlogbGxsbCBVVVwnOlwnenpc
JzpcJ2ZmIFwnVFpHXCciLCJGdWJlZ1FuZ3JDbmdncmVhIjoiWlovcXEvbGxsbCIsIkZ1YmVnR3Z6
ckNuZ2dyZWEiOiJVVTp6eiIsIkZiZWdub3lyUW5nckd2enJDbmdncmVhIjoibGxsbFwnLVwnWlpc
Jy1cJ3FxXCdHXCdVVVwnOlwnenpcJzpcJ2ZmIiwiR3Z6ckZyY25lbmdiZSI6IjoiLCJIYXZpcmVm
bnlGYmVnbm95clFuZ3JHdnpyQ25nZ3JlYSI6ImxsbGxcJy1cJ1paXCctXCdxcSBVVVwnOlwnenpc
JzpcJ2ZmXCdNXCciLCJMcm5lWmJhZ3VDbmdncmVhIjoibGxsbCBaWlpaIiwiTm9vZXJpdm5ncnFR
bmxBbnpyZiI6WyJGaGEiLCJaYmEiLCJHaHIiLCJKcnEiLCJHdWgiLCJTZXYiLCJGbmciXSwiRnVi
ZWdyZmdRbmxBbnpyZiI6WyJGaCIsIlpiIiwiR2giLCJKciIsIkd1IiwiU2UiLCJGbiJdLCJRbmxB
bnpyZiI6WyJGaGFxbmwiLCJaYmFxbmwiLCJHaHJmcW5sIiwiSnJxYXJmcW5sIiwiR3VoZWZxbmwi
LCJTZXZxbmwiLCJGbmdoZXFubCJdLCJOb29lcml2bmdycVpiYWd1QW56cmYiOlsiV25hIiwiU3Jv
IiwiWm5lIiwiTmNlIiwiWm5sIiwiV2hhIiwiV2h5IiwiTmh0IiwiRnJjIiwiQnBnIiwiQWJpIiwi
UXJwIiwiIl0sIlpiYWd1QW56cmYiOlsiV25haG5lbCIsIlNyb2VobmVsIiwiWm5lcHUiLCJOY2V2
eSIsIlpubCIsIldoYXIiLCJXaHlsIiwiTmh0aGZnIiwiRnJjZ3J6b3JlIiwiQnBnYm9yZSIsIkFi
aXJ6b3JlIiwiUXJwcnpvcmUiLCIiXSwiVmZFcm5xQmF5bCI6Z2VociwiQW5ndmlyUG55cmFxbmVB
bnpyIjoiVGVydGJldm5hIFBueXJhcW5lIiwiTm9vZXJpdm5ncnFaYmFndVRyYXZndmlyQW56cmYi
OlsiV25hIiwiU3JvIiwiWm5lIiwiTmNlIiwiWm5sIiwiV2hhIiwiV2h5IiwiTmh0IiwiRnJjIiwi
QnBnIiwiQWJpIiwiUXJwIiwiIl0sIlpiYWd1VHJhdmd2aXJBbnpyZiI6WyJXbmFobmVsIiwiU3Jv
ZWhuZWwiLCJabmVwdSIsIk5jZXZ5IiwiWm5sIiwiV2hhciIsIldoeWwiLCJOaHRoZmciLCJGcmNn
cnpvcmUiLCJCcGdib3JlIiwiQWJpcnpvcmUiLCJRcnByem9yZSIsIiJdfX0nOworICB2YXIgc3Ry
MyA9ICd7ImFuenIiOiJyYS1IRiIsImFoem9yZVNiZXpuZyI6eyJQaGVlcmFwbFFycHZ6bnlRdnR2
Z2YiOjIsIlBoZWVyYXBsUXJwdnpueUZyY25lbmdiZSI6Ii4iLCJWZkVybnFCYXlsIjpzbnlmciwi
UGhlZXJhcGxUZWJoY0Z2bXJmIjpbM10sIkFoem9yZVRlYmhjRnZtcmYiOlszXSwiQ3JlcHJhZ1Rl
YmhjRnZtcmYiOlszXSwiUGhlZXJhcGxUZWJoY0ZyY25lbmdiZSI6IiwiLCJQaGVlcmFwbEZsem9i
eSI6IiQiLCJBbkFGbHpvYnkiOiJBbkEiLCJQaGVlcmFwbEFydG5ndmlyQ25nZ3JlYSI6MCwiQWh6
b3JlQXJ0bmd2aXJDbmdncmVhIjoxLCJDcmVwcmFnQ2Jmdmd2aXJDbmdncmVhIjowLCJDcmVwcmFn
QXJ0bmd2aXJDbmdncmVhIjowLCJBcnRuZ3ZpclZhc3ZhdmdsRmx6b2J5IjoiLVZhc3ZhdmdsIiwi
QXJ0bmd2aXJGdnRhIjoiLSIsIkFoem9yZVFycHZ6bnlRdnR2Z2YiOjIsIkFoem9yZVFycHZ6bnlG
cmNuZW5nYmUiOiIuIiwiQWh6b3JlVGViaGNGcmNuZW5nYmUiOiIsIiwiUGhlZXJhcGxDYmZ2Z3Zp
ckNuZ2dyZWEiOjAsIkNiZnZndmlyVmFzdmF2Z2xGbHpvYnkiOiJWYXN2YXZnbCIsIkNiZnZndmly
RnZ0YSI6IisiLCJDcmVwcmFnUXJwdnpueVF2dHZnZiI6MiwiQ3JlcHJhZ1FycHZ6bnlGcmNuZW5n
YmUiOiIuIiwiQ3JlcHJhZ1RlYmhjRnJjbmVuZ2JlIjoiLCIsIkNyZXByYWdGbHpvYnkiOiIlIiwi
Q3JlWnZ5eXJGbHpvYnkiOiJcdTIwMzAiLCJBbmd2aXJRdnR2Z2YiOlsiMCIsIjEiLCIyIiwiMyIs
IjQiLCI1IiwiNiIsIjciLCI4IiwiOSJdLCJRdnR2Z0Zob2ZndmdoZ3ZiYSI6MX0sInFuZ3JHdnpy
U2Jlem5nIjp7Ik5aUXJmdnRhbmdiZSI6Ik5aIiwiUG55cmFxbmUiOnsiWnZhRmhjY2JlZ3JxUW5n
ckd2enIiOiJALTYyMTM1NTY4MDAwMDAwQCIsIlpua0ZoY2NiZWdycVFuZ3JHdnpyIjoiQDI1MzQw
MjMwMDc5OTk5OUAiLCJOeXRiZXZndXpHbGNyIjoxLCJQbnlyYXFuZUdsY3IiOjEsIlJlbmYiOlsx
XSwiR2piUXZ0dmdMcm5lWm5rIjoyMDI5LCJWZkVybnFCYXlsIjpzbnlmcn0sIlFuZ3JGcmNuZW5n
YmUiOiIvIiwiU3ZlZmdRbmxCc0pycngiOjAsIlBueXJhcW5lSnJyeEVoeXIiOjAsIlNoeXlRbmdy
R3Z6ckNuZ2dyZWEiOiJxcXFxLCBaWlpaIHFxLCBsbGxsIHU6eno6ZmYgZ2ciLCJZYmF0UW5nckNu
Z2dyZWEiOiJxcXFxLCBaWlpaIHFxLCBsbGxsIiwiWWJhdEd2enJDbmdncmVhIjoidTp6ejpmZiBn
ZyIsIlpiYWd1UW5sQ25nZ3JlYSI6IlpaWlogcXEiLCJDWlFyZnZ0YW5nYmUiOiJDWiIsIkVTUDEx
MjNDbmdncmVhIjoicXFxLCBxcSBaWlogbGxsbCBVVVwnOlwnenpcJzpcJ2ZmIFwnVFpHXCciLCJG
dWJlZ1FuZ3JDbmdncmVhIjoiWi9xL2xsbGwiLCJGdWJlZ0d2enJDbmdncmVhIjoidTp6eiBnZyIs
IkZiZWdub3lyUW5nckd2enJDbmdncmVhIjoibGxsbFwnLVwnWlpcJy1cJ3FxXCdHXCdVVVwnOlwn
enpcJzpcJ2ZmIiwiR3Z6ckZyY25lbmdiZSI6IjoiLCJIYXZpcmVmbnlGYmVnbm95clFuZ3JHdnpy
Q25nZ3JlYSI6ImxsbGxcJy1cJ1paXCctXCdxcSBVVVwnOlwnenpcJzpcJ2ZmXCdNXCciLCJMcm5l
WmJhZ3VDbmdncmVhIjoiWlpaWiwgbGxsbCIsIk5vb2VyaXZuZ3JxUW5sQW56cmYiOlsiRmhhIiwi
WmJhIiwiR2hyIiwiSnJxIiwiR3VoIiwiU2V2IiwiRm5nIl0sIkZ1YmVncmZnUW5sQW56cmYiOlsi
RmgiLCJaYiIsIkdoIiwiSnIiLCJHdSIsIlNlIiwiRm4iXSwiUW5sQW56cmYiOlsiRmhhcW5sIiwi
WmJhcW5sIiwiR2hyZnFubCIsIkpycWFyZnFubCIsIkd1aGVmcW5sIiwiU2V2cW5sIiwiRm5naGVx
bmwiXSwiTm9vZXJpdm5ncnFaYmFndUFuenJmIjpbIlduYSIsIlNybyIsIlpuZSIsIk5jZSIsIlpu
bCIsIldoYSIsIldoeSIsIk5odCIsIkZyYyIsIkJwZyIsIkFiaSIsIlFycCIsIiJdLCJaYmFndUFu
enJmIjpbIlduYWhuZWwiLCJTcm9laG5lbCIsIlpuZXB1IiwiTmNldnkiLCJabmwiLCJXaGFyIiwi
V2h5bCIsIk5odGhmZyIsIkZyY2dyem9yZSIsIkJwZ2JvcmUiLCJBYmlyem9yZSIsIlFycHJ6b3Jl
IiwiIl0sIlZmRXJucUJheWwiOnNueWZyLCJBbmd2aXJQbnlyYXFuZUFuenIiOiJUZXJ0YmV2bmEg
UG55cmFxbmUiLCJOb29lcml2bmdycVpiYWd1VHJhdmd2aXJBbnpyZiI6WyJXbmEiLCJTcm8iLCJa
bmUiLCJOY2UiLCJabmwiLCJXaGEiLCJXaHkiLCJOaHQiLCJGcmMiLCJCcGciLCJBYmkiLCJRcnAi
LCIiXSwiWmJhZ3VUcmF2Z3ZpckFuenJmIjpbIlduYWhuZWwiLCJTcm9laG5lbCIsIlpuZXB1Iiwi
TmNldnkiLCJabmwiLCJXaGFyIiwiV2h5bCIsIk5odGhmZyIsIkZyY2dyem9yZSIsIkJwZ2JvcmUi
LCJBYmlyem9yZSIsIlFycHJ6b3JlIiwiIl19fSc7CisgIHZhciBzdHI0ID0gJ0hGRVlCUD1ES1d5
TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlI
bE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFU
eTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJF
eUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI1ID0gJ0hGRVlCUD1E
S1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1H
MUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hr
dXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtR
bzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIgcmUxOCA9IC9eXHMrfFxz
KyQvZzsKKyAgdmFyIHN0cjYgPSAndWdnYzovL2pqai5zbnByb2JieC5wYnovdmFxcmsuY3VjJzsK
KyAgdmFyIHJlMTkgPSAvKD86XnxccyspYmEoPzpccyt8JCkvOworICB2YXIgcmUyMCA9IC9bKywg
XS87CisgIHZhciByZTIxID0gL3libnFycXxwYnpjeXJnci87CisgIHZhciBzdHI3ID0gJzs7anZh
cWJqLklqUHVycHhaYmhmckNiZnZndmJhTlFfVlE9c2hhcGd2YmEocil7dnMoIXIpaW5lIHI9anZh
cWJqLnJpcmFnO2luZSBjPS0xO3ZzKGQxKWM9ZDEuRWJ5eWJzc0NuYXJ5O2luZSBibz1JalRyZ0Jv
dygiSWpDbmF5TlFfVlFfIitjKTt2cyhibyYmYm8uZmdseXIuaXZmdm92eXZnbD09Iml2ZnZveXIi
KXtpbmUgZm5zPUlqRm5zPzg6MDtpbmUgcGhlSz1yLnB5dnJhZ0srSWpCT0ZwZSgiVSIpK2Zucyxw
aGVMPXIucHl2cmFnTCtJakJPRnBlKCJJIikrZm5zO2luZSB5PUlqQk9FQyhOUV9WUSxibywiWSIp
LGc9SWpCT0VDKE5RX1ZRLGJvLCJHIik7aW5lIGU9eStkMS5DbmFyeWZbY10uSnZxZ3Usbz1nK2Qx
LkNuYXJ5ZltjXS5VcnZ0dWc7dnMoKHBoZUs8eSl8fChwaGVLPmUpfHwocGhlTDxnKXx8KHBoZUw+
bykpe3ZzKGp2YXFiai5JakJhRWJ5eWJzc05RX1ZRKUlqQmFFYnl5YnNzTlFfVlEoYyk7cnlmciBJ
alB5YmZyTnEoTlFfVlEsYyxnZWhyLCIiKTt9cnlmciBlcmdoZWE7fUlqUG5hcHJ5WmJoZnJZdmZn
cmFyZU5RX1ZRKCk7fTs7anZhcWJqLklqRnJnRWJ5eWJzc0NuYXJ5TlFfVlE9c2hhcGd2YmEoYyl7
aW5lIHo9InpiaGZyemJpciIscT1xYnBoenJhZyxzPUlqUHVycHhaYmhmckNiZnZndmJhTlFfVlE7
Yz1JalRjKE5RX1ZRLGMpO3ZzKGQxJiZkMS5FYnl5YnNzQ25hcnk+LTEpSWpQbmFwcnlaYmhmcll2
ZmdyYXJlTlFfVlEoKTt2cyhkMSlkMS5FYnl5YnNzQ25hcnk9YztnZWx7dnMocS5ucXFSaXJhZ1l2
ZmdyYXJlKXEubnFxUmlyYWdZdmZncmFyZSh6LHMsc255ZnIpO3J5ZnIgdnMocS5uZ2ducHVSaXJh
ZylxLm5nZ25wdVJpcmFnKCJiYSIreixzKTt9cG5ncHUocil7fX07O2p2YXFiai5JalBuYXByeVpi
aGZyWXZmZ3JhcmVOUV9WUT1zaGFwZ3ZiYSgpe2luZSB6PSJ6YmhmcnpiaXIiLHE9cWJwaHpyYWcs
cz1JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRO3ZzKGQxKWQxLkVieXlic3NDbmFyeT0tMTtnZWx7
dnMocS5lcnpiaXJSaXJhZ1l2ZmdyYXJlKXEuZXJ6YmlyUmlyYWdZdmZncmFyZSh6LHMsc255ZnIp
O3J5ZnIgdnMocS5xcmducHVSaXJhZylxLnFyZ25wdVJpcmFnKCJiYSIreixzKTt9cG5ncHUocil7
fX07O2QxLklqVGM9ZDIobixjKXtpbmUgbnE9ZDE7dnModmZBbkEoYykpe3NiZShpbmUgdj0wO3Y8
bnEuQ25hcnlmLnlyYXRndTt2KyspdnMobnEuQ25hcnlmW3ZdLkFuenI9PWMpZXJnaGVhIHY7ZXJn
aGVhIDA7fWVyZ2hlYSBjO307O2QxLklqVHB5PWQyKG4sYyxwKXtpbmUgY249ZDEuQ25hcnlmW0lq
VGMobixjKV07dnMoIWNuKWVyZ2hlYSAwO3ZzKHZmQW5BKHApKXtzYmUoaW5lIHY9MDt2PGNuLlB5
dnB4Z3VlaGYueXJhdGd1O3YrKyl2cyhjbi5QeXZweGd1ZWhmW3ZdLkFuenI9PXApZXJnaGVhIHY7
ZXJnaGVhIDA7fWVyZ2hlYSBwO307O2QxLklqR2VucHI9ZDIobixmKXtnZWx7dnMoanZhcWJqWyJJ
aiIrIlF0USJdKWp2YXFialsiSWoiKyJRdFEiXShuLDEsZik7fXBuZ3B1KHIpe319OztkMS5Jall2
enZnMT1kMihuLGYpe2luZSBucT1kMSx2aD1mLmZjeXZnKCIvIik7c2JlKGluZSB2PTAscD0wO3Y8
dmgueXJhdGd1O3YrKyl7dnModmhbdl0ueXJhdGd1PjApe3ZzKG5xLkZ6Vi55cmF0Z3U+MClucS5G
elYrPSIvIjtucS5GelYrPXZoW3ZdO25xLkZ0WltucS5GdFoueXJhdGd1XT1zbnlmcjt9fX07O2Qx
LklqWXZ6dmcwPWQyKG4sZil7aW5lIG5xPWQxLHZoPWYuZmN5dmcoIi8iKTtzYmUoaW5lIHY9MDt2
PHZoLnlyYXRndTt2Kyspe3ZzKHZoW3ZdLnlyYXRndT4wKXt2cyhucS5PdkMueXJhdGd1PjApbnEu
T3ZDKz0iLyI7bnEuT3ZDKz12aFt2XTt9fX07O2QxLklqUlZTVD1kMihuLGMpe2p2YXFialsiSWpD
bmF5TlFfVlFfIitjKyJfQm93Il09SWpUcmdCb3coIklqQ25heU5RX1ZRXyIrYysiX0JvdyIpO3Zz
KGp2YXFialsiSWpDbmF5TlFfVlFfIitjKyJfQm93Il09PWFoeXkpZnJnR3Z6cmJoZygiSWpSVlNU
KE5RX1ZRLCIrYysiKSIsZDEucnZzZyk7fTs7ZDEuSWpOYXZ6U0hDPWQyKG4sYyl7aW5lIG5xPWQx
O3ZzKGM+bnEuQ25hcnlmLnlyYXRndSllcmdoZWE7aW5lIGNuYT1ucS5DbmFyeWZbY10sbm49Z2Vo
cixvbj1nZWhyLHluPWdlaHIsZW49Z2Vocixjbj1ucS5DbmFyeWZbMF0sc2Y9bnEuU2hGLGo9Y24u
SnZxZ3UsdT1jbi5VcnZ0dWc7dnMoaj09IjEwMCUiKXtqPXNmO2VuPXNueWZyO3luPXNueWZyO312
cyh1PT0iMTAwJSIpe3U9c2Y7bm49c255ZnI7b249c255ZnI7fXZzKGNuLlluWT09IlkiKXluPXNu
eWZyO3ZzKGNuLlluWT09IkUiKWVuPXNueWZyO3ZzKGNuLkduWT09IkciKW5uPXNueWZyO3ZzKGNu
LkduWT09Ik8iKW9uPXNueWZyO2luZSBrPTAsbD0wO2ZqdmdwdShucS5Oc2hQJTgpe3BuZnIgMDpv
ZXJueDtwbmZyIDE6dnMobm4pbD0tc2Y7b2Vybng7cG5mciAyOms9ai1zZjtvZXJueDtwbmZyIDM6
dnMoZW4paz1qO29lcm54O3BuZnIgNDprPWotc2Y7bD11LXNmO29lcm54O3BuZnIgNTprPWotc2Y7
dnMob24pbD11O29lcm54O3BuZnIgNjpsPXUtc2Y7b2Vybng7cG5mciA3OnZzKHluKWs9LXNmO2w9
dS1zZjtvZXJueDt9dnMobnEuTnNoUCsrIDxucS5Oc2hHKWZyZ0d2enJiaGcoKCJJak5hdnpTSEMo
TlFfVlEsIitjKyIpIiksbnEuTnNoQyk7cnlmcntrPS0xMDAwO2w9azt9Y25hLllyc2dCc3Nmcmc9
aztjbmEuR2JjQnNzZnJnPWw7SWpOaEVyY2IobixjKTt9OztkMS5JalRyZ0VybnlDYmZ2Z3ZiYT1k
MihuLGIsail7ZXJnaGVhIElqQk9FQy5uY2N5bChndXZmLG5ldGh6cmFnZik7fTs7ZDEuSWpQbmFw
cnlHdnpyYmhnPWQyKG4sYyl7Yz1JalRjKG4sYyk7aW5lIGNheT1kMS5DbmFyeWZbY107dnMoY2F5
JiZjYXkuVWdVIT0iIil7cHlybmVHdnpyYmhnKGNheS5VZ1UpO319OztkMS5JalBuYXByeU55eUd2
enJiaGdmPWQyKG4pe3ZzKGQxLllicHhHdnpyYmhnUHVuYXRyZillcmdoZWE7c2JlKGluZSBjPTA7
YzxkMS5iYWM7YysrKUlqUG5hcHJ5R3Z6cmJoZyhuLGMpO307O2QxLklqRmduZWdHdnpyYmhnPWQy
KG4sYyxiRyl7Yz1JalRjKG4sYyk7aW5lIGNheT1kMS5DbmFyeWZbY107dnMoY2F5JiYoKGNheS5V
dnFyR3Z6cmJoZ0lueWhyPjApfHwobmV0aHpyYWdmLnlyYXRndT09MyYmYkc+MCkpKXtweXJuZUd2
enJiaGcoY2F5LlVnVSk7Y2F5LlVnVT1mcmdHdnpyYmhnKGNheS5VdnFyTnBndmJhLChuZXRoenJh
Z2YueXJhdGd1PT0zP2JHOmNheS5VdnFyR3Z6cmJoZ0lueWhyKSk7fX07O2QxLklqRXJmcmdHdnpy
YmhnPWQyKG4sYyxiRyl7Yz1JalRjKG4sYyk7SWpQbmFwcnlHdnpyYmhnKG4sYyk7cmlueSgiSWpG
Z25lZ0d2enJiaGcoTlFfVlEsYyIrKG5ldGh6cmFnZi55cmF0Z3U9PTM/IixiRyI6IiIpKyIpIik7
fTs7ZDEuSWpFcmZyZ055eUd2enJiaGdmPWQyKG4pe3NiZShpbmUgYz0wO2M8ZDEuYmFjO2MrKylJ
akVyZnJnR3Z6cmJoZyhuLGMpO307O2QxLklqUXJnbnB1cmU9ZDIobixyaWcsc2FwKXtnZWx7dnMo
SWpRVlI1KXJpbnkoImp2YXFiai5xcmducHVSaXJhZyhcJ2JhIityaWcrIlwnLCIrc2FwKyJOUV9W
USkiKTtyeWZyIHZzKCFJalFWUlpucClyaW55KCJqdmFxYmouZXJ6YmlyUmlyYWdZdmZncmFyZShc
JyIrcmlnKyJcJywiK3NhcCsiTlFfVlEsc255ZnIpIik7fXBuZ3B1KHIpe319OztkMS5JalB5cm5h
SGM9ZDIobil7SWpDdmF0KG4sIkciKTtpbmUgbnE9ZDE7c2JlKGluZSB2PTA7djxucS5DbmFyeWYu
eXJhdGd1O3YrKyl7SWpVdnFyQ25hcnkobix2LGdlaHIpO31nZWx7SWpUcmdCb3cobnEuZ3lhKS52
YWFyZVVHWlk9IiI7fXBuZ3B1KHIpe312cyhucS5neWEhPW5xLmd5YTIpZ2Vse0lqVHJnQm93KG5x
Lmd5YTIpLnZhYXJlVUdaWT0iIjt9cG5ncHUocil7fWdlbHtkMT1haHl5O31wbmdwdShyKXt9Z2Vs
e0lqUXJnbnB1cmUobiwiaGF5Ym5xIiwiSWpIYXlOUV9WUSIpO31wbmdwdShyKXt9Z2Vse2p2YXFi
ai5JakhheU5RX1ZRPWFoeXk7fXBuZ3B1KHIpe31nZWx7SWpRcmducHVyZShuLCJmcGVieXkiLCJJ
akZlTlFfVlEiKTt9cG5ncHUocil7fWdlbHtqdmFxYmouSWpGZU5RX1ZRPWFoeXk7fXBuZ3B1KHIp
e31nZWx7SWpRcmducHVyZShuLCJlcmZ2bXIiLCJJakVtTlFfVlEiKTt9cG5ncHUocil7fWdlbHtq
dmFxYmouSWpFbU5RX1ZRPWFoeXk7fXBuZ3B1KHIpe31nZWx7SWpRcmducHVyZShuJzsKKyAgdmFy
IHN0cjggPSAnOztqdmFxYmouSWpQdXJweFpiaGZyQ2Jmdmd2YmFOUV9WUT1zaGFwZ3ZiYShyKXt2
cyghcilpbmUgcj1qdmFxYmoucmlyYWc7aW5lIGM9LTE7dnMoanZhcWJqLklqTnFOUV9WUSljPWp2
YXFiai5Jak5xTlFfVlEuRWJ5eWJzc0NuYXJ5O2luZSBibz1JalRyZ0JvdygiSWpDbmF5TlFfVlFf
IitjKTt2cyhibyYmYm8uZmdseXIuaXZmdm92eXZnbD09Iml2ZnZveXIiKXtpbmUgZm5zPUlqRm5z
Pzg6MDtpbmUgcGhlSz1yLnB5dnJhZ0srSWpCT0ZwZSgiVSIpK2ZucyxwaGVMPXIucHl2cmFnTCtJ
akJPRnBlKCJJIikrZm5zO2luZSB5PUlqQk9FQyhOUV9WUSxibywiWSIpLGc9SWpCT0VDKE5RX1ZR
LGJvLCJHIik7aW5lIGU9eStqdmFxYmouSWpOcU5RX1ZRLkNuYXJ5ZltjXS5KdnFndSxvPWcranZh
cWJqLklqTnFOUV9WUS5DbmFyeWZbY10uVXJ2dHVnO3ZzKChwaGVLPHkpfHwocGhlSz5lKXx8KHBo
ZUw8Zyl8fChwaGVMPm8pKXt2cyhqdmFxYmouSWpCYUVieXlic3NOUV9WUSlJakJhRWJ5eWJzc05R
X1ZRKGMpO3J5ZnIgSWpQeWJmck5xKE5RX1ZRLGMsZ2VociwiIik7fXJ5ZnIgZXJnaGVhO31JalBu
YXByeVpiaGZyWXZmZ3JhcmVOUV9WUSgpO307O2p2YXFiai5JakZyZ0VieXlic3NDbmFyeU5RX1ZR
PXNoYXBndmJhKGMpe2luZSB6PSJ6YmhmcnpiaXIiLHE9cWJwaHpyYWcscz1JalB1cnB4WmJoZnJD
YmZ2Z3ZiYU5RX1ZRO2M9SWpUYyhOUV9WUSxjKTt2cyhqdmFxYmouSWpOcU5RX1ZRJiZqdmFxYmou
SWpOcU5RX1ZRLkVieXlic3NDbmFyeT4tMSlJalBuYXByeVpiaGZyWXZmZ3JhcmVOUV9WUSgpO3Zz
KGp2YXFiai5Jak5xTlFfVlEpanZhcWJqLklqTnFOUV9WUS5FYnl5YnNzQ25hcnk9YztnZWx7dnMo
cS5ucXFSaXJhZ1l2ZmdyYXJlKXEubnFxUmlyYWdZdmZncmFyZSh6LHMsc255ZnIpO3J5ZnIgdnMo
cS5uZ2ducHVSaXJhZylxLm5nZ25wdVJpcmFnKCJiYSIreixzKTt9cG5ncHUocil7fX07O2p2YXFi
ai5JalBuYXByeVpiaGZyWXZmZ3JhcmVOUV9WUT1zaGFwZ3ZiYSgpe2luZSB6PSJ6YmhmcnpiaXIi
LHE9cWJwaHpyYWcscz1JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRO3ZzKGp2YXFiai5Jak5xTlFf
VlEpanZhcWJqLklqTnFOUV9WUS5FYnl5YnNzQ25hcnk9LTE7Z2Vse3ZzKHEuZXJ6YmlyUmlyYWdZ
dmZncmFyZSlxLmVyemJpclJpcmFnWXZmZ3JhcmUoeixzLHNueWZyKTtyeWZyIHZzKHEucXJnbnB1
UmlyYWcpcS5xcmducHVSaXJhZygiYmEiK3oscyk7fXBuZ3B1KHIpe319OztqdmFxYmouSWpOcU5R
X1ZRLklqVGM9c2hhcGd2YmEobixjKXtpbmUgbnE9anZhcWJqLklqTnFOUV9WUTt2cyh2ZkFuQShj
KSl7c2JlKGluZSB2PTA7djxucS5DbmFyeWYueXJhdGd1O3YrKyl2cyhucS5DbmFyeWZbdl0uQW56
cj09YyllcmdoZWEgdjtlcmdoZWEgMDt9ZXJnaGVhIGM7fTs7anZhcWJqLklqTnFOUV9WUS5JalRw
eT1zaGFwZ3ZiYShuLGMscCl7aW5lIGNuPWp2YXFiai5Jak5xTlFfVlEuQ25hcnlmW0lqVGMobixj
KV07dnMoIWNuKWVyZ2hlYSAwO3ZzKHZmQW5BKHApKXtzYmUoaW5lIHY9MDt2PGNuLlB5dnB4Z3Vl
aGYueXJhdGd1O3YrKyl2cyhjbi5QeXZweGd1ZWhmW3ZdLkFuenI9PXApZXJnaGVhIHY7ZXJnaGVh
IDA7fWVyZ2hlYSBwO307O2p2YXFiai5Jak5xTlFfVlEuSWpHZW5wcj1zaGFwZ3ZiYShuLGYpe2dl
bHt2cyhqdmFxYmpbIklqIisiUXRRIl0panZhcWJqWyJJaiIrIlF0USJdKG4sMSxmKTt9cG5ncHUo
cil7fX07O2p2YXFiai5Jak5xTlFfVlEuSWpZdnp2ZzE9c2hhcGd2YmEobixmKXtpbmUgbnE9anZh
cWJqLklqTnFOUV9WUSx2aD1mLmZjeXZnKCIvIik7c2JlKGluZSB2PTAscD0wO3Y8dmgueXJhdGd1
O3YrKyl7dnModmhbdl0ueXJhdGd1PjApe3ZzKG5xLkZ6Vi55cmF0Z3U+MClucS5GelYrPSIvIjtu
cS5GelYrPXZoW3ZdO25xLkZ0WltucS5GdFoueXJhdGd1XT1zbnlmcjt9fX07O2p2YXFiai5Jak5x
TlFfVlEuSWpZdnp2ZzA9c2hhcGd2YmEobixmKXtpbmUgbnE9anZhcWJqLklqTnFOUV9WUSx2aD1m
LmZjeXZnKCIvIik7c2JlKGluZSB2PTA7djx2aC55cmF0Z3U7disrKXt2cyh2aFt2XS55cmF0Z3U+
MCl7dnMobnEuT3ZDLnlyYXRndT4wKW5xLk92Qys9Ii8iO25xLk92Qys9dmhbdl07fX19OztqdmFx
YmouSWpOcU5RX1ZRLklqUlZTVD1zaGFwZ3ZiYShuLGMpe2p2YXFialsiSWpDbmF5TlFfVlFfIitj
KyJfQm93Il09SWpUcmdCb3coIklqQ25heU5RX1ZRXyIrYysiX0JvdyIpO3ZzKGp2YXFialsiSWpD
bmF5TlFfVlFfIitjKyJfQm93Il09PWFoeXkpZnJnR3Z6cmJoZygiSWpSVlNUKE5RX1ZRLCIrYysi
KSIsanZhcWJqLklqTnFOUV9WUS5ydnNnKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqTmF2elNIQz1z
aGFwZ3ZiYShuLGMpe2luZSBucT1qdmFxYmouSWpOcU5RX1ZRO3ZzKGM+bnEuQ25hcnlmLnlyYXRn
dSllcmdoZWE7aW5lIGNuYT1ucS5DbmFyeWZbY10sbm49Z2Vocixvbj1nZWhyLHluPWdlaHIsZW49
Z2Vocixjbj1ucS5DbmFyeWZbMF0sc2Y9bnEuU2hGLGo9Y24uSnZxZ3UsdT1jbi5VcnZ0dWc7dnMo
aj09IjEwMCUiKXtqPXNmO2VuPXNueWZyO3luPXNueWZyO312cyh1PT0iMTAwJSIpe3U9c2Y7bm49
c255ZnI7b249c255ZnI7fXZzKGNuLlluWT09IlkiKXluPXNueWZyO3ZzKGNuLlluWT09IkUiKWVu
PXNueWZyO3ZzKGNuLkduWT09IkciKW5uPXNueWZyO3ZzKGNuLkduWT09Ik8iKW9uPXNueWZyO2lu
ZSBrPTAsbD0wO2ZqdmdwdShucS5Oc2hQJTgpe3BuZnIgMDpvZXJueDtwbmZyIDE6dnMobm4pbD0t
c2Y7b2Vybng7cG5mciAyOms9ai1zZjtvZXJueDtwbmZyIDM6dnMoZW4paz1qO29lcm54O3BuZnIg
NDprPWotc2Y7bD11LXNmO29lcm54O3BuZnIgNTprPWotc2Y7dnMob24pbD11O29lcm54O3BuZnIg
NjpsPXUtc2Y7b2Vybng7cG5mciA3OnZzKHluKWs9LXNmO2w9dS1zZjtvZXJueDt9dnMobnEuTnNo
UCsrIDxucS5Oc2hHKWZyZ0d2enJiaGcoKCJJak5hdnpTSEMoTlFfVlEsIitjKyIpIiksbnEuTnNo
Qyk7cnlmcntrPS0xMDAwO2w9azt9Y25hLllyc2dCc3Nmcmc9aztjbmEuR2JjQnNzZnJnPWw7SWpO
aEVyY2IobixjKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqVHJnRXJueUNiZnZndmJhPXNoYXBndmJh
KG4sYixqKXtlcmdoZWEgSWpCT0VDLm5jY3lsKGd1dmYsbmV0aHpyYWdmKTt9OztqdmFxYmouSWpO
cU5RX1ZRLklqUG5hcHJ5R3Z6cmJoZz1zaGFwZ3ZiYShuLGMpe2M9SWpUYyhuLGMpO2luZSBjYXk9
anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbY107dnMoY2F5JiZjYXkuVWdVIT0iIil7cHlybmVHdnpy
YmhnKGNheS5VZ1UpO319OztqdmFxYmouSWpOcU5RX1ZRLklqUG5hcHJ5Tnl5R3Z6cmJoZ2Y9c2hh
cGd2YmEobil7dnMoanZhcWJqLklqTnFOUV9WUS5ZYnB4R3Z6cmJoZ1B1bmF0cmYpZXJnaGVhO3Ni
ZShpbmUgYz0wO2M8anZhcWJqLklqTnFOUV9WUS5iYWM7YysrKUlqUG5hcHJ5R3Z6cmJoZyhuLGMp
O307O2p2YXFiai5Jak5xTlFfVlEuSWpGZ25lZ0d2enJiaGc9c2hhcGd2YmEobixjLGJHKXtjPUlq
VGMobixjKTtpbmUgY2F5PWp2YXFiai5Jak5xTlFfVlEuQ25hcnlmW2NdO3ZzKGNheSYmKChjYXku
VXZxckd2enJiaGdJbnlocj4wKXx8KG5ldGh6cmFnZi55cmF0Z3U9PTMmJmJHPjApKSl7cHlybmVH
dnpyYmhnKGNheS5VZ1UpO2NheS5VZ1U9ZnJnR3Z6cmJoZyhjYXkuVXZxck5wZ3ZiYSwobmV0aHpy
YWdmLnlyYXRndT09Mz9iRzpjYXkuVXZxckd2enJiaGdJbnlocikpO319OztqdmFxYmouSWpOcU5R
X1ZRLklqRXJmcmdHdnpyYmhnPXNoYXBndmJhKG4sYyxiRyl7Yz1JalRjKG4sYyk7SWpQbmFwcnlH
dnpyYmhnKG4sYyk7cmlueSgiSWpGZ25lZ0d2enJiaGcoTlFfVlEsYyIrKG5ldGh6cmFnZi55cmF0
Z3U9PTM/IixiRyI6IiIpKyIpIik7fTs7anZhcWJqLklqTnFOUV9WUS5JakVyZnJnTnl5R3Z6cmJo
Z2Y9c2hhcGd2YmEobil7c2JlKGluZSBjPTA7YzxqdmFxYmouSWpOcU5RX1ZRLmJhYztjKyspSWpF
cmZyZ0d2enJiaGcobixjKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqUXJnbnB1cmU9c2hhcGd2YmEo
bixyaWcsc2FwKXtnZWx7dnMoSWpRVlI1KXJpbnkoImp2YXFiai5xcmducHVSaXJhZyhcJ2JhIity
aWcrIlwnLCIrc2FwKyJOUV9WUSkiKTtyeWZyIHZzKCFJalFWUlpucClyaW55KCJqdmFxYmouZXJ6
YmlyJzsKKyAgdmFyIHN0cjkgPSAnOztqdmFxYmouSWpQdXJweFpiaGZyQ2Jmdmd2YmFOUV9WUT1z
aGFwZ3ZiYShyKXt2cyghcilpbmUgcj1qdmFxYmoucmlyYWc7aW5lIGM9LTE7dnMoanZhcWJqLklq
TnFOUV9WUSljPWp2YXFiai5Jak5xTlFfVlEuRWJ5eWJzc0NuYXJ5O2luZSBibz1JalRyZ0Jvdygi
SWpDbmF5TlFfVlFfIitjKTt2cyhibyYmYm8uZmdseXIuaXZmdm92eXZnbD09Iml2ZnZveXIiKXtp
bmUgZm5zPUlqRm5zPzg6MDtpbmUgcGhlSz1yLnB5dnJhZ0srSWpCT0ZwZSgiVSIpK2ZucyxwaGVM
PXIucHl2cmFnTCtJakJPRnBlKCJJIikrZm5zO2luZSB5PUlqQk9FQyhOUV9WUSxibywiWSIpLGc9
SWpCT0VDKE5RX1ZRLGJvLCJHIik7aW5lIGU9eStqdmFxYmouSWpOcU5RX1ZRLkNuYXJ5ZltjXS5K
dnFndSxvPWcranZhcWJqLklqTnFOUV9WUS5DbmFyeWZbY10uVXJ2dHVnO3ZzKChwaGVLPHkpfHwo
cGhlSz5lKXx8KHBoZUw8Zyl8fChwaGVMPm8pKXt2cyhqdmFxYmouSWpCYUVieXlic3NOUV9WUSlJ
akJhRWJ5eWJzc05RX1ZRKGMpO3J5ZnIgSWpQeWJmck5xKE5RX1ZRLGMsZ2VociwiIik7fXJ5ZnIg
ZXJnaGVhO31JalBuYXByeVpiaGZyWXZmZ3JhcmVOUV9WUSgpO307O2p2YXFiai5JakZyZ0VieXli
c3NDbmFyeU5RX1ZRPXNoYXBndmJhKGMpe2luZSB6PSJ6YmhmcnpiaXIiLHE9cWJwaHpyYWcscz1J
alB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRO2M9SWpUYyhOUV9WUSxjKTt2cyhqdmFxYmouSWpOcU5R
X1ZRJiZqdmFxYmouSWpOcU5RX1ZRLkVieXlic3NDbmFyeT4tMSlJalBuYXByeVpiaGZyWXZmZ3Jh
cmVOUV9WUSgpO3ZzKGp2YXFiai5Jak5xTlFfVlEpanZhcWJqLklqTnFOUV9WUS5FYnl5YnNzQ25h
cnk9YztnZWx7dnMocS5ucXFSaXJhZ1l2ZmdyYXJlKXEubnFxUmlyYWdZdmZncmFyZSh6LHMsc255
ZnIpO3J5ZnIgdnMocS5uZ2ducHVSaXJhZylxLm5nZ25wdVJpcmFnKCJiYSIreixzKTt9cG5ncHUo
cil7fX07O2p2YXFiai5JalBuYXByeVpiaGZyWXZmZ3JhcmVOUV9WUT1zaGFwZ3ZiYSgpe2luZSB6
PSJ6YmhmcnpiaXIiLHE9cWJwaHpyYWcscz1JalB1cnB4WmJoZnJDYmZ2Z3ZiYU5RX1ZRO3ZzKGp2
YXFiai5Jak5xTlFfVlEpanZhcWJqLklqTnFOUV9WUS5FYnl5YnNzQ25hcnk9LTE7Z2Vse3ZzKHEu
ZXJ6YmlyUmlyYWdZdmZncmFyZSlxLmVyemJpclJpcmFnWXZmZ3JhcmUoeixzLHNueWZyKTtyeWZy
IHZzKHEucXJnbnB1UmlyYWcpcS5xcmducHVSaXJhZygiYmEiK3oscyk7fXBuZ3B1KHIpe319Oztq
dmFxYmouSWpOcU5RX1ZRLklqVGM9ZDIobixjKXtpbmUgbnE9anZhcWJqLklqTnFOUV9WUTt2cyh2
ZkFuQShjKSl7c2JlKGluZSB2PTA7djxucS5DbmFyeWYueXJhdGd1O3YrKyl2cyhucS5DbmFyeWZb
dl0uQW56cj09YyllcmdoZWEgdjtlcmdoZWEgMDt9ZXJnaGVhIGM7fTs7anZhcWJqLklqTnFOUV9W
US5JalRweT1kMihuLGMscCl7aW5lIGNuPWp2YXFiai5Jak5xTlFfVlEuQ25hcnlmW0lqVGMobixj
KV07dnMoIWNuKWVyZ2hlYSAwO3ZzKHZmQW5BKHApKXtzYmUoaW5lIHY9MDt2PGNuLlB5dnB4Z3Vl
aGYueXJhdGd1O3YrKyl2cyhjbi5QeXZweGd1ZWhmW3ZdLkFuenI9PXApZXJnaGVhIHY7ZXJnaGVh
IDA7fWVyZ2hlYSBwO307O2p2YXFiai5Jak5xTlFfVlEuSWpHZW5wcj1kMihuLGYpe2dlbHt2cyhq
dmFxYmpbIklqIisiUXRRIl0panZhcWJqWyJJaiIrIlF0USJdKG4sMSxmKTt9cG5ncHUocil7fX07
O2p2YXFiai5Jak5xTlFfVlEuSWpZdnp2ZzE9ZDIobixmKXtpbmUgbnE9anZhcWJqLklqTnFOUV9W
USx2aD1mLmZjeXZnKCIvIik7c2JlKGluZSB2PTAscD0wO3Y8dmgueXJhdGd1O3YrKyl7dnModmhb
dl0ueXJhdGd1PjApe3ZzKG5xLkZ6Vi55cmF0Z3U+MClucS5GelYrPSIvIjtucS5GelYrPXZoW3Zd
O25xLkZ0WltucS5GdFoueXJhdGd1XT1zbnlmcjt9fX07O2p2YXFiai5Jak5xTlFfVlEuSWpZdnp2
ZzA9ZDIobixmKXtpbmUgbnE9anZhcWJqLklqTnFOUV9WUSx2aD1mLmZjeXZnKCIvIik7c2JlKGlu
ZSB2PTA7djx2aC55cmF0Z3U7disrKXt2cyh2aFt2XS55cmF0Z3U+MCl7dnMobnEuT3ZDLnlyYXRn
dT4wKW5xLk92Qys9Ii8iO25xLk92Qys9dmhbdl07fX19OztqdmFxYmouSWpOcU5RX1ZRLklqUlZT
VD1kMihuLGMpe2p2YXFialsiSWpDbmF5TlFfVlFfIitjKyJfQm93Il09SWpUcmdCb3coIklqQ25h
eU5RX1ZRXyIrYysiX0JvdyIpO3ZzKGp2YXFialsiSWpDbmF5TlFfVlFfIitjKyJfQm93Il09PWFo
eXkpZnJnR3Z6cmJoZygiSWpSVlNUKE5RX1ZRLCIrYysiKSIsanZhcWJqLklqTnFOUV9WUS5ydnNn
KTt9OztqdmFxYmouSWpOcU5RX1ZRLklqTmF2elNIQz1kMihuLGMpe2luZSBucT1qdmFxYmouSWpO
cU5RX1ZRO3ZzKGM+bnEuQ25hcnlmLnlyYXRndSllcmdoZWE7aW5lIGNuYT1ucS5DbmFyeWZbY10s
bm49Z2Vocixvbj1nZWhyLHluPWdlaHIsZW49Z2Vocixjbj1ucS5DbmFyeWZbMF0sc2Y9bnEuU2hG
LGo9Y24uSnZxZ3UsdT1jbi5VcnZ0dWc7dnMoaj09IjEwMCUiKXtqPXNmO2VuPXNueWZyO3luPXNu
eWZyO312cyh1PT0iMTAwJSIpe3U9c2Y7bm49c255ZnI7b249c255ZnI7fXZzKGNuLlluWT09Ilki
KXluPXNueWZyO3ZzKGNuLlluWT09IkUiKWVuPXNueWZyO3ZzKGNuLkduWT09IkciKW5uPXNueWZy
O3ZzKGNuLkduWT09Ik8iKW9uPXNueWZyO2luZSBrPTAsbD0wO2ZqdmdwdShucS5Oc2hQJTgpe3Bu
ZnIgMDpvZXJueDtwbmZyIDE6dnMobm4pbD0tc2Y7b2Vybng7cG5mciAyOms9ai1zZjtvZXJueDtw
bmZyIDM6dnMoZW4paz1qO29lcm54O3BuZnIgNDprPWotc2Y7bD11LXNmO29lcm54O3BuZnIgNTpr
PWotc2Y7dnMob24pbD11O29lcm54O3BuZnIgNjpsPXUtc2Y7b2Vybng7cG5mciA3OnZzKHluKWs9
LXNmO2w9dS1zZjtvZXJueDt9dnMobnEuTnNoUCsrIDxucS5Oc2hHKWZyZ0d2enJiaGcoKCJJak5h
dnpTSEMoTlFfVlEsIitjKyIpIiksbnEuTnNoQyk7cnlmcntrPS0xMDAwO2w9azt9Y25hLllyc2dC
c3Nmcmc9aztjbmEuR2JjQnNzZnJnPWw7SWpOaEVyY2IobixjKTt9OztqdmFxYmouSWpOcU5RX1ZR
LklqVHJnRXJueUNiZnZndmJhPWQyKG4sYixqKXtlcmdoZWEgSWpCT0VDLm5jY3lsKGd1dmYsbmV0
aHpyYWdmKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqUG5hcHJ5R3Z6cmJoZz1kMihuLGMpe2M9SWpU
YyhuLGMpO2luZSBjYXk9anZhcWJqLklqTnFOUV9WUS5DbmFyeWZbY107dnMoY2F5JiZjYXkuVWdV
IT0iIil7cHlybmVHdnpyYmhnKGNheS5VZ1UpO319OztqdmFxYmouSWpOcU5RX1ZRLklqUG5hcHJ5
Tnl5R3Z6cmJoZ2Y9ZDIobil7dnMoanZhcWJqLklqTnFOUV9WUS5ZYnB4R3Z6cmJoZ1B1bmF0cmYp
ZXJnaGVhO3NiZShpbmUgYz0wO2M8anZhcWJqLklqTnFOUV9WUS5iYWM7YysrKUlqUG5hcHJ5R3Z6
cmJoZyhuLGMpO307O2p2YXFiai5Jak5xTlFfVlEuSWpGZ25lZ0d2enJiaGc9ZDIobixjLGJHKXtj
PUlqVGMobixjKTtpbmUgY2F5PWp2YXFiai5Jak5xTlFfVlEuQ25hcnlmW2NdO3ZzKGNheSYmKChj
YXkuVXZxckd2enJiaGdJbnlocj4wKXx8KG5ldGh6cmFnZi55cmF0Z3U9PTMmJmJHPjApKSl7cHly
bmVHdnpyYmhnKGNheS5VZ1UpO2NheS5VZ1U9ZnJnR3Z6cmJoZyhjYXkuVXZxck5wZ3ZiYSwobmV0
aHpyYWdmLnlyYXRndT09Mz9iRzpjYXkuVXZxckd2enJiaGdJbnlocikpO319OztqdmFxYmouSWpO
cU5RX1ZRLklqRXJmcmdHdnpyYmhnPWQyKG4sYyxiRyl7Yz1JalRjKG4sYyk7SWpQbmFwcnlHdnpy
YmhnKG4sYyk7cmlueSgiSWpGZ25lZ0d2enJiaGcoTlFfVlEsYyIrKG5ldGh6cmFnZi55cmF0Z3U9
PTM/IixiRyI6IiIpKyIpIik7fTs7anZhcWJqLklqTnFOUV9WUS5JakVyZnJnTnl5R3Z6cmJoZ2Y9
ZDIobil7c2JlKGluZSBjPTA7YzxqdmFxYmouSWpOcU5RX1ZRLmJhYztjKyspSWpFcmZyZ0d2enJi
aGcobixjKTt9OztqdmFxYmouSWpOcU5RX1ZRLklqUXJnbnB1cmU9ZDIobixyaWcsc2FwKXtnZWx7
dnMoSWpRVlI1KXJpbnkoImp2YXFiai5xcmducHVSaXJhZyhcJ2JhIityaWcrIlwnLCIrc2FwKyJO
UV9WUSkiKTtyeWZyIHZzKCFJalFWUlpucClyaW55KCJqdmFxYmouZXJ6YmlyUmlyYWdZdmZncmFy
ZShcJyIrcmlnKyJcJywiK3NhcCsiTlFfVlEsc255ZnIpIik7fXBuZ3B1KHIpe319OztqdmFxYmou
SWpOcU5RX1ZRLklqUHlybmEnOworICBmdW5jdGlvbiBydW5CbG9jazEoKSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA4MTsgaSsrKSB7CisgICAgICByZTguZXhlYygnVkM9NzQuMTI1Ljc1LjEn
KTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3ODsgaSsrKSB7CisgICAgICAnOS4w
ICBlMTE1Jy5yZXBsYWNlKC8oXHMpK2UvLCAnJyk7CisgICAgICAnaycucmVwbGFjZSgvLi8sICcn
KTsKKyAgICAgIHN0cjIucmVwbGFjZShyZTE3LCAnJyk7CisgICAgICBzdHIzLnJlcGxhY2UocmUx
NywgJycpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OCcpOworICAgICAgcmU4LmV4ZWMoJ1Bi
aGFnZWw9SUlaJTNRJyk7CisgICAgICByZTguZXhlYygnUGJoYWdlbD1JSVo9Jyk7CisgICAgICBy
ZTguZXhlYygnQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9Jyk7CisgICAgICByZTguZXhlYyhzdHI0
KTsKKyAgICAgIHJlOC5leGVjKHN0cjUpOworICAgICAgcmU4LmV4ZWMoJ19faGd6cD0xNDQ2MzE2
NTgnKTsKKyAgICAgIHJlOC5leGVjKCdndnpyTWJhcj0tOCcpOworICAgICAgcmU4LmV4ZWMoJ2d2
enJNYmFyPTAnKTsKKyAgICAgIC9GbnNuZXZcLyhcZCtcLlxkKykvLmV4ZWMoc3RyMCk7CisgICAg
ICByZTMuZXhlYygndmFjaGdncmtnICBRQlpQYmFnZWJ5X2N5bnBydWJ5cXJlJyk7CisgICAgICBy
ZTAuZXhlYygneHJscWJqYScpOworICAgICAgcmUwLmV4ZWMoJ3hybGhjJyk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgNzc7IGkrKykgeworICAgICAgJ3VnZ2M6Ly96cmZmbnR2YXQu
emxmY25wci5wYnovdmFxcmsucHN6Jy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgIHJlMTMuZXhl
YygndWdnYzovL3pyZmZudHZhdC56bGZjbnByLnBiei92YXFyay5wc3onKTsKKyAgICB9CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCA3MzsgaSsrKSB7CisgICAgICAnRnJmZnZiYUZnYmVudHI9JTdP
JTIyR25vVGh2cSUyMiUzTiU3TyUyMnRodnElMjIlM04xMjMxMzY3MTI1MDE3JTdRJTdRJy5yZXBs
YWNlKHJlMTgsICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3MjsgaSsrKSB7
CisgICAgICByZTEuZXhlYyhzdHI2KTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3
MTsgaSsrKSB7CisgICAgICByZTE5LmV4ZWMoJycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDcwOyBpKyspIHsKKyAgICAgICczLjUuMC4wJy5yZXBsYWNlKHJlMTEsICcnKTsKKyAg
ICAgIHN0cjcucmVwbGFjZSgvZDEvZywgJycpOworICAgICAgc3RyOC5yZXBsYWNlKC9OUV9WUS9n
LCAnJyk7CisgICAgICBzdHI5LnJlcGxhY2UoL2QyL2csICcnKTsKKyAgICAgICdOSSUzUTFfQ0kl
M1ExX1BJJTNRMV9FSSUzUTFfSEklM1ExX0hQJTNRMV9JQyUzUTAuMC4wLjBfSUglM1EwJy5yZXBs
YWNlKC9fL2csICcnKTsKKyAgICAgICdzdnpfemxmY25wcl91YnpyY250cl9hYmd5YnR0cnF2YSxz
dnpfemxmY25wcl9hYmFfSFRQLHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYnLnNwbGl0KHJlMjAp
OworICAgICAgcmUyMS5leGVjKCd5Ym5xdmF0Jyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjg7IGkrKykgeworICAgICAgcmUxLmV4ZWMoJyMnKTsKKyAgICAgIC8oPzpaRlZSLihc
ZCtcLlxkKykpfCg/Oig/OlN2ZXJzYmt8VGVuYUNuZW5xdmZifFZwcmpybmZyeSkuKFxkK1wuXGQr
KSl8KD86QmNyZW4uKFxkK1wuXGQrKSl8KD86TmNjeXJKcm9YdmcuKFxkKyg/OlwuXGQrKT8pKS8u
ZXhlYyhzdHIwKTsKKyAgICAgIC8oWm5wIEJGIEspfChKdmFxYmpmOykvLmV4ZWMoc3RyMCk7Cisg
ICAgICAvVHJweGJcLyhbMC05XSspLy5leGVjKHN0cjApOworICAgICAgcmUyMS5leGVjKCd5Ym5x
cnEnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OTsgaSsrKSB7CisgICAgICBy
ZTE2LmV4ZWMoJ3BieWJlJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDQ7IGkr
KykgeworICAgICAgJ3VnZ2M6Ly9zZXZyYXFmLnpsZmNucHIucGJ6L3ZhcXJrLnBzeicucmVwbGFj
ZShyZTEyLCAnJyk7CisgICAgICByZTEzLmV4ZWMoJ3VnZ2M6Ly9zZXZyYXFmLnpsZmNucHIucGJ6
L3ZhcXJrLnBzeicpOworICAgIH0KKyAgfQorICB2YXIgcmUyMiA9IC9cYnNvX3pyYWhcYi87Cisg
IHZhciByZTIzID0gL14oPzooPzpbXjpcLz8jXSspOik/KD86XC9cLyg/OlteXC8/I10qKSk/KFte
PyNdKikoPzpcPyhbXiNdKikpPyg/OiMoLiopKT8vOworICB2YXIgcmUyNCA9IC91Z2djZj86XC9c
LyhbXlwvXStcLik/c25wcm9iYnhcLnBielwvLzsKKyAgdmFyIHJlMjUgPSAvIi9nOworICB2YXIg
cmUyNiA9IC9eKFtePyNdKykoPzpcPyhbXiNdKikpPygjLiopPy87CisgIGZ1bmN0aW9uIHJ1bkJs
b2NrMigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQwOyBpKyspIHsKKyAgICAgICdmcnly
cGdycScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnZnJ5cnBncnEnLnJlcGxhY2UocmUxNSwg
JycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM5OyBpKyspIHsKKyAgICAgICd2
YWNoZ2dya2cgdXZxcXJhX3J5cnonLnJlcGxhY2UoL1xidXZxcXJhX3J5cnpcYi9nLCAnJyk7Cisg
ICAgICByZTMuZXhlYygndmFjaGdncmtnICcpOworICAgICAgcmUzLmV4ZWMoJ3ZhY2hnZ3JrZycp
OworICAgICAgcmUyMi5leGVjKCdIVll2YXhPaGdnYmEnKTsKKyAgICAgIHJlMjIuZXhlYygnSFZZ
dmF4T2hnZ2JhX0UnKTsKKyAgICAgIHJlMjIuZXhlYygnSFZZdmF4T2hnZ2JhX0VKJyk7CisgICAg
ICByZTIyLmV4ZWMoJ3pyYWhfeWJ0dmFfcGJhZ252YXJlJyk7CisgICAgICAvXGJ1dnFxcmFfcnly
elxiLy5leGVjKCd2YWNoZ2NuZmZqYmVxJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMzc7IGkrKykgeworICAgICAgcmU4LmV4ZWMoJzExMXNvcXM1N3FvOG84NDgwcW8xOHNvcjIw
MTFyM241OTFxN3M2czM3cjEyMDkwNCcpOworICAgICAgcmU4LmV4ZWMoJ1NiZXBycVJrY3Zlbmd2
YmE9NjMzNjY5MzE1NjYwMTY0OTgwJyk7CisgICAgICByZTguZXhlYygnRnJmZnZiYVFRUzI9MTEx
c29xczU3cW84bzg0ODBxbzE4c29yMjAxMXIzbjU5MXE3czZzMzdyMTIwOTA0Jyk7CisgICAgfQor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzU7IGkrKykgeworICAgICAgJ3B1dnlxIHAxIHN2ZWZn
Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZycucmVwbGFjZShyZTE1
LCAnJyk7CisgICAgICAnc3lsYmhnIHB5YmZycScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAn
c3lsYmhnIHB5YmZycScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMzQ7IGkrKykgeworICAgICAgcmUxOS5leGVjKCdnbm8yJyk7CisgICAgICByZTE5
LmV4ZWMoJ2dubzMnKTsKKyAgICAgIHJlOC5leGVjKCc0NDEzMnI1MDM2NjAnKTsKKyAgICAgIHJl
OC5leGVjKCdTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNjg2MDExMzI5NicpOworICAgICAgcmU4
LmV4ZWMoJ0FGUF96cF9kZmN0d3pzLWFvd2JfODA9NDQxMzJyNTAzNjYwJyk7CisgICAgICByZTgu
ZXhlYygnRnJmZnZiYVFRUzI9czZyNDU3OW5wbjRybjIxMzVzOTA0cjBzNzVwcDFvNTMzNHA2czZw
b3NwbzEyNjk2Jyk7CisgICAgICByZTguZXhlYygnczZyNDU3OW5wbjRybjIxMzVzOTA0cjBzNzVw
cDFvNTMzNHA2czZwb3NwbzEyNjk2Jyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MzI7IGkrKykgeworICAgICAgL3B1ZWJ6ci9pLmV4ZWMoc3RyMCk7CisgICAgfQorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMzE7IGkrKykgeworICAgICAgJ3VnZ2M6Ly9qamouc25wcm9iYngucGJ6
LycucmVwbGFjZShyZTIzLCAnJyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02
MzM2NjkzNTg1MjcyNDQ4MTgnKTsKKyAgICAgIHJlOC5leGVjKCdWQz02Ni4yNDkuODUuMTMwJyk7
CisgICAgICByZTguZXhlYygnRnJmZnZiYVFRUzI9czE1cTUzcDluMzcyc243Nm5wcjEzbzI3MW40
czNwNXIyOXAyMzU3NDZwOTA4cDU4Jyk7CisgICAgICByZTguZXhlYygnczE1cTUzcDluMzcyc243
Nm5wcjEzbzI3MW40czNwNXIyOXAyMzU3NDZwOTA4cDU4Jyk7CisgICAgICByZTI0LmV4ZWMoJ3Vn
Z2M6Ly9qamouc25wcm9iYngucGJ6LycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDMwOyBpKyspIHsKKyAgICAgICc0MTknLnJlcGxhY2UocmU2LCAnJyk7CisgICAgICAvKD86Xnxc
cyspZ3Z6cmZnbnpjKD86XHMrfCQpLy5leGVjKCdndnpyZmduemMnKTsKKyAgICAgIHJlNy5leGVj
KCc0MTknKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOTsgaSsrKSB7CisgICAg
ICAndWdnYzovL2pqai5zbnByb2JieC5wYnoveWJ0dmEuY3VjJy5yZXBsYWNlKHJlMjMsICcnKTsK
KyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyODsgaSsrKSB7CisgICAgICAnRnVuZXIg
Z3V2ZiB0bnF0cmcnLnJlcGxhY2UocmUyNSwgJycpOworICAgICAgJ0Z1bmVyIGd1dmYgdG5xdHJn
Jy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgIHJlMjYuZXhlYygndWdnYzovL2pqai50YmJ0eXIu
cGJ6L3Z0L3F2ZXJwZ2JlbCcpOworICAgIH0KKyAgfQorICB2YXIgcmUyNyA9IC8tXEQvZzsKKyAg
dmFyIHJlMjggPSAvXGJucGd2aW5nclxiLzsKKyAgdmFyIHJlMjkgPSAvJTJSL2dpOworICB2YXIg
cmUzMCA9IC8lMlMvZ2k7CisgIHZhciByZTMxID0gL14obXUtKFBBfEdKKXx3bnx4YikkLzsKKyAg
dmFyIHJlMzIgPSAvXHM/O1xzPy87CisgIHZhciByZTMzID0gLyVcdz8kLzsKKyAgdmFyIHJlMzQg
PSAvVE5RUD0oW147XSopL2k7CisgIHZhciBzdHIxMCA9ICdGcmZmdmJhUVFTMj0xMTFzb3FzNTdx
bzhvODQ4MHFvMThzb3IyMDExcjNuNTkxcTdzNnMzN3IxMjA5MDQ7IFpGUGh5Z2hlcj1WQz03NC4x
MjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQ
aHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzE1NjYw
MTY0OTgwJmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1
bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRI
M0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFK
RXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBS
PSc7CisgIHZhciBzdHIxMSA9ICdGcmZmdmJhUVFTMj0xMTFzb3FzNTdxbzhvODQ4MHFvMThzb3Iy
MDExcjNuNTkxcTdzNnMzN3IxMjA5MDQ7IF9faGd6bT0xNDQ2MzE2NTguMTIzMTM2MzU3MC4xLjEu
aGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpOyBfX2hnem49MTQ0
NjMxNjU4LjM0MjY4NzUyMTk3MTgwODQwMDAuMTIzMTM2MzU3MC4xMjMxMzYzNTcwLjEyMzEzNjM1
NzAuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjM1NzA7IF9faGd6cD0xNDQ2MzE2NTg7
IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hl
cj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNTY2MDE2NDk4
MCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0
SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVx
VEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNG
MGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1En
OworICB2YXIgc3RyMTIgPSAndWdnYzovL3RiYnR5cm5xZi50LnFiaG95cnB5dnB4LmFyZy9jbnRy
bnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25wcl96bGZjbnByLXVienJjbnRyX3dmJnFnPTEyMzEz
NjM1MTQwNjUmdXk9cmEmbnFmbnNyPXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5x
Z3JmZz1ic3MmcGJlZXJ5bmdiZT0xMjMxMzYzNTE0MDY1JnB1bmFhcnk9c3Z6X3psZmNucHJfdWJ6
cmNudHJfYWJneWJ0dHJxdmElMlBzdnpfemxmY25wcl9hYmFfSFRQJTJQc3Z6X3psZmNucHJfaGF2
Z3JxLWZnbmdyZiZoZXk9dWdnYyUzTiUyUyUyU3VienIuemxmY25wci5wYnolMlN2YXFyay5wc3om
bnFfZ2xjcj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAmdG5faXZxPTEzMjY0NjkyMjEuMTIz
MTM2MzU1NyZ0bl9mdnE9MTIzMTM2MzU1NyZ0bl91dnE9MTExNDYzNjUwOSZzeW5mdT05LjAuMTE1
JmhfdT03NjgmaF9qPTEwMjQmaF9udT03MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhf
dXZmPTImaF93bmluPWdlaHImaF9hY3lodD03JmhfYXp2enI9MjInOworICB2YXIgc3RyMTMgPSAn
WkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVy
PXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzE1NjYwMTY0OTgw
Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJ
enl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFU
SW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Yw
a1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7
CisgIHZhciBzdHIxNCA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhG
JkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9
SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMxNTY2MDE2NDk4MCZndnpyTWJhcj0wJkhGRVlC
UD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5
eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4z
V3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBM
SmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0nOworICB2YXIgcmUzNSA9IC9bPD5d
L2c7CisgIHZhciBzdHIxNSA9ICdGcmZmdmJhUVFTMj1zNnI0NTc5bnBuNHJuMjEzNXM5MDRyMHM3
NXBwMW81MzM0cDZzNnBvc3BvMTI2OTY7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdo
ZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0m
UGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzE2ODYwMTEzMjk2Jmd2enJNYmFy
PTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJ
aHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFp
TVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNB
UE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPTsgQUZQX3pwX2RmY3R3
enMtYW93Yl84MD00NDEzMnI1MDM2NjAnOworICB2YXIgc3RyMTYgPSAnRnJmZnZiYVFRUzI9czZy
NDU3OW5wbjRybjIxMzVzOTA0cjBzNzVwcDFvNTMzNHA2czZwb3NwbzEyNjk2OyBBRlBfenBfZGZj
dHd6cy1hb3diXzgwPTQ0MTMycjUwMzY2MDsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzYzNjM4LjEu
MS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0x
NDQ2MzE2NTguOTY1ODY3MDQ3Njc5NDk4ODAwLjEyMzEzNjM2MzguMTIzMTM2MzYzOC4xMjMxMzYz
NjM4LjE7IF9faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzYzNjM4OyBfX2hnenA9MTQ0NjMxNjU4
OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdo
ZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMTY4NjAxMTMy
OTYmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0
dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1
cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlD
RjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNR
JzsKKyAgdmFyIHN0cjE3ID0gJ3VnZ2M6Ly90YmJ0eXJucWYudC5xYmhveXJweXZweC5hcmcvY250
cm5xL25xZj9weXZyYWc9cG4tc3Z6X3psZmNucHJfemxmY25wci11YnpyY250cl93ZiZxZz0xMjMx
MzYzNjIxMDE0JnV5PXJhJm5xZm5zcj11dnR1JmJyPWhnczgmYWh6X25xZj00JmJoZ2NoZz13ZiZu
cWdyZmc9YnNzJnBiZWVyeW5nYmU9MTIzMTM2MzYyMTAxNCZwdW5hYXJ5PXN2el96bGZjbnByX3Vi
enJjbnRyX2FiZ3lidHRycXZhJTJQc3Z6X3psZmNucHJfYWJhX0hUUCUyUHN2el96bGZjbnByX2hh
dmdycS1mZ25ncmYmaGV5PXVnZ2MlM04lMlMlMlNjZWJzdnlyLnpsZmNucHIucGJ6JTJTdmFxcmsu
cHN6Jm5xX2dsY3I9Z3JrZyZydnE9NjA4MzAyNyZybj0wJnNlej0wJnRuX2l2cT0zNDg2OTkxMTku
MTIzMTM2MzYyNCZ0bl9mdnE9MTIzMTM2MzYyNCZ0bl91dnE9ODk1NTExMDM0JnN5bmZ1PTkuMC4x
MTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25qPTEwMjQmaF9wcT0yNCZoX2dtPS00ODAm
aF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9henZ6cj0yMic7CisgIHZhciBzdHIxOCA9
ICd1Z2djOi8vampqLnlyb2JhcGJ2YS5zZS95dic7CisgIHZhciBzdHIxOSA9ICdaRlBoeWdoZXI9
VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJo
YWdlbD1JSVolM1EmU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMTY4NjAxMTMyOTYmZ3Z6ck1iYXI9
LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJ
aHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFp
TVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNB
UE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0
cjIwID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJx
UGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBy
cVJrY3Zlbmd2YmE9NjMzNjY5MzE2ODYwMTEzMjk2Jmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFp
TVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFv
M0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFK
RXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4
MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIGZ1bmN0aW9uIHJ1bkJsb2NrMygpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDI3OyBpKyspIHsKKyAgICAgICdlMTE1Jy5yZXBsYWNlKC9b
QS1aYS16XS9nLCAnJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjM7IGkrKykg
eworICAgICAgJ3F2ZmN5bmwnLnJlcGxhY2UocmUyNywgJycpOworICAgICAgJ2NiZnZndmJhJy5y
ZXBsYWNlKHJlMjcsICcnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMjsgaSsr
KSB7CisgICAgICAndW5hcXlyJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICd1bmFxeXInLnJl
cGxhY2UocmUxNSwgJycpOworICAgICAgJ3l2YXInLnJlcGxhY2UocmUxNCwgJycpOworICAgICAg
J3l2YXInLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI2IGZ2YXR5cjEg
Z25vJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdu
bycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnZnl2cXJlJy5yZXBsYWNlKHJlMTQsICcnKTsK
KyAgICAgICdmeXZxcmUnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgcmUyOC5leGVjKCcnKTsK
KyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMTsgaSsrKSB7CisgICAgICAndWdnYzov
L2pqai56bGZjbnByLnBiei8nLnJlcGxhY2UocmUxMiwgJycpOworICAgICAgcmUxMy5leGVjKCd1
Z2djOi8vampqLnpsZmNucHIucGJ6LycpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDIwOyBpKyspIHsKKyAgICAgICdjbnRyaXZyaicucmVwbGFjZShyZTI5LCAnJyk7CisgICAgICAn
Y250cml2cmonLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgcmUxOS5leGVjKCd5bmZnJyk7Cisg
ICAgICByZTE5LmV4ZWMoJ2JhIHN2ZWZnJyk7CisgICAgICByZTguZXhlYygnVkM9NzQuMTI1Ljc1
LjMnKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxOTsgaSsrKSB7CisgICAgICBy
ZTMxLmV4ZWMoJ3JhJyk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTg7IGkrKykg
eworICAgICAgc3RyMTAuc3BsaXQocmUzMik7CisgICAgICBzdHIxMS5zcGxpdChyZTMyKTsKKyAg
ICAgIHN0cjEyLnJlcGxhY2UocmUzMywgJycpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4w
LjEwLjEyMzEzNjM1NzAnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2MzU3MC4x
LjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAg
ICByZTguZXhlYygnMTQ0NjMxNjU4LjM0MjY4NzUyMTk3MTgwODQwMDAuMTIzMTM2MzU3MC4xMjMx
MzYzNTcwLjEyMzEzNjM1NzAuMScpOworICAgICAgcmU4LmV4ZWMoc3RyMTMpOworICAgICAgcmU4
LmV4ZWMoc3RyMTQpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguMzQyNjg3NTIx
OTcxODA4NDAwMC4xMjMxMzYzNTcwLjEyMzEzNjM1NzAuMTIzMTM2MzU3MC4xJyk7CisgICAgICBy
ZTguZXhlYygnX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjM1NzAnKTsKKyAgICAgIHJlOC5l
eGVjKCdfX2hnem09MTQ0NjMxNjU4LjEyMzEzNjM1NzAuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pw
cGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmUzNC5leGVjKHN0cjEwKTsKKyAg
ICAgIHJlMzQuZXhlYyhzdHIxMSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTc7
IGkrKykgeworICAgICAgc3RyMC5tYXRjaCgvemZ2ci9naSk7CisgICAgICBzdHIwLm1hdGNoKC9i
Y3Jlbi9naSk7CisgICAgICBzdHIxNS5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjE2LnNwbGl0KHJl
MzIpOworICAgICAgJ29oZ2diYScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnb2hnZ2JhJy5y
ZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBzeWxiaGcgcHliZnJxJy5y
ZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwMSBzdmVmZyBzeWxiaGcgcHliZnJxJy5y
ZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdwdmd2cmYnLnJlcGxhY2UocmUxNCwgJycpOworICAg
ICAgJ3B2Z3ZyZicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHliZnJxJy5yZXBsYWNlKHJl
MTQsICcnKTsKKyAgICAgICdweWJmcnEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3FyeScu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAncXJ5Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAg
ICd1cXlfemJhJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICd1cXlfemJhJy5yZXBsYWNlKHJl
MTUsICcnKTsKKyAgICAgIHN0cjE3LnJlcGxhY2UocmUzMywgJycpOworICAgICAgc3RyMTgucmVw
bGFjZSgvJTNQL2csICcnKTsKKyAgICAgIHN0cjE4LnJlcGxhY2UoLyUzUi9nLCAnJyk7CisgICAg
ICBzdHIxOC5yZXBsYWNlKC8lM3EvZywgJycpOworICAgICAgc3RyMTgucmVwbGFjZShyZTM1LCAn
Jyk7CisgICAgICAneXZheHl2ZmcxNicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAneXZheHl2
ZmcxNicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnenZhaGYnLnJlcGxhY2UocmUxNCwgJycp
OworICAgICAgJ3p2YWhmJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdiY3JhJy5yZXBsYWNl
KHJlMTQsICcnKTsKKyAgICAgICdiY3JhJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdjbmVy
YWcgcHVlYnpyNSBmdmF0eXIxIHBzIE5VJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjbmVy
YWcgcHVlYnpyNSBmdmF0eXIxIHBzIE5VJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdjeW5s
cmUnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2N5bmxyZScucmVwbGFjZShyZTE1LCAnJyk7
CisgICAgICAnY3loZicucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnY3loZicucmVwbGFjZShy
ZTE1LCAnJyk7CisgICAgICAnY2JfdXF5Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjYl91
cXknLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2h5SlZ6dCcucmVwbGFjZShyZTE0LCAnJyk7
CisgICAgICAnaHlKVnp0Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2
MzE2NTguMC4xMC4xMjMxMzYzNjM4Jyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjEyMzEz
NjM2MzguMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScp
OworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC45NjU4NjcwNDc2Nzk0OTg4MDAuMTIzMTM2MzYz
OC4xMjMxMzYzNjM4LjEyMzEzNjM2MzguMScpOworICAgICAgcmU4LmV4ZWMoJzQ0MTMyNjhxMzY2
MCcpOworICAgICAgcmU4LmV4ZWMoJzRzczc0N283NzkwNDMzM3EzNzRvcjg0cXJyMXM5cjBucHJw
OHI1cTgxNTM0bzk0bicpOworICAgICAgcmU4LmV4ZWMoJ1NiZXBycVJrY3Zlbmd2YmE9NjMzNjY5
MzIxNjk5MDkzMDYwJyk7CisgICAgICByZTguZXhlYygnVkM9NzQuMTI1Ljc1LjIwJyk7CisgICAg
ICByZTguZXhlYyhzdHIxOSk7CisgICAgICByZTguZXhlYyhzdHIyMCk7CisgICAgICByZTguZXhl
YygnQUZQX3pwX3Rmd3NicmctYW93Yl84MD00NDEzMjY4cTM2NjAnKTsKKyAgICAgIHJlOC5leGVj
KCdGcmZmdmJhUVFTMj00c3M3NDdvNzc5MDQzMzNxMzc0b3I4NHFycjFzOXIwbnBycDhyNXE4MTUz
NG85NG4nKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0NjMxNjU4Ljk2NTg2NzA0NzY3OTQ5
ODgwMC4xMjMxMzYzNjM4LjEyMzEzNjM2MzguMTIzMTM2MzYzOC4xJyk7CisgICAgICByZTguZXhl
YygnX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjM2MzgnKTsKKyAgICAgIHJlOC5leGVjKCdf
X2hnem09MTQ0NjMxNjU4LjEyMzEzNjM2MzguMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2
ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmUzNC5leGVjKHN0cjE1KTsKKyAgICAgIHJl
MzQuZXhlYyhzdHIxNik7CisgICAgfQorICB9CisgIHZhciByZTM2ID0gL3VlcnN8ZmVwfGZyeXJw
Z3JxLzsKKyAgdmFyIHJlMzcgPSAvXHMqKFsrPn5cc10pXHMqKFthLXpBLVojLio6XFtdKS9nOwor
ICB2YXIgcmUzOCA9IC9eKFx3K3xcKikkLzsKKyAgdmFyIHN0cjIxID0gJ0ZyZmZ2YmFRUVMyPXMx
NXE1M3A5bjM3MnNuNzZucHIxM28yNzFuNHMzcDVyMjlwMjM1NzQ2cDkwOHA1ODsgWkZQaHlnaGVy
PVZDPTY2LjI0OS44NS4xMzAmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYm
Q2Vyc3JlZXJxUGh5Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYz
MzY2OTM1ODUyNzI0NDgxOCZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FV
eDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcx
SW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6
R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlv
eDV1b0pIOUQwUj0nOworICB2YXIgc3RyMjIgPSAnRnJmZnZiYVFRUzI9czE1cTUzcDluMzcyc243
Nm5wcjEzbzI3MW40czNwNXIyOXAyMzU3NDZwOTA4cDU4OyBfX2hnem09MTQ0NjMxNjU4LjEyMzEz
Njc4MjIuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKTsg
X19oZ3puPTE0NDYzMTY1OC40MTI3NTIwNjMwMzIxOTg0NTAwLjEyMzEzNjc4MjIuMTIzMTM2Nzgy
Mi4xMjMxMzY3ODIyLjE7IF9faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY3ODIyOyBfX2hnenA9
MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NjYuMjQ5Ljg1LjEzMCZWQ1BoeWdoZXI9cmEtSEYmQ2Vy
c3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2
OTM1ODUyNzI0NDgxOCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5
R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlv
enkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdU
OWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1
dW9KSDlEMFIlM1EnOworICB2YXIgc3RyMjMgPSAndWdnYzovL3RiYnR5cm5xZi50LnFiaG95cnB5
dnB4LmFyZy9jbnRybnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25wcl96bGZjbnByLXVienJjbnRy
X3dmJnFnPTEyMzEzNjc4MDM3OTcmdXk9cmEmbnFmbnNyPXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQm
YmhnY2hnPXdmJm5xZ3JmZz1ic3MmcGJlZXJ5bmdiZT0xMjMxMzY3ODAzNzk3JnB1bmFhcnk9c3Z6
X3psZmNucHJfdWJ6cmNudHJfYWJneWJ0dHJxdmElMlBzdnpfemxmY25wcl9hYmFfSFRQJTJQc3Z6
X3psZmNucHJfaGF2Z3JxLWZnbmdyZiZoZXk9dWdnYyUzTiUyUyUyU3pyZmZudHZhdC56bGZjbnBy
LnBieiUyU3ZhcXJrLnBzeiZucV9nbGNyPWdya2cmcnZxPTYwODMwMjcmcm49MCZzZXo9MCZ0bl9p
dnE9MTE5MjU1MjA5MS4xMjMxMzY3ODA3JnRuX2Z2cT0xMjMxMzY3ODA3JnRuX3V2cT0xMTU1NDQ2
ODU3JnN5bmZ1PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25qPTEwMjQmaF9w
cT0yNCZoX2dtPS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9henZ6cj0yMic7
CisgIHZhciBzdHIyNCA9ICdaRlBoeWdoZXI9VkM9NjYuMjQ5Ljg1LjEzMCZWQ1BoeWdoZXI9cmEt
SEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJh
PTYzMzY2OTM1ODUyNzI0NDgxOCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4
QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pT
Z01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0Rr
QkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lN
Mnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyMjUgPSAnWkZQaHlnaGVyPVZDPTY2LjI0OS44
NS4xMzAmVkNQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5
Z2hlckNyYXF2YXQ9JlBiaGFnZWw9SUlaPSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1ODUyNzI0
NDgxOCZndnpyTWJhcj0wJkhGRVlCUD1ES1d5TEhBaU1USDlBd0hqV3hBY3FVeDlHSjkxb2FFdW5K
NHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFVVzVHelNnTUcxSW96eTBNSkR0SDNF
dXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0daM1l3RGtCR1Z6R1Q5aE0yeTBxSkV5
Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURtV3lXeU0yeWlveDV1b0pIOUQwUj0n
OworICB2YXIgc3RyMjYgPSAnaHkueW5hdC1mcnlycGdiZSc7CisgIHZhciByZTM5ID0gL1xcL2c7
CisgIHZhciByZTQwID0gLyAvZzsKKyAgdmFyIHJlNDEgPSAvXC9ceGM0XC90LzsKKyAgdmFyIHJl
NDIgPSAvXC9ceGQ2XC90LzsKKyAgdmFyIHJlNDMgPSAvXC9ceGRjXC90LzsKKyAgdmFyIHJlNDQg
PSAvXC9ceGRmXC90LzsKKyAgdmFyIHJlNDUgPSAvXC9ceGU0XC90LzsKKyAgdmFyIHJlNDYgPSAv
XC9ceGY2XC90LzsKKyAgdmFyIHJlNDcgPSAvXC9ceGZjXC90LzsKKyAgdmFyIHJlNDggPSAvXFcv
ZzsKKyAgdmFyIHJlNDkgPSAvdWVyc3xmZXB8ZmdseXIvOworICBmdW5jdGlvbiBydW5CbG9jazQo
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisgICAgICAnJy5yZXBsYWNl
KC9cKi9nLCAnJyk7CisgICAgICAvXGJucGd2aXJcYi8uZXhlYygnbnBndmlyJyk7CisgICAgICAv
c3ZlcnNiay9pLmV4ZWMoc3RyMCk7CisgICAgICByZTM2LmV4ZWMoJ2dsY3InKTsKKyAgICAgIC96
ZnZyL2kuZXhlYyhzdHIwKTsKKyAgICAgIC9iY3Jlbi9pLmV4ZWMoc3RyMCk7CisgICAgfQorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTU7IGkrKykgeworICAgICAgc3RyMjEuc3BsaXQocmUzMik7
CisgICAgICBzdHIyMi5zcGxpdChyZTMyKTsKKyAgICAgICd1Z2djOi8vb2h5eXJndmFmLnpsZmNu
cHIucGJ6L3ZhcXJrLnBzeicucmVwbGFjZShyZTEyLCAnJyk7CisgICAgICBzdHIyMy5yZXBsYWNl
KHJlMzMsICcnKTsKKyAgICAgICd5dicucmVwbGFjZShyZTM3LCAnJyk7CisgICAgICAneXYnLnJl
cGxhY2UocmUxOCwgJycpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4wLjEwLjEyMzEzNjc4
MjInKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2NzgyMi4xLjEuaGd6cGZlPShx
dmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTguZXhlYygn
MTQ0NjMxNjU4LjQxMjc1MjA2MzAzMjE5ODQ1MDAuMTIzMTM2NzgyMi4xMjMxMzY3ODIyLjEyMzEz
Njc4MjIuMScpOworICAgICAgcmU4LmV4ZWMoc3RyMjQpOworICAgICAgcmU4LmV4ZWMoc3RyMjUp
OworICAgICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguNDEyNzUyMDYzMDMyMTk4NDUwMC4x
MjMxMzY3ODIyLjEyMzEzNjc4MjIuMTIzMTM2NzgyMi4xJyk7CisgICAgICByZTguZXhlYygnX19o
Z3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjc4MjInKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem09
MTQ0NjMxNjU4LjEyMzEzNjc4MjIuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8
aGd6cHpxPShhYmFyKScpOworICAgICAgcmUzNC5leGVjKHN0cjIxKTsKKyAgICAgIHJlMzQuZXhl
YyhzdHIyMik7CisgICAgICAvXC4oW1x3LV0rKXxcWyhcdyspKD86KFshKl4kfnxdPz0pWyInXT8o
Lio/KVsiJ10/KT9cXXw6KFtcdy1dKykoPzpcKFsiJ10/KC4qPyk/WyInXT9cKXwkKS9nLmV4ZWMo
c3RyMjYpOworICAgICAgcmUxMy5leGVjKCd1Z2djOi8vb2h5eXJndmFmLnpsZmNucHIucGJ6L3Zh
cXJrLnBzeicpOworICAgICAgcmUzOC5leGVjKCd5dicpOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDE0OyBpKyspIHsKKyAgICAgICcnLnJlcGxhY2UocmUxOCwgJycpOworICAgICAg
JzkuMCAgZTExNScucmVwbGFjZSgvKFxzK2V8XHMrb1swLTldKykvLCAnJyk7CisgICAgICAnRnVu
ZXIgZ3V2ZiB0bnF0cmcnLnJlcGxhY2UoLzwvZywgJycpOworICAgICAgJ0Z1bmVyIGd1dmYgdG5x
dHJnJy5yZXBsYWNlKC8+L2csICcnKTsKKyAgICAgICdGdW5lciBndXZmIHRucXRyZycucmVwbGFj
ZShyZTM5LCAnJyk7CisgICAgICAndWdnYzovL2NlYnN2eXJycXZnLnpsZmNucHIucGJ6L3ZhcXJr
LnBzeicucmVwbGFjZShyZTEyLCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDAsICcn
KTsKKyAgICAgICdncm5mcmUnLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2dybmZyZScucmVw
bGFjZShyZTQyLCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAg
ICdncm5mcmUnLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ2dybmZyZScucmVwbGFjZShyZTQ1
LCAnJyk7CisgICAgICAnZ3JuZnJlJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdncm5mcmUn
LnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ2dybmZyZScucmVwbGFjZShyZTQ4LCAnJyk7Cisg
ICAgICByZTE2LmV4ZWMoJ3puZXR2YS1nYmMnKTsKKyAgICAgIHJlMTYuZXhlYygnY2Jmdmd2YmEn
KTsKKyAgICAgIHJlMTkuZXhlYygnZ25vMScpOworICAgICAgcmU5LmV4ZWMoJ3F6Jyk7CisgICAg
ICByZTkuZXhlYygncWcnKTsKKyAgICAgIHJlOS5leGVjKCd6YnFvYmsnKTsKKyAgICAgIHJlOS5l
eGVjKCd6YnFvYmt2YScpOworICAgICAgcmU5LmV4ZWMoJ3picWd2Z3lyJyk7CisgICAgICByZTEz
LmV4ZWMoJ3VnZ2M6Ly9jZWJzdnlycnF2Zy56bGZjbnByLnBiei92YXFyay5wc3onKTsKKyAgICAg
IHJlMjYuZXhlYygnL3Z0L3pudnl0bnF0cmcnKTsKKyAgICAgIHJlNDkuZXhlYygnZ2xjcicpOwor
ICAgIH0KKyAgfQorICB2YXIgcmU1MCA9IC8oPzpefFxzKylmcnlycGdycSg/OlxzK3wkKS87Cisg
IHZhciByZTUxID0gL1wmL2c7CisgIHZhciByZTUyID0gL1wrL2c7CisgIHZhciByZTUzID0gL1w/
L2c7CisgIHZhciByZTU0ID0gL1x0L2c7CisgIHZhciByZTU1ID0gLyhcJFx7bnFpSGV5XH0pfChc
JG5xaUhleVxiKS9nOworICB2YXIgcmU1NiA9IC8oXCRce2NuZ3VcfSl8KFwkY25ndVxiKS9nOwor
ICBmdW5jdGlvbiBydW5CbG9jazUoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMzsgaSsr
KSB7CisgICAgICAncHVycHgnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3B1cnB4Jy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICdwdmdsJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdw
dmdsJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdxcnBlIGZ5dnFyZ3JrZycucmVwbGFjZShy
ZTE0LCAnJyk7CisgICAgICAncXJwZSBmeXZxcmdya2cnLnJlcGxhY2UocmUxNSwgJycpOworICAg
ICAgJ3N2ZWZnIGZyeXJwZ3JxJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdzdmVmZyBmcnly
cGdycScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAndXF5X3JhZycucmVwbGFjZShyZTE0LCAn
Jyk7CisgICAgICAndXF5X3JhZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAndmFwZSBmeXZx
cmdya2cnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3ZhcGUgZnl2cXJncmtnJy5yZXBsYWNl
KHJlMTUsICcnKTsKKyAgICAgICd2YWNoZ2dya2cgUUJaUGJhZ2VieV9jeW5wcnVieXFyZScucmVw
bGFjZShyZTUsICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdubyBmcnlycGdy
cScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnY25lcmFnIHB1ZWJ6cjYgZnZhdHlyMSBnbm8g
ZnJ5cnBncnEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NiX2d1eicucmVwbGFjZShyZTE0
LCAnJyk7CisgICAgICAnY2JfZ3V6Jy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdmaG96dmcn
LnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2Zob3p2ZycucmVwbGFjZShyZTE1LCAnJyk7Cisg
ICAgICByZTUwLmV4ZWMoJycpOworICAgICAgL05jY3lySnJvWHZnXC8oW15cc10qKS8uZXhlYyhz
dHIwKTsKKyAgICAgIC9YVUdaWS8uZXhlYyhzdHIwKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMjsgaSsrKSB7CisgICAgICAnJHtjZWJnfTovLyR7dWJmZ30ke2NuZ3V9LyR7ZHp9
Jy5yZXBsYWNlKC8oXCRce2NlYmdcfSl8KFwkY2ViZ1xiKS9nLCAnJyk7CisgICAgICAnMScucmVw
bGFjZShyZTQwLCAnJyk7CisgICAgICAnMScucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnMScu
cmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnMScucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICAn
MScucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAnMScucmVwbGFjZShyZTM5LCAnJyk7CisgICAg
ICAnMScucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnOS4wICBlMTE1Jy5yZXBsYWNlKC9eKC4q
KVwuLiokLywgJycpOworICAgICAgJzkuMCAgZTExNScucmVwbGFjZSgvXi4qZSguKikkLywgJycp
OworICAgICAgJzwhLS0gJHtucWlIZXl9IC0tPicucmVwbGFjZShyZTU1LCAnJyk7CisgICAgICAn
PGZwZXZjZyBnbGNyPSJncmtnL3duaW5mcGV2Y2ciIGZlcD0iJHtucWlIZXl9Ij48L2ZwZXZjZz4n
LnJlcGxhY2UocmU1NSwgJycpOworICAgICAgc3RyMS5yZXBsYWNlKC9eLipccysoXFMrXHMrXFMr
JCkvLCAnJyk7CisgICAgICAndHprJTJTdWJ6cmNudHIlMlNmZ25lZyUyU3FyJTJTJy5yZXBsYWNl
KHJlMzAsICcnKTsKKyAgICAgICd0emsnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ3VnZ2M6
Ly8ke3ViZmd9JHtjbmd1fS8ke2R6fScucmVwbGFjZSgvKFwkXHt1YmZnXH0pfChcJHViZmdcYikv
ZywgJycpOworICAgICAgJ3VnZ2M6Ly9ucXB5dnJhZy5odnpmcmVpLmFyZyR7Y25ndX0vJHtken0n
LnJlcGxhY2UocmU1NiwgJycpOworICAgICAgJ3VnZ2M6Ly9ucXB5dnJhZy5odnpmcmVpLmFyZy93
Zi5hdC8ke2R6fScucmVwbGFjZSgvKFwkXHtkelx9KXwoXCRkelxiKS9nLCAnJyk7CisgICAgICAn
ZnJwZ3ZiYScucmVwbGFjZShyZTI5LCAnJyk7CisgICAgICAnZnJwZ3ZiYScucmVwbGFjZShyZTMw
LCAnJyk7CisgICAgICAnZnZncicucmVwbGFjZShyZTI5LCAnJyk7CisgICAgICAnZnZncicucmVw
bGFjZShyZTMwLCAnJyk7CisgICAgICAnZmNycHZueScucmVwbGFjZShyZTI5LCAnJyk7CisgICAg
ICAnZmNycHZueScucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICByZTM2LmV4ZWMoJ2FuenInKTsK
KyAgICAgIC9lLy5leGVjKCc5LjAgIGUxMTUnKTsKKyAgICB9CisgIH0KKyAgdmFyIHJlNTcgPSAv
IyN5djQjIy9naTsKKyAgdmFyIHJlNTggPSAvIyN5djE2IyMvZ2k7CisgIHZhciByZTU5ID0gLyMj
eXYxOSMjL2dpOworICB2YXIgc3RyMjcgPSAnPGh5IHB5bmZmPSJucWkiPiMjeXY0IyNDYmpyZXNo
eSBadnBlYmZic2cgZ3JwdWFieWJ0bCB1cnljZiBzdnR1ZyBmY256IG5hcSB2emNlYmlyIGZycGhl
dmdsLiMjeXYxOSMjVHJnIHpiZXIgcWJhciBndW5heGYgZ2IgdGVybmdyZSBybmZyIG5hcSBmY3Jy
cS4jI3l2MTYjI1liZ2YgYnMgZmdiZW50ciAmIzQwOzUgVE8mIzQxOyAtIHpiZXIgcGJieSBmZ2hz
cyBiYSBndXIgam5sLiMjT0UjIyAjI09FIyMgIyNOIyNZcm5lYSB6YmVyIyMvTiMjPC9oeT4nOwor
ICB2YXIgc3RyMjggPSAnPGh5IHB5bmZmPSJucWkiPjx5diB2cT0iWXZPWUc0IiBmZ2x5cj0ib25w
eHRlYmhhcS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcu
VlEvfjE0LjIuMTIzMC9+L34vfi9veWc0LmNhdCkiPkNianJlc2h5IFp2cGViZmJzZyBncnB1YWJ5
YnRsIHVyeWNmIHN2dHVnIGZjbnogbmFxIHZ6Y2ViaXIgZnJwaGV2Z2wuIyN5djE5IyNUcmcgemJl
ciBxYmFyIGd1bmF4ZiBnYiB0ZXJuZ3JlIHJuZnIgbmFxIGZjcnJxLiMjeXYxNiMjWWJnZiBicyBm
Z2JlbnRyICYjNDA7NSBUTyYjNDE7IC0gemJlciBwYmJ5IGZnaHNzIGJhIGd1ciBqbmwuIyNPRSMj
ICMjT0UjIyAjI04jI1lybmVhIHpiZXIjIy9OIyM8L2h5Pic7CisgIHZhciBzdHIyOSA9ICc8aHkg
cHluZmY9Im5xaSI+PHl2IHZxPSJZdk9ZRzQiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhleSh1
Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34vfi9+
L295ZzQuY2F0KSI+Q2JqcmVzaHkgWnZwZWJmYnNnIGdycHVhYnlidGwgdXJ5Y2Ygc3Z0dWcgZmNu
eiBuYXEgdnpjZWJpciBmcnBoZXZnbC4jI3l2MTkjI1RyZyB6YmVyIHFiYXIgZ3VuYXhmIGdiIHRl
cm5ncmUgcm5mciBuYXEgZmNycnEuPHl2IHZxPSJZdk9ZRzE2IiBmZ2x5cj0ib25weHRlYmhhcS12
em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEvfjE0LjIu
MTIzMC9+L34vfi9veWcxNi5jYXQpIj5ZYmdmIGJzIGZnYmVudHIgJiM0MDs1IFRPJiM0MTsgLSB6
YmVyIHBiYnkgZmdoc3MgYmEgZ3VyIGpubC4jI09FIyMgIyNPRSMjICMjTiMjWXJuZWEgemJlciMj
L04jIzwvaHk+JzsKKyAgdmFyIHN0cjMwID0gJzxoeSBweW5mZj0ibnFpIj48eXYgdnE9Ill2T1lH
NCIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35Zdmly
LkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnNC5jYXQpIj5DYmpyZXNoeSBadnBl
YmZic2cgZ3JwdWFieWJ0bCB1cnljZiBzdnR1ZyBmY256IG5hcSB2emNlYmlyIGZycGhldmdsLjx5
diB2cT0iWXZPWUcxOSIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlr
ZWYucGJ6L35ZdmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnMTkuY2F0KSI+
VHJnIHpiZXIgcWJhciBndW5heGYgZ2IgdGVybmdyZSBybmZyIG5hcSBmY3JycS48eXYgdnE9Ill2
T1lHMTYiIGZnbHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+
WXZpci5GdmdyUGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34vfi9+L295ZzE2LmNhdCkiPlliZ2YgYnMg
ZmdiZW50ciAmIzQwOzUgVE8mIzQxOyAtIHpiZXIgcGJieSBmZ2hzcyBiYSBndXIgam5sLiMjT0Uj
IyAjI09FIyMgIyNOIyNZcm5lYSB6YmVyIyMvTiMjPC9oeT4nOworICB2YXIgc3RyMzEgPSAnPGh5
IHB5bmZmPSJucWkiPjx5diB2cT0iWXZPWUc0IiBmZ2x5cj0ib25weHRlYmhhcS12em50cjpoZXko
dWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEvfjE0LjIuMTIzMC9+L34v
fi9veWc0LmNhdCkiPkNianJlc2h5IFp2cGViZmJzZyBncnB1YWJ5YnRsIHVyeWNmIHN2dHVnIGZj
bnogbmFxIHZ6Y2ViaXIgZnJwaGV2Z2wuPHl2IHZxPSJZdk9ZRzE5IiBmZ2x5cj0ib25weHRlYmhh
cS12em50cjpoZXkodWdnYzovL3Z6dC5qeWtlZi5wYnovfll2aXIuRnZnclBiYWdyYWcuVlEvfjE0
LjIuMTIzMC9+L34vfi9veWcxOS5jYXQpIj5UcmcgemJlciBxYmFyIGd1bmF4ZiBnYiB0ZXJuZ3Jl
IHJuZnIgbmFxIGZjcnJxLjx5diB2cT0iWXZPWUcxNiIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6
aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35ZdmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAv
fi9+L34vb3lnMTYuY2F0KSI+WWJnZiBicyBmZ2JlbnRyICYjNDA7NSBUTyYjNDE7IC0gemJlciBw
YmJ5IGZnaHNzIGJhIGd1ciBqbmwuPG9lPiA8b2U+ICMjTiMjWXJuZWEgemJlciMjL04jIzwvaHk+
JzsKKyAgdmFyIHN0cjMyID0gJzxoeSBweW5mZj0ibnFpIj48eXYgdnE9Ill2T1lHNCIgZmdseXI9
Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35ZdmlyLkZ2Z3JQYmFn
cmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnNC5jYXQpIj5DYmpyZXNoeSBadnBlYmZic2cgZ3Jw
dWFieWJ0bCB1cnljZiBzdnR1ZyBmY256IG5hcSB2emNlYmlyIGZycGhldmdsLjx5diB2cT0iWXZP
WUcxOSIgZmdseXI9Im9ucHh0ZWJoYXEtdnpudHI6aGV5KHVnZ2M6Ly92enQuanlrZWYucGJ6L35Z
dmlyLkZ2Z3JQYmFncmFnLlZRL34xNC4yLjEyMzAvfi9+L34vb3lnMTkuY2F0KSI+VHJnIHpiZXIg
cWJhciBndW5heGYgZ2IgdGVybmdyZSBybmZyIG5hcSBmY3JycS48eXYgdnE9Ill2T1lHMTYiIGZn
bHlyPSJvbnB4dGViaGFxLXZ6bnRyOmhleSh1Z2djOi8vdnp0Lmp5a2VmLnBiei9+WXZpci5Gdmdy
UGJhZ3JhZy5WUS9+MTQuMi4xMjMwL34vfi9+L295ZzE2LmNhdCkiPlliZ2YgYnMgZmdiZW50ciAm
IzQwOzUgVE8mIzQxOyAtIHpiZXIgcGJieSBmZ2hzcyBiYSBndXIgam5sLjxvZT4gPG9lPiA8biB1
ZXJzPSJ1Z2djOi8vem52eS55dmlyLnBiei96bnZ5L25vYmhnLm5mY2siIGduZXRyZz0iX295bmF4
Ij5Zcm5lYSB6YmVyIyMvTiMjPC9oeT4nOworICB2YXIgc3RyMzMgPSAnQmFyIEp2YXFiamYgWXZp
ciBWUSB0cmdmIGxiaCB2YWdiIDxvPlViZ3pudnk8L28+LCA8bz5acmZmcmF0cmU8L28+LCA8bz5L
b2JrIFlWSVI8L28+IFx1MjAxNCBuYXEgYmd1cmUgY3lucHJmIGxiaCBmcnIgI34jYXJnamJleHli
dGIjfiMnOworICB2YXIgcmU2MCA9IC8oPzpefFxzKylic3MoPzpccyt8JCkvOworICB2YXIgcmU2
MSA9IC9eKChbXjpcLz8jXSspOik/KFwvXC8oW15cLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikp
PygjKC4qKSk/JC87CisgIHZhciByZTYyID0gL15bXjxdKig8KC58XHMpKz4pW14+XSokfF4jKFx3
KykkLzsKKyAgdmFyIHN0cjM0ID0gJyR7MX06Ly8kezJ9JHszfSR7NH0kezV9JzsKKyAgdmFyIHN0
cjM1ID0gJyBPPTZnbnlnMGc0em5ycm4mbz0zJmY9Z2M7IFE9X2x5dT1LM2JRWkdTeG5UNGxaekQz
T1M5R05tVjNaR0xrQVF4UnBUeXhObVJsWm1SbUFtTmtBUUxScVRJbXFOWmpPVUVncFRqUW5KNXhN
S3Rnb04tLTsgU0NGPXF5JzsKKyAgZnVuY3Rpb24gcnVuQmxvY2s2KCkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTE7IGkrKykgeworICAgICAgc3RyMjcucmVwbGFjZSgvIyN5djAjIy9naSwg
JycpOworICAgICAgc3RyMjcucmVwbGFjZShyZTU3LCAnJyk7CisgICAgICBzdHIyOC5yZXBsYWNl
KHJlNTgsICcnKTsKKyAgICAgIHN0cjI5LnJlcGxhY2UocmU1OSwgJycpOworICAgICAgc3RyMzAu
cmVwbGFjZSgvIyNcL28jIy9naSwgJycpOworICAgICAgc3RyMzAucmVwbGFjZSgvIyNcL3YjIy9n
aSwgJycpOworICAgICAgc3RyMzAucmVwbGFjZSgvIyNcL2gjIy9naSwgJycpOworICAgICAgc3Ry
MzAucmVwbGFjZSgvIyNvIyMvZ2ksICcnKTsKKyAgICAgIHN0cjMwLnJlcGxhY2UoLyMjb2UjIy9n
aSwgJycpOworICAgICAgc3RyMzAucmVwbGFjZSgvIyN2IyMvZ2ksICcnKTsKKyAgICAgIHN0cjMw
LnJlcGxhY2UoLyMjaCMjL2dpLCAnJyk7CisgICAgICBzdHIzMS5yZXBsYWNlKC8jI24jIy9naSwg
JycpOworICAgICAgc3RyMzIucmVwbGFjZSgvIyNcL24jIy9naSwgJycpOworICAgICAgc3RyMzMu
cmVwbGFjZSgvI34jYXJnamJleHlidGIjfiMvZywgJycpOworICAgICAgLyBaYm92eXJcLy8uZXhl
YyhzdHIwKTsKKyAgICAgIC8jI3l2MSMjL2dpLmV4ZWMoc3RyMjcpOworICAgICAgLyMjeXYxMCMj
L2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXYxMSMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAg
LyMjeXYxMiMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXYxMyMjL2dpLmV4ZWMoc3RyMjgp
OworICAgICAgLyMjeXYxNCMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXYxNSMjL2dpLmV4
ZWMoc3RyMjgpOworICAgICAgcmU1OC5leGVjKHN0cjI4KTsKKyAgICAgIC8jI3l2MTcjIy9naS5l
eGVjKHN0cjI5KTsKKyAgICAgIC8jI3l2MTgjIy9naS5leGVjKHN0cjI5KTsKKyAgICAgIHJlNTku
ZXhlYyhzdHIyOSk7CisgICAgICAvIyN5djIjIy9naS5leGVjKHN0cjI3KTsKKyAgICAgIC8jI3l2
MjAjIy9naS5leGVjKHN0cjMwKTsKKyAgICAgIC8jI3l2MjEjIy9naS5leGVjKHN0cjMwKTsKKyAg
ICAgIC8jI3l2MjIjIy9naS5leGVjKHN0cjMwKTsKKyAgICAgIC8jI3l2MjMjIy9naS5leGVjKHN0
cjMwKTsKKyAgICAgIC8jI3l2MyMjL2dpLmV4ZWMoc3RyMjcpOworICAgICAgcmU1Ny5leGVjKHN0
cjI3KTsKKyAgICAgIC8jI3l2NSMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXY2IyMvZ2ku
ZXhlYyhzdHIyOCk7CisgICAgICAvIyN5djcjIy9naS5leGVjKHN0cjI4KTsKKyAgICAgIC8jI3l2
OCMjL2dpLmV4ZWMoc3RyMjgpOworICAgICAgLyMjeXY5IyMvZ2kuZXhlYyhzdHIyOCk7CisgICAg
ICByZTguZXhlYygnNDczcXExcnMwbjJyNzBxOXFvMXBxNDhuMDIxczk0Njhyb245MG5wczA0OHA0
cDI5Jyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzMjUxODQ2Mjgz
NjInKTsKKyAgICAgIHJlOC5leGVjKCdGcmZmdmJhUVFTMj00NzNxcTFyczBuMnI3MHE5cW8xcHE0
OG4wMjFzOTQ2OHJvbjkwbnBzMDQ4cDRwMjknKTsKKyAgICAgIC9BYnh2bkFbXlwvXSovLmV4ZWMo
c3RyMCk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAg
JyBic3MnLnJlcGxhY2UoLyg/Ol58XHMrKWJzcyg/OlxzK3wkKS9nLCAnJyk7CisgICAgICBzdHIz
NC5yZXBsYWNlKC8oXCRcezBcfSl8KFwkMFxiKS9nLCAnJyk7CisgICAgICBzdHIzNC5yZXBsYWNl
KC8oXCRcezFcfSl8KFwkMVxiKS9nLCAnJyk7CisgICAgICBzdHIzNC5yZXBsYWNlKC8oXCRce3Bi
emN5cmdyXH0pfChcJHBiemN5cmdyXGIpL2csICcnKTsKKyAgICAgIHN0cjM0LnJlcGxhY2UoLyhc
JFx7c2VudHpyYWdcfSl8KFwkc2VudHpyYWdcYikvZywgJycpOworICAgICAgc3RyMzQucmVwbGFj
ZSgvKFwkXHt1YmZnY2JlZ1x9KXwoXCR1YmZnY2JlZ1xiKS9nLCAnJyk7CisgICAgICBzdHIzNC5y
ZXBsYWNlKHJlNTYsICcnKTsKKyAgICAgIHN0cjM0LnJlcGxhY2UoLyhcJFx7Y2ViZ2JwYnlcfSl8
KFwkY2ViZ2JwYnlcYikvZywgJycpOworICAgICAgc3RyMzQucmVwbGFjZSgvKFwkXHtkaHJlbFx9
KXwoXCRkaHJlbFxiKS9nLCAnJyk7CisgICAgICAnbnFmdm1yJy5yZXBsYWNlKHJlMjksICcnKTsK
KyAgICAgICducWZ2bXInLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ3VnZ2M6Ly8kezJ9JHsz
fSR7NH0kezV9Jy5yZXBsYWNlKC8oXCRcezJcfSl8KFwkMlxiKS9nLCAnJyk7CisgICAgICAndWdn
YzovL3dmLmh2LWNiZWdueS5xciR7M30kezR9JHs1fScucmVwbGFjZSgvKFwkXHszXH0pfChcJDNc
YikvZywgJycpOworICAgICAgJ2FyamYnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ2FyamYn
LnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2FyamYnLnJlcGxhY2UocmU0MiwgJycpOworICAg
ICAgJ2FyamYnLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2FyamYnLnJlcGxhY2UocmU0NCwg
JycpOworICAgICAgJ2FyamYnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2FyamYnLnJlcGxh
Y2UocmU0NiwgJycpOworICAgICAgJ2FyamYnLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ2Fy
amYnLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgLyBQQz1pPShcZCspJm9lPSguKS8uZXhlYyhz
dHIzNSk7CisgICAgICByZTYwLmV4ZWMoJyAnKTsKKyAgICAgIHJlNjAuZXhlYygnIGJzcycpOwor
ICAgICAgcmU2MC5leGVjKCcnKTsKKyAgICAgIHJlMTkuZXhlYygnICcpOworICAgICAgcmUxOS5l
eGVjKCdzdmVmZyBiYScpOworICAgICAgcmUxOS5leGVjKCd5bmZnIHZ0YWJlcicpOworICAgICAg
cmUxOS5leGVjKCdiYScpOworICAgICAgcmU5LmV4ZWMoJ3NjbnEgc28gJyk7CisgICAgICByZTku
ZXhlYygnenJxdmdvYmsnKTsKKyAgICAgIHJlOS5leGVjKCdoc2d5Jyk7CisgICAgICByZTkuZXhl
YygnbGh2LWgnKTsKKyAgICAgIC9GbnNuZXZ8WGJhZGhyZWJlfFhVR1pZL2dpLmV4ZWMoc3RyMCk7
CisgICAgICByZTYxLmV4ZWMoJ3VnZ2M6Ly93Zi5odi1jYmVnbnkucXIvdHprL3VienIvd2YvMjAw
ODA2MDIvb25mci53ZicpOworICAgICAgcmU2Mi5leGVjKCcjWWJ0dmFfcnpudnknKTsKKyAgICB9
CisgIH0KKyAgdmFyIHJlNjMgPSAvXHswXH0vZzsKKyAgdmFyIHN0cjM2ID0gJ0ZyZmZ2YmFRUVMy
PTRzczc0N283NzkwNDMzM3EzNzRvcjg0cXJyMXM5cjBucHJwOHI1cTgxNTM0bzk0bjsgWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4yMCZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1I
RiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9
NjMzNjY5MzIxNjk5MDkzMDYwJmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFj
cVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dN
RzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JH
VnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5
aW94NXVvSkg5RDBSPTsgQUZQX3pwX3Rmd3NicmctYW93Yl84MD00NDEzMjY4cTM2NjAnOworICB2
YXIgc3RyMzcgPSAnRnJmZnZiYVFRUzI9NHNzNzQ3bzc3OTA0MzMzcTM3NG9yODRxcnIxczlyMG5w
cnA4cjVxODE1MzRvOTRuOyBBRlBfenBfdGZ3c2JyZy1hb3diXzgwPTQ0MTMyNjhxMzY2MDsgX19o
Z3ptPTE0NDYzMTY1OC4xMjMxMzY0MDc0LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVy
cGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2NTguMjI5NDI3NDg3MDIxNTg0ODQwMC4x
MjMxMzY0MDc0LjEyMzEzNjQwNzQuMTIzMTM2NDA3NC4xOyBfX2hnem89MTQ0NjMxNjU4LjAuMTAu
MTIzMTM2NDA3NDsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4yMCZW
Q1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVw
cnFSa2N2ZW5ndmJhPTYzMzY2OTMyMTY5OTA5MzA2MCZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxI
QWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxN
UW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkw
cUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlD
R3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyMzggPSAndWdnYzovL3Ri
YnR5cm5xZi50LnFiaG95cnB5dnB4LmFyZy9jbnRybnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25w
cl96bGZjbnByLXVienJjbnRyX3dmJnFnPTEyMzEzNjQwNTc3NjEmdXk9cmEmbnFmbnNyPXV2dHUm
YnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdmJm5xZ3JmZz1ic3MmcGJlZXJ5bmdiZT0xMjMxMzY0
MDU3NzYxJnB1bmFhcnk9c3Z6X3psZmNucHJfdWJ6cmNudHJfYWJneWJ0dHJxdmElMlBzdnpfemxm
Y25wcl9hYmFfSFRQJTJQc3Z6X3psZmNucHJfaGF2Z3JxLWZnbmdyZiZoZXk9dWdnYyUzTiUyUyUy
U3NldnJhcWYuemxmY25wci5wYnolMlN2YXFyay5wc3ombnFfZ2xjcj1ncmtnJnJ2cT02MDgzMDI3
JnJuPTAmc2V6PTAmdG5faXZxPTE2NjczNjM4MTMuMTIzMTM2NDA2MSZ0bl9mdnE9MTIzMTM2NDA2
MSZ0bl91dnE9MTkxNzU2Mzg3NyZzeW5mdT05LjAuMTE1JmhfdT03NjgmaF9qPTEwMjQmaF9udT03
MzgmaF9uaj0xMDI0JmhfcHE9MjQmaF9nbT0tNDgwJmhfdXZmPTImaF93bmluPWdlaHImaF9hY3lo
dD03JmhfYXp2enI9MjInOworICB2YXIgc3RyMzkgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4y
MCZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZT
YmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyMTY5OTA5MzA2MCZndnpyTWJhcj0tOCZIRkVZQlA9REtX
eUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJ
SGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3Vx
VHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8y
RXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyNDAgPSAnWkZQaHln
aGVyPVZDPTc0LjEyNS43NS4yMCZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1I
RiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9
NjMzNjY5MzIxNjk5MDkzMDYwJmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFj
cVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dN
RzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JH
VnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5
aW94NXVvSkg5RDBSPSc7CisgIGZ1bmN0aW9uIHJ1bkJsb2NrNygpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDk7IGkrKykgeworICAgICAgJzAnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAg
JzAnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJzAnLnJlcGxhY2UocmU1MSwgJycpOworICAg
ICAgJzAnLnJlcGxhY2UocmU1MiwgJycpOworICAgICAgJzAnLnJlcGxhY2UocmU1MywgJycpOwor
ICAgICAgJzAnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJzAnLnJlcGxhY2UocmU1NCwgJycp
OworICAgICAgJ0xyZicucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnTHJmJy5yZXBsYWNlKHJl
MTAsICcnKTsKKyAgICAgICdMcmYnLnJlcGxhY2UocmU1MSwgJycpOworICAgICAgJ0xyZicucmVw
bGFjZShyZTUyLCAnJyk7CisgICAgICAnTHJmJy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICdM
cmYnLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ0xyZicucmVwbGFjZShyZTU0LCAnJyk7Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAgICAnUHliZnIgezB9
Jy5yZXBsYWNlKHJlNjMsICcnKTsKKyAgICAgICdCY3JhIHswfScucmVwbGFjZShyZTYzLCAnJyk7
CisgICAgICBzdHIzNi5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjM3LnNwbGl0KHJlMzIpOworICAg
ICAgJ3B1dnlxIHAxIHN2ZWZnIGdub3VybnFyZWYnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAg
J3B1dnlxIHAxIHN2ZWZnIGdub3VybnFyZWYnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3Vx
eV9mY2InLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3VxeV9mY2InLnJlcGxhY2UocmUxNSwg
JycpOworICAgICAgJ3V2YWcnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3V2YWcnLnJlcGxh
Y2UocmUxNSwgJycpOworICAgICAgc3RyMzgucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICAneXZm
ZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAneXZmZycucmVwbGFjZShyZTE1LCAnJyk7Cisg
ICAgICAnYXRfYmhncmUnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI1
IHFiaG95cjIgTlUnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI1IHFi
aG95cjIgTlUnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ2NuZXJhZyBwdWVienI1IGRobnE1
IHBzIE5VIG9zeXZheCB6YmFybCcucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnY25lcmFnIHB1
ZWJ6cjUgZGhucTUgcHMgTlUgb3N5dmF4IHpiYXJsJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAg
ICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjbmVy
YWcgcHVlYnpyNiBmdmF0eXIxJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdjYl9xcnMnLnJl
cGxhY2UocmUxNCwgJycpOworICAgICAgJ2NiX3FycycucmVwbGFjZShyZTE1LCAnJyk7CisgICAg
ICAnZ25vcGJhZ3JhZycucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnZ25vcGJhZ3JhZycucmVw
bGFjZShyZTE1LCAnJyk7CisgICAgICAnaXZfc3ZlZmdfZ3Z6cicucmVwbGFjZShyZTMwLCAnJyk7
CisgICAgICAvKF58Likocm9ubHxxcmktZWhmMy53YmcpKHxmZ2JlcmZ8emJnYmVmfHl2aXJuaHBn
dmJhZnxqdnh2fHJrY2VyZmZ8cHVuZ2dyZSkuKHBieih8Lm5ofC5wYXwudXh8LnpsfC5mdHwub2V8
LnprKXxwYiguaHh8LnhlfC5hbSl8cG58cXJ8c2V8dmd8YXl8b3J8bmd8cHV8dnJ8dmF8cmZ8Y3l8
Y3V8ZnIpJC9pLmV4ZWMoJ2NudHJmLnJvbmwucGJ6Jyk7CisgICAgICByZTguZXhlYygnMTQ0NjMx
NjU4LjAuMTAuMTIzMTM2NDA3NCcpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzY0
MDc0LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsK
KyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMjI5NDI3NDg3MDIxNTg0ODQwMC4xMjMxMzY0MDc0
LjEyMzEzNjQwNzQuMTIzMTM2NDA3NC4xJyk7CisgICAgICByZTguZXhlYygnNDQxMzI0MXEzNjYw
Jyk7CisgICAgICByZTguZXhlYygnU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNTczOTEzNTM1OTEn
KTsKKyAgICAgIHJlOC5leGVjKHN0cjM5KTsKKyAgICAgIHJlOC5leGVjKHN0cjQwKTsKKyAgICAg
IHJlOC5leGVjKCdBRlBfenBfa2trLWdkem9ndl84MD00NDEzMjQxcTM2NjAnKTsKKyAgICAgIHJl
OC5leGVjKCdGcmZmdmJhUVFTMj1wOThzOG85cTQybnIyMW9yMXI2MXBxb3JuMW4wMDJuc3NzNTY5
NjM1OTg0czZxcDcnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0NjMxNjU4LjIyOTQyNzQ4
NzAyMTU4NDg0MDAuMTIzMTM2NDA3NC4xMjMxMzY0MDc0LjEyMzEzNjQwNzQuMScpOworICAgICAg
cmU4LmV4ZWMoJ19faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY0MDc0Jyk7CisgICAgICByZTgu
ZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY0MDc0LjEuMS5oZ3pwZmU9KHF2ZXJwZyl8aGd6
cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlOC5leGVjKCdwOThzOG85cTQy
bnIyMW9yMXI2MXBxb3JuMW4wMDJuc3NzNTY5NjM1OTg0czZxcDcnKTsKKyAgICAgIHJlMzQuZXhl
YyhzdHIzNik7CisgICAgICByZTM0LmV4ZWMoc3RyMzcpOworICAgIH0KKyAgfQorICB2YXIgcmU2
NCA9IC9cYlthLXpdL2c7CisgIHZhciByZTY1ID0gL151Z2djOlwvXC8vOworICB2YXIgcmU2NiA9
IC8oPzpefFxzKylxdmZub3lycSg/OlxzK3wkKS87CisgIHZhciBzdHI0MSA9ICd1Z2djOi8vY2Vi
c3Z5ci56bGZjbnByLnBiei9aYnFoeXJmL05jY3l2cG5ndmJhZi9DbnRyZi9QbmFpbmYubmZjayc7
CisgIGZ1bmN0aW9uIHJ1bkJsb2NrOCgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkr
KykgeworICAgICAgc3RyMS5tYXRjaCgvXGQrL2cpOworICAgICAgJ25zZ3JlJy5yZXBsYWNlKHJl
NjQsICcnKTsKKyAgICAgICdvcnNiZXInLnJlcGxhY2UocmU2NCwgJycpOworICAgICAgJ29iZ2di
eicucmVwbGFjZShyZTY0LCAnJyk7CisgICAgICAnb2h2eWd2YV9qcm5ndXJlLmt6eScucmVwbGFj
ZShyZTY1LCAnJyk7CisgICAgICAnb2hnZ2JhJy5yZXBsYWNlKHJlMzcsICcnKTsKKyAgICAgICdv
aGdnYmEnLnJlcGxhY2UocmUxOCwgJycpOworICAgICAgJ3FuZ3JndnpyLmt6eScucmVwbGFjZShy
ZTY1LCAnJyk7CisgICAgICAndWdnYzovL2VmZi5wYWEucGJ6L2VmZi9wYWFfZ2JjZmdiZXZyZi5l
ZmYnLnJlcGxhY2UocmU2NSwgJycpOworICAgICAgJ3ZhY2hnJy5yZXBsYWNlKHJlMzcsICcnKTsK
KyAgICAgICd2YWNoZycucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAndmFmdnFyJy5yZXBsYWNl
KHJlNjQsICcnKTsKKyAgICAgICdjYnZhZ3JlJy5yZXBsYWNlKHJlMjcsICcnKTsKKyAgICAgICdj
YmZ2Z3ZiYScucmVwbGFjZSgvW0EtWl0vZywgJycpOworICAgICAgJ2diYycucmVwbGFjZShyZTI3
LCAnJyk7CisgICAgICAnZ2JjJy5yZXBsYWNlKHJlNjQsICcnKTsKKyAgICAgICdoeScucmVwbGFj
ZShyZTM3LCAnJyk7CisgICAgICAnaHknLnJlcGxhY2UocmUxOCwgJycpOworICAgICAgc3RyMjYu
cmVwbGFjZShyZTM3LCAnJyk7CisgICAgICBzdHIyNi5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAg
ICdsYmhnaG9yX3Z0YmJ0eXIvaTIvbGJoZ2hvci5renknLnJlcGxhY2UocmU2NSwgJycpOworICAg
ICAgJ20tdmFxcmsnLnJlcGxhY2UocmUyNywgJycpOworICAgICAgLyMoW1x3LV0rKS8uZXhlYyhz
dHIyNik7CisgICAgICByZTE2LmV4ZWMoJ3VydnR1ZycpOworICAgICAgcmUxNi5leGVjKCd6bmV0
dmFHYmMnKTsKKyAgICAgIHJlMTYuZXhlYygnanZxZ3UnKTsKKyAgICAgIHJlMTkuZXhlYygnZ25v
MCBzdmVmZyBiYScpOworICAgICAgcmUxOS5leGVjKCdnbm8wIGJhJyk7CisgICAgICByZTE5LmV4
ZWMoJ2dubzQgeW5mZycpOworICAgICAgcmUxOS5leGVjKCdnbm80Jyk7CisgICAgICByZTE5LmV4
ZWMoJ2dubzUnKTsKKyAgICAgIHJlMTkuZXhlYygnZ25vNicpOworICAgICAgcmUxOS5leGVjKCdn
bm83Jyk7CisgICAgICByZTE5LmV4ZWMoJ2dubzgnKTsKKyAgICAgIC9OcWJvck5WRVwvKFteXHNd
KikvLmV4ZWMoc3RyMCk7CisgICAgICAvTmNjeXJKcm9YdmdcLyhbXiBdKikvLmV4ZWMoc3RyMCk7
CisgICAgICAvWFVHWlkvZ2kuZXhlYyhzdHIwKTsKKyAgICAgIC9eKD86b2JxbHx1Z3p5KSQvaS5l
eGVjKCdZVicpOworICAgICAgcmUzOC5leGVjKCdvaGdnYmEnKTsKKyAgICAgIHJlMzguZXhlYygn
dmFjaGcnKTsKKyAgICAgIHJlMzguZXhlYygnaHknKTsKKyAgICAgIHJlMzguZXhlYyhzdHIyNik7
CisgICAgICAvXihcdyt8XCopLy5leGVjKHN0cjI2KTsKKyAgICAgIC96bnB8anZhfHl2YWhrL2ku
ZXhlYygnSnZhMzInKTsKKyAgICAgIC9ldG9uP1woW1xkXHMsXStcKS8uZXhlYygnZmduZ3ZwJyk7
CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAnJy5yZXBs
YWNlKC9cci9nLCAnJyk7CisgICAgICAnLycucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnLycu
cmVwbGFjZShyZTEwLCAnJyk7CisgICAgICAnLycucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAn
LycucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICAnLycucmVwbGFjZShyZTUzLCAnJyk7CisgICAg
ICAnLycucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnLycucmVwbGFjZShyZTU0LCAnJyk7Cisg
ICAgICAndWdnYzovL3pmYWNiZWdueS4xMTIuMmI3LmFyZy9vL2ZmL3pmYWNiZWdueXVienIvMS9V
LjctY3FpLTIvezB9P1tORE9dJnsxfSZ7Mn0mW05EUl0nLnJlcGxhY2UocmU2MywgJycpOworICAg
ICAgc3RyNDEucmVwbGFjZShyZTEyLCAnJyk7CisgICAgICAndWdnYzovL2pqai5zbnByb2JieC5w
YnovZmVwdS5jdWMnLnJlcGxhY2UocmUyMywgJycpOworICAgICAgJ2ZyZWl2cHInLnJlcGxhY2Uo
cmU0MCwgJycpOworICAgICAgJ2ZyZWl2cHInLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2Zy
ZWl2cHInLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ2ZyZWl2cHInLnJlcGxhY2UocmU0Mywg
JycpOworICAgICAgJ2ZyZWl2cHInLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ2ZyZWl2cHIn
LnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ2ZyZWl2cHInLnJlcGxhY2UocmU0NiwgJycpOwor
ICAgICAgJ2ZyZWl2cHInLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ2ZyZWl2cHInLnJlcGxh
Y2UocmU0OCwgJycpOworICAgICAgLygoWkZWUlxzKyhbNi05XXxcZFxkKVwuKSkvLmV4ZWMoc3Ry
MCk7CisgICAgICByZTY2LmV4ZWMoJycpOworICAgICAgcmU1MC5leGVjKCdmcnlycGdycScpOwor
ICAgICAgcmU4LmV4ZWMoJzhzcXE3OHI5bjQ0Mjg1MXE1NjU1OTlvNDAxMzg1c3AzczA0cjkycm5u
N28xOXNzbicpOworICAgICAgcmU4LmV4ZWMoJ1NiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQwMzg2
ODkzODY3Jyk7CisgICAgICByZTguZXhlYygnVkM9NzQuMTI1Ljc1LjE3Jyk7CisgICAgICByZTgu
ZXhlYygnRnJmZnZiYVFRUzI9OHNxcTc4cjluNDQyODUxcTU2NTU5OW80MDEzODVzcDNzMDRyOTJy
bm43bzE5c3NuJyk7CisgICAgICAvWGJhZGhyZWJlfEZuc25ldnxYVUdaWS8uZXhlYyhzdHIwKTsK
KyAgICAgIHJlMTMuZXhlYyhzdHI0MSk7CisgICAgICByZTQ5LmV4ZWMoJ3VuZnNicGhmJyk7Cisg
ICAgfQorICB9CisgIHZhciByZTY3ID0gL3pyYWhfYnlxL2c7CisgIHZhciBzdHI0MiA9ICdGcmZm
dmJhUVFTMj00NzNxcTFyczBuMnI3MHE5cW8xcHE0OG4wMjFzOTQ2OHJvbjkwbnBzMDQ4cDRwMjk7
IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hl
cj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zl
bmd2YmE9NjMzNjY5MzI1MTg0NjI4MzYyJmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3
SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVX
NUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1oz
WXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1X
eVd5TTJ5aW94NXVvSkg5RDBSPSc7CisgIHZhciBzdHI0MyA9ICdGcmZmdmJhUVFTMj00NzNxcTFy
czBuMnI3MHE5cW8xcHE0OG4wMjFzOTQ2OHJvbjkwbnBzMDQ4cDRwMjk7IF9faGd6bT0xNDQ2MzE2
NTguMTIzMTM2NDM4MC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9
KGFiYXIpOyBfX2hnem49MTQ0NjMxNjU4LjM5MzE4NjIxOTY5NDc5MzkzMDAuMTIzMTM2NDM4MC4x
MjMxMzY0MzgwLjEyMzEzNjQzODAuMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjQzODA7
IF9faGd6cD0xNDQ2MzE2NTg7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMyZWQ1BoeWdoZXI9cmEt
SEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJh
PTYzMzY2OTMyNTE4NDYyODM2MiZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4
QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pT
Z01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0Rr
QkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lN
Mnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyNDQgPSAndWdnYzovL3RiYnR5cm5xZi50LnFi
aG95cnB5dnB4LmFyZy9jbnRybnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25wcl92em50cmZfd2Ym
cWc9MTIzMTM2NDM3MzA4OCZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFoel9ucWY9NCZiaGdj
aGc9d2YmbnFncmZnPWJzcyZwYmVlcnluZ2JlPTEyMzEzNjQzNzMwODgmcHVuYWFyeT1zdnpfemxm
Y25wcl9oZnJlLWl2cmotcGJ6enJhZ2YlMlBzdnpfemxmY25wcl9oYXZncnEtZmduZ3JmJmhleT11
Z2djJTNOJTJTJTJTcGJ6enJhZy56bGZjbnByLnBieiUyU3ZhcXJrLnBzeiZucV9nbGNyPWdya2cm
cnZxPTYwODMwMjcmcm49MCZzZXo9MCZ0bl9pdnE9MTE1ODczNzc4OS4xMjMxMzY0Mzc1JnRuX2Z2
cT0xMjMxMzY0Mzc1JnRuX3V2cT00MTU1MjA4MzImc3luZnU9OS4wLjExNSZoX3U9NzY4Jmhfaj0x
MDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4MCZoX3V2Zj0yJmhfd25pbj1n
ZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFyIHN0cjQ1ID0gJ1pGUGh5Z2hlcj1WQz03
NC4xMjUuNzUuMyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2Vs
PUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTMyNTE4NDYyODM2MiZndnpyTWJhcj0tOCZI
RkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVX
NUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5
QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURv
M0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyNDYg
PSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHln
aGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtj
dmVuZ3ZiYT02MzM2NjkzMjUxODQ2MjgzNjImZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5
QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhx
VVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNH
WjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFE
bVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAgdmFyIHJlNjggPSAvXihbIy5dPykoKD86W1x3XHUw
MTI4LVx1ZmZmZipfLV18XFwuKSopLzsKKyAgdmFyIHJlNjkgPSAvXHsxXH0vZzsKKyAgdmFyIHJl
NzAgPSAvXHMrLzsKKyAgdmFyIHJlNzEgPSAvKFwkXHs0XH0pfChcJDRcYikvZzsKKyAgdmFyIHJl
NzIgPSAvKFwkXHs1XH0pfChcJDVcYikvZzsKKyAgdmFyIHJlNzMgPSAvXHsyXH0vZzsKKyAgdmFy
IHJlNzQgPSAvW14rPl0gW14rPl0vOworICB2YXIgcmU3NSA9IC9cYnVjcHl2XHMqPVxzKihbXjtd
KikvaTsKKyAgdmFyIHJlNzYgPSAvXGJ1Y3V2cXJccyo9XHMqKFteO10qKS9pOworICB2YXIgcmU3
NyA9IC9cYnVjZmllXHMqPVxzKihbXjtdKikvaTsKKyAgdmFyIHJlNzggPSAvXGJoZnVjanJuXHMq
PVxzKihbXjtdKikvaTsKKyAgdmFyIHJlNzkgPSAvXGJtdmNccyo9XHMqKFteO10qKS9pOworICB2
YXIgcmU4MCA9IC9eKCg/Oltcd1x1MDEyOC1cdWZmZmYqXy1dfFxcLikrKSgjKSgoPzpbXHdcdTAx
MjgtXHVmZmZmKl8tXXxcXC4pKykvOworICB2YXIgcmU4MSA9IC9eKFs+K35dKVxzKihcdyopL2k7
CisgIHZhciByZTgyID0gL14+XHMqKCg/Oltcd1x1MDEyOC1cdWZmZmYqXy1dfFxcLikrKS87Cisg
IHZhciByZTgzID0gL15bXHNbXT9zaGFwZ3ZiYS87CisgIHZhciByZTg0ID0gL3ZcL2cudHZzIygu
KikvaTsKKyAgdmFyIHN0cjQ3ID0gJyNaYnEtVmFzYi1WYXNiLVduaW5GcGV2Y2dVdmFnJzsKKyAg
dmFyIHN0cjQ4ID0gJyxuLnN2cnlxT2dhUG5hcHJ5JzsKKyAgdmFyIHN0cjQ5ID0gJ0ZyZmZ2YmFR
UVMyPXA5OHM4bzlxNDJucjIxb3IxcjYxcHFvcm4xbjAwMm5zc3M1Njk2MzU5ODRzNnFwNzsgWkZQ
aHlnaGVyPVZDPTc0LjEyNS43NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJh
LUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3Zi
YT02MzM2NjkzNTczOTEzNTM1OTEmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4
QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pT
Z01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0Rr
QkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lN
Mnlpb3g1dW9KSDlEMFI9OyBBRlBfenBfa2trLWdkem9ndl84MD00NDEzMjQxcTM2NjAnOworICB2
YXIgc3RyNTAgPSAnRnJmZnZiYVFRUzI9cDk4czhvOXE0Mm5yMjFvcjFyNjFwcW9ybjFuMDAybnNz
czU2OTYzNTk4NHM2cXA3OyBBRlBfenBfa2trLWdkem9ndl84MD00NDEzMjQxcTM2NjA7IEFGUF96
cF9ra2stYW93Yl84MD00NDEzMjM1cDM2NjA7IF9faGd6bT0xNDQ2MzE2NTguMTIzMTM2NzcwOC4x
LjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpOyBfX2hnem49
MTQ0NjMxNjU4LjI3NzA5MTUzNDg5MjA2Mjg3MDAuMTIzMTM2NzcwOC4xMjMxMzY3NzA4LjEyMzEz
Njc3MDguMTsgX19oZ3pvPTE0NDYzMTY1OC4wLjEwLjEyMzEzNjc3MDg7IF9faGd6cD0xNDQ2MzE2
NTg7IFpGUGh5Z2hlcj1WQz03NC4xMjUuNzUuMyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5
Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1NzM5MTM1
MzU5MSZndnpyTWJhcj0tOCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVu
SjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgz
RXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpF
eUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIl
M1EnOworICB2YXIgc3RyNTEgPSAndWdnYzovL3RiYnR5cm5xZi50LnFiaG95cnB5dnB4LmFyZy9j
bnRybnEvbnFmP3B5dnJhZz1wbi1zdnpfemxmY25wcl96bGZjbnByLXVienJjbnRyX3dmJnFnPTEy
MzEzNjc2OTExNDEmdXk9cmEmbnFmbnNyPXV2dHUmYnI9aGdzOCZhaHpfbnFmPTQmYmhnY2hnPXdm
Jm5xZ3JmZz1ic3MmcGJlZXJ5bmdiZT0xMjMxMzY3NjkxMTQxJnB1bmFhcnk9c3Z6X3psZmNucHJf
dWJ6cmNudHJfYWJneWJ0dHJxdmElMlBzdnpfemxmY25wcl9hYmFfSFRQJTJQc3Z6X3psZmNucHJf
aGF2Z3JxLWZnbmdyZiZoZXk9dWdnYyUzTiUyUyUyU2pqai56bGZjbnByLnBieiUyUyZucV9nbGNy
PWdya2cmcnZxPTYwODMwMjcmcm49MCZzZXo9MCZ0bl9pdnE9MzIwNzU3OTA0LjEyMzEzNjc2OTQm
dG5fZnZxPTEyMzEzNjc2OTQmdG5fdXZxPTE3NTg3OTIwMDMmc3luZnU9OS4wLjExNSZoX3U9NzY4
Jmhfaj0xMDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4MCZoX3V2Zj0yJmhf
d25pbj1nZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFyIHN0cjUyID0gJ3VnZ2M6Ly96
ZmFjYmVnbnkuMTEyLjJiNy5hcmcvby9mZi96ZmFjYmVnbnl1YnpyLzEvVS43LWNxaS0yL2Y1NTMz
Mjk3OTgyOTk4MT9bTkRPXSZhcXU9MSZnPTclMlMwJTJTMjAwOSUyMDE0JTNOMzglM040MiUyMDMl
MjA0ODAmYWY9emZhY2JlZ255JmNudHJBbnpyPUhGJTIwVUNaRlNHSiZ0PXVnZ2MlM04lMlMlMlNq
amouemZhLnBieiUyUyZmPTEwMjRrNzY4JnA9MjQmeD1MJm9qPTk5NCZvdT02MzQmdWM9QSZ7Mn0m
W05EUl0nOworICB2YXIgc3RyNTMgPSAnY25lcmFnIHB1ZWJ6cjYgZnZhdHlyMSBnbm8gZnJ5cnBn
cnEgb3ZhcSBxYmhveXIyIHBzJzsKKyAgdmFyIHN0cjU0ID0gJ1pGUGh5Z2hlcj1WQz03NC4xMjUu
NzUuMyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhhZ2VsPUlJWiUz
USZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1NzM5MTM1MzU5MSZndnpyTWJhcj0tOCZIRkVZQlA9
REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhN
RzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4
a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEpr
UW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3RyNTUgPSAnWkZQ
aHlnaGVyPVZDPTc0LjEyNS43NS4zJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJh
LUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3Zi
YT02MzM2NjkzNTczOTEzNTM1OTEmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4
QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pT
Z01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0Rr
QkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lN
Mnlpb3g1dW9KSDlEMFI9JzsKKyAgdmFyIHN0cjU2ID0gJ25lO25nO25oO29yO29lO3BuO3B1O3B5
O3BhO3FyO3F4O3JmO3N2O3NlO3RvO3V4O3ZxO3ZyO3ZhO3ZnO3djO3hlO3prO3psO2F5O2FiO2Ft
O2N1O2N5O2NnO2VoO2ZyO2Z0O2d1O2dlO2dqO21uOyc7CisgIHZhciBzdHI1NyA9ICdaUDE9ST0z
JlRIVlE9Nm5ucHI5cTY2MTgwNHMzM25ub3A0NW5vc3FwMTdxODU7IHp1PVpGU0c7IFBIWUdIRVI9
UkEtSEY7IFN5dnR1Z1RlYmhjVnE9OTc7IFN5dnR1Z1ZxPU9uZnJDbnRyOyB1Y2ZpZT1aOjV8Uzo1
fEc6NXxSOjV8UTpveWh8SjpTOyB1Y3B5dj1KLlV8WS58Ri58RS58SC5ZfFAufFUuOyBoZnVjanJu
PWpwOkhGUE4wNzQ2OyBaSFZRPVE3ODNTTjlPMTQwNTQ4MzFONDg2OVI1MVAwU084ODg2JkdIVlE9
MSc7CisgIHZhciBzdHI1OCA9ICdaUDE9ST0zJlRIVlE9Nm5ucHI5cTY2MTgwNHMzM25ub3A0NW5v
c3FwMTdxODU7IHp1PVpGU0c7IFBIWUdIRVI9UkEtSEY7IFN5dnR1Z1RlYmhjVnE9OTc7IFN5dnR1
Z1ZxPU9uZnJDbnRyOyB1Y2ZpZT1aOjV8Uzo1fEc6NXxSOjV8UTpveWh8SjpTOyB1Y3B5dj1KLlV8
WS58Ri58RS58SC5ZfFAufFUuOyBoZnVjanJuPWpwOkhGUE4wNzQ2OyBaSFZRPVE3ODNTTjlPMTQw
NTQ4MzFONDg2OVI1MVAwU084ODg2JzsKKyAgdmFyIHN0cjU5ID0gJ1pQMT1JPTMmVEhWUT02bm5w
cjlxNjYxODA0czMzbm5vcDQ1bm9zcXAxN3E4NTsgenU9WkZTRzsgUEhZR0hFUj1SQS1IRjsgU3l2
dHVnVGViaGNWcT05NzsgU3l2dHVnVnE9T25mckNudHI7IHVjZmllPVo6NXxTOjV8Rzo1fFI6NXxR
Om95aHxKOlM7IHVjcHl2PUouVXxZLnxGLnxFLnxILll8UC58VS47IGhmdWNqcm49anA6SEZQTjA3
NDY7IFpIVlE9UTc4M1NOOU8xNDA1NDgzMU40ODY5UjUxUDBTTzg4ODY7IG12Yz1tOjk0MDQzfHlu
OjM3LjQxNTR8eWI6LTEyMi4wNTg1fHA6SEZ8dWU6MSc7CisgIHZhciBzdHI2MCA9ICdaUDE9ST0z
JlRIVlE9Nm5ucHI5cTY2MTgwNHMzM25ub3A0NW5vc3FwMTdxODU7IHp1PVpGU0c7IFBIWUdIRVI9
UkEtSEY7IFN5dnR1Z1RlYmhjVnE9OTc7IFN5dnR1Z1ZxPU9uZnJDbnRyOyB1Y2ZpZT1aOjV8Uzo1
fEc6NXxSOjV8UTpveWh8SjpTOyB1Y3B5dj1KLlV8WS58Ri58RS58SC5ZfFAufFUuOyBoZnVjanJu
PWpwOkhGUE4wNzQ2OyBaSFZRPVE3ODNTTjlPMTQwNTQ4MzFONDg2OVI1MVAwU084ODg2OyBtdmM9
bTo5NDA0M3x5bjozNy40MTU0fHliOi0xMjIuMDU4NXxwOkhGJzsKKyAgdmFyIHN0cjYxID0gJ3Vn
Z2M6Ly9neDIuZmdwLmYtemZhLnBiei9vZS91Yy8xMS9yYS1oZi9wZmYvdi9nLnR2cyN1Z2djOi8v
Z3gyLmZnby5mLXpmYS5wYnovdi8yOS80UlFQNDk2OTc3N04wNDhOUFM0UlJSM1BPMlM3Uy53Y3Qn
OworICB2YXIgc3RyNjIgPSAndWdnYzovL2d4Mi5mZ3AuZi16ZmEucGJ6L29lL3VjLzExL3JhLWhm
L3BmZi92L2cudHZzI3VnZ2M6Ly9neDIuZmdvLmYtemZhLnBiei92L09RLzYzTlA5Tzk0TlM1T1FQ
MTI0OVE5UzFST1A3TlMzLndjdCc7CisgIHZhciBzdHI2MyA9ICd6Ym12eXluLzUuMCAoanZhcWJq
ZjsgaDsganZhcWJqZiBhZyA1LjE7IHJhLWhmKSBuY2N5cmpyb3h2Zy81MjguOSAoeHVnenksIHl2
eHIgdHJweGIpIHB1ZWJ6ci8yLjAuMTU3LjAgZm5zbmV2LzUyOC45JzsKKyAgZnVuY3Rpb24gcnVu
QmxvY2s5KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICBzdHI0
Mi5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjQzLnNwbGl0KHJlMzIpOworICAgICAgJ3N2el96bGZj
bnByX2hmcmUtaXZyai1wYnp6cmFnZixzdnpfemxmY25wcl9oYXZncnEtZmduZ3JmJy5zcGxpdChy
ZTIwKTsKKyAgICAgIHN0cjQ0LnJlcGxhY2UocmUzMywgJycpOworICAgICAgJ3pyYWhfYXJqIHpy
YWhfYXJqX2didHR5ciB6cmFoX2didHR5cicucmVwbGFjZShyZTY3LCAnJyk7CisgICAgICAnenJh
aF9ieXEgenJhaF9ieXFfZ2J0dHlyIHpyYWhfZ2J0dHlyJy5yZXBsYWNlKHJlNjcsICcnKTsKKyAg
ICAgIHJlOC5leGVjKCcxMDJuOW8wbzlwcTYwMTMycW4wMzM3cnI4NjdwNzU5NTM1MDJxMnMyN3My
czVyOTgnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMC4xMC4xMjMxMzY0MzgwJyk7Cisg
ICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjEyMzEzNjQzODAuMS4xLmhnenBmZT0ocXZlcnBnKXxo
Z3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShhYmFyKScpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1
OC4zOTMxODYyMTk2OTQ3OTM5MzAwLjEyMzEzNjQzODAuMTIzMTM2NDM4MC4xMjMxMzY0MzgwLjEn
KTsKKyAgICAgIHJlOC5leGVjKCc0NDEzMjZxMzM2NjAnKTsKKyAgICAgIHJlOC5leGVjKCdTYmVw
cnFSa2N2ZW5ndmJhPTYzMzY2OTM0MTI3ODc3MTQ3MCcpOworICAgICAgcmU4LmV4ZWMoc3RyNDUp
OworICAgICAgcmU4LmV4ZWMoc3RyNDYpOworICAgICAgcmU4LmV4ZWMoJ0FGUF96cF9kZmN0d3pz
c3J3aC1hb3diXzgwPTQ0MTMyNnEzMzY2MCcpOworICAgICAgcmU4LmV4ZWMoJ0ZyZmZ2YmFRUVMy
PTEwMm45bzBvOXBxNjAxMzJxbjAzMzdycjg2N3A3NTk1MzUwMnEyczI3czJzNXI5OCcpOworICAg
ICAgcmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguMzkzMTg2MjE5Njk0NzkzOTMwMC4xMjMxMzY0
MzgwLjEyMzEzNjQzODAuMTIzMTM2NDM4MC4xJyk7CisgICAgICByZTguZXhlYygnX19oZ3pvPTE0
NDYzMTY1OC4wLjEwLjEyMzEzNjQzODAnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem09MTQ0NjMx
NjU4LjEyMzEzNjQzODAuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpx
PShhYmFyKScpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAg
ICAgJyB5dmZnMScucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnIHl2ZmcxJy5yZXBsYWNlKHJl
MTUsICcnKTsKKyAgICAgICcgeXZmZzInLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJyB5dmZn
MicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnIGZybmVwdXRlYmhjMScucmVwbGFjZShyZTE0
LCAnJyk7CisgICAgICAnIGZybmVwdXRlYmhjMScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICBz
dHI0Ny5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgIHN0cjQ3LnJlcGxhY2UocmUxOCwgJycpOwor
ICAgICAgJycucmVwbGFjZSgvJi9nLCAnJyk7CisgICAgICAnJy5yZXBsYWNlKHJlMzUsICcnKTsK
KyAgICAgICcoLi4tezB9KShcfChcZCspfCknLnJlcGxhY2UocmU2MywgJycpOworICAgICAgc3Ry
NDgucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAnLy92enQuanJvLnFyL3Zpai9GQy8ke2NuZ3V9
LyR7YW56cn0vJHtpbnlocn0/Z2Y9JHthYmp9Jy5yZXBsYWNlKHJlNTYsICcnKTsKKyAgICAgICcv
L3Z6dC5qcm8ucXIvdmlqL0ZDL3R6a191Yy8ke2FuenJ9LyR7aW55aHJ9P2dmPSR7YWJqfScucmVw
bGFjZSgvKFwkXHthbnpyXH0pfChcJGFuenJcYikvZywgJycpOworICAgICAgJzxmY25hIHB5bmZm
PSJ1cm5xIj48bz5KdmFxYmpmIFl2aXIgVWJnem52eTwvbz48L2ZjbmE+PGZjbmEgcHluZmY9Inpm
dCI+ezF9PC9mY25hPicucmVwbGFjZShyZTY5LCAnJyk7CisgICAgICAnPGZjbmEgcHluZmY9InVy
bnEiPjxvPnswfTwvbz48L2ZjbmE+PGZjbmEgcHluZmY9InpmdCI+ezF9PC9mY25hPicucmVwbGFj
ZShyZTYzLCAnJyk7CisgICAgICAnPGZjbmEgcHluZmY9ImZ2dGFoYyI+PG4gdWVycz11Z2djOi8v
ampqLnViZ3pudnkucGJ6PjxvPnsxfTwvbz48L24+PC9mY25hPicucmVwbGFjZShyZTY5LCAnJyk7
CisgICAgICAnPGZjbmEgcHluZmY9ImZ2dGFoYyI+PG4gdWVycz17MH0+PG8+ezF9PC9vPjwvbj48
L2ZjbmE+Jy5yZXBsYWNlKHJlNjMsICcnKTsKKyAgICAgICdWem50cmYnLnJlcGxhY2UocmUxNSwg
JycpOworICAgICAgJ1pGQScucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAnWm5jZicucmVwbGFj
ZShyZTE1LCAnJyk7CisgICAgICAnWmJxLVZhc2ItVmFzYi1XbmluRnBldmNnVXZhZycucmVwbGFj
ZShyZTM5LCAnJyk7CisgICAgICAnQXJqZicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICBzdHI0
OS5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjUwLnNwbGl0KHJlMzIpOworICAgICAgJ0l2cXJiJy5y
ZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdKcm8nLnJlcGxhY2UocmUxNSwgJycpOworICAgICAg
J24nLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ253bmtGZ25lZycuc3BsaXQocmU3MCk7Cisg
ICAgICAnbndua0ZnYmMnLnNwbGl0KHJlNzApOworICAgICAgJ292YXEnLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgJ292YXEnLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ29ldmF0ZiBsYmgg
emJlci4gWmJlciBmY25wciAoNVRPKSwgemJlciBmcnBoZXZnbCwgZmd2eXkgc2Vyci4nLnJlcGxh
Y2UocmU2MywgJycpOworICAgICAgJ3B1dnlxIHAxIHN2ZWZnIHFycHgnLnJlcGxhY2UocmUxNCwg
JycpOworICAgICAgJ3B1dnlxIHAxIHN2ZWZnIHFycHgnLnJlcGxhY2UocmUxNSwgJycpOworICAg
ICAgJ3B1dnlxIHAxIHN2ZWZnIHFiaG95cjInLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3B1
dnlxIHAxIHN2ZWZnIHFiaG95cjInLnJlcGxhY2UocmUxNSwgJycpOworICAgICAgJ3B1dnlxIHAy
IHluZmcnLnJlcGxhY2UocmUxNCwgJycpOworICAgICAgJ3B1dnlxIHAyIHluZmcnLnJlcGxhY2Uo
cmUxNSwgJycpOworICAgICAgJ3B1dnlxIHAyJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdw
dXZ5cSBwMicucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncHV2eXEgcDMnLnJlcGxhY2UocmUx
NCwgJycpOworICAgICAgJ3B1dnlxIHAzJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdwdXZ5
cSBwNCB5bmZnJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdwdXZ5cSBwNCB5bmZnJy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICdwYmNsZXZ0dWcnLnJlcGxhY2UocmUxNCwgJycpOworICAg
ICAgJ3BiY2xldnR1ZycucmVwbGFjZShyZTE1LCAnJyk7CisgICAgICAncVpGQVpSXzEnLnJlcGxh
Y2UocmUxNCwgJycpOworICAgICAgJ3FaRkFaUl8xJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAg
ICdxYmhveXIyIHBzJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdxYmhveXIyIHBzJy5yZXBs
YWNlKHJlMTUsICcnKTsKKyAgICAgICdxYmhveXIyJy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAg
ICdxYmhveXIyJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd1cXlfYXJqJy5yZXBsYWNlKHJl
MTQsICcnKTsKKyAgICAgICd1cXlfYXJqJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd1Y19m
dWJjY3ZhdG9iaycucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAndWd6eSUyUnZxJy5yZXBsYWNl
KHJlMjksICcnKTsKKyAgICAgICd1Z3p5JTJSdnEnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAg
c3RyNTEucmVwbGFjZShyZTMzLCAnJyk7CisgICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90
emsvdWJ6ci93Zi8yMDA4MDYwMi9jZWJnYmdsY3Iud2YkezR9JHs1fScucmVwbGFjZShyZTcxLCAn
Jyk7CisgICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6ci93Zi8yMDA4MDYwMi9j
ZWJnYmdsY3Iud2YkezV9Jy5yZXBsYWNlKHJlNzIsICcnKTsKKyAgICAgIHN0cjUyLnJlcGxhY2Uo
cmU3MywgJycpOworICAgICAgJ3VnZ2M6Ly96ZmFjYmVnbnkuMTEyLjJiNy5hcmcvby9mZi96ZmFj
YmVnbnl1YnpyLzEvVS43LWNxaS0yL2Y1NTMzMjk3OTgyOTk4MT9bTkRPXSZ7MX0mezJ9JltORFJd
Jy5yZXBsYWNlKHJlNjksICcnKTsKKyAgICAgICd2enRaRlNHJy5yZXBsYWNlKHJlMTQsICcnKTsK
KyAgICAgICd2enRaRlNHJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICd6ZmFzYmJnMSBwcycu
cmVwbGFjZShyZTE0LCAnJyk7CisgICAgICAnemZhc2JiZzEgcHMnLnJlcGxhY2UocmUxNSwgJycp
OworICAgICAgc3RyNTMucmVwbGFjZShyZTE0LCAnJyk7CisgICAgICBzdHI1My5yZXBsYWNlKHJl
MTUsICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdubyBmcnlycGdycSBvdmFx
Jy5yZXBsYWNlKHJlMTQsICcnKTsKKyAgICAgICdjbmVyYWcgcHVlYnpyNiBmdmF0eXIxIGdubyBm
cnlycGdycSBvdmFxJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdjZXZ6bmVsJy5yZXBsYWNl
KHJlMTQsICcnKTsKKyAgICAgICdjZXZ6bmVsJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdl
cnBnbmF0eXInLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ2ZycGJhcW5lbCcucmVwbGFjZShy
ZTE0LCAnJyk7CisgICAgICAnZnJwYmFxbmVsJy5yZXBsYWNlKHJlMTUsICcnKTsKKyAgICAgICdo
YXlibnEnLnNwbGl0KHJlNzApOworICAgICAgJ3swfXsxfTEnLnJlcGxhY2UocmU2MywgJycpOwor
ICAgICAgJ3x7MX0xJy5yZXBsYWNlKHJlNjksICcnKTsKKyAgICAgIC8oLi4tSEYpKFx8KFxkKyl8
KS9pLmV4ZWMoJ3hiLXhlLHJhLXZhLGd1LWd1Jyk7CisgICAgICByZTQuZXhlYygnL1psRmNucHJO
Y2NmL05jY1BuYWluZiw0NTAwMDAxMicpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4wLjEw
LjEyMzEzNjc3MDgnKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2NzcwOC4xLjEu
aGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICBy
ZTguZXhlYygnMTQ0NjMxNjU4LjI3NzA5MTUzNDg5MjA2Mjg3MDAuMTIzMTM2NzcwOC4xMjMxMzY3
NzA4LjEyMzEzNjc3MDguMScpOworICAgICAgcmU4LmV4ZWMoJzQ0MTMyMzVwMzY2MCcpOworICAg
ICAgcmU4LmV4ZWMoJzQ0MTMyN3E3MzY2MCcpOworICAgICAgcmU4LmV4ZWMoJzk5OTVwNnJwMTJy
cm5yODkzMzM0cm83bnE3MG83cDY0cDY5cnFuODQ0cHJzMTQ3MycpOworICAgICAgcmU4LmV4ZWMo
J1NiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzUwNTU5NDc4ODgwJyk7CisgICAgICByZTguZXhlYyhz
dHI1NCk7CisgICAgICByZTguZXhlYyhzdHI1NSk7CisgICAgICByZTguZXhlYygnQUZQX3pwX2Rm
Y3R3enMtYW93Yl84MD00NDEzMjdxNzM2NjAnKTsKKyAgICAgIHJlOC5leGVjKCdBRlBfenBfa2tr
LWFvd2JfODA9NDQxMzIzNXAzNjYwJyk7CisgICAgICByZTguZXhlYygnRnJmZnZiYVFRUzI9OTk5
NXA2cnAxMnJybnI4OTMzMzRybzducTcwbzdwNjRwNjlycW44NDRwcnMxNDczJyk7CisgICAgICBy
ZTguZXhlYygnX19oZ3puPTE0NDYzMTY1OC4yNzcwOTE1MzQ4OTIwNjI4NzAwLjEyMzEzNjc3MDgu
MTIzMTM2NzcwOC4xMjMxMzY3NzA4LjEnKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0NjMx
NjU4LjAuMTAuMTIzMTM2NzcwOCcpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2NTgu
MTIzMTM2NzcwOC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFi
YXIpJyk7CisgICAgICByZTM0LmV4ZWMoc3RyNDkpOworICAgICAgcmUzNC5leGVjKHN0cjUwKTsK
KyAgICAgIC9aRlZSXHMrNVsuXTAxLy5leGVjKHN0cjApOworICAgICAgL0hGKD89OykvaS5leGVj
KHN0cjU2KTsKKyAgICAgIHJlNzQuZXhlYyhzdHI0Nyk7CisgICAgICByZTI4LmV4ZWMoJ3N2ZWZn
IG5wZ3ZpciBzdmVmZ05wZ3ZpcicpOworICAgICAgcmUyOC5leGVjKCd5bmZnJyk7CisgICAgICAv
XGJwOiguLikvaS5leGVjKCdtOjk0MDQzfHluOjM3LjQxNTR8eWI6LTEyMi4wNTg1fHA6SEYnKTsK
KyAgICAgIHJlNzUuZXhlYyhzdHI1Nyk7CisgICAgICByZTc1LmV4ZWMoc3RyNTgpOworICAgICAg
cmU3Ni5leGVjKHN0cjU3KTsKKyAgICAgIHJlNzYuZXhlYyhzdHI1OCk7CisgICAgICByZTc3LmV4
ZWMoc3RyNTcpOworICAgICAgcmU3Ny5leGVjKHN0cjU4KTsKKyAgICAgIC9cYmhmdWNjZVxzKj1c
cyooW147XSopL2kuZXhlYyhzdHI1OSk7CisgICAgICByZTc4LmV4ZWMoc3RyNTcpOworICAgICAg
cmU3OC5leGVjKHN0cjU4KTsKKyAgICAgIC9cYmpjaVxzKj1ccyooW147XSopL2kuZXhlYyhzdHI1
OSk7CisgICAgICByZTc5LmV4ZWMoc3RyNTgpOworICAgICAgcmU3OS5leGVjKHN0cjYwKTsKKyAg
ICAgIHJlNzkuZXhlYyhzdHI1OSk7CisgICAgICAvXHxwOihbYS16XXsyfSkvaS5leGVjKCdtOjk0
MDQzfHluOjM3LjQxNTR8eWI6LTEyMi4wNTg1fHA6SEZ8dWU6MScpOworICAgICAgcmU4MC5leGVj
KHN0cjQ3KTsKKyAgICAgIHJlNjEuZXhlYygnY2ViZ2JnbGNyLndmJyk7CisgICAgICByZTY4LmV4
ZWMoc3RyNDcpOworICAgICAgcmU4MS5leGVjKHN0cjQ3KTsKKyAgICAgIHJlODIuZXhlYyhzdHI0
Nyk7CisgICAgICAvXkZ1YnB4am5pciBTeW5mdSAoXGQpLy5leGVjKHN0cjEpOworICAgICAgL15G
dWJweGpuaXIgU3luZnUgKFxkKykvLmV4ZWMoc3RyMSk7CisgICAgICByZTgzLmV4ZWMoJ1tib3dy
cGcgdHlib255XScpOworICAgICAgcmU2Mi5leGVjKHN0cjQ3KTsKKyAgICAgIHJlODQuZXhlYyhz
dHI2MSk7CisgICAgICByZTg0LmV4ZWMoc3RyNjIpOworICAgICAgL2pyb3h2Zy8uZXhlYyhzdHI2
Myk7CisgICAgfQorICB9CisgIHZhciByZTg1ID0gL2VhcV96YnFvYmt2YS87CisgIHZhciBzdHI2
NCA9ICcxMjMxMzY1NzI5MjEzJzsKKyAgdmFyIHN0cjY1ID0gJzc0LjEyNS43NS4zLTEwNTcxNjU2
MDAuMjk5Nzg5MDAnOworICB2YXIgc3RyNjYgPSAnNzQuMTI1Ljc1LjMtMTA1NzE2NTYwMC4yOTk3
ODkwMC4xMjMxMzY1NzMwMjE0JzsKKyAgdmFyIHN0cjY3ID0gJ0ZybmVwdSUyMFp2cGViZmJzZy5w
YnonOworICB2YXIgc3RyNjggPSAnRnJmZnZiYVFRUzI9OHNxcTc4cjluNDQyODUxcTU2NTU5OW80
MDEzODVzcDNzMDRyOTJybm43bzE5c3NuOyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjE3JlZDUGh5
Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0
PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNDAzODY4OTM4NjcmZ3Z6ck1i
YXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFv
M0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xI
QWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFI
M0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAgdmFyIHN0
cjY5ID0gJ0ZyZmZ2YmFRUVMyPThzcXE3OHI5bjQ0Mjg1MXE1NjU1OTlvNDAxMzg1c3AzczA0cjky
cm5uN28xOXNzbjsgX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY1Nzc5LjEuMS5oZ3pwZmU9KHF2ZXJw
Zyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhcik7IF9faGd6bj0xNDQ2MzE2NTguMTg3NzUz
NjE3Nzk1MzkxODUwMC4xMjMxMzY1Nzc5LjEyMzEzNjU3NzkuMTIzMTM2NTc3OS4xOyBfX2hnem89
MTQ0NjMxNjU4LjAuMTAuMTIzMTM2NTc3OTsgX19oZ3pwPTE0NDYzMTY1ODsgWkZQaHlnaGVyPVZD
PTc0LjEyNS43NS4xNyZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhh
Z2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM0MDM4Njg5Mzg2NyZndnpyTWJhcj0t
OCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0lo
cVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlN
VEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQ
TURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3Ry
NzAgPSAnST0zJTI2VEhWUT03NTdxM3NzODcxcTQ0bzdvODA1bjgxMTNuNXA3MnE1Mic7CisgIHZh
ciBzdHI3MSA9ICdJPTMmVEhWUT03NTdxM3NzODcxcTQ0bzdvODA1bjgxMTNuNXA3MnE1Mic7Cisg
IHZhciBzdHI3MiA9ICd1Z2djOi8vdGJidHlybnFmLnQucWJob3lycHl2cHguYXJnL2NudHJucS9u
cWY/cHl2cmFnPXBuLXN2el96bGZjbnByX3psZmNucHItdWJ6cmNudHJfd2YmcWc9MTIzMTM2NTc2
NTI5MiZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFoel9ucWY9NCZiaGdjaGc9d2YmbnFncmZn
PWJzcyZwYmVlcnluZ2JlPTEyMzEzNjU3NjUyOTImcHVuYWFyeT1zdnpfemxmY25wcl91YnpyY250
cl9hYmd5YnR0cnF2YSUyUHN2el96bGZjbnByX2FiYV9IVFAlMlBzdnpfemxmY25wcl9oYXZncnEt
ZmduZ3JmJmhleT11Z2djJTNOJTJTJTJTb2h5eXJndmFmLnpsZmNucHIucGJ6JTJTdmFxcmsucHN6
Jm5xX2dsY3I9Z3JrZyZydnE9NjA4MzAyNyZybj0wJnNlej0wJnRuX2l2cT0xNTc5NzkzODY5LjEy
MzEzNjU3NjgmdG5fZnZxPTEyMzEzNjU3NjgmdG5fdXZxPTIwNTYyMTA4OTcmc3luZnU9OS4wLjEx
NSZoX3U9NzY4Jmhfaj0xMDI0JmhfbnU9NzM4Jmhfbmo9MTAyNCZoX3BxPTI0JmhfZ209LTQ4MCZo
X3V2Zj0yJmhfd25pbj1nZWhyJmhfYWN5aHQ9NyZoX2F6dnpyPTIyJzsKKyAgdmFyIHN0cjczID0g
J2ZybmVwdS56dnBlYmZic2cucGJ6JzsKKyAgdmFyIHN0cjc0ID0gJ2ZybmVwdS56dnBlYmZic2cu
cGJ6Lyc7CisgIHZhciBzdHI3NSA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjE3JlZDUGh5Z2hl
cj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJlBiaGFnZWw9SUlaJTNRJlNiZXBycVJrY3Zl
bmd2YmE9NjMzNjY5MzQwMzg2ODkzODY3Jmd2enJNYmFyPS04JkhGRVlCUD1ES1d5TEhBaU1USDlB
d0hqV3hBY3FVeDlHSjkxb2FFdW5KNHRJenl5cWxNUW8zSWhxVVc1RDI5eE1HMUlIbE1RbzNJaHFV
VzVHelNnTUcxSW96eTBNSkR0SDNFdXFUSW1XeEVnTEhBaU1USDlCUU4zV3hrdXFUeTBxSkV5Q0da
M1l3RGtCR1Z6R1Q5aE0yeTBxSkV5Q0Ywa1p3VmhaUUgzQVBNRG8zQTBMSmtRbzJFeUNHeDBaUURt
V3lXeU0yeWlveDV1b0pIOUQwUiUzUSc7CisgIHZhciBzdHI3NiA9ICdaRlBoeWdoZXI9VkM9NzQu
MTI1Ljc1LjE3JlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNyZWVy
cVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2NjkzNDAz
ODY4OTM4NjcmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9h
RXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpE
dEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkw
cUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlE
MFI9JzsKKyAgZnVuY3Rpb24gcnVuQmxvY2sxMCgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDM7IGkrKykgeworICAgICAgJyUzU3p4Zz1yYS1IRicucmVwbGFjZShyZTM5LCAnJyk7CisgICAg
ICAnLTgnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJy04Jy5yZXBsYWNlKHJlMTAsICcnKTsK
KyAgICAgICctOCcucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnLTgnLnJlcGxhY2UocmU1Miwg
JycpOworICAgICAgJy04Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICctOCcucmVwbGFjZShy
ZTM5LCAnJyk7CisgICAgICAnLTgnLnJlcGxhY2UocmU1NCwgJycpOworICAgICAgJzEuNScucmVw
bGFjZShyZTQwLCAnJyk7CisgICAgICAnMS41Jy5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgICcx
LjUnLnJlcGxhY2UocmU1MSwgJycpOworICAgICAgJzEuNScucmVwbGFjZShyZTUyLCAnJyk7Cisg
ICAgICAnMS41Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICcxLjUnLnJlcGxhY2UocmUzOSwg
JycpOworICAgICAgJzEuNScucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJl
cGxhY2UocmU0MCwgJycpOworICAgICAgJzEwMjRrNzY4Jy5yZXBsYWNlKHJlMTAsICcnKTsKKyAg
ICAgICcxMDI0azc2OCcucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJlcGxh
Y2UocmU1MiwgJycpOworICAgICAgJzEwMjRrNzY4Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAg
ICcxMDI0azc2OCcucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnMTAyNGs3NjgnLnJlcGxhY2Uo
cmU1NCwgJycpOworICAgICAgc3RyNjQucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICBzdHI2NC5y
ZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgIHN0cjY0LnJlcGxhY2UocmU1MSwgJycpOworICAgICAg
c3RyNjQucmVwbGFjZShyZTUyLCAnJyk7CisgICAgICBzdHI2NC5yZXBsYWNlKHJlNTMsICcnKTsK
KyAgICAgIHN0cjY0LnJlcGxhY2UocmUzOSwgJycpOworICAgICAgc3RyNjQucmVwbGFjZShyZTU0
LCAnJyk7CisgICAgICAnMTQnLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJzE0Jy5yZXBsYWNl
KHJlMTAsICcnKTsKKyAgICAgICcxNCcucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICAnMTQnLnJl
cGxhY2UocmU1MiwgJycpOworICAgICAgJzE0Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICcx
NCcucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnMTQnLnJlcGxhY2UocmU1NCwgJycpOworICAg
ICAgJzI0Jy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICcyNCcucmVwbGFjZShyZTEwLCAnJyk7
CisgICAgICAnMjQnLnJlcGxhY2UocmU1MSwgJycpOworICAgICAgJzI0Jy5yZXBsYWNlKHJlNTIs
ICcnKTsKKyAgICAgICcyNCcucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICAnMjQnLnJlcGxhY2Uo
cmUzOSwgJycpOworICAgICAgJzI0Jy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgIHN0cjY1LnJl
cGxhY2UocmU0MCwgJycpOworICAgICAgc3RyNjUucmVwbGFjZShyZTEwLCAnJyk7CisgICAgICBz
dHI2NS5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgIHN0cjY1LnJlcGxhY2UocmU1MiwgJycpOwor
ICAgICAgc3RyNjUucmVwbGFjZShyZTUzLCAnJyk7CisgICAgICBzdHI2NS5yZXBsYWNlKHJlMzks
ICcnKTsKKyAgICAgIHN0cjY1LnJlcGxhY2UocmU1NCwgJycpOworICAgICAgc3RyNjYucmVwbGFj
ZShyZTQwLCAnJyk7CisgICAgICBzdHI2Ni5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgIHN0cjY2
LnJlcGxhY2UocmU1MSwgJycpOworICAgICAgc3RyNjYucmVwbGFjZShyZTUyLCAnJyk7CisgICAg
ICBzdHI2Ni5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgIHN0cjY2LnJlcGxhY2UocmUzOSwgJycp
OworICAgICAgc3RyNjYucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICAnOS4wJy5yZXBsYWNlKHJl
NDAsICcnKTsKKyAgICAgICc5LjAnLnJlcGxhY2UocmUxMCwgJycpOworICAgICAgJzkuMCcucmVw
bGFjZShyZTUxLCAnJyk7CisgICAgICAnOS4wJy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICc5
LjAnLnJlcGxhY2UocmU1MywgJycpOworICAgICAgJzkuMCcucmVwbGFjZShyZTM5LCAnJyk7Cisg
ICAgICAnOS4wJy5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICc5OTRrNjM0Jy5yZXBsYWNlKHJl
NDAsICcnKTsKKyAgICAgICc5OTRrNjM0Jy5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgICc5OTRr
NjM0Jy5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAgICc5OTRrNjM0Jy5yZXBsYWNlKHJlNTIsICcn
KTsKKyAgICAgICc5OTRrNjM0Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICc5OTRrNjM0Jy5y
ZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICc5OTRrNjM0Jy5yZXBsYWNlKHJlNTQsICcnKTsKKyAg
ICAgICc/enhnPXJhLUhGJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICc/enhnPXJhLUhGJy5y
ZXBsYWNlKHJlMTAsICcnKTsKKyAgICAgICc/enhnPXJhLUhGJy5yZXBsYWNlKHJlNTEsICcnKTsK
KyAgICAgICc/enhnPXJhLUhGJy5yZXBsYWNlKHJlNTIsICcnKTsKKyAgICAgICc/enhnPXJhLUhG
Jy5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgICc/enhnPXJhLUhGJy5yZXBsYWNlKHJlNTQsICcn
KTsKKyAgICAgICdQQUEucGJ6Jy5yZXBsYWNlKHJlMjUsICcnKTsKKyAgICAgICdQQUEucGJ6Jy5y
ZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgICdQQUEucGJ6Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAg
ICAgICdRbmdyICYgR3Z6cicucmVwbGFjZShyZTI1LCAnJyk7CisgICAgICAnUW5nciAmIEd2enIn
LnJlcGxhY2UocmUxMiwgJycpOworICAgICAgJ1FuZ3IgJiBHdnpyJy5yZXBsYWNlKHJlMzksICcn
KTsKKyAgICAgICdGcm5lcHUgWnZwZWJmYnNnLnBieicucmVwbGFjZShyZTQwLCAnJyk7CisgICAg
ICAnRnJuZXB1IFp2cGViZmJzZy5wYnonLnJlcGxhY2UocmU1NCwgJycpOworICAgICAgc3RyNjcu
cmVwbGFjZShyZTEwLCAnJyk7CisgICAgICBzdHI2Ny5yZXBsYWNlKHJlNTEsICcnKTsKKyAgICAg
IHN0cjY3LnJlcGxhY2UocmU1MiwgJycpOworICAgICAgc3RyNjcucmVwbGFjZShyZTUzLCAnJyk7
CisgICAgICBzdHI2Ny5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgIHN0cjY4LnNwbGl0KHJlMzIp
OworICAgICAgc3RyNjkuc3BsaXQocmUzMik7CisgICAgICBzdHI3MC5yZXBsYWNlKHJlNTIsICcn
KTsKKyAgICAgIHN0cjcwLnJlcGxhY2UocmU1MywgJycpOworICAgICAgc3RyNzAucmVwbGFjZShy
ZTM5LCAnJyk7CisgICAgICBzdHI3MS5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgIHN0cjcxLnJl
cGxhY2UocmUxMCwgJycpOworICAgICAgc3RyNzEucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICBz
dHI3MS5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICdKcm5ndXJlJy5yZXBsYWNlKHJlMjUsICcn
KTsKKyAgICAgICdKcm5ndXJlJy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgICdKcm5ndXJlJy5y
ZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdMYmhHaG9yJy5yZXBsYWNlKHJlMjUsICcnKTsKKyAg
ICAgICdMYmhHaG9yJy5yZXBsYWNlKHJlMTIsICcnKTsKKyAgICAgICdMYmhHaG9yJy5yZXBsYWNl
KHJlMzksICcnKTsKKyAgICAgIHN0cjcyLnJlcGxhY2UocmUzMywgJycpOworICAgICAgJ2VyemJn
cl92c2VuenJfMScucmVwbGFjZSgvXmVyemJncl92c2VuenJfLywgJycpOworICAgICAgc3RyNzMu
cmVwbGFjZShyZTQwLCAnJyk7CisgICAgICBzdHI3My5yZXBsYWNlKHJlMTAsICcnKTsKKyAgICAg
IHN0cjczLnJlcGxhY2UocmU1MSwgJycpOworICAgICAgc3RyNzMucmVwbGFjZShyZTUyLCAnJyk7
CisgICAgICBzdHI3My5yZXBsYWNlKHJlNTMsICcnKTsKKyAgICAgIHN0cjczLnJlcGxhY2UocmUz
OSwgJycpOworICAgICAgc3RyNzMucmVwbGFjZShyZTU0LCAnJyk7CisgICAgICBzdHI3NC5yZXBs
YWNlKHJlNDAsICcnKTsKKyAgICAgIHN0cjc0LnJlcGxhY2UocmUxMCwgJycpOworICAgICAgc3Ry
NzQucmVwbGFjZShyZTUxLCAnJyk7CisgICAgICBzdHI3NC5yZXBsYWNlKHJlNTIsICcnKTsKKyAg
ICAgIHN0cjc0LnJlcGxhY2UocmU1MywgJycpOworICAgICAgc3RyNzQucmVwbGFjZShyZTM5LCAn
Jyk7CisgICAgICBzdHI3NC5yZXBsYWNlKHJlNTQsICcnKTsKKyAgICAgICdsaHYtaCcucmVwbGFj
ZSgvXC0vZywgJycpOworICAgICAgcmU5LmV4ZWMoJ3AnKTsKKyAgICAgIHJlOS5leGVjKCdxeiBw
Jyk7CisgICAgICByZTkuZXhlYygnemJxeW5vcnknKTsKKyAgICAgIHJlOS5leGVjKCdsaHYtaCBz
dmVmZycpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4wLjEwLjEyMzEzNjU3NzknKTsKKyAg
ICAgIHJlOC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2NTc3OS4xLjEuaGd6cGZlPShxdmVycGcpfGhn
enBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4
LjE4Nzc1MzYxNzc5NTM5MTg1MDAuMTIzMTM2NTc3OS4xMjMxMzY1Nzc5LjEyMzEzNjU3NzkuMScp
OworICAgICAgcmU4LmV4ZWMoc3RyNzUpOworICAgICAgcmU4LmV4ZWMoc3RyNzYpOworICAgICAg
cmU4LmV4ZWMoJ19faGd6bj0xNDQ2MzE2NTguMTg3NzUzNjE3Nzk1MzkxODUwMC4xMjMxMzY1Nzc5
LjEyMzEzNjU3NzkuMTIzMTM2NTc3OS4xJyk7CisgICAgICByZTguZXhlYygnX19oZ3pvPTE0NDYz
MTY1OC4wLjEwLjEyMzEzNjU3NzknKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem09MTQ0NjMxNjU4
LjEyMzEzNjU3NzkuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6cHpxPShh
YmFyKScpOworICAgICAgcmUzNC5leGVjKHN0cjY4KTsKKyAgICAgIHJlMzQuZXhlYyhzdHI2OSk7
CisgICAgICAvXiQvLmV4ZWMoJycpOworICAgICAgcmUzMS5leGVjKCdxcicpOworICAgICAgL156
bmtcZCskLy5leGVjKCcnKTsKKyAgICAgIC9eenZhXGQrJC8uZXhlYygnJyk7CisgICAgICAvXmVy
ZmdiZXIkLy5leGVjKCcnKTsKKyAgICAgIHJlODUuZXhlYygnemJxb2JrdmEgemJxb2JrX2FiY25x
cXZhdCAnKTsKKyAgICAgIHJlODUuZXhlYygnemJxZ3ZneXInKTsKKyAgICAgIHJlODUuZXhlYygn
ZWFxX3picW9ia3ZhICcpOworICAgICAgcmU4NS5leGVjKCdlYXFfemJxZ3ZneXIgJyk7CisgICAg
ICAvZnJwZ3ZiYVxkK19wYmFncmFnZi8uZXhlYygnb2JnZ2J6X2FuaScpOworICAgIH0KKyAgfQor
ICB2YXIgcmU4NiA9IC87XHMqLzsKKyAgdmFyIHJlODcgPSAvKFwkXHtpbnloclx9KXwoXCRpbnlo
clxiKS9nOworICB2YXIgcmU4OCA9IC8oXCRce2Fialx9KXwoXCRhYmpcYikvZzsKKyAgdmFyIHJl
ODkgPSAvXHMrJC87CisgIHZhciByZTkwID0gL15ccysvOworICB2YXIgcmU5MSA9IC8oXFxcInxc
eDAwLXxceDFmfFx4N2YtfFx4OWZ8XHUwMGFkfFx1MDYwMC18XHUwNjA0fFx1MDcwZnxcdTE3YjR8
XHUxN2I1fFx1MjAwYy18XHUyMDBmfFx1MjAyOC18XHUyMDJmfFx1MjA2MC18XHUyMDZmfFx1ZmVm
ZnxcdWZmZjAtfFx1ZmZmZikvZzsKKyAgdmFyIHJlOTIgPSAvXig6KShbXHctXSspXCgiPyc/KC4q
PyhcKC4qP1wpKT9bXihdKj8pIj8nP1wpLzsKKyAgdmFyIHJlOTMgPSAvXihbOi4jXSopKCg/Oltc
d1x1MDEyOC1cdWZmZmYqXy1dfFxcLikrKS87CisgIHZhciByZTk0ID0gL14oXFspICpAPyhbXHct
XSspICooWyEqJF5+PV0qKSAqKCc/Ij8pKC4qPylcNCAqXF0vOworICB2YXIgc3RyNzcgPSAnI2Z1
Ymhnb2JrIC5weWJmcic7CisgIHZhciBzdHI3OCA9ICdGcmZmdmJhUVFTMj0xMDJuOW8wbzlwcTYw
MTMycW4wMzM3cnI4NjdwNzU5NTM1MDJxMnMyN3MyczVyOTg7IFpGUGh5Z2hlcj1WQz03NC4xMjUu
NzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHln
aGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzQxMjc4Nzcx
NDcwJmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0
dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1
cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlD
RjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSPTsg
QUZQX3pwX2RmY3R3enNzcndoLWFvd2JfODA9NDQxMzI2cTMzNjYwJzsKKyAgdmFyIHN0cjc5ID0g
J0ZyZmZ2YmFRUVMyPTEwMm45bzBvOXBxNjAxMzJxbjAzMzdycjg2N3A3NTk1MzUwMnEyczI3czJz
NXI5ODsgQUZQX3pwX2RmY3R3enNzcndoLWFvd2JfODA9NDQxMzI2cTMzNjYwOyBfX2hnem09MTQ0
NjMxNjU4LjEyMzEzNjU4NjkuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6
cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4xNjcwODE2MDUyMDE5MjA5MDAwLjEyMzEzNjU4
NjkuMTIzMTM2NTg2OS4xMjMxMzY1ODY5LjE7IF9faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY1
ODY5OyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVy
PXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVu
Z3ZiYT02MzM2NjkzNDEyNzg3NzE0NzAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3
SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVX
NUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1oz
WXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1X
eVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjgwID0gJ0ZyZmZ2YmFRUVMyPTk5OTVw
NnJwMTJycm5yODkzMzM0cm83bnE3MG83cDY0cDY5cnFuODQ0cHJzMTQ3MzsgWkZQaHlnaGVyPVZD
PTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQaHlnaGVyPXJhLUhGJkNlcnNy
ZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJxUmtjdmVuZ3ZiYT02MzM2Njkz
NTA1NTk0Nzg4ODAmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5
MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkw
TUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhN
MnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9K
SDlEMFI9OyBBRlBfenBfZGZjdHd6cy1hb3diXzgwPTQ0MTMyN3E3MzY2MCc7CisgIHZhciBzdHI4
MSA9ICdGcmZmdmJhUVFTMj05OTk1cDZycDEycnJucjg5MzMzNHJvN25xNzBvN3A2NHA2OXJxbjg0
NHByczE0NzM7IEFGUF96cF9kZmN0d3pzLWFvd2JfODA9NDQxMzI3cTczNjYwOyBfX2hnem09MTQ0
NjMxNjU4LjEyMzEzNjcwNTQuMS4xLmhnenBmZT0ocXZlcnBnKXxoZ3pwcGE9KHF2ZXJwZyl8aGd6
cHpxPShhYmFyKTsgX19oZ3puPTE0NDYzMTY1OC4xNzk2MDgwNzE2NjIxNDE5NTAwLjEyMzEzNjcw
NTQuMTIzMTM2NzA1NC4xMjMxMzY3MDU0LjE7IF9faGd6bz0xNDQ2MzE2NTguMC4xMC4xMjMxMzY3
MDU0OyBfX2hnenA9MTQ0NjMxNjU4OyBaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQaHlnaGVy
PXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJxUmtjdmVu
Z3ZiYT02MzM2NjkzNTA1NTk0Nzg4ODAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFpTVRIOUF3
SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVX
NUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1oz
WXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1X
eVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjgyID0gJ1tnbGNyPWZob3p2Z10nOwor
ICB2YXIgc3RyODMgPSAnbi5zdnJ5cU9nYSxuLnN2cnlxT2dhUG5hcHJ5JzsKKyAgdmFyIHN0cjg0
ID0gJ24uc3ZyeXFPZ2FQbmFwcnknOworICB2YXIgc3RyODUgPSAnb3l2cHhjaGF4Zyc7CisgIHZh
ciBzdHI4NiA9ICdxdmkuYm93LW5wcGJlcXZiYSBxZyc7CisgIHZhciBzdHI4NyA9ICd1Z2djOi8v
dGJidHlybnFmLnQucWJob3lycHl2cHguYXJnL2NudHJucS9ucWY/cHl2cmFnPXBuLXN2el96bGZj
bnByX25jY2Zfd2YmcWc9MTIzMTM2NzA1MjIyNyZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFo
el9ucWY9NCZiaGdjaGc9d2YmbnFncmZnPWJzcyZwYmVlcnluZ2JlPTEyMzEzNjcwNTIyMjcmcHVu
YWFyeT1zdnpfemxmY25wcl9uY2NmLXBuYWluZiUyUHN2el96bGZjbnByX2hhdmdycS1mZ25ncmYm
aGV5PXVnZ2MlM04lMlMlMlNjZWJzdnlyLnpsZmNucHIucGJ6JTJTWmJxaHlyZiUyU05jY3l2cG5n
dmJhZiUyU0NudHJmJTJTUG5haW5mLm5mY2smbnFfZ2xjcj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAm
c2V6PTEmdG5faXZxPTcxNjM1NzkxMC4xMjMxMzY3MDU2JnRuX2Z2cT0xMjMxMzY3MDU2JnRuX3V2
cT0xMzg3MjA2NDkxJnN5bmZ1PTkuMC4xMTUmaF91PTc2OCZoX2o9MTAyNCZoX251PTczOCZoX25q
PTEwMjQmaF9wcT0yNCZoX2dtPS00ODAmaF91dmY9MiZoX3duaW49Z2VociZoX2FjeWh0PTcmaF9h
enZ6cj0yMic7CisgIHZhciBzdHI4OCA9ICd1Z2djOi8vdGJidHlybnFmLnQucWJob3lycHl2cHgu
YXJnL2NudHJucS9ucWY/cHl2cmFnPXBuLXN2el96bGZjbnByX3psZmNucHItdWJ6cmNudHJfd2Ym
cWc9MTIzMTM2NTg1MTY1OCZ1eT1yYSZucWZuc3I9dXZ0dSZicj1oZ3M4JmFoel9ucWY9NCZiaGdj
aGc9d2YmbnFncmZnPWJzcyZwYmVlcnluZ2JlPTEyMzEzNjU4NTE2NTgmcHVuYWFyeT1zdnpfemxm
Y25wcl91YnpyY250cl9hYmd5YnR0cnF2YSUyUHN2el96bGZjbnByX2FiYV9IVFAlMlBzdnpfemxm
Y25wcl9oYXZncnEtZmduZ3JmJmhleT11Z2djJTNOJTJTJTJTY2Vic3Z5cnJxdmcuemxmY25wci5w
YnolMlN2YXFyay5wc3ombnFfZ2xjcj1ncmtnJnJ2cT02MDgzMDI3JnJuPTAmc2V6PTAmdG5faXZx
PTE5Nzk4MjgxMjkuMTIzMTM2NTg1NSZ0bl9mdnE9MTIzMTM2NTg1NSZ0bl91dnE9MjA4NTIyOTY0
OSZzeW5mdT05LjAuMTE1JmhfdT03NjgmaF9qPTEwMjQmaF9udT03MzgmaF9uaj0xMDI0JmhfcHE9
MjQmaF9nbT0tNDgwJmhfdXZmPTImaF93bmluPWdlaHImaF9hY3lodD03JmhfYXp2enI9MjInOwor
ICB2YXIgc3RyODkgPSAndWdnYzovL3pmYWNiZWdueS4xMTIuMmI3LmFyZy9vL2ZmL3pmYWNiZWdu
eXVienIvMS9VLjctY3FpLTIvZjU1MDIzMzM4NjE3NzU2P1tORE9dJmFxdT0xJmc9NyUyUzAlMlMy
MDA5JTIwMTQlM04xMiUzTjQ3JTIwMyUyMDQ4MCZhZj16ZmFjYmVnbnkmY250ckFuenI9SEYlMjBV
Q1pGU0dKJnQ9dWdnYyUzTiUyUyUyU2pqai56ZmEucGJ6JTJTJmY9MGswJnA9NDM4MzU4MTYmeD1B
Jm9qPTk5NCZvdT02MzQmdWM9QSZ7Mn0mW05EUl0nOworICB2YXIgc3RyOTAgPSAnenJnblthbnpy
PW53bmtIZXldJzsKKyAgdmFyIHN0cjkxID0gJ2FucHVldnB1Z3JhJzsKKyAgdmFyIHN0cjkyID0g
J2Igb1M9e1wnb1RcJzoxLjF9O3ggJDhuKEIpe3ooQiE9bzkpfTt4ICRTKEIpe08oISQ4bihCKSl6
IEE7TyhCLjRMKXpcJ1RcJztiIFM9N3QgQjtPKFM9PVwnMlBcJyYmQi5wNCl7MjMoQi43Zil7MTIg
MTp6XCdUXCc7MTIgMzp6L1xTLy4yZyhCLjhNKT9cJ294XCc6XCdvaFwnfX1PKFM9PVwnMlBcJ3x8
Uz09XCd4XCcpezIzKEIubkUpezEyIDJWOnpcJzFPXCc7MTIgN0k6elwnNWFcJzsxMiAxODp6XCc0
QlwnfU8oN3QgQi5JPT1cJzRGXCcpe08oQi4zdSl6XCdwR1wnO08oQi44ZSl6XCcxcFwnfX16IFN9
O3ggJDJwKCl7YiA0RT17fTtaKGIgdj0wO3Y8MXAuSTt2Kyspe1ooYiBYIDFvIDFwW3ZdKXtiIG5j
PTFwW3ZdW1hdO2IgNkU9NEVbWF07Tyg2RSYmJFMobmMpPT1cJzJQXCcmJiRTKDZFKT09XCcyUFwn
KTRFW1hdPSQycCg2RSxuYyk7MTcgNEVbWF09bmN9fXogNEV9O2IgJEU9N3AuRT14KCl7YiAxZD0x
cDtPKCExZFsxXSkxZD1bcCwxZFswXV07WihiIFggMW8gMWRbMV0pMWRbMF1bWF09MWRbMV1bWF07
eiAxZFswXX07YiAkNEQ9N3AucEo9eCgpe1ooYiB2PTAseT0xcC5JO3Y8eTt2KyspezFwW3ZdLkU9
eCgxSil7WihiIDFJIDFvIDFKKXtPKCFwLjFZWzFJXSlwLjFZWzFJXT0xSlsxSV07TyghcFsxSV0p
cFsxSV09JDRELjZDKDFJKX19fX07JDRELjZDPXgoMUkpe3ogeChMKXt6IHAuMVlbMUldLjNIKEws
MlYuMVkublYuMUYoMXAsMSkpfX07JDREKDdGLDJWLDZKLG5iKTtiIDNsPXgoQil7Qj1CfHx7fTtC
LkU9JEU7eiBCfTtiIHBLPVkgM2woSCk7YiBwWj1ZIDNsKEMpO0MuNmY9Qy4zNShcJzZmXCcpWzBd
O3ggJDJPKEIpe3ohIShCfHxCPT09MCl9O3ggJDVTKEIsbjgpe3ogJDhuKEIpP0I6bjh9O3ggJDdL
KDNjLDFtKXt6IDFxLm5hKDFxLjdLKCkqKDFtLTNjKzEpKzNjKX07eCAkM04oKXt6IFkgOTcoKS5v
cygpfTt4ICQ0TSgxVSl7cHYoMVUpO3BhKDFVKTt6IDFTfTtILjQzPSEhKEMuNVopO08oSC5uQilI
LjMxPUhbSC43cT9cJ3B5XCc6XCduTFwnXT0xcjsxNyBPKEMuOU4mJiFDLm9tJiYhb3kub1opSC5w
Rj1ILjRaPUhbSC40Mz9cJ3B0XCc6XCc2NVwnXT0xcjsxNyBPKEMucG8hPTFTKUguN0o9MXI7Tyg3
dCA1Qj09XCdvOVwnKXtiIDVCPXgoKXt9O08oSC40WilDLm5kKCJwVyIpOzVCLjFZPShILjRaKT9I
WyJbW29OLjFZXV0iXTp7fX01Qi4xWS40TD0xcjtPKEgubkwpNXN7Qy5vWCgicHAiLEEsMXIpfTRL
KHIpe307YiAxOD14KDFYKXtiIDYzPXgoKXt6KDFwWzBdIT09MVMmJnAuMXcmJiRTKHAuMXcpPT1c
J3hcJyk/cC4xdy4zSChwLDFwKTpwfTskRSg2MyxwKTs2My4xWT0xWDs2My5uRT0xODt6IDYzfTsx
OC4xej14KCl7fTsxOC4xWT17RTp4KDFYKXtiIDd4PVkgcCgxUyk7WihiIFggMW8gMVgpe2IgbkM9
N3hbWF07N3hbWF09MTgublkobkMsMVhbWF0pfXogWSAxOCg3eCl9LDNkOngoKXtaKGIgdj0wLHk9
MXAuSTt2PHk7disrKSRFKHAuMVksMXBbdl0pfX07MTgublk9eCgyYiwybil7TygyYiYmMmIhPTJu
KXtiIFM9JFMoMm4pO08oUyE9JFMoMmIpKXogMm47MjMoUyl7MTJcJ3hcJzpiIDdSPXgoKXtwLjFl
PTFwLjhlLjFlO3ogMm4uM0gocCwxcCl9OzdSLjFlPTJiO3ogN1I7MTJcJzJQXCc6eiAkMnAoMmIs
Mm4pfX16IDJufTtiIDhvPVkgMTgoe29ROngoSil7cC40dz1wLjR3fHxbXTtwLjR3LjF4KEopO3og
cH0sN2c6eCgpe08ocC40dyYmcC40dy5JKXAuNHcuOUooKS4yeCgxMCxwKX0sb1A6eCgpe3AuNHc9
W119fSk7YiAyZD1ZIDE4KHsxVjp4KFMsSil7TyhKIT0xOC4xeil7cC4kMTk9cC4kMTl8fHt9O3Au
JDE5W1NdPXAuJDE5W1NdfHxbXTtwLiQxOVtTXS41aihKKX16IHB9LDF2OngoUywxZCwyeCl7Tyhw
LiQxOSYmcC4kMTlbU10pe3AuJDE5W1NdLjFiKHgoSil7Si4zbih7XCdMXCc6cCxcJzJ4XCc6Mngs
XCcxcFwnOjFkfSkoKX0scCl9eiBwfSwzTTp4KFMsSil7TyhwLiQxOSYmcC4kMTlbU10pcC4kMTlb
U10uMlUoSik7eiBwfX0pO2IgNHY9WSAxOCh7Mkg6eCgpe3AuUD0kMnAuM0goMVMsW3AuUF0uRSgx
cCkpO08oIXAuMVYpeiBwO1ooYiAzTyAxbyBwLlApe08oJFMocC5QWzNPXT09XCd4XCcpJiYzTy4y
ZygvXjVQW04tTV0vKSlwLjFWKDNPLHAuUFszT10pfXogcH19KTsyVi5FKHs3eTp4KEosTCl7Wihi
IHY9MCx3PXAuSTt2PHc7disrKUouMUYoTCxwW3ZdLHYscCl9LDNzOngoSixMKXtiIDU0PVtdO1oo
YiB2PTAsdz1wLkk7djx3O3YrKyl7TyhKLjFGKEwscFt2XSx2LHApKTU0LjF4KHBbdl0pfXogNTR9
LDJYOngoSixMKXtiIDU0PVtdO1ooYiB2PTAsdz1wLkk7djx3O3YrKyk1NFt2XT1KLjFGKEwscFt2
XSx2LHApO3ogNTR9LDRpOngoSixMKXtaKGIgdj0wLHc9cC5JO3Y8dzt2Kyspe08oIUouMUYoTCxw
W3ZdLHYscCkpeiBBfXogMXJ9LG9iOngoSixMKXtaKGIgdj0wLHc9cC5JO3Y8dzt2Kyspe08oSi4x
RihMLHBbdl0sdixwKSl6IDFyfXogQX0sM0Y6eCgzdSwxNSl7YiAzQT1wLkk7WihiIHY9KDE1PDAp
PzFxLjFtKDAsM0ErMTUpOjE1fHwwO3Y8M0E7disrKXtPKHBbdl09PT0zdSl6IHZ9ei0xfSw4ejp4
KDF1LEkpezF1PTF1fHwwO08oMXU8MCkxdT1wLkkrMXU7ST1JfHwocC5JLTF1KTtiIDg5PVtdO1oo
YiB2PTA7djxJO3YrKyk4OVt2XT1wWzF1KytdO3ogODl9LDJVOngoM3Upe2Igdj0wO2IgM0E9cC5J
OzZMKHY8M0Epe08ocFt2XT09PTN1KXtwLjZsKHYsMSk7M0EtLX0xN3t2Kyt9fXogcH0sMXk6eCgz
dSwxNSl7eiBwLjNGKDN1LDE1KSE9LTF9LG96OngoMUMpe2IgQj17fSxJPTFxLjNjKHAuSSwxQy5J
KTtaKGIgdj0wO3Y8STt2KyspQlsxQ1t2XV09cFt2XTt6IEJ9LEU6eCgxTyl7WihiIHY9MCx3PTFP
Lkk7djx3O3YrKylwLjF4KDFPW3ZdKTt6IHB9LDJwOngoMU8pe1ooYiB2PTAseT0xTy5JO3Y8eTt2
KyspcC41aigxT1t2XSk7eiBwfSw1ajp4KDN1KXtPKCFwLjF5KDN1KSlwLjF4KDN1KTt6IHB9LG9j
OngoKXt6IHBbJDdLKDAscC5JLTEpXXx8QX0sN0w6eCgpe3ogcFtwLkktMV18fEF9fSk7MlYuMVku
MWI9MlYuMVkuN3k7MlYuMVkuMmc9MlYuMVkuMXk7eCAkTigxTyl7eiAyVi44eigxTyl9O3ggJDFi
KDNKLEosTCl7TygzSiYmN3QgM0ouST09XCc0RlwnJiYkUygzSikhPVwnMlBcJykyVi43eSgzSixK
LEwpOzE3IFooYiAxaiAxbyAzSilKLjFGKEx8fDNKLDNKWzFqXSwxail9OzZKLkUoezJnOngoNmIs
MkYpe3ooKCRTKDZiKT09XCcyUlwnKT9ZIDdJKDZiLDJGKTo2YikuMmcocCl9LDNwOngoKXt6IDVL
KHAsMTApfSxvNDp4KCl7eiA2OShwKX0sN0E6eCgpe3ogcC4zeSgvLVxEL3QseCgyRyl7eiAyRy43
RygxKS5uVygpfSl9LDliOngoKXt6IHAuM3koL1x3W04tTV0vdCx4KDJHKXt6KDJHLjdHKDApK1wn
LVwnKzJHLjdHKDEpLjVPKCkpfSl9LDhWOngoKXt6IHAuM3koL1xiW24tbV0vdCx4KDJHKXt6IDJH
Lm5XKCl9KX0sNUw6eCgpe3ogcC4zeSgvXlxzK3xccyskL3QsXCdcJyl9LDdqOngoKXt6IHAuM3ko
L1xzezIsfS90LFwnIFwnKS41TCgpfSw1Vjp4KDFPKXtiIDFpPXAuMkcoL1xkezEsM30vdCk7eigx
aSk/MWkuNVYoMU8pOkF9LDVVOngoMU8pe2IgM1A9cC4yRygvXiM/KFx3ezEsMn0pKFx3ezEsMn0p
KFx3ezEsMn0pJC8pO3ooM1ApPzNQLm5WKDEpLjVVKDFPKTpBfSwxeTp4KDJSLGYpe3ooZik/KGYr
cCtmKS4zRihmKzJSK2YpPi0xOnAuM0YoMlIpPi0xfSxuWDp4KCl7eiBwLjN5KC8oWy4qKz9eJHt9
KCl8W1xdXC9cXF0pL3QsXCdcXCQxXCcpfX0pOzJWLkUoezVWOngoMU8pe08ocC5JPDMpeiBBO08o
cC5JPT00JiZwWzNdPT0wJiYhMU8pelwncDVcJztiIDNQPVtdO1ooYiB2PTA7djwzO3YrKyl7YiA1
Mj0ocFt2XS0wKS40aCgxNik7M1AuMXgoKDUyLkk9PTEpP1wnMFwnKzUyOjUyKX16IDFPPzNQOlwn
I1wnKzNQLjJ1KFwnXCcpfSw1VTp4KDFPKXtPKHAuSSE9Myl6IEE7YiAxaT1bXTtaKGIgdj0wO3Y8
Mzt2KyspezFpLjF4KDVLKChwW3ZdLkk9PTEpP3Bbdl0rcFt2XTpwW3ZdLDE2KSl9eiAxTz8xaTpc
JzFpKFwnKzFpLjJ1KFwnLFwnKStcJylcJ319KTs3Ri5FKHszbjp4KFApe2IgSj1wO1A9JDJwKHtc
J0xcJzpKLFwnVlwnOkEsXCcxcFwnOjFTLFwnMnhcJzpBLFwnNHNcJzpBLFwnNldcJzpBfSxQKTtP
KCQyTyhQLjFwKSYmJFMoUC4xcCkhPVwnMU9cJylQLjFwPVtQLjFwXTt6IHgoVil7YiAxZDtPKFAu
Vil7Vj1WfHxILlY7MWQ9WyhQLlY9PT0xcik/VjpZIFAuVihWKV07TyhQLjFwKTFkLkUoUC4xcCl9
MTcgMWQ9UC4xcHx8MXA7YiAzQz14KCl7eiBKLjNIKCQ1UyhQJzsKKyAgdmFyIHN0cjkzID0gJ2hh
Z3JldW55Z2hhdCc7CisgIHZhciBzdHI5NCA9ICdaRlBoeWdoZXI9VkM9NzQuMTI1Ljc1LjEmVkNQ
aHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXI9cmEtSEYmUGJoYWdlbD1JSVolM1EmU2JlcHJx
UmtjdmVuZ3ZiYT02MzM2NjkzNDEyNzg3NzE0NzAmZ3Z6ck1iYXI9LTgmSEZFWUJQPURLV3lMSEFp
TVRIOUF3SGpXeEFjcVV4OUdKOTFvYUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFv
M0locVVXNUd6U2dNRzFJb3p5ME1KRHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFK
RXlDR1ozWXdEa0JHVnpHVDloTTJ5MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4
MFpRRG1XeVd5TTJ5aW94NXVvSkg5RDBSJTNRJzsKKyAgdmFyIHN0cjk1ID0gJ1pGUGh5Z2hlcj1W
Qz03NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZQYmhh
Z2VsPUlJWiUzUSZTYmVwcnFSa2N2ZW5ndmJhPTYzMzY2OTM1MDU1OTQ3ODg4MCZndnpyTWJhcj0t
OCZIRkVZQlA9REtXeUxIQWlNVEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0lo
cVVXNUQyOXhNRzFJSGxNUW8zSWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlN
VEg5QlFOM1d4a3VxVHkwcUpFeUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQ
TURvM0EwTEprUW8yRXlDR3gwWlFEbVd5V3lNMnlpb3g1dW9KSDlEMFIlM1EnOworICB2YXIgc3Ry
OTYgPSAnWkZQaHlnaGVyPVZDPTc0LjEyNS43NS4xJlZDUGh5Z2hlcj1yYS1IRiZDZXJzcmVlcnFQ
aHlnaGVyPXJhLUhGJkNlcnNyZWVycVBoeWdoZXJDcmFxdmF0PSZQYmhhZ2VsPUlJWj0mU2JlcHJx
UmtjdmVuZ3ZiYT02MzM2NjkzNDEyNzg3NzE0NzAmZ3Z6ck1iYXI9MCZIRkVZQlA9REtXeUxIQWlN
VEg5QXdIald4QWNxVXg5R0o5MW9hRXVuSjR0SXp5eXFsTVFvM0locVVXNUQyOXhNRzFJSGxNUW8z
SWhxVVc1R3pTZ01HMUlvenkwTUpEdEgzRXVxVEltV3hFZ0xIQWlNVEg5QlFOM1d4a3VxVHkwcUpF
eUNHWjNZd0RrQkdWekdUOWhNMnkwcUpFeUNGMGtad1ZoWlFIM0FQTURvM0EwTEprUW8yRXlDR3gw
WlFEbVd5V3lNMnlpb3g1dW9KSDlEMFI9JzsKKyAgdmFyIHN0cjk3ID0gJ1pGUGh5Z2hlcj1WQz03
NC4xMjUuNzUuMSZWQ1BoeWdoZXI9cmEtSEYmQ2Vyc3JlZXJxUGh5Z2hlcj1yYS1IRiZDZXJzcmVl
cnFQaHlnaGVyQ3JhcXZhdD0mUGJoYWdlbD1JSVo9JlNiZXBycVJrY3Zlbmd2YmE9NjMzNjY5MzUw
NTU5NDc4ODgwJmd2enJNYmFyPTAmSEZFWUJQPURLV3lMSEFpTVRIOUF3SGpXeEFjcVV4OUdKOTFv
YUV1bko0dEl6eXlxbE1RbzNJaHFVVzVEMjl4TUcxSUhsTVFvM0locVVXNUd6U2dNRzFJb3p5ME1K
RHRIM0V1cVRJbVd4RWdMSEFpTVRIOUJRTjNXeGt1cVR5MHFKRXlDR1ozWXdEa0JHVnpHVDloTTJ5
MHFKRXlDRjBrWndWaFpRSDNBUE1EbzNBMExKa1FvMkV5Q0d4MFpRRG1XeVd5TTJ5aW94NXVvSkg5
RDBSPSc7CisgIHZhciBzdHI5OCA9ICdzaGFwZ3ZiYSAoKXtDdWsuTmNjeXZwbmd2YmEuRnJnaGMu
UGJlcigpO0N1ay5OY2N5dnBuZ3ZiYS5GcmdoYy5Od25rKCk7Q3VrLk5jY3l2cG5ndmJhLkZyZ2hj
LlN5bmZ1KCk7Q3VrLk5jY3l2cG5ndmJhLkZyZ2hjLlpicWh5cmYoKX0nOworICBmdW5jdGlvbiBy
dW5CbG9jazExKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAn
IC5weWJmcicucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAnIG4uc3ZyeXFPZ2FQbmFwcnknLnJl
cGxhY2UocmUxOCwgJycpOworICAgICAgJyBxZycucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICBz
dHI3Ny5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgIHN0cjc3LnJlcGxhY2UocmUxOCwgJycpOwor
ICAgICAgJycucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnJy5yZXBsYWNlKC9eLywgJycpOwor
ICAgICAgJycuc3BsaXQocmU4Nik7CisgICAgICAnKicucmVwbGFjZShyZTM5LCAnJyk7CisgICAg
ICAnKicucmVwbGFjZShyZTY4LCAnJyk7CisgICAgICAnKicucmVwbGFjZShyZTE4LCAnJyk7Cisg
ICAgICAnLnB5YmZyJy5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgICcucHliZnInLnJlcGxhY2Uo
cmUxOCwgJycpOworICAgICAgJy8vdnp0Lmpyby5xci92aWovRkMvdHprX3VjL2ZwZXJyYS8ke2lu
eWhyfT9nZj0ke2Fian0nLnJlcGxhY2UocmU4NywgJycpOworICAgICAgJy8vdnp0Lmpyby5xci92
aWovRkMvdHprX3VjL2ZwZXJyYS8xMDI0P2dmPSR7YWJqfScucmVwbGFjZShyZTg4LCAnJyk7Cisg
ICAgICAnLy92enQuanJvLnFyL3Zpai9GQy90emtfdWMvanZhZnZtci8ke2lueWhyfT9nZj0ke2Fi
an0nLnJlcGxhY2UocmU4NywgJycpOworICAgICAgJy8vdnp0Lmpyby5xci92aWovRkMvdHprX3Vj
L2p2YWZ2bXIvOTkyLzYwOD9nZj0ke2Fian0nLnJlcGxhY2UocmU4OCwgJycpOworICAgICAgJzMw
MGsxMjAnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJzMwMGsyNTAnLnJlcGxhY2UocmUzMCwg
JycpOworICAgICAgJzMxMGsxMjAnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJzMxMGsxNzAn
LnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJzMxMGsyNTAnLnJlcGxhY2UocmUzMCwgJycpOwor
ICAgICAgJzkuMCAgZTExNScucmVwbGFjZSgvXi4qXC4oLiopXHMuKiQvLCAnJyk7CisgICAgICAn
TnBwYmVxdmJhJy5yZXBsYWNlKHJlMiwgJycpOworICAgICAgJ054Z2hyeXlceDBhJy5yZXBsYWNl
KHJlODksICcnKTsKKyAgICAgICdOeGdocnl5XHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAg
ICAnTmNjeXZwbmd2YmEnLnJlcGxhY2UocmUyLCAnJyk7CisgICAgICAnT3l2cHhjaGF4Z1x4MGEn
LnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ095dnB4Y2hheGdceDBhJy5yZXBsYWNlKHJlOTAs
ICcnKTsKKyAgICAgICdTdmFuYW1yYVx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ1N2
YW5hbXJhXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICAnVG56cmZceDBhJy5yZXBsYWNl
KHJlODksICcnKTsKKyAgICAgICdUbnpyZlx4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAg
J1ViZWJmeGJjXHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnVWJlYmZ4YmNceDBhJy5y
ZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgICdYdmFiXHgwYScucmVwbGFjZShyZTg5LCAnJyk7Cisg
ICAgICAnWHZhYlx4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ1picWh5cmYnLnJlcGxh
Y2UocmUyLCAnJyk7CisgICAgICAnWmhmdnhceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAg
ICdaaGZ2eFx4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ0FucHVldnB1Z3JhXHgwYScu
cmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAnQW5wdWV2cHVncmFceDBhJy5yZXBsYWNlKHJlOTAs
ICcnKTsKKyAgICAgICdDdWsnLnJlcGxhY2UocmUyLCAnJyk7CisgICAgICAnRXJkaHJmZ1N2YXZm
dScuc3BsaXQocmU3MCk7CisgICAgICAnRXJkaHJmZ1N2YXZmdS5OV05LLkN1aycuc3BsaXQocmU3
MCk7CisgICAgICAnRWJoZ3JceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAgICdFYmhnclx4
MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgc3RyNzguc3BsaXQocmUzMik7CisgICAgICBz
dHI3OS5zcGxpdChyZTMyKTsKKyAgICAgIHN0cjgwLnNwbGl0KHJlMzIpOworICAgICAgc3RyODEu
c3BsaXQocmUzMik7CisgICAgICAnRmNiZWdceDBhJy5yZXBsYWNlKHJlODksICcnKTsKKyAgICAg
ICdGY2JlZ1x4MGEnLnJlcGxhY2UocmU5MCwgJycpOworICAgICAgJ0dJLUZjYmdceDBhJy5yZXBs
YWNlKHJlODksICcnKTsKKyAgICAgICdHSS1GY2JnXHgwYScucmVwbGFjZShyZTkwLCAnJyk7Cisg
ICAgICAnR2JoZVx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ0diaGVceDBhJy5yZXBs
YWNlKHJlOTAsICcnKTsKKyAgICAgICdIYWdyZXVueWdoYXRceDBhJy5yZXBsYWNlKHJlODksICcn
KTsKKyAgICAgICdIYWdyZXVueWdoYXRceDBhJy5yZXBsYWNlKHJlOTAsICcnKTsKKyAgICAgICdJ
dnFyYlx4MGEnLnJlcGxhY2UocmU4OSwgJycpOworICAgICAgJ0l2cXJiXHgwYScucmVwbGFjZShy
ZTkwLCAnJyk7CisgICAgICAnSnJnZ3JlXHgwYScucmVwbGFjZShyZTg5LCAnJyk7CisgICAgICAn
SnJnZ3JlXHgwYScucmVwbGFjZShyZTkwLCAnJyk7CisgICAgICBzdHI4Mi5yZXBsYWNlKHJlNjgs
ICcnKTsKKyAgICAgIHN0cjgyLnJlcGxhY2UocmUxOCwgJycpOworICAgICAgc3RyODMucmVwbGFj
ZShyZTY4LCAnJyk7CisgICAgICBzdHI4My5yZXBsYWNlKHJlMTgsICcnKTsKKyAgICAgIHN0cjg0
LnJlcGxhY2UocmU2OCwgJycpOworICAgICAgc3RyODQucmVwbGFjZShyZTE4LCAnJyk7CisgICAg
ICAnbnFpRnJlaXZwck9iaycucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAnbnFpRnViY2N2YXRP
YmsnLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgJ253bmsnLnJlcGxhY2UocmUzOSwgJycpOwor
ICAgICAgJ254Z2hyeXknLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgJ254Z2hyeXknLnJlcGxh
Y2UocmU0MSwgJycpOworICAgICAgJ254Z2hyeXknLnJlcGxhY2UocmU0MiwgJycpOworICAgICAg
J254Z2hyeXknLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ254Z2hyeXknLnJlcGxhY2UocmU0
NCwgJycpOworICAgICAgJ254Z2hyeXknLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ254Z2hy
eXknLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ254Z2hyeXknLnJlcGxhY2UocmU0NywgJycp
OworICAgICAgJ254Z2hyeXknLnJlcGxhY2UocmU0OCwgJycpOworICAgICAgc3RyODUucmVwbGFj
ZShyZTQwLCAnJyk7CisgICAgICBzdHI4NS5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgIHN0cjg1
LnJlcGxhY2UocmU0MiwgJycpOworICAgICAgc3RyODUucmVwbGFjZShyZTQzLCAnJyk7CisgICAg
ICBzdHI4NS5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgIHN0cjg1LnJlcGxhY2UocmU0NSwgJycp
OworICAgICAgc3RyODUucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICBzdHI4NS5yZXBsYWNlKHJl
NDcsICcnKTsKKyAgICAgIHN0cjg1LnJlcGxhY2UocmU0OCwgJycpOworICAgICAgJ3BuZ3J0YmVs
Jy5yZXBsYWNlKHJlMjksICcnKTsKKyAgICAgICdwbmdydGJlbCcucmVwbGFjZShyZTMwLCAnJyk7
CisgICAgICAncHliZnInLnJlcGxhY2UocmUzOSwgJycpOworICAgICAgJ3F2aScucmVwbGFjZShy
ZTM5LCAnJyk7CisgICAgICBzdHI4Ni5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgIHN0cjg2LnJl
cGxhY2UocmUxOCwgJycpOworICAgICAgJ3FnJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdx
ZycucmVwbGFjZShyZTY4LCAnJyk7CisgICAgICAncWcnLnJlcGxhY2UocmUxOCwgJycpOworICAg
ICAgJ3J6b3JxJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdyem9ycScucmVwbGFjZShyZTY4
LCAnJyk7CisgICAgICAncnpvcnEnLnJlcGxhY2UocmUxOCwgJycpOworICAgICAgJ3N2cnlxT2dh
Jy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdzdnJ5cU9nYVBuYXByeScucmVwbGFjZShyZTM5
LCAnJyk7CisgICAgICAnc3Z6X3psZmNucHJfbmNjZi1wbmFpbmYsc3Z6X3psZmNucHJfaGF2Z3Jx
LWZnbmdyZicuc3BsaXQocmUyMCk7CisgICAgICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0MCwgJycp
OworICAgICAgJ3N2YW5hbXJhJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdzdmFuYW1yYScu
cmVwbGFjZShyZTQyLCAnJyk7CisgICAgICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0MywgJycpOwor
ICAgICAgJ3N2YW5hbXJhJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVw
bGFjZShyZTQ1LCAnJyk7CisgICAgICAnc3ZhbmFtcmEnLnJlcGxhY2UocmU0NiwgJycpOworICAg
ICAgJ3N2YW5hbXJhJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdzdmFuYW1yYScucmVwbGFj
ZShyZTQ4LCAnJyk7CisgICAgICAnc2JwaGYnLnNwbGl0KHJlNzApOworICAgICAgJ3NicGhmLmdu
byBzYnBoZnZhLmdubycuc3BsaXQocmU3MCk7CisgICAgICAnc2JwaGZ2YScuc3BsaXQocmU3MCk7
CisgICAgICAnc2JleicucmVwbGFjZShyZTM5LCAnJyk7CisgICAgICAnc2Jlei5ud25rJy5yZXBs
YWNlKHJlNjgsICcnKTsKKyAgICAgICdzYmV6Lm53bmsnLnJlcGxhY2UocmUxOCwgJycpOworICAg
ICAgJ3RuenJmJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICd0bnpyZicucmVwbGFjZShyZTQx
LCAnJyk7CisgICAgICAndG56cmYnLnJlcGxhY2UocmU0MiwgJycpOworICAgICAgJ3RuenJmJy5y
ZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICd0bnpyZicucmVwbGFjZShyZTQ0LCAnJyk7CisgICAg
ICAndG56cmYnLnJlcGxhY2UocmU0NSwgJycpOworICAgICAgJ3RuenJmJy5yZXBsYWNlKHJlNDYs
ICcnKTsKKyAgICAgICd0bnpyZicucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICAndG56cmYnLnJl
cGxhY2UocmU0OCwgJycpOworICAgICAgJ3VienJjbnRyJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAg
ICAgICd1YmViZnhiYycucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxh
Y2UocmU0MSwgJycpOworICAgICAgJ3ViZWJmeGJjJy5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAg
ICd1YmViZnhiYycucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2Uo
cmU0NCwgJycpOworICAgICAgJ3ViZWJmeGJjJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICd1
YmViZnhiYycucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAndWJlYmZ4YmMnLnJlcGxhY2UocmU0
NywgJycpOworICAgICAgJ3ViZWJmeGJjJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICd1Y19j
ZWJ6Ym9ia191Z3p5JTJQdWNfY2ViemJvYmtfdnp0Jy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAg
ICd1Y19lcnBnbmF0eXInLnJlcGxhY2UocmUzMCwgJycpOworICAgICAgc3RyODcucmVwbGFjZShy
ZTMzLCAnJyk7CisgICAgICBzdHI4OC5yZXBsYWNlKHJlMzMsICcnKTsKKyAgICAgICd1Z2djOi8v
d2YuaHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgwNjAyL29uZnIud2YkezR9JHs1fScucmVw
bGFjZShyZTcxLCAnJyk7CisgICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6ci93
Zi8yMDA4MDYwMi9vbmZyLndmJHs1fScucmVwbGFjZShyZTcyLCAnJyk7CisgICAgICAndWdnYzov
L3dmLmh2LWNiZWdueS5xci90emsvdWJ6ci93Zi8yMDA4MDYwMi9xbGFZdm8ud2YkezR9JHs1fScu
cmVwbGFjZShyZTcxLCAnJyk7CisgICAgICAndWdnYzovL3dmLmh2LWNiZWdueS5xci90emsvdWJ6
ci93Zi8yMDA4MDYwMi9xbGFZdm8ud2YkezV9Jy5yZXBsYWNlKHJlNzIsICcnKTsKKyAgICAgICd1
Z2djOi8vd2YuaHYtY2JlZ255LnFyL3R6ay91YnpyL3dmLzIwMDgwNjAyL3Jzc3JwZ1l2by53ZiR7
NH0kezV9Jy5yZXBsYWNlKHJlNzEsICcnKTsKKyAgICAgICd1Z2djOi8vd2YuaHYtY2JlZ255LnFy
L3R6ay91YnpyL3dmLzIwMDgwNjAyL3Jzc3JwZ1l2by53ZiR7NX0nLnJlcGxhY2UocmU3MiwgJycp
OworICAgICAgc3RyODkucmVwbGFjZShyZTczLCAnJyk7CisgICAgICAndWdnYzovL3pmYWNiZWdu
eS4xMTIuMmI3LmFyZy9vL2ZmL3pmYWNiZWdueXVienIvMS9VLjctY3FpLTIvZjU1MDIzMzM4NjE3
NzU2P1tORE9dJnsxfSZ7Mn0mW05EUl0nLnJlcGxhY2UocmU2OSwgJycpOworICAgICAgc3RyNi5y
ZXBsYWNlKHJlMjMsICcnKTsKKyAgICAgICd4dmFiJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAg
ICd4dmFiJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICd4dmFiJy5yZXBsYWNlKHJlNDIsICcn
KTsKKyAgICAgICd4dmFiJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICd4dmFiJy5yZXBsYWNl
KHJlNDQsICcnKTsKKyAgICAgICd4dmFiJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICd4dmFi
Jy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICd4dmFiJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAg
ICAgICd4dmFiJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICd5Ym5xJy5zcGxpdChyZTcwKTsK
KyAgICAgICd6cnF2bnpicWdubyBsaHYtYW5pZnJnIGxodi1hbmlmcmctZ2JjJy5yZXBsYWNlKHJl
MTgsICcnKTsKKyAgICAgICd6cmduJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgIHN0cjkwLnJl
cGxhY2UocmU2OCwgJycpOworICAgICAgc3RyOTAucmVwbGFjZShyZTE4LCAnJyk7CisgICAgICAn
emJoZnJ6YmlyJy5zcGxpdChyZTcwKTsKKyAgICAgICd6YmhmcnpiaXIuZ25vJy5zcGxpdChyZTcw
KTsKKyAgICAgIHN0cjYzLnJlcGxhY2UoL14uKmpyb3h2Z1wvKFxkKyhcLlxkKyk/KS4qJC8sICcn
KTsKKyAgICAgICd6aGZ2eCcucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnemhmdngnLnJlcGxh
Y2UocmU0MSwgJycpOworICAgICAgJ3poZnZ4Jy5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAgICd6
aGZ2eCcucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnemhmdngnLnJlcGxhY2UocmU0NCwgJycp
OworICAgICAgJ3poZnZ4Jy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICd6aGZ2eCcucmVwbGFj
ZShyZTQ2LCAnJyk7CisgICAgICAnemhmdngnLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ3po
ZnZ4Jy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICd6bGZjbnByX25jY2ZfcG5haW5mJy5yZXBs
YWNlKHJlNTIsICcnKTsKKyAgICAgIHN0cjkxLnJlcGxhY2UocmU0MCwgJycpOworICAgICAgc3Ry
OTEucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICBzdHI5MS5yZXBsYWNlKHJlNDIsICcnKTsKKyAg
ICAgIHN0cjkxLnJlcGxhY2UocmU0MywgJycpOworICAgICAgc3RyOTEucmVwbGFjZShyZTQ0LCAn
Jyk7CisgICAgICBzdHI5MS5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgIHN0cjkxLnJlcGxhY2Uo
cmU0NiwgJycpOworICAgICAgc3RyOTEucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICBzdHI5MS5y
ZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICdhbnpyJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAg
IHN0cjkyLnJlcGxhY2UoL1xiXHcrXGIvZywgJycpOworICAgICAgJ2Jvdy1ucHBiZXF2YmEnLnJl
cGxhY2UocmUzOSwgJycpOworICAgICAgJ2Jvd3JwZycucmVwbGFjZShyZTM5LCAnJyk7CisgICAg
ICAnYm93cnBnJy5yZXBsYWNlKHJlNjgsICcnKTsKKyAgICAgICdib3dycGcnLnJlcGxhY2UocmUx
OCwgJycpOworICAgICAgJ2NuZW56ZiUyUmZnbHlyZicucmVwbGFjZShyZTI5LCAnJyk7CisgICAg
ICAnY25lbnpmJTJSZmdseXJmJy5yZXBsYWNlKHJlMzAsICcnKTsKKyAgICAgICdjYmNoYycucmVw
bGFjZShyZTMwLCAnJyk7CisgICAgICAnZWJoZ3InLnJlcGxhY2UocmU0MCwgJycpOworICAgICAg
J2ViaGdyJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdlYmhncicucmVwbGFjZShyZTQyLCAn
Jyk7CisgICAgICAnZWJoZ3InLnJlcGxhY2UocmU0MywgJycpOworICAgICAgJ2ViaGdyJy5yZXBs
YWNlKHJlNDQsICcnKTsKKyAgICAgICdlYmhncicucmVwbGFjZShyZTQ1LCAnJyk7CisgICAgICAn
ZWJoZ3InLnJlcGxhY2UocmU0NiwgJycpOworICAgICAgJ2ViaGdyJy5yZXBsYWNlKHJlNDcsICcn
KTsKKyAgICAgICdlYmhncicucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAnZnJlaXZwcm9ia191
YycucmVwbGFjZShyZTMwLCAnJyk7CisgICAgICAnZnViY2N2YXRvYmtfdWMnLnJlcGxhY2UocmUz
MCwgJycpOworICAgICAgJ2Z1Ymhnb2JrJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdmY2Jl
ZycucmVwbGFjZShyZTQwLCAnJyk7CisgICAgICAnZmNiZWcnLnJlcGxhY2UocmU0MSwgJycpOwor
ICAgICAgJ2ZjYmVnJy5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAgICdmY2JlZycucmVwbGFjZShy
ZTQzLCAnJyk7CisgICAgICAnZmNiZWcnLnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ2ZjYmVn
Jy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICdmY2JlZycucmVwbGFjZShyZTQ2LCAnJyk7Cisg
ICAgICAnZmNiZWcnLnJlcGxhY2UocmU0NywgJycpOworICAgICAgJ2ZjYmVnJy5yZXBsYWNlKHJl
NDgsICcnKTsKKyAgICAgICdnYmhlJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAgICdnYmhlJy5y
ZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdnYmhlJy5yZXBsYWNlKHJlNDIsICcnKTsKKyAgICAg
ICdnYmhlJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICdnYmhlJy5yZXBsYWNlKHJlNDQsICcn
KTsKKyAgICAgICdnYmhlJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgICdnYmhlJy5yZXBsYWNl
KHJlNDYsICcnKTsKKyAgICAgICdnYmhlJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdnYmhl
Jy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICdnaS1mY2JnJy5yZXBsYWNlKHJlNDAsICcnKTsK
KyAgICAgICdnaS1mY2JnJy5yZXBsYWNlKHJlNDEsICcnKTsKKyAgICAgICdnaS1mY2JnJy5yZXBs
YWNlKHJlNDIsICcnKTsKKyAgICAgICdnaS1mY2JnJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAg
ICdnaS1mY2JnJy5yZXBsYWNlKHJlNDQsICcnKTsKKyAgICAgICdnaS1mY2JnJy5yZXBsYWNlKHJl
NDUsICcnKTsKKyAgICAgICdnaS1mY2JnJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdnaS1m
Y2JnJy5yZXBsYWNlKHJlNDcsICcnKTsKKyAgICAgICdnaS1mY2JnJy5yZXBsYWNlKHJlNDgsICcn
KTsKKyAgICAgICdnbGNyJy5yZXBsYWNlKHJlMzksICcnKTsKKyAgICAgICdoYXFyc3ZhcnEnLnJl
cGxhY2UoL1wvL2csICcnKTsKKyAgICAgIHN0cjkzLnJlcGxhY2UocmU0MCwgJycpOworICAgICAg
c3RyOTMucmVwbGFjZShyZTQxLCAnJyk7CisgICAgICBzdHI5My5yZXBsYWNlKHJlNDIsICcnKTsK
KyAgICAgIHN0cjkzLnJlcGxhY2UocmU0MywgJycpOworICAgICAgc3RyOTMucmVwbGFjZShyZTQ0
LCAnJyk7CisgICAgICBzdHI5My5yZXBsYWNlKHJlNDUsICcnKTsKKyAgICAgIHN0cjkzLnJlcGxh
Y2UocmU0NiwgJycpOworICAgICAgc3RyOTMucmVwbGFjZShyZTQ3LCAnJyk7CisgICAgICBzdHI5
My5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICdpdnFyYicucmVwbGFjZShyZTQwLCAnJyk7Cisg
ICAgICAnaXZxcmInLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJl
NDIsICcnKTsKKyAgICAgICdpdnFyYicucmVwbGFjZShyZTQzLCAnJyk7CisgICAgICAnaXZxcmIn
LnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDUsICcnKTsKKyAg
ICAgICdpdnFyYicucmVwbGFjZShyZTQ2LCAnJyk7CisgICAgICAnaXZxcmInLnJlcGxhY2UocmU0
NywgJycpOworICAgICAgJ2l2cXJiJy5yZXBsYWNlKHJlNDgsICcnKTsKKyAgICAgICdpdmZ2Z2Y9
MScuc3BsaXQocmU4Nik7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDAsICcnKTsKKyAgICAg
ICdqcmdncmUnLnJlcGxhY2UocmU0MSwgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFjZShyZTQy
LCAnJyk7CisgICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDMsICcnKTsKKyAgICAgICdqcmdncmUn
LnJlcGxhY2UocmU0NCwgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFjZShyZTQ1LCAnJyk7Cisg
ICAgICAnanJnZ3JlJy5yZXBsYWNlKHJlNDYsICcnKTsKKyAgICAgICdqcmdncmUnLnJlcGxhY2Uo
cmU0NywgJycpOworICAgICAgJ2pyZ2dyZScucmVwbGFjZShyZTQ4LCAnJyk7CisgICAgICAvI1th
LXowLTldKyQvaS5leGVjKCd1Z2djOi8vampqLmZwdWhyeXJlaW0uYXJnL1Fyc25oeWcnKTsKKyAg
ICAgIHJlNjYuZXhlYygnZnJ5cnBncnEnKTsKKyAgICAgIC8oPzpefFxzKylsaHYtYW5pKD86XHMr
fCQpLy5leGVjKCdzZmYgbGh2LWFuaScpOworICAgICAgLyg/Ol58XHMrKWxodi1hbmlmcmcoPzpc
cyt8JCkvLmV4ZWMoJ3pycXZuemJxZ25vIGxodi1hbmlmcmcnKTsKKyAgICAgIC8oPzpefFxzKyls
aHYtYW5pZnJnLWdiYyg/OlxzK3wkKS8uZXhlYygnenJxdm56YnFnbm8gbGh2LWFuaWZyZycpOwor
ICAgICAgcmU5MS5leGVjKCdHbm9UaHZxJyk7CisgICAgICByZTkxLmV4ZWMoJ3RodnEnKTsKKyAg
ICAgIC8ocGJ6Y25ndm95cnxqcm94dmcpLy5leGVjKHN0cjYzKTsKKyAgICAgIC8uKyg/OmVpfHZn
fGVufHZyKVtcLzogXShbXGQuXSspLy5leGVjKHN0cjYzKTsKKyAgICAgIHJlOC5leGVjKCcxNDQ2
MzE2NTguMC4xMC4xMjMxMzY1ODY5Jyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjAuMTAu
MTIzMTM2NzA1NCcpOworICAgICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xMjMxMzY1ODY5LjEuMS5o
Z3pwZmU9KHF2ZXJwZyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJl
OC5leGVjKCcxNDQ2MzE2NTguMTIzMTM2NzA1NC4xLjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0o
cXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAgICByZTguZXhlYygnMTQ0NjMxNjU4LjE2NzA4
MTYwNTIwMTkyMDkwMDAuMTIzMTM2NTg2OS4xMjMxMzY1ODY5LjEyMzEzNjU4NjkuMScpOworICAg
ICAgcmU4LmV4ZWMoJzE0NDYzMTY1OC4xNzk2MDgwNzE2NjIxNDE5NTAwLjEyMzEzNjcwNTQuMTIz
MTM2NzA1NC4xMjMxMzY3MDU0LjEnKTsKKyAgICAgIHJlOC5leGVjKHN0cjk0KTsKKyAgICAgIHJl
OC5leGVjKHN0cjk1KTsKKyAgICAgIHJlOC5leGVjKHN0cjk2KTsKKyAgICAgIHJlOC5leGVjKHN0
cjk3KTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem49MTQ0NjMxNjU4LjE2NzA4MTYwNTIwMTkyMDkw
MDAuMTIzMTM2NTg2OS4xMjMxMzY1ODY5LjEyMzEzNjU4NjkuMScpOworICAgICAgcmU4LmV4ZWMo
J19faGd6bj0xNDQ2MzE2NTguMTc5NjA4MDcxNjYyMTQxOTUwMC4xMjMxMzY3MDU0LjEyMzEzNjcw
NTQuMTIzMTM2NzA1NC4xJyk7CisgICAgICByZTguZXhlYygnX19oZ3pvPTE0NDYzMTY1OC4wLjEw
LjEyMzEzNjU4NjknKTsKKyAgICAgIHJlOC5leGVjKCdfX2hnem89MTQ0NjMxNjU4LjAuMTAuMTIz
MTM2NzA1NCcpOworICAgICAgcmU4LmV4ZWMoJ19faGd6bT0xNDQ2MzE2NTguMTIzMTM2NTg2OS4x
LjEuaGd6cGZlPShxdmVycGcpfGhnenBwYT0ocXZlcnBnKXxoZ3pwenE9KGFiYXIpJyk7CisgICAg
ICByZTguZXhlYygnX19oZ3ptPTE0NDYzMTY1OC4xMjMxMzY3MDU0LjEuMS5oZ3pwZmU9KHF2ZXJw
Zyl8aGd6cHBhPShxdmVycGcpfGhnenB6cT0oYWJhciknKTsKKyAgICAgIHJlMzQuZXhlYyhzdHI3
OCk7CisgICAgICByZTM0LmV4ZWMoc3RyNzkpOworICAgICAgcmUzNC5leGVjKHN0cjgxKTsKKyAg
ICAgIHJlNzQuZXhlYyhzdHI3Nyk7CisgICAgICByZTc0LmV4ZWMoJyonKTsKKyAgICAgIHJlNzQu
ZXhlYyhzdHI4Mik7CisgICAgICByZTc0LmV4ZWMoc3RyODMpOworICAgICAgcmU3NC5leGVjKHN0
cjg2KTsKKyAgICAgIHJlNzQuZXhlYygncnpvcnEnKTsKKyAgICAgIHJlNzQuZXhlYygnc2Jlei5u
d25rJyk7CisgICAgICByZTc0LmV4ZWMoc3RyOTApOworICAgICAgcmU3NC5leGVjKCdib3dycGcn
KTsKKyAgICAgIC9cL29uZnIud2YoXD8uKyk/JC8uZXhlYygnL3VnZ2M6Ly93Zi5odi1jYmVnbnku
cXIvdHprL3VienIvd2YvMjAwODA2MDIvb25mci53ZicpOworICAgICAgcmUyOC5leGVjKCd1dmFn
IHluZmdVdmFnIHluZmcnKTsKKyAgICAgIHJlNzUuZXhlYygnJyk7CisgICAgICByZTc2LmV4ZWMo
JycpOworICAgICAgcmU3Ny5leGVjKCcnKTsKKyAgICAgIHJlNzguZXhlYygnJyk7CisgICAgICBy
ZTgwLmV4ZWMoc3RyNzcpOworICAgICAgcmU4MC5leGVjKCcqJyk7CisgICAgICByZTgwLmV4ZWMo
Jy5weWJmcicpOworICAgICAgcmU4MC5leGVjKHN0cjgyKTsKKyAgICAgIHJlODAuZXhlYyhzdHI4
Myk7CisgICAgICByZTgwLmV4ZWMoc3RyODQpOworICAgICAgcmU4MC5leGVjKHN0cjg2KTsKKyAg
ICAgIHJlODAuZXhlYygncWcnKTsKKyAgICAgIHJlODAuZXhlYygncnpvcnEnKTsKKyAgICAgIHJl
ODAuZXhlYygnc2Jlei5ud25rJyk7CisgICAgICByZTgwLmV4ZWMoc3RyOTApOworICAgICAgcmU4
MC5leGVjKCdib3dycGcnKTsKKyAgICAgIHJlNjEuZXhlYygncWxhWXZvLndmJyk7CisgICAgICBy
ZTYxLmV4ZWMoJ3Jzc3JwZ1l2by53ZicpOworICAgICAgcmU2MS5leGVjKCd1Z2djOi8vampqLnR6
ay5hcmcvcXIvP2ZnbmdoZj11dmFqcnZmJyk7CisgICAgICByZTkyLmV4ZWMoJyAucHliZnInKTsK
KyAgICAgIHJlOTIuZXhlYygnIG4uc3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTIuZXhlYygn
IHFnJyk7CisgICAgICByZTkyLmV4ZWMoc3RyNDgpOworICAgICAgcmU5Mi5leGVjKCcubnduaycp
OworICAgICAgcmU5Mi5leGVjKCcuc3ZyeXFPZ2Esbi5zdnJ5cU9nYVBuYXByeScpOworICAgICAg
cmU5Mi5leGVjKCcuc3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTIuZXhlYygnLmJvdy1ucHBi
ZXF2YmEgcWcnKTsKKyAgICAgIHJlNjguZXhlYyhzdHI3Nyk7CisgICAgICByZTY4LmV4ZWMoJyon
KTsKKyAgICAgIHJlNjguZXhlYygnLnB5YmZyJyk7CisgICAgICByZTY4LmV4ZWMoc3RyODIpOwor
ICAgICAgcmU2OC5leGVjKHN0cjgzKTsKKyAgICAgIHJlNjguZXhlYyhzdHI4NCk7CisgICAgICBy
ZTY4LmV4ZWMoc3RyODYpOworICAgICAgcmU2OC5leGVjKCdxZycpOworICAgICAgcmU2OC5leGVj
KCdyem9ycScpOworICAgICAgcmU2OC5leGVjKCdzYmV6Lm53bmsnKTsKKyAgICAgIHJlNjguZXhl
YyhzdHI5MCk7CisgICAgICByZTY4LmV4ZWMoJ2Jvd3JwZycpOworICAgICAgcmU5My5leGVjKCcg
LnB5YmZyJyk7CisgICAgICByZTkzLmV4ZWMoJyBuLnN2cnlxT2dhUG5hcHJ5Jyk7CisgICAgICBy
ZTkzLmV4ZWMoJyBxZycpOworICAgICAgcmU5My5leGVjKHN0cjQ4KTsKKyAgICAgIHJlOTMuZXhl
YygnLm53bmsnKTsKKyAgICAgIHJlOTMuZXhlYygnLnN2cnlxT2dhLG4uc3ZyeXFPZ2FQbmFwcnkn
KTsKKyAgICAgIHJlOTMuZXhlYygnLnN2cnlxT2dhUG5hcHJ5Jyk7CisgICAgICByZTkzLmV4ZWMo
Jy5ib3ctbnBwYmVxdmJhIHFnJyk7CisgICAgICByZTgxLmV4ZWMoc3RyNzcpOworICAgICAgcmU4
MS5leGVjKCcqJyk7CisgICAgICByZTgxLmV4ZWMoc3RyNDgpOworICAgICAgcmU4MS5leGVjKCcu
cHliZnInKTsKKyAgICAgIHJlODEuZXhlYyhzdHI4Mik7CisgICAgICByZTgxLmV4ZWMoc3RyODMp
OworICAgICAgcmU4MS5leGVjKHN0cjg0KTsKKyAgICAgIHJlODEuZXhlYyhzdHI4Nik7CisgICAg
ICByZTgxLmV4ZWMoJ3FnJyk7CisgICAgICByZTgxLmV4ZWMoJ3J6b3JxJyk7CisgICAgICByZTgx
LmV4ZWMoJ3NiZXoubnduaycpOworICAgICAgcmU4MS5leGVjKHN0cjkwKTsKKyAgICAgIHJlODEu
ZXhlYygnYm93cnBnJyk7CisgICAgICByZTk0LmV4ZWMoJyAucHliZnInKTsKKyAgICAgIHJlOTQu
ZXhlYygnIG4uc3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTQuZXhlYygnIHFnJyk7CisgICAg
ICByZTk0LmV4ZWMoc3RyNDgpOworICAgICAgcmU5NC5leGVjKCcubnduaycpOworICAgICAgcmU5
NC5leGVjKCcuc3ZyeXFPZ2Esbi5zdnJ5cU9nYVBuYXByeScpOworICAgICAgcmU5NC5leGVjKCcu
c3ZyeXFPZ2FQbmFwcnknKTsKKyAgICAgIHJlOTQuZXhlYygnLmJvdy1ucHBiZXF2YmEgcWcnKTsK
KyAgICAgIHJlOTQuZXhlYygnW2FuenI9bndua0hleV0nKTsKKyAgICAgIHJlOTQuZXhlYyhzdHI4
Mik7CisgICAgICByZTMxLmV4ZWMoJ3JmJyk7CisgICAgICByZTMxLmV4ZWMoJ3duJyk7CisgICAg
ICByZTgyLmV4ZWMoc3RyNzcpOworICAgICAgcmU4Mi5leGVjKCcqJyk7CisgICAgICByZTgyLmV4
ZWMoc3RyNDgpOworICAgICAgcmU4Mi5leGVjKCcucHliZnInKTsKKyAgICAgIHJlODIuZXhlYyhz
dHI4Mik7CisgICAgICByZTgyLmV4ZWMoc3RyODMpOworICAgICAgcmU4Mi5leGVjKHN0cjg0KTsK
KyAgICAgIHJlODIuZXhlYyhzdHI4Nik7CisgICAgICByZTgyLmV4ZWMoJ3FnJyk7CisgICAgICBy
ZTgyLmV4ZWMoJ3J6b3JxJyk7CisgICAgICByZTgyLmV4ZWMoJ3NiZXoubnduaycpOworICAgICAg
cmU4Mi5leGVjKHN0cjkwKTsKKyAgICAgIHJlODIuZXhlYygnYm93cnBnJyk7CisgICAgICByZTgz
LmV4ZWMoc3RyOTgpOworICAgICAgcmU4My5leGVjKCdzaGFwZ3ZiYSBzYnBoZigpIHsgW2FuZ3Zp
ciBwYnFyXSB9Jyk7CisgICAgICByZTYyLmV4ZWMoJyNZYnR2YScpOworICAgICAgcmU2Mi5leGVj
KCcjWWJ0dmFfY25mZmpiZXEnKTsKKyAgICAgIHJlNjIuZXhlYyhzdHI3Nyk7CisgICAgICByZTYy
LmV4ZWMoJyNmdWJoZ29ia1dmJyk7CisgICAgICByZTYyLmV4ZWMoJyNmdWJoZ29ia1dmUmVlYmUn
KTsKKyAgICAgIHJlNjIuZXhlYygnI2Z1Ymhnb2JrV2ZGaHBwcmZmJyk7CisgICAgICByZTYyLmV4
ZWMoJyonKTsKKyAgICAgIHJlNjIuZXhlYyhzdHI4Mik7CisgICAgICByZTYyLmV4ZWMoc3RyODMp
OworICAgICAgcmU2Mi5leGVjKHN0cjg2KTsKKyAgICAgIHJlNjIuZXhlYygncnpvcnEnKTsKKyAg
ICAgIHJlNjIuZXhlYygnc2Jlei5ud25rJyk7CisgICAgICByZTYyLmV4ZWMoc3RyOTApOworICAg
ICAgcmU2Mi5leGVjKCdib3dycGcnKTsKKyAgICAgIHJlNDkuZXhlYygncGJhZ3JhZycpOworICAg
ICAgcmUyNC5leGVjKHN0cjYpOworICAgICAgL3hiYWRocmViZS8uZXhlYyhzdHI2Myk7CisgICAg
ICAvem5wLy5leGVjKCdqdmEzMicpOworICAgICAgL3pibXZ5eW4vLmV4ZWMoc3RyNjMpOworICAg
ICAgL3pmdnIvLmV4ZWMoc3RyNjMpOworICAgICAgL2FnXHM1XC4xLy5leGVjKHN0cjYzKTsKKyAg
ICAgIC9iY3Jlbi8uZXhlYyhzdHI2Myk7CisgICAgICAvZm5zbmV2Ly5leGVjKHN0cjYzKTsKKyAg
ICAgIC9qdmEvLmV4ZWMoJ2p2YTMyJyk7CisgICAgICAvanZhcWJqZi8uZXhlYyhzdHI2Myk7Cisg
ICAgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgcnVuQmxvY2sw
KCk7CisgICAgcnVuQmxvY2sxKCk7CisgICAgcnVuQmxvY2syKCk7CisgICAgcnVuQmxvY2szKCk7
CisgICAgcnVuQmxvY2s0KCk7CisgICAgcnVuQmxvY2s1KCk7CisgICAgcnVuQmxvY2s2KCk7Cisg
ICAgcnVuQmxvY2s3KCk7CisgICAgcnVuQmxvY2s4KCk7CisgICAgcnVuQmxvY2s5KCk7CisgICAg
cnVuQmxvY2sxMCgpOworICAgIHJ1bkJsb2NrMTEoKTsKKyAgfQorfQorCitmb3IgKHZhciBpID0g
MDsgaSA8IDM7ICsraSkKKyAgICBydW5SZWdFeHBCZW5jaG1hcmsoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdjgtcmljaGFyZHMtc3RyaWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy92OC1yaWNoYXJkcy1zdHJpY3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTFmZGM1YmYyODZhNmMwY2M2NWIwMTdiZDI2YmM0Mjg2NzBiZDdjOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvdjgtcmlj
aGFyZHMtc3RyaWN0LmpzCkBAIC0wLDAgKzEsNTM5IEBACisidXNlIHN0cmljdCI7CisKKy8vIENv
cHlyaWdodCAyMDA2LTIwMDggdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKy8vIFRoaXMgaXMgYSBKYXZhU2NyaXB0IGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBSaWNoYXJkcworLy8gYmVuY2htYXJrIGZyb206CisvLworLy8g
ICAgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1yMTAvQmVuY2guaHRtbAorLy8KKy8vIFRoZSBi
ZW5jaG1hcmsgd2FzIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gQkNQTCBieQorLy8gTWFydGlu
IFJpY2hhcmRzLgorCisKKy8qKgorICogVGhlIFJpY2hhcmRzIGJlbmNobWFyayBzaW11bGF0ZXMg
dGhlIHRhc2sgZGlzcGF0Y2hlciBvZiBhbgorICogb3BlcmF0aW5nIHN5c3RlbS4KKyAqKi8KK2Z1
bmN0aW9uIHJ1blJpY2hhcmRzKCkgeworICB2YXIgc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlcigp
OworICBzY2hlZHVsZXIuYWRkSWRsZVRhc2soSURfSURMRSwgMCwgbnVsbCwgQ09VTlQpOworCisg
IHZhciBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfV09SS0VSLCBLSU5EX1dPUkspOworICBx
dWV1ZSA9IG5ldyBQYWNrZXQocXVldWUsICBJRF9XT1JLRVIsIEtJTkRfV09SSyk7CisgIHNjaGVk
dWxlci5hZGRXb3JrZXJUYXNrKElEX1dPUktFUiwgMTAwMCwgcXVldWUpOworCisgIHF1ZXVlID0g
bmV3IFBhY2tldChudWxsLCBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5l
dyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5l
dyBQYWNrZXQocXVldWUsICBJRF9ERVZJQ0VfQSwgS0lORF9ERVZJQ0UpOworICBzY2hlZHVsZXIu
YWRkSGFuZGxlclRhc2soSURfSEFORExFUl9BLCAyMDAwLCBxdWV1ZSk7CisKKyAgcXVldWUgPSBu
ZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3
IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHF1ZXVlID0gbmV3
IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9CLCBLSU5EX0RFVklDRSk7CisgIHNjaGVkdWxlci5h
ZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0IsIDMwMDAsIHF1ZXVlKTsKKworICBzY2hlZHVsZXIu
YWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQSwgNDAwMCwgbnVsbCk7CisKKyAgc2NoZWR1bGVyLmFk
ZERldmljZVRhc2soSURfREVWSUNFX0IsIDUwMDAsIG51bGwpOworCisgIHNjaGVkdWxlci5zY2hl
ZHVsZSgpOworCisgIGlmIChzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9D
T1VOVCB8fAorICAgICAgc2NoZWR1bGVyLmhvbGRDb3VudCAhPSBFWFBFQ1RFRF9IT0xEX0NPVU5U
KSB7CisgICAgdmFyIG1zZyA9CisgICAgICAgICJFcnJvciBkdXJpbmcgZXhlY3V0aW9uOiBxdWV1
ZUNvdW50ID0gIiArIHNjaGVkdWxlci5xdWV1ZUNvdW50ICsKKyAgICAgICAgIiwgaG9sZENvdW50
ID0gIiArIHNjaGVkdWxlci5ob2xkQ291bnQgKyAiLiI7CisgICAgdGhyb3cgbmV3IEVycm9yKG1z
Zyk7CisgIH0KK30KKwordmFyIENPVU5UID0gMTAwMDsKKworLyoqCisgKiBUaGVzZSB0d28gY29u
c3RhbnRzIHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBwYWNrZXQgaXMgcXVldWVkIGFuZAorICog
aG93IG1hbnkgdGltZXMgYSB0YXNrIGlzIHB1dCBvbiBob2xkIGluIGEgY29ycmVjdCBydW4gb2Yg
cmljaGFyZHMuCisgKiBUaGV5IGRvbid0IGhhdmUgYW55IG1lYW5pbmcgYSBzdWNoIGJ1dCBhcmUg
Y2hhcmFjdGVyaXN0aWMgb2YgYQorICogY29ycmVjdCBydW4gc28gaWYgdGhlIGFjdHVhbCBxdWV1
ZSBvciBob2xkIGNvdW50IGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgZXhwZWN0ZWQgdGhlcmUg
bXVzdCBiZSBhIGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24uCisgKiovCit2YXIgRVhQRUNURURf
UVVFVUVfQ09VTlQgPSAyMzIyOwordmFyIEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKKwor
LyoqCisgKiBBIHNjaGVkdWxlciBjYW4gYmUgdXNlZCB0byBzY2hlZHVsZSBhIHNldCBvZiB0YXNr
cyBiYXNlZCBvbiB0aGVpciByZWxhdGl2ZQorICogcHJpb3JpdGllcy4gIFNjaGVkdWxpbmcgaXMg
ZG9uZSBieSBtYWludGFpbmluZyBhIGxpc3Qgb2YgdGFzayBjb250cm9sIGJsb2NrcworICogd2hp
Y2ggaG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisg
KiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gU2NoZWR1bGVyKCkgeworICB0aGlzLnF1ZXVl
Q291bnQgPSAwOworICB0aGlzLmhvbGRDb3VudCA9IDA7CisgIHRoaXMuYmxvY2tzID0gbmV3IEFy
cmF5KE5VTUJFUl9PRl9JRFMpOworICB0aGlzLmxpc3QgPSBudWxsOworICB0aGlzLmN1cnJlbnRU
Y2IgPSBudWxsOworICB0aGlzLmN1cnJlbnRJZCA9IG51bGw7Cit9CisKK3ZhciBJRF9JRExFICAg
ICAgID0gMDsKK3ZhciBJRF9XT1JLRVIgICAgID0gMTsKK3ZhciBJRF9IQU5ETEVSX0EgID0gMjsK
K3ZhciBJRF9IQU5ETEVSX0IgID0gMzsKK3ZhciBJRF9ERVZJQ0VfQSAgID0gNDsKK3ZhciBJRF9E
RVZJQ0VfQiAgID0gNTsKK3ZhciBOVU1CRVJfT0ZfSURTID0gNjsKKwordmFyIEtJTkRfREVWSUNF
ICAgPSAwOwordmFyIEtJTkRfV09SSyAgICAgPSAxOworCisvKioKKyAqIEFkZCBhbiBpZGxlIHRh
c2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9m
IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQor
ICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3Nl
ZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMg
dG8gc2NoZWR1bGUgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRJZGxlVGFz
ayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCBjb3VudCkgeworICB0aGlzLmFkZFJ1
bm5pbmdUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBJZGxlVGFzayh0aGlzLCAxLCBjb3Vu
dCkpOworfTsKKworLyoqCisgKiBBZGQgYSB3b3JrIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisg
KiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVl
IHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hl
ZHVsZXIucHJvdG90eXBlLmFkZFdvcmtlclRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBx
dWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IFdvcmtlclRh
c2sodGhpcywgSURfSEFORExFUl9BLCAwKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhhbmRsZXIg
dGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkg
b2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5
CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vz
c2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxlclRhc2sg
PSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHBy
aW9yaXR5LCBxdWV1ZSwgbmV3IEhhbmRsZXJUYXNrKHRoaXMpKTsKK307CisKKy8qKgorICogQWRk
IGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRo
ZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNr
J3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0
byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRE
ZXZpY2VUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhpcy5hZGRU
YXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBEZXZpY2VUYXNrKHRoaXMpKQorfTsKKworLyoq
CisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIGFuZCBtYXJrIGl0IGFzIHJ1bm5pbmcuCisgKiBA
cGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0g
cHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRo
ZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtU
YXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1
bm5pbmdUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhp
cy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmN1cnJlbnRUY2Iu
c2V0UnVubmluZygpOworfTsKKworLyoqCisgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIHRvIHRo
aXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFz
aworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJh
bSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUgdGFzayB0byBhZGQKKyAqLworU2NoZWR1
bGVyLnByb3RvdHlwZS5hZGRUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIHRh
c2spIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gbmV3IFRhc2tDb250cm9sQmxvY2sodGhpcy5saXN0
LCBpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5saXN0ID0gdGhpcy5jdXJyZW50
VGNiOworICB0aGlzLmJsb2Nrc1tpZF0gPSB0aGlzLmN1cnJlbnRUY2I7Cit9OworCisvKioKKyAq
IEV4ZWN1dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgKi8KK1NjaGVk
dWxlci5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRj
YiA9IHRoaXMubGlzdDsKKyAgd2hpbGUgKHRoaXMuY3VycmVudFRjYiAhPSBudWxsKSB7CisgICAg
aWYgKHRoaXMuY3VycmVudFRjYi5pc0hlbGRPclN1c3BlbmRlZCgpKSB7CisgICAgICB0aGlzLmN1
cnJlbnRUY2IgPSB0aGlzLmN1cnJlbnRUY2IubGluazsKKyAgICB9IGVsc2UgeworICAgICAgdGhp
cy5jdXJyZW50SWQgPSB0aGlzLmN1cnJlbnRUY2IuaWQ7CisgICAgICB0aGlzLmN1cnJlbnRUY2Ig
PSB0aGlzLmN1cnJlbnRUY2IucnVuKCk7CisgICAgfQorICB9Cit9OworCisvKioKKyAqIFJlbGVh
c2UgYSB0YXNrIHRoYXQgaXMgY3VycmVudGx5IGJsb2NrZWQgYW5kIHJldHVybiB0aGUgbmV4dCBi
bG9jayB0byBydW4uCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkIG9mIHRoZSB0YXNrIHRvIHN1
c3BlbmQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKGlkKSB7
CisgIHZhciB0Y2IgPSB0aGlzLmJsb2Nrc1tpZF07CisgIGlmICh0Y2IgPT0gbnVsbCkgcmV0dXJu
IHRjYjsKKyAgdGNiLm1hcmtBc05vdEhlbGQoKTsKKyAgaWYgKHRjYi5wcmlvcml0eSA+IHRoaXMu
Y3VycmVudFRjYi5wcmlvcml0eSkgeworICAgIHJldHVybiB0Y2I7CisgIH0gZWxzZSB7CisgICAg
cmV0dXJuIHRoaXMuY3VycmVudFRjYjsKKyAgfQorfTsKKworLyoqCisgKiBCbG9jayB0aGUgY3Vy
cmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQgdGFzayBjb250cm9sIGJs
b2NrCisgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdpbGwgbm90IGJlIG1hZGUgcnVubmFi
bGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQorICogcmVsZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsg
aXMgYWRkZWQgdG8gaXQuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJlbnQgPSBm
dW5jdGlvbiAoKSB7CisgIHRoaXMuaG9sZENvdW50Kys7CisgIHRoaXMuY3VycmVudFRjYi5tYXJr
QXNIZWxkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2IubGluazsKK307CisKKy8qKgorICog
U3VzcGVuZCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5leHQg
dGFzayBjb250cm9sIGJsb2NrCisgKiB0byBydW4uICBJZiBuZXcgd29yayBpcyBhZGRlZCB0byB0
aGUgc3VzcGVuZGVkIHRhc2sgaXQgd2lsbCBiZSBtYWRlIHJ1bm5hYmxlLgorICovCitTY2hlZHVs
ZXIucHJvdG90eXBlLnN1c3BlbmRDdXJyZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmN1cnJl
bnRUY2IubWFya0FzU3VzcGVuZGVkKCk7CisgIHJldHVybiB0aGlzLmN1cnJlbnRUY2I7Cit9Owor
CisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHBhY2tldCB0byB0aGUgZW5kIG9mIHRoZSB3b3Jr
bGlzdCB1c2VkIGJ5IHRoZSB0YXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhY2tldCBhbmQg
bWFrZSB0aGUgdGFzayBydW5uYWJsZSBpZiBpdCBpcyBjdXJyZW50bHkKKyAqIHN1c3BlbmRlZC4K
KyAqIEBwYXJhbSB7UGFja2V0fSBwYWNrZXQgdGhlIHBhY2tldCB0byBhZGQKKyAqLworU2NoZWR1
bGVyLnByb3RvdHlwZS5xdWV1ZSA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdmFyIHQgPSB0aGlz
LmJsb2Nrc1twYWNrZXQuaWRdOworICBpZiAodCA9PSBudWxsKSByZXR1cm4gdDsKKyAgdGhpcy5x
dWV1ZUNvdW50Kys7CisgIHBhY2tldC5saW5rID0gbnVsbDsKKyAgcGFja2V0LmlkID0gdGhpcy5j
dXJyZW50SWQ7CisgIHJldHVybiB0LmNoZWNrUHJpb3JpdHlBZGQodGhpcy5jdXJyZW50VGNiLCBw
YWNrZXQpOworfTsKKworLyoqCisgKiBBIHRhc2sgY29udHJvbCBibG9jayBtYW5hZ2VzIGEgdGFz
ayBhbmQgdGhlIHF1ZXVlIG9mIHdvcmsgcGFja2FnZXMgYXNzb2NpYXRlZAorICogd2l0aCBpdC4K
KyAqIEBwYXJhbSB7VGFza0NvbnRyb2xCbG9ja30gbGluayB0aGUgcHJlY2VkaW5nIGJsb2NrIGlu
IHRoZSBsaW5rZWQgYmxvY2sgbGlzdAorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBvZiB0aGlz
IGJsb2NrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHByaW9yaXR5IG9mIHRoaXMgYmxv
Y2sKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2YgcGFja2FnZXMgdG8gYmUg
cHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sKKyAq
IEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBUYXNrQ29udHJvbEJsb2NrKGxpbmssIGlkLCBw
cmlvcml0eSwgcXVldWUsIHRhc2spIHsKKyAgdGhpcy5saW5rID0gbGluazsKKyAgdGhpcy5pZCA9
IGlkOworICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7CisgIHRoaXMucXVldWUgPSBxdWV1ZTsK
KyAgdGhpcy50YXNrID0gdGFzazsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHsKKyAgICB0aGlzLnN0
YXRlID0gU1RBVEVfU1VTUEVOREVEOworICB9IGVsc2UgeworICAgIHRoaXMuc3RhdGUgPSBTVEFU
RV9TVVNQRU5ERURfUlVOTkFCTEU7CisgIH0KK30KKworLyoqCisgKiBUaGUgdGFzayBpcyBydW5u
aW5nIGFuZCBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgorICovCit2YXIgU1RBVEVfUlVOTklORyA9
IDA7CisKKy8qKgorICogVGhlIHRhc2sgaGFzIHBhY2tldHMgbGVmdCB0byBwcm9jZXNzLgorICov
Cit2YXIgU1RBVEVfUlVOTkFCTEUgPSAxOworCisvKioKKyAqIFRoZSB0YXNrIGlzIG5vdCBjdXJy
ZW50bHkgcnVubmluZy4gIFRoZSB0YXNrIGlzIG5vdCBibG9ja2VkIGFzIHN1Y2ggYW5kIG1heQor
KiBiZSBzdGFydGVkIGJ5IHRoZSBzY2hlZHVsZXIuCisgKi8KK3ZhciBTVEFURV9TVVNQRU5ERUQg
PSAyOworCisvKioKKyAqIFRoZSB0YXNrIGlzIGJsb2NrZWQgYW5kIGNhbm5vdCBiZSBydW4gdW50
aWwgaXQgaXMgZXhwbGljaXRseSByZWxlYXNlZC4KKyAqLwordmFyIFNUQVRFX0hFTEQgPSA0Owor
Cit2YXIgU1RBVEVfU1VTUEVOREVEX1JVTk5BQkxFID0gU1RBVEVfU1VTUEVOREVEIHwgU1RBVEVf
UlVOTkFCTEU7Cit2YXIgU1RBVEVfTk9UX0hFTEQgPSB+U1RBVEVfSEVMRDsKKworVGFza0NvbnRy
b2xCbG9jay5wcm90b3R5cGUuc2V0UnVubmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0
ZSA9IFNUQVRFX1JVTk5JTkc7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJr
QXNOb3RIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSAmIFNU
QVRFX05PVF9IRUxEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzSGVs
ZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgfCBTVEFURV9IRUxE
OworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5kZWQgPSBm
dW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5zdGF0ZSAmIFNUQVRFX0hFTEQpICE9IDAgfHwg
KHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEKTsKK307CisKK1Rhc2tDb250cm9sQmxvY2su
cHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9
IHRoaXMuc3RhdGUgfCBTVEFURV9TVVNQRU5ERUQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5tYXJrQXNSdW5uYWJsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRo
aXMuc3RhdGUgfCBTVEFURV9SVU5OQUJMRTsKK307CisKKy8qKgorICogUnVucyB0aGlzIHRhc2ss
IGlmIGl0IGlzIHJlYWR5IHRvIGJlIHJ1biwgYW5kIHJldHVybnMgdGhlIG5leHQgdGFzayB0byBy
dW4uCisgKi8KK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHsK
KyAgdmFyIHBhY2tldDsKKyAgaWYgKHRoaXMuc3RhdGUgPT0gU1RBVEVfU1VTUEVOREVEX1JVTk5B
QkxFKSB7CisgICAgcGFja2V0ID0gdGhpcy5xdWV1ZTsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0
Lmxpbms7CisgICAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgICAgdGhpcy5zdGF0ZSA9
IFNUQVRFX1JVTk5JTkc7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9S
VU5OQUJMRTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgcGFja2V0ID0gbnVsbDsKKyAgfQorICBy
ZXR1cm4gdGhpcy50YXNrLnJ1bihwYWNrZXQpOworfTsKKworLyoqCisgKiBBZGRzIGEgcGFja2V0
IHRvIHRoZSB3b3JrbGlzdCBvZiB0aGlzIGJsb2NrJ3MgdGFzaywgbWFya3MgdGhpcyBhcyBydW5u
YWJsZSBpZgorICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJucyB0aGUgbmV4dCBydW5uYWJsZSBvYmpl
Y3QgdG8gcnVuICh0aGUgb25lCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5KS4KKyAqLwor
VGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlvcml0eUFkZCA9IGZ1bmN0aW9uICh0
YXNrLCBwYWNrZXQpIHsKKyAgaWYgKHRoaXMucXVldWUgPT0gbnVsbCkgeworICAgIHRoaXMucXVl
dWUgPSBwYWNrZXQ7CisgICAgdGhpcy5tYXJrQXNSdW5uYWJsZSgpOworICAgIGlmICh0aGlzLnBy
aW9yaXR5ID4gdGFzay5wcmlvcml0eSkgcmV0dXJuIHRoaXM7CisgIH0gZWxzZSB7CisgICAgdGhp
cy5xdWV1ZSA9IHBhY2tldC5hZGRUbyh0aGlzLnF1ZXVlKTsKKyAgfQorICByZXR1cm4gdGFzazsK
K307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkg
eworICByZXR1cm4gInRjYiB7ICIgKyB0aGlzLnRhc2sgKyAiQCIgKyB0aGlzLnN0YXRlICsgIiB9
IjsKK307CisKKy8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55IHdvcmsgaXRzZWxm
IGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28KKyAqIGRldmljZSB0YXNrcy4KKyAq
IEBwYXJhbSB7U2NoZWR1bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMg
dGhpcyB0YXNrCisgKiBAcGFyYW0ge2ludH0gdjEgYSBzZWVkIHZhbHVlIHRoYXQgY29udHJvbHMg
aG93IHRoZSBkZXZpY2UgdGFza3MgYXJlIHNjaGVkdWxlZAorICogQHBhcmFtIHtpbnR9IGNvdW50
IHRoZSBudW1iZXIgb2YgdGltZXMgdGhpcyB0YXNrIHNob3VsZCBiZSBzY2hlZHVsZWQKKyAqIEBj
b25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBJZGxlVGFzayhzY2hlZHVsZXIsIHYxLCBjb3VudCkg
eworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0aGlz
LmNvdW50ID0gY291bnQ7Cit9CisKK0lkbGVUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAo
cGFja2V0KSB7CisgIHRoaXMuY291bnQtLTsKKyAgaWYgKHRoaXMuY291bnQgPT0gMCkgcmV0dXJu
IHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIGlmICgodGhpcy52MSAmIDEpID09IDAp
IHsKKyAgICB0aGlzLnYxID0gdGhpcy52MSA+PiAxOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxl
ci5yZWxlYXNlKElEX0RFVklDRV9BKTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxID0gKHRoaXMu
djEgPj4gMSkgXiAweEQwMDg7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURf
REVWSUNFX0IpOworICB9Cit9OworCitJZGxlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5j
dGlvbiAoKSB7CisgIHJldHVybiAiSWRsZVRhc2siCit9OworCisvKioKKyAqIEEgdGFzayB0aGF0
IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVs
YXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICogQHBh
cmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlz
IHRhc2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBEZXZpY2VUYXNrKHNjaGVkdWxl
cikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7Cit9
CisKK0RldmljZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYg
KHBhY2tldCA9PSBudWxsKSB7CisgICAgaWYgKHRoaXMudjEgPT0gbnVsbCkgcmV0dXJuIHRoaXMu
c2NoZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgICAgdmFyIHYgPSB0aGlzLnYxOworICAgIHRo
aXMudjEgPSBudWxsOworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgfSBl
bHNlIHsKKyAgICB0aGlzLnYxID0gcGFja2V0OworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5o
b2xkQ3VycmVudCgpOworICB9Cit9OworCitEZXZpY2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJEZXZpY2VUYXNrIjsKK307CisKKy8qKgorICogQSB0
YXNrIHRoYXQgbWFuaXB1bGF0ZXMgd29yayBwYWNrZXRzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9
IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJh
bSB7aW50fSB2MSBhIHNlZWQgdXNlZCB0byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1h
bmlwdWxhdGVkCisgKiBAcGFyYW0ge2ludH0gdjIgYW5vdGhlciBzZWVkIHVzZWQgdG8gc3BlY2lm
eSBob3cgd29yayBwYWNrZXRzIGFyZSBtYW5pcHVsYXRlZAorICogQGNvbnN0cnVjdG9yCisgKi8K
K2Z1bmN0aW9uIFdvcmtlclRhc2soc2NoZWR1bGVyLCB2MSwgdjIpIHsKKyAgdGhpcy5zY2hlZHVs
ZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSB2MTsKKyAgdGhpcy52MiA9IHYyOworfQorCitX
b3JrZXJUYXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNr
ZXQgPT0gbnVsbCkgeworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgp
OworICB9IGVsc2UgeworICAgIGlmICh0aGlzLnYxID09IElEX0hBTkRMRVJfQSkgeworICAgICAg
dGhpcy52MSA9IElEX0hBTkRMRVJfQjsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy52MSA9IElE
X0hBTkRMRVJfQTsKKyAgICB9CisgICAgcGFja2V0LmlkID0gdGhpcy52MTsKKyAgICBwYWNrZXQu
YTEgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgREFUQV9TSVpFOyBpKyspIHsKKyAgICAg
IHRoaXMudjIrKzsKKyAgICAgIGlmICh0aGlzLnYyID4gMjYpIHRoaXMudjIgPSAxOworICAgICAg
cGFja2V0LmEyW2ldID0gdGhpcy52MjsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVy
LnF1ZXVlKHBhY2tldCk7CisgIH0KK307CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnRvU3RyaW5n
ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIldvcmtlclRhc2siOworfTsKKworLyoqCisgKiBB
IHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4gc3VzcGVuZHMgaXRz
ZWxmLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQg
bWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBIYW5kbGVy
VGFzayhzY2hlZHVsZXIpIHsKKyAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMu
djEgPSBudWxsOworICB0aGlzLnYyID0gbnVsbDsKK30KKworSGFuZGxlclRhc2sucHJvdG90eXBl
LnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCAhPSBudWxsKSB7CisgICAg
aWYgKHBhY2tldC5raW5kID09IEtJTkRfV09SSykgeworICAgICAgdGhpcy52MSA9IHBhY2tldC5h
ZGRUbyh0aGlzLnYxKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy52MiA9IHBhY2tldC5hZGRU
byh0aGlzLnYyKTsKKyAgICB9CisgIH0KKyAgaWYgKHRoaXMudjEgIT0gbnVsbCkgeworICAgIHZh
ciBjb3VudCA9IHRoaXMudjEuYTE7CisgICAgdmFyIHY7CisgICAgaWYgKGNvdW50IDwgREFUQV9T
SVpFKSB7CisgICAgICBpZiAodGhpcy52MiAhPSBudWxsKSB7CisgICAgICAgIHYgPSB0aGlzLnYy
OworICAgICAgICB0aGlzLnYyID0gdGhpcy52Mi5saW5rOworICAgICAgICB2LmExID0gdGhpcy52
MS5hMltjb3VudF07CisgICAgICAgIHRoaXMudjEuYTEgPSBjb3VudCArIDE7CisgICAgICAgIHJl
dHVybiB0aGlzLnNjaGVkdWxlci5xdWV1ZSh2KTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgdiA9IHRoaXMudjE7CisgICAgICB0aGlzLnYxID0gdGhpcy52MS5saW5rOworICAgICAgcmV0
dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAgIH0KKyAgfQorICByZXR1cm4gdGhpcy5z
Y2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKK307CisKK0hhbmRsZXJUYXNrLnByb3RvdHlwZS50
b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJIYW5kbGVyVGFzayI7Cit9OworCisv
KiAtLS0gKgorICogUCBhIGMgayBlIHQKKyAqIC0tLSAqLworCit2YXIgREFUQV9TSVpFID0gNDsK
KworLyoqCisgKiBBIHNpbXBsZSBwYWNrYWdlIG9mIGRhdGEgdGhhdCBpcyBtYW5pcHVsYXRlZCBi
eSB0aGUgdGFza3MuICBUaGUgZXhhY3QgbGF5b3V0CisgKiBvZiB0aGUgcGF5bG9hZCBkYXRhIGNh
cnJpZWQgYnkgYSBwYWNrZXQgaXMgbm90IGltcG9ydGFpbnQsIGFuZCBuZWl0aGVyIGlzIHRoZQor
ICogbmF0dXJlIG9mIHRoZSB3b3JrIHBlcmZvcm1lZCBvbiBwYWNrZXRzIGJ5IHRoZSB0YXNrcy4K
KyAqCisgKiBCZXNpZGVzIGNhcnJ5aW5nIGRhdGEsIHBhY2tldHMgZm9ybSBsaW5rZWQgbGlzdHMg
YW5kIGFyZSBoZW5jZSB1c2VkIGJvdGggYXMKKyAqIGRhdGEgYW5kIHdvcmtsaXN0cy4KKyAqIEBw
YXJhbSB7UGFja2V0fSBsaW5rIHRoZSB0YWlsIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBwYWNrZXRz
CisgKiBAcGFyYW0ge2ludH0gaWQgYW4gSUQgZm9yIHRoaXMgcGFja2V0CisgKiBAcGFyYW0ge2lu
dH0ga2luZCB0aGUgdHlwZSBvZiB0aGlzIHBhY2tldAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1
bmN0aW9uIFBhY2tldChsaW5rLCBpZCwga2luZCkgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0
aGlzLmlkID0gaWQ7CisgIHRoaXMua2luZCA9IGtpbmQ7CisgIHRoaXMuYTEgPSAwOworICB0aGlz
LmEyID0gbmV3IEFycmF5KERBVEFfU0laRSk7Cit9CisKKy8qKgorICogQWRkIHRoaXMgcGFja2V0
IHRvIHRoZSBlbmQgb2YgYSB3b3JrbGlzdCwgYW5kIHJldHVybiB0aGUgd29ya2xpc3QuCisgKiBA
cGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHdvcmtsaXN0IHRvIGFkZCB0aGlzIHBhY2tldCB0bwor
ICovCitQYWNrZXQucHJvdG90eXBlLmFkZFRvID0gZnVuY3Rpb24gKHF1ZXVlKSB7CisgIHRoaXMu
bGluayA9IG51bGw7CisgIGlmIChxdWV1ZSA9PSBudWxsKSByZXR1cm4gdGhpczsKKyAgdmFyIHBl
ZWssIG5leHQgPSBxdWV1ZTsKKyAgd2hpbGUgKChwZWVrID0gbmV4dC5saW5rKSAhPSBudWxsKQor
ICAgIG5leHQgPSBwZWVrOworICBuZXh0LmxpbmsgPSB0aGlzOworICByZXR1cm4gcXVldWU7Cit9
OworCitQYWNrZXQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4g
IlBhY2tldCI7Cit9OworCitmb3IgKHZhciBpID0gMDsgaSA8IDM1MDsgKytpKQorICBydW5SaWNo
YXJkcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy92
OC1zcGxheS1zdHJpY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Y4
LXNwbGF5LXN0cmljdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2IzNzdkMGQ3ZDBiMjc4MmY3NjhhMDk4NDRi
Yjc4OTAyY2NlNjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy92OC1zcGxheS1zdHJpY3QuanMKQEAgLTAsMCArMSwzOTUgQEAKKyJ1c2Ugc3Ry
aWN0IjsKKworLy8gQ29weXJpZ2h0IDIwMDkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
Ly8gICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKy8vICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBUaGlzIGJlbmNobWFyayBp
cyBiYXNlZCBvbiBhIEphdmFTY3JpcHQgbG9nIHByb2Nlc3NpbmcgbW9kdWxlIHVzZWQKKy8vIGJ5
IHRoZSBWOCBwcm9maWxlciB0byBnZW5lcmF0ZSBleGVjdXRpb24gdGltZSBwcm9maWxlcyBmb3Ig
cnVucyBvZgorLy8gSmF2YVNjcmlwdCBhcHBsaWNhdGlvbnMsIGFuZCBpdCBlZmZlY3RpdmVseSBt
ZWFzdXJlcyBob3cgZmFzdCB0aGUKKy8vIEphdmFTY3JpcHQgZW5naW5lIGlzIGF0IGFsbG9jYXRp
bmcgbm9kZXMgYW5kIHJlY2xhaW1pbmcgdGhlIG1lbW9yeQorLy8gdXNlZCBmb3Igb2xkIG5vZGVz
LiBCZWNhdXNlIG9mIHRoZSB3YXkgc3BsYXkgdHJlZXMgd29yaywgdGhlIGVuZ2luZQorLy8gYWxz
byBoYXMgdG8gZGVhbCB3aXRoIGEgbG90IG9mIGNoYW5nZXMgdG8gdGhlIGxhcmdlIHRyZWUgb2Jq
ZWN0CisvLyBncmFwaC4KKworLy8gQ29uZmlndXJhdGlvbi4KK3ZhciBrU3BsYXlUcmVlU2l6ZSA9
IDgwMDA7Cit2YXIga1NwbGF5VHJlZU1vZGlmaWNhdGlvbnMgPSA4MDsKK3ZhciBrU3BsYXlUcmVl
UGF5bG9hZERlcHRoID0gNTsKKwordmFyIHNwbGF5VHJlZSA9IG51bGw7CisKKworZnVuY3Rpb24g
R2VuZXJhdGVQYXlsb2FkVHJlZShkZXB0aCwgdGFnKSB7CisgIGlmIChkZXB0aCA9PSAwKSB7Cisg
ICAgcmV0dXJuIHsKKyAgICAgIGFycmF5ICA6IFsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSBdLAorICAgICAgc3RyaW5nIDogJ1N0cmluZyBmb3Iga2V5ICcgKyB0YWcgKyAnIGluIGxlYWYg
bm9kZScKKyAgICB9OworICB9IGVsc2UgeworICAgIHJldHVybiB7CisgICAgICBsZWZ0OiAgR2Vu
ZXJhdGVQYXlsb2FkVHJlZShkZXB0aCAtIDEsIHRhZyksCisgICAgICByaWdodDogR2VuZXJhdGVQ
YXlsb2FkVHJlZShkZXB0aCAtIDEsIHRhZykKKyAgICB9OworICB9Cit9CisKKworZnVuY3Rpb24g
R2VuZXJhdGVLZXkoKSB7CisgIC8vIFRoZSBiZW5jaG1hcmsgZnJhbWV3b3JrIGd1YXJhbnRlZXMg
dGhhdCBNYXRoLnJhbmRvbSBpcworICAvLyBkZXRlcm1pbmlzdGljOyBzZWUgYmFzZS5qcy4KKyAg
cmV0dXJuIE1hdGgucmFuZG9tKCk7Cit9CisKKworZnVuY3Rpb24gSW5zZXJ0TmV3Tm9kZSgpIHsK
KyAgLy8gSW5zZXJ0IG5ldyBub2RlIHdpdGggYSB1bmlxdWUga2V5LgorICB2YXIga2V5OworICBk
byB7CisgICAga2V5ID0gR2VuZXJhdGVLZXkoKTsKKyAgfSB3aGlsZSAoc3BsYXlUcmVlLmZpbmQo
a2V5KSAhPSBudWxsKTsKKyAgdmFyIHBheWxvYWQgPSBHZW5lcmF0ZVBheWxvYWRUcmVlKGtTcGxh
eVRyZWVQYXlsb2FkRGVwdGgsIFN0cmluZyhrZXkpKTsKKyAgc3BsYXlUcmVlLmluc2VydChrZXks
IHBheWxvYWQpOworICByZXR1cm4ga2V5OworfQorCisKKworZnVuY3Rpb24gU3BsYXlTZXR1cCgp
IHsKKyAgc3BsYXlUcmVlID0gbmV3IFNwbGF5VHJlZSgpOworICBmb3IgKHZhciBpID0gMDsgaSA8
IGtTcGxheVRyZWVTaXplOyBpKyspIEluc2VydE5ld05vZGUoKTsKK30KKworCitmdW5jdGlvbiBT
cGxheVRlYXJEb3duKCkgeworICAvLyBBbGxvdyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gcmVj
bGFpbSB0aGUgbWVtb3J5CisgIC8vIHVzZWQgYnkgdGhlIHNwbGF5IHRyZWUgbm8gbWF0dGVyIGhv
dyB3ZSBleGl0IHRoZQorICAvLyB0ZWFyIGRvd24gZnVuY3Rpb24uCisgIHZhciBrZXlzID0gc3Bs
YXlUcmVlLmV4cG9ydEtleXMoKTsKKyAgc3BsYXlUcmVlID0gbnVsbDsKKworICAvLyBWZXJpZnkg
dGhhdCB0aGUgc3BsYXkgdHJlZSBoYXMgdGhlIHJpZ2h0IHNpemUuCisgIHZhciBsZW5ndGggPSBr
ZXlzLmxlbmd0aDsKKyAgaWYgKGxlbmd0aCAhPSBrU3BsYXlUcmVlU2l6ZSkgeworICAgIHRocm93
IG5ldyBFcnJvcigiU3BsYXkgdHJlZSBoYXMgd3Jvbmcgc2l6ZSIpOworICB9CisKKyAgLy8gVmVy
aWZ5IHRoYXQgdGhlIHNwbGF5IHRyZWUgaGFzIHNvcnRlZCwgdW5pcXVlIGtleXMuCisgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7CisgICAgaWYgKGtleXNbaV0gPj0ga2V5
c1tpICsgMV0pIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcigiU3BsYXkgdHJlZSBub3Qgc29ydGVk
Iik7CisgICAgfQorICB9Cit9CisKKworZnVuY3Rpb24gU3BsYXlSdW4oKSB7CisgIC8vIFJlcGxh
Y2UgYSBmZXcgbm9kZXMgaW4gdGhlIHNwbGF5IHRyZWUuCisgIGZvciAodmFyIGkgPSAwOyBpIDwg
a1NwbGF5VHJlZU1vZGlmaWNhdGlvbnM7IGkrKykgeworICAgIHZhciBrZXkgPSBJbnNlcnROZXdO
b2RlKCk7CisgICAgdmFyIGdyZWF0ZXN0ID0gc3BsYXlUcmVlLmZpbmRHcmVhdGVzdExlc3NUaGFu
KGtleSk7CisgICAgaWYgKGdyZWF0ZXN0ID09IG51bGwpIHNwbGF5VHJlZS5yZW1vdmUoa2V5KTsK
KyAgICBlbHNlIHNwbGF5VHJlZS5yZW1vdmUoZ3JlYXRlc3Qua2V5KTsKKyAgfQorfQorCisKKy8q
KgorICogQ29uc3RydWN0cyBhIFNwbGF5IHRyZWUuICBBIHNwbGF5IHRyZWUgaXMgYSBzZWxmLWJh
bGFuY2luZyBiaW5hcnkKKyAqIHNlYXJjaCB0cmVlIHdpdGggdGhlIGFkZGl0aW9uYWwgcHJvcGVy
dHkgdGhhdCByZWNlbnRseSBhY2Nlc3NlZAorICogZWxlbWVudHMgYXJlIHF1aWNrIHRvIGFjY2Vz
cyBhZ2Fpbi4gSXQgcGVyZm9ybXMgYmFzaWMgb3BlcmF0aW9ucworICogc3VjaCBhcyBpbnNlcnRp
b24sIGxvb2stdXAgYW5kIHJlbW92YWwgaW4gTyhsb2cobikpIGFtb3J0aXplZCB0aW1lLgorICoK
KyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTcGxheVRyZWUoKSB7Cit9OworCisKKy8q
KgorICogUG9pbnRlciB0byB0aGUgcm9vdCBub2RlIG9mIHRoZSB0cmVlLgorICoKKyAqIEB0eXBl
IHtTcGxheVRyZWUuTm9kZX0KKyAqIEBwcml2YXRlCisgKi8KK1NwbGF5VHJlZS5wcm90b3R5cGUu
cm9vdF8gPSBudWxsOworCisKKy8qKgorICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUg
dHJlZSBpcyBlbXB0eS4KKyAqLworU3BsYXlUcmVlLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rp
b24oKSB7CisgIHJldHVybiAhdGhpcy5yb290XzsKK307CisKKworLyoqCisgKiBJbnNlcnRzIGEg
bm9kZSBpbnRvIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgYW5kIHZhbHVlIGlmCisg
KiB0aGUgdHJlZSBkb2VzIG5vdCBhbHJlYWR5IGNvbnRhaW4gYSBub2RlIHdpdGggdGhlIHNwZWNp
ZmllZCBrZXkuIElmCisgKiB0aGUgdmFsdWUgaXMgaW5zZXJ0ZWQsIGl0IGJlY29tZXMgdGhlIHJv
b3Qgb2YgdGhlIHRyZWUuCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGtleSBLZXkgdG8gaW5zZXJ0
IGludG8gdGhlIHRyZWUuCisgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGluc2VydCBpbnRv
IHRoZSB0cmVlLgorICovCitTcGxheVRyZWUucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKGtl
eSwgdmFsdWUpIHsKKyAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7CisgICAgdGhpcy5yb290XyA9IG5l
dyBTcGxheVRyZWUuTm9kZShrZXksIHZhbHVlKTsKKyAgICByZXR1cm47CisgIH0KKyAgLy8gU3Bs
YXkgb24gdGhlIGtleSB0byBtb3ZlIHRoZSBsYXN0IG5vZGUgb24gdGhlIHNlYXJjaCBwYXRoIGZv
cgorICAvLyB0aGUga2V5IHRvIHRoZSByb290IG9mIHRoZSB0cmVlLgorICB0aGlzLnNwbGF5Xyhr
ZXkpOworICBpZiAodGhpcy5yb290Xy5rZXkgPT0ga2V5KSB7CisgICAgcmV0dXJuOworICB9Cisg
IHZhciBub2RlID0gbmV3IFNwbGF5VHJlZS5Ob2RlKGtleSwgdmFsdWUpOworICBpZiAoa2V5ID4g
dGhpcy5yb290Xy5rZXkpIHsKKyAgICBub2RlLmxlZnQgPSB0aGlzLnJvb3RfOworICAgIG5vZGUu
cmlnaHQgPSB0aGlzLnJvb3RfLnJpZ2h0OworICAgIHRoaXMucm9vdF8ucmlnaHQgPSBudWxsOwor
ICB9IGVsc2UgeworICAgIG5vZGUucmlnaHQgPSB0aGlzLnJvb3RfOworICAgIG5vZGUubGVmdCA9
IHRoaXMucm9vdF8ubGVmdDsKKyAgICB0aGlzLnJvb3RfLmxlZnQgPSBudWxsOworICB9CisgIHRo
aXMucm9vdF8gPSBub2RlOworfTsKKworCisvKioKKyAqIFJlbW92ZXMgYSBub2RlIHdpdGggdGhl
IHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgdHJlZSBpZiB0aGUgdHJlZQorICogY29udGFpbnMgYSBu
b2RlIHdpdGggdGhpcyBrZXkuIFRoZSByZW1vdmVkIG5vZGUgaXMgcmV0dXJuZWQuIElmIHRoZQor
ICoga2V5IGlzIG5vdCBmb3VuZCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyAqCisgKiBAcGFy
YW0ge251bWJlcn0ga2V5IEtleSB0byBmaW5kIGFuZCByZW1vdmUgZnJvbSB0aGUgdHJlZS4KKyAq
IEByZXR1cm4ge1NwbGF5VHJlZS5Ob2RlfSBUaGUgcmVtb3ZlZCBub2RlLgorICovCitTcGxheVRy
ZWUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGtleSkgeworICBpZiAodGhpcy5pc0VtcHR5
KCkpIHsKKyAgICB0aHJvdyBFcnJvcignS2V5IG5vdCBmb3VuZDogJyArIGtleSk7CisgIH0KKyAg
dGhpcy5zcGxheV8oa2V5KTsKKyAgaWYgKHRoaXMucm9vdF8ua2V5ICE9IGtleSkgeworICAgIHRo
cm93IEVycm9yKCdLZXkgbm90IGZvdW5kOiAnICsga2V5KTsKKyAgfQorICB2YXIgcmVtb3ZlZCA9
IHRoaXMucm9vdF87CisgIGlmICghdGhpcy5yb290Xy5sZWZ0KSB7CisgICAgdGhpcy5yb290XyA9
IHRoaXMucm9vdF8ucmlnaHQ7CisgIH0gZWxzZSB7CisgICAgdmFyIHJpZ2h0ID0gdGhpcy5yb290
Xy5yaWdodDsKKyAgICB0aGlzLnJvb3RfID0gdGhpcy5yb290Xy5sZWZ0OworICAgIC8vIFNwbGF5
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBuZXcgcm9vdCBoYXMgYW4gZW1wdHkgcmlnaHQgY2hpbGQu
CisgICAgdGhpcy5zcGxheV8oa2V5KTsKKyAgICAvLyBJbnNlcnQgdGhlIG9yaWdpbmFsIHJpZ2h0
IGNoaWxkIGFzIHRoZSByaWdodCBjaGlsZCBvZiB0aGUgbmV3CisgICAgLy8gcm9vdC4KKyAgICB0
aGlzLnJvb3RfLnJpZ2h0ID0gcmlnaHQ7CisgIH0KKyAgcmV0dXJuIHJlbW92ZWQ7Cit9OworCisK
Ky8qKgorICogUmV0dXJucyB0aGUgbm9kZSBoYXZpbmcgdGhlIHNwZWNpZmllZCBrZXkgb3IgbnVs
bCBpZiB0aGUgdHJlZSBkb2Vzbid0IGNvbnRhaW4KKyAqIGEgbm9kZSB3aXRoIHRoZSBzcGVjaWZp
ZWQga2V5LgorICoKKyAqIEBwYXJhbSB7bnVtYmVyfSBrZXkgS2V5IHRvIGZpbmQgaW4gdGhlIHRy
ZWUuCisgKiBAcmV0dXJuIHtTcGxheVRyZWUuTm9kZX0gTm9kZSBoYXZpbmcgdGhlIHNwZWNpZmll
ZCBrZXkuCisgKi8KK1NwbGF5VHJlZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKGtleSkgewor
ICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0aGlzLnNw
bGF5XyhrZXkpOworICByZXR1cm4gdGhpcy5yb290Xy5rZXkgPT0ga2V5ID8gdGhpcy5yb290XyA6
IG51bGw7Cit9OworCisKKy8qKgorICogQHJldHVybiB7U3BsYXlUcmVlLk5vZGV9IE5vZGUgaGF2
aW5nIHRoZSBtYXhpbXVtIGtleSB2YWx1ZS4KKyAqLworU3BsYXlUcmVlLnByb3RvdHlwZS5maW5k
TWF4ID0gZnVuY3Rpb24ob3B0X3N0YXJ0Tm9kZSkgeworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsK
KyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB2YXIgY3VycmVudCA9IG9wdF9zdGFydE5vZGUgfHwg
dGhpcy5yb290XzsKKyAgd2hpbGUgKGN1cnJlbnQucmlnaHQpIHsKKyAgICBjdXJyZW50ID0gY3Vy
cmVudC5yaWdodDsKKyAgfQorICByZXR1cm4gY3VycmVudDsKK307CisKKworLyoqCisgKiBAcmV0
dXJuIHtTcGxheVRyZWUuTm9kZX0gTm9kZSBoYXZpbmcgdGhlIG1heGltdW0ga2V5IHZhbHVlIHRo
YXQKKyAqICAgICBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCBrZXkgdmFsdWUuCisgKi8KK1Nw
bGF5VHJlZS5wcm90b3R5cGUuZmluZEdyZWF0ZXN0TGVzc1RoYW4gPSBmdW5jdGlvbihrZXkpIHsK
KyAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgLy8gU3Bs
YXkgb24gdGhlIGtleSB0byBtb3ZlIHRoZSBub2RlIHdpdGggdGhlIGdpdmVuIGtleSBvciB0aGUg
bGFzdAorICAvLyBub2RlIG9uIHRoZSBzZWFyY2ggcGF0aCB0byB0aGUgdG9wIG9mIHRoZSB0cmVl
LgorICB0aGlzLnNwbGF5XyhrZXkpOworICAvLyBOb3cgdGhlIHJlc3VsdCBpcyBlaXRoZXIgdGhl
IHJvb3Qgbm9kZSBvciB0aGUgZ3JlYXRlc3Qgbm9kZSBpbgorICAvLyB0aGUgbGVmdCBzdWJ0cmVl
LgorICBpZiAodGhpcy5yb290Xy5rZXkgPCBrZXkpIHsKKyAgICByZXR1cm4gdGhpcy5yb290XzsK
KyAgfSBlbHNlIGlmICh0aGlzLnJvb3RfLmxlZnQpIHsKKyAgICByZXR1cm4gdGhpcy5maW5kTWF4
KHRoaXMucm9vdF8ubGVmdCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK307
CisKKworLyoqCisgKiBAcmV0dXJuIHtBcnJheTwqPn0gQW4gYXJyYXkgY29udGFpbmluZyBhbGwg
dGhlIGtleXMgb2YgdHJlZSdzIG5vZGVzLgorICovCitTcGxheVRyZWUucHJvdG90eXBlLmV4cG9y
dEtleXMgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHJlc3VsdCA9IFtdOworICBpZiAoIXRoaXMuaXNF
bXB0eSgpKSB7CisgICAgdGhpcy5yb290Xy50cmF2ZXJzZV8oZnVuY3Rpb24obm9kZSkgeyByZXN1
bHQucHVzaChub2RlLmtleSk7IH0pOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9OworCisKKy8q
KgorICogUGVyZm9ybSB0aGUgc3BsYXkgb3BlcmF0aW9uIGZvciB0aGUgZ2l2ZW4ga2V5LiBNb3Zl
cyB0aGUgbm9kZSB3aXRoCisgKiB0aGUgZ2l2ZW4ga2V5IHRvIHRoZSB0b3Agb2YgdGhlIHRyZWUu
ICBJZiBubyBub2RlIGhhcyB0aGUgZ2l2ZW4KKyAqIGtleSwgdGhlIGxhc3Qgbm9kZSBvbiB0aGUg
c2VhcmNoIHBhdGggaXMgbW92ZWQgdG8gdGhlIHRvcCBvZiB0aGUKKyAqIHRyZWUuIFRoaXMgaXMg
dGhlIHNpbXBsaWZpZWQgdG9wLWRvd24gc3BsYXlpbmcgYWxnb3JpdGhtIGZyb206CisgKiAiU2Vs
Zi1hZGp1c3RpbmcgQmluYXJ5IFNlYXJjaCBUcmVlcyIgYnkgU2xlYXRvciBhbmQgVGFyamFuCisg
KgorICogQHBhcmFtIHtudW1iZXJ9IGtleSBLZXkgdG8gc3BsYXkgdGhlIHRyZWUgb24uCisgKiBA
cHJpdmF0ZQorICovCitTcGxheVRyZWUucHJvdG90eXBlLnNwbGF5XyA9IGZ1bmN0aW9uKGtleSkg
eworICBpZiAodGhpcy5pc0VtcHR5KCkpIHsKKyAgICByZXR1cm47CisgIH0KKyAgLy8gQ3JlYXRl
IGEgZHVtbXkgbm9kZS4gIFRoZSB1c2Ugb2YgdGhlIGR1bW15IG5vZGUgaXMgYSBiaXQKKyAgLy8g
Y291bnRlci1pbnR1aXRpdmU6IFRoZSByaWdodCBjaGlsZCBvZiB0aGUgZHVtbXkgbm9kZSB3aWxs
IGhvbGQKKyAgLy8gdGhlIEwgdHJlZSBvZiB0aGUgYWxnb3JpdGhtLiAgVGhlIGxlZnQgY2hpbGQg
b2YgdGhlIGR1bW15IG5vZGUKKyAgLy8gd2lsbCBob2xkIHRoZSBSIHRyZWUgb2YgdGhlIGFsZ29y
aXRobS4gIFVzaW5nIGEgZHVtbXkgbm9kZSwgbGVmdAorICAvLyBhbmQgcmlnaHQgd2lsbCBhbHdh
eXMgYmUgbm9kZXMgYW5kIHdlIGF2b2lkIHNwZWNpYWwgY2FzZXMuCisgIHZhciBkdW1teSwgbGVm
dCwgcmlnaHQ7CisgIGR1bW15ID0gbGVmdCA9IHJpZ2h0ID0gbmV3IFNwbGF5VHJlZS5Ob2RlKG51
bGwsIG51bGwpOworICB2YXIgY3VycmVudCA9IHRoaXMucm9vdF87CisgIHdoaWxlICh0cnVlKSB7
CisgICAgaWYgKGtleSA8IGN1cnJlbnQua2V5KSB7CisgICAgICBpZiAoIWN1cnJlbnQubGVmdCkg
eworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChrZXkgPCBjdXJyZW50LmxlZnQu
a2V5KSB7CisgICAgICAgIC8vIFJvdGF0ZSByaWdodC4KKyAgICAgICAgdmFyIHRtcCA9IGN1cnJl
bnQubGVmdDsKKyAgICAgICAgY3VycmVudC5sZWZ0ID0gdG1wLnJpZ2h0OworICAgICAgICB0bXAu
cmlnaHQgPSBjdXJyZW50OworICAgICAgICBjdXJyZW50ID0gdG1wOworICAgICAgICBpZiAoIWN1
cnJlbnQubGVmdCkgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAg
ICAvLyBMaW5rIHJpZ2h0LgorICAgICAgcmlnaHQubGVmdCA9IGN1cnJlbnQ7CisgICAgICByaWdo
dCA9IGN1cnJlbnQ7CisgICAgICBjdXJyZW50ID0gY3VycmVudC5sZWZ0OworICAgIH0gZWxzZSBp
ZiAoa2V5ID4gY3VycmVudC5rZXkpIHsKKyAgICAgIGlmICghY3VycmVudC5yaWdodCkgeworICAg
ICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChrZXkgPiBjdXJyZW50LnJpZ2h0LmtleSkg
eworICAgICAgICAvLyBSb3RhdGUgbGVmdC4KKyAgICAgICAgdmFyIHRtcCA9IGN1cnJlbnQucmln
aHQ7CisgICAgICAgIGN1cnJlbnQucmlnaHQgPSB0bXAubGVmdDsKKyAgICAgICAgdG1wLmxlZnQg
PSBjdXJyZW50OworICAgICAgICBjdXJyZW50ID0gdG1wOworICAgICAgICBpZiAoIWN1cnJlbnQu
cmlnaHQpIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgLy8g
TGluayBsZWZ0LgorICAgICAgbGVmdC5yaWdodCA9IGN1cnJlbnQ7CisgICAgICBsZWZ0ID0gY3Vy
cmVudDsKKyAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnJpZ2h0OworICAgIH0gZWxzZSB7CisgICAg
ICBicmVhazsKKyAgICB9CisgIH0KKyAgLy8gQXNzZW1ibGUuCisgIGxlZnQucmlnaHQgPSBjdXJy
ZW50LmxlZnQ7CisgIHJpZ2h0LmxlZnQgPSBjdXJyZW50LnJpZ2h0OworICBjdXJyZW50LmxlZnQg
PSBkdW1teS5yaWdodDsKKyAgY3VycmVudC5yaWdodCA9IGR1bW15LmxlZnQ7CisgIHRoaXMucm9v
dF8gPSBjdXJyZW50OworfTsKKworCisvKioKKyAqIENvbnN0cnVjdHMgYSBTcGxheSB0cmVlIG5v
ZGUuCisgKgorICogQHBhcmFtIHtudW1iZXJ9IGtleSBLZXkuCisgKiBAcGFyYW0geyp9IHZhbHVl
IFZhbHVlLgorICovCitTcGxheVRyZWUuTm9kZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKKyAg
dGhpcy5rZXkgPSBrZXk7CisgIHRoaXMudmFsdWUgPSB2YWx1ZTsKK307CisKKworLyoqCisgKiBA
dHlwZSB7U3BsYXlUcmVlLk5vZGV9CisgKi8KK1NwbGF5VHJlZS5Ob2RlLnByb3RvdHlwZS5sZWZ0
ID0gbnVsbDsKKworCisvKioKKyAqIEB0eXBlIHtTcGxheVRyZWUuTm9kZX0KKyAqLworU3BsYXlU
cmVlLk5vZGUucHJvdG90eXBlLnJpZ2h0ID0gbnVsbDsKKworCisvKioKKyAqIFBlcmZvcm1zIGFu
IG9yZGVyZWQgdHJhdmVyc2FsIG9mIHRoZSBzdWJ0cmVlIHN0YXJ0aW5nIGF0CisgKiB0aGlzIFNw
bGF5VHJlZS5Ob2RlLgorICoKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oU3BsYXlUcmVlLk5vZGUpfSBm
IFZpc2l0b3IgZnVuY3Rpb24uCisgKiBAcHJpdmF0ZQorICovCitTcGxheVRyZWUuTm9kZS5wcm90
b3R5cGUudHJhdmVyc2VfID0gZnVuY3Rpb24oZikgeworICB2YXIgY3VycmVudCA9IHRoaXM7Cisg
IHdoaWxlIChjdXJyZW50KSB7CisgICAgdmFyIGxlZnQgPSBjdXJyZW50LmxlZnQ7CisgICAgaWYg
KGxlZnQpIGxlZnQudHJhdmVyc2VfKGYpOworICAgIGYoY3VycmVudCk7CisgICAgY3VycmVudCA9
IGN1cnJlbnQucmlnaHQ7CisgIH0KK307CisKK1NwbGF5U2V0dXAoKTsKK1NwbGF5UnVuKCk7CitT
cGxheVRlYXJEb3duKCk7Cg==
</data>
<flag name="review"
          id="283921"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>