<?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>18176</bug_id>
          
          <creation_ts>2008-03-28 01:09:08 -0700</creation_ts>
          <short_desc>Add Acid3 as a http layout test</short_desc>
          <delta_ts>2008-03-28 02:24:41 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>75597</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-28 01:09:08 -0700</bug_when>
    <thetext>Add Acid3 as a http layout test

It should be possible.  Might need a bit of direction from hixie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75602</commentid>
    <comment_count>1</comment_count>
      <attachid>20150</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-28 02:16:39 -0700</bug_when>
    <thetext>Created attachment 20150
First pass at adding Acid3

 LayoutTests/http/tests/misc/acid3.html             | 3472 ++++++++++++++++++++
 .../http/tests/misc/resources/acid3/.htaccess      |   42 +
 .../http/tests/misc/resources/acid3/empty.css      |    8 +
 .../http/tests/misc/resources/acid3/empty.html     |    1 +
 .../http/tests/misc/resources/acid3/empty.png      |  Bin 0 -&gt; 260 bytes
 .../http/tests/misc/resources/acid3/empty.txt      |    1 +
 .../http/tests/misc/resources/acid3/empty.xml      |    4 +
 .../http/tests/misc/resources/acid3/font.svg       |    1 +
 .../http/tests/misc/resources/acid3/font.ttf       |  Bin 0 -&gt; 12480 bytes
 .../tests/misc/resources/acid3/instructions.inc    |    1 +
 .../http/tests/misc/resources/acid3/reference.html |   20 +
 .../http/tests/misc/resources/acid3/reference.png  |  Bin 0 -&gt; 1771 bytes
 .../tests/misc/resources/acid3/support-a.png.404   |  Bin 0 -&gt; 2312 bytes
 .../http/tests/misc/resources/acid3/support-b.png  |    1 +
 .../http/tests/misc/resources/acid3/support-c.png  |  Bin 0 -&gt; 2312 bytes
 .../http/tests/misc/resources/acid3/svg.xml        |    1 +
 .../http/tests/misc/resources/acid3/xhtml.1        |   11 +
 .../http/tests/misc/resources/acid3/xhtml.2        |   11 +
 .../http/tests/misc/resources/acid3/xhtml.3        |   11 +
 19 files changed, 3585 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75603</commentid>
    <comment_count>2</comment_count>
      <attachid>20151</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-28 02:16:41 -0700</bug_when>
    <thetext>Created attachment 20151
Customize Acid3 for running in DRT, add results

 .../http/tests/misc/acid3-expected.checksum        |    1 +
 LayoutTests/http/tests/misc/acid3-expected.png     |  Bin 0 -&gt; 34552 bytes
 LayoutTests/http/tests/misc/acid3-expected.txt     |  244 ++++++++++++++++++++
 LayoutTests/http/tests/misc/acid3.html             |   42 ++--
 .../http/tests/misc/resources/acid3/.htaccess      |   10 +-
 .../http/tests/misc/resources/acid3/empty.txt      |    2 +-
 .../tests/misc/resources/acid3/instructions.inc    |    2 +-
 7 files changed, 276 insertions(+), 25 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75606</commentid>
    <comment_count>3</comment_count>
      <attachid>20151</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-03-28 02:18:37 -0700</bug_when>
    <thetext>Comment on attachment 20151
Customize Acid3 for running in DRT, add results

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75607</commentid>
    <comment_count>4</comment_count>
      <attachid>20150</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-03-28 02:18:43 -0700</bug_when>
    <thetext>Comment on attachment 20150
First pass at adding Acid3

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75608</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-28 02:24:41 -0700</bug_when>
    <thetext>r31391</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20150</attachid>
            <date>2008-03-28 02:16:39 -0700</date>
            <delta_ts>2008-03-28 02:18:43 -0700</delta_ts>
            <desc>First pass at adding Acid3</desc>
            <filename>First-pass-at-adding-Acid3.patch</filename>
            <type>text/plain</type>
            <size>192514</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MzY5NWE3NDQzMWY5ZDNkNjk5Y2Y3ZmQyYTE3ZmZhYWU0NmIyYTAxOApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FjaWQzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvYWNpZDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
YjBlMDgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Fj
aWQzLmh0bWwKQEAgLTAsMCArMSwzNDcyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1cz
Qy8vRFREIEhUTUwgNC4wMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3Qu
ZHRkIj4KKzxodG1sPgorIDx0aXRsZT5UaGUgQWNpZDMgVGVzdDwvdGl0bGU+CisgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICB2YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTsKKyA8
L3NjcmlwdD4KKyA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisgIC8qIHNldCBzb21lIGJhc2lj
IHN0eWxlcyBzbyB0aGF0IHdlIGNhbiBnZXQgcmVsaWFibHkgZXhhY3QgcmVzdWx0cyAqLworICAq
IHsgbWFyZ2luOiAwOyBib3JkZXI6IDFweCBibHVlOyBwYWRkaW5nOiAwOyBib3JkZXItc3BhY2lu
ZzogMDsgZm9udDogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IDEuMjsgY29sb3I6IGluaGVyaXQ7IGJh
Y2tncm91bmQ6IHRyYW5zcGFyZW50OyB9CisgIDpsaW5rLCA6dmlzaXRlZCB7IGNvbG9yOiBibHVl
OyB9CisKKyAgLyogaGVhZGVyIGFuZCBnZW5lcmFsIGxheW91dCAqLworICBodG1sIHsgZm9udDog
MjBweCBBcmlhbCwgc2Fucy1zZXJpZjsgYm9yZGVyOiAyY20gc29saWQgZ3JheTsgd2lkdGg6IDMy
ZW07IG1hcmdpbjogMWVtOyB9CisgIDpyb290IHsgYmFja2dyb3VuZDogc2lsdmVyOyBjb2xvcjog
YmxhY2s7IGJvcmRlci13aWR0aDogMCAwLjJlbSAwLjJlbSAwOyB9IC8qIGxlZnQgYW5kIHRvcCBj
b250ZW50IGVkZ2VzOiAxKjIwcHggPSAyMHB4ICovCisgIGJvZHkgeyBwYWRkaW5nOiAyZW0gMmVt
IDA7IGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsaVZCT1J3MEtHZ29BQUFB
TlNVaEVVZ0FBQUJRQUFBQVVDQUlBQUFBQzY0cGFBQUFBQkdkQlRVRUFBSyUyRklOd1dLNlFBQUFB
bHdTRmx6QUFBQVNBQUFBRWdBUnNsclBnQUFBQnRKUkVGVU9NdGolMkZNOUFQbUNpUU8lMkJvNWxI
Tm81cEhOVk5CTXdBaW5BRW5JV3c4OWdBQUFDSjZWRmgwVTI5bWRIZGhjbVVBQUhqYWMwekpUMHBW
OE14TlRFOE5TazFNcVFRQUw1d0YxSzRNcVUwQUFBQUFTVVZPUks1Q1lJSSUzRCkgbm8tcmVwZWF0
IHRvcCByaWdodCB3aGl0ZTsgYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7IG1hcmdpbjogLTAuMmVt
IDAgMCAtMC4yZW07IH0gLyogbGVmdCBhbmQgdG9wIGNvbnRlbnQgZWRnZXM6IDIwcHgtMC4yKjIw
cHgrMXB4KzIqMjBweCA9IDU3cHggKi8KKyAgaDE6Zmlyc3QtY2hpbGQgeyBjdXJzb3I6IGhlbHA7
IGZvbnQtc2l6ZTogNWVtOyBmb250LXdlaWdodDogYm9sZGVyOyBtYXJnaW4tYm90dG9tOiAtMC40
ZW07IHRleHQtc2hhZG93OiByZ2JhKDE5MiwgMTkyLCAxOTIsIDEuMCkgM3B4IDNweDsgfSAvKiAo
bGVmdDo1N3B4LCB0b3A6NTdweCkgKi8KKyAgI3Jlc3VsdCB7IGZvbnQtd2VpZ2h0OiBib2xkZXI7
IHdpZHRoOiA1LjY4ZW07IHRleHQtYWxpZ246IHJpZ2h0OyB9CisgICNyZXN1bHQgeyBmb250LXNp
emU6IDVlbTsgbWFyZ2luOiAtMi4xOWVtIDAgMDsgfSAvKiAocmlnaHQ6NTdweCs1LjIqNSoyMHB4
ID0gNTc3cHgsIHRvcDo1N3B4KzEuMio1KjIwcHgtMC40KjUqMjBweCsxcHgrMSo0MHB4KzEqNDBw
eCsxcHgrMio0MHB4KzE1MHB4LTIuMTkqNSoyMHB4ID0gMjMwcHgpICovCisgIC5oaWRkZW4geyB2
aXNpYmlsaXR5OiBoaWRkZW47IH0KKyAgI3NsYXNoIHsgY29sb3I6IHJlZDsgY29sb3I6IGhzbGEo
MCwgMCUsIDAlLCAxLjApOyB9CisgICNpbnN0cnVjdGlvbnMgeyBtYXJnaW4tdG9wOiAwOyBmb250
LXNpemU6IDAuOGVtOyBjb2xvcjogZ3JheTsgY29sb3I6IC1hY2lkMy1ib2d1czsgaGVpZ2h0OiA2
LjEyNWVtOyB9IC8qIChsZWZ0OjU3cHgsIHRvcDoyMzBweCsxLjIqNSoyMCswID0gMzUwcHgpICov
CisgICNpbnN0cnVjdGlvbnMgeyBtYXJnaW4tcmlnaHQ6IC0yMHB4OyBwYWRkaW5nLXJpZ2h0OiAy
MHB4OyBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFCUUFBQUFVQ0FJQUFBQUM2NHBhQUFBQUJHZEJUVUVBQUslMkZJTndXSzZRQUFB
QWx3U0ZsekFBQUFTQUFBQUVnQVJzbHJQZ0FBQUJ0SlJFRlVPTXRqJTJGTTlBUG1DaVFPJTJCbzVs
SE5vNXBITlZOQk13QWluQUVuSVd3ODlnQUFBQ0o2VkZoMFUyOW1kSGRoY21VQUFIamFjMHpKVDBw
VjhNeE5URThOU2sxTXFRUUFMNXdGMUs0TXFVMEFBQUFBU1VWT1JLNUNZSUklM0QpIG5vLXJlcGVh
dCB0b3AgcmlnaHQ7IH0KKyAgI2luc3RydWN0aW9ucyBzcGFuIHsgZmxvYXQ6IHJpZ2h0OyB3aWR0
aDogMjBweDsgbWFyZ2luLXJpZ2h0OiAtMjBweDsgYmFja2dyb3VuZDogd2hpdGU7IGhlaWdodDog
MjBweDsgfQorICBAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICJBY2lkQWhlbVRlc3QiOyBzcmM6
IHVybChmb250LnR0Zik7IH0KKyAgbWFwOjphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiAxN3B4OyBsZWZ0OiA2MzlweDsgY29udGVudDogIlgiOyBiYWNrZ3JvdW5kOiBmdWNoc2lhOyBj
b2xvcjogd2hpdGU7IGZvbnQ6IDIwcHgvMSBBY2lkQWhlbVRlc3Q7IH0KKyAgaWZyYW1lIHsgZmxv
YXQ6IGxlZnQ7IGhlaWdodDogMDsgd2lkdGg6IDA7IH0gLyogaGlkZSBpZnJhbWVzIGJ1dCBkb24n
dCBtYWtlIHRoZW0gZGlzcGxheTogbm9uZSAqLworICBvYmplY3QgeyBwb3NpdGlvbjogZml4ZWQ7
IGxlZnQ6IDEzMC41cHg7IHRvcDogODQuM3B4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfSAv
KiBzaG93IG9iamVjdHMgaWYgdGhleSBoYXZlIGNvbnRlbnQgKi8KKyAgLnJlbW92ZWQgeyBwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogODBweDsgbGVmdDogMzgwcHg7IGhlaWdodDogMTAwcHg7IHdp
ZHRoOiAxMDBweDsgb3BhY2l0eTogMDsgfQorCisgIC8qIHNldCB0aGUgbGluZSBoZWlnaHQgb2Yg
dGhlIGxpbmUgb2YgY29sb3VyZWQgYm94ZXMgc28gd2UgY2FuIGFkZCB0aGVtIHdpdGhvdXQgdGhl
IGxheW91dCBjaGFuZ2luZyBoZWlnaHQgKi8KKyAgLmJ1Y2tldHMgeyBmb250OiAwLzAgQXJpYWws
IHNhbnMtc2VyaWY7IH0KKyAgLmJ1Y2tldHMgeyBwYWRkaW5nOiAwIDAgMTUwcHggM3B4OyB9CisK
KyAgLyogdGhlIG5leHQgdHdvIHJ1bGVzIGdpdmUgdGhlIHNpeCBjb2xvdXJlZCBibG9ja3MgdGhl
aXIgZGVmYXVsdCBzdHlsZXMgKHRoZXkgbWF0Y2ggdGhlIHNhbWUgZWxlbWVudHMpOyB0aGUgdGhp
cmQgaGlkZXMgdGhlbSAqLworICA6Zmlyc3QtY2hpbGQgKyAqIC5idWNrZXRzIHAgeyBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiAyZW07IGJvcmRlcjogMmVtIGRvdHRlZCBy
ZWQ7IHBhZGRpbmc6IDEuMGVtIDAgMS4wZW0gMmVtOyB9CisgICogKyAqID4gKiA+IHAgeyBtYXJn
aW46IDA7IGJvcmRlcjogMXB4IHNvbGlkICEgaW1wb3J0YW50OyB9CisgIC56IHsgdmlzaWJpbGl0
eTogaGlkZGVuOyB9IC8qIG9ubHkgbWF0Y2hlcyB0aGUgYnVja2V0cyB3aXRoIG5vIHNjb3JlICov
CisKKyAgLyogc2l6ZXMgZm9yIHRoZSBzaXggYnVja2V0cyAqLworICAjYnVja2V0MSB7IGZvbnQt
c2l6ZTogMjBweDsgbWFyZ2luLWxlZnQ6IDAuMmVtOyBwYWRkaW5nLWxlZnQ6IDEuM2VtOyBwYWRk
aW5nLXJpZ2h0OiAxLjNlbTsgbWFyZ2luLXJpZ2h0OiAwLjAwMDFweDsgfQorICAjYnVja2V0MiB7
IGZvbnQtc2l6ZTogMjRweDsgbWFyZ2luLWxlZnQ6IDAuMzc1ZW07IHBhZGRpbmctbGVmdDogMzBw
eDsgcGFkZGluZy1yaWdodDogMzJweDsgbWFyZ2luLXJpZ2h0OiAycHg7IH0KKyAgI2J1Y2tldDMg
eyBmb250LXNpemU6IDI4cHg7IG1hcmdpbi1sZWZ0OiA4Ljk5OTlweDsgcGFkZGluZy1sZWZ0OiAx
N3B4OyBwYWRkaW5nLXJpZ2h0OiA1NXB4OyBtYXJnaW4tcmlnaHQ6IDEycHg7IH0KKyAgI2J1Y2tl
dDQgeyBmb250LXNpemU6IDMycHg7IG1hcmdpbi1sZWZ0OiAwOyBwYWRkaW5nLWxlZnQ6IDg0cHg7
IHBhZGRpbmctcmlnaHQ6IDA7IG1hcmdpbi1yaWdodDogMDsgfQorICAjYnVja2V0NSB7IGZvbnQt
c2l6ZTogMzZweDsgbWFyZ2luLWxlZnQ6IDEzcHg7IHBhZGRpbmctbGVmdDogMDsgcGFkZGluZy1y
aWdodDogOTRweDsgbWFyZ2luLXJpZ2h0OiAyNXB4OyB9CisgICNidWNrZXQ2IHsgZm9udC1zaXpl
OiA0MHB4OyBtYXJnaW4tbGVmdDogLTEwcHg7IHBhZGRpbmctbGVmdDogMTA0cHg7IHBhZGRpbmct
cmlnaHQ6IC0xMHB4OyB9CisKKyAgLyogY29sb3VycyBmb3IgdGhlbSAqLworICAueiwgLnpQLCAu
elBQLCAuelBQUCwgLnpQUFBQLCAuelBQUFBQIHsgYmFja2dyb3VuZDogYmxhY2s7IH0KKyAgLnpQ
UFBQUFAsIC56UFBQUFBQUCwgLnpQUFBQUFBQUCwgLnpQUFBQUFBQUCwgLnpQUFBQUFBQUFAsCisg
IC56UFBQUFBQUFBQUCB7IGJhY2tncm91bmQ6IGdyZXk7IH0KKyAgLnpQUFBQUFBQUFBQUCwgLnpQ
UFBQUFBQUFBQUFAsIC56UFBQUFBQUFBQUFBQUCwKKyAgLnpQUFBQUFBQUFBQUFBQUCwgLnpQUFBQ
UFBQUFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiBzaWx2ZXI7IH0KKyAgI2J1Y2tldDEuelBQUFBQUFBQ
UFBQUFBQUFAgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyAgI2J1Y2tldDIuelBQUFBQUFBQUFBQUFBQ
UFAgeyBiYWNrZ3JvdW5kOiBvcmFuZ2U7IH0KKyAgI2J1Y2tldDMuelBQUFBQUFBQUFBQUFBQUFAg
eyBiYWNrZ3JvdW5kOiB5ZWxsb3c7IH0KKyAgI2J1Y2tldDQuelBQUFBQUFBQUFBQUFBQUFAgeyBi
YWNrZ3JvdW5kOiBsaW1lOyB9CisgICNidWNrZXQ1LnpQUFBQUFBQUFBQUFBQUFBQIHsgYmFja2dy
b3VuZDogYmx1ZTsgfQorICAjYnVja2V0Ni56UFBQUFBQUFBQUFBQUFBQUCB7IGJhY2tncm91bmQ6
IHB1cnBsZTsgfQorCisgIC8qIFRoZSBsaW5lLWhlaWdodCBmb3IgdGhlIC5idWNrZXQgZGl2IGlz
IHdvcmtlZCBvdXQgYXMgZm9sbG93czoKKyAgICoKKyAgICogVGhlIGRpdi5idWNrZXQgZWxlbWVu
dCBoYXMgYSBsaW5lIGJveCB3aXRoIGEgZmV3CisgICAqIGlubGluZS1ibG9ja3MuIEVhY2ggaW5s
aW5lLWJsb2NrIGNvbnNpc3RzIG9mOgorICAgKgorICAgKiAgICAgMi4wZW0gdmVydGljYWwtYWxp
Z24gZnJvbSBiYXNlbGluZSB0byBib3R0b20gb2YgaW5saW5lLWJsb2NrCisgICAqICAgICAxcHgg
Ym90dG9tIGJvcmRlcgorICAgKiAgICAgMS4wZW0gYm90dG9tIHBhZGRpbmcKKyAgICogICAgIDEu
MGVtIHRvcCBwYWRkaW5nCisgICAqICAgICAxcHggdG9wIGJvcmRlcgorICAgKgorICAgKiBUaGUg
YmlnZ2VzdCBpbmxpbmUtYmxvY2sgaGFzIGZvbnQtc2l6ZTogNDBweC4KKyAgICoKKyAgICogVGh1
cyB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgYmFzZWxpbmUgdG8gdGhlIHRvcCBvZiB0aGUgYmlnZ2Vz
dAorICAgKiBpbmxpbmUtYmxvY2sgaXMgKDJlbSsxZW0rMWVtKSoyZW0qMjBweCsycHggPSAxNjJw
eC4KKyAgICoKKyAgICogVGhlIGxpbmUgYm94IGl0c2VsZiBoYXMgbm8gb3RoZXIgY29udGVudHMs
IGFuZCBpdHMgc3RydXQgaGFzIHplcm8KKyAgICogaGVpZ2h0IGFuZCB0aGVyZSBpcyBubyBoYWxm
LWxlYWRpbmcsIHNvIHRoZSBoZWlnaHQgb2YgdGhlCisgICAqIGRpdi5idWNrZXQgaXMgMTYycHgu
CisgICAqCisgICAqIChXaHkgdXNlIGxpbmUtaGVpZ2h0OjAgYW5kIGZvbnQtc2l6ZTowPyBXZWxs
OgorICAgKgorICAgKiBUaGUgZGl2LmJ1Y2tldCBsaW5lIGJveCB3b3VsZCBoYXZlIGEgaGVpZ2h0
IHRoYXQgaXMgdGhlIG1heGltdW0KKyAgICogb2YgdGhlIGZvbGxvd2luZyB0d28gc3VtczoKKyAg
ICoKKyAgICogIDE6IGhhbGYtbGVhZGluZyArIGZvbnQgZGVzY2VudCBhdCAxZW0gKyBmb250IGFz
Y2VudCBhdCAxZW0gKyBoYWxmLWxlYWRpbmcKKyAgICogIDI6IGhhbGYtbGVhZGluZyArIGZvbnQg
ZGVzY2VudCBhdCAxZW0gKyAxNjJweCAKKyAgICoKKyAgICogTm93IHRoZSBoYWxmLWxlYWRpbmcg
aXMgKGxpbmUtaGVpZ2h0IC0gKGZvbnQtYXNjZW50ICsgZm9udC1kZXNjZW50KSkvMiwgc28gdGhh
dCBpcyByZWFsbHk6CisgICAqCisgICAqICAxOiAobGluZS1oZWlnaHQgLSAoZm9udC1hc2NlbnQg
KyBmb250LWRlc2NlbnQpKS8yICsgZm9udCBkZXNjZW50ICsgZm9udCBhc2NlbnQgKyAobGluZS1o
ZWlnaHQgLSAoZm9udC1hc2NlbnQgKyBmb250LWRlc2NlbnQpKS8yCisgICAqICAyOiAobGluZS1o
ZWlnaHQgLSAoZm9udC1hc2NlbnQgKyBmb250LWRlc2NlbnQpKS8yICsgZm9udCBkZXNjZW50ICsg
MTYycHgKKyAgICoKKyAgICogV2hpY2ggc2ltcGxpZnkgdG86CisgICAqCisgICAqICAxOiBsaW5l
LWhlaWdodAorICAgKiAgMjogbGluZS1oZWlnaHQvMiArIChmb250IGRlc2NlbnQgLSBmb250LWFz
Y2VudCkvMiArIDE2MnB4CisgICAqCisgICAqIFNvIGlmIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lv
biBpcyB0cnVlOgorICAgKgorICAgKiAgICBsaW5lLWhlaWdodCA+IGxpbmUtaGVpZ2h0LzIgKyAo
Zm9udCBkZXNjZW50IC0gZm9udC1hc2NlbnQpLzIgKyAxNjJweAorICAgKgorICAgKiBUaGF0IGlz
LCBpZiB0aGlzIGlzIHRydWU6CisgICAqCisgICAqICAgIGxpbmUtaGVpZ2h0ID4gZm9udCBkZXNj
ZW50IC0gZm9udC1hc2NlbnQgKyAzMjRweAorICAgKgorICAgKiAuLi50aGVuIHRoZSBsaW5lLWhl
aWdodCBtYXR0ZXJzLCBvdGhlcndpc2UgdGhlIGZvbnQgZG9lcy4gTm90ZQorICAgKiB0aGF0IGZv
bnQgZGVzY2VudCAtIGZvbnQtYXNjZW50IHdpbGwgYmUgaW4gdGhlIHJlZ2lvbiBvZgorICAgKiAx
MHB4LTMwcHggKHdpdGggQWhlbSwgZXhhY3RseSAxMnB4KS4gSG93ZXZlciwgaWYgd2UgbWFrZSB0
aGUKKyAgICogbGluZS1oZWlnaHQgYmlnLCB0aGVuIHRoZSBfcG9zaXRpb25pbmdfIG9mIHRoZSBp
bmxpbmUtYmxvY2tzIHdpbGwKKyAgICogZGVwZW5kIG9uIHRoZSBmb250IGRlc2NlbnQsIHNpbmNl
IHRoYXQgaXMgd2hhdCB3aWxsIGRlY2lkZSB0aGUKKyAgICogZGlzdGFuY2UgZnJvbSB0aGUgYm90
dG9tIG9mIHRoZSBsaW5lIGJveCB0byB0aGUgYmFzZWxpbmUgb2YgdGhlCisgICAqIGJsb2NrIChz
aW5jZSB0aGUgYmFzZWxpbmUgaXMgc2V0IGJ5IHRoZSBzdHJ1dCkuCisgICAqCisgICAqIEhvd2V2
ZXIsIGluIEFjaWQyIGEgZGVwZW5kZW5jeSBvbiB0aGUgZm9udCBtZXRyaWNzIHdhcyBpbnRyb2R1
Y2VkCisgICAqIGFuZCB0aGlzIGNhdXNlZCBhbGwga2luZHMgb2YgcHJvYmxlbXMuIEFuZCB3ZSBj
YW4ndCByZXF1aXJlIEFoZW0KKyAgICogaW4gdGhlIEFjaWQgdGVzdHMsIHNpbmNlIGl0J3MgdW5s
aWtlbHkgbW9zdCBwZW9wbGUgd2lsbCBoYXZlIGl0CisgICAqIGluc3RhbGxlZC4KKyAgICoKKyAg
ICogV2hhdCB3ZSB3YW50IGlzIGZvciB0aGUgZm9udCB0byBub3QgbWF0dGVyLCBhbmQgdGhlIGJh
c2VsaW5lIHRvCisgICAqIGJlIGFzIGhpZ2ggYXMgcG9zc2libGUuIFdlIGNhbiBkbyB0aGF0IGJ5
IHNheWluZyB0aGF0IHRoZSBmb250CisgICAqIGFuZCB0aGUgbGluZS1oZWlnaHQgYXJlIHplcm8u
CisgICAqCisgICAqIE9uZSB3b3JkIG9mIHdhcm5pbmcuIElmIHlvdXIgYnJvd3NlciBoYXMgYSBt
aW5pbXVtIGZvbnQgc2l6ZSBmZWF0dXJlCisgICAqIHRoYXQgZm9yY2VzIGZvbnQgc2l6ZXMgdXAg
ZXZlbiB3aGVuIHRoZXJlIGlzIG5vIHRleHQsIHlvdSB3aWxsIG5lZWQKKyAgICogdG8gZGlzYWJs
ZSBpdCBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QuCisgICAqCisgICAqLworCisgIC8qIHJ1bGVz
IHNwZWNpZmljIHRvIHRoZSB0ZXN0cyBiZWxvdyAqLworICAjaW5zdHJ1Y3Rpb25zOmxhc3QtY2hp
bGQgeyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdoaXRlLXNwYWNlOiB4LWJvZ3VzOyB9CisgICNs
aW5rdGVzdDpsaW5rIHsgZGlzcGxheTogYmxvY2s7IGNvbG9yOiByZWQ7IHRleHQtYWxpZ246IGNl
bnRlcjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CisgICNsaW5rdGVzdC5wZW5kaW5nLCAjbGlu
a3Rlc3Q6dmlzaXRlZCB7IGRpc3BsYXk6IG5vbmU7IH0KKyAgI1wgeyBjb2xvcjogdHJhbnNwYXJl
bnQ7IGNvbG9yOiBoc2xhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMTBweDsg
bGVmdDogMTBweDsgZm9udDogNDBweCBBcmlhbCwgc2Fucy1zZXJpZjsgfQorICAjXCAgI3Jlc3Vs
dCwgI1wgICNzY29yZSB7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAxMCU7IGxlZnQ6IDEwJTsgd2lk
dGg6IDRlbTsgei1pbmRleDogMTsgY29sb3I6IHllbGxvdzsgZm9udC1zaXplOiA1MHB4OyBiYWNr
Z3JvdW5kOiBmdWNoc2lhOyBib3JkZXI6IHNvbGlkIDFlbSBwdXJwbGU7IH0KKyA8L3N0eWxlPgor
CisgPCEtLSBwYXJ0IG9mIHRoZSBIVFRQIHRlc3RzIC0tPgorIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iZW1wdHkuY3NzIj48IS0tIHRleHQvaHRtbCBmaWxlIChzaG91bGQgYmUgaWdub3Jl
ZCwgPGgxPiB3aWxsIGdvIHJlZCBpZiBpdCBpc24ndCkgLS0+CisKKyA8IS0tIHRoZSBuZXh0IGZp
dmUgc2NyaXB0IGJsb2NrcyBhcmUgcGFydCBvZiBvbmUgb2YgdGhlIHRlc3RzIC0tPgorIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgdmFyIGQxID0gImZhaWwiOworICB2YXIgZDIg
PSAiZmFpbCI7CisgIHZhciBkMyA9ICJmYWlsIjsKKyAgdmFyIGQ0ID0gImZhaWwiOworICB2YXIg
ZDUgPSAiZmFpbCI7CisgPC9zY3JpcHQ+CisgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZDElMjAlM0QlMjAnb25lJyUzQiI+PC9zY3JpcHQ+
CisgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3Jp
cHQ7YmFzZTY0LFpESWdQU0FuZEhkdkp6cyUzRCI+PC9zY3JpcHQ+CisgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQ7YmFzZTY0LCU1YSU0NCU0
ZCU2NyU1MCU1MyU0MSU2ZSU2NCU0NyU2OCU3OSU1YSU1NyU1NSU2ZSU0ZiU3NyUzRCUzRCI+PC9z
Y3JpcHQ+CisgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iZGF0YTp0ZXh0L2ph
dmFzY3JpcHQ7YmFzZTY0LCUyMFpEJTIwUWclMEQlMEFQUyUyMEFuJTIwWm05MWNpYyUwRCUwQSUy
MDclMjAiPjwvc2NyaXB0PgorIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImRh
dGE6dGV4dC9qYXZhc2NyaXB0LGQ1JTIwJTNEJTIwJ2ZpdmUlNUN1MDAyN3MnJTNCIj48L3Njcmlw
dD4KKworIDwhLS0gcGFydCBvZiB0aGUgSlMgcmVnZXhwIGFuZCBcMCB2YWx1ZSB0ZXN0cyB0ZXN0
IC0tPgorIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgdmFyIG51bGxJblJlZ2V4
cEFyZ3VtZW50UmVzdWx0ID0gMCA8IC9zY3JpcHQvLnRlc3QoJ1wwc2NyaXB0JykgPyAicGFzc2Vk
IiA6ICJmYWlsZWQiOworIDwvc2NyaXB0PgorCisgPCEtLSBtYWluIHRlc3QgYm9keSAtLT4KKyA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIHZhciBub3RpZmljYXRpb25zID0ge307
CisgIGZ1bmN0aW9uIG5vdGlmeShmaWxlKSB7CisgICAgLy8gdXNlZCBpbiBjcm9zcy1maWxlIHRl
c3RzCisgICAgbm90aWZpY2F0aW9uc1tmaWxlXSA9IDE7CisgIH0KKyAgZnVuY3Rpb24gZmFpbCht
ZXNzYWdlKSB7CisgICAgdGhyb3cgeyBtZXNzYWdlOiBtZXNzYWdlIH07CisgIH0KKyAgZnVuY3Rp
b24gYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkgeworICAgIGlmICghY29uZGl0aW9uKQorICAg
ICAgZmFpbChtZXNzYWdlKTsKKyAgfQorICBmdW5jdGlvbiBhc3NlcnRFcXVhbHMoZXhwcmVzc2lv
biwgdmFsdWUsIG1lc3NhZ2UpIHsKKyAgICBpZiAoZXhwcmVzc2lvbiAhPSB2YWx1ZSkgeworICAg
ICAgZXhwcmVzc2lvbiA9ICgiIitleHByZXNzaW9uKS5yZXBsYWNlKC9bXHJcbl0rL2csICJcXG4i
KTsKKyAgICAgIHZhbHVlID0gKCIiK3ZhbHVlKS5yZXBsYWNlKC9ccj9cbi9nLCAiXFxuIik7Cisg
ICAgICBmYWlsKCJleHBlY3RlZCAnIiArIHZhbHVlICsgIicgYnV0IGdvdCAnIiArIGV4cHJlc3Np
b24gKyAiJyAtICIgKyBtZXNzYWdlKTsKKyAgICB9CisgIH0KKyAgZnVuY3Rpb24gZ2V0VGVzdERv
Y3VtZW50KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Vs
ZWN0b3JzIik7CisgICAgdmFyIGRvYyA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQ7CisgICAgZm9y
ICh2YXIgaSA9IGRvYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGgtMTsgaSA+PSAw
OyBpIC09IDEpCisgICAgICBkb2MuZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKGRvYy5kb2N1
bWVudEVsZW1lbnQuY2hpbGROb2Rlc1tpXSk7CisgICAgZG9jLmRvY3VtZW50RWxlbWVudC5hcHBl
bmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgnaGVhZCcpKTsKKyAgICBkb2MuZG9jdW1lbnRFbGVt
ZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ3RpdGxlJykpOwor
ICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnQoJ2Jv
ZHknKSk7CisgICAgcmV0dXJuIGRvYzsKKyAgfQorICBmdW5jdGlvbiBzZWxlY3RvclRlc3QodGVz
dGVyKSB7CisgICAgdmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOworICAgIHZhciBzdHlsZSA9
IGRvYy5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5j
cmVhdGVUZXh0Tm9kZSgiKiB7IHotaW5kZXg6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuIikp
OworICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChzdHlsZSk7
CisgICAgdmFyIHJ1bGVDb3VudCA9IDA7CisgICAgdGVzdGVyKGRvYywgZnVuY3Rpb24gKHNlbGVj
dG9yKSB7CisgICAgICAgIHJ1bGVDb3VudCArPSAxOworICAgICAgICBzdHlsZS5hcHBlbmRDaGls
ZChkb2MuY3JlYXRlVGV4dE5vZGUoc2VsZWN0b3IgKyAiIHsgei1pbmRleDogIiArIHJ1bGVDb3Vu
dCArICI7IH1cbiIpKTsKKyAgICAgICAgcmV0dXJuIHJ1bGVDb3VudDsKKyAgICAgIH0sIGZ1bmN0
aW9uKG5vZGUsIHJ1bGUsIG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gZG9jLmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSwgIiIpLnpJbmRleDsKKyAgICAgICAgYXNzZXJ0
KHZhbHVlICE9ICdhdXRvJywgInVuZGVybHlpbmcgcHJvYmxlbXMgcHJldmVudCB0aGlzIHRlc3Qg
ZnJvbSBydW5uaW5nIHByb3Blcmx5Iik7CisgICAgICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgcnVs
ZSwgbWVzc2FnZSk7CisgICAgfSk7CisgIH0KKyAgdmFyIGt1bmdGdURlYXRoR3JpcCA9IG51bGw7
IC8vIHVzZWQgdG8gaG9sZCB0aGluZ3MgZnJvbSB0ZXN0IHRvIHRlc3QKKyAgdmFyIHRlc3RzID0g
WworCisgICAgLy8gdGhlcmUgYXJlIDYgYnVja2V0cyB3aXRoIDE2IHRlc3RzIGVhY2gsIHBsdXMg
Zm91ciBzcGVjaWFsIHRlc3RzICgwLCA5NywgOTgsIGFuZCA5OSkuCisKKyAgICAvLyBSZW1vdmUg
dGhlICJKUyByZXF1aXJlZCIgbWVzc2FnZSBhbmQgdGhlIDxzY3JpcHQ+IGVsZW1lbnQgaW4gdGhl
IDxib2R5PgorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMDogd2hldGhlciByZW1v
dmluZyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGxhc3QgY2hpbGQgY29ycmVjdGx5IHJlY29tcHV0
ZXMgc3R5bGVzIGZvciB0aGUgbmV3IGxhc3QgY2hpbGQKKyAgICAgIC8vIGFsc28gdGVzdHMgc3Vw
cG9ydCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSwgOmxhc3QtY2hpbGQsIHByZS13cmFwLCByZW1vdmlu
ZyBhIDxzY3JpcHQ+IGVsZW1lbnQKKyAgICAgIC8vIHJlbW92aW5nIHNjcmlwdDoKKyAgICAgIHZh
ciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOworICAg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzY3JpcHRzW3NjcmlwdHMubGVuZ3RoLTFdKTsK
KyAgICAgIC8vIHJlbW92aW5nIGxhc3QgY2hpbGQ6CisgICAgICB2YXIgbGFzdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZW1vdmUtbGFzdC1jaGlsZC10ZXN0Jyk7CisgICAgICB2YXIgcGVu
dWx0aW1hdGUgPSBsYXN0LnByZXZpb3VzU2libGluZzsgLy8gdGhpcyBzaG91bGQgYmUgdGhlIHdo
aXRlc3BhY2Ugbm9kZQorICAgICAgcGVudWx0aW1hdGUgPSBwZW51bHRpbWF0ZS5wcmV2aW91c1Np
Ymxpbmc7IC8vIHRoaXMgc2hvdWxkIG5vdyBiZSB0aGUgYWN0dWFsIHBlbnVsdGltYXRlIGVsZW1l
bnQKKyAgICAgIGxhc3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsYXN0KTsKKyAgICAgIGFzc2Vy
dEVxdWFscyhkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHBlbnVsdGltYXRl
LCAnJykud2hpdGVTcGFjZSwgJ3ByZS13cmFwJywgImZvdW5kIHVuZXhwZWN0ZWQgY29tcHV0ZWQg
c3R5bGUiKTsKKyAgICAgIHJldHVybiA3OworICAgIH0sCisKKyAgICAvLyBidWNrZXQgMTogRE9N
IFRyYXZlcnNhbCwgRE9NIFJhbmdlLCBIVFRQCisgICAgLy8gRE9NIFRyYXZlcnNhbAorICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMTogTm9kZUZpbHRlcnMgYW5kIEV4Y2VwdGlvbnMK
KyAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQoKTsgLy8gbG9va3MgbGlrZSA8IURPQ1RZ
UEU+PGh0bWw+PGhlYWQ+PHRpdGxlLz48XGhlYWQ+PGJvZHkvPjxcaHRtbD4gICAgICh0aGUgJ1wn
cyBhcmUgdG8gYXZvaWQgdmFsaWRhdGlvbiBlcnJvcnMpCisgICAgICB2YXIgaXRlcmF0aW9uID0g
MDsKKyAgICAgIHZhciBleGNlcHRpb24gPSAiUm9zZXMiOworICAgICAgdmFyIHRlc3QgPSBmdW5j
dGlvbihub2RlKSB7CisgICAgICAgIGl0ZXJhdGlvbiArPSAxOworICAgICAgICBzd2l0Y2ggKGl0
ZXJhdGlvbikgeworICAgICAgICAgIGNhc2UgMTogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNjogY2Fz
ZSA3OiBjYXNlIDg6IGNhc2UgOTogY2FzZSAxNDogY2FzZSAxNTogdGhyb3cgZXhjZXB0aW9uOwor
ICAgICAgICAgIGNhc2UgMjogY2FzZSA1OiBjYXNlIDEwOiBjYXNlIDExOiBjYXNlIDEyOiBjYXNl
IDEzOiByZXR1cm4gdHJ1ZTsgLy8gVG9OdW1iZXIodHJ1ZSkgPT4gMQorICAgICAgICAgIGRlZmF1
bHQ6IHRocm93IDA7CisgICAgICAgIH07CisgICAgICB9OworICAgICAgdmFyIGNoZWNrID0gZnVu
Y3Rpb24obywgbWV0aG9kKSB7CisgICAgICAgIHZhciBvayA9IGZhbHNlOworICAgICAgICB0cnkg
eworICAgICAgICAgIG9bbWV0aG9kXSgpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgaWYgKGUgPT09IGV4Y2VwdGlvbikKKyAgICAgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBhc3NlcnQob2ssICJtZXRob2QgIiArIG8gKyAiLiIgKyBtZXRob2QgKyAiKCkg
ZGlkbid0IGZvcndhcmQgZXhjZXB0aW9uIik7CisgICAgICB9OworICAgICAgdmFyIGkgPSBkb2Mu
Y3JlYXRlTm9kZUl0ZXJhdG9yKGRvYy5kb2N1bWVudEVsZW1lbnQsIDB4RkZGRkZGRkYsIHRlc3Qs
IHRydWUpOworICAgICAgY2hlY2soaSwgIm5leHROb2RlIik7IC8vIDEKKyAgICAgIGFzc2VydEVx
dWFscyhpLm5leHROb2RlKCksIGRvYy5kb2N1bWVudEVsZW1lbnQsICJpLm5leHROb2RlKCkgZGlk
bid0IHJldHVybiB0aGUgcmlnaHQgbm9kZSIpOyAvLyAyCisgICAgICBjaGVjayhpLCAicHJldmlv
dXNOb2RlIik7IC8vIDMKKyAgICAgIHZhciB3ID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihk
b2MuZG9jdW1lbnRFbGVtZW50LCAweEZGRkZGRkZGLCB0ZXN0LCB0cnVlKTsKKyAgICAgIGNoZWNr
KHcsICJuZXh0Tm9kZSIpOyAvLyA0CisgICAgICBhc3NlcnRFcXVhbHMody5uZXh0Tm9kZSgpLCBk
b2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsICJ3Lm5leHROb2RlKCkgZGlkbid0IHJldHVy
biB0aGUgcmlnaHQgbm9kZSIpOyAvLyA1CisgICAgICBjaGVjayh3LCAicHJldmlvdXNOb2RlIik7
IC8vIDYKKyAgICAgIGNoZWNrKHcsICJmaXJzdENoaWxkIik7IC8vIDcKKyAgICAgIGNoZWNrKHcs
ICJsYXN0Q2hpbGQiKTsgLy8gOAorICAgICAgY2hlY2sodywgIm5leHRTaWJsaW5nIik7IC8vIDkK
KyAgICAgIGFzc2VydEVxdWFscyhpdGVyYXRpb24sIDksICJpdGVyYXRpb25zIHdlbnQgd3Jvbmci
KTsKKyAgICAgIGFzc2VydEVxdWFscyh3LnByZXZpb3VzU2libGluZygpLCBudWxsLCAidy5wcmV2
aW91c1NpYmxpbmcoKSBkaWRuJ3QgcmV0dXJuIHRoZSByaWdodCBub2RlIik7IC8vIGRvZXNuJ3Qg
Y2FsbCBmaWx0ZXIKKyAgICAgIGFzc2VydEVxdWFscyhpdGVyYXRpb24sIDksICJmaWx0ZXIgY2Fs
bGVkIGluY29ycmVjdGx5IGZvciBwcmV2aW91c1NpYmxpbmcoKSIpOworICAgICAgYXNzZXJ0RXF1
YWxzKHcubGFzdENoaWxkKCksIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGl0bGUnKVswXSwg
IncubGFzdENoaWxkKCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQgbm9kZSIpOyAvLyAxMAorICAg
ICAgYXNzZXJ0RXF1YWxzKHcubmV4dFNpYmxpbmcoKSwgbnVsbCwgIncubmV4dFNpYmxpbmcoKSBk
aWRuJ3QgcmV0dXJuIHRoZSByaWdodCBub2RlIik7IC8vIDExIChmaWx0ZXIgY2FsbGVkIG9uIHBh
cmVudCwgdG8gc2VlIGlmIGl0J3MgaW5jbHVkZWQsIG90aGVyd2lzZSBpdCBjb3VsZCBza2lwIHRo
YXQgYW5kIGZpbmQgYSBuZXh0c2libGluZyBlbHNld2hlcmUpCisgICAgICBhc3NlcnRFcXVhbHMo
aXRlcmF0aW9uLCAxMSwgImZpbHRlciBjYWxsZWQgaW5jb3JyZWN0bHkgZm9yIG5leHRTaWJsaW5n
KCkiKTsKKyAgICAgIGFzc2VydEVxdWFscyh3LnBhcmVudE5vZGUoKSwgZG9jLmRvY3VtZW50RWxl
bWVudC5maXJzdENoaWxkLCAidy5wYXJlbnROb2RlKCkgZGlkbid0IHJldHVybiB0aGUgcmlnaHQg
bm9kZSIpOyAvLyAxMgorICAgICAgYXNzZXJ0RXF1YWxzKHcubmV4dFNpYmxpbmcoKSwgZG9jLmRv
Y3VtZW50RWxlbWVudC5sYXN0Q2hpbGQsICJ3Lm5leHRTaWJsaW5nKCkgZGlkbid0IHJldHVybiB0
aGUgcmlnaHQgbm9kZSIpOyAvLyAxMworICAgICAgY2hlY2sodywgInByZXZpb3VzU2libGluZyIp
OyAvLyAxNAorICAgICAgY2hlY2sodywgInBhcmVudE5vZGUiKTsgLy8gMTUKKyAgICAgIHJldHVy
biAxOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAyOiBSZW1vdmlu
ZyBub2RlcyBkdXJpbmcgaXRlcmF0aW9uCisgICAgICB2YXIgY291bnQgPSAwOworICAgICAgdmFy
IGV4cGVjdCA9IGZ1bmN0aW9uKG4sIG5vZGUxLCBub2RlMikgeworICAgICAgICBjb3VudCArPSAx
OworICAgICAgICBhc3NlcnQobiA9PSBjb3VudCwgInJlYWNoZWQgZXhwZWN0YXRpb24gIiArIG4g
KyAiIHdoZW4gZXhwZWN0aW5nIGV4cGVjdGF0aW9uICIgKyBjb3VudCk7CisgICAgICAgIGFzc2Vy
dEVxdWFscyhub2RlMSwgbm9kZTIsICJleHBlY3RhdGlvbiAiICsgY291bnQgKyAiIGZhaWxlZCIp
OworICAgICAgfTsKKyAgICAgIHZhciBkb2MgPSBnZXRUZXN0RG9jdW1lbnQoKTsKKyAgICAgIHZh
ciB0MSA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50KCd0MScpKTsKKyAg
ICAgIHZhciB0MiA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50KCd0Micp
KTsKKyAgICAgIHZhciB0MyA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50
KCd0MycpKTsKKyAgICAgIHZhciB0NCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVF
bGVtZW50KCd0NCcpKTsKKyAgICAgIHZhciBjYWxsQ291bnQgPSAwOworICAgICAgdmFyIGZpbHRl
ckZ1bmN0aW9ucyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhwZWN0KDEsIG5vZGUs
IGRvYy5ib2R5KTsgcmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciAwCisgICAgICAgIGZ1bmN0aW9u
IChub2RlKSB7IGV4cGVjdCgzLCBub2RlLCB0MSk7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIg
MQorICAgICAgICBmdW5jdGlvbiAobm9kZSkgeyBleHBlY3QoNSwgbm9kZSwgdDIpOyByZXR1cm4g
dHJ1ZTsgfSwgLy8gZmlsdGVyIDIKKyAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhwZWN0KDcs
IG5vZGUsIHQzKTsgZG9jLmJvZHkucmVtb3ZlQ2hpbGQodDQpOyByZXR1cm4gdHJ1ZTsgfSwgLy8g
ZmlsdGVyIDMKKyAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhwZWN0KDksIG5vZGUsIHQ0KTsg
cmV0dXJuIHRydWU7IH0sIC8vIGZpbHRlciA0CisgICAgICAgIGZ1bmN0aW9uIChub2RlKSB7IGV4
cGVjdCgxMSwgbm9kZSwgdDQpOyBkb2MuYm9keS5yZW1vdmVDaGlsZCh0NCk7IHJldHVybiAyIC8q
IFJFSkVDVCAqLzsgfSwgLy8gZmlsdGVyIDUKKyAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsgZXhw
ZWN0KDEyLCBub2RlLCB0Myk7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIgNgorICAgICAgICBm
dW5jdGlvbiAobm9kZSkgeyBleHBlY3QoMTQsIG5vZGUsIHQyKTsgZG9jLmJvZHkucmVtb3ZlQ2hp
bGQodDIpOyByZXR1cm4gdHJ1ZTsgfSwgLy8gZmlsdGVyIDcKKyAgICAgICAgZnVuY3Rpb24gKG5v
ZGUpIHsgZXhwZWN0KDE2LCBub2RlLCB0MSk7IHJldHVybiB0cnVlOyB9LCAvLyBmaWx0ZXIgOAor
ICAgICAgXTsKKyAgICAgIHZhciBpID0gZG9jLmNyZWF0ZU5vZGVJdGVyYXRvcihkb2MuZG9jdW1l
bnRFbGVtZW50Lmxhc3RDaGlsZCwgMHhGRkZGRkZGRiwgZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJu
IGZpbHRlckZ1bmN0aW9uc1tjYWxsQ291bnQrK10obm9kZSk7IH0sIHRydWUpOworICAgICAgLy8g
KiBCIDEgMiAzIDQKKyAgICAgIGV4cGVjdCgyLCBpLm5leHROb2RlKCksIGRvYy5ib2R5KTsgLy8g
ZmlsdGVyIDAKKyAgICAgIC8vIFtCXSAqIDEgMiAzIDQgICAgIAorICAgICAgZXhwZWN0KDQsIGku
bmV4dE5vZGUoKSwgdDEpOyAvLyBmaWx0ZXIgMQorICAgICAgLy8gQiBbMV0gKiAyIDMgNAorICAg
ICAgZXhwZWN0KDYsIGkubmV4dE5vZGUoKSwgdDIpOyAvLyBmaWx0ZXIgMgorICAgICAgLy8gQiAx
IFsyXSAqIDMgNAorICAgICAgZXhwZWN0KDgsIGkubmV4dE5vZGUoKSwgdDMpOyAvLyBmaWx0ZXIg
MworICAgICAgLy8gQiAxIDIgWzNdICoKKyAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHQ0KTsK
KyAgICAgIC8vIEIgMSAyIFszXSAqIDQKKyAgICAgIGV4cGVjdCgxMCwgaS5uZXh0Tm9kZSgpLCB0
NCk7IC8vIGZpbHRlciA0CisgICAgICAvLyBCIDEgMiAzIFs0XSAqCisgICAgICBleHBlY3QoMTMs
IGkucHJldmlvdXNOb2RlKCksIHQzKTsgLy8gZmlsdGVycyA1LCA2CisgICAgICAgIC8vIEIgMSAy
IDMgKiAoNCkgLy8gZmlsdGVyIDUKKyAgICAgICAgLy8gQiAxIDIgWzNdICogICAvLyBiZXR3ZWVu
IDUgYW5kIDYKKyAgICAgICAgLy8gQiAxIDIgKiAoMykgICAvLyBmaWx0ZXIgNgorICAgICAgLy8g
QiAxIDIgKiBbM10KKyAgICAgIGV4cGVjdCgxNSwgaS5wcmV2aW91c05vZGUoKSwgdDIpOyAvLyBm
aWx0ZXIgNworICAgICAgICAvLyBCIDEgKiAoMikgWzNdCisgICAgICAgIC8vIC0tIHNwZWMgc2F5
cyAiRm9yIGluc3RhbmNlLCBpZiBhIE5vZGVGaWx0ZXIgcmVtb3ZlcyBhIG5vZGUKKyAgICAgICAg
Ly8gICAgZnJvbSBhIGRvY3VtZW50LCBpdCBjYW4gc3RpbGwgYWNjZXB0IHRoZSBub2RlLCB3aGlj
aAorICAgICAgICAvLyAgICBtZWFucyB0aGF0IHRoZSBub2RlIG1heSBiZSByZXR1cm5lZCBieSB0
aGUgTm9kZUl0ZXJhdG9yCisgICAgICAgIC8vICAgIG9yIFRyZWVXYWxrZXIgZXZlbiB0aG91Z2gg
aXQgaXMgbm8gbG9uZ2VyIGluIHRoZSBzdWJ0cmVlCisgICAgICAgIC8vICAgIGJlaW5nIHRyYXZl
cnNlZC4iCisgICAgICAgIC8vIC0tIGJ1dCBpdCBhbHNvIHNheXMgIklmIGNoYW5nZXMgdG8gdGhl
IGl0ZXJhdGVkIGxpc3QgZG8gbm90CisgICAgICAgIC8vICAgIHJlbW92ZSB0aGUgcmVmZXJlbmNl
IG5vZGUsIHRoZXkgZG8gbm90IGFmZmVjdCB0aGUgc3RhdGUKKyAgICAgICAgLy8gICAgb2YgdGhl
IE5vZGVJdGVyYXRvci4iCisgICAgICAvLyBCIDEgKiBbM10KKyAgICAgIGV4cGVjdCgxNywgaS5w
cmV2aW91c05vZGUoKSwgdDEpOyAvLyBmaWx0ZXIgOAorICAgICAgLy8gQiBbMV0gKiAzCisgICAg
ICByZXR1cm4gMTsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMzog
dGhlIGluZmluaXRlIGl0ZXJhdG9yCisgICAgICB2YXIgZG9jID0gZ2V0VGVzdERvY3VtZW50KCk7
CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkgKz0gMSkgeworICAgICAgICBkb2MuYm9k
eS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpKTsKKyAgICAgICAgZG9j
LmJvZHkubGFzdENoaWxkLnRpdGxlID0gaTsKKyAgICAgIH0KKyAgICAgIHZhciBjb3VudCA9IDA7
CisgICAgICB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoY291bnQgPiAzICYm
IGNvdW50IDwgMTIpCisgICAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZG9jLmJvZHkuZmly
c3RDaGlsZCk7CisgICAgICAgIGNvdW50ICs9IDE7CisgICAgICAgIHJldHVybiAoY291bnQgJSAy
ID09IDApID8gMSA6IDI7CisgICAgICB9OworICAgICAgdmFyIGkgPSBkb2MuY3JlYXRlTm9kZUl0
ZXJhdG9yKGRvYy5ib2R5LCAweEZGRkZGRkZGLCB0ZXN0LCB0cnVlKTsKKyAgICAgIGFzc2VydEVx
dWFscyhpLm5leHROb2RlKCkudGl0bGUsICIwIiwgImZhaWx1cmUgMSIpOworICAgICAgYXNzZXJ0
RXF1YWxzKGkubmV4dE5vZGUoKS50aXRsZSwgIjIiLCAiZmFpbHVyZSAyIik7CisgICAgICBhc3Nl
cnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRpdGxlLCAiNCIsICJmYWlsdXJlIDMiKTsKKyAgICAgIGFz
c2VydEVxdWFscyhpLm5leHROb2RlKCkudGl0bGUsICIxIiwgImZhaWx1cmUgNCIpOworICAgICAg
YXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUoKS50aXRsZSwgIjMiLCAiZmFpbHVyZSA1Iik7CisgICAg
ICBhc3NlcnRFcXVhbHMoaS5uZXh0Tm9kZSgpLnRpdGxlLCAiMCIsICJmYWlsdXJlIDYiKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhpLm5leHROb2RlKCkudGl0bGUsICIyIiwgImZhaWx1cmUgNyIpOwor
ICAgICAgYXNzZXJ0RXF1YWxzKGkubmV4dE5vZGUoKSwgbnVsbCwgImZhaWx1cmUgOCIpOworICAg
ICAgcmV0dXJuIDE7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDQ6
IGlnbm9yaW5nIHdoaXRlc3BhY2UgdGV4dCBub2RlcyB3aXRoIG5vZGUgaXRlcmF0b3JzCisgICAg
ICB2YXIgY291bnQgPSAwOworICAgICAgdmFyIGV4cGVjdCA9IGZ1bmN0aW9uKG5vZGUxLCBub2Rl
MikgeworICAgICAgICBjb3VudCArPSAxOworICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsIG5v
ZGUyLCAiZXhwZWN0YXRpb24gIiArIGNvdW50ICsgIiBmYWlsZWQiKTsKKyAgICAgIH07CisgICAg
ICB2YXIgYWxsQnV0V1MgPSBmdW5jdGlvbiAobm9kZSkgeworICAgICAgICBpZiAobm9kZS5ub2Rl
VHlwZSA9PSAzICYmIG5vZGUuZGF0YS5tYXRjaCgvXlxzKiQvKSkKKyAgICAgICAgICByZXR1cm4g
MjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9OworICAgICAgdmFyIGkgPSBkb2N1bWVudC5j
cmVhdGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQuYm9keSwgMHgwMSB8IDB4MDQgfCAweDA4IHwgMHgx
MCB8IDB4MjAsIGFsbEJ1dFdTLCB0cnVlKTsKKyAgICAgIC8vIG5vdyB3YWxrIHRoZSBkb2N1bWVu
dCBib2R5IGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiB0aGUgcmlnaHQgcGxhY2UKKyAg
ICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmJvZHkpOyAvLyAxCisgICAgICBleHBl
Y3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVswXSk7
CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnaDEnKVswXS5maXJzdENoaWxkKTsKKyAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXSk7CisgICAgICBleHBlY3QoaS5uZXh0
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0MScpKTsKKyAgICAgIGV4cGVj
dChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQyJykpOworICAg
ICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDMn
KSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YnVja2V0NCcpKTsKKyAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdidWNrZXQ1JykpOworICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDYnKSk7IC8vIDEwCisgICAgICBleHBlY3QoaS5uZXh0Tm9k
ZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykpOworICAgICAgZXhwZWN0KGku
bmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlJykpOworICAgICAgZXhw
ZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlJykuZmlyc3RD
aGlsZCk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2xhc2gnKSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc2xhc2gnKS5maXJzdENoaWxkKTsKKyAgICAgIGV4cGVjdChpLm5leHROb2RlKCks
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbGFzaCcpLm5leHRTaWJsaW5nKTsKKyAgICAgIGV4
cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbGFzaCcpLm5leHRT
aWJsaW5nLmZpcnN0Q2hpbGQpOworICAgICAgZXhwZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdKTsKKyAgICAgIGV4cGVjdChpLm5leHROb2Rl
KCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhcmVhJylbMF0pOworICAgICAgZXhw
ZWN0KGkubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScp
WzBdKTsgLy8gMjAKKyAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXS5maXJzdENoaWxkKTsKKyAgICAgIGV4cGVjdChpLm5l
eHROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVsxXSk7Cisg
ICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aWZyYW1lJylbMV0uZmlyc3RDaGlsZCk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMl0pOworICAgICAgZXhwZWN0KGku
bmV4dE5vZGUoKSwgZG9jdW1lbnQuZm9ybXNbMF0pOworICAgICAgZXhwZWN0KGkubmV4dE5vZGUo
KSwgZG9jdW1lbnQuZm9ybXMuZm9ybS5lbGVtZW50c1swXSk7CisgICAgICBleHBlY3QoaS5uZXh0
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGFibGUnKVswXSk7CisgICAg
ICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGJv
ZHknKVswXSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgndHInKVswXSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGQnKVswXSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9k
ZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGQnKVswXS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgncCcpWzBdKTsKKyAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbnN0cnVjdGlvbnMnKSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgp
LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdHJ1Y3Rpb25zJykuZmlyc3RDaGlsZCk7Cisg
ICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLm5vZGVOYW1lLCAiU1BBTiIpOworICAgICAgZXhwZWN0
KGkubmV4dE5vZGUoKS5ub2RlTmFtZSwgIiN0ZXh0Iik7CisgICAgICBleHBlY3QoaS5uZXh0Tm9k
ZSgpLCBkb2N1bWVudC5saW5rc1sxXSk7CisgICAgICBleHBlY3QoaS5uZXh0Tm9kZSgpLCBkb2N1
bWVudC5saW5rc1sxXS5maXJzdENoaWxkKTsKKyAgICAgIGV4cGVjdChpLm5leHROb2RlKCksIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0cnVjdGlvbnMnKS5sYXN0Q2hpbGQpOworICAgICAg
ZXhwZWN0KGkubmV4dE5vZGUoKSwgbnVsbCk7CisgICAgICAvLyB3YWxrIGl0IGJhY2t3YXJkcyBm
b3IgZ29vZCBtZWFzdXJlCisgICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2luc3RydWN0aW9ucycpLmxhc3RDaGlsZCk7CisgICAgICBleHBlY3Qo
aS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQubGlua3NbMV0uZmlyc3RDaGlsZCk7CisgICAgICBl
eHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQubGlua3NbMV0pOworICAgICAgZXhwZWN0
KGkucHJldmlvdXNOb2RlKCkubm9kZU5hbWUsICIjdGV4dCIpOworICAgICAgZXhwZWN0KGkucHJl
dmlvdXNOb2RlKCkubm9kZU5hbWUsICJTUEFOIik7CisgICAgICBleHBlY3QoaS5wcmV2aW91c05v
ZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RydWN0aW9ucycpLmZpcnN0Q2hpbGQp
OworICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnN0cnVjdGlvbnMnKSk7CisgICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3An
KVswXSk7CisgICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3RkJylbMF0pOworICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzBdKTsKKyAgICAgIGV4cGVjdChpLnBy
ZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGJvZHknKVswXSk7
CisgICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3RhYmxlJylbMF0pOworICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3Vt
ZW50LmZvcm1zLmZvcm0uZWxlbWVudHNbMF0pOworICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2Rl
KCksIGRvY3VtZW50LmZvcm1zWzBdKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMl0pOworICAgICAgZXhwZWN0
KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUn
KVsxXS5maXJzdENoaWxkKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMV0pOworICAgICAgZXhwZWN0KGkucHJl
dmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXS5m
aXJzdENoaWxkKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF0pOyAvLyAyMAorICAgICAgZXhwZWN0KGkucHJl
dmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhcmVhJylbMF0pOwor
ICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdtYXAnKVswXSk7CisgICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NsYXNoJykubmV4dFNpYmxpbmcuZmlyc3RDaGlsZCk7CisgICAgICBl
eHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsYXNoJyku
bmV4dFNpYmxpbmcpOworICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzbGFzaCcpLmZpcnN0Q2hpbGQpOworICAgICAgZXhwZWN0KGkucHJldmlv
dXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbGFzaCcpKTsKKyAgICAgIGV4cGVj
dChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKS5maXJz
dENoaWxkKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc2NvcmUnKSk7CisgICAgICBleHBlY3QoaS5wcmV2aW91c05vZGUoKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9k
ZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0NicpKTsKKyAgICAgIGV4cGVjdChp
LnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0NScpKTsKKyAg
ICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVj
a2V0NCcpKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYnVja2V0MycpKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0MicpKTsKKyAgICAgIGV4cGVjdChpLnByZXZpb3Vz
Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVja2V0MScpKTsKKyAgICAgIGV4cGVj
dChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jylb
MF0pOworICAgICAgZXhwZWN0KGkucHJldmlvdXNOb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdoMScpWzBdLmZpcnN0Q2hpbGQpOworICAgICAgZXhwZWN0KGkucHJldmlvdXNO
b2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoMScpWzBdKTsKKyAgICAgIGV4
cGVjdChpLnByZXZpb3VzTm9kZSgpLCBkb2N1bWVudC5ib2R5KTsKKyAgICAgIGV4cGVjdChpLnBy
ZXZpb3VzTm9kZSgpLCBudWxsKTsKKyAgICAgIHJldHVybiAxOworICAgIH0sCisgICAgZnVuY3Rp
b24gKCkgeworICAgICAgLy8gdGVzdCA1OiBpZ25vcmluZyB3aGl0ZXNwYWNlIHRleHQgbm9kZXMg
d2l0aCB0cmVlIHdhbGtlcnMKKyAgICAgIHZhciBjb3VudCA9IDA7CisgICAgICB2YXIgZXhwZWN0
ID0gZnVuY3Rpb24obm9kZTEsIG5vZGUyKSB7CisgICAgICAgIGNvdW50ICs9IDE7CisgICAgICAg
IGFzc2VydEVxdWFscyhub2RlMSwgbm9kZTIsICJleHBlY3RhdGlvbiAiICsgY291bnQgKyAiIGZh
aWxlZCIpOworICAgICAgfTsKKyAgICAgIHZhciBhbGxCdXRXUyA9IGZ1bmN0aW9uIChub2RlKSB7
CisgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMgJiYgbm9kZS5kYXRhLm1hdGNoKC9eXHMq
JC8pKQorICAgICAgICAgIHJldHVybiAzOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH07Cisg
ICAgICB2YXIgdyA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQuYm9keSwgMHgw
MSB8IDB4MDQgfCAweDA4IHwgMHgxMCB8IDB4MjAsIGFsbEJ1dFdTLCB0cnVlKTsKKyAgICAgIGV4
cGVjdCh3LmN1cnJlbnROb2RlLCBkb2N1bWVudC5ib2R5KTsKKyAgICAgIGV4cGVjdCh3LnBhcmVu
dE5vZGUoKSwgbnVsbCk7CisgICAgICBleHBlY3Qody5jdXJyZW50Tm9kZSwgZG9jdW1lbnQuYm9k
eSk7CisgICAgICBleHBlY3Qody5maXJzdENoaWxkKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdoMScpWzBdKTsKKyAgICAgIGV4cGVjdCh3LmZpcnN0Q2hpbGQoKS5ub2RlVHlwZSwg
Myk7CisgICAgICBleHBlY3Qody5wYXJlbnROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdoMScpWzBdKTsKKyAgICAgIGV4cGVjdCh3Lm5leHRTaWJsaW5nKCkucHJldmlvdXNT
aWJsaW5nLm5vZGVUeXBlLCAzKTsKKyAgICAgIGV4cGVjdCh3Lm5leHRTaWJsaW5nKCksIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbNl0pOworICAgICAgZXhwZWN0KHcubmV4dFNp
YmxpbmcoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hcCcpWzBdKTsKKyAgICAg
IGV4cGVjdCh3Lmxhc3RDaGlsZCgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGFi
bGUnKVswXSk7CisgICAgICBleHBlY3Qody5sYXN0Q2hpbGQoKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3Rib2R5JylbMF0pOworICAgICAgZXhwZWN0KHcubmV4dE5vZGUoKSwgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbMF0pOworICAgICAgZXhwZWN0KHcubmV4
dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJylbMF0pOworICAgICAg
ZXhwZWN0KHcubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVs3
XSk7CisgICAgICBleHBlY3Qody5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgncCcpWzhdKTsgLy8gaW5zdHJ1Y3Rpb25zLmluYyBwYXJhZ3JhcGgKKyAgICAgIGV4cGVj
dCh3LnByZXZpb3VzU2libGluZygpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWFw
JylbMF0pOworICAgICAgZXhwZWN0KHcucHJldmlvdXNOb2RlKCkuZGF0YSwgIjEwMCIpOworICAg
ICAgZXhwZWN0KHcucGFyZW50Tm9kZSgpLnRhZ05hbWUsICJTUEFOIik7CisgICAgICBleHBlY3Qo
dy5wYXJlbnROb2RlKCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKSk7CisgICAg
ICBleHBlY3Qody5wYXJlbnROb2RlKCksIGRvY3VtZW50LmJvZHkpOworICAgICAgZXhwZWN0KHcu
bGFzdENoaWxkKCkuaWQsICJpbnN0cnVjdGlvbnMiKTsKKyAgICAgIGV4cGVjdCh3Lmxhc3RDaGls
ZCgpLmRhdGEuc3Vic3RyKDAsMSksICIuIik7CisgICAgICBleHBlY3Qody5wcmV2aW91c05vZGUo
KSwgZG9jdW1lbnQubGlua3NbMV0uZmlyc3RDaGlsZCk7CisgICAgICByZXR1cm4gMTsKKyAgICB9
LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgNjogd2Fsa2luZyBvdXRzaWRlIGEg
dHJlZQorICAgICAgdmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOworICAgICAgdmFyIHAgPSBk
b2MuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgICB2YXIgYiA9IGRvYy5ib2R5OworICAgICAgdmFyIHcgPSBkb2N1bWVudC5jcmVhdGVUcmVl
V2Fsa2VyKGIsIDB4RkZGRkZGRkYsIG51bGwsIHRydWUpOworICAgICAgYXNzZXJ0RXF1YWxzKHcu
Y3VycmVudE5vZGUsIGIsICJiYXNpYyB1c2Ugb2YgVHJlZVdhbGtlciBmYWlsZWQ6IGN1cnJlbnRO
b2RlIik7CisgICAgICBhc3NlcnRFcXVhbHMody5sYXN0Q2hpbGQoKSwgcCwgImJhc2ljIHVzZSBv
ZiBUcmVlV2Fsa2VyIGZhaWxlZDogbGFzdENoaWxkKCkiKTsKKyAgICAgIGFzc2VydEVxdWFscyh3
LnByZXZpb3VzTm9kZSgpLCBiLCAiYmFzaWMgdXNlIG9mIFRyZWVXYWxrZXIgZmFpbGVkOiBwcmV2
aW91c05vZGUoKSIpOworICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChiKTsK
KyAgICAgIGFzc2VydEVxdWFscyh3Lmxhc3RDaGlsZCgpLCBwLCAiVHJlZVdhbGtlciBmYWlsZWQg
YWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1cnJlbnQgbm9kZSBmcm9tIHRoZSB0cmVlIik7CisgICAgICBh
c3NlcnRFcXVhbHMody5uZXh0Tm9kZSgpLCBudWxsLCAiZmFpbGVkIHRvIHdhbGsgaW50byB0aGUg
ZW5kIG9mIGEgc3VidHJlZSIpOworICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGls
ZChwKTsKKyAgICAgIGFzc2VydEVxdWFscyh3LnByZXZpb3VzTm9kZSgpLCBkb2MuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3RpdGxlJylbMF0sICJmYWlsZWQgdG8gaGFuZGxlIHJlZ3JhZnRpbmcgY29y
cmVjdGx5Iik7CisgICAgICBwLmFwcGVuZENoaWxkKGIpOworICAgICAgYXNzZXJ0RXF1YWxzKHcu
bmV4dE5vZGUoKSwgcCwgImNvdWxkbid0IHJldHJhY2Ugc3RlcHMiKTsKKyAgICAgIGFzc2VydEVx
dWFscyh3Lm5leHROb2RlKCksIGIsICJjb3VsZG4ndCBzdGVwIGJhY2sgaW50byByb290Iik7Cisg
ICAgICBhc3NlcnRFcXVhbHMody5wcmV2aW91c05vZGUoKSwgbnVsbCwgInJvb3QgZGlkbid0IHJl
dGFrZSBpdHMgcm9vdGlzaCBwb3NpdGlvbiIpOworICAgICAgcmV0dXJuIDE7CisgICAgfSwKKwor
ICAgIC8vIERPTSBSYW5nZQorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgNzogYmFz
aWMgcmFuZ2VzIHRlc3RzCisgICAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgICBhc3NlcnQociwgInJhbmdlIG5vdCBjcmVhdGVkIik7CisgICAgICBhc3NlcnQoci5jb2xs
YXBzZWQsICJuZXcgcmFuZ2Ugd2Fzbid0IGNvbGxhcHNlZCIpOworICAgICAgYXNzZXJ0RXF1YWxz
KHIuY29tbW9uQW5jZXN0b3JDb250YWluZXIsIGRvY3VtZW50LCAibmV3IHJhbmdlJ3MgY29tbW9u
IGFuY2VzdG9yIHdhc24ndCB0aGUgZG9jdW1lbnQiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLnN0
YXJ0Q29udGFpbmVyLCBkb2N1bWVudCwgIm5ldyByYW5nZSdzIHN0YXJ0IGNvbnRhaW5lciB3YXNu
J3QgdGhlIGRvY3VtZW50Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMCwg
Im5ldyByYW5nZSdzIHN0YXJ0IG9mZnNldCB3YXNuJ3QgemVybyIpOworICAgICAgYXNzZXJ0RXF1
YWxzKHIuZW5kQ29udGFpbmVyLCBkb2N1bWVudCwgIm5ldyByYW5nZSdzIGVuZCBjb250YWluZXIg
d2Fzbid0IHRoZSBkb2N1bWVudCIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kT2Zmc2V0LCAw
LCAibmV3IHJhbmdlJ3MgZW5kIG9mZnNldCB3YXNuJ3QgemVybyIpOworICAgICAgYXNzZXJ0KHIu
Y2xvbmVDb250ZW50cygpLCAiY2xvbmVDb250ZW50cygpIGRpZG4ndCByZXR1cm4gYW4gb2JqZWN0
Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5jbG9uZUNvbnRlbnRzKCkuY2hpbGROb2Rlcy5sZW5n
dGgsIDAsICJub3RoaW5nIGNsb25lZCB3YXMgbW9yZSB0aGFuIG5vdGhpbmciKTsKKyAgICAgIGFz
c2VydEVxdWFscyhyLmNsb25lUmFuZ2UoKS50b1N0cmluZygpLCAiIiwgIm5vdGhpbmcgY2xvbmVk
IHN0cmluZ2lmZWQgdG8gbW9yZSB0aGFuIG5vdGhpbmciKTsKKyAgICAgIHIuY29sbGFwc2UodHJ1
ZSk7IC8vIG5vIGVmZmVjdAorICAgICAgYXNzZXJ0RXF1YWxzKHIuY29tcGFyZUJvdW5kYXJ5UG9p
bnRzKHIuU1RBUlRfVE9fRU5ELCByLmNsb25lUmFuZ2UoKSksIDAsICJzdGFydGluZyBib3VuZGFy
eSBwb2ludCBvZiByYW5nZSB3YXNuJ3QgdGhlIHNhbWUgYXMgdGhlIGVuZCBib3VuZGFyeSBwb2lu
dCBvZiB0aGUgY2xvbmUgcmFuZ2UiKTsKKyAgICAgIHIuZGVsZXRlQ29udGVudHMoKTsgLy8gbm8g
ZWZmZWN0CisgICAgICBhc3NlcnRFcXVhbHMoci5leHRyYWN0Q29udGVudHMoKS5jaGlsZE5vZGVz
Lmxlbmd0aCwgMCwgIm5vdGhpbmcgcmVtb3ZlZCB3YXMgbW9yZSB0aGFuIG5vdGhpbmciKTsKKyAg
ICAgIHIuaW5zZXJ0Tm9kZShkb2N1bWVudC5jcmVhdGVDb21tZW50KCJjb21tZW50ZWQgaW5zZXJ0
ZWQgdG8gdGVzdCByYW5nZXMiKSk7CisgICAgICB0cnkgeworICAgICAgICBhc3NlcnQoIXIuY29s
bGFwc2VkLCAicmFuZ2Ugd2l0aCBpbnNlcnRlZCBjb21tZW50IGlzIGNvbGxhcHNlZCIpOworICAg
ICAgICBhc3NlcnRFcXVhbHMoci5jb21tb25BbmNlc3RvckNvbnRhaW5lciwgZG9jdW1lbnQsICJy
YW5nZSB3aXRoIGluc2VydGVkIGNvbW1lbnQgaGFzIGNvbW1vbiBhbmNlc3RvciB0aGF0IGlzbid0
IHRoZSBkb2N1bWVudCIpOworICAgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwg
ZG9jdW1lbnQsICJyYW5nZSB3aXRoIGluc2VydGVkIGNvbW1lbnQgaGFzIHN0YXJ0IGNvbnRhaW5l
ciB0aGF0IGlzbid0IHRoZSBkb2N1bWVudCIpOworICAgICAgICBhc3NlcnRFcXVhbHMoci5zdGFy
dE9mZnNldCwgMCwgInJhbmdlIHdpdGggaW5zZXJ0ZWQgY29tbWVudCBoYXMgc3RhcnQgb2Zmc2V0
IHRoYXQgaXNuJ3QgemVybyIpOworICAgICAgICBhc3NlcnRFcXVhbHMoci5lbmRDb250YWluZXIs
IGRvY3VtZW50LCAicmFuZ2Ugd2l0aCBpbnNlcnRlZCBjb21tZW50IGhhcyBlbmQgY29udGFpbmVy
IHRoYXQgaXNuJ3QgdGhlIGRvY3VtZW50Iik7CisgICAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9m
ZnNldCwgMSwgInJhbmdlIHdpdGggaW5zZXJ0ZWQgY29tbWVudCBoYXMgZW5kIG9mZnNldCB0aGF0
IGlzbid0IGFmdGVyIHRoZSBjb21tZW50Iik7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBk
b2N1bWVudC5yZW1vdmVDaGlsZChkb2N1bWVudC5maXJzdENoaWxkKTsKKyAgICAgIH0KKyAgICAg
IHJldHVybiAxOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA4OiBt
b3ZpbmcgYm91bmRhcnkgcG9pbnRzCisgICAgICB2YXIgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uY3JlYXRlRG9jdW1lbnQobnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICB2YXIgcm9vdCA9
IGRvYy5jcmVhdGVFbGVtZW50KCJyb290Iik7CisgICAgICBkb2MuYXBwZW5kQ2hpbGQocm9vdCk7
CisgICAgICB2YXIgZTEgPSBkb2MuY3JlYXRlRWxlbWVudCgiZSIpOworICAgICAgcm9vdC5hcHBl
bmRDaGlsZChlMSk7CisgICAgICB2YXIgZTIgPSBkb2MuY3JlYXRlRWxlbWVudCgiZSIpOworICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChlMik7CisgICAgICB2YXIgZTMgPSBkb2MuY3JlYXRlRWxlbWVu
dCgiZSIpOworICAgICAgcm9vdC5hcHBlbmRDaGlsZChlMyk7CisgICAgICB2YXIgciA9IGRvYy5j
cmVhdGVSYW5nZSgpOworICAgICAgci5zZXRTdGFydChlMiwgMCk7CisgICAgICByLnNldEVuZChl
MywgMCk7CisgICAgICBhc3NlcnQoIXIuY29sbGFwc2VkLCAibm9uLWVtcHR5IHJhbmdlIGNsYWlt
cyB0byBiZSBjb2xsYXBzZWQiKTsKKyAgICAgIHIuc2V0RW5kKGUxLCAwKTsKKyAgICAgIGFzc2Vy
dChyLmNvbGxhcHNlZCwgInNldEVuZCgpIGRpZG4ndCBjb2xsYXBzZSB0aGUgcmFuZ2UiKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCBlMSwgInN0YXJ0Q29udGFpbmVyIGlz
IHdyb25nIGFmdGVyIHNldEVuZCgpIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNl
dCwgMCwgInN0YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldEVuZCgpIik7CisgICAgICBhc3Nl
cnRFcXVhbHMoci5lbmRDb250YWluZXIsIGUxLCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVy
IHNldEVuZCgpIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDAsICJlbmRPZmZz
ZXQgaXMgd3JvbmcgYWZ0ZXIgc2V0RW5kKCkiKTsKKyAgICAgIHIuc2V0U3RhcnRCZWZvcmUoZTMp
OworICAgICAgYXNzZXJ0KHIuY29sbGFwc2VkLCAic2V0U3RhcnRCZWZvcmUoKSBkaWRuJ3QgY29s
bGFwc2UgdGhlIHJhbmdlIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwg
cm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QmVmb3JlKCkiKTsK
KyAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0T2Zmc2V0LCAyLCAic3RhcnRPZmZzZXQgaXMgd3Jv
bmcgYWZ0ZXIgc2V0U3RhcnRCZWZvcmUoKSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29u
dGFpbmVyLCByb290LCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QmVmb3Jl
KCkiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMiwgImVuZE9mZnNldCBpcyB3
cm9uZyBhZnRlciBzZXRTdGFydEJlZm9yZSgpIik7CisgICAgICByLnNldEVuZEFmdGVyKHJvb3Qp
OworICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgInNldEVuZEFmdGVyKCkgZGlkbid0IHVuY29s
bGFwc2UgdGhlIHJhbmdlIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwg
cm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldEVuZEFmdGVyKCkiKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0T2Zmc2V0LCAyLCAic3RhcnRPZmZzZXQgaXMgd3Jvbmcg
YWZ0ZXIgc2V0RW5kQWZ0ZXIoKSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVy
LCBkb2MsICJlbmRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0RW5kQWZ0ZXIoKSIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHIuZW5kT2Zmc2V0LCAxLCAiZW5kT2Zmc2V0IGlzIHdyb25nIGFmdGVy
IHNldEVuZEFmdGVyKCkiKTsKKyAgICAgIHIuc2V0U3RhcnRBZnRlcihlMik7CisgICAgICBhc3Nl
cnQoIXIuY29sbGFwc2VkLCAic2V0U3RhcnRBZnRlcigpIGNvbGxhcHNlZCB0aGUgcmFuZ2UiKTsK
KyAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCByb290LCAic3RhcnRDb250YWlu
ZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0U3RhcnRBZnRlcigpIik7CisgICAgICBhc3NlcnRFcXVhbHMo
ci5zdGFydE9mZnNldCwgMiwgInN0YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNldFN0YXJ0QWZ0
ZXIoKSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuZW5kQ29udGFpbmVyLCBkb2MsICJlbmRDb250
YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0U3RhcnRBZnRlcigpIik7CisgICAgICBhc3NlcnRFcXVh
bHMoci5lbmRPZmZzZXQsIDEsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2V0U3RhcnRBZnRl
cigpIik7CisgICAgICB2YXIgbXNnID0gJyc7CisgICAgICB0cnkgeworICAgICAgICByLnNldEVu
ZEJlZm9yZShkb2MpOworICAgICAgICBtc2cgPSAibm8gZXhjZXB0aW9uIHRocm93biBmb3Igc2V0
RW5kQmVmb3JlKCkgdGhlIGRvY3VtZW50IGl0c2VsZiI7CisgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGlmIChlLkJBRF9CT1VOREFSWVBPSU5UU19FUlIgIT0gMSkKKyAgICAgICAgICBtc2cg
PSAnbm90IGEgUmFuZ2VFeGNlcHRpb24nOworICAgICAgICBlbHNlIGlmIChlLklOVkFMSURfTk9E
RV9UWVBFX0VSUiAhPSAyKQorICAgICAgICAgIG1zZyA9ICdSYW5nZUV4Y2VwdGlvbiBoYXMgbm8g
SU5WQUxJRF9OT0RFX1RZUEVfRVJSJzsKKyAgICAgICAgZWxzZSBpZiAoIklOVkFMSURfQUNDRVNT
X0VSUiIgaW4gZSkKKyAgICAgICAgICBtc2cgPSAnUmFuZ2VFeGNlcHRpb24gaGFzIERPTUV4Y2Vw
dGlvbiBjb25zdGFudHMnOworICAgICAgICBlbHNlIGlmIChlLmNvZGUgIT0gZS5JTlZBTElEX05P
REVfVFlQRV9FUlIpCisgICAgICAgICAgbXNnID0gJ3dyb25nIGV4Y2VwdGlvbiByYWlzZWQgZnJv
bSBzZXRFbmRCZWZvcmUoKSc7CisgICAgICB9CisgICAgICBhc3NlcnQobXNnID09ICIiLCBtc2cp
OworICAgICAgYXNzZXJ0KCFyLmNvbGxhcHNlZCwgInNldEVuZEJlZm9yZSgpIGNvbGxhcHNlZCB0
aGUgcmFuZ2UiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCByb290LCAi
c3RhcnRDb250YWluZXIgaXMgd3JvbmcgYWZ0ZXIgc2V0RW5kQmVmb3JlKCkiKTsKKyAgICAgIGFz
c2VydEVxdWFscyhyLnN0YXJ0T2Zmc2V0LCAyLCAic3RhcnRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIg
c2V0RW5kQmVmb3JlKCkiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLmVuZENvbnRhaW5lciwgZG9j
LCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNldEVuZEJlZm9yZSgpIik7CisgICAgICBh
c3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEsICJlbmRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgc2V0
RW5kQmVmb3JlKCkiKTsKKyAgICAgIHIuY29sbGFwc2UoZmFsc2UpOworICAgICAgYXNzZXJ0KHIu
Y29sbGFwc2VkLCAiY29sbGFwc2UoKSBjb2xsYXBzZWQgdGhlIHJhbmdlIik7CisgICAgICBhc3Nl
cnRFcXVhbHMoci5zdGFydENvbnRhaW5lciwgZG9jLCAic3RhcnRDb250YWluZXIgaXMgd3Jvbmcg
YWZ0ZXIgY29sbGFwc2UoKSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDEs
ICJzdGFydE9mZnNldCBpcyB3cm9uZyBhZnRlciBjb2xsYXBzZSgpIik7CisgICAgICBhc3NlcnRF
cXVhbHMoci5lbmRDb250YWluZXIsIGRvYywgImVuZENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBj
b2xsYXBzZSgpIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEsICJlbmRPZmZz
ZXQgaXMgd3JvbmcgYWZ0ZXIgY29sbGFwc2UoKSIpOworICAgICAgci5zZWxlY3ROb2RlQ29udGVu
dHMocm9vdCk7CisgICAgICBhc3NlcnQoIXIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25n
IGFmdGVyIHNlbGVjdE5vZGVDb250ZW50cygpIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFy
dENvbnRhaW5lciwgcm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVyIHNlbGVjdE5v
ZGVDb250ZW50cygpIik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9mZnNldCwgMCwgInN0
YXJ0T2Zmc2V0IGlzIHdyb25nIGFmdGVyIHNlbGVjdE5vZGVDb250ZW50cygpIik7CisgICAgICBh
c3NlcnRFcXVhbHMoci5lbmRDb250YWluZXIsIHJvb3QsICJlbmRDb250YWluZXIgaXMgd3Jvbmcg
YWZ0ZXIgc2VsZWN0Tm9kZUNvbnRlbnRzKCkiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9m
ZnNldCwgMywgImVuZE9mZnNldCBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlQ29udGVudHMoKSIp
OworICAgICAgci5zZWxlY3ROb2RlKGUyKTsKKyAgICAgIGFzc2VydCghci5jb2xsYXBzZWQsICJj
b2xsYXBzZWQgaXMgd3JvbmcgYWZ0ZXIgc2VsZWN0Tm9kZSgpIik7CisgICAgICBhc3NlcnRFcXVh
bHMoci5zdGFydENvbnRhaW5lciwgcm9vdCwgInN0YXJ0Q29udGFpbmVyIGlzIHdyb25nIGFmdGVy
IHNlbGVjdE5vZGUoKSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRPZmZzZXQsIDEsICJz
dGFydE9mZnNldCBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlKCkiKTsKKyAgICAgIGFzc2VydEVx
dWFscyhyLmVuZENvbnRhaW5lciwgcm9vdCwgImVuZENvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBz
ZWxlY3ROb2RlKCkiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMiwgImVuZE9m
ZnNldCBpcyB3cm9uZyBhZnRlciBzZWxlY3ROb2RlKCkiKTsKKyAgICAgIHJldHVybiAxOworICAg
IH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA5OiBleHRyYWN0Q29udGVudHMo
KSBpbiBhIERvY3VtZW50CisgICAgICB2YXIgZG9jID0gZ2V0VGVzdERvY3VtZW50KCk7CisgICAg
ICB2YXIgaDEgPSBkb2MuY3JlYXRlRWxlbWVudCgnaDEnKTsKKyAgICAgIHZhciB0MSA9IGRvYy5j
cmVhdGVUZXh0Tm9kZSgnSGVsbG8gJyk7CisgICAgICBoMS5hcHBlbmRDaGlsZCh0MSk7CisgICAg
ICB2YXIgZW0gPSBkb2MuY3JlYXRlRWxlbWVudCgnZW0nKTsKKyAgICAgIHZhciB0MiA9IGRvYy5j
cmVhdGVUZXh0Tm9kZSgnV29uZGVyZnVsJyk7CisgICAgICBlbS5hcHBlbmRDaGlsZCh0Mik7Cisg
ICAgICBoMS5hcHBlbmRDaGlsZChlbSk7CisgICAgICB2YXIgdDMgPSBkb2MuY3JlYXRlVGV4dE5v
ZGUoJyBLaXR0eScpOworICAgICAgaDEuYXBwZW5kQ2hpbGQodDMpOworICAgICAgZG9jLmJvZHku
YXBwZW5kQ2hpbGQoaDEpOworICAgICAgdmFyIHAgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOwor
ICAgICAgdmFyIHQ0ID0gZG9jLmNyZWF0ZVRleHROb2RlKCdIb3cgYXJlIHlvdT8nKTsKKyAgICAg
IHAuYXBwZW5kQ2hpbGQodDQpOworICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7CisgICAg
ICB2YXIgciA9IGRvYy5jcmVhdGVSYW5nZSgpOworICAgICAgci5zZWxlY3ROb2RlQ29udGVudHMo
ZG9jKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLnRvU3RyaW5nKCksICJIZWxsbyBXb25kZXJmdWwg
S2l0dHlIb3cgYXJlIHlvdT8iLCAidG9TdHJpbmcoKSBvbiByYW5nZSBzZWxlY3RpbmcgRG9jdW1l
bnQgZ2F2ZSB3cm9uZyBvdXRwdXQiKTsKKyAgICAgIHIuc2V0U3RhcnQodDIsIDYpOworICAgICAg
ci5zZXRFbmQocCwgMCk7CisgICAgICAvLyA8Ym9keT48aDE+SGVsbG8gPGVtPldvbmRlciBmdWw8
XGVtPiBLaXR0eTxcaDE+PHA+IEhvdyBhcmUgeW91PzxccD48XGJvZHk+ICAgICAodGhlICdcJ3Mg
YXJlIHRvIGF2b2lkIHZhbGlkYXRpb24gZXJyb3JzKQorICAgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICBeLS0tLS0tLS0tLS0tLS0tLS0tLS0tLV4KKyAgICAgIGFzc2VydEVxdWFscyhy
LnRvU3RyaW5nKCksICJmdWwgS2l0dHkiLCAidG9TdHJpbmcoKSBvbiByYW5nZSBjcm9zc2luZyB0
ZXh0IG5vZGVzIGdhdmUgd3Jvbmcgb3V0cHV0Iik7CisgICAgICB2YXIgZiA9IHIuZXh0cmFjdENv
bnRlbnRzKCk7CisgICAgICAvLyA8aDE+PGVtPmZ1bDxcZW0+IEtpdHR5PFxoMT48cD48XHA+Cisg
ICAgICAvLyBjY2NjY2NjY2NjY2NjY2NjTU1NTU1NY2NjY2NjY2NjY2NjCisgICAgICBhc3NlcnRF
cXVhbHMoZi5ub2RlVHlwZSwgMTEsICJmYWlsdXJlIDEiKTsKKyAgICAgIGFzc2VydChmLmNoaWxk
Tm9kZXMubGVuZ3RoID09IDIsICJleHBlY3RlZCB0d28gY2hpbGRyZW4gaW4gdGhlIHJlc3VsdCwg
Z290ICIgKyBmLmNoaWxkTm9kZXMubGVuZ3RoKTsKKyAgICAgIGFzc2VydEVxdWFscyhmLmNoaWxk
Tm9kZXNbMF0udGFnTmFtZSwgIkgxIiwgImZhaWx1cmUgMyIpOworICAgICAgYXNzZXJ0KGYuY2hp
bGROb2Rlc1swXSAhPSBoMSwgImZhaWx1cmUgNCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hp
bGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgImZhaWx1cmUgNSIpOworICAgICAgYXNz
ZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdLnRhZ05hbWUsICJFTSIsICJm
YWlsdXJlIDYiKTsKKyAgICAgIGFzc2VydChmLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXSAh
PSBlbSwgImZhaWx1cmUgNyIpOworICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1swXS5j
aGlsZE5vZGVzWzBdLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAiZmFpbHVyZSA4Iik7CisgICAgICBh
c3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5k
YXRhLCAiZnVsIiwgImZhaWx1cmUgOSIpOworICAgICAgYXNzZXJ0KGYuY2hpbGROb2Rlc1swXS5j
aGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0gIT0gdDIsICJmYWlsdXJlIDEwIik7CisgICAgICBh
c3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMV0sIHQzLCAiZmFpbHVyZSAx
MSIpOworICAgICAgYXNzZXJ0KGYuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdICE9IGVtLCAi
ZmFpbHVyZSAxMiIpOworICAgICAgYXNzZXJ0RXF1YWxzKGYuY2hpbGROb2Rlc1sxXS50YWdOYW1l
LCAiUCIsICJmYWlsdXJlIDEzIik7CisgICAgICBhc3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzFd
LmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAiZmFpbHVyZSAxNCIpOworICAgICAgYXNzZXJ0KGYuY2hp
bGROb2Rlc1sxXSAhPSBwLCAiZmFpbHVyZSAxNSIpOworICAgICAgcmV0dXJuIDE7CisgICAgfSwK
KyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDEwOiBSYW5nZXMgYW5kIEF0dHJpYnV0
ZSBOb2RlcworICAgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7
CisgICAgICBpZiAoIWUuZ2V0QXR0cmlidXRlTm9kZSkKKyAgICAgICAgcmV0dXJuIDE7IC8vIHN1
cHBvcnQgZm9yIGF0dHJpYnV0ZSBub2RlcyBpcyBvcHRpb25hbCBpbiBBY2lkMywgYmVjYXVzZSBh
dHRyaWJ1dGUgbm9kZXMgbWlnaHQgYmUgcmVtb3ZlZCBmcm9tIERPTSBDb3JlIGluIHRoZSBmdXR1
cmUuCisgICAgICAvLyBob3dldmVyLCBpZiB0aGV5J3JlIHN1cHBvcnRlZCwgdGhleSdkIGJldHRl
ciB3b3JrOgorICAgICAgdmFyIGEgPSBlLmdldEF0dHJpYnV0ZU5vZGUoJ2lkJyk7CisgICAgICB2
YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICByLnNlbGVjdE5vZGVDb250ZW50
cyhhKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLnRvU3RyaW5nKCksICJyZXN1bHQiLCAidG9TdHJp
bmcoKSBkaWRuJ3Qgd29yayBmb3IgYXR0cmlidXRlIG5vZGUiKTsKKyAgICAgIHZhciB0ID0gYS5m
aXJzdENoaWxkOworICAgICAgdmFyIGYgPSByLmV4dHJhY3RDb250ZW50cygpOworICAgICAgYXNz
ZXJ0RXF1YWxzKGYuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICJleHRyYWN0ZWQgY29udGVudHMgd2Vy
ZSB0aGUgd3JvbmcgbGVuZ3RoIik7CisgICAgICBhc3NlcnRFcXVhbHMoZi5jaGlsZE5vZGVzWzBd
LCB0LCAiZXh0cmFjdGVkIGNvbnRlbnRzIHdlcmUgdGhlIHdyb25nIG5vZGUiKTsKKyAgICAgIGFz
c2VydEVxdWFscyh0LnRleHRDb250ZW50LCAncmVzdWx0JywgImV4dHJhY3RlZCBjb250ZW50cyBk
aWRuJ3QgbWF0Y2ggb2xkIGF0dHJpYnV0ZSB2YWx1ZSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIu
dG9TdHJpbmcoKSwgJycsICJleHRyYWN0aW5nIGNvbnRlbnRzIGRpZG4ndCBlbXB0eSBhdHRyaWJ1
dGUgdmFsdWU7IGluc3RlYWQgZXF1YWxzICciICsgci50b1N0cmluZygpICsgIiciKTsKKyAgICAg
IGFzc2VydEVxdWFscyhlLmdldEF0dHJpYnV0ZSgnaWQnKSwgJycsICJleHRyYWN0aW5nIGNvbnRl
bnRzIGRpZG4ndCBjaGFuZ2UgJ2lkJyBhdHRyaWJ1dGUgdG8gZW1wdHkgc3RyaW5nIik7CisgICAg
ICBlLmlkID0gJ3Jlc3VsdCc7CisgICAgICByZXR1cm4gMTsKKyAgICB9LAorICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgIC8vIHRlc3QgMTE6IFJhbmdlcyBhbmQgQ29tbWVudHMKKyAgICAgIHZhciBt
c2c7CisgICAgICB2YXIgZG9jID0gZ2V0VGVzdERvY3VtZW50KCk7CisgICAgICB2YXIgYzEgPSBk
b2MuY3JlYXRlQ29tbWVudCgiMTExMTEiKTsKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChjMSk7Cisg
ICAgICB2YXIgciA9IGRvYy5jcmVhdGVSYW5nZSgpOworICAgICAgci5zZWxlY3ROb2RlKGMxKTsK
KyAgICAgIG1zZyA9ICd3cm9uZyBleGNlcHRpb24gcmFpc2VkJzsKKyAgICAgIHRyeSB7CisgICAg
ICAgIHIuc3Vycm91bmRDb250ZW50cyhkb2MuY3JlYXRlRWxlbWVudCgnYScpKTsKKyAgICAgICAg
bXNnID0gJ25vIGV4Y2VwdGlvbiByYWlzZWQnOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBpZiAoJ2NvZGUnIGluIGUpCisgICAgICAgICAgbXNnICs9ICc7IGNvZGUgPSAnICsgZS5jb2Rl
OworICAgICAgICBpZiAoZS5jb2RlID09IDMpCisgICAgICAgICAgbXNnID0gJyc7CisgICAgICB9
CisgICAgICBhc3NlcnQobXNnID09ICcnLCAid2hlbiBpbnNlcnRpbmcgPGE+IGludG8gRG9jdW1l
bnQgd2l0aCBhbm90aGVyIGNoaWxkOiAiICsgbXNnKTsKKyAgICAgIHZhciBjMiA9IGRvYy5jcmVh
dGVDb21tZW50KCIyMjIyMiIpOworICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoYzIpOworICAg
ICAgdmFyIGMzID0gZG9jLmNyZWF0ZUNvbW1lbnQoIjMzMzMzIik7CisgICAgICBkb2MuYm9keS5h
cHBlbmRDaGlsZChjMyk7CisgICAgICByLnNldFN0YXJ0KGMyLCAyKTsKKyAgICAgIHIuc2V0RW5k
KGMzLCAzKTsKKyAgICAgIHZhciBtc2cgPSAnd3JvbmcgZXhjZXB0aW9uIHJhaXNlZCc7CisgICAg
ICB0cnkgeworICAgICAgICByLnN1cnJvdW5kQ29udGVudHMoZG9jLmNyZWF0ZUVsZW1lbnQoJ2En
KSk7CisgICAgICAgIG1zZyA9ICdubyBleGNlcHRpb24gcmFpc2VkJzsKKyAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaWYgKCdjb2RlJyBpbiBlKQorICAgICAgICAgIG1zZyArPSAnOyBjb2Rl
ID0gJyArIGUuY29kZTsKKyAgICAgICAgaWYgKGUuY29kZSA9PSAxKQorICAgICAgICAgIG1zZyA9
ICcnOworICAgICAgfQorICAgICAgYXNzZXJ0KG1zZyA9PSAnJywgIndoZW4gdHJ5aW5nIHRvIHN1
cnJvdW5kIHR3byBoYWx2ZXMgb2YgY29tbWVudDogIiArIG1zZyk7CisgICAgICBhc3NlcnRFcXVh
bHMoci50b1N0cmluZygpLCAiIiwgImNvbW1lbnRzIHJldHVybmVkIHRleHQiKTsKKyAgICAgIHJl
dHVybiAxOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAxMjogUmFu
Z2VzIHVuZGVyIG11dGF0aW9uczogaW5zZXJ0aW9uIGludG8gdGV4dCBub2RlcworICAgICAgdmFy
IGRvYyA9IGdldFRlc3REb2N1bWVudCgpOworICAgICAgdmFyIHAgPSBkb2MuY3JlYXRlRWxlbWVu
dCgncCcpOworICAgICAgdmFyIHQxID0gZG9jLmNyZWF0ZVRleHROb2RlKCcxMjM0NScpOworICAg
ICAgcC5hcHBlbmRDaGlsZCh0MSk7CisgICAgICB2YXIgdDIgPSBkb2MuY3JlYXRlVGV4dE5vZGUo
J0FCQ0RFJyk7CisgICAgICBwLmFwcGVuZENoaWxkKHQyKTsKKyAgICAgIGRvYy5ib2R5LmFwcGVu
ZENoaWxkKHApOworICAgICAgdmFyIHIgPSBkb2MuY3JlYXRlUmFuZ2UoKTsKKyAgICAgIHIuc2V0
U3RhcnQocC5maXJzdENoaWxkLCAyKTsKKyAgICAgIHIuc2V0RW5kKHAuZmlyc3RDaGlsZCwgMyk7
CisgICAgICBhc3NlcnQoIXIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGF0IHN0YXJ0
Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5jb21tb25BbmNlc3RvckNvbnRhaW5lciwgcC5maXJz
dENoaWxkLCAiY29tbW9uQW5jZXN0b3JDb250YWluZXIgaXMgd3JvbmcgYXQgc3RhcnQiKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhyLnN0YXJ0Q29udGFpbmVyLCBwLmZpcnN0Q2hpbGQsICJzdGFydENv
bnRhaW5lciBpcyB3cm9uZyBhdCBzdGFydCIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRP
ZmZzZXQsIDIsICJzdGFydE9mZnNldCBpcyB3cm9uZyBhdCBzdGFydCIpOworICAgICAgYXNzZXJ0
RXF1YWxzKHIuZW5kQ29udGFpbmVyLCBwLmZpcnN0Q2hpbGQsICJlbmRDb250YWluZXIgaXMgd3Jv
bmcgYXQgc3RhcnQiKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNldCwgMywgImVuZE9m
ZnNldCBpcyB3cm9uZyBhdCBzdGFydCIpOworICAgICAgYXNzZXJ0RXF1YWxzKHIudG9TdHJpbmco
KSwgIjMiLCAicmFuZ2UgaW4gdGV4dCBub2RlIHN0cmluZ2lmaWNhdGlvbiBmYWlsZWQiKTsKKyAg
ICAgIHIuaW5zZXJ0Tm9kZShwLmxhc3RDaGlsZCk7CisgICAgICBhc3NlcnRFcXVhbHMocC5jaGls
ZE5vZGVzLmxlbmd0aCwgMywgImluc2VydGlvbiBvZiBub2RlIG1hZGUgd3JvbmcgbnVtYmVyIG9m
IGNoaWxkIG5vZGVzIik7CisgICAgICBhc3NlcnRFcXVhbHMocC5jaGlsZE5vZGVzWzBdLCB0MSwg
InVuZXhwZWN0ZWQgZmlyc3QgdGV4dCBub2RlIik7CisgICAgICBhc3NlcnRFcXVhbHMocC5jaGls
ZE5vZGVzWzBdLmRhdGEsICIxMiIsICJ1bmV4cGVjdGVkIGZpcnN0IHRleHQgbm9kZSBjb250ZW50
cyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHAuY2hpbGROb2Rlc1sxXSwgdDIsICJ1bmV4cGVjdGVk
IHNlY29uZCB0ZXh0IG5vZGUiKTsKKyAgICAgIGFzc2VydEVxdWFscyhwLmNoaWxkTm9kZXNbMV0u
ZGF0YSwgIkFCQ0RFIiwgInVuZXhwZWN0ZWQgc2Vjb25kIHRleHQgbm9kZSIpOworICAgICAgYXNz
ZXJ0RXF1YWxzKHAuY2hpbGROb2Rlc1syXS5kYXRhLCAiMzQ1IiwgInVuZXhwZWN0ZWQgdGhpcmQg
dGV4dCBub2RlIGNvbnRlbnRzIik7CisgICAgICAvLyBUaGUgc3BlYyBpcyB2ZXJ5IHZhZ3VlIGFi
b3V0IHdoYXQgZXhhY3RseSBzaG91bGQgYmUgaW4gdGhlIHJhbmdlIGFmdGVyd2FyZHM6CisgICAg
ICAvLyB0aGUgaW5zZXJ0aW9uIHJlc3VsdHMgaW4gYSBzcGxpdFRleHQoKSwgd2hpY2ggaXQgc2F5
cyBpcyBlcXVpdmFsZW50IHRvIGEgdHJ1bmNhdGlvbgorICAgICAgLy8gZm9sbG93ZWQgYnkgYW4g
aW5zZXJ0aW9uLCBidXQgaXQgZG9lc24ndCBzYXkgd2hhdCB0byBkbyB3aGVuIHlvdSBoYXZlIGEg
dHJ1bmNhdGlvbiwKKyAgICAgIC8vIHNvIHdlIGRvbid0IGtub3cgd2hlcmUgZWl0aGVyIHRoZSBz
dGFydCBvciB0aGUgZW5kIGJvdW5kYXJ5IHBvaW50cyBlbmQgdXAuCisgICAgICAvLyBUaGUgc3Bl
YyByZWFsbHkgc2hvdWxkIGJlIGNsYXJpZmllZCBmb3IgaG93IHRvIGhhbmRsZSBzcGxpdFRleHQo
KSBhbmQKKyAgICAgIC8vIHRleHQgbm9kZSB0cnVuY2F0aW9uIGluIGdlbmVyYWwKKyAgICAgIC8v
IFRoZSBvbmx5IHRoaW5nIHRoYXQgc2VlbXMgdmVyeSBjbGVhciBpcyB0aGF0IHRoZSBpbnNlcnRl
ZCB0ZXh0IG5vZGUgc2hvdWxkCisgICAgICAvLyBiZSBpbiB0aGUgcmFuZ2UsIGFuZCBpdCBoYXMg
dG8gYmUgYXQgdGhlIHN0YXJ0LCBzaW5jZSBpbnNlcnRpb24gYWx3YXlzIHB1dHMgaXQgYXQKKyAg
ICAgIC8vIHRoZSBzdGFydC4KKyAgICAgIGFzc2VydCghci5jb2xsYXBzZWQsICJjb2xsYXBzZWQg
aXMgd3JvbmcgYWZ0ZXIgaW5zZXJ0aW9uIik7CisgICAgICBhc3NlcnQoci50b1N0cmluZygpLm1h
dGNoKC9eQUJDREUvKSwgInJhbmdlIGRpZG4ndCBzdGFydCB3aXRoIHRoZSBleHBlY3RlZCB0ZXh0
OyByYW5nZSBzdHJpbmdpZmllZCB0byAnIiArIHIudG9TdHJpbmcoKSArICInIik7CisgICAgICBy
ZXR1cm4gMTsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMTM6IFJh
bmdlcyB1bmRlciBtdXRhdGlvbnM6IGRlbGV0aW9uCisgICAgICB2YXIgZG9jID0gZ2V0VGVzdERv
Y3VtZW50KCk7CisgICAgICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICBw
LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiMTIzNDUiKSk7CisgICAgICBkb2MuYm9k
eS5hcHBlbmRDaGlsZChwKTsKKyAgICAgIHZhciByID0gZG9jLmNyZWF0ZVJhbmdlKCk7CisgICAg
ICByLnNldEVuZChkb2MuYm9keSwgMSk7CisgICAgICByLnNldFN0YXJ0KHAuZmlyc3RDaGlsZCwg
Mik7CisgICAgICBhc3NlcnQoIXIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGF0IHN0
YXJ0Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5jb21tb25BbmNlc3RvckNvbnRhaW5lciwgZG9j
LmJvZHksICJjb21tb25BbmNlc3RvckNvbnRhaW5lciBpcyB3cm9uZyBhdCBzdGFydCIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRDb250YWluZXIsIHAuZmlyc3RDaGlsZCwgInN0YXJ0Q29u
dGFpbmVyIGlzIHdyb25nIGF0IHN0YXJ0Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5zdGFydE9m
ZnNldCwgMiwgInN0YXJ0T2Zmc2V0IGlzIHdyb25nIGF0IHN0YXJ0Iik7CisgICAgICBhc3NlcnRF
cXVhbHMoci5lbmRDb250YWluZXIsIGRvYy5ib2R5LCAiZW5kQ29udGFpbmVyIGlzIHdyb25nIGF0
IHN0YXJ0Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5lbmRPZmZzZXQsIDEsICJlbmRPZmZzZXQg
aXMgd3JvbmcgYXQgc3RhcnQiKTsKKyAgICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxkKHApOworICAg
ICAgYXNzZXJ0KHIuY29sbGFwc2VkLCAiY29sbGFwc2VkIGlzIHdyb25nIGFmdGVyIGRlbGV0aW9u
Iik7CisgICAgICBhc3NlcnRFcXVhbHMoci5jb21tb25BbmNlc3RvckNvbnRhaW5lciwgZG9jLmJv
ZHksICJjb21tb25BbmNlc3RvckNvbnRhaW5lciBpcyB3cm9uZyBhZnRlciBkZWxldGlvbiIpOwor
ICAgICAgYXNzZXJ0RXF1YWxzKHIuc3RhcnRDb250YWluZXIsIGRvYy5ib2R5LCAic3RhcnRDb250
YWluZXIgaXMgd3JvbmcgYWZ0ZXIgZGVsZXRpb24iKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLnN0
YXJ0T2Zmc2V0LCAwLCAic3RhcnRPZmZzZXQgaXMgd3JvbmcgYWZ0ZXIgZGVsZXRpb24iKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhyLmVuZENvbnRhaW5lciwgZG9jLmJvZHksICJlbmRDb250YWluZXIg
aXMgd3JvbmcgYWZ0ZXIgZGVsZXRpb24iKTsKKyAgICAgIGFzc2VydEVxdWFscyhyLmVuZE9mZnNl
dCwgMCwgImVuZE9mZnNldCBpcyB3cm9uZyBhZnRlciBkZWxldGlvbiIpOworICAgICAgcmV0dXJu
IDE7CisgICAgfSwKKworICAgIC8vIEhUVFAKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0
ZXN0IDE0OiBIVFRQIC0gQ29udGVudC1UeXBlOiBpbWFnZS9wbmcKKyAgICAgIGFzc2VydCghbm90
aWZpY2F0aW9uc1snZW1wdHkucG5nJ10sICJwcml2aWxlZ2UgZXNjYWxhdGlvbiBzZWN1cml0eSBi
dWc6IFBORyByYW4gc2NyaXB0Iik7CisgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdOworICAgICAgYXNzZXJ0KGlmcmFtZSwgIm5vIDxp
ZnJhbWU+IHN1cHBvcnQiKTsKKyAgICAgIGlmIChpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICB2YXIgcHMgPSBpZnJhbWUuY29udGVudERvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdwJyk7CisgICAgICAgIGlmIChwcy5sZW5ndGggPiAwKSB7CisgICAgICAg
ICAgaWYgKHBzWzBdLmZpcnN0Q2hpbGQgJiYgcHNbMF0uZmlyc3RDaGlsZC5kYXRhICYmIHBzWzBd
LmZpcnN0Q2hpbGQuZGF0YSA9PSAnRkFJTCcpCisgICAgICAgICAgICBmYWlsKCJQTkcgd2FzIHBh
cnNlZCBhcyBIVE1MLiIpOworICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gMTsKKyAg
ICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMTU6IEhUVFAgLSBDb250ZW50
LVR5cGU6IHRleHQvcGxhaW4KKyAgICAgIGFzc2VydCghbm90aWZpY2F0aW9uc1snZW1wdHkudHh0
J10sICJwcml2aWxlZ2UgZXNjYWxhdGlvbiBzZWN1cml0eSBidWc6IHRleHQgZmlsZSByYW4gc2Ny
aXB0Iik7CisgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2lmcmFtZScpWzFdOworICAgICAgYXNzZXJ0KGlmcmFtZSwgIm5vIDxpZnJhbWU+IHN1cHBvcnQi
KTsKKyAgICAgIGlmIChpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnREb2N1bWVudCkgeworICAgICAg
ICB2YXIgcHMgPSBpZnJhbWUuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdw
Jyk7CisgICAgICAgIGlmIChwcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgaWYgKHBzWzBdLmZp
cnN0Q2hpbGQgJiYgcHNbMF0uZmlyc3RDaGlsZC5kYXRhICYmIHBzWzBdLmZpcnN0Q2hpbGQuZGF0
YSA9PSAnRkFJTCcpCisgICAgICAgICAgICBmYWlsKCJ0ZXh0L3BsYWluIGZpbGUgd2FzIHBhcnNl
ZCBhcyBIVE1MIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIH0s
CisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAxNjogPG9iamVjdD4gaGFuZGxpbmcg
YW5kIEhUVFAgc3RhdHVzIGNvZGVzCisgICAgICB2YXIgb0MgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdvYmplY3QnKTsKKyAgICAgIG9DLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJGQUlMIikpOworICAgICAgdmFyIG9CID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2Jq
ZWN0Jyk7CisgICAgICB2YXIgb0EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3QnKTsK
KyAgICAgIG9BLmRhdGEgPSAic3VwcG9ydC1hLnBuZyI7CisgICAgICBvQi5kYXRhID0gInN1cHBv
cnQtYi5wbmciOworICAgICAgb0IuYXBwZW5kQ2hpbGQob0MpOworICAgICAgb0MuZGF0YSA9ICJz
dXBwb3J0LWMucG5nIjsKKyAgICAgIG9BLmFwcGVuZENoaWxkKG9CKTsKKyAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtYXAiKVswXS5hcHBlbmRDaGlsZChvQSk7CisgICAgICAv
LyBhc3N1bWluZyB0aGUgYWJvdmUgZGlkbid0IHJhaXNlIGFueSBleGNlcHRpb25zLCB0aGlzIHRl
c3QgaGFzIHBhc3NlZAorICAgICAgLy8gKHRoZSByZWFsIHRlc3QgaXMgd2hldGhlciB0aGUgcmVu
ZGVyaW5nIGlzIGNvcnJlY3QpCisgICAgICByZXR1cm4gMTsKKyAgICB9LAorCisgICAgLy8gYnVj
a2V0IDI6IERPTTIgQ29yZSBhbmQgRE9NMiBFdmVudHMKKyAgICAvLyBDb3JlCisgICAgZnVuY3Rp
b24gKCkgeworICAgICAgLy8gdGVzdCAxNzogaGFzQXR0cmlidXRlCisgICAgICAvLyBtaXNzaW5n
IGF0dHJpYnV0ZQorICAgICAgYXNzZXJ0KCFkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
bWFwJylbMF0uaGFzQXR0cmlidXRlKCdpZCcpLCAiaGFzQXR0cmlidXRlIGZhaWx1cmUgZm9yICdp
ZCcgb24gbWFwIik7CisgICAgICAvLyBpbXBsaWVkIGF0dHJpYnV0ZQorICAgICAgYXNzZXJ0KCFk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzBdLmhhc0F0dHJpYnV0ZSgnbWV0
aG9kJyksICJoYXNBdHRyaWJ1dGUgZmFpbHVyZSBmb3IgJ21ldGhvZCcgb24gZm9ybSIpOworICAg
ICAgLy8gYWN0dWFsbHkgcHJlc2VudCBhdHRyaWJ1dGUKKyAgICAgIGFzc2VydChkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzBdLmhhc0F0dHJpYnV0ZSgnYWN0aW9uJyksICJo
YXNBdHRyaWJ1dGUgZmFpbHVyZSBmb3IgJ2FjdGlvbicgb24gZm9ybSIpOworICAgICAgYXNzZXJ0
RXF1YWxzKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJylbMF0uZ2V0QXR0cmli
dXRlKCdhY3Rpb24nKSwgJycsICJhdHRyaWJ1dGUgJ2FjdGlvbicgb24gZm9ybSBoYXMgd3Jvbmcg
dmFsdWUiKTsKKyAgICAgIHJldHVybiAyOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgLy8gdGVzdCAxODogbm9kZVR5cGUgKHRoaXMgdGVzdCBhbHNvIHJlbGllcyBvbiBhY2N1cmF0
ZSBwYXJzaW5nIG9mIHRoZSBkb2N1bWVudCkKKyAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5u
b2RlVHlwZSwgOSwgImRvY3VtZW50IG5vZGVUeXBlIHdyb25nIik7CisgICAgICBhc3NlcnRFcXVh
bHMoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm5vZGVUeXBlLCAxLCAiZWxlbWVudCBub2RlVHlw
ZSB3cm9uZyIpOworICAgICAgaWYgKGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSkgLy8gc3VwcG9y
dCBmb3IgYXR0cmlidXRlIG5vZGVzIGlzIG9wdGlvbmFsIGluIEFjaWQzLCBiZWNhdXNlIGF0dHJp
YnV0ZSBub2RlcyBtaWdodCBiZSByZW1vdmVkIGZyb20gRE9NIENvcmUgaW4gdGhlIGZ1dHVyZS4K
KyAgICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgndGVzdCcpLm5v
ZGVUeXBlLCAyLCAiYXR0cmlidXRlIG5vZGVUeXBlIHdyb25nIik7IC8vIGhvd2V2ZXIsIGlmIHRo
ZXkncmUgc3VwcG9ydGVkLCB0aGV5J2QgYmV0dGVyIHdvcmsKKyAgICAgIGFzc2VydEVxdWFscyhk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKS5maXJzdENoaWxkLm5vZGVUeXBlLCAzLCAi
dGV4dCBub2RlIG5vZGVUeXBlIHdyb25nIik7CisgICAgICBhc3NlcnRFcXVhbHMoZG9jdW1lbnQu
Zmlyc3RDaGlsZC5ub2RlVHlwZSwgMTAsICJET0NUWVBFIG5vZGVUeXBlIHdyb25nIik7CisgICAg
ICByZXR1cm4gMjsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMTk6
IHZhbHVlIG9mIGNvbnN0YW50cworICAgICAgdmFyIGUgPSBudWxsOworICAgICAgdHJ5IHsKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQp
OworICAgICAgICAgLy8gcmFpc2VzIGEgSElFUkFSQ0hZX1JFUVVFU1RfRVJSCisgICAgICB9IGNh
dGNoIChlcnIpIHsKKyAgICAgICAgZSA9IGVycjsKKyAgICAgIH0KKyAgICAgIGFzc2VydEVxdWFs
cyhkb2N1bWVudC5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFLCAxMSwgImRvY3VtZW50IERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUgY29uc3RhbnQgbWlzc2luZyBvciB3cm9uZyIpOworICAgICAgYXNzZXJ0
RXF1YWxzKGRvY3VtZW50LmJvZHkuQ09NTUVOVF9OT0RFLCA4LCAiZWxlbWVudCBDT01NRU5UX05P
REUgY29uc3RhbnQgbWlzc2luZyBvciB3cm9uZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCcnKS5FTEVNRU5UX05PREUsIDEsICJ0ZXh0IG5vZGUgRUxFTUVO
VF9OT0RFIGNvbnN0YW50IG1pc3Npbmcgb3Igd3JvbmciKTsKKyAgICAgIGFzc2VydChlLkhJRVJB
UkNIWV9SRVFVRVNUX0VSUiA9PSAzLCAiZXhjZXB0aW9uIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiBj
b25zdGFudCBtaXNzaW5nIG9yIHdyb25nIikKKyAgICAgIGFzc2VydEVxdWFscyhlLmNvZGUsIDMs
ICJpbmNvcnJlY3QgZXhjZXB0aW9uIHJhaXNlZCBmcm9tIGFwcGVuZENoaWxkKCkiKTsKKyAgICAg
IHJldHVybiAyOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAyMDog
bnVsbHMgYnl0ZXMgaW4gdmFyaW91cyBwbGFjZXMKKyAgICAgIGFzc2VydCghZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2J1Y2tldDFcMGVycm9yJyksICJudWxsIGluIGdldEVsZW1lbnRCeUlkKCkg
cHJvYmFibHkgdGVybWluYXRlZCBzdHJpbmciKTsKKyAgICAgIHZhciBvayA9IHRydWU7CisgICAg
ICB0cnkgeworICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtXDBkaXYnKTsKKyAg
ICAgICAgb2sgPSBmYWxzZTsKKyAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUuY29k
ZSAhPSA1KQorICAgICAgICAgIG9rID0gZmFsc2U7CisgICAgICB9CisgICAgICBhc3NlcnQob2ss
ICJkaWRuJ3QgcmFpc2UgdGhlIHJpZ2h0IGV4Y2VwdGlvbiBmb3IgbnVsbCBieXRlIGluIGNyZWF0
ZUVsZW1lbnQoKSIpOworICAgICAgcmV0dXJuIDI7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAvLyB0ZXN0IDIxOiBiYXNpYyBuYW1lc3BhY2Ugc3R1ZmYKKyAgICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vbnMuZXhhbXBsZS5jb20vJywg
J3ByZWZpeDpsb2NhbG5hbWUnKTsKKyAgICAgIGFzc2VydEVxdWFscyhlbGVtZW50LnRhZ05hbWUs
ICdwcmVmaXg6bG9jYWxuYW1lJywgIndyb25nIHRhZ05hbWUiKTsKKyAgICAgIGFzc2VydEVxdWFs
cyhlbGVtZW50Lm5vZGVOYW1lLCAncHJlZml4OmxvY2FsbmFtZScsICJ3cm9uZyBub2RlTmFtZSIp
OworICAgICAgYXNzZXJ0RXF1YWxzKGVsZW1lbnQucHJlZml4LCAncHJlZml4JywgIndyb25nIHBy
ZWZpeCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGVsZW1lbnQubG9jYWxOYW1lLCAnbG9jYWxuYW1l
JywgIndyb25nIGxvY2FsTmFtZSIpOworICAgICAgYXNzZXJ0RXF1YWxzKGVsZW1lbnQubmFtZXNw
YWNlVVJJLCAnaHR0cDovL25zLmV4YW1wbGUuY29tLycsICJ3cm9uZyBuYW1lc3BhY2VVUkkiKTsK
KyAgICAgIHJldHVybiAyOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVz
dCAyMjogY3JlYXRlRWxlbWVudCgpIHdpdGggaW52YWxpZCB0YWcgbmFtZXMKKyAgICAgIHZhciB0
ZXN0ID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgIHJlc3VsdCA9IGU7CisgICAgICAgIH0KKyAg
ICAgICAgYXNzZXJ0KHJlc3VsdCwgIm5vIGV4Y2VwdGlvbiBmb3IgY3JlYXRlRWxlbWVudCgnIiAr
IG5hbWUgKyAiJykiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdC5jb2RlLCA1LCAid3Jv
bmcgZXhjZXB0aW9uIGZvciBjcmVhdGVFbGVtZW50KCciICsgbmFtZSArICInKSIpOyAvLyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKKyAgICAgIH0KKyAgICAgIHRlc3QoJzxkaXY+Jyk7CisgICAgICB0
ZXN0KCcwZGl2Jyk7CisgICAgICB0ZXN0KCdkaSB2Jyk7CisgICAgICB0ZXN0KCdkaTx2Jyk7Cisg
ICAgICB0ZXN0KCctZGl2Jyk7CisgICAgICB0ZXN0KCcuZGl2Jyk7CisgICAgICByZXR1cm4gMjsK
KyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMjM6IGNyZWF0ZUVsZW1l
bnROUygpIHdpdGggaW52YWxpZCB0YWcgbmFtZXMKKyAgICAgIHZhciB0ZXN0ID0gZnVuY3Rpb24g
KG5hbWUsIG5zLCBjb2RlKSB7CisgICAgICAgIHZhciByZXN1bHQ7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgbmFtZSk7Cisg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICByZXN1bHQgPSBlOworICAgICAgICB9Cisg
ICAgICAgIGFzc2VydChyZXN1bHQsICJubyBleGNlcHRpb24gZm9yIGNyZWF0ZUVsZW1lbnROUygn
IiArIG5zICsgIicsICciICsgbmFtZSArICInKSIpOworICAgICAgICBhc3NlcnRFcXVhbHMocmVz
dWx0LmNvZGUsIGNvZGUsICJ3cm9uZyBleGNlcHRpb24gZm9yIGNyZWF0ZUVsZW1lbnROUygnIiAr
IG5zICsgIicsICciICsgbmFtZSArICInKSIpOworICAgICAgfQorICAgICAgdGVzdCgnPGRpdj4n
LCBudWxsLCA1KTsKKyAgICAgIHRlc3QoJzBkaXYnLCBudWxsLCA1KTsKKyAgICAgIHRlc3QoJ2Rp
IHYnLCBudWxsLCA1KTsKKyAgICAgIHRlc3QoJ2RpPHYnLCBudWxsLCA1KTsKKyAgICAgIHRlc3Qo
Jy1kaXYnLCBudWxsLCA1KTsKKyAgICAgIHRlc3QoJy5kaXYnLCBudWxsLCA1KTsKKyAgICAgIHRl
c3QoJzxkaXY+JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKKyAgICAgIHRlc3QoJzBkaXYn
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOworICAgICAgdGVzdCgnZGk8dicsICJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgNSk7CisgICAgICB0ZXN0KCctZGl2JywgImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCA1KTsKKyAgICAgIHRlc3QoJy5kaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwor
ICAgICAgdGVzdCgnOmRpdicsIG51bGwsIDE0KTsKKyAgICAgIHRlc3QoJzpkaXYnLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIDE0KTsKKyAgICAgIHRlc3QoJ2Q6aXYnLCBudWxsLCAxNCk7CisgICAg
ICB0ZXN0KCd4bWw6dGVzdCcsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOworICAgICAgdGVz
dCgneG1sbnM6dGVzdCcsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOyAvLyAodGVjaG5pY2Fs
bHkgYSBET00zIENvcmUgdGVzdCkKKyAgICAgIHRlc3QoJ3g6dGVzdCcsICJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3htbG5zLyIsIDE0KTsgLy8gKHRlY2huaWNhbGx5IGEgRE9NMyBDb3JlIHRlc3Qp
CisgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
eG1sbnMvIiwgJ3htbG5zOnRlc3QnKTsgLy8gKHRlY2huaWNhbGx5IGEgRE9NMyBDb3JlIHRlc3Qp
CisgICAgICByZXR1cm4gMjsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRl
c3QgMjQ6IGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcworICAgICAgYXNzZXJ0RXF1YWxzKGRvY3Vt
ZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdvbmxvYWQnKSwgInVwZGF0ZSgpICAvKiB0aGlzIGF0dHJp
YnV0ZSdzIHZhbHVlIGlzIHRlc3RlZCBpbiBvbmUgb2YgdGhlIHRlc3RzICovICIsICJvbmxvYWQg
dmFsdWUgd3JvbmciKTsKKyAgICAgIHJldHVybiAyOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkg
eworICAgICAgLy8gdGVzdCAyNTogdGVzdCBuYW1lc3BhY2UgY2hlY2tpbmcgaW4gY3JlYXRlRG9j
dW1lbnRUeXBlLCBhbmQKKyAgICAgIC8vIGNoZWNrIHRoYXQgZXhjZXB0aW9ucyB0aGF0IGFyZSB0
aHJvd24gYXJlIERPTUV4Y2VwdGlvbiBvYmplY3RzCisgICAgICB2YXIgbWVzc2FnZSA9ICIiOwor
ICAgICAgdHJ5IHsKKyAgICAgICAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1l
bnRUeXBlKCdhOicsICcnLCAnJyk7IC8qIGRvZXNuJ3QgY29udGFpbiBhbiBpbGxlZ2FsIGNoYXJh
Y3RlcjsgaXMgbWFsZm9ybWVkICovCisgICAgICAgIG1lc3NhZ2UgPSAiZmFpbGVkIHRvIHJhaXNl
IGV4Y2VwdGlvbiI7CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlLmNvZGUgIT0g
ZS5OQU1FU1BBQ0VfRVJSKQorICAgICAgICAgIG1lc3NhZ2UgPSAid3JvbmcgZXhjZXB0aW9uIjsK
KyAgICAgICAgZWxzZSBpZiAoZS5JTlZBTElEX0FDQ0VTU19FUlIgIT0gMTUpCisgICAgICAgICAg
bWVzc2FnZSA9ICJleGNlcHRpb25zIGRvbid0IGhhdmUgYWxsIHRoZSBjb25zdGFudHMiOworICAg
ICAgfQorICAgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgIGZhaWwobWVzc2FnZSk7CisgICAgICBy
ZXR1cm4gMjsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMjY6IGNo
ZWNrIHRoYXQgZG9jdW1lbnQgdHJlZSBzdXJ2aXZlcyB3aGlsZSBzdGlsbCBhY2Nlc3NpYmxlCisg
ICAgICB2YXIgZDsKKyAgICAgIC8vIGUxIC0gYW4gZWxlbWVudCB0aGF0J3MgaW4gYSBkb2N1bWVu
dAorICAgICAgZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KG51bGws
IG51bGwsIG51bGwpOworICAgICAgdmFyIGUxID0gZC5jcmVhdGVFbGVtZW50KCd0ZXN0Jyk7Cisg
ICAgICBkLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgncm9vdCcpKTsKKyAgICAgIGQuZG9j
dW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGUxKTsKKyAgICAgIGFzc2VydChlMS5wYXJlbnROb2Rl
LCAiZTEgLSBwYXJlbnQgZWxlbWVudCBkb2Vzbid0IGV4aXN0Iik7CisgICAgICBhc3NlcnQoZTEu
cGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0Iik7
CisgICAgICAvLyBlMiAtIGFuIGVsZW1lbnQgdGhhdCdzIG5vdCBpbiBhIGRvY3VtZW50CisgICAg
ICBkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQobnVsbCwgbnVsbCwg
bnVsbCk7CisgICAgICB2YXIgZTIgPSBkLmNyZWF0ZUVsZW1lbnQoJ3Rlc3QnKTsKKyAgICAgIGQu
Y3JlYXRlRWxlbWVudCgncm9vdCcpLmFwcGVuZENoaWxkKGUyKTsKKyAgICAgIGFzc2VydChlMi5w
YXJlbnROb2RlLCAiZTIgLSBwYXJlbnQgZWxlbWVudCBkb2Vzbid0IGV4aXN0Iik7CisgICAgICBh
c3NlcnQoZTIucGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTIgLSBkb2N1bWVudCBkb2Vzbid0
IGV4aXN0Iik7CisgICAgICAvLyBub3cgdHJ5IHRvIGRlY291cGxlIHRoZW0KKyAgICAgIGQgPSBu
dWxsOworICAgICAga3VuZ0Z1RGVhdGhHcmlwID0gW2UxLCBlMl07CisgICAgICBhc3NlcnQoZTEu
cGFyZW50Tm9kZSwgImUxIC0gcGFyZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciBkcm9w
cGluZyByZWZlcmVuY2UgdG8gZG9jdW1lbnQiKTsKKyAgICAgIGFzc2VydChlMS5wYXJlbnROb2Rl
Lm93bmVyRG9jdW1lbnQsICJlMSAtIGRvY3VtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgZHJvcHBp
bmcgcmVmZXJlbmNlIHRvIGRvY3VtZW50Iik7CisgICAgICBhc3NlcnQoZTIucGFyZW50Tm9kZSwg
ImUyIC0gcGFyZW50IGVsZW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciBkcm9wcGluZyByZWZlcmVu
Y2UgdG8gZG9jdW1lbnQiKTsKKyAgICAgIGFzc2VydChlMi5wYXJlbnROb2RlLm93bmVyRG9jdW1l
bnQsICJlMiAtIGRvY3VtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgZHJvcHBpbmcgcmVmZXJlbmNl
IHRvIGRvY3VtZW50Iik7CisgICAgICB2YXIgbG9vcHMgPSBuZXcgRGF0ZSgpLnZhbHVlT2YoKSAq
IDVlLTkgLSA0MjUwOyAvLyBpbmNyZWFzZXMgbGluZWFybHkgb3ZlciB0aW1lCisgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxvb3BzOyBpICs9IDEpIHsKKyAgICAgICAgLy8gd2Ugd2FudCB0byBm
b3JjZSBhIEdDIGhlcmUsIHNvIHdlIHVzZSB1cCBsb3RzIG9mIG1lbW9yeQorICAgICAgICAvLyB3
ZSB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBzbmVhayBpbiBhIHBlcmYgdGVzdCB0byBtYWtlIERP
TSBhbmQgSlMgc3R1ZmYgZmFzdGVyLi4uCisgICAgICAgIGQgPSBuZXcgRGF0ZSgpOworICAgICAg
ICBkID0gbmV3IChmdW5jdGlvbiAoeCkgeyByZXR1cm4geyB0b1N0cmluZzogZnVuY3Rpb24gKCkg
eyByZXR1cm4geC50b1N0cmluZygpIH0gfSB9KShkLnZhbHVlT2YoKSk7CisgICAgICAgIGQgPSBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiaXRlcmF0aW9uICIgKyBpICsgIiBhdCAiICsgZCk7Cisg
ICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKS5hcHBlbmRDaGlsZChkKTsKKyAgICAg
ICAgZCA9IGQucGFyZW50Tm9kZTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
ZCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1Y2tldDEnKS5wYXJlbnROb2RlKTsKKyAgICAg
ICAgYXNzZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQyJykubmV4dFNpYmxpbmcu
cGFyZW50Tm9kZS5wcmV2aW91c1NpYmxpbmcuZmlyc3RDaGlsZC5kYXRhLm1hdGNoKC9BVFxXL2kp
LCAiaXRlcmF0aW9uICIgKyBpICsgIiBmYWlsZWQiKTsKKyAgICAgICAgZC5zZXRBdHRyaWJ1dGUo
J2NsYXNzJywgZC50ZXh0Q29udGVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZCk7CisgICAgICB9CisgICAgICBhc3NlcnQoZTEucGFyZW50Tm9kZSwgImUxIC0gcGFyZW50
IGVsZW1lbnQgZG9lc24ndCBleGlzdCBhZnRlciBsb29waW5nIik7CisgICAgICBhc3NlcnQoZTEu
cGFyZW50Tm9kZS5vd25lckRvY3VtZW50LCAiZTEgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0IGFm
dGVyIGxvb3BpbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyhlMS5wYXJlbnROb2RlLm93bmVyRG9j
dW1lbnQubm9kZVR5cGUsIDksICJlMSAtIGRvY3VtZW50IG5vZGUgdHlwZSBoYXMgd3Jvbmcgbm9k
ZSB0eXBlIik7CisgICAgICBhc3NlcnQoZTIucGFyZW50Tm9kZSwgImUyIC0gcGFyZW50IGVsZW1l
bnQgZG9lc24ndCBleGlzdCBhZnRlciBsb29waW5nIik7CisgICAgICBhc3NlcnQoZTIucGFyZW50
Tm9kZS5vd25lckRvY3VtZW50LCAiZTIgLSBkb2N1bWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIGxv
b3BpbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyhlMi5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQu
bm9kZVR5cGUsIDksICJlMiAtIGRvY3VtZW50IG5vZGUgdHlwZSBoYXMgd3Jvbmcgbm9kZSB0eXBl
Iik7CisgICAgICByZXR1cm4gMjsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8v
IHRlc3QgMjc6IGEgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyB0ZXN0CisgICAgICB2YXIg
ZTEgPSBrdW5nRnVEZWF0aEdyaXBbMF07CisgICAgICB2YXIgZTIgPSBrdW5nRnVEZWF0aEdyaXBb
MV07CisgICAgICBrdW5nRnVEZWF0aEdyaXAgPSBudWxsOworICAgICAgYXNzZXJ0KGUxLCAiZTEg
LSBlbGVtZW50IGl0c2VsZiBkaWRuJ3Qgc3Vydml2ZSBhY3Jvc3MgdGVzdHMiKTsKKyAgICAgIGFz
c2VydChlMS5wYXJlbnROb2RlLCAiZTEgLSBwYXJlbnQgZWxlbWVudCBkb2Vzbid0IGV4aXN0IGFm
dGVyIHdhaXRpbmciKTsKKyAgICAgIGFzc2VydChlMS5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQs
ICJlMSAtIGRvY3VtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIgd2FpdGluZyIpOworICAgICAgYXNz
ZXJ0RXF1YWxzKGUxLnBhcmVudE5vZGUub3duZXJEb2N1bWVudC5ub2RlVHlwZSwgOSwgImUxIC0g
ZG9jdW1lbnQgbm9kZSB0eXBlIGhhcyB3cm9uZyBub2RlIHR5cGUgYWZ0ZXIgd2FpdGluZyIpOwor
ICAgICAgYXNzZXJ0KGUyLCAiZTIgLSBlbGVtZW50IGl0c2VsZiBkaWRuJ3Qgc3Vydml2ZSBhY3Jv
c3MgdGVzdHMiKTsKKyAgICAgIGFzc2VydChlMi5wYXJlbnROb2RlLCAiZTIgLSBwYXJlbnQgZWxl
bWVudCBkb2Vzbid0IGV4aXN0IGFmdGVyIHdhaXRpbmciKTsKKyAgICAgIGFzc2VydChlMi5wYXJl
bnROb2RlLm93bmVyRG9jdW1lbnQsICJlMiAtIGRvY3VtZW50IGRvZXNuJ3QgZXhpc3QgYWZ0ZXIg
d2FpdGluZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKGUyLnBhcmVudE5vZGUub3duZXJEb2N1bWVu
dC5ub2RlVHlwZSwgOSwgImUyIC0gZG9jdW1lbnQgbm9kZSB0eXBlIGhhcyB3cm9uZyBub2RlIHR5
cGUgYWZ0ZXIgd2FpdGluZyIpOworICAgICAgcmV0dXJuIDI7CisgICAgfSwKKyAgICBmdW5jdGlv
biAoKSB7CisgICAgICAvLyB0ZXN0IDI4OiBnZXRFbGVtZW50QnlJZCgpCisgICAgICAvLyAuLi5h
bmQgbmFtZT0iIgorICAgICAgYXNzZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtJykg
IT09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJylbMF0sICJnZXRFbGVtZW50
QnlJZCgpIHNlYXJjaGVkIG9uICduYW1lJyIpOworICAgICAgLy8gLi4uYW5kIGEgc3BhY2UgY2hh
cmFjdGVyIGFzIHRoZSBJRAorICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdG
QUlMJykpOworICAgICAgZGl2LmlkID0gIiAiOworICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkaXYpOyAvLyBpdCdzIGhpZGRlbiBieSBDU1MKKyAgICAgIGFzc2VydChkaXYgPT09IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCIgIiksICJnZXRFbGVtZW50QnlJZCgpIGRpZG4ndCByZXR1
cm4gdGhlIHJpZ2h0IGVsZW1lbnQiKTsKKyAgICAgIHJldHVybiAyOworICAgIH0sCisgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAyOTogY2hlY2sgdGhhdCB3aGl0ZXNwYWNlIHN1cnZp
dmVzIGNsb25pbmcKKyAgICAgIHZhciB0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCd0YWJsZScpWzBdOworICAgICAgdmFyIHQyID0gdDEuY2xvbmVOb2RlKHRydWUpOworICAgICAg
YXNzZXJ0RXF1YWxzKHQyLnRCb2RpZXNbMF0ucm93c1swXS5jZWxsc1swXS5maXJzdENoaWxkLnRh
Z05hbWUsICdQJywgIjxwPiBkaWRuJ3QgY2xvbmUgcmlnaHQiKTsKKyAgICAgIGFzc2VydEVxdWFs
cyh0Mi50Qm9kaWVzWzBdLnJvd3NbMF0uY2VsbHNbMF0uZmlyc3RDaGlsZC5jaGlsZE5vZGVzLmxl
bmd0aCwgMCwgIjxwPiBnb3QgY2hpbGQgbm9kZXMgYWZ0ZXIgY2xvbmluZyIpOworICAgICAgYXNz
ZXJ0RXF1YWxzKHQyLmNoaWxkTm9kZXMubGVuZ3RoLCAyLCAiY2xvbmVkIHRhYmxlIGhhZCB3cm9u
ZyBudW1iZXIgb2YgY2hpbGRyZW4iKTsKKyAgICAgIGFzc2VydEVxdWFscyh0Mi5sYXN0Q2hpbGQu
ZGF0YSwgIiAiLCAiY2xvbmVkIHRhYmxlIGxvc3Qgd2hpdGVzcGFjZSB0ZXh0IG5vZGUiKTsKKyAg
ICAgIHJldHVybiAyOworICAgIH0sCisKKyAgICAvLyBFdmVudHMKKyAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAvLyB0ZXN0IDMwOiBkaXNwYXRjaEV2ZW50KCkKKyAgICAgIHZhciBjb3VudCA9IDA7
CisgICAgICB2YXIgb2sgPSB0cnVlOworICAgICAgdmFyIHRlc3QgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgaWYgKGV2ZW50LmRldGFpbCAhPSA2KQorICAgICAgICAgIG9rID0gZmFsc2U7
CisgICAgICAgIGNvdW50Kys7CisgICAgICB9OworICAgICAgLy8gdGVzdCBldmVudCBsaXN0ZW5l
ciBhZGRpdGlvbgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmFkZEV2
ZW50TGlzdGVuZXIoJ3Rlc3QnLCB0ZXN0LCBmYWxzZSk7CisgICAgICAvLyB0ZXN0IGV2ZW50IGNy
ZWF0aW9uCisgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnVUlFdmVudHMn
KTsKKyAgICAgIGV2ZW50LmluaXRVSUV2ZW50KCd0ZXN0JywgdHJ1ZSwgZmFsc2UsIG51bGwsIDYp
OworICAgICAgLy8gdGVzdCBldmVudCBkaXNwYXRjaCBvbiBlbGVtZW50cyBhbmQgdGV4dCBub2Rl
cworICAgICAgYXNzZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZScpLmRpc3BhdGNo
RXZlbnQoZXZlbnQpLCAiZGlzcGF0Y2hFdmVudCAjMSBmYWlsZWQiKTsKKyAgICAgIGFzc2VydChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmUnKS5uZXh0U2libGluZy5kaXNwYXRjaEV2ZW50
KGV2ZW50KSwgImRpc3BhdGNoRXZlbnQgIzIgZmFpbGVkIik7CisgICAgICAvLyB0ZXN0IGV2ZW50
IGxpc3RlbmVyIHJlbW92YWwKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQn
KS5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0JywgdGVzdCwgZmFsc2UpOworICAgICAgYXNzZXJ0
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZScpLmRpc3BhdGNoRXZlbnQoZXZlbnQpLCAi
ZGlzcGF0Y2hFdmVudCAjMyBmYWlsZWQiKTsKKyAgICAgIGFzc2VydEVxdWFscyhjb3VudCwgMiwg
InVuZXhwZWN0ZWQgbnVtYmVyIG9mIGV2ZW50cyBoYW5kbGVkIik7CisgICAgICBhc3NlcnQob2ss
ICJ1bmV4cGVjdGVkIGV2ZW50cyBoYW5kbGVkIik7CisgICAgICByZXR1cm4gMjsKKyAgICB9LAor
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMzE6IGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpIGFuZCBjYXB0dXJlCisgICAgICAvLyB3ZSdyZSBnb2luZyB0byB1c2UgYW4gaW5wdXQgZWxl
bWVudCBiZWNhdXNlIHdlIGNhbiBjYXVzZSBldmVudHMgdG8gYnViYmxlIGZyb20gaXQKKyAgICAg
IHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICBkaXYuYXBwZW5kQ2hp
bGQoaW5wdXQpOworICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworICAgICAg
Ly8gdGhlIHRlc3Qgd2lsbCBjb25zaXN0IG9mIHR3byBldmVudCBoYW5kbGVyczoKKyAgICAgIHZh
ciBvayA9IHRydWU7CisgICAgICB2YXIgY2FwdHVyZUNvdW50ID0gMDsKKyAgICAgIHZhciB0ZXN0
Q2FwdHVyZSA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBvayA9IG9rICYmCisgICAgICAg
ICAgICAgKGV2ZW50LnR5cGUgPT0gJ2NsaWNrJykgJiYKKyAgICAgICAgICAgICAoZXZlbnQudGFy
Z2V0ID09IGlucHV0KSAmJgorICAgICAgICAgICAgIChldmVudC5jdXJyZW50VGFyZ2V0ID09IGRp
dikgJiYKKyAgICAgICAgICAgICAoZXZlbnQuZXZlbnRQaGFzZSA9PSAxKSAmJgorICAgICAgICAg
ICAgIChldmVudC5idWJibGVzKSAmJgorICAgICAgICAgICAgIChldmVudC5jYW5jZWxhYmxlKTsK
KyAgICAgICAgY2FwdHVyZUNvdW50Kys7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OyAvLyB0aGlzIHNob3VsZG4ndCBzdG9wIGl0IGZyb20gZmlyaW5nIGJvdGggdGltZXMgb24gdGhl
IGRpdiBlbGVtZW50CisgICAgICB9OworICAgICAgdmFyIHRlc3RCdWJibGUgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgIH07CisgICAgICAvLyBvbmUgb2Yg
d2hpY2ggaXMgYWRkZWQgdHdpY2U6CisgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn
LCBmdW5jdGlvbiAoZXZlbnQpIHsgdGVzdENhcHR1cmUoZXZlbnQpIH0sIHRydWUpOworICAgICAg
ZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7IHRlc3RDYXB0
dXJlKGV2ZW50KSB9LCB0cnVlKTsKKyAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs
IHRlc3RCdWJibGUsIGZhbHNlKTsKKyAgICAgIC8vIHdlIGNhdXNlIGFuIGV2ZW50IHRvIGJ1YmJs
ZSBsaWtlIHRoaXM6CisgICAgICBpbnB1dC50eXBlID0gJ3Jlc2V0JzsKKyAgICAgIGlucHV0LmNs
aWNrKCk7CisgICAgICAvLyBjbGVhbnVwIGFmdGVyd2FyZHMKKyAgICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICAgIC8vIGNhcHR1cmUgaGFuZGxlciBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCB0d2ljZQorICAgICAgYXNzZXJ0RXF1YWxzKGNhcHR1cmVDb3VudCwgMiwgImNh
cHR1cmUgaGFuZGxlciBjYWxsZWQgdGhlIHdyb25nIG51bWJlciBvZiB0aW1lcyIpOworICAgICAg
YXNzZXJ0KG9rLCAiY2FwdHVyZSBoYW5kbGVyIGNhbGxlZCBpbmNvcnJlY3RseSIpOworICAgICAg
cmV0dXJuIDI7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDMyOiBl
dmVudHMgYnViYmxpbmcgdGhyb3VnaCBEb2N1bWVudCBub2RlCisgICAgICAvLyBldmVudCBoYW5k
bGVyOgorICAgICAgdmFyIG9rID0gdHJ1ZTsKKyAgICAgIHZhciBjb3VudCA9IDA7CisgICAgICB2
YXIgdGVzdCA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjb3VudCArPSAxOworICAgICAg
ICBpZiAoZXZlbnQuZXZlbnRQaGFzZSAhPSAzKQorICAgICAgICAgIG9rID0gZmFsc2U7CisgICAg
ICB9CisgICAgICAvLyByZWdpc3RlciBldmVudCBoYW5kbGVyCisgICAgICBkb2N1bWVudC5ib2R5
LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGVzdCwgZmFsc2UpOworICAgICAgLy8gY3JlYXRl
IGFuIGVsZW1lbnQgdGhhdCBidWJibGVzIGFuIGV2ZW50LCBhbmQgYnViYmxlIGl0CisgICAgICB2
YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgZGl2LmFwcGVuZENoaWxk
KGlucHV0KTsKKyAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgIGlu
cHV0LnR5cGUgPSAncmVzZXQnOworICAgICAgaW5wdXQuY2xpY2soKTsKKyAgICAgIC8vIHVucmVn
aXN0ZXIgZXZlbnQgaGFuZGxlcgorICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3Rl
bmVyKCdjbGljaycsIHRlc3QsIGZhbHNlKTsKKyAgICAgIC8vIGNoZWNrIHRoYXQgaXQncyByZW1v
dmVkIGZvciBnb29kCisgICAgICBpbnB1dC5jbGljaygpOworICAgICAgLy8gcmVtb3ZlIHRoZSBu
ZXdseSBhZGRlZCBlbGVtZW50cworICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYp
OworICAgICAgYXNzZXJ0RXF1YWxzKGNvdW50LCAxLCAiY2FwdHVyZSBoYW5kbGVyIGNhbGxlZCB0
aGUgd3JvbmcgbnVtYmVyIG9mIHRpbWVzIik7CisgICAgICBhc3NlcnQob2ssICJjYXB0dXJlIGhh
bmRsZXIgY2FsbGVkIGluY29ycmVjdGx5Iik7CisgICAgICByZXR1cm4gMjsKKyAgICB9LAorCisg
ICAgLy8gYnVja2V0IDM6IERPTTIgVmlld3MsIERPTTIgU3R5bGUsIGFuZCBTZWxlY3RvcnMKKyAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDMzOiBiYXNpYyB0ZXN0cyBmb3Igc2VsZWN0
b3JzIC0gY2xhc3NlcywgYXR0cmlidXRlcworICAgICAgdmFyIHA7CisgICAgICB2YXIgYnVpbGRl
ciA9IGZ1bmN0aW9uKGRvYykgeworICAgICAgICBwID0gZG9jLmNyZWF0ZUVsZW1lbnQoInAiKTsK
KyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7CisgICAgICB9OworICAgICAgc2VsZWN0
b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIGJ1aWxkZXIoZG9j
KTsKKyAgICAgICAgcC5jbGFzc05hbWUgPSAic2VsZWN0b3JQaW5nVGVzdCI7CisgICAgICAgIHZh
ciBnb29kID0gYWRkKCIuc2VsZWN0b3JQaW5nVGVzdCIpOworICAgICAgICBhZGQoIi5TZWxlY3Rv
clBpbmdUZXN0Iik7CisgICAgICAgIGFkZCgiLnNlbGVjdG9ycGluZ3Rlc3QiKTsKKyAgICAgICAg
ZXhwZWN0KGRvYy5ib2R5LCAwLCAiZmFpbHVyZSAxIik7CisgICAgICAgIGV4cGVjdChwLCBnb29k
LCAiZmFpbHVyZSAyIik7CisgICAgICB9KTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAo
ZG9jLCBhZGQsIGV4cGVjdCkgeworICAgICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHAuY2xh
c3NOYW1lID0gJ2FcdTAwMjBiXHUwMDA5Y1x1MDAwQWRcdTAwMERlXHUwMDBDZlx1MjAwM2dcdTMw
MDBoJzsKKyAgICAgICAgdmFyIGdvb2QgPSBhZGQoIi5hLmIuYy5kLmUuZlxcMjAwM2dcXDMwMDBo
Iik7CisgICAgICAgIGV4cGVjdChwLCBnb29kLCAid2hpdGVzcGFjZSBlcnJvciBpbiBjbGFzcyBw
cm9jZXNzaW5nIik7CisgICAgICB9KTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9j
LCBhZGQsIGV4cGVjdCkgeworICAgICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHAuY2xhc3NO
YW1lID0gInNlbGVjdG9yUGluZ1Rlc3QiOworICAgICAgICB2YXIgZ29vZCA9IGFkZCgiW2NsYXNz
PXNlbGVjdG9yUGluZ1Rlc3RdIik7CisgICAgICAgIGFkZCgiW2NsYXNzPVNlbGVjdG9yUGluZ1Rl
c3RdIik7CisgICAgICAgIGFkZCgiW2NsYXNzPXNlbGVjdG9ycGluZ3Rlc3RdIik7CisgICAgICAg
IGV4cGVjdChkb2MuYm9keSwgMCwgImZhaWx1cmUgMyIpOworICAgICAgICBleHBlY3QocCwgZ29v
ZCwgImNsYXNzIGF0dHJpYnV0ZSBtYXRjaGluZyBmYWlsZWQiKTsKKyAgICAgIH0pOworICAgICAg
c2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIGJ1aWxk
ZXIoZG9jKTsKKyAgICAgICAgcC5jbGFzc05hbWUgPSAic2VsZWN0b3JQaW5nVGVzdCI7CisgICAg
ICAgIHZhciBnb29kID0gYWRkKCJbdGl0bGU9c2VsZWN0b3JQaW5nVGVzdF0iKTsKKyAgICAgICAg
YWRkKCJbdGl0bGU9U2VsZWN0b3JQaW5nVGVzdF0iKTsKKyAgICAgICAgYWRkKCJbdGl0bGU9c2Vs
ZWN0b3JwaW5ndGVzdF0iKTsKKyAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCAwLCAiZmFpbHVyZSA0
Iik7CisgICAgICAgIGV4cGVjdChwLCAwLCAiZmFpbHVyZSA1Iik7CisgICAgICAgIHAudGl0bGUg
PSAic2VsZWN0b3JQaW5nVGVzdCI7CisgICAgICAgIGV4cGVjdChkb2MuYm9keSwgMCwgImZhaWx1
cmUgNiIpOworICAgICAgICBleHBlY3QocCwgZ29vZCwgImZhaWx1cmUgNyIpOworICAgICAgfSk7
CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAg
ICAgYnVpbGRlcihkb2MpOworICAgICAgICBwLnNldEF0dHJpYnV0ZSgnYWxpZ24nLCAncmlnaHQg
YW5kIGxlZnQnKTsKKyAgICAgICAgdmFyIGdvb2QgPSBhZGQoIlthbGlnbj1cInJpZ2h0IGFuZCBs
ZWZ0XCJdIik7CisgICAgICAgIGFkZCgiW2FsaWduPWxlZnRdIik7CisgICAgICAgIGFkZCgiW2Fs
aWduPXJpZ2h0XSIpOworICAgICAgICBleHBlY3QocCwgZ29vZCwgImFsaWduIGF0dHJpYnV0ZSBt
aXNtYXRjaCIpOworICAgICAgfSk7CisgICAgICByZXR1cm4gMzsKKyAgICB9LAorICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgMzQ6IDpsYW5nKCkgYW5kIFt8PV0KKyAgICAgIHZhciBk
aXYxOworICAgICAgdmFyIGRpdjI7CisgICAgICB2YXIgcDsKKyAgICAgIHZhciBidWlsZGVyID0g
ZnVuY3Rpb24oZG9jKSB7CisgICAgICAgIGRpdjEgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIGRpdjEuc2V0QXR0cmlidXRlKCJsYW5nIiwgImVuZ2xpc2giKTsKKyAgICAgICAg
ZGl2MS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgIndpZGdldC10cmVlIik7CisgICAgICAgIGRvYy5i
b2R5LmFwcGVuZENoaWxkKGRpdjEpOworICAgICAgICBkaXYyID0gZG9jLmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICBkaXYyLnNldEF0dHJpYnV0ZSgibGFuZyIsICJlbi1HQiIpOworICAg
ICAgICBkaXYyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiV0lER0VUIik7CisgICAgICAgIGRvYy5i
b2R5LmFwcGVuZENoaWxkKGRpdjIpOworICAgICAgICBwID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3An
KTsKKyAgICAgICAgZGl2Mi5hcHBlbmRDaGlsZChwKTsKKyAgICAgIH07CisgICAgICBzZWxlY3Rv
clRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAgICAgYnVpbGRlcihkb2Mp
OworICAgICAgICB2YXIgbGFuZ19lbiA9IGFkZCgiOmxhbmcoZW4pIik7CisgICAgICAgIGV4cGVj
dChkaXYxLCAwLCAibGFuZz1lbmdsaXNoIHNob3VsZCBub3QgYmUgbWF0Y2hlZCBieSA6bGFuZyhl
bikiKTsKKyAgICAgICAgZXhwZWN0KGRpdjIsIGxhbmdfZW4sICJsYW5nPWVuLUdCIHNob3VsZCBi
ZSBtYXRjaGVkIGJ5IDpsYW5nKGVuKSIpOworICAgICAgICBleHBlY3QocCwgbGFuZ19lbiwgImRl
c2NlbmRhbnRzIGluaGVyaXRpbmcgbGFuZz1lbi1HQiBzaG91bGQgYmUgbWF0Y2hlZCBieSA6bGFu
ZyhlbikiKTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFk
ZCwgZXhwZWN0KSB7CisgICAgICAgIGJ1aWxkZXIoZG9jKTsKKyAgICAgICAgdmFyIGNsYXNzX3dp
ZGdldCA9IGFkZCgiW2NsYXNzfD13aWRnZXRdIik7CisgICAgICAgIGV4cGVjdChkaXYxLCBjbGFz
c193aWRnZXQsICJjbGFzcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB8PSBhdHRy
aWJ1dGUgc2VsZWN0b3JzIik7CisgICAgICAgIGV4cGVjdChkaXYyLCAwLCAiY2xhc3MgYXR0cmli
dXRlIGlzIGNhc2Utc2Vuc2l0aXZlIik7CisgICAgICB9KTsKKyAgICAgIHJldHVybiAzOworICAg
IH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAzNTogOmZpcnN0LWNoaWxkCisg
ICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAgICAg
dmFyIG5vdEZpcnN0ID0gMDsKKyAgICAgICAgdmFyIGZpcnN0ID0gYWRkKCI6Zmlyc3QtY2hpbGQi
KTsKKyAgICAgICAgdmFyIHAxID0gZG9jLmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAgICAgICAgZG9j
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCIgVEVTVCAiKSk7CisgICAgICAg
IGRvYy5ib2R5LmFwcGVuZENoaWxkKHAxKTsKKyAgICAgICAgZXhwZWN0KGRvYy5kb2N1bWVudEVs
ZW1lbnQsIG5vdEZpcnN0LCAicm9vdCBlbGVtZW50LCB3aXRoIG5vIHBhcmVudCBub2RlLCBjbGFp
bXMgdG8gYmUgYSA6Zmlyc3QtY2hpbGQiKTsKKyAgICAgICAgZXhwZWN0KGRvYy5kb2N1bWVudEVs
ZW1lbnQuZmlyc3RDaGlsZCwgZmlyc3QsICJmaXJzdCBjaGlsZCBvZiByb290IG5vZGUgZGlkbid0
IG1hdGNoIDpmaXJzdC1jaGlsZCIpOworICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVu
dC5maXJzdENoaWxkLmZpcnN0Q2hpbGQsIGZpcnN0LCAiZmFpbHVyZSAzIik7CisgICAgICAgIGV4
cGVjdChkb2MuYm9keSwgbm90Rmlyc3QsICJmYWlsdXJlIDQiKTsKKyAgICAgICAgZXhwZWN0KHAx
LCBmaXJzdCwgImZhaWx1cmUgNSIpOworICAgICAgICB2YXIgcDIgPSBkb2MuY3JlYXRlRWxlbWVu
dCgicCIpOworICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChwMik7CisgICAgICAgIGV4cGVj
dChkb2MuYm9keSwgbm90Rmlyc3QsICJmYWlsdXJlIDYiKTsKKyAgICAgICAgZXhwZWN0KHAxLCBm
aXJzdCwgImZhaWx1cmUgNyIpOworICAgICAgICBleHBlY3QocDIsIG5vdEZpcnN0LCAiZmFpbHVy
ZSA4Iik7CisgICAgICAgIHZhciBwMCA9IGRvYy5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAg
IGRvYy5ib2R5Lmluc2VydEJlZm9yZShwMCwgcDEpOworICAgICAgICBleHBlY3QoZG9jLmJvZHks
IG5vdEZpcnN0LCAiZmFpbHVyZSA5Iik7CisgICAgICAgIGV4cGVjdChwMCwgZmlyc3QsICJmYWls
dXJlIDEwIik7CisgICAgICAgIGV4cGVjdChwMSwgbm90Rmlyc3QsICI6Zmlyc3QtY2hpbGQgc3Rp
bGwgYXBwbGllcyB0byBlbGVtZW50IHRoYXQgd2FzIHByZXZpb3VzbHkgYSBmaXJzdCBjaGlsZCIp
OworICAgICAgICBleHBlY3QocDIsIG5vdEZpcnN0LCAiZmFpbHVyZSAxMiIpOworICAgICAgICBk
b2MuYm9keS5pbnNlcnRCZWZvcmUocDAsIHAyKTsKKyAgICAgICAgZXhwZWN0KGRvYy5ib2R5LCBu
b3RGaXJzdCwgImZhaWx1cmUgMTMiKTsKKyAgICAgICAgZXhwZWN0KHAxLCBmaXJzdCwgImZhaWx1
cmUgMTQiKTsKKyAgICAgICAgZXhwZWN0KHAwLCBub3RGaXJzdCwgImZhaWx1cmUgMTUiKTsKKyAg
ICAgICAgZXhwZWN0KHAyLCBub3RGaXJzdCwgImZhaWx1cmUgMTYiKTsKKyAgICAgIH0pOworICAg
ICAgcmV0dXJuIDM7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDM2
OiA6bGFzdC1jaGlsZAorICAgICAgdmFyIHAxOworICAgICAgdmFyIHAyOworICAgICAgdmFyIGJ1
aWxkZXIgPSBmdW5jdGlvbihkb2MpIHsKKyAgICAgICAgcDEgPSBkb2MuY3JlYXRlRWxlbWVudCgn
cCcpOworICAgICAgICBwMiA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICAgIGRvYy5i
b2R5LmFwcGVuZENoaWxkKHAxKTsKKyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocDIpOwor
ICAgICAgfTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkg
eworICAgICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHZhciBsYXN0ID0gYWRkKCI6bGFzdC1j
aGlsZCIpOworICAgICAgICBleHBlY3QocDEsIDAsICJjb250cm9sIHRlc3QgZm9yIDpsYXN0LWNo
aWxkIGZhaWxlZCIpOworICAgICAgICBleHBlY3QocDIsIGxhc3QsICJsYXN0IGNoaWxkIGRpZCBu
b3QgbWF0Y2ggOmxhc3QtY2hpbGQiKTsKKyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocDEp
OworICAgICAgICBleHBlY3QocDIsIDAsICI6bGFzdC1jaGlsZCBtYXRjaGVkIGVsZW1lbnQgd2l0
aCBhIGZvbGxvd2luZyBzaWJsaW5nIik7CisgICAgICAgIGV4cGVjdChwMSwgbGFzdCwgImZhaWx1
cmUgNCIpOworICAgICAgICBwMS5hcHBlbmRDaGlsZChwMik7CisgICAgICAgIGV4cGVjdChwMiwg
bGFzdCwgImZhaWx1cmUgNSIpOworICAgICAgICBleHBlY3QocDEsIGxhc3QsICJmYWlsdXJlIDYi
KTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhw
ZWN0KSB7CisgICAgICAgIGJ1aWxkZXIoZG9jKTsKKyAgICAgICAgdmFyIGxhc3QgPSBhZGQoIjps
YXN0LWNoaWxkIik7CisgICAgICAgIGV4cGVjdChwMSwgMCwgImZhaWx1cmUgNyIpOworICAgICAg
ICBleHBlY3QocDIsIGxhc3QsICJmYWlsdXJlIDgiKTsKKyAgICAgICAgZG9jLmJvZHkuaW5zZXJ0
QmVmb3JlKHAyLCBwMSk7CisgICAgICAgIGV4cGVjdChwMiwgMCwgImZhaWx1cmUgOSIpOworICAg
ICAgICBleHBlY3QocDEsIGxhc3QsICJmYWlsdXJlIDEwIik7CisgICAgICB9KTsKKyAgICAgIHNl
bGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgeworICAgICAgICBidWlsZGVy
KGRvYyk7CisgICAgICAgIHZhciBsYXN0ID0gYWRkKCI6bGFzdC1jaGlsZCIpOworICAgICAgICBl
eHBlY3QocDEsIDAsICJmYWlsdXJlIDExIik7CisgICAgICAgIGV4cGVjdChwMiwgbGFzdCwgImZh
aWx1cmUgMTIiKTsKKyAgICAgICAgZG9jLmJvZHkucmVtb3ZlQ2hpbGQocDIpOworICAgICAgICBl
eHBlY3QocDEsIGxhc3QsICJmYWlsdXJlIDEzIik7CisgICAgICAgIGFzc2VydEVxdWFscyhwMS5u
ZXh0U2libGluZywgbnVsbCwgImZhaWx1cmUgMTQiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHAy
LnBhcmVudE5vZGUsIG51bGwsICJmYWlsdXJlIDE1Iik7CisgICAgICB9KTsKKyAgICAgIHJldHVy
biAzOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAzNzogOm9ubHkt
Y2hpbGQKKyAgICAgIHZhciBwMTsKKyAgICAgIHZhciBwMjsKKyAgICAgIHZhciBidWlsZGVyID0g
ZnVuY3Rpb24oZG9jKSB7CisgICAgICAgIHAxID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAg
ICAgICAgcDIgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICBkb2MuYm9keS5hcHBl
bmRDaGlsZChwMSk7CisgICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHAyKTsKKyAgICAgIH07
CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAg
ICAgYnVpbGRlcihkb2MpOworICAgICAgICB2YXIgb25seSA9IGFkZCgiOm9ubHktY2hpbGQiKTsK
KyAgICAgICAgZXhwZWN0KHAxLCAwLCAiY29udHJvbCB0ZXN0IGZvciA6b25seS1jaGlsZCBmYWls
ZWQiKTsKKyAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAyIik7CisgICAgICAgIGRvYy5i
b2R5LnJlbW92ZUNoaWxkKHAyKTsKKyAgICAgICAgZXhwZWN0KHAxLCBvbmx5LCAiOm9ubHktY2hp
bGQgZGlkIG5vdCBtYXRjaCBvbmx5IGNoaWxkIik7CisgICAgICAgIHAxLmFwcGVuZENoaWxkKHAy
KTsKKyAgICAgICAgZXhwZWN0KHAyLCBvbmx5LCAiZmFpbHVyZSA0Iik7CisgICAgICAgIGV4cGVj
dChwMSwgb25seSwgImZhaWx1cmUgNSIpOworICAgICAgfSk7CisgICAgICBzZWxlY3RvclRlc3Qo
ZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAgICAgYnVpbGRlcihkb2MpOworICAg
ICAgICB2YXIgb25seSA9IGFkZCgiOm9ubHktY2hpbGQiKTsKKyAgICAgICAgZXhwZWN0KHAxLCAw
LCAiZmFpbHVyZSA2Iik7CisgICAgICAgIGV4cGVjdChwMiwgMCwgImZhaWx1cmUgNyIpOworICAg
ICAgICBkb2MuYm9keS5yZW1vdmVDaGlsZChwMSk7CisgICAgICAgIGV4cGVjdChwMiwgb25seSwg
ImZhaWx1cmUgOCIpOworICAgICAgICBwMi5hcHBlbmRDaGlsZChwMSk7CisgICAgICAgIGV4cGVj
dChwMiwgb25seSwgImZhaWx1cmUgOSIpOworICAgICAgICBleHBlY3QocDEsIG9ubHksICJmYWls
dXJlIDEwIik7CisgICAgICB9KTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBh
ZGQsIGV4cGVjdCkgeworICAgICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHZhciBvbmx5ID0g
YWRkKCI6b25seS1jaGlsZCIpOworICAgICAgICBleHBlY3QocDEsIDAsICJmYWlsdXJlIDExIik7
CisgICAgICAgIGV4cGVjdChwMiwgMCwgImZhaWx1cmUgMTIiKTsKKyAgICAgICAgdmFyIHNwYW4x
ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgcDEuYXBwZW5kQ2hpbGQoc3Bh
bjEpOworICAgICAgICBleHBlY3QocDEsIDAsICJmYWlsdXJlIDEzIik7CisgICAgICAgIGV4cGVj
dChwMiwgMCwgImZhaWx1cmUgMTQiKTsKKyAgICAgICAgZXhwZWN0KHNwYW4xLCBvbmx5LCAiZmFp
bHVyZSAxNSIpOworICAgICAgICB2YXIgc3BhbjIgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3Bhbicp
OworICAgICAgICBwMS5hcHBlbmRDaGlsZChzcGFuMik7CisgICAgICAgIGV4cGVjdChwMSwgMCwg
ImZhaWx1cmUgMTYiKTsKKyAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAxNyIpOworICAg
ICAgICBleHBlY3Qoc3BhbjEsIDAsICJmYWlsdXJlIDE4Iik7CisgICAgICAgIGV4cGVjdChzcGFu
MiwgMCwgImZhaWx1cmUgMTkiKTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0
aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIGJ1aWxkZXIoZG9jKTsKKyAgICAgICAg
dmFyIG9ubHkgPSBhZGQoIjpvbmx5LWNoaWxkIik7CisgICAgICAgIGV4cGVjdChwMSwgMCwgImZh
aWx1cmUgMjAiKTsKKyAgICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAyMSIpOworICAgICAg
ICB2YXIgc3BhbjEgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgICAgICBwMi5hcHBl
bmRDaGlsZChzcGFuMSk7CisgICAgICAgIGV4cGVjdChwMSwgMCwgImZhaWx1cmUgMjIiKTsKKyAg
ICAgICAgZXhwZWN0KHAyLCAwLCAiZmFpbHVyZSAyMyIpOworICAgICAgICBleHBlY3Qoc3BhbjEs
IG9ubHksICJmYWlsdXJlIDI0Iik7CisgICAgICAgIHZhciBzcGFuMiA9IGRvYy5jcmVhdGVFbGVt
ZW50KCdzcGFuJyk7CisgICAgICAgIHAyLmluc2VydEJlZm9yZShzcGFuMiwgc3BhbjEpOworICAg
ICAgICBleHBlY3QocDEsIDAsICJmYWlsdXJlIDI1Iik7CisgICAgICAgIGV4cGVjdChwMiwgMCwg
ImZhaWx1cmUgMjYiKTsKKyAgICAgICAgZXhwZWN0KHNwYW4xLCAwLCAiZmFpbHVyZSAyNyIpOwor
ICAgICAgICBleHBlY3Qoc3BhbjIsIDAsICJmYWlsdXJlIDI4Iik7CisgICAgICB9KTsKKyAgICAg
IHJldHVybiAzOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCAzODog
OmVtcHR5CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsK
KyAgICAgICAgdmFyIGVtcHR5ID0gYWRkKCI6ZW1wdHkiKTsKKyAgICAgICAgdmFyIHAgPSBkb2Mu
Y3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChwKTsKKyAg
ICAgICAgZXhwZWN0KHAsIGVtcHR5LCAiZW1wdHkgcCBlbGVtZW50IGRpZG4ndCBtYXRjaCA6ZW1w
dHkiKTsKKyAgICAgICAgdmFyIHNwYW4gPSBkb2MuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAg
ICAgICBwLmFwcGVuZENoaWxkKHNwYW4pOworICAgICAgICBleHBlY3QocCwgMCwgImFkZGluZyBj
aGlsZHJlbiBkaWRuJ3Qgc3RvcCB0aGUgZWxlbWVudCBtYXRjaGluZyA6ZW1wdHkiKTsKKyAgICAg
ICAgZXhwZWN0KHNwYW4sIGVtcHR5LCAiZW1wdHkgc3BhbiBlbGVtZW50IGRpZG4ndCBtYXRjaCA6
ZW1wdHkiKTsKKyAgICAgICAgcC5yZW1vdmVDaGlsZChzcGFuKTsKKyAgICAgICAgZXhwZWN0KHAs
IGVtcHR5LCAicmVtb3ZpbmcgYWxsIGNoaWxkcmVuIGRpZG4ndCBtYWtlIHRoZSBlbGVtZW50IG1h
dGNoIDplbXB0eSIpOworICAgICAgICBwLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCJj
IikpOworICAgICAgICBwLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiIikpOworICAg
ICAgICBleHBlY3QocCwgZW1wdHksICJlbGVtZW50IHdpdGggYSBjb21tZW50IG5vZGUgYW5kIGFu
IGVtcHR5IHRleHQgbm9kZSBkaWRuJ3QgbWF0Y2ggOmVtcHR5Iik7CisgICAgICAgIHAuYXBwZW5k
Q2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCIiKSk7CisgICAgICAgIGV4cGVjdChwLCBlbXB0eSwg
ImVsZW1lbnQgd2l0aCBhIGNvbW1lbnQgbm9kZSBhbmQgdHdvIGVtcHR5IHRleHQgbm9kZXMgZGlk
bid0IG1hdGNoIDplbXB0eSIpOworICAgICAgICBwLmxhc3RDaGlsZC5kYXRhID0gIiAiOworICAg
ICAgICBleHBlY3QocCwgMCwgImFkZGluZyB0ZXh0IHRvIGEgdGV4dCBub2RlIGRpZG4ndCBtYWtl
IHRoZSBlbGVtZW50IG5vbi06ZW1wdHkiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHAuY2hpbGRO
b2Rlcy5sZW5ndGgsIDMsICJ0ZXh0IG5vZGVzIG1heSBoYXZlIG1lcmdlZCIpOworICAgICAgICBw
LmNoaWxkTm9kZXNbMV0ucmVwbGFjZVdob2xlVGV4dCgiIik7CisgICAgICAgIGFzc2VydEVxdWFs
cyhwLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAicmVwbGFjZVdob2xlVGV4dCgnJykgZGlkbid0IHJl
bW92ZSB0ZXh0IG5vZGVzIik7CisgICAgICAgIGV4cGVjdChwLCBlbXB0eSwgImVsZW1lbnQgd2l0
aCBhIGNvbW1lbnQgbm9kZSBvbmx5IGRpZG4ndCBtYXRjaCA6ZW1wdHkiKTsKKyAgICAgICAgcC5h
cHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInRl
c3QiKSk7CisgICAgICAgIGV4cGVjdChwLCAwLCAiYWRkaW5nIGFuIGVsZW1lbnQgaW4gYSBuYW1l
c3BhY2UgZGlkbid0IG1ha2UgdGhlIGVsZW1lbnQgbm9uLTplbXB0eSIpOworICAgICAgfSk7Cisg
ICAgICByZXR1cm4gMzsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3Qg
Mzk6IDpudGgtY2hpbGQsIDpudGgtbGFzdC1jaGlsZAorICAgICAgdmFyIHBzOworICAgICAgdmFy
IGJ1aWxkZXIgPSBmdW5jdGlvbihkb2MpIHsKKyAgICAgICAgcHMgPSBbCisgICAgICAgICAgZG9j
LmNyZWF0ZUVsZW1lbnQoJ3AnKSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAor
ICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCisgICAgICAgICAgZG9jLmNyZWF0ZUVs
ZW1lbnQoJ3AnKSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAorICAgICAgICAg
IGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCisgICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3An
KSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAorICAgICAgICAgIGRvYy5jcmVh
dGVFbGVtZW50KCdwJyksCisgICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKSwKKyAgICAg
ICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAorICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50
KCdwJyksCisgICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKQorICAgICAgICBdOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAxKQorICAgICAgICAgIGRv
Yy5ib2R5LmFwcGVuZENoaWxkKHBzW2ldKTsKKyAgICAgIH07CisgICAgICBzZWxlY3RvclRlc3Qo
ZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAgICAgYnVpbGRlcihkb2MpOworICAg
ICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpudGgtY2hpbGQob2RkKSIpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAxKQorICAgICAgICAgIGV4cGVjdChwc1tpXSwg
aSAlIDIgPyAwIDogbWF0Y2gsICI6bnRoLWNoaWxkKG9kZCkgZmFpbGVkIHdpdGggY2hpbGQgIiAr
IGkpOworICAgICAgfSk7CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBl
eHBlY3QpIHsKKyAgICAgICAgYnVpbGRlcihkb2MpOworICAgICAgICB2YXIgbWF0Y2ggPSBhZGQo
IjpudGgtY2hpbGQoZXZlbikiKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcy5sZW5n
dGg7IGkgKz0gMSkKKyAgICAgICAgICBleHBlY3QocHNbaV0sIGkgJSAyID8gbWF0Y2ggOiAwICwg
IjpudGgtY2hpbGQoZXZlbikgZmFpbGVkIHdpdGggY2hpbGQgIiArIGkpOworICAgICAgfSk7Cisg
ICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsKKyAgICAgICAg
YnVpbGRlcihkb2MpOworICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpudGgtY2hpbGQob2RkKSIp
OworICAgICAgICBkb2MuYm9keS5yZW1vdmVDaGlsZChwc1s1XSk7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNTsgaSArPSAxKQorICAgICAgICAgIGV4cGVjdChwc1tpXSwgaSAlIDIgPyAw
IDogbWF0Y2gsICI6bnRoLWNoaWxkKG9kZCkgZmFpbGVkIGFmdGVyIHJlbW92YWwgd2l0aCBjaGls
ZCAiICsgaSk7CisgICAgICAgIGZvciAodmFyIGkgPSA2OyBpIDwgcHMubGVuZ3RoOyBpICs9IDEp
CisgICAgICAgICAgZXhwZWN0KHBzW2ldLCBpICUgMiA/IG1hdGNoIDogMCwgIjpudGgtY2hpbGQo
b2RkKSBmYWlsZWQgYWZ0ZXIgcmVtb3ZhbCB3aXRoIGNoaWxkICIgKyBpKTsKKyAgICAgIH0pOwor
ICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAg
IGJ1aWxkZXIoZG9jKTsKKyAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLWNoaWxkKGV2ZW4p
Iik7CisgICAgICAgIGRvYy5ib2R5LnJlbW92ZUNoaWxkKHBzWzVdKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA1OyBpICs9IDEpCisgICAgICAgICAgZXhwZWN0KHBzW2ldLCBpICUgMiA/
IG1hdGNoIDogMCwgIjpudGgtY2hpbGQoZXZlbikgZmFpbGVkIGFmdGVyIHJlbW92YWwgd2l0aCBj
aGlsZCAiICsgaSk7CisgICAgICAgIGZvciAodmFyIGkgPSA2OyBpIDwgcHMubGVuZ3RoOyBpICs9
IDEpCisgICAgICAgICAgZXhwZWN0KHBzW2ldLCBpICUgMiA/IDAgOiBtYXRjaCwgIjpudGgtY2hp
bGQoZXZlbikgZmFpbGVkIGFmdGVyIHJlbW92YWwgd2l0aCBjaGlsZCAiICsgaSk7CisgICAgICB9
KTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgeworICAg
ICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHZhciBtYXRjaCA9IGFkZCgiOm50aC1jaGlsZCgt
biszKSIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkgKz0gMSkKKyAgICAgICAg
ICBleHBlY3QocHNbaV0sIG1hdGNoLCAiOm50aC1jaGlsZCgtbiszKSBmYWlsZWQgd2l0aCBjaGls
ZCAiICsgaSk7CisgICAgICAgIGZvciAodmFyIGkgPSAzOyBpIDwgcHMubGVuZ3RoOyBpICs9IDEp
CisgICAgICAgICAgZXhwZWN0KHBzW2ldLCAwLCAiOm50aC1jaGlsZCgtbiszKSBmYWlsZWQgd2l0
aCBjaGlsZCAiICsgaSk7CisgICAgICB9KTsKKyAgICAgIHJldHVybiAzOworICAgIH0sCisgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA0MDogOmZpcnN0LW9mLXR5cGUsIDpsYXN0LW9m
LXR5cGUsIDpvbmx5LW9mLXR5cGUsIDpudGgtb2YtdHlwZSwgOm50aC1sYXN0LW9mLXR5cGUKKyAg
ICAgIHZhciBlbGVtZW50czsKKyAgICAgIHZhciBidWlsZGVyID0gZnVuY3Rpb24oZG9jKSB7Cisg
ICAgICAgIGVsZW1lbnRzID0gWworICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCisg
ICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpLAorICAgICAgICAgIGRvYy5jcmVhdGVF
bGVtZW50KCdkaXYnKSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcpLAorICAgICAg
ICAgIGRvYy5jcmVhdGVFbGVtZW50KCdwJyksCisgICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQo
J3AnKSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgnZGl2JyksCisgICAgICAgICAgZG9j
LmNyZWF0ZUVsZW1lbnQoJ2FkZHJlc3MnKSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgn
ZGl2JyksCisgICAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpLAorICAgICAgICAgIGRv
Yy5jcmVhdGVFbGVtZW50KCdkaXYnKSwKKyAgICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCgncCcp
LAorICAgICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKSwKKyAgICAgICAgICBkb2MuY3Jl
YXRlRWxlbWVudCgncCcpCisgICAgICAgIF07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCisgICAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQo
ZWxlbWVudHNbaV0pOworICAgICAgfTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9j
LCBhZGQsIGV4cGVjdCkgeworICAgICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHZhciBtYXRj
aCA9IGFkZCgiOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgdmFyIHZhbHVlcyA9IFsxLCAxLCAw
LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwXTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkgKz0gMSkKKyAgICAgICAgICBleHBlY3QoZWxlbWVu
dHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNoIDogMCwgInBhcnQgMToiICsgaSk7CisgICAgICB9KTsK
KyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgeworICAgICAg
ICBidWlsZGVyKGRvYyk7CisgICAgICAgIHZhciBtYXRjaCA9IGFkZCgiOmxhc3Qtb2YtdHlwZSIp
OworICAgICAgICB2YXIgdmFsdWVzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDEsIDFdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsg
aSArPSAxKQorICAgICAgICAgIGV4cGVjdChlbGVtZW50c1tpXSwgdmFsdWVzW2ldID8gbWF0Y2gg
OiAwLCAicGFydCAyOiIgKyBpKTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0
aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIGJ1aWxkZXIoZG9jKTsKKyAgICAgICAg
dmFyIG1hdGNoID0gYWRkKCI6b25seS1vZi10eXBlIik7CisgICAgICAgIHZhciB2YWx1ZXMgPSBb
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMF07CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCisgICAgICAgICAgZXhwZWN0
KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDM6IiArIGkpOworICAg
ICAgfSk7CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsK
KyAgICAgICAgYnVpbGRlcihkb2MpOworICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpudGgtb2Yt
dHlwZSgzbi0xKSIpOworICAgICAgICB2YXIgdmFsdWVzID0gWzAsIDAsIDEsIDEsIDAsIDAsIDAs
IDAsIDAsIDEsIDAsIDEsIDAsIDBdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1l
bnRzLmxlbmd0aDsgaSArPSAxKQorICAgICAgICAgIGV4cGVjdChlbGVtZW50c1tpXSwgdmFsdWVz
W2ldID8gbWF0Y2ggOiAwLCAicGFydCA0OiIgKyBpKTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0
b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIGJ1aWxkZXIoZG9j
KTsKKyAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bnRoLW9mLXR5cGUoM24rMSkiKTsKKyAgICAg
ICAgdmFyIHZhbHVlcyA9IFsxLCAxLCAwLCAwLCAwLCAxLCAwLCAxLCAxLCAwLCAwLCAwLCAxLCAw
XTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkgKz0gMSkK
KyAgICAgICAgICBleHBlY3QoZWxlbWVudHNbaV0sIHZhbHVlc1tpXSA/IG1hdGNoIDogMCwgInBh
cnQgNToiICsgaSk7CisgICAgICB9KTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9j
LCBhZGQsIGV4cGVjdCkgeworICAgICAgICBidWlsZGVyKGRvYyk7CisgICAgICAgIHZhciBtYXRj
aCA9IGFkZCgiOm50aC1sYXN0LW9mLXR5cGUoMm4pIik7CisgICAgICAgIHZhciB2YWx1ZXMgPSBb
MSwgMCwgMSwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMF07CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCisgICAgICAgICAgZXhwZWN0
KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDY6IiArIGkpOworICAg
ICAgfSk7CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3QpIHsK
KyAgICAgICAgYnVpbGRlcihkb2MpOworICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIjpudGgtbGFz
dC1vZi10eXBlKC01biszKSIpOworICAgICAgICB2YXIgdmFsdWVzOworICAgICAgICB2YWx1ZXMg
PSBbMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMF07CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpCisgICAgICAgICAgZXhw
ZWN0KGVsZW1lbnRzW2ldLCB2YWx1ZXNbaV0gPyBtYXRjaCA6IDAsICJwYXJ0IDc6IiArIGkpOwor
ICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgnYmxvY2txdW90
ZScpKTsKKyAgICAgICAgdmFsdWVzID0gWzAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDBdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0
aDsgaSArPSAxKQorICAgICAgICAgIGV4cGVjdChlbGVtZW50c1tpXSwgdmFsdWVzW2ldID8gbWF0
Y2ggOiAwLCAicGFydCA4OiIgKyBpKTsKKyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZG9j
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgdmFsdWVzID0gWzAsIDAsIDAsIDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDBdOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSArPSAxKQorICAgICAgICAgIGV4cGVjdChlbGVtZW50
c1tpXSwgdmFsdWVzW2ldID8gbWF0Y2ggOiAwLCAicGFydCA5OiIgKyBpKTsKKyAgICAgIH0pOwor
ICAgICAgcmV0dXJuIDM7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0
IDQxOiA6cm9vdCwgOm5vdCgpCisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRk
LCBleHBlY3QpIHsKKyAgICAgICAgdmFyIG1hdGNoID0gYWRkKCI6bm90KDpyb290KSIpOworICAg
ICAgICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICAgIGRvYy5ib2R5LmFw
cGVuZENoaWxkKHApOworICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVudCwgMCwgInJv
b3Qgd2FzIDpub3QoOnJvb3QpIik7CisgICAgICAgIGV4cGVjdChkb2MuZG9jdW1lbnRFbGVtZW50
LmNoaWxkTm9kZXNbMF0sIG1hdGNoLCJoZWFkIHdhcyBub3QgOm5vdCg6cm9vdCkiKTsKKyAgICAg
ICAgZXhwZWN0KGRvYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2Rlc1sxXSwgbWF0Y2gsImJvZHkg
d2FzIG5vdCA6bm90KDpyb290KSIpOworICAgICAgICBleHBlY3QoZG9jLmRvY3VtZW50RWxlbWVu
dC5jaGlsZE5vZGVzWzBdLmZpcnN0Q2hpbGQsIG1hdGNoLCJ0aXRsZSB3YXMgbm90IDpub3QoOnJv
b3QpIik7CisgICAgICAgIGV4cGVjdChwLCBtYXRjaCwicCB3YXMgbm90IDpub3QoOnJvb3QpIik7
CisgICAgICB9KTsKKyAgICAgIHJldHVybiAzOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgLy8gdGVzdCA0MjogKywgfiwgPiwgYW5kICcgJyBpbiBkeW5hbWljIHNpdHVhdGlvbnMK
KyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQsIGV4cGVjdCkgeworICAgICAg
ICB2YXIgZGl2MSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2MS5pZCA9
ICJkaXYxIjsKKyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoZGl2MSk7CisgICAgICAgIHZh
ciBkaXYyID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkb2MuYm9keS5hcHBl
bmRDaGlsZChkaXYyKTsKKyAgICAgICAgdmFyIGRpdjMgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGRpdjMpOworICAgICAgICB2YXIgZGl2
MzEgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdjMuYXBwZW5kQ2hpbGQo
ZGl2MzEpOworICAgICAgICB2YXIgZGl2MzExID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBkaXYzMS5hcHBlbmRDaGlsZChkaXYzMTEpOworICAgICAgICB2YXIgZGl2MzExMSA9
IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2MzExLmFwcGVuZENoaWxkKGRp
djMxMTEpOworICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIiNkaXYxIH4gZGl2IGRpdiArIGRpdiA+
IGRpdiIpOworICAgICAgICBleHBlY3QoZGl2MSwgMCwgImZhaWx1cmUgMSIpOworICAgICAgICBl
eHBlY3QoZGl2MiwgMCwgImZhaWx1cmUgMiIpOworICAgICAgICBleHBlY3QoZGl2MywgMCwgImZh
aWx1cmUgMyIpOworICAgICAgICBleHBlY3QoZGl2MzEsIDAsICJmYWlsdXJlIDQiKTsKKyAgICAg
ICAgZXhwZWN0KGRpdjMxMSwgMCwgImZhaWx1cmUgNSIpOworICAgICAgICBleHBlY3QoZGl2MzEx
MSwgMCwgImZhaWx1cmUgNiIpOworICAgICAgICB2YXIgZGl2MzEwID0gZG9jLmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBkaXYzMS5pbnNlcnRCZWZvcmUoZGl2MzEwLCBkaXYzMTEpOwor
ICAgICAgICBleHBlY3QoZGl2MSwgMCwgImZhaWx1cmUgNyIpOworICAgICAgICBleHBlY3QoZGl2
MiwgMCwgImZhaWx1cmUgOCIpOworICAgICAgICBleHBlY3QoZGl2MywgMCwgImZhaWx1cmUgOSIp
OworICAgICAgICBleHBlY3QoZGl2MzEsIDAsICJmYWlsdXJlIDEwIik7CisgICAgICAgIGV4cGVj
dChkaXYzMTAsIDAsICJmYWlsdXJlIDExIik7CisgICAgICAgIGV4cGVjdChkaXYzMTEsIDAsICJm
YWlsdXJlIDEyIik7CisgICAgICAgIGV4cGVjdChkaXYzMTExLCBtYXRjaCwgInJ1bGUgZGlkIG5v
dCBzdGFydCBtYXRjaGluZyBhZnRlciBjaGFuZ2UiKTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0
b3JUZXN0KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIHZhciBkaXYxID0g
ZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYxLmlkID0gImRpdjEiOworICAg
ICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChkaXYxKTsKKyAgICAgICAgdmFyIGRpdjIgPSBkb2Mu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdjEuYXBwZW5kQ2hpbGQoZGl2Mik7Cisg
ICAgICAgIHZhciBkaXYzID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYy
LmFwcGVuZENoaWxkKGRpdjMpOworICAgICAgICB2YXIgZGl2NCA9IGRvYy5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgZGl2My5hcHBlbmRDaGlsZChkaXY0KTsKKyAgICAgICAgdmFyIGRp
djUgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdjQuYXBwZW5kQ2hpbGQo
ZGl2NSk7CisgICAgICAgIHZhciBkaXY2ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
ICAgICBkaXY1LmFwcGVuZENoaWxkKGRpdjYpOworICAgICAgICB2YXIgbWF0Y2ggPSBhZGQoIiNk
aXYxID4gZGl2IGRpdiA+IGRpdiIpOworICAgICAgICBleHBlY3QoZGl2MSwgMCwgImZhaWx1cmUg
MTQiKTsKKyAgICAgICAgZXhwZWN0KGRpdjIsIDAsICJmYWlsdXJlIDE1Iik7CisgICAgICAgIGV4
cGVjdChkaXYzLCAwLCAiZmFpbHVyZSAxNiIpOworICAgICAgICBleHBlY3QoZGl2NCwgbWF0Y2gs
ICJmYWlsdXJlIDE3Iik7CisgICAgICAgIGV4cGVjdChkaXY1LCBtYXRjaCwgImZhaWx1cmUgMTgi
KTsKKyAgICAgICAgZXhwZWN0KGRpdjYsIG1hdGNoLCAiZmFpbHVyZSAxOSIpOworICAgICAgICB2
YXIgcDM0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICAgICAgZGl2My5pbnNlcnRCZWZv
cmUocDM0LCBkaXY0KTsKKyAgICAgICAgcDM0Lmluc2VydEJlZm9yZShkaXY0LCBudWxsKTsKKyAg
ICAgICAgZXhwZWN0KGRpdjEsIDAsICJmYWlsdXJlIDIwIik7CisgICAgICAgIGV4cGVjdChkaXYy
LCAwLCAiZmFpbHVyZSAyMSIpOworICAgICAgICBleHBlY3QoZGl2MywgMCwgImZhaWx1cmUgMjIi
KTsKKyAgICAgICAgZXhwZWN0KHAzNCwgMCwgImZhaWx1cmUgMjMiKTsKKyAgICAgICAgZXhwZWN0
KGRpdjQsIDAsICJmYWlsdXJlIDI0Iik7CisgICAgICAgIGV4cGVjdChkaXY1LCBtYXRjaCwgImZh
aWx1cmUgMjUiKTsKKyAgICAgICAgZXhwZWN0KGRpdjYsIG1hdGNoLCAiZmFpbHVyZSAyNiIpOwor
ICAgICAgfSk7CisgICAgICBzZWxlY3RvclRlc3QoZnVuY3Rpb24gKGRvYywgYWRkLCBleHBlY3Qp
IHsKKyAgICAgICAgdmFyIGRpdjEgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
IGRpdjEuaWQgPSAiZGl2MSI7CisgICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGRpdjEpOwor
ICAgICAgICB2YXIgZGl2MiA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2
MS5hcHBlbmRDaGlsZChkaXYyKTsKKyAgICAgICAgdmFyIGRpdjMgPSBkb2MuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIGRpdjIuYXBwZW5kQ2hpbGQoZGl2Myk7CisgICAgICAgIHZhciBk
aXY0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYzLmFwcGVuZENoaWxk
KGRpdjQpOworICAgICAgICB2YXIgZGl2NSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICAgICAgZGl2NC5hcHBlbmRDaGlsZChkaXY1KTsKKyAgICAgICAgdmFyIGRpdjYgPSBkb2MuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdjUuYXBwZW5kQ2hpbGQoZGl2Nik7CisgICAg
ICAgIHZhciBtYXRjaCA9IGFkZCgiI2RpdjEgPiBkaXYgZGl2ID4gZGl2Iik7CisgICAgICAgIGV4
cGVjdChkaXYxLCAwLCAiZmFpbHVyZSAyNyIpOworICAgICAgICBleHBlY3QoZGl2MiwgMCwgImZh
aWx1cmUgMjgiKTsKKyAgICAgICAgZXhwZWN0KGRpdjMsIDAsICJmYWlsdXJlIDI5Iik7CisgICAg
ICAgIGV4cGVjdChkaXY0LCBtYXRjaCwgImZhaWx1cmUgMzAiKTsKKyAgICAgICAgZXhwZWN0KGRp
djUsIG1hdGNoLCAiZmFpbHVyZSAzMSIpOworICAgICAgICBleHBlY3QoZGl2NiwgbWF0Y2gsICJm
YWlsdXJlIDMyIik7CisgICAgICAgIHZhciBwMjMgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOwor
ICAgICAgICBkaXYyLmluc2VydEJlZm9yZShwMjMsIGRpdjMpOworICAgICAgICBwMjMuaW5zZXJ0
QmVmb3JlKGRpdjMsIG51bGwpOworICAgICAgICBleHBlY3QoZGl2MSwgMCwgImZhaWx1cmUgMzMi
KTsKKyAgICAgICAgZXhwZWN0KGRpdjIsIDAsICJmYWlsdXJlIDM0Iik7CisgICAgICAgIGV4cGVj
dChkaXYzLCAwLCAiZmFpbHVyZSAzNSIpOworICAgICAgICBleHBlY3QocDIzLCAwLCAiZmFpbHVy
ZSAzNiIpOworICAgICAgICBleHBlY3QoZGl2NCwgbWF0Y2gsICJmYWlsdXJlIDM3Iik7CisgICAg
ICAgIGV4cGVjdChkaXY1LCBtYXRjaCwgImZhaWx1cmUgMzgiKTsKKyAgICAgICAgZXhwZWN0KGRp
djYsIG1hdGNoLCAiZmFpbHVyZSAzOSIpOworICAgICAgfSk7CisgICAgICByZXR1cm4gMzsKKyAg
ICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgNDM6IDplbmFibGVkLCA6ZGlz
YWJsZWQsIDpjaGVja2VkLCBldGMKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBh
ZGQsIGV4cGVjdCkgeworICAgICAgICB2YXIgaW5wdXQgPSBkb2MuY3JlYXRlRWxlbWVudCgnaW5w
dXQnKTsKKyAgICAgICAgaW5wdXQudHlwZSA9ICdjaGVja2JveCc7CisgICAgICAgIGRvYy5ib2R5
LmFwcGVuZENoaWxkKGlucHV0KTsKKyAgICAgICAgdmFyIG5laXRoZXIgPSAwOworICAgICAgICB2
YXIgYm90aCA9IGFkZCgiOmNoZWNrZWQ6ZW5hYmxlZCIpOworICAgICAgICB2YXIgY2hlY2tlZCA9
IGFkZCgiOmNoZWNrZWQiKTsKKyAgICAgICAgdmFyIGVuYWJsZWQgPSBhZGQoIjplbmFibGVkIik7
CisgICAgICAgIGV4cGVjdChkb2MuYm9keSwgbmVpdGhlciwgImNvbnRyb2wgZmFpbHVyZSIpOwor
ICAgICAgICBleHBlY3QoaW5wdXQsIGVuYWJsZWQsICJpbnB1dCBlbGVtZW50IGRpZG4ndCBtYXRj
aCA6ZW5hYmxlZCIpOworICAgICAgICBpbnB1dC5jbGljaygpOworICAgICAgICBleHBlY3QoaW5w
dXQsIGJvdGgsICJpbnB1dCBlbGVtZW50IGRpZG4ndCBtYXRjaCA6Y2hlY2tlZCIpOworICAgICAg
ICBpbnB1dC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGV4cGVjdChpbnB1dCwgY2hlY2tlZCwg
ImZhaWx1cmUgMyIpOworICAgICAgICBpbnB1dC5jaGVja2VkID0gZmFsc2U7CisgICAgICAgIGV4
cGVjdChpbnB1dCwgbmVpdGhlciwgImZhaWx1cmUgNCIpOworICAgICAgICBleHBlY3QoZG9jLmJv
ZHksIG5laXRoZXIsICJmYWlsdXJlIDUiKTsKKyAgICAgIH0pOworICAgICAgc2VsZWN0b3JUZXN0
KGZ1bmN0aW9uIChkb2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIHZhciBpbnB1dDEgPSBkb2Mu
Y3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICAgICAgaW5wdXQxLnR5cGUgPSAncmFkaW8nOwor
ICAgICAgICBpbnB1dDEubmFtZSA9ICdyYWRpbyc7CisgICAgICAgIGRvYy5ib2R5LmFwcGVuZENo
aWxkKGlucHV0MSk7CisgICAgICAgIHZhciBpbnB1dDIgPSBkb2MuY3JlYXRlRWxlbWVudCgnaW5w
dXQnKTsKKyAgICAgICAgaW5wdXQyLnR5cGUgPSAncmFkaW8nOworICAgICAgICBpbnB1dDIubmFt
ZSA9ICdyYWRpbyc7CisgICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGlucHV0Mik7CisgICAg
ICAgIHZhciBjaGVja2VkID0gYWRkKCI6Y2hlY2tlZCIpOworICAgICAgICBleHBlY3QoaW5wdXQx
LCAwLCAiZmFpbHVyZSA2Iik7CisgICAgICAgIGV4cGVjdChpbnB1dDIsIDAsICJmYWlsdXJlIDci
KTsKKyAgICAgICAgaW5wdXQyLmNsaWNrKCk7CisgICAgICAgIGV4cGVjdChpbnB1dDEsIDAsICJm
YWlsdXJlIDYiKTsKKyAgICAgICAgZXhwZWN0KGlucHV0MiwgY2hlY2tlZCwgImZhaWx1cmUgNyIp
OworICAgICAgICBpbnB1dDEuY2hlY2tlZCA9IHRydWU7CisgICAgICAgIGV4cGVjdChpbnB1dDEs
IGNoZWNrZWQsICJmYWlsdXJlIDgiKTsKKyAgICAgICAgZXhwZWN0KGlucHV0MiwgMCwgImZhaWx1
cmUgOSIpOworICAgICAgICBpbnB1dDIuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwgImNoZWNrZWQi
KTsgLy8gc2V0cyBkZWZhdWx0Q2hlY2tlZCwgZG9lc24ndCBjaGFuZ2UgYWN0dWFsIHN0YXRlCisg
ICAgICAgIGV4cGVjdChpbnB1dDEsIGNoZWNrZWQsICJmYWlsdXJlIDEwIik7CisgICAgICAgIGV4
cGVjdChpbnB1dDIsIDAsICJmYWlsdXJlIDExIik7CisgICAgICAgIGlucHV0MS50eXBlID0gInRl
eHQiOworICAgICAgICBleHBlY3QoaW5wdXQxLCAwLCAidGV4dCBmaWVsZCBtYXRjaGVkIDpjaGVj
a2VkIik7CisgICAgICB9KTsKKyAgICAgIHNlbGVjdG9yVGVzdChmdW5jdGlvbiAoZG9jLCBhZGQs
IGV4cGVjdCkgeworICAgICAgICB2YXIgaW5wdXQgPSBkb2MuY3JlYXRlRWxlbWVudCgnaW5wdXQn
KTsKKyAgICAgICAgaW5wdXQudHlwZSA9ICdidXR0b24nOworICAgICAgICBkb2MuYm9keS5hcHBl
bmRDaGlsZChpbnB1dCk7CisgICAgICAgIHZhciBuZWl0aGVyID0gMDsKKyAgICAgICAgdmFyIGVu
YWJsZWQgPSBhZGQoIjplbmFibGVkIik7CisgICAgICAgIHZhciBkaXNhYmxlZCA9IGFkZCgiOmRp
c2FibGVkIik7CisgICAgICAgIGFkZCgiOmVuYWJsZWQ6ZGlzYWJsZWQiKTsKKyAgICAgICAgZXhw
ZWN0KGlucHV0LCBlbmFibGVkLCAiZmFpbHVyZSAxMiIpOworICAgICAgICBpbnB1dC5kaXNhYmxl
ZCA9IHRydWU7CisgICAgICAgIGV4cGVjdChpbnB1dCwgZGlzYWJsZWQsICJmYWlsdXJlIDEzIik7
CisgICAgICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKTsKKyAgICAgICAgZXhw
ZWN0KGlucHV0LCBlbmFibGVkLCAiZmFpbHVyZSAxNCIpOworICAgICAgICBleHBlY3QoZG9jLmJv
ZHksIG5laXRoZXIsICJmYWlsdXJlIDE1Iik7CisgICAgICB9KTsKKyAgICAgIHJldHVybiAzOwor
ICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA0NDogc2VsZWN0b3JzIHdp
dGhvdXQgc3BhY2VzIGJlZm9yZSBhICIqIgorICAgICAgc2VsZWN0b3JUZXN0KGZ1bmN0aW9uIChk
b2MsIGFkZCwgZXhwZWN0KSB7CisgICAgICAgIGRvYy5ib2R5LmNsYXNzTmFtZSA9ICJ0ZXN0IjsK
KyAgICAgICAgdmFyIHAgPSBkb2MuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICBwLmNsYXNz
TmFtZSA9ICJ0ZXN0IjsKKyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7CisgICAgICAg
IGFkZCgiaHRtbCoudGVzdCIpOworICAgICAgICBleHBlY3QoZG9jLmJvZHksIDAsICJtaXNwYXJz
ZWQgc2VsZWN0b3JzIik7CisgICAgICAgIGV4cGVjdChwLCAwLCAicmVhbGx5IG1pc3BhcnNlZCBz
ZWxlY3RvcnMiKTsKKyAgICAgIH0pOworICAgICAgcmV0dXJuIDM7CisgICAgfSwKKyAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDQ1OiBjc3NGbG9hdCBhbmQgdGhlIHN0eWxlIGF0dHJp
YnV0ZQorICAgICAgYXNzZXJ0KCFkb2N1bWVudC5ib2R5LnN0eWxlLmNzc0Zsb2F0LCAiYm9keSBo
YXMgZmxvYXRhdGlvbiIpOworICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoInN0eWxl
IiwgImZsb2F0OiByaWdodCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmJvZHkuc3R5
bGUuY3NzRmxvYXQsICJyaWdodCIsICJib2R5IGRvZXNuJ3QgaGF2ZSBmbG9hdGF0aW9uIik7Cisg
ICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZmxvYXQ6IG5vbmUiKTsK
KyAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5ib2R5LnN0eWxlLmNzc0Zsb2F0LCAibm9uZSIs
ICJib2R5IGRpZG4ndCBsb3NlIGZsb2F0YXRpb24iKTsKKyAgICAgIHJldHVybiAzOworICAgIH0s
CisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA0NjogbWVkaWEgcXVlcmllcworICAg
ICAgdmFyIGRvYyA9IGdldFRlc3REb2N1bWVudCgpOworICAgICAgdmFyIHN0eWxlID0gZG9jLmNy
ZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CisgICAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAn
dGV4dC9jc3MnKTsKKyAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgn
QG1lZGlhIGFsbCBhbmQgKG1pbi1jb2xvcjogMCkgeyAjYSB7IHRleHQtdHJhbnNmb3JtOiB1cHBl
cmNhc2U7IH0gfScpKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcworICAgICAg
c3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgbm90IGFsbCBhbmQg
KG1pbi1jb2xvcjogMCkgeyAjYiB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsK
KyAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG9ubHkg
YWxsIGFuZCAobWluLWNvbG9yOiAwKSB7ICNjIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsg
fSB9JykpOyAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcworICAgICAgc3R5bGUuYXBwZW5k
Q2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgKGJvZ3VzKSB7ICNkIHsgdGV4dC10cmFu
c2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNy
ZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCAoYm9ndXMpIHsgI2UgeyB0ZXh0LXRyYW5zZm9y
bTogdXBwZXJjYXNlOyB9IH0nKSk7CisgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRl
VGV4dE5vZGUoJ0BtZWRpYSBub3QgYWxsIGFuZCAoYm9ndXMpIHsgI2YgeyB0ZXh0LXRyYW5zZm9y
bTogdXBwZXJjYXNlOyB9IH0nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNo
ZXMKKyAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIG9u
bHkgYWxsIGFuZCAoYm9ndXMpIHsgI2cgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0n
KSk7CisgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSAo
Ym9ndXMpLCBhbGwgeyAjaCB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKKyAg
ICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCBhbmQg
KGJvZ3VzKSwgYWxsIHsgI2kgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcworICAgICAgc3R5bGUuYXBwZW5kQ2hp
bGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgbm90IGFsbCBhbmQgKGJvZ3VzKSwgYWxsIHsg
I2ogeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAvLyBtYXRjaGVzCisgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5v
ZGUoJ0BtZWRpYSBvbmx5IGFsbCBhbmQgKGJvZ3VzKSwgYWxsIHsgI2sgeyB0ZXh0LXRyYW5zZm9y
bTogdXBwZXJjYXNlOyB9IH0nKSk7ICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoZXMKKyAg
ICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCwgKGJv
Z3VzKSB7ICNsIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAgICAgc3R5
bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsLCBhbGwgYW5kIChi
b2d1cykgeyAjbSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBtYXRjaGVzCisgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2Mu
Y3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwsIG5vdCBhbGwgYW5kIChib2d1cykgeyAjbiB7IHRl
eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsgICAgICAgICAgICAgICAgICAgICAgIC8v
IG1hdGNoZXMKKyAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1l
ZGlhIGFsbCwgb25seSBhbGwgYW5kIChib2d1cykgeyAjbyB7IHRleHQtdHJhbnNmb3JtOiB1cHBl
cmNhc2U7IH0gfScpKTsgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcworICAgICAgc3R5
bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCBjb2xvciB7
ICNwIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAgICAgc3R5bGUuYXBw
ZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCBtaW4tY29sb3I6IDAg
eyAjcSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKKyAgICAgIHN0eWxlLmFw
cGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCwgYWxsIGFuZCBjb2xvciB7
ICNyIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAgICAgc3R5bGUuYXBw
ZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsLCBhbGwgYW5kIG1pbi1jb2xv
cjogMCB7ICNzIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAgICAgc3R5
bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCBtaW4tY29s
b3I6IDAsIGFsbCB7ICN0IHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAg
ICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgKG1pbi1jb2xv
cjogMCkgYW5kIChtaW4tbW9ub2Nocm9tZTogMCkgeyAjdSB7IHRleHQtdHJhbnNmb3JtOiB1cHBl
cmNhc2U7IH0gfScpKTsKKyAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9k
ZSgnQG1lZGlhIChtaW4tY29sb3I6IDApLCAobWluLW1vbm9jaHJvbWU6IDApIHsgI3YgeyB0ZXh0
LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9IH0nKSk7CisgICAgICBzdHlsZS5hcHBlbmRDaGlsZChk
b2MuY3JlYXRlVGV4dE5vZGUoJ0BtZWRpYSBhbGwgYW5kIChtaW4tY29sb3I6IDApLCBhbGwgYW5k
IChtaW4tbW9ub2Nocm9tZTogMCkgeyAjdyB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0g
fScpKTsgLy8gbWF0Y2hlcworICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHRO
b2RlKCdAbWVkaWEgbm90IGFsbCBhbmQgKG1pbi1jb2xvcjogMCksIG5vdCBhbGwgYW5kIChtaW4t
bW9ub2Nocm9tZTogMCkgeyAjeCB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsg
Ly8gbWF0Y2hlcworICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdA
bWVkaWEgYWxsIGFuZCAobWluLWhlaWdodDogMWVtKSBhbmQgKG1pbi13aWR0aDogMWVtKSB7ICN5
MSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfScpKTsKKyAgICAgIHN0eWxlLmFwcGVu
ZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnQG1lZGlhIGFsbCBhbmQgKG1heC1oZWlnaHQ6IDFl
bSkgYW5kIChtaW4td2lkdGg6IDFlbSkgeyAjeTIgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNl
OyB9IH0nKSk7CisgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoJ0Bt
ZWRpYSBhbGwgYW5kIChtaW4taGVpZ2h0OiAxZW0pIGFuZCAobWF4LXdpZHRoOiAxZW0pIHsgI3kz
IHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSB9JykpOworICAgICAgc3R5bGUuYXBwZW5k
Q2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCdAbWVkaWEgYWxsIGFuZCAobWF4LWhlaWdodDogMWVt
KSBhbmQgKG1heC13aWR0aDogMWVtKSB7ICN5NCB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7
IH0gfScpKTsgLy8gbWF0Y2hlcworICAgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFk
JylbMF0uYXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgdmFyIG5hbWVzID0gWydhJywgJ2InLCAn
YycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24n
LCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5MScs
ICd5MicsICd5MycsICd5NCddOworICAgICAgZm9yICh2YXIgaSBpbiBuYW1lcykgeworICAgICAg
ICB2YXIgcCA9IGRvYy5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICAgIHAuaWQgPSBuYW1lc1tp
XTsKKyAgICAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQocCk7CisgICAgICB9CisgICAgICB2YXIg
Y291bnQgPSAwOworICAgICAgdmFyIGNoZWNrID0gZnVuY3Rpb24gKGMsIGUpIHsKKyAgICAgICAg
Y291bnQgKz0gMTsKKyAgICAgICAgdmFyIHAgPSBkb2MuZ2V0RWxlbWVudEJ5SWQoYyk7CisgICAg
ICAgIGFzc2VydEVxdWFscyhkb2MuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwLCAnJyku
dGV4dFRyYW5zZm9ybSwgZSA/ICd1cHBlcmNhc2UnIDogJ25vbmUnLCAiY2FzZSAiICsgYyArICIg
ZmFpbGVkIChpbmRleCAiICsgY291bnQgKyAiKSIpOworICAgICAgfQorICAgICAgY2hlY2soJ2En
LCB0cnVlKTsgLy8gMQorICAgICAgY2hlY2soJ2InLCBmYWxzZSk7CisgICAgICBjaGVjaygnYycs
IHRydWUpOworICAgICAgY2hlY2soJ2QnLCBmYWxzZSk7CisgICAgICBjaGVjaygnZScsIGZhbHNl
KTsKKyAgICAgIGNoZWNrKCdmJywgdHJ1ZSk7CisgICAgICBjaGVjaygnZycsIGZhbHNlKTsKKyAg
ICAgIGNoZWNrKCdoJywgZmFsc2UpOworICAgICAgY2hlY2soJ2knLCB0cnVlKTsKKyAgICAgIGNo
ZWNrKCdqJywgdHJ1ZSk7IC8vIDEwCisgICAgICBjaGVjaygnaycsIHRydWUpOworICAgICAgY2hl
Y2soJ2wnLCBmYWxzZSk7CisgICAgICBjaGVjaygnbScsIHRydWUpOworICAgICAgY2hlY2soJ24n
LCB0cnVlKTsKKyAgICAgIGNoZWNrKCdvJywgdHJ1ZSk7CisgICAgICBjaGVjaygncCcsIGZhbHNl
KTsKKyAgICAgIGNoZWNrKCdxJywgZmFsc2UpOworICAgICAgY2hlY2soJ3InLCBmYWxzZSk7Cisg
ICAgICBjaGVjaygncycsIGZhbHNlKTsKKyAgICAgIGNoZWNrKCd0JywgZmFsc2UpOyAvLyAyMAor
ICAgICAgY2hlY2soJ3UnLCBmYWxzZSk7CisgICAgICBjaGVjaygndicsIGZhbHNlKTsKKyAgICAg
IGNoZWNrKCd3JywgdHJ1ZSk7CisgICAgICBjaGVjaygneCcsIHRydWUpOworICAgICAgLy8gaGVy
ZSB0aGUgdmlld3BvcnQgaXMgMHgwCisgICAgICBjaGVjaygneTEnLCBmYWxzZSk7IC8vIDI1Cisg
ICAgICBjaGVjaygneTInLCBmYWxzZSk7CisgICAgICBjaGVjaygneTMnLCBmYWxzZSk7CisgICAg
ICBjaGVjaygneTQnLCB0cnVlKTsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxl
Y3RvcnMiKS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImhlaWdodDogMTAwcHg7IHdpZHRoOiAxMDBw
eCIpOworICAgICAgLy8gbm93IHRoZSB2aWV3cG9ydCBpcyBtb3JlIHRoYW4gMWVtIGJ5IDFlbQor
ICAgICAgY2hlY2soJ3kxJywgdHJ1ZSk7IC8vIDI5CisgICAgICBjaGVjaygneTInLCBmYWxzZSk7
CisgICAgICBjaGVjaygneTMnLCBmYWxzZSk7CisgICAgICBjaGVjaygneTQnLCBmYWxzZSk7Cisg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0b3JzIikucmVtb3ZlQXR0cmlidXRl
KCJzdHlsZSIpOworICAgICAgLy8gaGVyZSB0aGUgdmlld3BvcnQgaXMgMHgwIGFnYWluCisgICAg
ICBjaGVjaygneTEnLCBmYWxzZSk7IC8vIDMzCisgICAgICBjaGVjaygneTInLCBmYWxzZSk7Cisg
ICAgICBjaGVjaygneTMnLCBmYWxzZSk7CisgICAgICBjaGVjaygneTQnLCB0cnVlKTsKKyAgICAg
IHJldHVybiAzOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA0Nzog
J2N1cnNvcicgYW5kIENTUzMgdmFsdWVzCisgICAgICB2YXIgZG9jID0gZ2V0VGVzdERvY3VtZW50
KCk7CisgICAgICB2YXIgc3R5bGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKKyAgICAg
IHN0eWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpOworICAgICAgdmFyIGN1cnNv
cnMgPSBbJ2F1dG8nLCAnZGVmYXVsdCcsICdub25lJywgJ2NvbnRleHQtbWVudScsICdoZWxwJywg
J3BvaW50ZXInLCAncHJvZ3Jlc3MnLCAnd2FpdCcsICdjZWxsJywgJ2Nyb3NzaGFpcicsICd0ZXh0
JywgJ3ZlcnRpY2FsLXRleHQnLCAnYWxpYXMnLCAnY29weScsICdtb3ZlJywgJ25vLWRyb3AnLCAn
bm90LWFsbG93ZWQnLCAnZS1yZXNpemUnLCAnbi1yZXNpemUnLCAnbmUtcmVzaXplJywgJ253LXJl
c2l6ZScsICdzLXJlc2l6ZScsICdzZS1yZXNpemUnLCAnc3ctcmVzaXplJywgJ3ctcmVzaXplJywg
J2V3LXJlc2l6ZScsICducy1yZXNpemUnLCAnbmVzdy1yZXNpemUnLCAnbndzZS1yZXNpemUnLCAn
Y29sLXJlc2l6ZScsICdyb3ctcmVzaXplJywgJ2FsbC1zY3JvbGwnXTsKKyAgICAgIGZvciAodmFy
IGkgaW4gY3Vyc29ycykgeworICAgICAgICB2YXIgYyA9IGN1cnNvcnNbaV07CisgICAgICAgIHN0
eWxlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnIycgKyBjICsgJyB7IGN1cnNvcjog
JyArIGMgKyAnOyB9JykpOworICAgICAgfQorICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jLmNy
ZWF0ZVRleHROb2RlKCcjYm9ndXMgeyBjdXJzb3I6IGJvZ3VzOyB9JykpOworICAgICAgZG9jLmJv
ZHkucHJldmlvdXNTaWJsaW5nLmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgICAgIGRvYy5ib2R5Lmlk
ID0gImJvZ3VzIjsKKyAgICAgIGFzc2VydEVxdWFscyhkb2MuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShkb2MuYm9keSwgJycpLmN1cnNvciwgImF1dG8iLCAiY29udHJvbCBmYWlsZWQiKTsK
KyAgICAgIGZvciAodmFyIGkgaW4gY3Vyc29ycykgeworICAgICAgICB2YXIgYyA9IGN1cnNvcnNb
aV07CisgICAgICAgIGRvYy5ib2R5LmlkID0gYzsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvYy5ib2R5LCAnJykuY3Vyc29yLCBjLCAiY3Vy
c29yICIgKyBjICsgIiBub3Qgc3VwcG9ydGVkIik7CisgICAgICB9CisgICAgICByZXR1cm4gMzsK
KyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgNDg6IDpsaW5rIGFuZCA6
dmlzaXRlZAorICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxl
Y3RvcnMiKTsKKyAgICAgIHZhciBudW1iZXIgPSAobmV3IERhdGUoKSkudmFsdWVPZigpOworICAg
ICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisgICAgICBhLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdMSU5LVEVTVCBGQUlMRUQnKSk7CisgICAgICBh
LnNldEF0dHJpYnV0ZSgnaWQnLCAnbGlua3Rlc3QnKTsKKyAgICAgIGEuc2V0QXR0cmlidXRlKCdj
bGFzcycsICdwZW5kaW5nJyk7CisgICAgICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIGlmcmFtZS5n
ZXRBdHRyaWJ1dGUoJ3NyYycpICsgIj8iICsgbnVtYmVyKTsKKyAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdtYXAnKVswXS5hcHBlbmRDaGlsZChhKTsKKyAgICAgIGlmcmFtZS5z
ZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlua3Rlc3Qn
KS5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJykiKTsKKyAgICAgIGlmcmFtZS5zcmMgPSBhLmdldEF0
dHJpYnV0ZSgiaHJlZiIpOworICAgICAgcmV0dXJuIDM7CisgICAgfSwKKworICAgIC8vIGJ1Y2tl
dCA0OiBIVE1MIGFuZCB0aGUgRE9NCisgICAgLy8gVGFibGVzCisgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgLy8gdGVzdCA0OTogYmFzaWMgdGFibGUgYWNjZXNzb3IgcGluZyB0ZXN0IGNyZWF0ZSos
IGRlbGV0ZSosIGFuZCAqCisgICAgICAvLyB3aGVyZSAqIGlzIGNhcHRpb24sIHRIZWFkLCB0Rm9v
dC4KKyAgICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7Cisg
ICAgICBhc3NlcnQoIXRhYmxlLmNhcHRpb24sICJpbml0aWFsbHk6IGNhcHRpb24iKTsKKyAgICAg
IGFzc2VydCh0YWJsZS50Qm9kaWVzLCAiaW5pdGlhbGx5OiB0Qm9kaWVzIik7CisgICAgICBhc3Nl
cnRFcXVhbHModGFibGUudEJvZGllcy5sZW5ndGgsIDAsICJpbml0aWFsbHk6IHRCb2RpZXMubGVu
Z3RoIik7CisgICAgICBhc3NlcnQodGFibGUucm93cywgImluaXRpYWxseTogcm93cyIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnJvd3MubGVuZ3RoLCAwLCAiaW5pdGlhbGx5OiByb3dzLmxl
bmd0aCIpOworICAgICAgYXNzZXJ0KCF0YWJsZS50Rm9vdCwgImluaXRpYWxseTogdEZvb3QiKTsK
KyAgICAgIGFzc2VydCghdGFibGUudEhlYWQsICJpbml0aWFsbHk6IHRIZWFkIik7CisgICAgICB2
YXIgY2FwdGlvbiA9IHRhYmxlLmNyZWF0ZUNhcHRpb24oKTsKKyAgICAgIHZhciB0aGVhZCA9IHRh
YmxlLmNyZWF0ZVRIZWFkKCk7CisgICAgICB2YXIgdGZvb3QgPSB0YWJsZS5jcmVhdGVURm9vdCgp
OworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmNhcHRpb24sIGNhcHRpb24sICJhZnRlciBjcmVh
dGlvbjogY2FwdGlvbiIpOworICAgICAgYXNzZXJ0KHRhYmxlLnRCb2RpZXMsICJhZnRlciBjcmVh
dGlvbjogdEJvZGllcyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRCb2RpZXMubGVuZ3Ro
LCAwLCAiYWZ0ZXIgY3JlYXRpb246IHRCb2RpZXMubGVuZ3RoIik7CisgICAgICBhc3NlcnQodGFi
bGUucm93cywgImFmdGVyIGNyZWF0aW9uOiByb3dzIik7CisgICAgICBhc3NlcnRFcXVhbHModGFi
bGUucm93cy5sZW5ndGgsIDAsICJhZnRlciBjcmVhdGlvbjogcm93cy5sZW5ndGgiKTsKKyAgICAg
IGFzc2VydEVxdWFscyh0YWJsZS50Rm9vdCwgdGZvb3QsICJhZnRlciBjcmVhdGlvbjogdEZvb3Qi
KTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS50SGVhZCwgdGhlYWQsICJhZnRlciBjcmVhdGlv
bjogdEhlYWQiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCwg
MywgImFmdGVyIGNyZWF0aW9uOiBjaGlsZE5vZGVzLmxlbmd0aCIpOworICAgICAgdGFibGUuY2Fw
dGlvbiA9IGNhcHRpb247IC8vIG5vLW9wCisgICAgICB0YWJsZS50SGVhZCA9IHRoZWFkOyAvLyBu
by1vcAorICAgICAgdGFibGUudEZvb3QgPSB0Zm9vdDsgLy8gbm8tb3AKKyAgICAgIGFzc2VydEVx
dWFscyh0YWJsZS5jYXB0aW9uLCBjYXB0aW9uLCAiYWZ0ZXIgc2V0dGluZzogY2FwdGlvbiIpOwor
ICAgICAgYXNzZXJ0KHRhYmxlLnRCb2RpZXMsICJhZnRlciBzZXR0aW5nOiB0Qm9kaWVzIik7Cisg
ICAgICBhc3NlcnRFcXVhbHModGFibGUudEJvZGllcy5sZW5ndGgsIDAsICJhZnRlciBzZXR0aW5n
OiB0Qm9kaWVzLmxlbmd0aCIpOworICAgICAgYXNzZXJ0KHRhYmxlLnJvd3MsICJhZnRlciBzZXR0
aW5nOiByb3dzIik7CisgICAgICBhc3NlcnRFcXVhbHModGFibGUucm93cy5sZW5ndGgsIDAsICJh
ZnRlciBzZXR0aW5nOiByb3dzLmxlbmd0aCIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRG
b290LCB0Zm9vdCwgImFmdGVyIHNldHRpbmc6IHRGb290Iik7CisgICAgICBhc3NlcnRFcXVhbHMo
dGFibGUudEhlYWQsIHRoZWFkLCAiYWZ0ZXIgc2V0dGluZzogdEhlYWQiKTsKKyAgICAgIGFzc2Vy
dEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCwgMywgImFmdGVyIHNldHRpbmc6IGNoaWxk
Tm9kZXMubGVuZ3RoIik7CisgICAgICB0YWJsZS5kZWxldGVDYXB0aW9uKCk7CisgICAgICB0YWJs
ZS5kZWxldGVUSGVhZCgpOworICAgICAgdGFibGUuZGVsZXRlVEZvb3QoKTsKKyAgICAgIGFzc2Vy
dCghdGFibGUuY2FwdGlvbiwgImFmdGVyIGRlbGV0aW9uOiBjYXB0aW9uIik7CisgICAgICBhc3Nl
cnQodGFibGUudEJvZGllcywgImFmdGVyIGRlbGV0aW9uOiB0Qm9kaWVzIik7CisgICAgICBhc3Nl
cnRFcXVhbHModGFibGUudEJvZGllcy5sZW5ndGgsIDAsICJhZnRlciBkZWxldGlvbjogdEJvZGll
cy5sZW5ndGgiKTsKKyAgICAgIGFzc2VydCh0YWJsZS5yb3dzLCAiYWZ0ZXIgZGVsZXRpb246IHJv
d3MiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5yb3dzLmxlbmd0aCwgMCwgImFmdGVyIGRl
bGV0aW9uOiByb3dzLmxlbmd0aCIpOworICAgICAgYXNzZXJ0KCF0YWJsZS50Rm9vdCwgImFmdGVy
IGRlbGV0aW9uOiB0Rm9vdCIpOworICAgICAgYXNzZXJ0KCF0YWJsZS50SGVhZCwgImFmdGVyIGRl
bGV0aW9uOiB0SGVhZCIpOworICAgICAgYXNzZXJ0KCF0YWJsZS5oYXNDaGlsZE5vZGVzKCksICJh
ZnRlciBkZWxldGlvbjogaGFzQ2hpbGROb2RlcygpIik7CisgICAgICBhc3NlcnRFcXVhbHModGFi
bGUuY2hpbGROb2Rlcy5sZW5ndGgsIDAsICJhZnRlciBkZWxldGlvbjogY2hpbGROb2Rlcy5sZW5n
dGgiKTsKKyAgICAgIHJldHVybiA0OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAg
Ly8gdGVzdCA1MDogY29uc3RydWN0IGEgdGFibGUsIGFuZCBzZWUgaWYgdGhlIHRhYmxlIGlzIGFz
IGV4cGVjdGVkCisgICAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJs
ZScpOworICAgICAgdGFibGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJv
ZHknKSk7CisgICAgICB2YXIgdHIxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKKyAg
ICAgIHRhYmxlLmFwcGVuZENoaWxkKHRyMSk7CisgICAgICB0YWJsZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdjYXB0aW9uJykpOworICAgICAgdGFibGUuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhlYWQnKSk7CisgICAgICAvLyA8dGFibGU+PHRib2R5
Lz48dHIvPjxjYXB0aW9uLz48dGhlYWQvPgorICAgICAgdGFibGUuaW5zZXJ0QmVmb3JlKHRhYmxl
LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcsIG51bGwpOyAvLyBtb3ZlIHRoZSA8dHIvPiB0byB0aGUg
ZW5kCisgICAgICAvLyA8dGFibGU+PHRib2R5Lz48Y2FwdGlvbi8+PHRoZWFkLz48dHIvPgorICAg
ICAgdGFibGUucmVwbGFjZUNoaWxkKHRhYmxlLmZpcnN0Q2hpbGQsIHRhYmxlLmxhc3RDaGlsZCk7
IC8vIG1vdmUgdGhlIDx0Ym9keS8+IHRvIHRoZSBlbmQgYW5kIHJlbW92ZSB0aGUgPHRyPgorICAg
ICAgLy8gPHRhYmxlPjxjYXB0aW9uLz48dGhlYWQvPjx0Ym9keS8+CisgICAgICB2YXIgdHIyID0g
dGFibGUudEJvZGllc1swXS5pbnNlcnRSb3coMCk7CisgICAgICAvLyA8dGFibGU+PGNhcHRpb24v
Pjx0aGVhZC8+PHRib2R5Pjx0ci8+PFx0Ym9keT4gICAgICh0aGUgJ1wnIGlzIHRvIGF2b2lkIHZh
bGlkYXRpb24gZXJyb3JzKQorICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRCb2RpZXNbMF0ucm93
c1swXS5yb3dJbmRleCwgMCwgInJvd0luZGV4IGJyb2tlbiIpOworICAgICAgYXNzZXJ0RXF1YWxz
KHRhYmxlLnRCb2RpZXNbMF0ucm93c1swXS5zZWN0aW9uUm93SW5kZXgsIDAsICJzZWN0aW9uUm93
SW5kZXggYnJva2VuIik7CisgICAgICBhc3NlcnRFcXVhbHModGFibGUuY2hpbGROb2Rlcy5sZW5n
dGgsIDMsICJ3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4iKTsKKyAgICAgIGFzc2VydCh0YWJsZS5j
YXB0aW9uLCAiY2FwdGlvbiBicm9rZW4iKTsKKyAgICAgIGFzc2VydCh0YWJsZS50SGVhZCwgInRI
ZWFkIGJyb2tlbiIpOworICAgICAgYXNzZXJ0KCF0YWJsZS50Rm9vdCwgInRGb290IGJyb2tlbiIp
OworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRCb2RpZXMubGVuZ3RoLCAxLCAid3JvbmcgbnVt
YmVyIG9mIHRCb2RpZXMiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5yb3dzLmxlbmd0aCwg
MSwgIndyb25nIG51bWJlciBvZiByb3dzIik7CisgICAgICBhc3NlcnQoIXRyMS5wYXJlbnROb2Rl
LCAib3JwaGFuIHJvdyBoYXMgdW5leHBlY3RlZCBwYXJlbnQiKTsKKyAgICAgIGFzc2VydEVxdWFs
cyh0YWJsZS5jYXB0aW9uLCB0YWJsZS5jcmVhdGVDYXB0aW9uKCksICJjYXB0aW9uIGNyZWF0aW9u
IGZhaWxlZCIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnRGb290LCBudWxsLCAidGFibGUg
aGFzIHVuZXhwZWN0ZWQgZm9vdGVyIik7CisgICAgICBhc3NlcnRFcXVhbHModGFibGUudEhlYWQs
IHRhYmxlLmNyZWF0ZVRIZWFkKCksICJoZWFkZXIgY3JlYXRpb24gZmFpbGVkIik7CisgICAgICBh
c3NlcnRFcXVhbHModGFibGUuY3JlYXRlVEZvb3QoKSwgdGFibGUudEZvb3QsICJmb290ZXIgY3Jl
YXRpb24gZmFpbGVkIik7CisgICAgICAvLyBlaXRoZXI6IDx0YWJsZT48Y2FwdGlvbi8+PHRoZWFk
Lz48dGJvZHk+PHRyLz48XHRib2R5Pjx0Zm9vdC8+CisgICAgICAvLyAgICAgb3I6IDx0YWJsZT48
Y2FwdGlvbi8+PHRoZWFkLz48dGZvb3QvPjx0Ym9keT48dHIvPjxcdGJvZHk+CisgICAgICB0YWJs
ZS50SGVhZC5hcHBlbmRDaGlsZCh0cjEpOworICAgICAgLy8gZWl0aGVyOiA8dGFibGU+PGNhcHRp
b24vPjx0aGVhZD48dHIvPjxcdGhlYWQ+PHRib2R5Pjx0ci8+PFx0Ym9keT48dGZvb3QvPgorICAg
ICAgLy8gICAgIG9yOiA8dGFibGU+PGNhcHRpb24vPjx0aGVhZD48dHIvPjxcdGhlYWQ+PHRmb290
Lz48dGJvZHk+PHRyLz48XHRib2R5PgorICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnJvd3NbMF0s
IHRhYmxlLnRIZWFkLmZpcnN0Q2hpbGQsICJ0b3Agcm93IG5vdCBpbiBleHBlY3RlZCBwb3NpdGlv
biIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnJvd3MubGVuZ3RoLCAyLCAid3JvbmcgbnVt
YmVyIG9mIHJvd3MgYWZ0ZXIgYXBwZW5kaW5nIG9uZSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRh
YmxlLnJvd3NbMV0sIHRhYmxlLnRCb2RpZXNbMF0uZmlyc3RDaGlsZCwgInNlY29uZCByb3cgbm90
IGluIGV4cGVjdGVkIHBvc2l0aW9uIik7CisgICAgICByZXR1cm4gNDsKKyAgICB9LAorICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgNTE6IHRlc3QgdGhlIG9yZGVyaW5nIGFuZCBjcmVh
dGlvbiBvZiByb3dzCisgICAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0
YWJsZScpOworICAgICAgdmFyIHJvd3MgPSBbCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3RyJyksICAgIC8vIDA6IGVuZHMgdXAgZmlyc3QgY2hpbGQgb2YgdGhlIHRmb290CisgICAg
ICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyksICAgIC8vIDE6IGdvZXMgYXQgdGhlIGVu
ZCBvZiB0aGUgdGFibGUKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKSwgICAg
Ly8gMjogYmVjb21lcyBzZWNvbmQgY2hpbGQgb2YgdGhlYWQKKyAgICAgICAgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgndHInKSwgICAgLy8gMzogYmVjb21lcyB0aGlyZCBjaGlsZCBvZiB0aGUgdGhl
YWQKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKSwgICAgLy8gNDogbm90IGlu
IHRoZSB0YWJsZQorICAgICAgICB0YWJsZS5pbnNlcnRSb3coMCksICAgICAgICAgICAgICAvLyA1
OiBub3QgaW4gdGhlIHRhYmxlCisgICAgICAgIHRhYmxlLmNyZWF0ZVRGb290KCkuaW5zZXJ0Um93
KDApIC8vIDY6IGVuZHMgdXAgc2Vjb25kIGluIHRoZSB0Zm9vdAorICAgICAgXTsKKyAgICAgIHJv
d3NbNl0ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChyb3dzWzBdKTsKKyAgICAgIHRhYmxlLmFwcGVu
ZENoaWxkKHJvd3NbMV0pOworICAgICAgdGFibGUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RoZWFkJyksIHRhYmxlLmZpcnN0Q2hpbGQpOworICAgICAgdGFibGUuZmlyc3RD
aGlsZC5hcHBlbmRDaGlsZChyb3dzWzJdKTsKKyAgICAgIHJvd3NbMl0ucGFyZW50Tm9kZS5hcHBl
bmRDaGlsZChyb3dzWzNdKTsKKyAgICAgIHJvd3NbNF0uYXBwZW5kQ2hpbGQocm93c1s1XS5wYXJl
bnROb2RlKTsKKyAgICAgIHRhYmxlLmluc2VydFJvdygwKTsKKyAgICAgIHRhYmxlLnRGb290LmFw
cGVuZENoaWxkKHJvd3NbNl0pOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLnJvd3MubGVuZ3Ro
LCA2LCAid3JvbmcgbnVtYmVyIG9mIHJvd3MiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKS5sZW5ndGgsIDYsICJ3cm9uZyBudW1iZXIgb2YgdHIg
ZWxlbWVudHMiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCwg
MywgInRhYmxlIGhhcyB3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4iKTsKKyAgICAgIGFzc2VydEVx
dWFscyh0YWJsZS5jaGlsZE5vZGVzWzBdLCB0YWJsZS50SGVhZCwgInRIZWFkIGlzbid0IGZpcnN0
Iik7CisgICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylb
MF0sIHRhYmxlLnRIZWFkLmNoaWxkTm9kZXNbMF0sICJmaXJzdCB0ciBpc24ndCBpbiB0SGVhZCBj
b3JyZWN0bHkiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgndHInKVsxXSwgdGFibGUudEhlYWQuY2hpbGROb2Rlc1sxXSwgInNlY29uZCB0ciBpc24ndCBp
biB0SGVhZCBjb3JyZWN0bHkiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgndHInKVsxXSwgcm93c1syXSwgInNlY29uZCB0ciBpcyB0aGUgd3Jvbmcgcm93
Iik7CisgICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylb
Ml0sIHRhYmxlLnRIZWFkLmNoaWxkTm9kZXNbMl0sICJ0aGlyZCB0ciBpc24ndCBpbiB0SGVhZCBj
b3JyZWN0bHkiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgndHInKVsyXSwgcm93c1szXSwgInRoaXJkIHRyIGlzIHRoZSB3cm9uZyByb3ciKTsKKyAgICAg
IGFzc2VydEVxdWFscyh0YWJsZS5jaGlsZE5vZGVzWzFdLCB0YWJsZS50Rm9vdCwgInRGb290IGlz
bid0IHNlY29uZCIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCd0cicpWzNdLCB0YWJsZS50Rm9vdC5jaGlsZE5vZGVzWzBdLCAiZm91cnRoIHRyIGlzbid0
IGluIHRGb290IGNvcnJlY3RseSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCd0cicpWzNdLCByb3dzWzBdLCAiZm91cnRoIHRyIGlzIHRoZSB3cm9uZyBy
b3ciKTsKKyAgICAgIGFzc2VydEVxdWFscyh0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHIn
KVs0XSwgdGFibGUudEZvb3QuY2hpbGROb2Rlc1sxXSwgImZpZnRoIHRyIGlzbid0IGluIHRGb290
IGNvcnJlY3RseSIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCd0cicpWzRdLCByb3dzWzZdLCAiZmlmdGggdHIgaXMgdGhlIHdyb25nIHJvdyIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpWzVdLCB0YWJs
ZS5jaGlsZE5vZGVzWzJdLCAic2l4dGggdHIgaXNuJ3QgaW4gdEZvb3QgY29ycmVjdGx5Iik7Cisg
ICAgICBhc3NlcnRFcXVhbHModGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJylbNV0sIHJv
d3NbMV0sICJzaXh0aCB0ciBpcyB0aGUgd3Jvbmcgcm93Iik7CisgICAgICBhc3NlcnRFcXVhbHMo
dGFibGUudEJvZGllcy5sZW5ndGgsIDAsICJub24temVybyBudW1iZXIgb2YgdEJvZGllcyIpOwor
ICAgICAgcmV0dXJuIDQ7CisgICAgfSwKKworICAgIC8vIEZvcm1zCisgICAgZnVuY3Rpb24gKCkg
eworICAgICAgLy8gdGVzdCA1MjogPGZvcm0+IGFuZCAuZWxlbWVudHMKKyAgICAgIHRlc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzBdOworICAgICAgYXNzZXJ0KHRl
c3QuZWxlbWVudHMgIT09IHRlc3QsICJmb3JtLmVsZW1lbnRzID09PSBmb3JtIik7CisgICAgICBh
c3NlcnQodGVzdC5lbGVtZW50cyAhPT0gdGVzdC5nZXRBdHRyaWJ1dGUoJ2VsZW1lbnRzJyksICJm
b3JtIGVsZW1lbnQgaGFzIGFuIGVsZW1lbnRzIGNvbnRlbnQgYXR0cmlidXRlIik7CisgICAgICBh
c3NlcnRFcXVhbHModGVzdC5lbGVtZW50cy5sZW5ndGgsIDEsICJmb3JtIGVsZW1lbnQgaGFzIHVu
ZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbnRyb2xzIik7CisgICAgICBhc3NlcnRFcXVhbHModGVzdC5l
bGVtZW50cy5sZW5ndGgsIHRlc3QubGVuZ3RoLCAiZm9ybSBlbGVtZW50IGhhcyBpbmNvbnNpc3Rl
bnQgbnVtYmVycyBvZiBjb250cm9scyIpOworICAgICAgcmV0dXJuIDQ7CisgICAgfSwKKyAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDUzOiBjaGFuZ2luZyBhbiA8aW5wdXQ+IGR5bmFt
aWNhbGx5CisgICAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKKyAg
ICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICAgIGkubmFt
ZSA9ICdmaXJzdCc7CisgICAgICBpLnR5cGUgPSAndGV4dCc7CisgICAgICBpLnZhbHVlID0gJ3Rl
c3QnOworICAgICAgZi5hcHBlbmRDaGlsZChpKTsKKyAgICAgIGFzc2VydEVxdWFscyhpLmdldEF0
dHJpYnV0ZSgnbmFtZScpLCAnZmlyc3QnLCAibmFtZSBhdHRyaWJ1dGUgd3JvbmciKTsKKyAgICAg
IGFzc2VydEVxdWFscyhpLm5hbWUsICdmaXJzdCcsICJuYW1lIHByb3BlcnR5IHdyb25nIik7Cisg
ICAgICBhc3NlcnRFcXVhbHMoaS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSwgJ3RleHQnLCAidHlwZSBh
dHRyaWJ1dGUgd3JvbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyhpLnR5cGUsICd0ZXh0JywgInR5
cGUgcHJvcGVydHkgd3JvbmciKTsKKyAgICAgIGFzc2VydCghaS5oYXNBdHRyaWJ1dGUoJ3ZhbHVl
JyksICJ2YWx1ZSBhdHRyaWJ1dGUgd3JvbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyhpLnZhbHVl
LCAndGVzdCcsICJ2YWx1ZSBwcm9wZXJ0eSB3cm9uZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKGYu
ZWxlbWVudHMubGVuZ3RoLCAxLCAiZm9ybSdzIGVsZW1lbnRzIGFycmF5IGhhcyB3cm9uZyBzaXpl
Iik7CisgICAgICBhc3NlcnRFcXVhbHMoZi5lbGVtZW50c1swXSwgaSwgImZvcm0ncyBlbGVtZW50
IGFycmF5IGRvZXNuJ3QgaGF2ZSBpbnB1dCBjb250cm9sIGJ5IGluZGV4Iik7CisgICAgICBhc3Nl
cnRFcXVhbHMoZi5lbGVtZW50cy5maXJzdCwgaSwgImZvcm0ncyBlbGVtZW50IGFycmF5IGRvZXNu
J3QgaGF2ZSBpbnB1dCBjb250cm9sIGJ5IG5hbWUiKTsKKyAgICAgIGFzc2VydEVxdWFscyhmLmVs
ZW1lbnRzLnNlY29uZCwgbnVsbCwgImZvcm0ncyBlbGVtZW50IGFycmF5IGhhcyB1bmV4cGVjdGVk
IGNvbnRyb2xzIGJ5IG5hbWUiKTsKKyAgICAgIGkubmFtZSA9ICdzZWNvbmQnOworICAgICAgaS50
eXBlID0gJ3Bhc3N3b3JkJzsKKyAgICAgIGkudmFsdWUgPSAnVEVTVCc7CisgICAgICBhc3NlcnRF
cXVhbHMoaS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSwgJ3NlY29uZCcsICJuYW1lIGF0dHJpYnV0ZSB3
cm9uZyBhZnRlciBjaGFuZ2UiKTsKKyAgICAgIGFzc2VydEVxdWFscyhpLm5hbWUsICdzZWNvbmQn
LCAibmFtZSBwcm9wZXJ0eSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsKKyAgICAgIGFzc2VydEVxdWFs
cyhpLmdldEF0dHJpYnV0ZSgndHlwZScpLCAncGFzc3dvcmQnLCAidHlwZSBhdHRyaWJ1dGUgd3Jv
bmcgYWZ0ZXIgY2hhbmdlIik7CisgICAgICBhc3NlcnRFcXVhbHMoaS50eXBlLCAncGFzc3dvcmQn
LCAidHlwZSBwcm9wZXJ0eSB3cm9uZyBhZnRlciBjaGFuZ2UiKTsKKyAgICAgIGFzc2VydCghaS5o
YXNBdHRyaWJ1dGUoJ3ZhbHVlJyksICJ2YWx1ZSBhdHRyaWJ1dGUgd3JvbmcgYWZ0ZXIgY2hhbmdl
Iik7CisgICAgICBhc3NlcnRFcXVhbHMoaS52YWx1ZSwgJ1RFU1QnLCAidmFsdWUgcHJvcGVydHkg
d3JvbmcgYWZ0ZXIgY2hhbmdlIik7CisgICAgICBhc3NlcnRFcXVhbHMoZi5lbGVtZW50cy5sZW5n
dGgsIDEsICJmb3JtJ3MgZWxlbWVudHMgYXJyYXkgaGFzIHdyb25nIHNpemUgYWZ0ZXIgY2hhbmdl
Iik7CisgICAgICBhc3NlcnRFcXVhbHMoZi5lbGVtZW50c1swXSwgaSwgImZvcm0ncyBlbGVtZW50
IGFycmF5IGRvZXNuJ3QgaGF2ZSBpbnB1dCBjb250cm9sIGJ5IGluZGV4IGFmdGVyIGNoYW5nZSIp
OworICAgICAgYXNzZXJ0RXF1YWxzKGYuZWxlbWVudHMuc2Vjb25kLCBpLCAiZm9ybSdzIGVsZW1l
bnQgYXJyYXkgZG9lc24ndCBoYXZlIGlucHV0IGNvbnRyb2wgYnkgbmFtZSBhZnRlciBjaGFuZ2Ui
KTsKKyAgICAgIGFzc2VydEVxdWFscyhmLmVsZW1lbnRzLmZpcnN0LCBudWxsLCAiZm9ybSdzIGVs
ZW1lbnQgYXJyYXkgaGFzIHVuZXhwZWN0ZWQgY29udHJvbHMgYnkgbmFtZSBhZnRlciBjaGFuZ2Ui
KTsKKyAgICAgIHJldHVybiA0OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8g
dGVzdCA1NDogY2hhbmdpbmcgYSBwYXJzZWQgPGlucHV0PgorICAgICAgdmFyIGkgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAgICAgIC8vIGluaXRpYWwgdmFs
dWVzCisgICAgICBhc3NlcnRFcXVhbHMoaS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSwgJ0hJRERFTics
ICJpbnB1dCBjb250cm9sJ3MgdHlwZSBjb250ZW50IGF0dHJpYnV0ZSB3YXMgd3JvbmciKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhpLnR5cGUsICdoaWRkZW4nLCAiaW5wdXQgY29udHJvbCdzIHR5cGUg
RE9NIGF0dHJpYnV0ZSB3YXMgd3JvbmciKTsKKyAgICAgIC8vIGNoYW5nZSB2YWx1ZXMKKyAgICAg
IGkubmFtZSA9ICd0ZXN0JzsKKyAgICAgIGFzc2VydEVxdWFscyhpLnBhcmVudE5vZGUuZWxlbWVu
dHMudGVzdCwgaSwgImlucHV0IGNvbnRyb2wncyBmb3JtIGRpZG4ndCB1cGRhdGUiKTsKKyAgICAg
IC8vIGNoZWNrIGV2ZW50IGhhbmRsZXJzCisgICAgICBpLnBhcmVudE5vZGUuYWN0aW9uID0gJ2ph
dmFzY3JpcHQ6JzsKKyAgICAgIHZhciBjYWxsZWQgPSBmYWxzZTsKKyAgICAgIGkucGFyZW50Tm9k
ZS5vbnN1Ym1pdCA9IGZ1bmN0aW9uIChhcmcpIHsKKyAgICAgICAgYXJnLnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgICB9OworICAgICAgaS50eXBlID0gJ3N1
Ym1pdCc7CisgICAgICBpLmNsaWNrKCk7IC8vIHN5bmNocm9ub3VzbHkgZGlzcGF0Y2hlcyBhIGNs
aWNrIGV2ZW50IHRvIHRoZSBzdWJtaXQgYnV0dG9uLCB3aGljaCBzdWJtaXRzIHRoZSBmb3JtLCB3
aGljaCBjYWxscyBvbnN1Ym1pdAorICAgICAgYXNzZXJ0KGNhbGxlZCwgImNsaWNrIGhhbmRsZXIg
ZGlkbid0IGRpc3BhdGNoIHByb3Blcmx5Iik7CisgICAgICBpLnR5cGUgPSAnaElkRGVOJzsKKyAg
ICAgIC8vIGNoZWNrIG51bWVyaWMgYXR0cmlidXRlcworICAgICAgaS5zZXRBdHRyaWJ1dGUoJ21h
eExlbmd0aCcsICcyJyk7CisgICAgICB2YXIgcyA9IGkuZ2V0QXR0cmlidXRlKCdtYXhMZW5ndGgn
KTsKKyAgICAgIGFzc2VydChzLm1hdGNoLCAiYXR0cmlidXRlIGlzIG5vdCBhIFN0cmluZyIpOwor
ICAgICAgYXNzZXJ0KCFzLk1JTl9WQUxVRSwgImF0dHJpYnV0ZSBpcyBhIE51bWJlciIpOworICAg
ICAgcmV0dXJuIDQ7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDU1
OiBtb3ZlZCBjaGVja2JveGVzIHNob3VsZCBrZWVwIHRoZWlyIHN0YXRlCisgICAgICB2YXIgY29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOworICAg
ICAgdmFyIGlucHV0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICBj
b250YWluZXIuYXBwZW5kQ2hpbGQoaW5wdXQxKTsKKyAgICAgIGlucHV0MS50eXBlID0gImNoZWNr
Ym94IjsKKyAgICAgIGlucHV0MS5jaGVja2VkID0gdHJ1ZTsKKyAgICAgIGFzc2VydChpbnB1dDEu
Y2hlY2tlZCwgImNoZWNrYm94IG5vdCBjaGVja2VkIGFmdGVyIGJlaW5nIGNoZWNrZWQgKGluc2Vy
dGVkIGZpcnN0KSIpOworICAgICAgdmFyIGlucHV0MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lucHV0Jyk7CisgICAgICBpbnB1dDIudHlwZSA9ICJjaGVja2JveCI7CisgICAgICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQoaW5wdXQyKTsKKyAgICAgIGlucHV0Mi5jaGVja2VkID0gdHJ1ZTsKKyAg
ICAgIGFzc2VydChpbnB1dDIuY2hlY2tlZCwgImNoZWNrYm94IG5vdCBjaGVja2VkIGFmdGVyIGJl
aW5nIGNoZWNrZWQgKGluc2VydGVkIGFmdGVyIHR5cGUgc2V0KSIpOworICAgICAgdmFyIGlucHV0
MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICBpbnB1dDMudHlwZSA9
ICJjaGVja2JveCI7CisgICAgICBpbnB1dDMuY2hlY2tlZCA9IHRydWU7CisgICAgICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQoaW5wdXQzKTsKKyAgICAgIGFzc2VydChpbnB1dDMuY2hlY2tlZCwgImNo
ZWNrYm94IG5vdCBjaGVja2VkIGFmdGVyIGJlaW5nIGNoZWNrZWQgKGluc2VydGVkIGFmdGVyIGJl
aW5nIGNoZWNrZWQpIik7CisgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImlmcmFtZSIpWzFdOworICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGlucHV0MSk7
CisgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoaW5wdXQyKTsKKyAgICAgIHRhcmdldC5hcHBlbmRD
aGlsZChpbnB1dDMpOworICAgICAgYXNzZXJ0KGlucHV0MS5jaGVja2VkLCAiY2hlY2tib3ggMSBu
b3QgY2hlY2tlZCBhZnRlciBiZWluZyBtb3ZlZCIpOworICAgICAgYXNzZXJ0KGlucHV0Mi5jaGVj
a2VkLCAiY2hlY2tib3ggMiBub3QgY2hlY2tlZCBhZnRlciBiZWluZyBtb3ZlZCIpOworICAgICAg
YXNzZXJ0KGlucHV0My5jaGVja2VkLCAiY2hlY2tib3ggMyBub3QgY2hlY2tlZCBhZnRlciBiZWlu
ZyBtb3ZlZCIpOworICAgICAgcmV0dXJuIDQ7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAvLyB0ZXN0IDU2OiBjbG9uZWQgcmFkaW8gYnV0dG9ucyBzaG91bGQga2VlcCB0aGVpciBz
dGF0ZQorICAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9y
bSIpWzBdOworICAgICAgdmFyIGlucHV0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0
Jyk7CisgICAgICBpbnB1dDEudHlwZSA9ICJyYWRpbyI7CisgICAgICBpbnB1dDEubmFtZSA9ICJy
YWRpb0dyb3VwMSI7CisgICAgICBmb3JtLmFwcGVuZENoaWxkKGlucHV0MSk7CisgICAgICB2YXIg
aW5wdXQyID0gaW5wdXQxLmNsb25lTm9kZSh0cnVlKTsKKyAgICAgIGlucHV0MS5wYXJlbnROb2Rl
LmFwcGVuZENoaWxkKGlucHV0Mik7CisgICAgICBpbnB1dDEuY2hlY2tlZCA9IHRydWU7CisgICAg
ICBhc3NlcnQoZm9ybS5lbGVtZW50cy5yYWRpb0dyb3VwMSwgInJhZGlvIGdyb3VwIGFic2VudCIp
OworICAgICAgYXNzZXJ0KGlucHV0MS5jaGVja2VkLCAiZmlyc3QgcmFkaW8gYnV0dG9uIG5vdCBj
aGVja2VkIik7CisgICAgICBhc3NlcnQoIWlucHV0Mi5jaGVja2VkLCAic2Vjb25kIHJhZGlvIGJ1
dHRvbiBjaGVja2VkIik7CisgICAgICBpbnB1dDIuY2hlY2tlZCA9IHRydWU7CisgICAgICBhc3Nl
cnQoIWlucHV0MS5jaGVja2VkLCAiZmlyc3QgcmFkaW8gYnV0dG9uIGNoZWNrZWQiKTsKKyAgICAg
IGFzc2VydChpbnB1dDIuY2hlY2tlZCwgInNlY29uZCByYWRpbyBidXR0b24gbm90IGNoZWNrZWQi
KTsKKyAgICAgIHZhciBpbnB1dDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwor
ICAgICAgaW5wdXQzLnR5cGUgPSAicmFkaW8iOworICAgICAgaW5wdXQzLm5hbWUgPSAicmFkaW9H
cm91cDIiOworICAgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dDMpOworICAgICAgYXNzZXJ0KCFp
bnB1dDMuY2hlY2tlZCwgInRoaXJkIHJhZGlvIGJ1dHRvbiBjaGVja2VkIik7CisgICAgICBpbnB1
dDMuY2hlY2tlZCA9IHRydWU7CisgICAgICBhc3NlcnQoIWlucHV0MS5jaGVja2VkLCAiZmlyc3Qg
cmFkaW8gYnV0dG9uIG5ld2x5IGNoZWNrZWQiKTsKKyAgICAgIGFzc2VydChpbnB1dDIuY2hlY2tl
ZCwgInNlY29uZCByYWRpbyBidXR0b24gbmV3bHkgbm90IGNoZWNrZWQiKTsKKyAgICAgIGFzc2Vy
dChpbnB1dDMuY2hlY2tlZCwgInRoaXJkIHJhZGlvIGJ1dHRvbiBub3QgY2hlY2tlZCIpOworICAg
ICAgaW5wdXQxLmNoZWNrZWQgPSB0cnVlOworICAgICAgYXNzZXJ0KGlucHV0MS5jaGVja2VkLCAi
Zmlyc3QgcmFkaW8gYnV0dG9uIGVuZGVkIHVwIG5vdCBjaGVja2VkIik7CisgICAgICBhc3NlcnQo
IWlucHV0Mi5jaGVja2VkLCAic2Vjb25kIHJhZGlvIGJ1dHRvbiBlbmRlZCB1cCBjaGVja2VkIik7
CisgICAgICBhc3NlcnQoaW5wdXQzLmNoZWNrZWQsICJ0aGlyZCByYWRpbyBidXR0b24gZW5kZWQg
dXAgbm90IGNoZWNrZWQiKTsKKyAgICAgIGlucHV0MS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlu
cHV0MSk7CisgICAgICBpbnB1dDIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpbnB1dDIpOworICAg
ICAgaW5wdXQzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaW5wdXQzKTsKKyAgICAgIHJldHVybiA0
OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA1NzogSFRNTFNlbGVj
dEVsZW1lbnQuYWRkKCkKKyAgICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2Vs
ZWN0Jyk7CisgICAgICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwor
ICAgICAgcy5hZGQobywgbnVsbCk7CisgICAgICBhc3NlcnQocy5maXJzdENoaWxkID09PSBvLCAi
YWRkKCkgZGlkbid0IGFkZCB0byBmaXJzdENoaWxkIik7CisgICAgICBhc3NlcnRFcXVhbHMocy5j
aGlsZE5vZGVzLmxlbmd0aCwgMSwgImFkZCgpIGRpZG4ndCBhZGQgdG8gY2hpbGROb2RlcyIpOwor
ICAgICAgYXNzZXJ0KHMuY2hpbGROb2Rlc1swXSA9PT0gbywgImFkZCgpIGRpZG4ndCBhZGQgdG8g
Y2hpbGROb2RlcyBjb3JyZWN0bHkiKTsKKyAgICAgIGFzc2VydEVxdWFscyhzLm9wdGlvbnMubGVu
Z3RoLCAxLCAiYWRkKCkgZGlkbid0IGFkZCB0byBvcHRpb25zIik7CisgICAgICBhc3NlcnQocy5v
cHRpb25zWzBdID09PSBvLCAiYWRkKCkgZGlkbid0IGFkZCB0byBvcHRpb25zIGNvcnJlY3RseSIp
OworICAgICAgcmV0dXJuIDQ7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0
ZXN0IDU4OiBIVE1MT3B0aW9uRWxlbWVudC5kZWZhdWx0U2VsZWN0ZWQKKyAgICAgIHZhciBzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7CisgICAgICB2YXIgbzEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKKyAgICAgIHZhciBvMiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ29wdGlvbicpOworICAgICAgbzIuZGVmYXVsdFNlbGVjdGVkID0gdHJ1ZTsKKyAg
ICAgIHZhciBvMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOworICAgICAgcy5h
cHBlbmRDaGlsZChvMSk7CisgICAgICBzLmFwcGVuZENoaWxkKG8yKTsKKyAgICAgIHMuYXBwZW5k
Q2hpbGQobzMpOworICAgICAgYXNzZXJ0KHMub3B0aW9uc1tzLnNlbGVjdGVkSW5kZXhdID09PSBv
MiwgImRlZmF1bHRTZWxlY3RlZCBkaWRuJ3QgdGFrZSIpOworICAgICAgcmV0dXJuIDQ7CisgICAg
fSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDU5OiBhdHRyaWJ1dGVzIG9mIDxi
dXR0b24+IGVsZW1lbnRzCisgICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYnV0dG9uJyk7CisgICAgICBhc3NlcnRFcXVhbHMoYnV0dG9uLnR5cGUsICJzdWJtaXQiLCAi
PGJ1dHRvbj4gZG9lc24ndCBoYXZlIHR5cGU9c3VibWl0Iik7CisgICAgICBidXR0b24uc2V0QXR0
cmlidXRlKCJ0eXBlIiwgImJ1dHRvbiIpOworICAgICAgYXNzZXJ0RXF1YWxzKGJ1dHRvbi50eXBl
LCAiYnV0dG9uIiwgIjxidXR0b24gdHlwZT1idXR0b24+IGRvZXNuJ3QgaGF2ZSB0eXBlPWJ1dHRv
biIpOworICAgICAgYnV0dG9uLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpOworICAgICAgYXNzZXJ0
RXF1YWxzKGJ1dHRvbi50eXBlLCAic3VibWl0IiwgIjxidXR0b24+IGRvZXNuJ3QgaGF2ZSB0eXBl
PXN1Ym1pdCBiYWNrIik7CisgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCd2YWx1ZScsICdhcHBs
ZScpOworICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdi
YW5hbmEnKSk7CisgICAgICBhc3NlcnRFcXVhbHMoYnV0dG9uLnZhbHVlLCAnYXBwbGUnLCAid3Jv
bmcgYnV0dG9uIHZhbHVlIik7CisgICAgICByZXR1cm4gNDsKKyAgICB9LAorCisgICAgLy8gTWlz
YyBET00yIEhUTUwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDYwOiBjbGFzc05h
bWUgdnMgImNsYXNzIiB2cyBhdHRyaWJ1dGUgbm9kZXMKKyAgICAgIHZhciBzcGFuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICAgIHNwYW4uc2V0QXR0cmli
dXRlKCdjbGFzcycsICdraXR0ZW5zJyk7CisgICAgICBpZiAoIXNwYW4uZ2V0QXR0cmlidXRlTm9k
ZSkKKyAgICAgICAgcmV0dXJuIDQ7IC8vIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZSBub2RlcyBpcyBv
cHRpb25hbCBpbiBBY2lkMywgYmVjYXVzZSBhdHRyaWJ1dGUgbm9kZXMgbWlnaHQgYmUgcmVtb3Zl
ZCBmcm9tIERPTSBDb3JlIGluIHRoZSBmdXR1cmUuCisgICAgICB2YXIgYXR0ciA9IHNwYW4uZ2V0
QXR0cmlidXRlTm9kZSgnY2xhc3MnKTsKKyAgICAgIC8vIGhvd2V2ZXIsIGlmIHRoZXkncmUgc3Vw
cG9ydGVkLCB0aGV5J2QgYmV0dGVyIHdvcms6CisgICAgICBhc3NlcnQoYXR0ci5zcGVjaWZpZWQs
ICJhdHRyaWJ1dGUgbm90IHNwZWNpZmllZCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGF0dHIudmFs
dWUsICdraXR0ZW5zJywgImF0dHJpYnV0ZSB2YWx1ZSB3cm9uZyIpOworICAgICAgYXNzZXJ0RXF1
YWxzKGF0dHIubmFtZSwgJ2NsYXNzJywgImF0dHJpYnV0ZSBuYW1lIHdyb25nIik7CisgICAgICBh
dHRyLnZhbHVlID0gJ29jZWxvdHMnOworICAgICAgYXNzZXJ0RXF1YWxzKGF0dHIudmFsdWUsICdv
Y2Vsb3RzJywgImF0dHJpYnV0ZSB2YWx1ZSB3cm9uZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHNw
YW4uY2xhc3NOYW1lLCAnb2NlbG90cycsICJzZXR0aW5nIGF0dHJpYnV0ZSB2YWx1ZSBmYWlsZWQg
dG8gYmUgcmVmbGVjdGVkIGluIGNsYXNzTmFtZSIpOworICAgICAgc3Bhbi5jbGFzc05hbWUgPSAn
Y2F0cyc7CisgICAgICBhc3NlcnRFcXVhbHMoYXR0ci5vd25lckVsZW1lbnQuZ2V0QXR0cmlidXRl
KCdjbGFzcycpLCAnY2F0cycsICJzZXR0aW5nIGF0dHJpYnV0ZSB2YWx1ZSBmYWlsZWQgdG8gYmUg
cmVmbGVjdGVkIGluIGdldEF0dHJpYnV0ZSgpIik7CisgICAgICBzcGFuLnJlbW92ZUF0dHJpYnV0
ZU5vZGUoYXR0cik7CisgICAgICBhc3NlcnQoYXR0ci5zcGVjaWZpZWQsICJhdHRyaWJ1dGUgbm90
IHNwZWNpZmllZCBhZnRlciByZW1vdmFsIik7CisgICAgICBhc3NlcnQoIWF0dHIub3duZXJFbGVt
ZW50LCAiYXR0cmlidXRlIHN0aWxsIG93bmVkIGFmdGVyIHJlbW92YWwiKTsKKyAgICAgIGFzc2Vy
dCghc3Bhbi5jbGFzc05hbWUsICJlbGVtZW50IGhhZCBjbGFzcyBhZnRlciByZW1vdmFsIik7Cisg
ICAgICByZXR1cm4gNDsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3Qg
NjE6IGNsYXNzTmFtZSBhbmQgdGhlIGNsYXNzIGF0dHJpYnV0ZTogc3BhY2UgcHJlc2VydmF0aW9u
CisgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICAgIGFzc2Vy
dCghcC5oYXNBdHRyaWJ1dGUoJ2NsYXNzJyksICJlbGVtZW50IGhhZCBhdHRyaWJ1dGUgb24gY3Jl
YXRpb24iKTsKKyAgICAgIHAuc2V0QXR0cmlidXRlKCdjbGFzcycsICcgdGUgIHN0ICcpOworICAg
ICAgYXNzZXJ0KHAuaGFzQXR0cmlidXRlKCdjbGFzcycpLCAiZWxlbWVudCBkaWQgbm90IGhhdmUg
YXR0cmlidXRlIGFmdGVyIHNldHRpbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyhwLmdldEF0dHJp
YnV0ZSgnY2xhc3MnKSwgJyB0ZSAgc3QgJywgImNsYXNzIGF0dHJpYnV0ZSdzIHZhbHVlIHdhcyB3
cm9uZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHAuY2xhc3NOYW1lLCAnIHRlICBzdCAnLCAiY2xh
c3NOYW1lIHdhcyB3cm9uZyIpOworICAgICAgcC5jbGFzc05hbWUgPSBwLmNsYXNzTmFtZS5yZXBs
YWNlKC8gL2csICdcbicpOworICAgICAgYXNzZXJ0KHAuaGFzQXR0cmlidXRlKCdjbGFzcycpLCAi
ZWxlbWVudCBkaWQgbm90IGhhdmUgYXR0cmlidXRlIGFmdGVyIHJlcGxhY2VtZW50Iik7CisgICAg
ICBhc3NlcnRFcXVhbHMocC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksICdcbnRlXG5cbnN0XG4nLCAi
Y2xhc3MgYXR0cmlidXRlJ3MgdmFsdWUgd2FzIHdyb25nIGFmdGVyIHJlcGxhY2VtZW50Iik7Cisg
ICAgICBhc3NlcnRFcXVhbHMocC5jbGFzc05hbWUsICdcbnRlXG5cbnN0XG4nLCAiY2xhc3NOYW1l
IHdhcyB3cm9uZyBhZnRlciByZXBsYWNlbWVudCIpOworICAgICAgcC5jbGFzc05hbWUgPSAnJzsK
KyAgICAgIGFzc2VydChwLmhhc0F0dHJpYnV0ZSgnY2xhc3MnKSwgImVsZW1lbnQgbG9zdCBhdHRy
aWJ1dGUgYWZ0ZXIgYmVpbmcgc2V0IHRvIGVtcHR5IHN0cmluZyIpOworICAgICAgYXNzZXJ0RXF1
YWxzKHAuZ2V0QXR0cmlidXRlKCdjbGFzcycpLCAnJywgImNsYXNzIGF0dHJpYnV0ZSdzIHZhbHVl
IHdhcyB3cm9uZyBhZnRlciBiZWluZyBlbXB0aWVkIik7CisgICAgICBhc3NlcnRFcXVhbHMocC5j
bGFzc05hbWUsICcnLCAiY2xhc3NOYW1lIHdhcyB3cm9uZyBhZnRlciBiZWluZyBlbXB0aWVkIik7
CisgICAgICByZXR1cm4gNDsKKyAgICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRl
c3QgNjI6IGNoZWNrIHRoYXQgRE9NIGF0dHJpYnV0ZXMgYW5kIGNvbnRlbnQgYXR0cmlidXRlcyBh
cmVuJ3QgZXF1aXZhbGVudAorICAgICAgdmFyIHRlc3Q7CisgICAgICAvLyA8ZGl2IGNsYXNzPSIi
PgorICAgICAgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXTsK
KyAgICAgIGFzc2VydEVxdWFscyh0ZXN0LmNsYXNzTmFtZSwgJ2J1Y2tldHMnLCAiYnVja2V0czog
Y2xhc3NOYW1lIHdyb25nIik7CisgICAgICBhc3NlcnRFcXVhbHModGVzdC5nZXRBdHRyaWJ1dGUo
J2NsYXNzJyksICdidWNrZXRzJywgImJ1Y2tldHM6IGNsYXNzIHdyb25nIik7CisgICAgICBhc3Nl
cnQoIXRlc3QuaGFzQXR0cmlidXRlKCdjbGFzc05hbWUnKSwgImJ1Y2tldHM6IGVsZW1lbnQgaGFz
IGNsYXNzTmFtZSBhdHRyaWJ1dGUiKTsKKyAgICAgIGFzc2VydCh0ZXN0LmNsYXNzTmFtZSAhPSB0
ZXN0LmdldEF0dHJpYnV0ZSgnY2xhc3NOYW1lJyksICJidWNrZXRzOiBjbGFzc05hbWUgYXR0cmli
dXRlIGVxdWFscyBjbGFzc05hbWUgcHJvcGVydHkiKTsKKyAgICAgIGFzc2VydCghKCdjbGFzcycg
aW4gdGVzdCksICJidWNrZXRzOiBlbGVtZW50IGhhcyBjbGFzcyBwcm9wZXJ0eSIpCisgICAgICB0
ZXN0WydjbGFzcyddID0gIm9pbCI7CisgICAgICBhc3NlcnQodGVzdC5jbGFzc05hbWUgIT0gIm9p
bCIsICJidWNrZXRzOiBjbGFzcyBwcm9wZXJ0eSBhZmZlY3RlZCBjbGFzc05hbWUiKTsKKyAgICAg
IC8vIDxsYWJlbCBmb3I9IiI+CisgICAgICB0ZXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bGFiZWwnKTsKKyAgICAgIHRlc3QuaHRtbEZvciA9ICdqYXJzJzsKKyAgICAgIGFzc2VydEVxdWFs
cyh0ZXN0Lmh0bWxGb3IsICdqYXJzJywgImphcnM6IGh0bWxGb3Igd3JvbmciKTsKKyAgICAgIGFz
c2VydEVxdWFscyh0ZXN0LmdldEF0dHJpYnV0ZSgnZm9yJyksICdqYXJzJywgImphcnM6IGZvciB3
cm9uZyIpOworICAgICAgYXNzZXJ0KCF0ZXN0Lmhhc0F0dHJpYnV0ZSgnaHRtbEZvcicpLCAiamFy
czogZWxlbWVudCBoYXMgaHRtbEZvciBhdHRyaWJ1dGUiKTsKKyAgICAgIGFzc2VydCh0ZXN0Lmh0
bWxGb3IgIT0gdGVzdC5nZXRBdHRyaWJ1dGUoJ2h0bWxGb3InKSwgImphcnM6IGh0bWxGb3IgYXR0
cmlidXRlIGVxdWFscyBodG1sRm9yIHByb3BlcnR5Iik7CisgICAgICB0ZXN0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnbGFiZWwnKTsKKyAgICAgIHRlc3Quc2V0QXR0cmlidXRlKCdmb3InLCAn
cG90cycpOworICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuaHRtbEZvciwgJ3BvdHMnLCAicG90czog
aHRtbEZvciB3cm9uZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuZ2V0QXR0cmlidXRlKCdm
b3InKSwgJ3BvdHMnLCAicG90czogZm9yIHdyb25nIik7CisgICAgICBhc3NlcnQoIXRlc3QuaGFz
QXR0cmlidXRlKCdodG1sRm9yJyksICJwb3RzOiBlbGVtZW50IGhhcyBodG1sRm9yIGF0dHJpYnV0
ZSIpOworICAgICAgYXNzZXJ0KHRlc3QuaHRtbEZvciAhPSB0ZXN0LmdldEF0dHJpYnV0ZSgnaHRt
bEZvcicpLCAicG90czogaHRtbEZvciBhdHRyaWJ1dGUgZXF1YWxzIGh0bWxGb3IgcHJvcGVydHki
KTsKKyAgICAgIGFzc2VydCghKCdmb3InIGluIHRlc3QpLCAicG90czogZWxlbWVudCBoYXMgZm9y
IHByb3BlcnR5Iik7CisgICAgICB0ZXN0Wydmb3InXSA9ICJvaWwiOworICAgICAgYXNzZXJ0KHRl
c3QuaHRtbEZvciAhPSAib2lsIiwgInBvdHM6IGZvciBwcm9wZXJ0eSBhZmZlY3RlZCBodG1sRm9y
Iik7CisgICAgICAvLyA8bWV0YSBodHRwLWVxdWl2PSIiPgorICAgICAgdGVzdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ21ldGEnKTsKKyAgICAgIHRlc3Quc2V0QXR0cmlidXRlKCdodHRwLWVx
dWl2JywgJ2JveGVzJyk7CisgICAgICBhc3NlcnRFcXVhbHModGVzdC5odHRwRXF1aXYsICdib3hl
cycsICJib3hlczogaHR0cEVxdWl2IHdyb25nIik7CisgICAgICBhc3NlcnRFcXVhbHModGVzdC5n
ZXRBdHRyaWJ1dGUoJ2h0dHAtZXF1aXYnKSwgJ2JveGVzJywgImJveGVzOiBodHRwLWVxdWl2IHdy
b25nIik7CisgICAgICBhc3NlcnQoIXRlc3QuaGFzQXR0cmlidXRlKCdodHRwRXF1aXYnKSwgImJv
eGVzOiBlbGVtZW50IGhhcyBodHRwRXF1aXYgYXR0cmlidXRlIik7CisgICAgICBhc3NlcnQodGVz
dC5odHRwRXF1aXYgIT0gdGVzdC5nZXRBdHRyaWJ1dGUoJ2h0dHBFcXVpdicpLCAiYm94ZXM6IGh0
dHBFcXVpdiBhdHRyaWJ1dGUgZXF1YWxzIGh0dHBFcXVpdiBwcm9wZXJ0eSIpOworICAgICAgdGVz
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGEnKTsKKyAgICAgIHRlc3QuaHR0cEVxdWl2
ID0gJ2NhbnMnOworICAgICAgYXNzZXJ0RXF1YWxzKHRlc3QuaHR0cEVxdWl2LCAnY2FucycsICJj
YW5zOiBodHRwRXF1aXYgd3JvbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXN0LmdldEF0dHJp
YnV0ZSgnaHR0cC1lcXVpdicpLCAnY2FucycsICJjYW5zOiBodHRwLWVxdWl2IHdyb25nIik7Cisg
ICAgICBhc3NlcnQoIXRlc3QuaGFzQXR0cmlidXRlKCdodHRwRXF1aXYnKSwgImNhbnM6IGVsZW1l
bnQgaGFzIGh0dHBFcXVpdiBhdHRyaWJ1dGUiKTsKKyAgICAgIGFzc2VydCh0ZXN0Lmh0dHBFcXVp
diAhPSB0ZXN0LmdldEF0dHJpYnV0ZSgnaHR0cEVxdWl2JyksICJjYW5zOiBodHRwRXF1aXYgYXR0
cmlidXRlIGVxdWFscyBodHRwRXF1aXYgcHJvcGVydHkiKTsKKyAgICAgIGFzc2VydCghKCdodHRw
LWVxdWl2JyBpbiB0ZXN0KSwgImNhbnM6IGVsZW1lbnQgaGFzIGh0dHAtZXF1aXYgcHJvcGVydHki
KTsKKyAgICAgIHRlc3RbJ2h0dHAtZXF1aXYnXSA9ICJvaWwiOworICAgICAgYXNzZXJ0KHRlc3Qu
aHR0cEVxdWl2ICE9ICJvaWwiLCAiY2FuczogaHR0cC1lcXVpdiBwcm9wZXJ0eSBhZmZlY3RlZCBo
dHRwRXF1aXYiKTsKKyAgICAgIHJldHVybiA0OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgLy8gdGVzdCA2MzogYXR0cmlidXRlcyBvZiB0aGUgPGFyZWE+IGVsZW1lbnQKKyAgICAg
IHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2FyZWEnKVswXTsKKyAg
ICAgIGFzc2VydEVxdWFscyhhcmVhLmdldEF0dHJpYnV0ZSgnaHJlZicpLCAnJywgIndyb25nIHZh
bHVlIGZvciBocmVmPScnIik7CisgICAgICBhc3NlcnRFcXVhbHMoYXJlYS5nZXRBdHRyaWJ1dGUo
J3NoYXBlJyksICdyZWN0JywgIndyb25nIHZhbHVlIGZvciBzaGFwZT0nJyIpOworICAgICAgYXNz
ZXJ0RXF1YWxzKGFyZWEuZ2V0QXR0cmlidXRlKCdjb29yZHMnKSwgJzIsMiw0LDQnLCAid3Jvbmcg
dmFsdWUgZm9yIGNvb3Jkcz0nJyIpOworICAgICAgYXNzZXJ0RXF1YWxzKGFyZWEuZ2V0QXR0cmli
dXRlKCdhbHQnKSwgJzxcJz4nLCAid3JvbmcgdmFsdWUgZm9yIGFsdD0nJyIpOworICAgICAgcmV0
dXJuIDQ7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDY0OiBtb3Jl
IGF0dHJpYnV0ZSB0ZXN0cworICAgICAgLy8gYXR0cmlidXRlcyBvZiB0aGUgPG9iamVjdD4gZWxl
bWVudAorICAgICAgdmFyIG9iajEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3QnKTsK
KyAgICAgIG9iajEuc2V0QXR0cmlidXRlKCdkYXRhJywgJ3Rlc3QuaHRtbCcpOworICAgICAgdmFy
IG9iajIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3QnKTsKKyAgICAgIG9iajIuc2V0
QXR0cmlidXRlKCdkYXRhJywgJy4vdGVzdC5odG1sJyk7CisgICAgICBhc3NlcnRFcXVhbHMob2Jq
MS5kYXRhLCBvYmoyLmRhdGEsICJvYmplY3QgZWxlbWVudHMgZGlkbid0IHJlc29sdmUgVVJJcyBj
b3JyZWN0bHkiKTsKKyAgICAgIGFzc2VydChvYmoxLmRhdGEubWF0Y2goL15odHRwOi8pLCAib2Jq
ZWN0LmRhdGEgaXNuJ3QgYWJzb2x1dGUiKTsKKyAgICAgIG9iajEuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgncGFyYW0nKSk7CisgICAgICBhc3NlcnRFcXVhbHMob2JqMS5nZXRF
bGVtZW50c0J5VGFnTmFtZSgncGFyYW0nKS5sZW5ndGgsIDEsICJvYmplY3QgaXMgbWlzc2luZyBp
dHMgb25seSBjaGlsZCIpOworICAgICAgLy8gbm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMKKyAgICAg
IHZhciB0ZXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgYXNzZXJ0KCEo
J1RXVnZkeXdnYldWM0xpNHUnIGluIHRlc3QpLCAiVFdWdmR5d2diV1YzTGk0dSB1bmV4cGVjdGVk
bHkgZm91bmQiKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXN0LlRXVnZkeXdnYldWM0xpNHUsIHVu
ZGVmaW5lZCwgIi5UV1Z2ZHl3Z2JXVjNMaTR1IHdhc24ndCB1bmRlZmluZWQiKTsKKyAgICAgIGFz
c2VydEVxdWFscyh0ZXN0WydUV1Z2ZHl3Z2JXVjNMaTR1J10sIHVuZGVmaW5lZCwgIlsnVFdWdmR5
d2diV1YzTGk0dSddIHdhc24ndCB1bmRlZmluZWQiKTsKKyAgICAgIHRlc3Quc2V0QXR0cmlidXRl
KCdUV1Z2ZHl3Z2JXVjNMaTR1JywgJ3dvb2YnKTsKKyAgICAgIGFzc2VydCghKCdUV1Z2ZHl3Z2JX
VjNMaTR1JyBpbiB0ZXN0KSwgIlRXVnZkeXdnYldWM0xpNHUgdW5leHBlY3RlZGx5IGZvdW5kIGFm
dGVyIHNldHRpbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXN0LlRXVnZkeXdnYldWM0xpNHUs
IHVuZGVmaW5lZCwgIi5UV1Z2ZHl3Z2JXVjNMaTR1IHdhc24ndCB1bmRlZmluZWQgYWZ0ZXIgc2V0
dGluZyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHRlc3RbJ1RXVnZkeXdnYldWM0xpNHUnXSwgdW5k
ZWZpbmVkLCAiWydUV1Z2ZHl3Z2JXVjNMaTR1J10gd2Fzbid0IHVuZGVmaW5lZCBhZnRlciBzZXR0
aW5nIik7CisgICAgICBhc3NlcnRFcXVhbHModGVzdC5nZXRBdHRyaWJ1dGUoJ1RXVnZkeXdnYldW
M0xpNHUnKSwgJ3dvb2YnLCAiVFdWdmR5d2diV1YzTGk0dSBoYXMgd3JvbmcgdmFsdWUgYWZ0ZXIg
c2V0dGluZyIpOworICAgICAgcmV0dXJuIDQ7CisgICAgfSwKKworICAgIC8vIGJ1Y2tldCA1OiBU
ZXN0cyBmcm9tIHRoZSBBY2lkMyBDb21wZXRpdGlvbgorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
IC8vIHRlc3QgNjU6IGJyaW5nIGluIGEgY291cGxlIG9mIFNWRyBmaWxlcyBhbmQgc29tZSBIVE1M
IGZpbGVzIGR5bmFtaWNhbGx5IC0gcHJlcGFyYXRpb24gZm9yIGxhdGVyIHRlc3RzIGluIHRoaXMg
YnVja2V0CisgICAgICBrdW5nRnVEZWF0aEdyaXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdw
Jyk7CisgICAgICBrdW5nRnVEZWF0aEdyaXAuY2xhc3NOYW1lID0gJ3JlbW92ZWQnOworICAgICAg
dmFyIGlmcmFtZSwgb2JqZWN0OworICAgICAgLy8gc3ZnIGlmcmFtZQorICAgICAgaWZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICBpZnJhbWUub25sb2FkID0g
ZnVuY3Rpb24gKCkgeyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0gJzEnIH07CisgICAgICBpZnJh
bWUuc3JjID0gInN2Zy54bWwiOworICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKGlm
cmFtZSk7CisgICAgICAvLyBvYmplY3QgaWZyYW1lCisgICAgICBvYmplY3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdvYmplY3QnKTsKKyAgICAgIG9iamVjdC5vbmxvYWQgPSBmdW5jdGlvbiAo
KSB7IGt1bmdGdURlYXRoR3JpcC50aXRsZSArPSAnMicgfTsKKyAgICAgIG9iamVjdC5kYXRhID0g
InN2Zy54bWwiOworICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKG9iamVjdCk7Cisg
ICAgICAvLyB4bWwgaWZyYW1lCisgICAgICBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpZnJhbWUnKTsKKyAgICAgIGlmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGt1bmdGdURl
YXRoR3JpcC50aXRsZSArPSAnMycgfTsKKyAgICAgIGlmcmFtZS5zcmMgPSAiZW1wdHkueG1sIjsK
KyAgICAgIGt1bmdGdURlYXRoR3JpcC5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgICAgLy8gaHRt
bCBpZnJhbWUKKyAgICAgIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScp
OworICAgICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRp
dGxlICs9ICc0JyB9OworICAgICAgaWZyYW1lLnNyYyA9ICJlbXB0eS5odG1sIjsKKyAgICAgIGt1
bmdGdURlYXRoR3JpcC5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgICAgLy8gaHRtbCBpZnJhbWUK
KyAgICAgIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAg
aWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICc1
JyB9OworICAgICAgaWZyYW1lLnNyYyA9ICJ4aHRtbC4xIjsKKyAgICAgIGt1bmdGdURlYXRoR3Jp
cC5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgICAgLy8gaHRtbCBpZnJhbWUKKyAgICAgIGlmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgaWZyYW1lLm9ubG9h
ZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICc2JyB9OworICAgICAg
aWZyYW1lLnNyYyA9ICJ4aHRtbC4yIjsKKyAgICAgIGt1bmdGdURlYXRoR3JpcC5hcHBlbmRDaGls
ZChpZnJhbWUpOworICAgICAgLy8gaHRtbCBpZnJhbWUKKyAgICAgIGlmcmFtZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9u
ICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICc3JyB9OworICAgICAgaWZyYW1lLnNyYyA9
ICJ4aHRtbC4zIjsKKyAgICAgIGt1bmdGdURlYXRoR3JpcC5hcHBlbmRDaGlsZChpZnJhbWUpOwor
ICAgICAgLy8gYWRkIHRoZSBsb3QgdG8gdGhlIGRvY3VtZW50CisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnbWFwJylbMF0uYXBwZW5kQ2hpbGQoa3VuZ0Z1RGVhdGhHcmlwKTsK
KyAgICAgIHJldHVybiA1OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVz
dCA2NjogbG9jYWxOYW1lIG9uIHRleHQgbm9kZXMgKGFuZCBub3cgb3RoZXIgdGhpbmdzKSwgZnJv
bSBTeWx2YWluIFBhc2NoZQorICAgICAgYXNzZXJ0RXF1YWxzKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJ0ZXN0IikubG9jYWxOYW1lLCBudWxsLCAnd3JvbmcgbG9jYWxOYW1lIGZvciB0ZXh0IG5v
ZGUnKTsKKyAgICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5jcmVhdGVDb21tZW50KCJ0ZXN0Iiku
bG9jYWxOYW1lLCBudWxsLCAnd3JvbmcgbG9jYWxOYW1lIGZvciBjb21tZW50IG5vZGUnKTsKKyAg
ICAgIGFzc2VydEVxdWFscyhkb2N1bWVudC5sb2NhbE5hbWUsIG51bGwsICd3cm9uZyBsb2NhbE5h
bWUgZm9yIGRvY3VtZW50IG5vZGUnKTsKKyAgICAgIHJldHVybiA1OworICAgIH0sCisgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA2NzogcmVtb3ZlZE5hbWVkSXRlbU5TIG9uIG1pc3Np
bmcgYXR0cmlidXRlcywgZnJvbSBTeWx2YWluIFBhc2NoZQorICAgICAgdmFyIHAgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICB2YXIgbXNnID0gJ3dyb25nIGV4Y2VwdGlvbiBy
YWlzZWQnOworICAgICAgdHJ5IHsKKyAgICAgICAgcC5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRl
bU5TKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIsICJhYnNlbnQiKTsKKyAgICAgICAgbXNnID0g
J25vIGV4Y2VwdGlvbiByYWlzZWQnOworICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAo
J2NvZGUnIGluIGUpIHsKKyAgICAgICAgICBpZiAoZS5jb2RlID09IDgpCisgICAgICAgICAgICBt
c2cgPSAnJzsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBtc2cgKz0gJzsgY29kZSA9ICcg
KyBlLmNvZGU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGFzc2VydChtc2cgPT0gJycsICJ3
aGVuIGNhbGxpbmcgcmVtb3ZlTmFtZWRJdGVtTlMgaW4gYSBub24gZXhpc3RlbnQgYXR0cmlidXRl
OiAiICsgbXNnKTsKKyAgICAgIHJldHVybiA1OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgLy8gdGVzdCA2ODogVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgZnJvbSBEYXZpZCBDaGFu
CisgICAgICAvLyAKKyAgICAgIC8vIEluIFRoZSBVbmljb2RlIFN0YW5kYXJkIDUuMCwgaXQgaXMg
ZXhwbGljaXRseSBwZXJtaXR0ZWQgdG8KKyAgICAgIC8vIGFsbG93IG1hbGZvcm1lZCBVVEYtMTYs
IHRoYXQgaXMsIHRvIGxlYXZlIHRoZSBzdHJpbmcgYWxvbmUuCisgICAgICAvLyAoaHR0cDovL3d3
dy51bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlNS4wLjApOgorICAgICAgLy8gCisgICAgICAv
LyBzZWN0aW9uIDIuNzogIi4uLnN0cmluZ3MgaW4gLi4uIEVDTUFTY3JpcHQgYXJlIFVuaWNvZGUg
MTYtYml0CisgICAgICAvLyBzdHJpbmdzLCBidXQgYXJlIG5vdCBuZWNlc3NhcmlseSB3ZWxsLWZv
cm1lZCBVVEYtMTYKKyAgICAgIC8vIHNlcXVlbmNlcy4gIEluIG5vcm1hbCBwcm9jZXNzaW5nLCBp
dCBjYW4gYmUgZmFyIG1vcmUKKyAgICAgIC8vIGVmZmljaWVudCB0byBhbGxvdyBzdWNoIHN0cmlu
Z3MgdG8gY29udGFpbiBjb2RlIHVuaXQKKyAgICAgIC8vIHNlcXVlbmNlcyB0aGF0IGFyZSBub3Qg
d2VsbC1mb3JtZWQgVVRGLTE2IC0tIHRoYXQgaXMsCisgICAgICAvLyBpc29sYXRlZCBzdXJyb2dh
dGVzIgorICAgICAgLy8gCisgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGFwcGxp
Y2F0aW9uIHdpc2hlcyB0byBlbnN1cmUKKyAgICAgIC8vIHdlbGwtZm9ybWVkIGNoYXJhY3RlciBz
ZXF1ZW5jZXMsIGl0IG1heSBub3QgcGVybWl0IHRoZQorICAgICAgLy8gbWFsZm9ybWVkIHNlcXVl
bmNlIGFuZCBpdCBtdXN0IHJlZ2FyZCB0aGUgZmlyc3QgY29kZXBvaW50IGFzCisgICAgICAvLyBh
biBlcnJvcjoKKyAgICAgIC8vIAorICAgICAgLy8gU2VjdGlvbiAzLjI6ICJDMTAuIFdoZW4gYSBw
cm9jZXNzIGludGVycHJldHMgYSBjb2RlIHNlcXVlbmNlCisgICAgICAvLyB3aGljaCBwdXJwb3J0
cyB0byBiZSBpbiBhIFVuaWNvZGUgY2hhcmFjdGVyIGVuY29kaW5nIGZvcm0sIGl0CisgICAgICAv
LyBzaGFsbCB0cmVhdCBpbGwtZm9ybWVkIGNvZGUgdW5pdCBzZXF1ZW5jZXMgYXMgYW4gZXJyb3IK
KyAgICAgIC8vIGNvbmRpdGlvbiBhbmQgc2hhbGwgbm90IGludGVycHJldCBzdWNoIHNlcXVlbmNl
cyBhcworICAgICAgLy8gY2hhcmFjdGVycy4KKyAgICAgIC8vIFsuLi5dCisgICAgICAvLyBGb3Ig
ZXhhbXBsZSwgaW4gVVRGLTggZXZlcnkgY29kZSB1bml0IG9mIHRoZSBmb3JtIDExMC4uLi4yCisg
ICAgICAvLyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgY29kZSB1bml0IG9mIHRoZSBmb3JtIDEwLi4u
Li4uMi4gQQorICAgICAgLy8gc2VxdWVuY2Ugc3VjaCBhcyAxMTAuLi4uLjIgMC4uLi4uLi4yIGlz
IGlsbC1mb3JtZWQgYW5kIG11c3QKKyAgICAgIC8vIG5ldmVyIGJlIGdlbmVyYXRlZC4gV2hlbiBm
YWNlZCB3aXRoIHRoaXMgaWxsLWZvcm1lZCBjb2RlIHVuaXQKKyAgICAgIC8vIHNlcXVlbmNlIHdo
aWxlIHRyYW5zZm9ybWluZyBvciBpbnRlcnByZXRpbmcgdGV4dCwgYQorICAgICAgLy8gY29uZm9y
bWFudCBwcm9jZXNzIG11c3QgdHJlYXQgdGhlIGZpcnN0IGNvZGUgdW5pdCAxMTAuLi4uLjIKKyAg
ICAgIC8vIGFzIGFuIGlsbGVnYWxseSB0ZXJtaW5hdGVkIGNvZGUgdW5pdCBzZXF1ZW5jZX5XZm9y
IGV4YW1wbGUsCisgICAgICAvLyBieSBzaWduYWxpbmcgYW4gZXJyb3IsIGZpbHRlcmluZyB0aGUg
Y29kZSB1bml0IG91dCwgb3IKKyAgICAgIC8vIHJlcHJlc2VudGluZyB0aGUgY29kZSB1bml0IHdp
dGggYSBtYXJrZXIgc3VjaCBhcyBVK0ZGRkQKKyAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXJhY3Rl
ci4iCisgICAgICAvLyAKKyAgICAgIC8vIFNvIGl0IHdvdWxkIGJlIHBlcm1pdHRlZCB0byBkbyBh
bnkgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgIC8vIDEpIExlYXZlIHRoZSBzdHJpbmcgYWxvbmUK
KyAgICAgIC8vIDIpIFJlbW92ZSB0aGUgdW5wYWlyZWQgc3Vycm9nYXRlCisgICAgICAvLyAzKSBS
ZXBsYWNlIHRoZSB1bnBhaXJlZCBzdXJyb2dhdGUgd2l0aCBVK0ZGRkQKKyAgICAgIC8vIDQpIFRo
cm93IGFuIGV4Y2VwdGlvbgorCisgICAgICB0cnkgeworICAgICAgICB2YXIgdW5wYWlyZWQgPSBT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDg2Myk7IC8vIGhhbGYgYSBzdXJyb2dhdGUgcGFpcgorICAg
ICAgICB2YXIgYmVmb3JlID0gdW5wYWlyZWQgKyAidGV4dCI7CisgICAgICAgIHZhciBlbHQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICBlbHQudmFsdWUgPSBiZWZv
cmU7CisgICAgICAgIHZhciBhZnRlciA9IGVsdC52YWx1ZTsKKyAgICAgIH0KKyAgICAgIGNhdGNo
KGV4KSB7CisgICAgICAgIHJldHVybiA1OyAvLyBVbnBhaXJlZCBzdXJyb2dhdGUgY2F1c2VkIGFu
IGV4Y2VwdGlvbiAtIG9rCisgICAgICB9CisgICAgICBpZiAoYWZ0ZXIgPT0gYmVmb3JlICYmIGJl
Zm9yZS5sZW5ndGggPT0gNSkKKyAgICAgICAgcmV0dXJuIDU7IC8vIFVucGFpcmVkIHN1cnJvZ2F0
ZSBrZXB0IC0gb2sKKyAgICAgIGlmIChhZnRlciA9PSAidGV4dCIpCisgICAgICAgIHJldHVybiA1
OyAvLyBVbnBhaXJlZCBzdXJyb2dhdGUgcmVtb3ZlZCAtIG9rCisgICAgICB2YXIgcmVwbGFjZW1l
bnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmZmZCk7CisgICAgICBpZiAoYWZ0ZXIgPT0gcmVw
bGFjZW1lbnQgKyAidGV4dCIpCisgICAgICAgIHJldHVybiA1OyAvLyBVbnBhaXJlZCBzdXJyb2dh
dGUgcmVwbGFjZWQgLSBvaworICAgICAgZmFpbCgiVW5wYWlyZWQgc3Vycm9nYXRlIGhhbmRsZWQg
d3JvbmdseSAoaW5wdXQgd2FzICciICsgYmVmb3JlICsgIicsIG91dHB1dCB3YXMgJyIgKyBhZnRl
ciArICInKSIpOworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA2OTog
Y2hlY2sgdGhhdCB0aGUgc3VwcG9ydCBmaWxlcyBsb2FkZWQgLS0gcHJlcGFyYXRpb24gZm9yIHRo
ZSByZXN0IG9mIHRoZSB0ZXN0cyBpbiB0aGlzIGJ1Y2tldAorICAgICAgYXNzZXJ0KCEoa3VuZ0Z1
RGVhdGhHcmlwID09IG51bGwpLCAia3VuZ0Z1RGVhdGhHcmlwIHdhcyBudWxsIik7CisgICAgICBh
c3NlcnQoIShrdW5nRnVEZWF0aEdyaXAudGl0bGUgPT0gbnVsbCksICJrdW5nRnVEZWF0aEdyaXAu
dGl0bGUgd2FzIG51bGwiKTsKKyAgICAgIGlmIChrdW5nRnVEZWF0aEdyaXAudGl0bGUubGVuZ3Ro
IDwgNykKKyAgICAgICAgcmV0dXJuICJyZXRyeSI7CisgICAgICBhc3NlcnQoIShrdW5nRnVEZWF0
aEdyaXAuZmlyc3RDaGlsZCA9PSBudWxsKSwgImt1bmdGdURlYXRoR3JpcC5maXJzdENoaWxkIHdh
cyBudWxsIik7CisgICAgICBhc3NlcnQoIShrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGlsZC5jb250
ZW50RG9jdW1lbnQgPT0gbnVsbCksICJrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGlsZC5jb250ZW50
RG9jdW1lbnQgd2FzIG51bGwiKTsKKyAgICAgIGFzc2VydCghKGt1bmdGdURlYXRoR3JpcC5maXJz
dENoaWxkLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9PSBudWxsKSwgImt1
bmdGdURlYXRoR3JpcC5maXJzdENoaWxkLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSB3YXMgbnVsbCIpOworICAgICAgdmFyIHQgPSBrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGls
ZC5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RleHQnKVswXTsKKyAgICAg
IGFzc2VydCghKHQgPT0gbnVsbCksICJ0IHdhcyBudWxsIik7CisgICAgICBhc3NlcnQoISh0LnBh
cmVudE5vZGUgPT0gbnVsbCksICJ0LnBhcmVudE5vZGUgd2FzIG51bGwiKTsKKyAgICAgIGFzc2Vy
dCghKHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCA9PSBudWxsKSwgInQucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZCB3YXMgbnVsbCIpOworICAgICAgdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpOwor
ICAgICAgcmV0dXJuIDU7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0
IDcwOiBYTUwgZW5jb2RpbmcgdGVzdAorICAgICAgLy8gdGhlIHRoaXJkIGNoaWxkIGluIGt1bmdG
dURlYXRoR3JpcCBpcyBhbiBJU08tODg1OS0xIGRvY3VtZW50IHNlbnQgYXMgVVRGLTguCisgICAg
ICAvLyBxLnYuIFhNTCAxLjAsIHNlY3Rpb24gNC4zLjMgQ2hhcmFjdGVyIEVuY29kaW5nIGluIEVu
dGl0aWVzCisgICAgICAvLyB0aGlzIG9ubHkgdGVzdHMgb25lIG9mIGEgbGFyZ2UgbnVtYmVyIG9m
IGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgY2F1c2UgZmF0YWwgZXJyb3JzCisgICAgICB2YXIgZG9j
ID0ga3VuZ0Z1RGVhdGhHcmlwLmNoaWxkTm9kZXNbMl0uY29udGVudERvY3VtZW50OworICAgICAg
aWYgKCFkb2MpCisgICAgICAgIHJldHVybiA1OworICAgICAgaWYgKGRvYy5kb2N1bWVudEVsZW1l
bnQudGFnTmFtZSAhPSAicm9vdCIpCisgICAgICAgIHJldHVybiA1OworICAgICAgaWYgKGRvYy5k
b2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rlc3QnKS5sZW5ndGggPCAxKQor
ICAgICAgICByZXR1cm4gNTsKKyAgICAgIGZhaWwoIlVURi04IGVuY29kZWQgWE1MIGRvY3VtZW50
IHdpdGggaW52YWxpZCBjaGFyYWN0ZXIgZGlkIG5vdCBoYXZlIGEgd2VsbC1mb3JtZWRuZXNzIGVy
cm9yIik7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDcxOiBIVE1M
IHBhcnNpbmcsIGZyb20gU2ltb24gUGlldGVycyBhbmQgQW5uZSB2YW4gS2VzdGVyZW4KKyAgICAg
IHZhciBkb2MgPSBrdW5nRnVEZWF0aEdyaXAuY2hpbGROb2Rlc1szXS5jb250ZW50RG9jdW1lbnQ7
CisgICAgICBhc3NlcnQoZG9jLCAibWlzc2luZyBkb2N1bWVudCBmb3IgdGVzdCIpOworICAgICAg
dHJ5IHsKKyAgICAgICAgLy8gc2libGluZ3MKKyAgICAgICAgZG9jLm9wZW4oKTsKKyAgICAgICAg
ZG9jLndyaXRlKCI8IURPQ1RZUEUgSFRNTCBQVUJMSUMgXCItLy9XM0MvL0RURCBIVE1MIDQuMCBU
cmFuc2l0aW9uYWwvL0VOXCI+PHRpdGxlPjxcL3RpdGxlPjxzcGFuPjxcL3NwYW4+PHNjcmlwdCB0
eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+PFwvc2NyaXB0PiIpOworICAgICAgICBkb2MuY2xvc2Uo
KTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgIndyb25n
IG51bWJlciBvZiBjaGlsZHJlbiBpbiAjZG9jdW1lbnQgKGZpcnN0IHRlc3QpIik7CisgICAgICAg
IGFzc2VydEVxdWFscyhkb2MuZmlyc3RDaGlsZC5uYW1lLCAiSFRNTCIsICJuYW1lIHdyb25nIChm
aXJzdCB0ZXN0KSIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmZpcnN0Q2hpbGQucHVibGlj
SWQsICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiwgInB1YmxpY0lkIHdy
b25nIChmaXJzdCB0ZXN0KSIpOworICAgICAgICBpZiAoKGRvYy5maXJzdENoaWxkLnN5c3RlbUlk
ICE9IG51bGwpICYmIChkb2MuZmlyc3RDaGlsZC5zeXN0ZW1JZCAhPSAiIikpCisgICAgICAgICAg
ZmFpbCgic3lzdGVtSWQgd3JvbmcgKGZpcnN0IHRlc3QpIik7CisgICAgICAgIGFzc2VydEVxdWFs
cyhkb2MuZmlyc3RDaGlsZC5pbnRlcm5hbFN1YnNldCwgbnVsbCwgImludGVybmFsU3Vic2V0IHdy
b25nIChmaXJzdCB0ZXN0KSIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxl
bWVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgIndyb25nIG51bWJlciBvZiBjaGlsZHJlbiBpbiBI
VE1MIChmaXJzdCB0ZXN0KSIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxl
bWVudC5maXJzdENoaWxkLm5vZGVOYW1lLCAiSEVBRCIsICJtaXNwbGFjZWQgSEVBRCBlbGVtZW50
IChmaXJzdCB0ZXN0KSIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxlbWVu
dC5maXJzdENoaWxkLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAid3JvbmcgbnVtYmVyIG9mIGNoaWxk
cmVuIGluIEhFQUQgKGZpcnN0IHRlc3QpIik7CisgICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9j
dW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC50YWdOYW1lLCAiVElUTEUiLCAibWlz
cGxhY2VkIFRJVExFIGVsZW1lbnQgKGZpcnN0IHRlc3QpIik7CisgICAgICAgIGFzc2VydEVxdWFs
cyhkb2MuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZC5ub2RlTmFtZSwgIkJPRFkiLCAibWlzcGxh
Y2VkIEJPRFkgZWxlbWVudCAoZmlyc3QgdGVzdCkiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRv
Yy5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkLmNoaWxkTm9kZXMubGVuZ3RoLCAyLCAid3Jvbmcg
bnVtYmVyIG9mIGNoaWxkcmVuIGluIEJPRFkgKGZpcnN0IHRlc3QpIik7CisgICAgICAgIGFzc2Vy
dEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkLnRhZ05hbWUs
ICJTUEFOIiwgIm1pc3BsYWNlZCBTUEFOIGVsZW1lbnQgKGZpcnN0IHRlc3QpIik7CisgICAgICAg
IGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZC5sYXN0Q2hpbGQudGFn
TmFtZSwgIlNDUklQVCIsICJtaXNwbGFjZWQgU0NSSVBUIGVsZW1lbnQgKGZpcnN0IHRlc3QpIik7
CisgICAgICAgIC8vIHBhcmVudC9jaGlsZAorICAgICAgICBkb2Mub3BlbigpOworICAgICAgICBk
b2Mud3JpdGUoIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wMSBU
cmFuc2l0aW9uYWwvL0VOXCIgXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGRc
Ij48dGl0bGU+PFwvdGl0bGU+PHNwYW4+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+
PFwvc2NyaXB0PjxcL3NwYW4+Iik7CisgICAgICAgIGRvYy5jbG9zZSgpOworICAgICAgICBhc3Nl
cnRFcXVhbHMoZG9jLmNoaWxkTm9kZXMubGVuZ3RoLCAyLCAid3JvbmcgbnVtYmVyIG9mIGNoaWxk
cmVuIGluICNkb2N1bWVudCAoZmlyc3QgdGVzdCkiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRv
Yy5maXJzdENoaWxkLm5hbWUsICJIVE1MIiwgIm5hbWUgd3JvbmcgKHNlY29uZCB0ZXN0KSIpOwor
ICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmZpcnN0Q2hpbGQucHVibGljSWQsICItLy9XM0MvL0RU
RCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIsICJwdWJsaWNJZCB3cm9uZyAoc2Vjb25kIHRl
c3QpIik7CisgICAgICAgIGFzc2VydEVxdWFscyhkb2MuZmlyc3RDaGlsZC5zeXN0ZW1JZCwgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCIsICJzeXN0ZW1JZCB3cm9uZyAoc2Vj
b25kIHRlc3QpIik7CisgICAgICAgIGFzc2VydEVxdWFscyhkb2MuZmlyc3RDaGlsZC5pbnRlcm5h
bFN1YnNldCwgbnVsbCwgImludGVybmFsU3Vic2V0IHdyb25nIChzZWNvbmQgdGVzdCkiKTsKKyAg
ICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGgs
IDIsICJ3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4gaW4gSFRNTCAoc2Vjb25kIHRlc3QpIik7Cisg
ICAgICAgIGFzc2VydEVxdWFscyhkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQubm9kZU5h
bWUsICJIRUFEIiwgIm1pc3BsYWNlZCBIRUFEIGVsZW1lbnQgKHNlY29uZCB0ZXN0KSIpOworICAg
ICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmNoaWxkTm9k
ZXMubGVuZ3RoLCAxLCAid3JvbmcgbnVtYmVyIG9mIGNoaWxkcmVuIGluIEhFQUQgKHNlY29uZCB0
ZXN0KSIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENo
aWxkLmZpcnN0Q2hpbGQudGFnTmFtZSwgIlRJVExFIiwgIm1pc3BsYWNlZCBUSVRMRSBlbGVtZW50
IChzZWNvbmQgdGVzdCkiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5kb2N1bWVudEVsZW1l
bnQubGFzdENoaWxkLm5vZGVOYW1lLCAiQk9EWSIsICJtaXNwbGFjZWQgQk9EWSBlbGVtZW50IChz
ZWNvbmQgdGVzdCkiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5kb2N1bWVudEVsZW1lbnQu
bGFzdENoaWxkLmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAid3JvbmcgbnVtYmVyIG9mIGNoaWxkcmVu
IGluIEJPRFkgKHNlY29uZCB0ZXN0KSIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZG9jLmRvY3Vt
ZW50RWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZC50YWdOYW1lLCAiU1BBTiIsICJtaXNwbGFj
ZWQgU1BBTiBlbGVtZW50IChzZWNvbmQgdGVzdCkiKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGRv
Yy5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC50YWdOYW1l
LCAiU0NSSVBUIiwgIm1pc3BsYWNlZCBTQ1JJUFQgZWxlbWVudCAoc2Vjb25kIHRlc3QpIik7Cisg
ICAgICB9IGZpbmFsbHkgeworICAgICAgICAvLyBwcmVwYXJlIHRoZSBmaWxlIGZvciB0aGUgbmV4
dCB0ZXN0CisgICAgICAgIGRvYy5vcGVuKCk7CisgICAgICAgIGRvYy53cml0ZSgiPCFET0NUWVBF
IEhUTUwgUFVCTElDIFwiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTlwiPjxoZWFkPjx0aXRsZT48
XC90aXRsZT48c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+aW1nIHsgaGVpZ2h0OiAxMHB4OyB9PFwv
c3R5bGU+PGJvZHk+PHA+PGltZyBzcmM9XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhB
UUFCQUlEJTJGQU1EQXdBQUFBQ0g1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlDUkFFQU93JTNEJTNE
XCIgYWx0PVwiXCI+Iik7CisgICAgICAgIGRvYy5jbG9zZSgpOworICAgICAgfQorICAgICAgcmV0
dXJuIDU7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDcyOiBkeW5h
bWljIG1vZGlmaWNhdGlvbiBvZiA8c3R5bGU+IGJsb2NrcycgdGV4dCBub2RlcywgZnJvbSBKb25h
cyBTaWNraW5nIGFuZCBHYXJyZXQgU21pdGgKKyAgICAgIHZhciBkb2MgPSBrdW5nRnVEZWF0aEdy
aXAuY2hpbGROb2Rlc1szXS5jb250ZW50RG9jdW1lbnQ7CisgICAgICBhc3NlcnQoZG9jLCAibWlz
c2luZyBkb2N1bWVudCBmb3IgdGVzdCIpOworICAgICAgYXNzZXJ0KGRvYy5pbWFnZXNbMF0sICJw
cmVyZXF1aXNpdGUgZmFpbGVkOiBubyBpbWFnZSIpOworICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5p
bWFnZXNbMF0uaGVpZ2h0LCAxMCwgInByZXJlcXVpc2l0ZSBmYWlsZWQ6IHN0eWxlIGRpZG4ndCBh
ZmZlY3QgaW1hZ2UiKTsKKyAgICAgIGRvYy5zdHlsZVNoZWV0c1swXS5vd25lck5vZGUuZmlyc3RD
aGlsZC5kYXRhID0gImltZyB7IGhlaWdodDogMjBweDsgfSI7CisgICAgICBhc3NlcnRFcXVhbHMo
ZG9jLmltYWdlc1swXS5oZWlnaHQsIDIwLCAiY2hhbmdlIGZhaWxlZCB0byB0YWtlIGVmZmVjdCIp
OworICAgICAgZG9jLnN0eWxlU2hlZXRzWzBdLm93bmVyTm9kZS5hcHBlbmRDaGlsZChkb2MuY3Jl
YXRlVGV4dE5vZGUoImltZyB7IGhlaWdodDogMzBweDsgfSIpKTsKKyAgICAgIGFzc2VydEVxdWFs
cyhkb2MuaW1hZ2VzWzBdLmhlaWdodCwgMzAsICJhcHBlbmQgZmFpbGVkIHRvIHRha2UgZWZmZWN0
Iik7CisgICAgICB2YXIgcnVsZXMgPSBkb2Muc3R5bGVTaGVldHNbMF0uY3NzUnVsZXM7IC8vICJB
bGwgQ1NTIG9iamVjdHMgaW4gdGhlIERPTSBhcmUgImxpdmUiIiBzYXlzIHNlY3Rpb24gMi4xLCBP
dmVydmlldyBvZiB0aGUgRE9NIExldmVsIDIgQ1NTIEludGVyZmFjZXMKKyAgICAgIGRvYy5zdHls
ZVNoZWV0c1swXS5pbnNlcnRSdWxlKCJpbWcgeyBoZWlnaHQ6IDQwcHg7IH0iLCAyKTsKKyAgICAg
IGFzc2VydEVxdWFscyhkb2MuaW1hZ2VzWzBdLmhlaWdodCwgNDAsICJpbnNlcnRSdWxlIGZhaWxl
ZCB0byB0YWtlIGVmZmVjdCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGRvYy5zdHlsZVNoZWV0c1sw
XS5jc3NSdWxlcy5sZW5ndGgsIDMsICJjb3VudCBvZiBydWxlcyBpcyB3cm9uZyIpOworICAgICAg
YXNzZXJ0RXF1YWxzKHJ1bGVzLmxlbmd0aCwgMywgImNzc1J1bGVzIGlzbid0IGxpdmUiKTsKKyAg
ICAgIC8vIHdoaWxlIHdlJ3JlIGF0IGl0LCBjaGVjayBzb21lIG90aGVyIHRoaW5ncyBvbiBkb2Mu
c3R5bGVTaGVldHM6CisgICAgICBhc3NlcnQoZG9jLnN0eWxlU2hlZXRzWzBdLmhyZWYgPT09IG51
bGwsICJpbnRlcm5hbCBzdHlsZXNoZWV0IGhhZCBhIFVSSTogIiArIGRvYy5zdHlsZVNoZWV0c1sw
XS5ocmVmKTsKKyAgICAgIGFzc2VydChkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5ocmVmID09PSBu
dWxsLCAiaW50ZXJuYWwgYWNpZDMgc3R5bGVzaGVldCBoYWQgYSBVUkk6ICIgKyBkb2N1bWVudC5z
dHlsZVNoZWV0c1swXS5ocmVmKTsKKyAgICAgIHJldHVybiA1OworICAgIH0sCisgICAgZnVuY3Rp
b24gKCkgeworICAgICAgLy8gdGVzdCA3MzogbmVzdGVkIGV2ZW50cywgZnJvbSBKb25hcyBTaWNr
aW5nCisgICAgICB2YXIgZG9jID0ga3VuZ0Z1RGVhdGhHcmlwLmNoaWxkTm9kZXNbM10uY29udGVu
dERvY3VtZW50OworICAgICAgLy8gaW1wbGllZCBldmVudHMKKyAgICAgIHZhciB1cCA9IDA7Cisg
ICAgICB2YXIgZG93biA9IDA7CisgICAgICB2YXIgYnV0dG9uID0gZG9jLmNyZWF0ZUVsZW1lbnQo
ImJ1dHRvbiIpOworICAgICAgYnV0dG9uLnR5cGUgPSAiYnV0dG9uIjsKKyAgICAgIGJ1dHRvbi5v
bmNsaWNrID0gZnVuY3Rpb24gKCkgeyB1cCArPSAxOyBpZiAodXAgPCAxMCkgYnV0dG9uLmNsaWNr
KCk7IGRvd24gKz0gdXA7IH07CisgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcs
IGZ1bmN0aW9uICgpIHsgdXAgKz0gMTsgdmFyIGUgPSBkb2MuY3JlYXRlRXZlbnQoIkhUTUxFdmVu
dHMiKTsgZS5pbml0RXZlbnQoJ3Rlc3QnLCBmYWxzZSwgZmFsc2UpOyBpZiAodXAgPCAyMCkgYnV0
dG9uLmRpc3BhdGNoRXZlbnQoZSk7IGRvd24gKz0gdXA7IH0sIGZhbHNlKTsKKyAgICAgIHZhciBl
dnQgPSBkb2MuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTsKKyAgICAgIGV2dC5pbml0RXZlbnQo
J3Rlc3QnLCBmYWxzZSwgZmFsc2UpOworICAgICAgYnV0dG9uLmRpc3BhdGNoRXZlbnQoZXZ0KTsK
KyAgICAgIGFzc2VydEVxdWFscyh1cCwgMjAsICJ0ZXN0IGV2ZW50IGhhbmRsZXIgY2FsbGVkIHRo
ZSB3cm9uZyBudW1iZXIgb2YgdGltZXMiKTsKKyAgICAgIGFzc2VydEVxdWFscyhkb3duLCA0MDAs
ICJ0ZXN0IGV2ZW50IGhhbmRsZXIgY2FsbGVkIGluIHRoZSB3cm9uZyBvcmRlciIpOyAgICAgIAor
ICAgICAgcmV0dXJuIDU7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0
IDc0OiBjaGVjayBnZXRTVkdEb2N1bWVudCgpLCBmcm9tIEVyaWsgRGFobHN0cm9tCisgICAgICAv
LyBHZXRTVkdEb2N1bWVudFs2XTogIkluIHRoZSBjYXNlIHdoZXJlIGFuIFNWRyBkb2N1bWVudCBp
cworICAgICAgLy8gZW1iZWRkZWQgYnkgcmVmZXJlbmNlLCBzdWNoIGFzIHdoZW4gYW4gWEhUTUwg
ZG9jdW1lbnQgaGFzIGFuCisgICAgICAvLyAnb2JqZWN0JyBlbGVtZW50IHdob3NlIGhyZWYgKG9y
IGVxdWl2YWxlbnQpIGF0dHJpYnV0ZQorICAgICAgLy8gcmVmZXJlbmNlcyBhbiBTVkcgZG9jdW1l
bnQgKGkuZS4sIGEgZG9jdW1lbnQgd2hvc2UgTUlNRSB0eXBlCisgICAgICAvLyBpcyAiaW1hZ2Uv
c3ZnK3htbCIgYW5kIHdob3NlIHJvb3QgZWxlbWVudCBpcyB0aHVzIGFuICdzdmcnCisgICAgICAv
LyBlbGVtZW50KSwgdGhlIFNWRyB1c2VyIGFnZW50IGlzIHJlcXVpcmVkIHRvIGltcGxlbWVudCB0
aGUKKyAgICAgIC8vIEdldFNWR0RvY3VtZW50IGludGVyZmFjZSBmb3IgdGhlIGVsZW1lbnQgd2hp
Y2ggcmVmZXJlbmNlcyB0aGUKKyAgICAgIC8vIFNWRyBkb2N1bWVudCAoZS5nLiwgdGhlIEhUTUwg
J29iamVjdCcgb3IgY29tcGFyYWJsZQorICAgICAgLy8gcmVmZXJlbmNpbmcgZWxlbWVudHMpLiIK
KyAgICAgIC8vCisgICAgICAvLyBbNl0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvc3RydWN0
Lmh0bWwjSW50ZXJmYWNlR2V0U1ZHRG9jdW1lbnQKKyAgICAgIC8vCisgICAgICAvLyBpZnJhbWUK
KyAgICAgIHZhciBpZnJhbWUgPSBrdW5nRnVEZWF0aEdyaXAuY2hpbGROb2Rlc1swXTsKKyAgICAg
IGFzc2VydChpZnJhbWUsICJGYWlsZWQgZmluZGluZyBzdmcgaWZyYW1lLiIpOworICAgICAgYXNz
ZXJ0KGlmcmFtZS5jb250ZW50RG9jdW1lbnQsICJjb250ZW50RG9jdW1lbnQgZmFpbGVkIGZvciA8
aWZyYW1lPiByZWZlcmVuY2luZyBhbiBzdmcgZG9jdW1lbnQuIik7CisgICAgICBpZiAoIWlmcmFt
ZS5nZXRTVkdEb2N1bWVudCkKKyAgICAgICAgZmFpbCgiZ2V0U1ZHRG9jdW1lbnQgbWlzc2luZyBv
biA8aWZyYW1lPiBlbGVtZW50LiIpOworICAgICAgYXNzZXJ0KGlmcmFtZS5nZXRTVkdEb2N1bWVu
dCgpLCAiZ2V0U1ZHRG9jdW1lbnQgZmFpbGVkIGZvciA8aWZyYW1lPiByZWZlcmVuY2luZyBhbiBz
dmcgZG9jdW1lbnQuIik7CisgICAgICBhc3NlcnQoaWZyYW1lLmdldFNWR0RvY3VtZW50KCkgPT0g
aWZyYW1lLmNvbnRlbnREb2N1bWVudCwgIk1pc21hdGNoIGJldHdlZW4gZ2V0U1ZHRG9jdW1lbnQg
YW5kIGNvbnRlbnREb2N1bWVudCAjMS4iKTsKKyAgICAgIC8vIG9iamVjdAorICAgICAgdmFyIG9i
amVjdCA9IGt1bmdGdURlYXRoR3JpcC5jaGlsZE5vZGVzWzFdOworICAgICAgYXNzZXJ0KG9iamVj
dCwgIkZhaWxlZCBmaW5kaW5nIHN2ZyBvYmplY3QuIik7CisgICAgICBhc3NlcnQob2JqZWN0LmNv
bnRlbnREb2N1bWVudCwgImNvbnRlbnREb2N1bWVudCBmYWlsZWQgZm9yIDxvYmplY3Q+IHJlZmVy
ZW5jaW5nIGFuIHN2ZyBkb2N1bWVudC4iKTsKKyAgICAgIGlmICghb2JqZWN0LmdldFNWR0RvY3Vt
ZW50KQorICAgICAgICBmYWlsKCJnZXRTVkdEb2N1bWVudCBtaXNzaW5nIG9uIDxvYmplY3Q+IGVs
ZW1lbnQuIik7CisgICAgICBhc3NlcnQob2JqZWN0LmdldFNWR0RvY3VtZW50KCksICJnZXRTVkdE
b2N1bWVudCBmYWlsZWQgZm9yIDxvYmplY3Q+IHJlZmVyZW5jaW5nIGFuIHN2ZyBkb2N1bWVudC4i
KTsKKyAgICAgIGFzc2VydChvYmplY3QuZ2V0U1ZHRG9jdW1lbnQoKSA9PSBvYmplY3QuY29udGVu
dERvY3VtZW50LCAiTWlzbWF0Y2ggYmV0d2VlbiBnZXRTVkdEb2N1bWVudCBhbmQgY29udGVudERv
Y3VtZW50ICMyLiIpOworICAgICAgcmV0dXJuIDU7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAvLyB0ZXN0IDc1OiBTTUlMIGluIFNWRywgZnJvbSBFcmlrIERhaGxzdHJvbQorICAg
ICAgLy8KKyAgICAgIC8vIFRoZSB0ZXN0IGJlZ2lucyBieSBjcmVhdGluZyBhIGZldyBlbGVtZW50
cywgYW1vbmcgdGhvc2UgaXMgYQorICAgICAgLy8gPHNldD4gZWxlbWVudC4gIFRoaXMgZWxlbWVu
dCBpcyBwcmV2ZW50ZWQgZnJvbSBydW5uaW5nIGJ5CisgICAgICAvLyBzZXR0aW5nIGJlZ2luPSJp
bmRlZmluaXRlIiwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgYW5pbWF0aW9uCisgICAgICAvLyBkb2Vz
bid0IHN0YXJ0IHVudGlsIHRoZSAnYmVnaW5FbGVtZW50JyBET00gbWV0aG9kIGlzIGNhbGxlZAor
ICAgICAgLy8gb24gdGhlIDxzZXQ+IGVsZW1lbnQuIFRoZSBhbmltYXRpb24gaXMgYSBzaW1wbGUg
YW5pbWF0aW9uCisgICAgICAvLyB0aGF0IHNldHMgdGhlIHZhbHVlIG9mIHRoZSB3aWR0aCBhdHRy
aWJ1dGUgdG8gMC4gVGhlIGR1cmF0aW9uCisgICAgICAvLyBvZiB0aGUgYW5pbWF0aW9uIGlzICdp
bmRlZmluaXRlJyB3aGljaCBtZWFucyB0aGF0IHRoZSB2YWx1ZQorICAgICAgLy8gd2lsbCBzdGF5
IDAgaW5kZWZpbml0ZWx5LiBUaGUgdGFyZ2V0IG9mIHRoZSBhbmltYXRpb24gaXMgdGhlCisgICAg
ICAvLyAnd2lkdGgnIGF0dHJpYnV0ZSBvZiB0aGUgPHJlY3Q+IGVsZW1lbnQgdGhhdCBpcyB0aGUg
cGFyZW50IG9mCisgICAgICAvLyB0aGUgPHNldD4gZWxlbWVudC4gV2hlbiAnd2lkdGgnIGlzIDAg
dGhlIHJlY3QgaXMgbm90IHJlbmRlcmVkCisgICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNb
N10uCisgICAgICAvLworICAgICAgLy8gU29tZSBwcm9wZXJ0aWVzIG9mIHRoZSBTVkdBbmltYXRl
ZExlbmd0aFsyXSBhbmQgU1ZHTGVuZ3RoWzhdCisgICAgICAvLyBhcmUgYWxzbyBpbnNwZWN0ZWQu
IEJlZm9yZSB0aGUgYW5pbWF0aW9uIHN0YXJ0cyBib3RoIGJhc2VWYWwKKyAgICAgIC8vIGFuZCBh
bmltVmFsIGNvbnRhaW4gdGhlIHNhbWUgdmFsdWVzWzJdLiBUaGVuIHRoZSBhbmltYXRpb24gaXMK
KyAgICAgIC8vIHN0YXJ0ZWQgYnkgY2FsbGluZyB0aGUgYmVnaW5FbGVtZW50IG1ldGhvZFs5XS4g
VG8gbWFrZSBzdXJlCisgICAgICAvLyB0aGF0IHRpbWUgcGFzc2VzIGJldHdlZW4gdGhlIHRyaWdn
ZXJpbmcgb2YgdGhlIGFuaW1hdGlvbiBhbmQKKyAgICAgIC8vIHRoZSB0aW1lIHRoYXQgdGhlIHZh
bHVlcyBhcmUgcmVhZCBvdXQgKGluIHRlc3QgIzY2KSwgdGhlCisgICAgICAvLyBjdXJyZW50IHRp
bWUgaXMgc2V0IHRvIDEwMDAgc2Vjb25kcyB1c2luZyB0aGUgc2V0Q3VycmVudFRpbWUKKyAgICAg
IC8vIG1ldGhvZFsxMF0uCisgICAgICAvLyAKKyAgICAgIC8vIFsyXSBodHRwOi8vd3d3LnczLm9y
Zy9UUi9TVkcxMS90eXBlcy5odG1sI0ludGVyZmFjZVNWR0FuaW1hdGVkTGVuZ3RoCisgICAgICAv
LyBbN10gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvc2hhcGVzLmh0bWwjUmVjdEVsZW1lbnQK
KyAgICAgIC8vIFs4XSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90eXBlcy5odG1sI0ludGVy
ZmFjZVNWR0xlbmd0aAorICAgICAgLy8gWzldIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2Fu
aW1hdGUuaHRtbCNET01JbnRlcmZhY2VzCisgICAgICAvLyBbMTBdIGh0dHA6Ly93d3cudzMub3Jn
L1RSL1NWRzExL3N0cnVjdC5odG1sI0ludGVyZmFjZVNWR1NWR0VsZW1lbnQKKworICAgICAgdmFy
IHN2Z25zID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKKyAgICAgIHZhciBzdmdkb2Mg
PSBrdW5nRnVEZWF0aEdyaXAuZmlyc3RDaGlsZC5jb250ZW50RG9jdW1lbnQ7CisgICAgICBhc3Nl
cnQoc3ZnZG9jLCAiY29udGVudERvY3VtZW50IGZhaWxlZCBvbiA8aWZyYW1lPiBmb3Igc3ZnIGRv
Y3VtZW50LiIpOworICAgICAgdmFyIHN2ZyA9IHN2Z2RvYy5kb2N1bWVudEVsZW1lbnQ7CisgICAg
ICB2YXIgcmVjdCA9IHN2Z2RvYy5jcmVhdGVFbGVtZW50TlMoc3ZnbnMsICJyZWN0Iik7CisgICAg
ICByZWN0LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJyZWQiKTsKKyAgICAgIHJlY3Quc2V0QXR0cmli
dXRlKCJ3aWR0aCIsICIxMDAiKTsKKyAgICAgIHJlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAi
MTAwIik7CisgICAgICByZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAicmVjdCIpOworICAgICAgdmFy
IGFuaW0gPSBzdmdkb2MuY3JlYXRlRWxlbWVudE5TKHN2Z25zLCAic2V0Iik7CisgICAgICBhbmlt
LnNldEF0dHJpYnV0ZSgiYmVnaW4iLCAiaW5kZWZpbml0ZSIpOworICAgICAgYW5pbS5zZXRBdHRy
aWJ1dGUoInRvIiwgIjAiKTsKKyAgICAgIGFuaW0uc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1l
IiwgIndpZHRoIik7CisgICAgICBhbmltLnNldEF0dHJpYnV0ZSgiZHVyIiwgImluZGVmaW5pdGUi
KTsKKyAgICAgIGFuaW0uc2V0QXR0cmlidXRlKCJmaWxsIiwgImZyZWV6ZSIpOworICAgICAgcmVj
dC5hcHBlbmRDaGlsZChhbmltKTsKKyAgICAgIHN2Zy5hcHBlbmRDaGlsZChyZWN0KTsKKyAgICAg
IGFzc2VydChyZWN0LndpZHRoLCAiU1ZHIERPTSBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgbm90
IHN1cHBvcnRlZC4iKTsKKyAgICAgIGFzc2VydChyZWN0LndpZHRoLmJhc2VWYWwsICJTVkcgRE9N
IGJhc2UgdHlwZSBTVkdBbmltYXRlZExlbmd0aCBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgYXNz
ZXJ0KHJlY3Qud2lkdGguYW5pbVZhbCwgIlNWRyBET00gYmFzZSB0eXBlIFNWR0FuaW1hdGVkTGVu
Z3RoIG5vdCBzdXBwb3J0ZWQuIik7CisgICAgICBhc3NlcnRFcXVhbHMoU1ZHTGVuZ3RoLlNWR19M
RU5HVEhUWVBFX05VTUJFUiwgMSwgIkluY29ycmVjdCBTVkdMZW5ndGguU1ZHX0xFTkdUSFRZUEVf
TlVNQkVSIGNvbnN0YW50IHZhbHVlLiIpOworICAgICAgYXNzZXJ0RXF1YWxzKHJlY3Qud2lkdGgu
YmFzZVZhbC51bml0VHlwZSwgU1ZHTGVuZ3RoLlNWR19MRU5HVEhUWVBFX05VTUJFUiwgIkluY29y
cmVjdCB1bml0VHlwZSBvbiB3aWR0aCBhdHRyaWJ1dGUuIik7CisgICAgICBhc3NlcnRFcXVhbHMo
cmVjdC5nZXRBdHRyaWJ1dGUoIndpZHRoIiksICIxMDAiLCAiSW5jb3JyZWN0IHZhbHVlIGZyb20g
Z2V0QXR0cmlidXRlLiIpOworICAgICAgYXNzZXJ0RXF1YWxzKHJlY3Qud2lkdGguYmFzZVZhbC52
YWx1ZUluU3BlY2lmaWVkVW5pdHMsIDEwMCwgIkluY29ycmVjdCB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMgdmFsdWUuIik7CisgICAgICBhc3NlcnRFcXVhbHMocmVjdC53aWR0aC5iYXNlVmFsLnZhbHVl
LCAxMDAsICJJbmNvcnJlY3QgYmFzZVZhbCB2YWx1ZSBiZWZvcmUgYW5pbWF0aW9uLiIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHJlY3Qud2lkdGguYW5pbVZhbC52YWx1ZSwgMTAwLCAiSW5jb3JyZWN0
IGFuaW1WYWwgdmFsdWUgYmVmb3JlIGFuaW1hdGlvbi4iKTsKKyAgICAgIGFuaW0uYmVnaW5FbGVt
ZW50KCk7CisgICAgICBhc3NlcnRFcXVhbHMocmVjdC53aWR0aC5iYXNlVmFsLnZhbHVlLCAxMDAs
ICJJbmNvcnJlY3QgYmFzZVZhbCB2YWx1ZSBhZnRlciBzdGFydGluZyBhbmltYXRpb24uIik7Cisg
ICAgICBzdmcuc2V0Q3VycmVudFRpbWUoMTAwMCk7IC8vIHNldHRpbmcgMSBzZWNvbmQgdG8gbWFr
ZSBzdXJlIHRoYXQgdGltZSAhPSAwcyB3aGVuIHdlIGNoZWNrIHRoZSBhbmltVmFsIHZhbHVlCisg
ICAgICAvLyB0aGUgYW5pbWF0aW9uIGlzIHRoZW4gdGVzdGVkIGluIHRoZSBuZXh0IHRlc3QKKyAg
ICAgIHJldHVybiA1OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA3
NjogU01JTCBpbiBTVkcsIHBhcnQgMiwgZnJvbSBFcmlrIERhaGxzdHJvbQorICAgICAgLy8KKyAg
ICAgIC8vIEFib3V0IGFuaW1WYWxbMl06ICJJZiB0aGUgZ2l2ZW4gYXR0cmlidXRlIG9yIHByb3Bl
cnR5IGlzCisgICAgICAvLyBiZWluZyBhbmltYXRlZCwgY29udGFpbnMgdGhlIGN1cnJlbnQgYW5p
bWF0ZWQgdmFsdWUgb2YgdGhlCisgICAgICAvLyBhdHRyaWJ1dGUgb3IgcHJvcGVydHksIGFuZCBi
b3RoIHRoZSBvYmplY3QgaXRzZWxmIGFuZCBpdHMKKyAgICAgIC8vIGNvbnRlbnRzIGFyZSByZWFk
b25seS4gSWYgdGhlIGdpdmVuIGF0dHJpYnV0ZSBvciBwcm9wZXJ0eSBpcworICAgICAgLy8gbm90
IGN1cnJlbnRseSBiZWluZyBhbmltYXRlZCwgY29udGFpbnMgdGhlIHNhbWUgdmFsdWUgYXMKKyAg
ICAgIC8vICdiYXNlVmFsJy4iCisgICAgICAvLworICAgICAgLy8gU2luY2UgdGhlIGR1cmF0aW9u
IG9mIHRoZSBhbmltYXRpb24gaXMgaW5kZWZpbml0ZSB0aGUgdmFsdWUKKyAgICAgIC8vIGlzIHN0
aWxsIGJlaW5nIGFuaW1hdGVkIGF0IHRoZSB0aW1lIGl0J3MgcXVlcmllZC4gTm93IHNpbmNlCisg
ICAgICAvLyB0aGUgJ3dpZHRoJyBhdHRyaWJ1dGUgd2FzIGFuaW1hdGVkIGZyb20gaXRzIG9yaWdp
bmFsIHZhbHVlIG9mCisgICAgICAvLyAiMTAwIiB0byB0aGUgbmV3IHZhbHVlIG9mICIwIiB0aGUg
YW5pbVZhbCBwcm9wZXJ0eSBtdXN0CisgICAgICAvLyBjb250YWluIHRoZSB2YWx1ZSAwLgorICAg
ICAgLy8gCisgICAgICAvLyBbMl0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdHlwZXMuaHRt
bCNJbnRlcmZhY2VTVkdBbmltYXRlZExlbmd0aAorCisgICAgICB2YXIgc3ZnZG9jID0ga3VuZ0Z1
RGVhdGhHcmlwLmZpcnN0Q2hpbGQuY29udGVudERvY3VtZW50OworICAgICAgYXNzZXJ0KHN2Z2Rv
YywgImNvbnRlbnREb2N1bWVudCBmYWlsZWQgb24gPG9iamVjdD4gZm9yIHN2ZyBkb2N1bWVudC4i
KTsKKyAgICAgIHZhciByZWN0ID0gc3ZnZG9jLmdldEVsZW1lbnRCeUlkKCJyZWN0Iik7CisgICAg
ICBhc3NlcnQocmVjdCwgIkZhaWxlZCB0byBmaW5kIDxyZWN0PiBlbGVtZW50IGluIHN2ZyBkb2N1
bWVudC4iKTsKKyAgICAgIGFzc2VydEVxdWFscyhyZWN0LndpZHRoLmFuaW1WYWwudmFsdWUsIDAs
ICJJbmNvcnJlY3QgYW5pbVZhbCB2YWx1ZSBhZnRlciBzdmcgYW5pbWF0aW9uLiIpOworICAgICAg
cmV0dXJuIDU7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDc3OiBl
eHRlcm5hbCBTVkcgZm9udHMsIGZyb20gRXJpayBEYWhsc3Ryb20KKyAgICAgIC8vCisgICAgICAv
LyBTVkdGb250cyBhcmUgZGVzY3JpYmVkIGhlcmVbM10sIGFuZCB0aGUgcmVsZXZhbnQgRE9NIG1l
dGhvZHMKKyAgICAgIC8vIHVzZWQgaW4gdGhlIHRlc3QgYXJlIGRlZmluZWQgaGVyZVs0XS4KKyAg
ICAgIC8vCisgICAgICAvLyBOb3RlIHRoYXQgaW4gb3JkZXIgdG8gYmUgbW9yZSBwcmVkaWN0YWJs
ZSB0aGUgc3ZnIHNob3VsZCBiZQorICAgICAgLy8gdmlzaWJsZSwgc28gdGhhdCBjbGF1c2UgIkZv
ciBub24tcmVuZGVyaW5nIGVudmlyb25tZW50cywgdGhlCisgICAgICAvLyB1c2VyIGFnZW50IHNo
YWxsIG1ha2UgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyBhYm91dCBnbHlwaAorICAgICAgLy8gbWV0
cmljcy4iIGRvZXNuJ3QgaW5mbHVlbmNlIHRoZSByZXN1bHRzLiBXZSB1c2UgJ29wYWNpdHk6MCcK
KyAgICAgIC8vIHRvIGhpZGUgdGhlIFNWRywgYnV0IGFyZ3VhYmx5IGl0J3Mgc3RpbGwgYSAicmVu
ZGVyaW5nCisgICAgICAvLyBlbnZpcm9ubWVudCIuCisgICAgICAvLworICAgICAgLy8gVGhlIGZv
bnQtc2l6ZSA0MDAwIHdhcyBjaG9zZW4gYmVjYXVzZSB0aGF0IG1hdGNoZXMgdGhlCisgICAgICAv
LyB1bml0c1BlckVtIHZhbHVlIGluIHRoZSBzdmdmb250LCB3aGljaCBtYWtlcyBpdCBlYXN5IHRv
IGNoZWNrCisgICAgICAvLyB0aGUgZ2x5cGggYWR2YW5jZXMgc2luY2UgdGhleSB3aWxsIHRoZW4g
YmUgZXhhY3RseSB3aGF0IHdhcworICAgICAgLy8gc3BlY2lmaWVkIGluIHRoZSBzdmdmb250Lgor
ICAgICAgLy8KKyAgICAgIC8vIFszXSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mb250cy5o
dG1sCisgICAgICAvLyBbNF0gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5odG1sI0lu
dGVyZmFjZVNWR1RleHRDb250ZW50RWxlbWVudAorCisgICAgICB2YXIgc3ZnbnMgPSAiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciOworICAgICAgdmFyIHhsaW5rbnMgPSAiaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI7CisgICAgICB2YXIgc3ZnZG9jID0ga3VuZ0Z1RGVhdGhHcmlwLmZp
cnN0Q2hpbGQuY29udGVudERvY3VtZW50OworICAgICAgYXNzZXJ0KHN2Z2RvYywgImNvbnRlbnRE
b2N1bWVudCBmYWlsZWQgb24gPG9iamVjdD4gZm9yIHN2ZyBkb2N1bWVudC4iKTsKKyAgICAgIHZh
ciBzdmcgPSBzdmdkb2MuZG9jdW1lbnRFbGVtZW50OworICAgICAgdmFyIHRleHQgPSBzdmdkb2Mu
Y3JlYXRlRWxlbWVudE5TKHN2Z25zLCAidGV4dCIpOworICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUo
InkiLCAiMWVtIik7CisgICAgICB0ZXh0LnNldEF0dHJpYnV0ZSgiZm9udC1zaXplIiwgIjQwMDAi
KTsKKyAgICAgIHRleHQuc2V0QXR0cmlidXRlKCJmb250LWZhbWlseSIsICJBQ0lEM3N2Z2ZvbnQi
KTsKKyAgICAgIHZhciB0ZXh0Q29udGVudCA9IHN2Z2RvYy5jcmVhdGVUZXh0Tm9kZSgiYWJjIik7
CisgICAgICB0ZXh0LmFwcGVuZENoaWxkKHRleHRDb250ZW50KTsKKyAgICAgIHN2Zy5hcHBlbmRD
aGlsZCh0ZXh0KTsKKyAgICAgIC8vIFRoZSBmb250LXNpemUgNDAwMCB3YXMgY2hvc2VuIGJlY2F1
c2UgdGhhdCBtYXRjaGVzIHRoZSB1bml0c1BlckVtIHZhbHVlIGluIHRoZSBzdmdmb250LCAKKyAg
ICAgIC8vIHdoaWNoIG1ha2VzIGl0IGVhc3kgdG8gY2hlY2sgdGhlIGdseXBoIGFkdmFuY2VzIHNp
bmNlIHRoZXkgd2lsbCB0aGVuIGJlIGV4YWN0bHkgd2hhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBz
dmdmb250LgorICAgICAgYXNzZXJ0KHRleHQuZ2V0TnVtYmVyT2ZDaGFycywgIlNWR1RleHRDb250
ZW50RWxlbWVudC5nZXROdW1iZXJPZkNoYXJzKCkgbm90IHN1cHBvcnRlZC4iKTsKKyAgICAgIGFz
c2VydEVxdWFscyh0ZXh0LmdldE51bWJlck9mQ2hhcnMoKSwgMywgImdldE51bWJlck9mQ2hhcnMg
cmV0dXJuZWQgaW5jb3JyZWN0IHN0cmluZyBsZW5ndGguIik7CisgICAgICBhc3NlcnRFcXVhbHMo
dGV4dC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSwgNDcxMSs0MisyMywgImdldENvbXB1dGVkVGV4
dExlbmd0aCBmYWlsZWQuIik7CisgICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRTdWJTdHJpbmdM
ZW5ndGgoMCwxKSwgNDIsICJnZXRTdWJTdHJpbmdMZW5ndGggIzEgZmFpbGVkLiIpOworICAgICAg
YXNzZXJ0RXF1YWxzKHRleHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsMiksIDQyKzIzLCAiZ2V0U3Vi
U3RyaW5nTGVuZ3RoICMyIGZhaWxlZC4iKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN1
YlN0cmluZ0xlbmd0aCgxLDEpLCAyMywgImdldFN1YlN0cmluZ0xlbmd0aCAjMyBmYWlsZWQuIik7
CisgICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMSwwKSwgMCwgImdl
dFN1YlN0cmluZ0xlbmd0aCAjNCBmYWlsZWQuIik7CisgICAgICB2YXIgY29kZSA9IC0xMDAwOwor
ICAgICAgdHJ5IHsKKyAgICAgICAgdmFyIHNsID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoMSwz
KTsKKyAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICBjb2RlID0gZS5jb2RlOworICAgICAgfQor
ICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5JTkRFWF9TSVpFX0VSUiwgImdl
dFN1YlN0cmluZ0xlbmd0aCAjMSBkaWRuJ3QgdGhyb3cgZXhjZXB0aW9uLiIpOworICAgICAgY29k
ZSA9IC0xMDAwOworICAgICAgdHJ5IHsKKyAgICAgICAgdmFyIHNsID0gdGV4dC5nZXRTdWJTdHJp
bmdMZW5ndGgoMCw0KTsKKyAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICBjb2RlID0gZS5jb2Rl
OworICAgICAgfQorICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5JTkRFWF9T
SVpFX0VSUiwgImdldFN1YlN0cmluZ0xlbmd0aCAjMiBkaWRuJ3QgdGhyb3cgZXhjZXB0aW9uLiIp
OworICAgICAgY29kZSA9IC0xMDAwOworICAgICAgdHJ5IHsKKyAgICAgICAgdmFyIHNsID0gdGV4
dC5nZXRTdWJTdHJpbmdMZW5ndGgoMywwKTsKKyAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICBj
b2RlID0gZS5jb2RlOworICAgICAgfQorICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2Vw
dGlvbi5JTkRFWF9TSVpFX0VSUiwgImdldFN1YlN0cmluZ0xlbmd0aCAjMyBkaWRuJ3QgdGhyb3cg
ZXhjZXB0aW9uLiIpOworICAgICAgY29kZSA9IC0xMDAwOworICAgICAgdHJ5IHsKKyAgICAgICAg
dmFyIHNsID0gdGV4dC5nZXRTdWJTdHJpbmdMZW5ndGgoLTE3LDIwKTsKKyAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBjb2RlID0gMDsgLy8gbmVnYXRpdmUgdmFsdWVzIG1pZ2h0IHRocm93IG5h
dGl2ZSBleGNlcHRpb24gc2luY2UgdGhlIGFwaSBhY2NlcHRzIG9ubHkgdW5zaWduZWQgdmFsdWVz
CisgICAgICB9CisgICAgICBhc3NlcnQoY29kZSA9PSAwLCAiZ2V0U3ViU3RyaW5nTGVuZ3RoICM0
IGRpZG4ndCB0aHJvdyBleGNlcHRpb24uIik7CisgICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRT
dGFydFBvc2l0aW9uT2ZDaGFyKDApLngsIDAsICJnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKDApLngg
cmV0dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN0
YXJ0UG9zaXRpb25PZkNoYXIoMSkueCwgNDIsICJnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKDEpLngg
cmV0dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldFN0
YXJ0UG9zaXRpb25PZkNoYXIoMikueCwgNDIrMjMsICJnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKDIp
LnggcmV0dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsKKyAgICAgIGFzc2VydEVxdWFscyh0ZXh0Lmdl
dFN0YXJ0UG9zaXRpb25PZkNoYXIoMCkueSwgNDAwMCwgImdldFN0YXJ0UG9zaXRpb25PZkNoYXIo
MCkueSByZXR1cm5lZCBpbnZhbGlkIHZhbHVlLiIpOworICAgICAgY29kZSA9IC0xMDAwOworICAg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIHZhbCA9IHRleHQuZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigt
MSk7CisgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgY29kZSA9IDA7IC8vIG5lZ2F0aXZlIHZh
bHVlcyBtaWdodCB0aHJvdyBuYXRpdmUgZXhjZXB0aW9uIHNpbmNlIHRoZSBhcGkgYWNjZXB0cyBv
bmx5IHVuc2lnbmVkIHZhbHVlcworICAgICAgfQorICAgICAgYXNzZXJ0KGNvZGUgPT0gMCwgImdl
dFN0YXJ0UG9zaXRpb25PZkNoYXIgIzEgZXhjZXB0aW9uIGZhaWxlZC4iKTsKKyAgICAgIGNvZGUg
PSAtMTAwMDsKKyAgICAgIHRyeSB7CisgICAgICAgIHZhciB2YWwgPSB0ZXh0LmdldFN0YXJ0UG9z
aXRpb25PZkNoYXIoNCk7CisgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgY29kZSA9IGUuY29k
ZTsKKyAgICAgIH0KKyAgICAgIGFzc2VydEVxdWFscyhjb2RlLCBET01FeGNlcHRpb24uSU5ERVhf
U0laRV9FUlIsICJnZXRTdGFydFBvc2l0aW9uT2ZDaGFyICMyIGV4Y2VwdGlvbiBmYWlsZWQuIik7
CisgICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRFbmRQb3NpdGlvbk9mQ2hhcigwKS54LCA0Miwg
ImdldEVuZFBvc2l0aW9uT2ZDaGFyKDApLnggcmV0dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsKKyAg
ICAgIGFzc2VydEVxdWFscyh0ZXh0LmdldEVuZFBvc2l0aW9uT2ZDaGFyKDEpLngsIDQyKzIzLCAi
Z2V0RW5kUG9zaXRpb25PZkNoYXIoMSkueCByZXR1cm5lZCBpbnZhbGlkIHZhbHVlLiIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHRleHQuZ2V0RW5kUG9zaXRpb25PZkNoYXIoMikueCwgNDIrMjMrNDcx
MSwgImdldEVuZFBvc2l0aW9uT2ZDaGFyKDIpLnggcmV0dXJuZWQgaW52YWxpZCB2YWx1ZS4iKTsK
KyAgICAgIGNvZGUgPSAtMTAwMDsKKyAgICAgIHRyeSB7CisgICAgICAgIHZhciB2YWwgPSB0ZXh0
LmdldEVuZFBvc2l0aW9uT2ZDaGFyKC0xNyk7CisgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
Y29kZSA9IDA7IC8vIG5lZ2F0aXZlIHZhbHVlcyBtaWdodCB0aHJvdyBuYXRpdmUgZXhjZXB0aW9u
IHNpbmNlIHRoZSBhcGkgYWNjZXB0cyBvbmx5IHVuc2lnbmVkIHZhbHVlcworICAgICAgfQorICAg
ICAgYXNzZXJ0KGNvZGUgPT0gMCwgImdldEVuZFBvc2l0aW9uT2ZDaGFyICMxIGV4Y2VwdGlvbiBm
YWlsZWQuIik7CisgICAgICBjb2RlID0gLTEwMDA7CisgICAgICB0cnkgeworICAgICAgICB2YXIg
dmFsID0gdGV4dC5nZXRFbmRQb3NpdGlvbk9mQ2hhcig0KTsKKyAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICBjb2RlID0gZS5jb2RlOworICAgICAgfQorICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUs
IERPTUV4Y2VwdGlvbi5JTkRFWF9TSVpFX0VSUiwgImdldEVuZFBvc2l0aW9uT2ZDaGFyICMyIGV4
Y2VwdGlvbiBmYWlsZWQuIik7CisgICAgICByZXR1cm4gNTsKKyAgICB9LAorICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgIC8vIHRlc3QgNzg6IFNWRyB0ZXh0UGF0aCBhbmQgZ2V0Um90YXRpb25PZkNo
YXIoKSwgZnJvbSBFcmlrIERhaGxzdHJvbQorICAgICAgLy8KKyAgICAgIC8vIFRoZSBnZXRSb3Rh
dGlvbk9mQ2hhcls0XSBtZXRob2QgZmV0Y2hlcyB0aGUgbWlkcG9pbnQgcm90YXRpb24KKyAgICAg
IC8vIG9mIGEgZ2x5cGggZGVmaW5lZCBieSBhIGNoYXJhY3RlciAoaW4gdGhpcyB0ZXN0Y2FzZSB0
aGVyZSBpcworICAgICAgLy8gYSBzaW1wbGUgMToxIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhl
IHR3bykuIFRoZSBwYXRoIGlzCisgICAgICAvLyBkZWZpbmVkIGluIHRoZSBzdmcueG1sIGZpbGUs
IGFuZCBjb25zaXN0cyBvZiBmaXJzdCBhIGxpbmUKKyAgICAgIC8vIGdvaW5nIGRvd24sIHRoZW4g
Zm9sbG93ZWQgYnkgYSBsaW5lIHRoYXQgaGFzIGEgNDUgZGVncmVlCisgICAgICAvLyBzbG9wZSBh
bmQgdGhlbiBmb2xsb3dlZCBieSBhIGhvcml6b250YWwgbGluZS4gVGhlIGxlbmd0aCBvZgorICAg
ICAgLy8gZWFjaCBwYXRoIHNlZ21lbnQgaGF2ZSBiZWVuIHBhaXJlZCB3aXRoIHRoZSBhZHZhbmNl
IG9mIGVhY2gKKyAgICAgIC8vIGdseXBoLCBzbyB0aGF0IGVhY2ggZ2x5cGggd2lsbCBiZSBvbiBl
YWNoIG9mIHRoZSB0aHJlZQorICAgICAgLy8gZGlmZmVyZW50IHBhdGggc2VnbWVudHMgKHNlZSB0
ZXh0IG9uIGEgcGF0aCBsYXlvdXQgcnVsZXNbNV0pLgorICAgICAgLy8gVGh1cyB0aGUgcm90YXRp
b24gb2YgdGhlIGZpcnN0IGdseXBoIGlzIDkwIGRlZ3JlZXMsIHRoZQorICAgICAgLy8gc2Vjb25k
IDQ1IGRlZ3JlZXMgYW5kIHRoZSB0aGlyZCAwIGRlZ3JlZXMuCisgICAgICAvLworICAgICAgLy8g
WzRdIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL3RleHQuaHRtbCNJbnRlcmZhY2VTVkdUZXh0
Q29udGVudEVsZW1lbnQKKyAgICAgIC8vIFs1XSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90
ZXh0Lmh0bWwjVGV4dHBhdGhMYXlvdXRSdWxlcworCisgICAgICB2YXIgc3ZnbnMgPSAiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciOworICAgICAgdmFyIHhsaW5rbnMgPSAiaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayI7CisgICAgICB2YXIgc3ZnZG9jID0ga3VuZ0Z1RGVhdGhHcmlwLmZp
cnN0Q2hpbGQuY29udGVudERvY3VtZW50OworICAgICAgYXNzZXJ0KHN2Z2RvYywgImNvbnRlbnRE
b2N1bWVudCBmYWlsZWQgb24gPG9iamVjdD4gZm9yIHN2ZyBkb2N1bWVudC4iKTsKKyAgICAgIHZh
ciBzdmcgPSBzdmdkb2MuZG9jdW1lbnRFbGVtZW50OworICAgICAgdmFyIHRleHQgPSBzdmdkb2Mu
Y3JlYXRlRWxlbWVudE5TKHN2Z25zLCAidGV4dCIpOworICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUo
ImZvbnQtc2l6ZSIsICI0MDAwIik7CisgICAgICB0ZXh0LnNldEF0dHJpYnV0ZSgiZm9udC1mYW1p
bHkiLCAiQUNJRDNzdmdmb250Iik7CisgICAgICB2YXIgdGV4dHBhdGggPSBzdmdkb2MuY3JlYXRl
RWxlbWVudE5TKHN2Z25zLCAidGV4dFBhdGgiKTsKKyAgICAgIHRleHRwYXRoLnNldEF0dHJpYnV0
ZU5TKHhsaW5rbnMsICJ4bGluazpocmVmIiwgIiNwYXRoIik7CisgICAgICB2YXIgdGV4dENvbnRl
bnQgPSBzdmdkb2MuY3JlYXRlVGV4dE5vZGUoImFiYyIpOworICAgICAgdGV4dHBhdGguYXBwZW5k
Q2hpbGQodGV4dENvbnRlbnQpOworICAgICAgdGV4dC5hcHBlbmRDaGlsZCh0ZXh0cGF0aCk7Cisg
ICAgICBzdmcuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRS
b3RhdGlvbk9mQ2hhcigwKSwgOTAsICJnZXRSb3RhdGlvbk9mQ2hhcigwKSBmYWlsZWQuIik7Cisg
ICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRSb3RhdGlvbk9mQ2hhcigxKSwgNDUsICJnZXRSb3Rh
dGlvbk9mQ2hhcigxKSBmYWlsZWQuIik7CisgICAgICBhc3NlcnRFcXVhbHModGV4dC5nZXRSb3Rh
dGlvbk9mQ2hhcigyKSwgMCwgImdldFJvdGF0aW9uT2ZDaGFyKDIpIGZhaWxlZC4iKTsKKyAgICAg
IHZhciBjb2RlID0gLTEwMDA7CisgICAgICB0cnkgeworICAgICAgICB2YXIgdmFsID0gdGV4dC5n
ZXRSb3RhdGlvbk9mQ2hhcigtMSkKKyAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICBjb2RlID0g
ZS5jb2RlOworICAgICAgfQorICAgICAgYXNzZXJ0RXF1YWxzKGNvZGUsIERPTUV4Y2VwdGlvbi5J
TkRFWF9TSVpFX0VSUiwgImdldFJvdGF0aW9uT2ZDaGFyICMxIGV4Y2VwdGlvbiBmYWlsZWQuIik7
CisgICAgICBjb2RlID0gLTEwMDA7CisgICAgICB0cnkgeworICAgICAgICB2YXIgdmFsID0gdGV4
dC5nZXRSb3RhdGlvbk9mQ2hhcig0KQorICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGNvZGUg
PSBlLmNvZGU7CisgICAgICB9CisgICAgICBhc3NlcnRFcXVhbHMoY29kZSwgRE9NRXhjZXB0aW9u
LklOREVYX1NJWkVfRVJSLCAiZ2V0Um90YXRpb25PZkNoYXIgIzIgZXhjZXB0aW9uIGZhaWxlZC4i
KTsKKyAgICAgIHJldHVybiA1OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8g
dGVzdCA3OTogYSBnaWFudCB0ZXN0IGZvciA8c3ZnOmZvbnQ+LCBmcm9tIENhbWVyb24gTWNDb3Jt
YWNrCisgICAgICAvLyBUaGlzIHRlc3RzIHZhcmlvdXMgZmVhdHVyZXMgb2YgU1ZHIGZvbnRzIGZy
b20gU1ZHIDEuMS4gIEl0IGNvbnNpc3RzIG9mCisgICAgICAvLyBhIDx0ZXh0PiBlbGVtZW50IHdp
dGggMzMgY2hhcmFjdGVycywgc3R5bGVkIHVzaW5nIGFuIFNWRyBmb250IHRoYXQgaGFzCisgICAg
ICAvLyBkaWZmZXJlbnQgYWR2YW5jZSB2YWx1ZXMgZm9yIGVhY2ggZ2x5cGguICBUaGUgc2NyaXB0
IHVzZXMKKyAgICAgIC8vIFNWR1RleHRFbGVtZW50Q29udGVudC5nZXRTdGFydFBvc2l0aW9uT2ZD
aGFyKCkgdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZQorICAgICAgLy8gZ2x5cGggY29ycmVzcG9uZGlu
ZyB0byBlYWNoIGNoYXJhY3RlciB3YXMgcGxhY2VkLCBhbmQgdGh1cyB0byB3b3JrIG91dAorICAg
ICAgLy8gd2hldGhlciB0aGUgU1ZHIGZvbnQgd2FzIHVzZWQgY29ycmVjdGx5LgorICAgICAgLy8K
KyAgICAgIC8vIFRoZSBmb250IHVzZXMgMTAwIHVuaXRzIHBlciBlbSwgYW5kIHRoZSB0ZXh0IGlz
IHNldCBpbiAxMDBweC4gIFNpbmNlCisgICAgICAvLyBmb250LXNpemUgZ2l2ZXMgdGhlIHNpemUg
b2YgdGhlIGVtIGJveAorICAgICAgLy8gKGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL3RleHQu
aHRtbCNET01JbnRlcmZhY2VzKSwgdGhlIHNjYWxlIG9mIHRoZQorICAgICAgLy8gY29vcmRpbmF0
ZSBzeXN0ZW0gZm9yIHRoZSBnbHlwaHMgaXMgdGhlIHNhbWUgYXMgdGhlIFNWRyBkb2N1bWVudC4K
KyAgICAgIC8vCisgICAgICAvLyBUaGUgZXhwZWN0ZWRBZHZhbmNlcyBhcnJheSBob2xkcyB0aGUg
ZXhwZWN0ZWQgYWR2YW5jZSB2YWx1ZSBmb3IgZWFjaAorICAgICAgLy8gY2hhcmFjdGVyLCBhbmQg
ZXhwZWN0ZWRLZXJuaW5nIGhvbGRzIHRoZSAobmVnYXRpdmUpIGtlcm5pbmcgZm9yIGVhY2gKKyAg
ICAgIC8vIGNoYXJhY3Rlci4gIGdldFBvc2l0aW9uT2ZDaGFyKCkgcmV0dXJucyB0aGUgYWN0dWFs
IHggY29vcmRpbmF0ZSBmb3IgdGhlCisgICAgICAvLyBnbHlwaCwgY29ycmVzcG9uZGluZyB0byB0
aGUgZ2l2ZW4gY2hhcmFjdGVyLCBhbmQgaWYgbXVsdGlwbGUgY2hhcmFjdGVycworICAgICAgLy8g
Y29ycmVzcG9uZCB0byB0aGUgc2FtZSBnbHlwaCwgdGhlIHNhbWUgcG9zaXRpb24gdmFsdWUgaXMg
cmV0dXJuZWQgZm9yCisgICAgICAvLyBlYWNoIG9mIHRob3NlIGNoYXJhY3RlcnMuCisgICAgICAv
LworICAgICAgLy8gSGVyZSBhcmUgdGhlIHJlYXNvbmluZ3MgZm9yIHRoZSBhZHZhbmNlL2tlcm5p
bmcgdmFsdWVzLiAgTm90ZSB0aGF0IGZvcgorICAgICAgLy8gYSBnaXZlbiBjaGFyYWN0ZXIgYXQg
aW5kZXggaSwgdGhlIGV4cGVjdGVkIHBvc2l0aW9uIGlzCisgICAgICAvLyBzdW0oZXhwZWN0ZWRB
ZHZhbmNlc1swOmktMV0gKyBleHBlY3RlZEtlcm5pbmdbMDppLTFdKS4KKyAgICAgIC8vCisgICAg
ICAvLyBjaGFyICAgICBhZHZhbmNlICBrZXJuaW5nICByZWFzb25pbmcKKyAgICAgIC8vIC0tLS0t
LS0gIC0tLS0tLS0gIC0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgICAgICAvLyBBICAgICAgICAxMDAwMCAgICAwICAgICAgICBOb3Jt
YWwgY2hhcmFjdGVyIG1hcHBpbmcgdG8gYSBzaW5nbGUgZ2x5cGguCisgICAgICAvLyBCICAgICAg
ICAwICAgICAgICAwICAgICAgICBGaXJzdCBjaGFyYWN0ZXIgb2YgYSB0d28gY2hhcmFjdGVyIGds
eXBoLCBzbyB0aGUKKyAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQg
cG9zaXRpb24gaXNuJ3QgYWR2YW5jZWQgdW50aWwgdGhlIHNlY29uZAorICAgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyLgorICAgICAgLy8gQyAgICAgICAgMjAwICAg
ICAgMCAgICAgICAgU2Vjb25kIGNoYXJhY3RlciBvZiBhIHR3byBjaGFyYWN0ZXIgZ2x5cGgsIHNv
IG5vdworICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBvc2l0aW9uIGlz
IGFkdmFuY2VkLgorICAgICAgLy8gQiAgICAgICAgMzAwICAgICAgMCAgICAgICAgQWx0aG91Z2gg
dGhlcmUgaXMgYSBnbHlwaCBmb3IgIkJDIiBpbiB0aGUgZm9udCwKKyAgICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGl0IGFwcGVhcnMgYWZ0ZXIgdGhlIGdseXBoIGZvciAiQiIsIHNv
IHRoZSBzaW5nbGUKKyAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
ciBnbHlwaCBmb3IgIkIiIHNob3VsZCBiZSBjaG9zZW4gaW5zdGVhZC4KKyAgICAgIC8vIEQgICAg
ICAgIDExMDAgICAgIDAgICAgICAgIE5vcm1hbCBjaGFyYWN0ZXIgbWFwcGluZyB0byBhIHNpbmds
ZSBnbHlwaC4KKyAgICAgIC8vIEEgICAgICAgIDEwMDAwICAgIDIwMCAgICAgIEtlcm5pbmcgb2Yg
LTIwMCBpcyBzcGVjaWZpZWQgaW4gdGhlIGZvbnQgYmV0d2VlbgorICAgICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlICJBIiBhbmQgIkVFIiBnbHlwaHMuCisgICAgICAvLyBFICAg
ICAgICAwICAgICAgICAwICAgICAgICBUaGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgdHdvIGNoYXJh
Y3RlciBnbHlwaCAiRUUiLgorICAgICAgLy8gRSAgICAgICAgMTMwMCAgICAgMCAgICAgICAgVGhl
IHNlY29uZCBjaGFyYWN0ZXIgb2YgYSB0d28gY2hhcmFjdGVyIGdseXBoLgorICAgICAgLy8gVSAg
ICAgICAgMCAgICAgICAgMCAgICAgICAgVGhpcyBpcyBhIGdseXBoIGZvciB0aGUgc2l4IGNoYXJh
Y3RlcnMgIlUrMDA0NiIsCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlj
aCBoYXBwZW4gdG8gbG9vayBsaWtlIGEgdmFsaWQgdW5pY29kZSByYW5nZS4KKyAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGVzdHMgdGhhdCB0aGUgPGdseXBoIHVuaWNv
ZGU9IiI+IGluIHRoZQorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCBt
YXRjaGVzIGV4YWN0IHN0cmluZ3MgcmF0aGVyIHRoYW4gYSByYW5nZSwKKyAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFzIHVzZWQgaW4gdGhlIGtlcm5pbmcgZWxlbWVudHMuCisg
ICAgICAvLyArICAgICAgICAwICAgICAgICAwICAgICAgICBTZWNvbmQgY2hhcmFjdGVyIG9mIHNp
eCBjaGFyYWN0ZXIgZ2x5cGguCisgICAgICAvLyAwICAgICAgICAwICAgICAgICAwICAgICAgICBU
aGlyZCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlwaC4KKyAgICAgIC8vIDAgICAgICAg
IDAgICAgICAgIDAgICAgICAgIEZvdXJ0aCBjaGFyYWN0ZXIgb2Ygc2l4IGNoYXJhY3RlciBnbHlw
aC4KKyAgICAgIC8vIDQgICAgICAgIDAgICAgICAgIDAgICAgICAgIEZpZnRoIGNoYXJhY3RlciBv
ZiBzaXggY2hhcmFjdGVyIGdseXBoLgorICAgICAgLy8gNiAgICAgICAgMTcwMCAgICAgMCAgICAg
ICAgU2l4dGggY2hhcmFjdGVyIG9mIHNpeCBjaGFyYWN0ZXIgZ2x5cGguCisgICAgICAvLyBVICAg
ICAgICAwICAgICAgICAwICAgICAgICBUaGUgc2FtZSBzaXggY2hhcmFjdGVyIGdseXBoIHRoYXQg
bG9va3MgbGlrZSBhCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2Rl
IHJhbmdlLiAgT25lIG9mIHRoZSBrZXJuaW5nIGVsZW1lbnRzIGhhcworICAgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdTE9IlUrMDA0NiIgdTI9IlUrMDA0NiIsIHdoaWNoIHNob3Vs
ZG4ndCBtYXRjaAorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywgYmVj
YXVzZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZSBpbnRlcnByZXRlZAorICAgICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXMgVW5pY29kZSByYW5nZXMgaWYgdGhleSBhcmUsIGFuZCBub3Jt
YWwKKyAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3Mgb3RoZXJ3aXNl
LiAgVGh1cyB0aGVyZSBzaG91bGQgYmUgbm8KKyAgICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtlcm5pbmcgYmV0d2VlbiB0aGVzZSB0d28gZ2x5cGhzLgorICAgICAgLy8gRyAgICAg
ICAgMjMwMCAgICAgMjAwICAgICAgS2VybmluZyBpcyBiZXR3ZWVuIHRoaXMgY2hhcmFjdGVyIGFu
ZCB0aGUgbmV4dAorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkciLCBzaW5j
ZSB0aGVyZSBpcyBhbiA8aGtlcm4+IGVsZW1lbnQgdGhhdAorICAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlcyBhIFVuaWNvZGUgcmFuZ2Ugb24gaXRzIHUxPSIiIGF0dHJpYnV0
ZQorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGEgZ2x5cGggbmFtZSBv
biBpdHMgZzI9IiIgYXR0cmlidXRlIHdoaWNoCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib3RoIG1hdGNoICJHIi4KKyAgICAgIC8vIEcgICAgICAgIDIzMDAgICAgIDAgICAg
ICAgIE5vcm1hbCBjaGFyYWN0ZXIgd2l0aCBrZXJuaW5nIGJlZm9yZSBpdC4KKyAgICAgIC8vIEgg
ICAgICAgIDMxMDAgICAgIDAgICAgICAgIEEgZ2x5cGggd2l0aCBncmFwaGljYWwgY29udGVudCBk
ZXNjcmliaW5nIHRoZQorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGgs
IHJhdGhlciB0aGFuIGEgZD0iIiBhdHRyaWJ1dGUuCisgICAgICAvLyBJICAgICAgICA0MzAwICAg
ICAwICAgICAgICBHbHlwaHMgYXJlIGNoZWNrZWQgaW4gZG9jdW1lbnQgb3JkZXIgZm9yIG9uZQor
ICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXRjaGVzLCBidXQgdGhl
IGZpcnN0IGdseXBoIHdpdGgKKyAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aWNvZGU9IkkiIGFsc28gaGFzIGxhbmc9InpoIiwgd2hpY2ggZGlzcXVhbGlmaWVzCisgICAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gIFRodXMgdGhlIHNlY29uZCBnbHlwaCB3
aXRoIHVuaWNvZGU9IkkiCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBj
aG9zZW4uCisgICAgICAvLyBJICAgICAgICA0MTAwICAgICAwICAgICAgICBTaW5jZSB0aGlzIEkg
aGFzIHhtbDpsYW5nPSJ6aCIgb24gaXQgaW4gdGhlIHRleHQsCisgICAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgZmlyc3QgZ2x5cGggd2l0aCBsYW5nPSJ6aCIgbWF0Y2hlcy4K
KyAgICAgIC8vIEogICAgICAgIDQ3MDAgICAgIC00NzAwICAgIEEgbm9ybWFsIGdseXBoIHdpdGgg
a2VybmluZyBiZXR3ZWVuIHRoZSAiSiIgYW5kIHRoZQorICAgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dCBnbHlwaCAiQSIgZXF1YWwgdG8gdGhlIGFkdmFuY2Ugb2YgdGhlICJK
IgorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGgsIHNvIHRoZSBwb3Np
dGlvbiBzaG91bGQgc3RheSB0aGUgc2FtZS4KKyAgICAgIC8vIEEgICAgICAgIDEwMDAwICAgIDAg
ICAgICAgIE5vcm1hbCBnbHlwaCB3aXRoIGtlcm5pbmcgYmVmb3JlIGl0LgorICAgICAgLy8gSyAg
ICAgICAgNTkwMCAgICAgMCAgICAgICAgVGhlIGZpcnN0IGdseXBoIHdpdGggdW5pY29kZT0iSyIg
ZG9lcyBub3QgbWF0Y2gsCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5j
ZSBpdCBoYXMgb3JpZW50YXRpb249InYiLCBzbyB0aGUgc2Vjb25kCisgICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbHlwaCB3aXRoIHVuaWNvZGU9IksiIGlzIGNob3Nlbi4KKyAg
ICAgIC8vIDxzcGM+ICAgIDYxMDAgICAgIDAgICAgICAgIFRoZSBzcGFjZSBjaGFyYWN0ZXIgc2hv
dWxkIHNlbGVjdCB0aGUgZ2x5cGggd2l0aAorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pY29kZT0iICIsIGRlc3BpdGUgaXQgaGF2aW5nIGEgbWlzbGVhZGluZworICAgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGgtbmFtZT0iTCIuCisgICAgICAvLyBM
ICAgICAgICA2NzAwICAgICAwICAgICAgICBUaGUgIkwiIGNoYXJhY3RlciBzaG91bGQgc2VsZWN0
IHRoZSBnbHlwaCB3aXRoCisgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlj
b2RlPSIgIiwgZGVzcGl0ZSBpdCBoYXZpbmcgYSBtaXNsZWFkaW5nCisgICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbHlwaC1uYW1lPSJzcGFjZXYiLgorICAgICAgLy8gQSAgICAg
ICAgMjkwMCAgICAgMCAgICAgICAgQW4gPGFsdEdseXBoPiBlbGVtZW50IGlzIHVzZWQgdG8gc2Vs
ZWN0IHRoZQorICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGggZm9yIFUr
MTAwODUgaW5zdGVhZCBvZiB0aGUgb25lIGZvciAiQSIuCisgICAgICAvLyBVKzEwMDg1ICAyOTAw
ICAgICAwICAgICAgICBUZXN0cyBnbHlwaCBzZWxlY3Rpb24gd2l0aCBhIG5vbi1wbGFuZS0wCisg
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIuCisgICAgICAvLyBB
ICAgICAgICAxMDAwMCAgICAwICAgICAgICBBIGZpbmFsIG5vcm1hbCBjaGFyYWN0ZXIuCisgICAg
ICAvLworICAgICAgLy8gSW4gYWRkaXRpb24sIHRoZSBzY3JpcHQgdGVzdHMgdGhlIHZhbHVlIHJl
dHVybmVkIGJ5CisgICAgICAvLyBTVkdUZXh0Q29udGVudEVsZW1lbnQuZ2V0TnVtYmVyT2ZDaGFy
cygpLCB3aGljaCBpbiB0aGlzIGNhc2Ugc2hvdWxkIGJlIDM0LgorICAgICAgLy8gSWYgaXQgcmV0
dXJuZWQgMzMsIHRoZW4gaXQgaW5jb3JyZWN0bHkgY291bnRlZCBVbmljb2RlIGNoYXJhY3RlcnMg
aW5zdGVhZAorICAgICAgLy8gb2YgVVRGLTE2IGNvZGVwb2ludHMgKHByb2JhYmx5KS4KKyAgICAg
IC8vCisgICAgICAvLyBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZm9udHMuaHRtbCBm
b3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZ2x5cGgKKyAgICAgIC8vIG1hdGNoaW5nIHJ1bGVzLCBh
bmQgaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvdGV4dC5odG1sI0RPTUludGVyZmFjZXMKKyAg
ICAgIC8vIGZvciBhIGRlc2NyaXB0aW9uIG9mIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIoKSBhbmQg
Z2V0TnVtYmVyT2ZDaGFycygpLgorICAgICAgLy8KKyAgICAgIC8vIE5vdGUgYWxzbyB0aGF0IHRo
ZSB0ZXN0IHVzZXMgRE9NSW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKSB0byBjcmVhdGUK
KyAgICAgIC8vIHRoZSBTVkcgZG9jdW1lbnQuICBUaGlzIHNlZW1zIHRvIGNhdXNlIGJyb3dzZXJz
IHRyb3VibGUgZm9yIHRoZSBTVkcgRE9NCisgICAgICAvLyBpbnRlcmZhY2VzLCBzaW5jZSB0aGUg
ZG9jdW1lbnQgaXNuJ3QgYmVpbmcgInJlbmRlcmVkIiBhcyBpdCBtaWdodCBiZQorICAgICAgLy8g
aWYgaXQgd2VyZSBpbiBhbiA8aWZyYW1lPi4gIENoYW5naW5nIHRoZSB0ZXN0IHRvIHVzZSBhbiA8
aWZyYW1lPiB3aWxsCisgICAgICAvLyBhdCBsZWFzdCBsZXQgeW91IHNlZSB0aGUgbWFpbiBwYXJ0
IG9mIHRoZSB0ZXN0IHJ1bm5pbmcuCisKKyAgICAgIHZhciBOUyA9IHsgCisgICAgICAgIHN2Zzog
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywKKyAgICAgICAgeG1sOiAnaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywKKyAgICAgICAgeGxpbms6ICdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rJworICAgICAgfTsKKworICAgICAgdmFyIGRvYyA9IGt1bmdGdURlYXRo
R3JpcC5jaGlsZE5vZGVzWzFdLmNvbnRlbnREb2N1bWVudDsKKyAgICAgIHdoaWxlIChkb2MuaGFz
Q2hpbGROb2RlcygpKQorICAgICAgICBkb2MucmVtb3ZlQ2hpbGQoZG9jLmZpcnN0Q2hpbGQpOwor
ICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50TlMoTlMuc3ZnLCAic3ZnOnN2
ZyIpKTsKKworICAgICAgdmFyIGUgPSBmdW5jdGlvbiAobiwgYXMsIGNzKSB7CisgICAgICAgIHZh
ciBlbHQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKE5TLnN2Zywgbik7CisgICAgICAgIGlmIChhcykg
eworICAgICAgICAgIGZvciAodmFyIGFuIGluIGFzKSB7CisgICAgICAgICAgICB2YXIgaWR4ID0g
YW4uaW5kZXhPZignOicpOworICAgICAgICAgICAgdmFyIG5zID0gbnVsbDsKKyAgICAgICAgICAg
IGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgIG5zID0gTlNbYW4uc3Vic3RyaW5nKDAsIGlk
eCldOworICAgICAgICAgICAgZWx0LnNldEF0dHJpYnV0ZU5TKG5zLCBhbiwgYXNbYW5dKTsKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNzKSB7CisgICAgICAgICAgZm9yICh2
YXIgaSBpbiBjcykgeworICAgICAgICAgICAgdmFyIGMgPSBjc1tpXTsKKyAgICAgICAgICAgIGVs
dC5hcHBlbmRDaGlsZCh0eXBlb2YgYyA9PSAnc3RyaW5nJyA/IGRvYy5jcmVhdGVUZXh0Tm9kZShj
KSA6IGMpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZWx0OworICAg
ICAgfQorCisgICAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGUoJ2ZvbnQnLCB7
ICdob3Jpei1hZHYteCc6ICcxMDAwMCd9LCBbZSgnZm9udC1mYWNlJywgeyAnZm9udC1mYW1pbHkn
OiAnSENsJywgJ3VuaXRzLXBlci1lbSc6ICcxMDAnLCAnYXNjZW50JzogJzEwMDAnLCAnZGVzY2Vu
dCc6ICc1MDAnfSksIGUoJ21pc3NpbmctZ2x5cGgnLCBudWxsLCBbZSgncGF0aCcsIHsgJ2QnOiAn
TTEwMCwwIGg4MDAgdi0xMDAgaC04MDAgeid9KV0pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAn
QScsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonfSksIGUoJ2dseXBoJywgeyAndW5p
Y29kZSc6ICdCQycsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2
LXgnOiAnMjAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnQicsICdkJzogJ00xMDAsMCBo
MTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnMzAwJ30pLCBlKCdnbHlwaCcsIHsg
J3VuaWNvZGUnOiAnQycsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXot
YWR2LXgnOiAnNTAwJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnQkQnLCAnZCc6ICdNMTAw
LDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzcwMCd9KSwgZSgnZ2x5cGgn
LCB7ICd1bmljb2RlJzogJ0QnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hv
cml6LWFkdi14JzogJzExMDAnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdFRScsICdkJzog
J00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnMTMwMCcsICAnZ2x5
cGgtbmFtZSc6ICdncmFwZWZydWl0J30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnVSswMDQ2
JywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICcxNzAw
J30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAnRicsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAw
IGgtMTAwIHonLCAnaG9yaXotYWR2LXgnOiAnMTkwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2Rl
JzogJ0cnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14Jzog
JzIzMDAnLCAnZ2x5cGgtbmFtZSc6ICdnZWUnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdc
dUQ4MDBcdURDODUnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFk
di14JzogJzI5MDAnLCAnaWQnOiAnYXN0cmFsJ30pLCBlKCdnbHlwaCcsIHsgJ3VuaWNvZGUnOiAn
SCcsICdob3Jpei1hZHYteCc6ICczMTAwJ30sIFtlKCdwYXRoJywgeyAnZCc6ICdNMTAwLDAgaDEw
MCB2LTEwMCBoLTEwMCB6J30pXSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdJJywgJ2QnOiAn
TTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc0MTAwJywgJ2xhbmcn
OiAnemgnfSksIGUoJ2dseXBoJywgeyAndW5pY29kZSc6ICdJJywgJ2QnOiAnTTEwMCwwIGgxMDAg
di0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYteCc6ICc0MzAwJ30pLCBlKCdnbHlwaCcsIHsgJ3Vu
aWNvZGUnOiAnSicsICdkJzogJ00xMDAsMCBoMTAwIHYtMTAwIGgtMTAwIHonLCAnaG9yaXotYWR2
LXgnOiAnNDcwMCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0snLCAnZCc6ICdNMTAwLDAg
aDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzUzMDAnLCAnb3JpZW50YXRpb24n
OiAndid9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzogJ0snLCAnZCc6ICdNMTAwLDAgaDEwMCB2
LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzU5MDAnfSksIGUoJ2dseXBoJywgeyAndW5p
Y29kZSc6ICcgJywgJ2QnOiAnTTEwMCwwIGgxMDAgdi0xMDAgaC0xMDAgeicsICdob3Jpei1hZHYt
eCc6ICc2MTAwJywgJ2dseXBoLW5hbWUnOiAnTCd9KSwgZSgnZ2x5cGgnLCB7ICd1bmljb2RlJzog
J0wnLCAnZCc6ICdNMTAwLDAgaDEwMCB2LTEwMCBoLTEwMCB6JywgJ2hvcml6LWFkdi14JzogJzY3
MDAnLCAnZ2x5cGgtbmFtZSc6ICdzcGFjZSd9KSwgZSgnaGtlcm4nLCB7ICd1MSc6ICdBJywgJ3Uy
JzogJ0VFJywgJ2snOiAnMTAwMCd9KSwgZSgnaGtlcm4nLCB7ICd1MSc6ICdBJywgJ2cyJzogJ2dy
YXBlZnJ1aXQnLCAnayc6ICctMjAwJ30pLCBlKCdoa2VybicsIHsgJ3UxJzogJ1UrMDA0NicsICd1
Mic6ICdVKzAwNDYnLCAnayc6ICctMjAwJ30pLCBlKCdoa2VybicsIHsgJ3UxJzogJ1UrMDA0Ny0w
MDQ3JywgJ2cyJzogJ2dlZScsICdrJzogJy0yMDAnfSksIGUoJ2hrZXJuJywgeyAndTEnOiAnSics
ICd1Mic6ICdBJywgJ2snOiAnNDcwMCd9KV0pKTsKKyAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQu
YXBwZW5kQ2hpbGQoZSgndGV4dCcsIHsgJ3knOiAnMTAwJywgJ2ZvbnQtZmFtaWx5JzogJ0hDbCcs
ICdmb250LXNpemUnOiAnMTAwcHgnLCAnbGV0dGVyLXNwYWNpbmcnOiAnMHB4JywgJ3dvcmQtc3Bh
Y2luZyc6ICcwcHgnfSwgWydBQkNCREFFRVUrMDA0NlUrMDA0NkdHSEknLCBlKCd0c3BhbicsIHsg
J3htbDpsYW5nJzogJ3poJ30sIFsnSSddKSwgJ0pBSyBMJywgZSgnYWx0R2x5cGgnLCB7ICd4bGlu
azpocmVmJzogJyNhc3RyYWwnfSwgWydBJ10pLCAnXHVEODAwXHVEQzg1QSddKSk7CisKKyAgICAg
IHZhciB0ID0gZG9jLmRvY3VtZW50RWxlbWVudC5sYXN0Q2hpbGQ7CisKKyAgICAgIHZhciBjaGFy
YWN0ZXJEZXNjcmlwdGlvbnMgPSBbCisgICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIiLAorICAg
ICAgICAidGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIHR3by1jaGFyYWN0ZXIgZ2x5cGgiLAorICAg
ICAgICAidGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVyIGdseXBoIiwKKyAg
ICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hpY2ggc2hvdWxkbid0IGJlIHRoZSBmaXJzdCBj
aGFyYWN0ZXIgb2YgYSB0d28tY2hhcmFjdGVyIGdseXBoIiwKKyAgICAgICAgImEgbm9ybWFsIGNo
YXJhY3Rlciwgd2hpY2ggc2hvdWxkbid0IGJlIHRoZSBzZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdv
LWNoYXJhY3RlciBnbHlwaCIsCisgICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdoaWNoIGhh
cyBzb21lIGtlcm5pbmcgYWZ0ZXIgaXQiLAorICAgICAgICAidGhlIGZpcnN0IGNoYXJhY3RlciBv
ZiBhIHR3by1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcyBzb21lIGtlcm5pbmcgYmVmb3JlIGl0
IiwKKyAgICAgICAgInRoZSBzZWNvbmQgY2hhcmFjdGVyIG9mIGEgdHdvLWNoYXJhY3RlciBnbHlw
aCwgd2hpY2ggaGFzIHNvbWUga2VybmluZyBiZWZvcmUgaXQiLAorICAgICAgICAidGhlIGZpcnN0
IGNoYXJhY3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9v
ayBsaWtlIGEgVW5pY29kZSByYW5nZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBo
YXMga2VybmluZyBhZnRlciBpdCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAorICAgICAgICAi
dGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBw
ZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZp
ZWQgZ2x5cGggaGFzIGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwK
KyAgICAgICAgInRoZSB0aGlyZCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3
aGljaCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5n
ZS1zcGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYWZ0ZXIgaXQsIGJ1dCB0aGlzIGdseXBoIGRv
ZXMgbm90IiwKKyAgICAgICAgInRoZSBmb3VydGggY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3Rl
ciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVy
ZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGFmdGVyIGl0LCBidXQgdGhp
cyBnbHlwaCBkb2VzIG5vdCIsCisgICAgICAgICJ0aGUgZmlmdGggY2hhcmFjdGVyIG9mIGEgc2l4
LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJh
bmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGFmdGVyIGl0
LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsCisgICAgICAgICJ0aGUgc2l4dGggY2hhcmFjdGVy
IG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBV
bmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5n
IGFmdGVyIGl0LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIsCisgICAgICAgICJ0aGUgZmlyc3Qg
Y2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29r
IGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhh
cyBrZXJuaW5nIGJlZm9yZSBpdCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAorICAgICAgICAi
dGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFjdGVyIGdseXBoLCB3aGljaCBoYXBw
ZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdoZXJlIHRoZSByYW5nZS1zcGVjaWZp
ZWQgZ2x5cGggaGFzIGtlcm5pbmcgYmVmb3JlIGl0LCBidXQgdGhpcyBnbHlwaCBkb2VzIG5vdCIs
CisgICAgICAgICJ0aGUgdGhpcmQgY2hhcmFjdGVyIG9mIGEgc2l4LWNoYXJhY3RlciBnbHlwaCwg
d2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2RlIHJhbmdlLCB3aGVyZSB0aGUgcmFu
Z2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGJlZm9yZSBpdCwgYnV0IHRoaXMgZ2x5cGgg
ZG9lcyBub3QiLAorICAgICAgICAidGhlIGZvdXJ0aCBjaGFyYWN0ZXIgb2YgYSBzaXgtY2hhcmFj
dGVyIGdseXBoLCB3aGljaCBoYXBwZW5zIHRvIGxvb2sgbGlrZSBhIFVuaWNvZGUgcmFuZ2UsIHdo
ZXJlIHRoZSByYW5nZS1zcGVjaWZpZWQgZ2x5cGggaGFzIGtlcm5pbmcgYmVmb3JlIGl0LCBidXQg
dGhpcyBnbHlwaCBkb2VzIG5vdCIsCisgICAgICAgICJ0aGUgZmlmdGggY2hhcmFjdGVyIG9mIGEg
c2l4LWNoYXJhY3RlciBnbHlwaCwgd2hpY2ggaGFwcGVucyB0byBsb29rIGxpa2UgYSBVbmljb2Rl
IHJhbmdlLCB3aGVyZSB0aGUgcmFuZ2Utc3BlY2lmaWVkIGdseXBoIGhhcyBrZXJuaW5nIGJlZm9y
ZSBpdCwgYnV0IHRoaXMgZ2x5cGggZG9lcyBub3QiLAorICAgICAgICAidGhlIHNpeHRoIGNoYXJh
Y3RlciBvZiBhIHNpeC1jaGFyYWN0ZXIgZ2x5cGgsIHdoaWNoIGhhcHBlbnMgdG8gbG9vayBsaWtl
IGEgVW5pY29kZSByYW5nZSwgd2hlcmUgdGhlIHJhbmdlLXNwZWNpZmllZCBnbHlwaCBoYXMga2Vy
bmluZyBiZWZvcmUgaXQsIGJ1dCB0aGlzIGdseXBoIGRvZXMgbm90IiwKKyAgICAgICAgImEgbm9y
bWFsIGNoYXJhY3Rlciwgd2hpY2ggaGFzIHNvbWUga2VybmluZyBhZnRlciBpdCB0aGF0IGlzIHNw
ZWNpZmllZCBieSBnbHlwaCBuYW1lIiwKKyAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hp
Y2ggaGFzIHNvbWUga2VybmluZyBiZWZvcmUgaXQgdGhhdCBpcyBzcGVjaWZpZWQgYnkgZ2x5cGgg
bmFtZSIsCisgICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdob3NlIGdseXBoIGlzIGdpdmVu
IGJ5IGNoaWxkIGdyYXBoaWNhbCBjb250ZW50IG9mIHRoZSA8Z2x5cGg+IGVsZW1lbnQiLAorICAg
ICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aG9zZSBnbHlwaCBzaG91bGQgbm90IG1hdGNoIHRo
ZSBvbmUgd2l0aCBhIGxhbmc9XCJcIiBhdHRyaWJ1dGUgb24gaXQiLAorICAgICAgICAiYSBub3Jt
YWwgY2hhcmFjdGVyLCB3aG9zZSBnbHlwaCBzaG91bGQgbWF0Y2ggdGhlIG9uZSB3aXRoIGEgbGFu
Zz1cIlwiIGF0dHJpYnV0ZSBvbiBpdCIsCisgICAgICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIsIHdo
aWNoIGhhcyBzb21lIGtlcm5pbmcgYWZ0ZXIgaXQgdGhhdCBpcyBlcXVhbCB0byB0aGUgYWR2YW5j
ZSBvZiB0aGUgY2hhcmFjdGVyIiwKKyAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwgd2hpY2gg
aGFzIHNvbWUga2VybmluZyBiZWZvcmUgaXQgdGhhdCBpcyBlcXVhbCB0byB0aGUgYWR2YW5jZSBv
ZiB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIiwKKyAgICAgICAgImEgbm9ybWFsIGNoYXJhY3Rlciwg
d2hvc2UgZ2x5cGggc2hvdWxkIG5vdCBtYXRjaCB0aGUgb25lIHdpdGggYW4gb3JpZW50YXRpb249
XCJ2XCIgYXR0cmlidXRlIG9uIGl0IiwKKyAgICAgICAgImEgc3BhY2UgY2hhcmFjdGVyLCB3aGlj
aCBoYXMgYSBtaXNsZWFkaW5nIGdseXBoLW5hbWU9XCJcIiBhdHRyaWJ1dGUiLAorICAgICAgICAi
YSBub3JtYWwgY2hhcmFjdGVyLCB3aGljaCBoYXMgYSBtaXNsZWFkaW5nIGdseXBoLW5hbWU9XCJc
IiBhdHRyaWJ1dGUiLAorICAgICAgICAiYSBub3JtYWwgY2hhcmFjdGVyLCB3aG9zZSBnbHlwaCBp
cyBjaG9zZW4gdG8gYmUgYW5vdGhlciBieSB1c2luZyA8YWx0R2x5cGg+IiwKKyAgICAgICAgImEg
Y2hhcmFjdGVyIG5vdCBpbiBQbGFuZSAwIChoaWdoIHN1cnJvZ2F0ZSBwYWlyKSIsCisgICAgICAg
ICJhIGNoYXJhY3RlciBub3QgaW4gUGxhbmUgMCAobG93IHN1cnJvZ2F0ZSBwYWlyKSIsCisgICAg
ICAgICJhIG5vcm1hbCBjaGFyYWN0ZXIiLAorICAgICAgXTsKKworICAgICAgdmFyIGV4cGVjdGVk
QWR2YW5jZXMgPSBbCisgICAgICAgIDEwMDAwLCAgICAgICAvLyBBCisgICAgICAgIDAsICAgICAg
ICAgICAvLyBCQyBbMF0KKyAgICAgICAgMjAwLCAgICAgICAgIC8vIEJDIFsxXQorICAgICAgICAz
MDAsICAgICAgICAgLy8gQgorICAgICAgICAxMTAwLCAgICAgICAgLy8gRAorICAgICAgICAxMDAw
MCwgICAgICAgLy8gQQorICAgICAgICAwLCAgICAgICAgICAgLy8gRUUgWzBdCisgICAgICAgIDEz
MDAsICAgICAgICAvLyBFRSBbMV0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMF0K
KyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMV0KKyAgICAgICAgMCwgICAgICAgICAg
IC8vIFUrMDA0NiBbMl0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbM10KKyAgICAg
ICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbNF0KKyAgICAgICAgMTcwMCwgICAgICAgIC8vIFUr
MDA0NiBbNV0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMF0KKyAgICAgICAgMCwg
ICAgICAgICAgIC8vIFUrMDA0NiBbMV0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBb
Ml0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbM10KKyAgICAgICAgMCwgICAgICAg
ICAgIC8vIFUrMDA0NiBbNF0KKyAgICAgICAgMTcwMCwgICAgICAgIC8vIFUrMDA0NiBbNV0KKyAg
ICAgICAgMjMwMCwgICAgICAgIC8vIEcKKyAgICAgICAgMjMwMCwgICAgICAgIC8vIEcKKyAgICAg
ICAgMzEwMCwgICAgICAgIC8vIEgKKyAgICAgICAgNDMwMCwgICAgICAgIC8vIEkKKyAgICAgICAg
NDEwMCwgICAgICAgIC8vIEkgKHpoKQorICAgICAgICA0NzAwLCAgICAgICAgLy8gSgorICAgICAg
ICAxMDAwMCwgICAgICAgLy8gQQorICAgICAgICA1OTAwLCAgICAgICAgLy8gSworICAgICAgICA2
MTAwLCAgICAgICAgLy8gPHNwYWNlPgorICAgICAgICA2NzAwLCAgICAgICAgLy8gTAorICAgICAg
ICAyOTAwLCAgICAgICAgLy8gQSAodXNpbmcgJiN4MTAwODU7IGFsdEdseXBoKQorICAgICAgICAw
LCAgICAgICAgICAgLy8gJiN4MTAwODU7IGhpZ2ggc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgMjkw
MCwgICAgICAgIC8vICYjeDEwMDg1OyBsb3cgc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgMTAwMDAs
ICAgICAgIC8vIEEKKyAgICAgIF07CisKKyAgICAgIHZhciBleHBlY3RlZEtlcm5pbmcgPSBbCisg
ICAgICAgIDAsICAgICAgICAgICAvLyBBCisgICAgICAgIDAsICAgICAgICAgICAvLyBCQyBbMF0K
KyAgICAgICAgMCwgICAgICAgICAgIC8vIEJDIFsxXQorICAgICAgICAwLCAgICAgICAgICAgLy8g
QgorICAgICAgICAwLCAgICAgICAgICAgLy8gRAorICAgICAgICAyMDAsICAgICAgICAgLy8gQQor
ICAgICAgICAwLCAgICAgICAgICAgLy8gRUUgWzBdCisgICAgICAgIDAsICAgICAgICAgICAvLyBF
RSBbMV0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMF0KKyAgICAgICAgMCwgICAg
ICAgICAgIC8vIFUrMDA0NiBbMV0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMl0K
KyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbM10KKyAgICAgICAgMCwgICAgICAgICAg
IC8vIFUrMDA0NiBbNF0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbNV0KKyAgICAg
ICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMF0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUr
MDA0NiBbMV0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbMl0KKyAgICAgICAgMCwg
ICAgICAgICAgIC8vIFUrMDA0NiBbM10KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBb
NF0KKyAgICAgICAgMCwgICAgICAgICAgIC8vIFUrMDA0NiBbNV0KKyAgICAgICAgMjAwLCAgICAg
ICAgIC8vIEcKKyAgICAgICAgMCwgICAgICAgICAgIC8vIEcKKyAgICAgICAgMCwgICAgICAgICAg
IC8vIEgKKyAgICAgICAgMCwgICAgICAgICAgIC8vIEkKKyAgICAgICAgMCwgICAgICAgICAgIC8v
IEkgKHpoKQorICAgICAgICAtNDcwMCwgICAgICAgLy8gSgorICAgICAgICAwLCAgICAgICAgICAg
Ly8gQQorICAgICAgICAwLCAgICAgICAgICAgLy8gSworICAgICAgICAwLCAgICAgICAgICAgLy8g
PHNwYWNlPgorICAgICAgICAwLCAgICAgICAgICAgLy8gTAorICAgICAgICAwLCAgICAgICAgICAg
Ly8gQSAodXNpbmcgJiN4MTAwODU7IGFsdEdseXBoKQorICAgICAgICAwLCAgICAgICAgICAgLy8g
JiN4MTAwODU7IGhpZ2ggc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgMCwgICAgICAgICAgIC8vICYj
eDEwMDg1OyBsb3cgc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgMCwgICAgICAgICAgIC8vIEEKKyAg
ICAgIF07CisKKyAgICAgIGFzc2VydEVxdWFscyh0LmdldE51bWJlck9mQ2hhcnMoKSwgZXhwZWN0
ZWRBZHZhbmNlcy5sZW5ndGgsICdTVkdTVkdUZXh0RWxlbWVudC5nZXROdW1iZXJPZkNoYXJzKCkg
aW5jb3JyZWN0Jyk7CisKKyAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9ucyA9IFswXTsKKyAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRBZHZhbmNlcy5sZW5ndGg7IGkrKykKKyAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbnMucHVzaChleHBlY3RlZFBvc2l0aW9uc1tpXSArIGV4cGVjdGVk
QWR2YW5jZXNbaV0gKyBleHBlY3RlZEtlcm5pbmdbaV0pOworCisgICAgICB2YXIgYWN0dWFsUG9z
aXRpb25zID0gW107CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHQuZ2V0TnVtYmVyT2ZDaGFy
cygpOyBpKyspCisgICAgICAgIGFjdHVhbFBvc2l0aW9ucy5wdXNoKHQuZ2V0U3RhcnRQb3NpdGlv
bk9mQ2hhcihpKS54KTsKKyAgICAgIGFjdHVhbFBvc2l0aW9ucy5wdXNoKHQuZ2V0RW5kUG9zaXRp
b25PZkNoYXIodC5nZXROdW1iZXJPZkNoYXJzKCkgLSAxKS54KTsKKworICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBleHBlY3RlZFBvc2l0aW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAo
ZXhwZWN0ZWRQb3NpdGlvbnNbaV0gIT0gYWN0dWFsUG9zaXRpb25zW2ldKSB7CisgICAgICAgICAg
dmFyIHMgPSAiY2hhcmFjdGVyIHBvc2l0aW9uICIgKyBpICsgIiwgd2hpY2ggaXMgIjsKKyAgICAg
ICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICBzICs9ICJiZWZvcmUgIiArIGNoYXJhY3Rl
ckRlc2NyaXB0aW9uc1swXTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGkgPT0gZXhwZWN0ZWRQb3Np
dGlvbnMubGVuZ3RoIC0gMSkgeworICAgICAgICAgICAgcyArPSAiYWZ0ZXIgIiArIGNoYXJhY3Rl
ckRlc2NyaXB0aW9uc1tjaGFyYWN0ZXJEZXNjcmlwdGlvbnMubGVuZ3RoIC0gMV07CisgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHMgKz0gImJldHdlZW4gIiArIGNoYXJhY3RlckRlc2Ny
aXB0aW9uc1tpIC0gMV0gKyAiIGFuZCAiICsgY2hhcmFjdGVyRGVzY3JpcHRpb25zW2ldOworICAg
ICAgICAgIH0KKyAgICAgICAgICBzICs9ICIsIGlzICIgKyBhY3R1YWxQb3NpdGlvbnNbaV0gKyAi
IGJ1dCBzaG91bGQgYmUgIiArIGV4cGVjdGVkUG9zaXRpb25zW2ldICsgIi4iOworICAgICAgICAg
IGZhaWwocyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiA1OworICAgIH0sCisg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA4MDogcmVtb3ZlIHRoZSBpZnJhbWVzIGFu
ZCB0aGUgb2JqZWN0CisgICAgICBhc3NlcnQoIShrdW5nRnVEZWF0aEdyaXAgPT0gbnVsbCksICJr
dW5nRnVEZWF0aEdyaXAgd2FzIG51bGwiKTsKKyAgICAgIGFzc2VydCghKGt1bmdGdURlYXRoR3Jp
cC5wYXJlbnROb2RlID09IG51bGwpLCAia3VuZ0Z1RGVhdGhHcmlwLnBhcmVudE5vZGUgd2FzIG51
bGwiKTsKKyAgICAgIGt1bmdGdURlYXRoR3JpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGt1bmdG
dURlYXRoR3JpcCk7CisgICAgICBrdW5nRnVEZWF0aEdyaXAgPSBudWxsOworICAgICAgLy8gY2hl
Y2sgdGhhdCB0aGUgeGh0bWwgZmlsZXMgd29ya2VkIHJpZ2h0CisgICAgICBhc3NlcnQobm90aWZp
Y2F0aW9uc1sneGh0bWwuMSddLCAiU2NyaXB0IGluIFhIVE1MIGRpZG4ndCBleGVjdXRlIik7Cisg
ICAgICBhc3NlcnQoIW5vdGlmaWNhdGlvbnNbJ3hodG1sLjInXSwgIlhNTCB3ZWxsLWZvcm1lZG5l
c3MgZXJyb3IgZGlkbid0IHN0b3Agc2NyaXB0IGZyb20gZXhlY3V0aW5nIik7CisgICAgICBhc3Nl
cnQoIW5vdGlmaWNhdGlvbnNbJ3hodG1sLjMnXSwgIlNjcmlwdCBleGVjdXRlZCBkZXNwaXRlIGhh
dmluZyB3cm9uZyBuYW1lc3BhY2UiKTsKKyAgICAgIC8vIHdoaWxlIHdlJ3JlIGF0IGl0LCBjaGVj
ayB0aGF0IHRoZSBsaW5rdGVzdCBpcyBsb2FkZWQKKyAgICAgIC8vIHNpbmNlIHRoZSBvdGhlciBp
ZnJhbWVzIGhhdmUgZm9yY2libHkgbG9hZGVkIGJ5IG5vdywgd2UgYXNzdW1lIHRoYXQKKyAgICAg
IC8vIHRoZXJlJ3Mgbm8gd2F5IHRoaXMgY2FuJ3QgaGF2ZSBsb2FkZWQgYnkgbm93CisgICAgICAv
LyAocHJvYmFibHkgYSBzYWZlIGJldCkKKyAgICAgIHZhciBhID0gZG9jdW1lbnQubGlua3NbMV07
CisgICAgICBhc3NlcnQoIShhID09IG51bGwpLCAibGlua3Rlc3Qgd2FzIG51bGwiKTsKKyAgICAg
IGFzc2VydChhLnRleHRDb250ZW50ID09ICJMSU5LVEVTVCBGQUlMRUQiLCAibGlua3Rlc3QgbGlu
ayBjb3VsZG4ndCBiZSBmb3VuZCIpOworICAgICAgaWYgKGEuaGFzQXR0cmlidXRlKCdjbGFzcycp
KQorICAgICAgICByZXR1cm4gInJldHJ5IjsgLy8gbGlua3Rlc3Qgb25sb2FkIGRpZG4ndCBmaXJl
IC0tIGNvdWxkIGJlIGEgbmV0d29ya2luZyBpc3N1ZSwgY2hlY2sgdGhhdCBmaXJzdAorICAgICAg
cmV0dXJuIDU7CisgICAgfSwKKworICAgIC8vIGJ1Y2tldCA2OiBFQ01BU2NyaXB0CisgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA4MTogbGVuZ3RoIG9mIGFycmF5cyB3aXRoIGVsaXNp
b25zIGF0IGVuZAorICAgICAgdmFyIHQxID0gWyxdOworICAgICAgdmFyIHQyID0gWywsXTsKKyAg
ICAgIGFzc2VydEVxdWFscyh0MS5sZW5ndGgsIDEsICJbLF0gZG9lc24ndCBoYXZlIGxlbmd0aCAx
Iik7CisgICAgICBhc3NlcnRFcXVhbHModDIubGVuZ3RoLCAyLCAiWywsXSBkb2Vzbid0IGhhdmUg
bGVuZ3RoIDIiKTsKKyAgICAgIHJldHVybiA2OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeyAK
KyAgICAgIC8vIHRlc3QgODI6IGxlbmd0aCBvZiBhcnJheXMgd2l0aCBlbGlzaW9ucyBpbiB0aGUg
bWlkZGxlCisgICAgICB2YXIgdDMgPSBbJ2EnLCAsICdjJ107CisgICAgICBhc3NlcnRFcXVhbHMo
dDMubGVuZ3RoLCAzLCAiWydhJywsJ2MnXSBkb2Vzbid0IGhhdmUgbGVuZ3RoIDMiKTsKKyAgICAg
IGFzc2VydCgwIGluIHQzLCAibm8gMCBpbiB0MyIpOworICAgICAgYXNzZXJ0KCEoMSBpbiB0Myks
ICJ1bmV4cGVjdGVkIDEgaW4gdDMiKTsKKyAgICAgIGFzc2VydCgyIGluIHQzLCAibm8gMiBpbiB0
MyIpOworICAgICAgYXNzZXJ0RXF1YWxzKHQzWzBdLCAnYScsICJ0M1swXSB3cm9uZyIpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHQzWzJdLCAnYycsICJ0M1syXSB3cm9uZyIpOworICAgICAgcmV0dXJu
IDY7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDgzOiBhcnJheSBt
ZXRob2RzCisgICAgICB2YXIgeCA9IFsnYScsICdiJywgJ2MnXTsKKyAgICAgIGFzc2VydEVxdWFs
cyh4LnVuc2hpZnQoJ0EnLCAnQicsICdDJyksIDYsICJhcnJheS51bnNoaWZ0KCkgcmV0dXJuZWQg
dGhlIHdyb25nIHZhbHVlIik7CisgICAgICB2YXIgcyA9IHguam9pbih1bmRlZmluZWQpOworICAg
ICAgYXNzZXJ0RXF1YWxzKHMsICdBLEIsQyxhLGIsYycsICJhcnJheS5qb2luKHVuZGVmaW5lZCkg
dXNlZCB3cm9uZyBzZXBhcmF0b3IiKTsgLy8gcXYgMTUuNC40LjU6MworICAgICAgcmV0dXJuIDY7
CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDg0OiBjb252ZXJ0aW5n
IG51bWJlcnMgdG8gc3RyaW5ncworICAgICAgYXNzZXJ0RXF1YWxzKCgwLjApLnRvRml4ZWQoNCks
ICIwLjAwMDAiLCAidG9GaXhlZCg0KSB3cm9uZyBmb3IgMCIpOworICAgICAgYXNzZXJ0RXF1YWxz
KCgtMC4wKS50b0ZpeGVkKDQpLCAiMC4wMDAwIiwgInRvRml4ZWQoNCkgd3JvbmcgZm9yIC0wIik7
CisgICAgICBhc3NlcnRFcXVhbHMoKDAuMDAwMDYpLnRvRml4ZWQoNCksICIwLjAwMDEiLCAidG9G
aXhlZCg0KSB3cm9uZyBmb3IgMC4wMDAwNiIpOworICAgICAgYXNzZXJ0RXF1YWxzKCgtMC4wMDAw
NikudG9GaXhlZCg0KSwgIi0wLjAwMDEiLCAidG9GaXhlZCg0KSB3cm9uZyBmb3IgLTAuMDAwMDYi
KTsKKyAgICAgIGFzc2VydEVxdWFscygoMC4wKS50b0V4cG9uZW50aWFsKDQpLCAiMC4wMDAwZSsw
IiwgInRvRXhwb25lbnRpYWwoNCkgd3JvbmcgZm9yIDAiKTsKKyAgICAgIGFzc2VydEVxdWFscygo
LTAuMCkudG9FeHBvbmVudGlhbCg0KSwgIjAuMDAwMGUrMCIsICJ0b0V4cG9uZW50aWFsKDQpIHdy
b25nIGZvciAtMCIpOworICAgICAgdmFyIHggPSA3ZS00OworICAgICAgYXNzZXJ0RXF1YWxzKHgu
dG9QcmVjaXNpb24odW5kZWZpbmVkKSwgeC50b1N0cmluZyh1bmRlZmluZWQpLCAidG9QcmVjaXNp
b24odW5kZWZpbmVkKSB3YXMgd3JvbmciKTsKKyAgICAgIHJldHVybiA2OworICAgIH0sCisgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA4NTogc3RyaW5ncyBhbmQgc3RyaW5nLXJlbGF0
ZWQgb3BlcmF0aW9ucworICAgICAgLy8gc3Vic3RyKCkgYW5kIG5lZ2F0aXZlIG51bWJlcnMKKyAg
ICAgIGFzc2VydEVxdWFscygic2NhdGhpbmciLnN1YnN0cigtNywgMyksICJjYXQiLCAic3Vic3Ry
KCkgd3Jvbmcgd2l0aCBuZWdhdGl2ZSBudW1iZXJzIik7CisgICAgICByZXR1cm4gNjsKKyAgICB9
LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgODY6IERhdGUgdGVzdHMgLS0gbWV0
aG9kcyBwYXNzZWQgbm8gYXJndW1lbnRzCisgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CisgICAg
ICBhc3NlcnQoaXNOYU4oZC5zZXRNaWxsaXNlY29uZHMoKSksICJjYWxsaW5nIHNldE1pbGxpc2Vj
b25kcygpIHdpdGggbm8gYXJndW1lbnRzIGRpZG4ndCByZXN1bHQgaW4gTmFOIik7CisgICAgICBh
c3NlcnQoaXNOYU4oZCksICJkYXRlIHdhc24ndCBtYWRlIE5hTiIpOworICAgICAgYXNzZXJ0KGlz
TmFOKGQuZ2V0RGF5KCkpLCAiZGF0ZSB3YXNuJ3QgbWFkZSBOYU4iKTsKKyAgICAgIHJldHVybiA2
OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA4NzogRGF0ZSB0ZXN0
cyAtLSB5ZWFycworICAgICAgdmFyIGQxID0gbmV3IERhdGUoRGF0ZS5VVEMoOTkuOSwgNikpOwor
ICAgICAgYXNzZXJ0RXF1YWxzKGQxLmdldFVUQ0Z1bGxZZWFyKCksIDE5OTksICJEYXRlLlVUQygp
IGRpZG4ndCBkbyBwcm9wZXIgMTkwMCB5ZWFyIG9mZnNldHRpbmciKTsKKyAgICAgIHZhciBkMiA9
IG5ldyBEYXRlKDk4LjksIDYpOworICAgICAgYXNzZXJ0RXF1YWxzKGQyLmdldEZ1bGxZZWFyKCks
IDE5OTgsICJuZXcgRGF0ZSgpIGRpZG4ndCBkbyBwcm9wZXIgMTkwMCB5ZWFyIG9mZnNldHRpbmci
KTsKKyAgICAgIHJldHVybiA2OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8g
dGVzdCA4ODogRVMzIHNlY3Rpb24gNy42OjMgKHVuaWNvZGUgZXNjYXBlcyBjYW4ndCBiZSB1c2Vk
IHRvIHB1dCBub24taWRlbnRpZmllciBjaGFyYWN0ZXJzIGludG8gaWRlbnRpZmllcnMpCisgICAg
ICAvLyBhbmQgdGhlcmUncyBubyBvdGhlciBwbGFjZSBmb3IgdGhlbSBpbiB0aGUgc3ludGF4IChv
dGhlciB0aGFuIHN0cmluZ3MsIG9mIGNvdXJzZSkKKyAgICAgIHZhciBvayA9IGZhbHNlOworICAg
ICAgdHJ5IHsKKyAgICAgICAgZXZhbCgidmFyIHRlc3QgPSB7IH07XG50ZXN0Lmk9IDA7XG50ZXN0
LmlcXHUwMDJiPSAxO1xudGVzdC5pO1xuIik7CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IG9rID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGFzc2VydChvaywgIlxcdTAwMmIgd2FzIG5vdCBj
b25zaWRlcmVkIGEgcGFyc2UgZXJyb3IgaW4gc2NyaXB0Iik7CisgICAgICByZXR1cm4gNjsKKyAg
ICB9LAorICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgIC8vIHRlc3QgODk6IFJlZ3VsYXIgRXhwcmVz
c2lvbnMKKyAgICAgIHZhciBvayA9IHRydWU7CisgICAgICAvLyBlbXB0eSBjbGFzc2VzIGluIHJl
Z2V4cHMKKyAgICAgIHRyeSB7CisgICAgICAgIGV2YWwoIi9UQVtdKV0vLmV4ZWMoJ1RBXScpIik7
CisgICAgICAgIC8vIEpTIHJlZ2V4cHMgYXJlbid0IGxpa2UgUGVybCByZWdleHBzLCBpZiB0aGVp
ciBjaGFyYWN0ZXIKKyAgICAgICAgLy8gY2xhc3NlcyBzdGFydCB3aXRoIGEgXSB0aGF0IG1lYW5z
IHRoZXkncmUgZW1wdHkuIFNvIHRoaXMKKyAgICAgICAgLy8gaXMgYSBzeW50YXggZXJyb3I7IGlm
IHdlIGdldCBoZXJlIGl0J3MgYSBidWcuCisgICAgICAgIG9rID0gZmFsc2U7CisgICAgICB9IGNh
dGNoIChlKSB7IH0KKyAgICAgIGFzc2VydChvaywgIm9ycGhhbmVkIGJyYWNrZXQgbm90IGNvbnNp
ZGVyZWQgcGFyc2UgZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwiKTsKKyAgICAg
IHRyeSB7CisgICAgICAgIGlmIChldmFsKCIvW10vLmV4ZWMoJycpIikpCisgICAgICAgICAgb2sg
PSBmYWxzZTsKKyAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAg
IH0KKyAgICAgIGFzc2VydChvaywgIi9bXS8gZWl0aGVyIGZhaWxlZCB0byBwYXJzZSBvciBtYXRj
aGVkIHNvbWV0aGluZyIpOworICAgICAgcmV0dXJuIDY7CisgICAgfSwKKyAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAvLyB0ZXN0IDkwOiBSZWd1bGFyIEV4cHJlc3Npb25zCisgICAgICAvLyBub3Qg
YmFjayByZWZlcmVuY2VzLgorICAgICAgYXNzZXJ0KCEoLygxKVwwKDIpLy50ZXN0KCIxMiIpKSwg
Ik5VTCBpbiByZWdleHAgaW5jb3JyZWN0bHkgaWdub3JlZCIpOworICAgICAgYXNzZXJ0KCgvKDEp
XDAoMikvLnRlc3QoIjEiICsgIlwwIiArICIyIikpLCAiTlVMIGluIHJlZ2V4cCBkaWRuJ3QgbWF0
Y2ggY29ycmVjdGx5Iik7CisgICAgICBhc3NlcnQoISgvKDEpXDAoMikvLnRlc3QoIjFcMDIiKSks
ICJvY3RhbCAyIHVuZXhwZWN0ZWRseSBtYXRjaGVkIE5VTCIpOworICAgICAgYXNzZXJ0RXF1YWxz
KG51bGxJblJlZ2V4cEFyZ3VtZW50UmVzdWx0LCAicGFzc2VkIiwgImZhaWxlZCAvLy50ZXN0KCkg
Y2hlY2siKTsgLy8gbm90aGluZyB0byBzZWUgaGVyZSwgbW92ZSBhbG9uZyBub3cKKyAgICAgIC8v
IGJhY2sgcmVmZXJlbmNlIHRvIGZ1dHVyZSBjYXB0dXJlCisgICAgICB2YXIgeCA9IC8oXDMpKFwx
KShhKS8uZXhlYygnY2F0Jyk7IC8vIHRoZSBcMyBtYXRjaGVzIHRoZSBlbXB0eSBzdHJpbmcsIHF2
LiBFUzM6MTUuMTAuMi45CisgICAgICBhc3NlcnQoeCwgIi8oXFwzKShcXDEpKGEpLyBmYWlsZWQg
dG8gbWF0Y2ggJ2NhdCciKTsKKyAgICAgIGFzc2VydEVxdWFscyh4Lmxlbmd0aCwgNCwgIi8oXFwz
KShcXDEpKGEpLyBmYWlsZWQgdG8gcmV0dXJuIGZvdXIgY29tcG9uZW50cyIpOworICAgICAgYXNz
ZXJ0RXF1YWxzKHhbMF0sICJhIiwgIi8oXFwzKShcXDEpKGEpLyBmYWlsZWQgdG8gZmluZCAnYScg
aW4gJ2NhdCciKTsKKyAgICAgIGFzc2VydCh4WzFdID09PSAiIiwgIi8oXFwzKShcXDEpKGEpLyBm
YWlsZWQgdG8gZmluZCAnJyBpbiAnY2F0JyBhcyBmaXJzdCBwYXJ0Iik7CisgICAgICBhc3NlcnQo
eFsyXSA9PT0gIiIsICIvKFxcMykoXFwxKShhKS8gZmFpbGVkIHRvIGZpbmQgJycgaW4gJ2NhdCcg
YXMgc2Vjb25kIHBhcnQiKTsKKyAgICAgIGFzc2VydEVxdWFscyh4WzNdLCAiYSIsICIvKFxcMyko
XFwxKShhKS8gZmFpbGVkIHRvIGZpbmQgJ2EnIGluICdjYXQnIGFzIHRoaXJkIHBhcnQiKTsKKyAg
ICAgIC8vIG5lZ2F0aXZlIGxvb2thaGVhZAorICAgICAgeCA9IC8oPyEodGV4dCkpKHRlLnQpLy5l
eGVjKCJ0ZXh0IHRlc3RpbmciKTsKKyAgICAgIGFzc2VydEVxdWFscyh4Lmxlbmd0aCwgMywgIm5l
Z2F0aXZlIGxvb2thaGVhZCB0ZXN0IGZhaWxlZCB0byByZXR1cm4gdGhlIHJpZ2h0IG51bWJlciBv
ZiBiaXRzIik7CisgICAgICBhc3NlcnRFcXVhbHMoeFswXSwgInRlc3QiLCAibmVnYXRpdmUgbG9v
a2FoZWFkIHRlc3QgZmFpbGVkIHRvIGZpbmQgdGhlIHJpZ2h0IHRleHQiKTsKKyAgICAgIGFzc2Vy
dCh4WzFdID09PSB1bmRlZmluZWQsICJuZWdhdGl2ZSBsb29rYWhlYWQgdGVzdCBmYWlsZWQgdG8g
cmV0dXJuIHVuZGVmaW5lZCBmb3IgbmVnYXRpdmUgbG9va2FoZWFkIGNhcHR1cmUiKTsKKyAgICAg
IGFzc2VydCh4WzJdID09PSAidGVzdCIsICJuZWdhdGl2ZSBsb29rYWhlYWQgdGVzdCBmYWlsZWQg
dG8gZmluZCB0aGUgcmlnaHQgc2Vjb25kIGNhcHR1cmUiKTsKKyAgICAgIHJldHVybiA2OworICAg
IH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA5MTogY2hlY2sgdGhhdCBwcm9w
ZXJ0aWVzIGFyZSBlbnVtZXJhYmxlIGJ5IGRlZmF1bHQKKyAgICAgIHZhciB0ZXN0ID0geworICAg
ICAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9LAorICAgICAgICB0b1N0
cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAyOyB9LAorICAgICAgICB0b0xvY2FsZVN0cmluZzog
ZnVuY3Rpb24oKSB7IHJldHVybiAzOyB9LAorICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsg
cmV0dXJuIDQ7IH0sCisgICAgICAgIGhhc093blByb3BlcnR5OiBmdW5jdGlvbigpIHsgcmV0dXJu
IDU7IH0sCisgICAgICAgIGlzUHJvdG90eXBlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gNjsgfSwK
KyAgICAgICAgcHJvcGVydHlJc0VudW1lcmFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gNzsgfSwK
KyAgICAgICAgcHJvdG90eXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIDg7IH0sCisgICAgICAgIGxl
bmd0aDogZnVuY3Rpb24oKSB7IHJldHVybiA5OyB9LAorICAgICAgICB1bmlxdWU6IGZ1bmN0aW9u
KCkgeyByZXR1cm4gMTA7IH0KKyAgICAgIH07CisgICAgICB2YXIgcmVzdWx0cyA9IFtdOworICAg
ICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGVzdCkKKyAgICAgICAgcmVzdWx0cy5wdXNoKFt0ZXN0
W3Byb3BlcnR5XSgpLCBwcm9wZXJ0eV0pOworICAgICAgcmVzdWx0cy5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHsKKyAgICAgICAgaWYgKGFbMF0gPCBiWzBdKSByZXR1cm4gLTE7CisgICAgICAgIGlmIChh
WzBdID4gYlswXSkgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiAwOworICAgICAgfSk7CisgICAg
ICBhc3NlcnRFcXVhbHMocmVzdWx0cy5sZW5ndGgsIDEwLCAibWlzc2luZyBwcm9wZXJ0aWVzIik7
CisgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgMTA7IGluZGV4ICs9IDEpCisgICAg
ICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4XVswXSwgaW5kZXgrMSwgIm9yZGVyIHdyb25n
IGF0IHJlc3VsdHNbIitpbmRleCsiXSA9PSAiKTsKKyAgICAgIHZhciBpbmRleCA9IDA7CisgICAg
ICBhc3NlcnRFcXVhbHMocmVzdWx0c1tpbmRleCsrXVsxXSwgImNvbnN0cnVjdG9yIiwgImZhaWxl
ZCB0byBmaW5kIGNvbnN0cnVjdG9yIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7CisgICAgICBhc3Nl
cnRFcXVhbHMocmVzdWx0c1tpbmRleCsrXVsxXSwgInRvU3RyaW5nIiwgImZhaWxlZCB0byBmaW5k
IHRvU3RyaW5nIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7CisgICAgICBhc3NlcnRFcXVhbHMocmVz
dWx0c1tpbmRleCsrXVsxXSwgInRvTG9jYWxlU3RyaW5nIiwgImZhaWxlZCB0byBmaW5kIHRvTG9j
YWxlU3RyaW5nIGluIGV4cGVjdGVkIHBvc2l0aW9uIik7CisgICAgICBhc3NlcnRFcXVhbHMocmVz
dWx0c1tpbmRleCsrXVsxXSwgInZhbHVlT2YiLCAiZmFpbGVkIHRvIGZpbmQgdmFsdWVPZiBpbiBl
eHBlY3RlZCBwb3NpdGlvbiIpOworICAgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11b
MV0sICJoYXNPd25Qcm9wZXJ0eSIsICJmYWlsZWQgdG8gZmluZCBoYXNPd25Qcm9wZXJ0eSBpbiBl
eHBlY3RlZCBwb3NpdGlvbiIpOworICAgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11b
MV0sICJpc1Byb3RvdHlwZU9mIiwgImZhaWxlZCB0byBmaW5kIGlzUHJvdG90eXBlT2YgaW4gZXhw
ZWN0ZWQgcG9zaXRpb24iKTsKKyAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRzW2luZGV4KytdWzFd
LCAicHJvcGVydHlJc0VudW1lcmFibGUiLCAiZmFpbGVkIHRvIGZpbmQgcHJvcGVydHlJc0VudW1l
cmFibGUgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsKKyAgICAgIGFzc2VydEVxdWFscyhyZXN1bHRz
W2luZGV4KytdWzFdLCAicHJvdG90eXBlIiwgImZhaWxlZCB0byBmaW5kIHByb3RvdHlwZSBpbiBl
eHBlY3RlZCBwb3NpdGlvbiIpOworICAgICAgYXNzZXJ0RXF1YWxzKHJlc3VsdHNbaW5kZXgrK11b
MV0sICJsZW5ndGgiLCAiZmFpbGVkIHRvIGZpbmQgbGVuZ3RoIGluIGV4cGVjdGVkIHBvc2l0aW9u
Iik7CisgICAgICBhc3NlcnRFcXVhbHMocmVzdWx0c1tpbmRleCsrXVsxXSwgInVuaXF1ZSIsICJm
YWlsZWQgdG8gZmluZCB1bmlxdWUgaW4gZXhwZWN0ZWQgcG9zaXRpb24iKTsKKyAgICAgIHJldHVy
biA2OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA5MjogaW50ZXJu
YWwgcHJvcGVydGllcyBvZiBGdW5jdGlvbiBvYmplY3RzCisgICAgICAvLyBjb25zdHJ1Y3RvciBp
cyBub3QgUmVhZE9ubHkKKyAgICAgIHZhciBmMSA9IGZ1bmN0aW9uICgpIHsgMSB9OworICAgICAg
ZjEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gImhlbGxvIHdvcmxkIjsKKyAgICAgIHZhciBmMWkg
PSBuZXcgZjEoKTsKKyAgICAgIGFzc2VydChmMWkuY29uc3RydWN0b3IgPT09ICJoZWxsbyB3b3Js
ZCIsICJGdW5jdGlvbiBvYmplY3QncyBwcm90b3R5cGUncyBjb25zdHJ1Y3RvciB3YXMgUmVhZE9u
bHkiKTsKKyAgICAgIC8vIGNvbnN0cnVjdG9yIGlzIERvbnRFbnVtIChpbmRlZWQsIG5vIHByb3Bl
cnRpZXMgYXQgYWxsIG9uIGEgbmV3IEZ1bmN0aW9uIG9iamVjdCkKKyAgICAgIHZhciBmMiA9IGZ1
bmN0aW9uICgpIHsgMiB9OworICAgICAgdmFyIGYyaSA9IG5ldyBmMigpOworICAgICAgdmFyIGNv
dW50ID0gMDsKKyAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIGYyaSkgeworICAgICAgICBhc3Nl
cnQocHJvcGVydHkgIT0gImNvbnN0cnVjdG9yIiwgIkZ1bmN0aW9uIG9iamVjdCdzIHByb3RvdHlw
ZSdzIGNvbnN0cnVjdG9yIHdhcyBub3QgRG9udEVudW0iKTsKKyAgICAgICAgY291bnQgKz0gMTsK
KyAgICAgIH0KKyAgICAgIGFzc2VydEVxdWFscyhjb3VudCwgMCwgIkZ1bmN0aW9uIG9iamVjdCBo
YWQgdW5leHBlY3RlZCBwcm9wZXJ0aWVzIik7CisgICAgICAvLyBjb25zdHJ1Y3RvciBpcyBub3Qg
RG9udERlbGV0ZQorICAgICAgdmFyIGYzID0gZnVuY3Rpb24gKGEsIGIpIHsgMyB9OworICAgICAg
ZGVsZXRlIGYzLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjsKKyAgICAgIHZhciBmM2kgPSBuZXcgZjMo
KTsKKyAgICAgIGFzc2VydEVxdWFscyhmM2kuY29uc3RydWN0b3IsIE9iamVjdC5wcm90b3R5cGUu
Y29uc3RydWN0b3IsICJGdW5jdGlvbiBvYmplY3QncyBwcm90b3R5cGUncyBjb25zdHJ1Y3RvciB3
YXMgRG9udERlbGV0ZSAob3IgZ290IG1hZ2ljYWxseSByZXBsYWNlZCkiKTsKKyAgICAgIHJldHVy
biA2OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVzdCA5MzogRnVuY3Rp
b25FeHByZXNzaW9uIHNlbWFudGljcworICAgICAgdmFyIGZ1bmN0ZXN0OworICAgICAgdmFyIHZh
cnRlc3QgPSAwOworICAgICAgdmFyIHZhbHVlID0gKGZ1bmN0aW9uIGZ1bmN0ZXN0KGFyZykgewor
ICAgICAgICBpZiAoYXJnKQorICAgICAgICAgIHJldHVybiAxOworICAgICAgICB2YXJ0ZXN0ID0g
MTsKKyAgICAgICAgZnVuY3Rlc3QgPSBmdW5jdGlvbiAoYXJnKSB7IHJldHVybiAyOyB9OyAvLyB0
aGlzIGxpbmUgZG9lcyBub3RoaW5nIGFzICdmdW5jdGVzdCcgaXMgUmVhZE9ubHkgaGVyZQorICAg
ICAgICByZXR1cm4gZnVuY3Rlc3QodHJ1ZSk7IC8vIHRoaXMgaXMgdGhlcmVmb3JlIHRhaWwgcmVj
dXJzaW9uIGFuZCByZXR1cm5zIDEKKyAgICAgIH0pKGZhbHNlKTsKKyAgICAgIGFzc2VydEVxdWFs
cyh2YXJ0ZXN0LCAxLCAicnVsZXMgaW4gMTAuMS40IG5vdCBmb2xsb3dlZCBpbiBGdW5jdGlvbkJv
ZHkiKTsKKyAgICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgMSwgInNlbWFudGljcyBvZiBGdW5jdGlv
bkV4cHJlc3Npb246IGZ1bmN0aW9uIElkZW50aWZpZXIgLi4uIG5vdCBmb2xsb3dlZCIpOworICAg
ICAgYXNzZXJ0KCFmdW5jdGVzdCwgIlByb3BlcnR5IGluIHN0ZXAgNCBvZiBGdW5jdGlvbkV4cHJl
c3Npb246IGZ1bmN0aW9uIElkZW50aWZpZXIgLi4uIGxlYWtlZCB0byBwYXJlbnQgc2NvcGUiKTsK
KyAgICAgIHJldHVybiA2OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVz
dCA5NDogZXhjZXB0aW9uIHNjb3BlCisgICAgICB2YXIgdGVzdCA9ICdwYXNzJzsKKyAgICAgIHRy
eSB7CisgICAgICAgIHRocm93ICdmYWlsJzsKKyAgICAgIH0gY2F0Y2ggKHRlc3QpIHsKKyAgICAg
ICAgdGVzdCArPSAnaW5nJzsKKyAgICAgIH0KKyAgICAgIGFzc2VydEVxdWFscyh0ZXN0LCAncGFz
cycsICdvdXRlciBzY29wZSBwb2lzb25lZCBieSBleGNlcHRpb24gY2F0Y2h7fSBibG9jaycpOwor
ICAgICAgcmV0dXJuIDY7CisgICAgfSwKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0
IDk1OiB0eXBlcyBvZiBleHByZXNzaW9ucworICAgICAgdmFyIGEgPSBbXTsgdmFyIHM7CisgICAg
ICBzID0gYS5sZW5ndGggPSAiMjE0NzQ4MzY0OCI7CisgICAgICBhc3NlcnRFcXVhbHModHlwZW9m
IHMsICJzdHJpbmciLCAidHlwZSBvZiB8XCIyMTQ3NDgzNjQ4XCJ8IGlzIG5vdCBzdHJpbmciKTsK
KyAgICAgIHJldHVybiA2OworICAgIH0sCisgICAgZnVuY3Rpb24gKCkgeworICAgICAgLy8gdGVz
dCA5NjogZW5jb2RlVVJJKCkgYW5kIGVuY29kZVVSSUNvbXBvbmVudCgpIGFuZCBudWxsIGJ5dGVz
CisgICAgICBhc3NlcnRFcXVhbHMoZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZy5mcm9tQ2hhckNv
ZGUoMCkpLCAnJTAwJywgImVuY29kZVVSSUNvbXBvbmVudCBmYWlsZWQgdG8gZW5jb2RlIFUrMDAw
MCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGVuY29kZVVSSShTdHJpbmcuZnJvbUNoYXJDb2RlKDAp
KSwgJyUwMCcsICJlbmNvZGVVUkkgZmFpbGVkIHRvIGVuY29kZSBVKzAwMDAiKTsKKyAgICAgIHJl
dHVybiA2OworICAgIH0sCisKKyAgICAvLyBVUklzCisgICAgZnVuY3Rpb24gKCkgeworICAgICAg
Ly8gdGVzdCA5NzogZGF0YTogVVJJIHBhcnNpbmcKKyAgICAgIGFzc2VydEVxdWFscyhkMSwgIm9u
ZSIsICJkYXRhOiBmYWlsZWQgYXMgZXNjYXBlZCIpOworICAgICAgYXNzZXJ0RXF1YWxzKGQyLCAi
dHdvIiwgImRhdGE6IGZhaWxlZCBhcyBiYXNlNjQiKTsKKyAgICAgIGFzc2VydEVxdWFscyhkMywg
InRocmVlIiwgImRhdGE6IGZhaWxlZCBhcyBiYXNlNjQgZXNjYXBlZCIpOworICAgICAgYXNzZXJ0
RXF1YWxzKGQ0LCAiZm91ciIsICJkYXRhOiBmYWlsZWQgYXMgYmFzZTY0IHdpdGggc3BhY2VzIik7
CisgICAgICBhc3NlcnRFcXVhbHMoZDUsICJmaXZlJ3MiLCAiZGF0YTogZmFpbGVkIHdpdGggYmFj
a3NsYXNoIik7CisgICAgICByZXR1cm4gNzsKKyAgICB9LAorCisgICAgLy8gWEhUTUwKKyAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDk4OiBYSFRNTCBhbmQgdGhlIERPTQorICAgICAg
Ly8gKHNwZWNpYWwgdGVzdCkKKyAgICAgIHZhciBkb2N0eXBlID0gZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCJodG1sIiwgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBT
dHJpY3QvL0VOIiwgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmlj
dC5kdGQiKTsKKyAgICAgIGFzc2VydEVxdWFscyhkb2N0eXBlLm93bmVyRG9jdW1lbnQsIG51bGws
ICJkb2N0eXBlJ3Mgb3duZXJEb2N1bWVudCB3YXMgd3JvbmcgYWZ0ZXIgY3JlYXRpb24iKTsKKyAg
ICAgIHZhciBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgiaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJodG1sIiwgZG9jdHlwZSk7CisgICAgICBkb2Mu
ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiLCAiaGVhZCIpKTsKKyAgICAgIGRvYy5kb2N1bWVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCIsICJib2R5IikpOworICAgICAgdmFyIHQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgInRpdGxlIik7CisgICAgICBkb2MuZG9jdW1l
bnRFbGVtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQodCk7CisgICAgICAvLyBvayB3ZSBoYXZl
IGEgY29uZm9ybWluZyBYSFRNTDEgZG9jIGluIHxkb2N8IG5vdy4KKyAgICAgIGFzc2VydEVxdWFs
cyhkb2N0eXBlLm93bmVyRG9jdW1lbnQsIGRvYywgImRvY3R5cGUncyBvd25lckRvY3VtZW50IGRp
ZG4ndCBjaGFuZ2Ugd2hlbiBpdCB3YXMgYXNzaWduZWQgdG8gYW5vdGhlciBkb2N1bWVudCIpOwor
ICAgICAgYXNzZXJ0RXF1YWxzKGRvYy50aXRsZSwgIiIsICJkb2N1bWVudCBoYWQgdW5leHBlY3Rl
ZCB0aXRsZSIpOworICAgICAgdC50ZXh0Q29udGVudCA9ICJTcGFycm93IjsKKyAgICAgIGFzc2Vy
dEVxdWFscyhkb2MudGl0bGUsICJTcGFycm93IiwgImRvY3VtZW50LnRpdGxlIGRpZCBub3QgdXBk
YXRlIGR5bmFtaWNhbGx5Iik7CisgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChkb2MuY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgImZvcm0iKSk7CisgICAg
ICBhc3NlcnRFcXVhbHMoZG9jLmZvcm1zLmxlbmd0aCwgMSwgImRvY3VtZW50LmZvcm1zIG5vdCB1
cGRhdGVkIGFmdGVyIGluc2VydGluZyBhIGZvcm0iKTsKKyAgICAgIHJldHVybiA3OworICAgIH0s
CisKKyAgICAvLyBTYW5pdHkKKyAgICBmdW5jdGlvbiAoKSB7CisgICAgICAvLyB0ZXN0IDk5OiBj
aGVjayBmb3IgdGhlIHdlaXJkZXN0IGJ1ZyBldmVyCisgICAgICB2YXIgYSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2EnKTsKKyAgICAgIGEuc2V0QXR0cmlidXRlKCdocmVmJywgJ2h0dHA6Ly93
d3cuZXhhbXBsZS5jb20vJyk7CisgICAgICBhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCd3d3cuZXhhbXBsZS5jb20nKSk7CisgICAgICBhLmhyZWYgPSAnaHR0cDovL2hpeGll
LmNoLyc7CisgICAgICBhc3NlcnRFcXVhbHMoYS5maXJzdENoaWxkLmRhdGEsICJ3d3cuZXhhbXBs
ZS5jb20iLCAic2FuaXR5IGRpZCBub3QgcHJldmFpbCIpOworICAgICAgYS5ocmVmID0gJ2h0dHA6
Ly9kYW1vd21vdy5jb20vJzsKKyAgICAgIGFzc2VydEVxdWFscyhhLmZpcnN0Q2hpbGQuZGF0YSwg
Ind3dy5leGFtcGxlLmNvbSIsICJmaW5hbCB0ZXN0IGZhaWxlZCIpOworICAgICAgcmV0dXJuIDc7
CisgICAgfQorCisgIF07CisgIHZhciBsb2cgPSAnJzsKKyAgdmFyIGRlbGF5ID0gMTA7CisgIHZh
ciBzY29yZSA9IDAsIGluZGV4ID0gMCwgcmV0cnkgPSAwLCBlcnJvcnMgPSAwOworICBmdW5jdGlv
biB1cGRhdGUoKSB7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nv
cmUnKTsgLy8gbm90IGNhY2hlZCBieSBKUworICAgIHNwYW4ubmV4dFNpYmxpbmcucmVtb3ZlQXR0
cmlidXRlKCdjbGFzcycpOyAvLyBuby1vcCBhZnRlciBmaXJzdCBsb29wCisgICAgc3Bhbi5uZXh0
U2libGluZy5uZXh0U2libGluZy5maXJzdENoaWxkLmRhdGEgPSB0ZXN0cy5sZW5ndGg7IC8vIG5v
LW9wIGFmdGVyIGZpcnN0IGxvb3AKKyAgICBpZiAoaW5kZXggPCB0ZXN0cy5sZW5ndGgpIHsKKyAg
ICAgIHZhciB6ZXJvUGFkZGVkSW5kZXggPSBpbmRleCA8IDEwID8gJzAnICsgaW5kZXggOiBpbmRl
eDsKKyAgICAgIHRyeSB7CisgICAgICAgIHZhciBiZWZvcmVUZXN0ID0gbmV3IERhdGUoKTsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IHRlc3RzW2luZGV4XSgpOworICAgICAgICB2YXIgZWxhcHNlZFRl
c3QgPSBuZXcgRGF0ZSgpIC0gYmVmb3JlVGVzdDsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAicmV0
cnkiKSB7CisgICAgICAgICAgLy8gc29tZSB0ZXN0cyB1c2VzIHRoaXMgbWFnaWNhbCBtZWNoYW5p
c20gdG8gd2FpdCBmb3Igc3VwcG9ydCBmaWxlcyB0byBsb2FkCisgICAgICAgICAgLy8gd2Ugd2ls
bCBnaXZlIHRoaXMgdGVzdCA1MDAgYXR0ZW1wdHMgKDUwMDBtcykgYmVmb3JlIGFib3J0aW5nCisg
ICAgICAgICAgcmV0cnkgKz0gMTsKKyAgICAgICAgICBpZiAocmV0cnkgPCA1MDApIHsKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCBkZWxheSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgfQorICAgICAgICAgIGZhaWwoInRpbWVvdXQgLS0gY291bGQgYmUgYSBuZXR3b3Jr
aW5nIGlzc3VlIik7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7CisgICAgICAgICAgdmFy
IGJ1Y2tldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidWNrZXQnICsgcmVzdWx0KTsKKyAg
ICAgICAgICBpZiAoYnVja2V0KQorICAgICAgICAgICAgYnVja2V0LmNsYXNzTmFtZSArPSAnUCc7
CisgICAgICAgICAgc2NvcmUgKz0gMTsKKyAgICAgICAgICBpZiAocmV0cnkgPiAwKSB7CisgICAg
ICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgICAgIGxvZyArPSAiVGVzdCAiICsgemVyb1Bh
ZGRlZEluZGV4ICsgIiBwYXNzZWQsIGJ1dCB0b29rICIgKyByZXRyeSArICIgYXR0ZW1wdHMgKGxl
c3MgdGhhbiBwZXJmZWN0KS5cbiI7CisgICAgICAgICAgfSBlbHNlIGlmIChlbGFwc2VkVGVzdCA+
IDMzKSB7IC8vIDMwZnBzCisgICAgICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgICAgIGxv
ZyArPSAiVGVzdCAiICsgemVyb1BhZGRlZEluZGV4ICsgIiBwYXNzZWQsIGJ1dCB0b29rICIgKyBl
bGFwc2VkVGVzdCArICJtcyAobGVzcyB0aGFuIDMwZnBzKVxuIjsKKyAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgZmFpbCgibm8gZXJyb3IgbWVzc2FnZSIpOworICAgICAg
ICB9CisgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHZhciBzOworICAgICAgICBpZiAoZS5t
ZXNzYWdlKQorICAgICAgICAgIHMgPSBlLm1lc3NhZ2UucmVwbGFjZSgvXHMrJC8sICIiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHMgPSBlOworICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAg
ICAgbG9nICs9ICJUZXN0ICIgKyB6ZXJvUGFkZGVkSW5kZXggKyAiIGZhaWxlZDogIiArIHMgKyAi
XG4iOworICAgICAgfTsKKyAgICAgIHJldHJ5ID0gMDsKKyAgICAgIGluZGV4ICs9IDE7CisgICAg
ICBzcGFuLmZpcnN0Q2hpbGQuZGF0YSA9IHNjb3JlOworICAgICAgc2V0VGltZW91dCh1cGRhdGUs
IGRlbGF5KTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGVuZFRpbWUgPSBuZXcgRGF0ZSgpOwor
ICAgICAgdmFyIGVsYXBzZWRUaW1lID0gKChlbmRUaW1lIC0gc3RhcnRUaW1lKSAtIChkZWxheSAq
IHRlc3RzLmxlbmd0aCkpIC8gMTAwMDsKKyAgICAgIGxvZyArPSAiVG90YWwgZWxhcHNlZCB0aW1l
OiAiICsgZWxhcHNlZFRpbWUudG9GaXhlZCgyKSArICJzIjsKKyAgICAgIGlmIChlcnJvcnMgPT0g
MCkKKyAgICAgICAgbG9nICs9ICJObyBKUyBlcnJvcnMgYW5kIG5vIHRpbWluZyBpc3N1ZXMuIFdh
cyB0aGUgcmVuZGVyaW5nIHBpeGVsLWZvci1waXhlbCBwZXJmZWN0IHRvbz8iOworICAgIH0KKyAg
fQorICBmdW5jdGlvbiByZXBvcnQoZXZlbnQpIHsKKyAgICAvLyBmb3IgZGVidWdnaW5nIGVpdGhl
ciBjbGljayB0aGUgIkEiIGluICJBY2lkMyIgKHRvIGdldCBhbiBhbGVydCkgb3Igc2hpZnQtY2xp
Y2sgaXQgKHRvIGdldCBhIHJlcG9ydCkKKyAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHsKKyAgICAg
IHZhciB3ID0gd2luZG93Lm9wZW4oKTsKKyAgICAgIHcuZG9jdW1lbnQud3JpdGUoJzxwcmU+RmFp
bGVkICcgKyAodGVzdHMubGVuZ3RoIC0gc2NvcmUpICsgJyBvZiAnICsgdGVzdHMubGVuZ3RoICsg
JyB0ZXN0cy5cbicgKworICAgICAgICAgICAgICAgICAgICAgICBsb2cucmVwbGFjZSgvJi9nLCcm
YW1wOycpLnJlcGxhY2UoUmVnRXhwKCc8JywgJ2cnKSwgJyZsdDsnKS5yZXBsYWNlKCdcMCcsICdc
XDAnKSArCisgICAgICAgICAgICAgICAgICAgICAgICc8XC9wcmU+Jyk7CisgICAgICB3LmRvY3Vt
ZW50LmNsb3NlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFsZXJ0KCdGYWlsZWQgJyArICh0ZXN0
cy5sZW5ndGggLSBzY29yZSkgKyAnIHRlc3QnICsgKHNjb3JlID09IDEgPyAnJyA6ICdzJykgKyAn
LlxuJyArIGxvZykKKyAgICB9CisgIH0KKyA8L3NjcmlwdD4KKyA8Ym9keSBvbmxvYWQ9InVwZGF0
ZSgpICAvKiB0aGlzIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHRlc3RlZCBpbiBvbmUgb2YgdGhlIHRl
c3RzICovICI+CisgIDxoMSBvbmNsaWNrPSJyZXBvcnQoZXZlbnQpIj5BY2lkMzwvaDE+CisgIDxk
aXYgY2xhc3M9ImJ1Y2tldHMiCisgICA+PHAgaWQ9ImJ1Y2tldDEiIGNsYXNzPSJ6Ij48L3AKKyAg
ID48cCBpZD0iYnVja2V0MiIgY2xhc3M9InoiPjwvcAorICAgPjxwIGlkPSJidWNrZXQzIiBjbGFz
cz0ieiI+PC9wCisgICA+PHAgaWQ9ImJ1Y2tldDQiIGNsYXNzPSJ6Ij48L3AKKyAgID48cCBpZD0i
YnVja2V0NSIgY2xhc3M9InoiPjwvcAorICAgPjxwIGlkPSJidWNrZXQ2IiBjbGFzcz0ieiI+PC9w
PgorICA8L2Rpdj4KKyAgPHAgaWQ9InJlc3VsdCI+PHNwYW4gaWQ9InNjb3JlIj5KUzwvc3Bhbj48
c3BhbiBpZD0ic2xhc2giIGNsYXNzPSJoaWRkZW4iPi88L3NwYW4+PHNwYW4+Pzwvc3Bhbj48L3A+
CisgIDwhLS0gVGhlIGZvbGxvd2luZyBsaW5lIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgdGhlIHRl
c3RzLiBJdCBpcyBkb25lIHVzaW5nIGRvY3VtZW50LndyaXRlKCkgdG8gc2lkZXN0ZXAgY29tcGxh
aW50cyBvZiB2YWxpZGl0eS4gLS0+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5k
b2N1bWVudC53cml0ZSgnPG1hcCBuYW1lPSIiPjxhcmVhIGhyZWY9IiIgc2hhcGU9InJlY3QiIGNv
b3Jkcz0iMiwyLDQsNCIgYWx0PSI8XCc+Ij48aWZyYW1lIHNyYz0iZW1wdHkucG5nIj5GQUlMPFwv
aWZyYW1lPjxpZnJhbWUgc3JjPSJlbXB0eS50eHQiPkZBSUw8XC9pZnJhbWU+PGlmcmFtZSBzcmM9
ImVtcHR5Lmh0bWwiIGlkPSJzZWxlY3RvcnMiPjxcL2lmcmFtZT48Zm9ybSBhY3Rpb249IiIgbmFt
ZT0iZm9ybSI+PGlucHV0IHR5cGU9SElEREVOPjxcL2Zvcm0+PHRhYmxlPjx0cj48dGQ+PHA+PFwv
dGJvZHk+IDxcL3RhYmxlPjxcL21hcD4nKTs8L3NjcmlwdD4KKyAgPHAgaWQ9Imluc3RydWN0aW9u
cyI+PCEtLSNpbmNsdWRlIHZpcnR1YWw9Imluc3RydWN0aW9ucy5pbmMiLS0+PC9wPgorICA8cCBp
ZD0icmVtb3ZlLWxhc3QtY2hpbGQtdGVzdCI+U2NyaXB0aW5nIG11c3QgYmUgZW5hYmxlZCB0byB1
c2UgdGhpcyB0ZXN0LjwvcD4KKyA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzLy5odGFjY2VzcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvLmh0YWNjZXNzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YTc4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzLy5odGFjY2VzcwpAQCAtMCww
ICsxLDQyIEBACis8ZmlsZXMgZW1wdHkuY3NzPgorICBGb3JjZVR5cGUgdGV4dC9odG1sCis8L2Zp
bGVzPgorCis8ZmlsZXMgZW1wdHkueG1sPgorICBGb3JjZVR5cGUgYXBwbGljYXRpb24veG1sO2No
YXJzZXQ9dXRmLTgKKzwvZmlsZXM+CisKKzxmaWxlcyBmb250LnR0Zj4KKyAgRm9yY2VUeXBlIGFw
cGxpY2F0aW9uL3gtdHJ1ZXR5cGUtZm9udAorPC9maWxlcz4KKworPGZpbGVzIGZvbnQuc3ZnPgor
ICBGb3JjZVR5cGUgaW1hZ2Uvc3ZnK3htbAorPC9maWxlcz4KKworPGZpbGVzIHN1cHBvcnQtYi5w
bmc+CisgIEZvcmNlVHlwZSB0ZXh0L2h0bWwKKzwvZmlsZXM+CisKKzxmaWxlcyBzdmcueG1sPgor
ICBGb3JjZVR5cGUgaW1hZ2Uvc3ZnK3htbAorPC9maWxlcz4KKworPGZpbGVzIHhodG1sLjE+Cisg
IEZvcmNlVHlwZSB0ZXh0L3htbAorPC9maWxlcz4KKworPGZpbGVzIHhodG1sLjI+CisgIEZvcmNl
VHlwZSB0ZXh0L3htbAorPC9maWxlcz4KKworPGZpbGVzIHhodG1sLjM+CisgIEZvcmNlVHlwZSB0
ZXh0L3htbAorPC9maWxlcz4KKworRXJyb3JEb2N1bWVudCA0MDQgL3N1cHBvcnQtYS5wbmcuNDA0
CisKK1JlZGlyZWN0IHBlcm1hbmVudCAvdGVzdHMvZXZpbC9hY2lkLzAwMy9OT1RfUkVBRFlfUExF
QVNFX0RPX05PVF9VU0UuaHRtbCBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvYWNpZC8w
MDMvCisKK0V4cGlyZXNBY3RpdmUgT24KK0V4cGlyZXNEZWZhdWx0ICJub3cgcGx1cyAxIHllYXIi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQz
L2VtcHR5LmNzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMv
ZW1wdHkuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1Yzg3NTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Fj
aWQzL2VtcHR5LmNzcwpAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBIVE1MPjxodG1sPjxoZWFk
Pjx0aXRsZT5GQUlMPC90aXRsZT48c3R5bGU+Cis8IS0tIHRoaXMgZmlsZSBpcyBzZW50IGFzIHRl
eHQvaHRtbCwgbm90IHRleHQvY3NzLCB3aGljaCBpcyB3aHkgaXQgaXMKKyAgICAgY2FsbGVkICJl
bXB0eS5jc3MiIGRlc3BpdGUgdGhlIGZvbGxvd2luZyBsaW5lcyAtLT4KKworICBib2R5IHsgYmFj
a2dyb3VuZDogd2hpdGU7IGNvbG9yOiBibGFjazsgfQorICBoMSB7IGNvbG9yOiByZWQ7IH0KKwor
PC9zdHlsZT48Ym9keT48aDE+RkFJTDwvaDE+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2FjaWQzL2VtcHR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2FjaWQzL2VtcHR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzM0YzVhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvYWNpZDMvZW1wdHkuaHRtbApAQCAtMCwwICsxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+PGh0bWw+PGhlYWQ+PHRpdGxlPjwv
dGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9h
Y2lkMy9lbXB0eS5wbmcgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Fj
aWQzL2VtcHR5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDViOTFl
CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L3Jlc291cmNlcy9hY2lkMy9lbXB0eS5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL2VtcHR5LnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1N2Q2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL2VtcHR5LnR4dApAQCAtMCwwICsx
IEBACis8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48dGl0bGU+RkFJTDwvdGl0bGU+PC9oZWFk
Pjxib2R5PjxwPkZBSUw8L3A+PHNjcmlwdD5wYXJlbnQubm90aWZ5KCJlbXB0eS50eHQiKTwvc2Ny
aXB0PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9lbXB0eS54bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL2VtcHR5LnhtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmExMjVjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9lbXB0eS54
bWwKQEAgLTAsMCArMSw0IEBACis8cm9vdD4KKyA8ZmFpbD4gVGhpcyBpcyBhbiBpbnZhbGlkIGJ5
dGUgaW4gVVRGLTg6IL8gPC9mYWlsPgorIDx0ZXN0Lz4gPCEtLSBzaG91bGRuJ3QgZXZlciBiZSBw
YXJzZWQsIGFzIHRoZSBwYXJzZXIgc2hvdWxkIGFib3J0IGF0IHRoZSBmaXJzdCBzaWduIG9mIG5v
bi13ZWxsLWZvcm1lZG5lc3MgLS0+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lk
My9mb250LnN2ZyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMv
Zm9udC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2ODNkNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNp
ZDMvZm9udC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48ZGVm
cz48Zm9udCBob3Jpei1hZHYteD0iNTAwIiBpZD0ibWluaSI+PGZvbnQtZmFjZSBmb250LWZhbWls
eT0iQUNJRDNzdmdmb250IiB1bml0cy1wZXItZW09IjQwMDAiIGFzY2VudD0iODAwIiBkZXNjZW50
PSItMjAwIiBhbHBoYWJldGljPSIwIi8+PG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjEwMDAw
IiBkPSJNMCAwIDQwMDAgMCIvPjxnbHlwaCB1bmljb2RlPSJhIiBnbHlwaC1uYW1lPSJhIiBob3Jp
ei1hZHYteD0iNDIiLz48Z2x5cGggdW5pY29kZT0iYiIgZ2x5cGgtbmFtZT0iYiIgaG9yaXotYWR2
LXg9IjIzIi8+PGdseXBoIHVuaWNvZGU9ImMiIGdseXBoLW5hbWU9ImMiIGhvcml6LWFkdi14PSI0
NzExIi8+PC9mb250PjwvZGVmcz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL2Zv
bnQudHRmIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9mb250
LnR0ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgxY2IwCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNl
cy9hY2lkMy9mb250LnR0ZiBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvaW5zdHJ1Y3Rpb25zLmluYyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvaW5zdHJ1Y3Rpb25zLmluYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjFmNTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9pbnN0cnVjdGlvbnMuaW5j
CkBAIC0wLDAgKzEgQEAKK1RvIHBhc3MgdGhlIHRlc3QsPHNwYW4+PC9zcGFuPiBhIGJyb3dzZXIg
bXVzdCB1c2UgaXRzIGRlZmF1bHQgc2V0dGluZ3MsIHRoZSBhbmltYXRpb24gaGFzIHRvIGJlIHNt
b290aCwgdGhlIHNjb3JlIGhhcyB0byBlbmQgb24gMTAwLzEwMCwgYW5kIHRoZSBmaW5hbCBwYWdl
IGhhcyB0byBsb29rIGV4YWN0bHksIHBpeGVsIGZvciBwaXhlbCwgbGlrZSA8YSBocmVmPSJyZWZl
cmVuY2UuaHRtbCI+dGhpcyByZWZlcmVuY2UgcmVuZGVyaW5nPC9hPi4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2FjaWQzL3JlZmVyZW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L3Jlc291cmNlcy9hY2lkMy9yZWZlcmVuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44ZWJjNjhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9yZWZlcmVuY2UuaHRtbApAQCAtMCwwICsxLDIwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Cis8aHRt
bD4KKyA8dGl0bGU+VGhlIEFjaWQzIFRlc3QgKFJlZmVyZW5jZSBSZW5kZXJpbmcpPC90aXRsZT4K
KyA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICBodG1sIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAw
OyB9CisgIGJvZHkgeyBiYWNrZ3JvdW5kOiAjYzBjMGMwIHVybChyZWZlcmVuY2UucG5nKSB0b3Ag
bGVmdCBuby1yZXBlYXQ7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAjYSB7IGZvbnQ6IGJv
bGQgMTAwcHgvMTIwcHggQXJpYWwsIHNhbnMtc2VyaWY7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiA1N3B4OyBsZWZ0OiA1N3B4OyBjb2xvcjogIzAwMDAwMDsgei1pbmRleDogMTsgfQorICAjYTAg
eyBmb250OiBib2xkIDEwMHB4LzEyMHB4IEFyaWFsLCBzYW5zLXNlcmlmOyBwb3NpdGlvbjogYWJz
b2x1dGU7IHRvcDogNjBweDsgbGVmdDogNjBweDsgY29sb3I6ICNDMEMwQzA7IHotaW5kZXg6IDA7
IH0KKyAgI2IgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMjMwcHg7IGxlZnQ6IDYyNXB4OyB3
aWR0aDogMDsgd2hpdGUtc3BhY2U6IHByZTsgfQorICAjYiBkaXYgeyBmb250OiBib2xkIDEwMHB4
LzEyMHB4IEFyaWFsLCBzYW5zLXNlcmlmOyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAwOyB0
ZXh0LWFsaWduOiByaWdodDsgY29sb3I6ICMwMDAwMDA7IH0KKyAgI2MgeyBmb250OiAxNnB4LzE5
LjJweCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6ICM4MDgwODA7IHdpZHRoOiA1NjJweDsgcG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDM1MHB4OyBsZWZ0OiA1N3B4OyB9CisgICNjIGEgeyBjb2xv
cjogIzAwMDBGRjsgfQorIDwvc3R5bGU+CisgPGJvZHk+CisgIDxkaXYgaWQ9ImEiPkFjaWQzPC9k
aXY+CisgIDxkaXYgaWQ9ImEwIj5BY2lkMzwvZGl2PgorICA8ZGl2IGlkPSJiIj48ZGl2PjEwMC8x
MDA8L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0iYyI+PCEtLSNpbmNsdWRlIHZpcnR1YWw9Imluc3Ry
dWN0aW9ucy5pbmMiLS0+PC9kaXY+CisgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNv
dXJjZXMvYWNpZDMvcmVmZXJlbmNlLnBuZyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9y
ZXNvdXJjZXMvYWNpZDMvcmVmZXJlbmNlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yMmNkNGNhCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9yZWZlcmVuY2UucG5nIGRpZmZlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9zdXBw
b3J0LWEucG5nLjQwNCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNp
ZDMvc3VwcG9ydC1hLnBuZy40MDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWYyNDAwOApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvc3VwcG9ydC1hLnBuZy40MDQgZGlmZmVyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL3N1cHBvcnQt
Yi5wbmcgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL3N1cHBv
cnQtYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUyZWU3ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNp
ZDMvc3VwcG9ydC1iLnBuZwpAQCAtMCwwICsxIEBACis8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVh
ZD48dGl0bGU+RkFJTDwvdGl0bGU+PHN0eWxlPiAqIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7
IH0gPC9zdHlsZT48L2hlYWQ+PGJvZHk+PHA+PCEtLSB0aGlzIGZpbGUgaXMgdHJhbnNwYXJlbnQg
LS0+PC9wPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9zdXBwb3J0
LWMucG5nIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lkMy9zdXBw
b3J0LWMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMjQwMDgKQmlu
YXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2FjaWQzL3N1cHBvcnQtYy5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL3N2Zy54bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL3N2Zy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMzVmODY3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvc3ZnLnhtbApAQCAtMCwwICsxIEBACis8
P3htbC1zdHlsZXNoZWV0IGhyZWY9ImRhdGE6dGV4dC9jc3MsdGV4dCU3QmZvbnQtZmFtaWx5JTNB
QUNJRDNzdmdmb250JTdEIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCI+PGRlZnM+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iQUNJRDNzdmdmb250Ij48
Zm9udC1mYWNlLXNyYz48Zm9udC1mYWNlLXVyaSB4bGluazpocmVmPSJmb250LnN2ZyNtaW5pIi8+
PC9mb250LWZhY2Utc3JjPjwvZm9udC1mYWNlPjxwYXRoIGlkPSJwYXRoIiBkPSJNMCAwbDAgNDJs
MTYgMTZsNDcxMSAwIi8+PC9kZWZzPjx0ZXh0Plg8L3RleHQ+PC9zdmc+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jl
c291cmNlcy9hY2lkMy94aHRtbC4xIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291
cmNlcy9hY2lkMy94aHRtbC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVk
MmQ0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2FjaWQzL3hodG1sLjEKQEAgLTAsMCArMSwxMSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorIDxoZWFkPgorICA8dGl0bGU+VGVzdDwvdGl0bGU+
CisgPC9oZWFkPgorIDxib2R5PgorICA8cD4gPHN0cm9uZz4gWEhUTUwgVGVzdCA8L3N0cm9uZz4g
PC9wPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICBwYXJlbnQubm90aWZ5
KCJ4aHRtbC4xIikKKyAgPC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9y
ZXNvdXJjZXMvYWNpZDMveGh0bWwuMiBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNv
dXJjZXMvYWNpZDMveGh0bWwuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
YjQwMTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jl
c291cmNlcy9hY2lkMy94aHRtbC4yCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyA8aGVhZD4KKyAgPHRpdGxlPlRlc3Q8L3RpdGxl
PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgPHA+IDxzdHJvbmcvPiBQYXJzaW5nIFRlc3QgPC9zdHJv
bmc+IDwvcD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgcGFyZW50Lm5v
dGlmeSgieGh0bWwuMiIpCisgIDwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvcmVzb3VyY2VzL2FjaWQzL3hodG1sLjMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
cmVzb3VyY2VzL2FjaWQzL3hodG1sLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNmVkNmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvYWNpZDMveGh0bWwuMwpAQCAtMCwwICsxLDExIEBACis8aHRtbCB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCMiPgorIDxoZWFkPgorICA8dGl0bGU+VGVzdDwv
dGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorICA8cD4gPHN0cm9uZz4gTmFtZXNwYWNlIFRlc3Qg
PC9zdHJvbmc+IDwvcD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgcGFy
ZW50Lm5vdGlmeSgieGh0bWwuMyIpCisgIDwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="8794"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20151</attachid>
            <date>2008-03-28 02:16:41 -0700</date>
            <delta_ts>2008-03-28 02:18:37 -0700</delta_ts>
            <desc>Customize Acid3 for running in DRT, add results</desc>
            <filename>Customize-Acid3-for-running-in-DRT-add-results.patch</filename>
            <type>text/plain</type>
            <size>25065</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ODMwNTk4NmU0ZWY4NjAyNmQ1OGQzMTM4MDJjZDBmMzdhODE3NTZlNgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FjaWQzLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FjaWQzLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMzdhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYWNpZDMtZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCAr
MSBAQAorZmE3MGNmYzhiM2RkM2ZhODg0MmI1ODUwMTA0NTAyYjYKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYWNpZDMt
ZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FjaWQzLWV4cGVjdGVk
LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmU4OWRkCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FjaWQzLWV4
cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9hY2lkMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYWNpZDMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZDM1M2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYWNpZDMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQ0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgyMCwyMCkgc2l6
ZSA2NDR4NDU3CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMjAsMjApIHNpemUgNjQ0eDQ1NyBb
Ymdjb2xvcj0jQzBDMEMwXSBbYm9yZGVyOiBub25lICg0cHggc29saWQgIzgwODA4MCkgbm9uZV0K
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoLTQsLTQpIHNpemUgNjQ0eDQ1NyBbYmdjb2xvcj0j
RkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sg
e0gxfSBhdCAoNDEsNDEpIHNpemUgNTYyeDEyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsNCkgc2l6ZSAyNzN4MTEyCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNCkgd2lkdGgg
MjczOiAiQWNpZDMiCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDEsMTIxKSBz
aXplIDU2MngwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoNDEsMTIxKSBzaXplIDU2Mngz
MTIKKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICg3LDgwKSBzaXplIDU0eDQyIFtiZ2NvbG9y
PSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoNzAsNjQpIHNpemUgNjR4NTAgW2JnY29sb3I9I0ZGQTUwMF0gW2JvcmRlcjog
KDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxNDUsNDgp
IHNpemUgNzR4NTggW2JnY29sb3I9I0ZGRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAw
KV0KKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgyMzEsMzIpIHNpemUgODZ4NjYgW2JnY29s
b3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgzMzAsMTYpIHNpemUgOTZ4NzQgW2JnY29sb3I9IzAwMDBGRl0gW2JvcmRl
cjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICg0NDEs
MCkgc2l6ZSAxMDZ4ODIgW2JnY29sb3I9IzgwMDA4MF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAw
MDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDQxLDIxNCkgc2l6ZSA1Njh4MTIwCisgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxNjh4MTEyCisgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgyMDQsNCkgc2l6ZSAxNjh4MTEyCisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMjA0LDQpIHdpZHRoIDE2ODogIjEwMCIKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDI4eDExMgorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzcy
LDQpIHNpemUgMjh4MTEyCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzcyLDQpIHdpZHRoIDI4
OiAiLyIKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDE2OHgxMTIK
KyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDQwMCw0KSBzaXplIDE2OHgxMTIKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg0MDAsNCkgd2lkdGggMTY4OiAiMTAwIgorICAgICAgUmVu
ZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQxLDMzNCkgc2l6ZSA1NjJ4MAorICAgICAgICBSZW5k
ZXJJbmxpbmUge01BUH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJQYXJ0T2Jq
ZWN0IHtJRlJBTUV9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgICBsYXllciBhdCAoMCww
KSBzaXplIDF4MQorICAgICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDF4MQorICAgICAgICAgICAgICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAweDEKKyAgICAgICAgICAgICAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoMCwwKSBzaXplIDB4MQorICAgICAgICAgICAgICAgICAgUmVuZGVySW1hZ2Ug
e0lNR30gYXQgKDAsMCkgc2l6ZSAxeDEKKyAgICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJB
TUV9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDh4
MjE1MQorICAgICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAg
ICAgICBsYXllciBhdCAoMCwwKSBzaXplIDh4MjE1MQorICAgICAgICAgICAgICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAweDIxNTEKKyAgICAgICAgICAgICAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDB4MjEzMAorICAgICAgICAgICAgICAgICAgUmVuZGVyQmxv
Y2sge1BSRX0gYXQgKDAsMCkgc2l6ZSAweDIxMzAKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgyMTMwCisgICAgICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMDogIjwiCisgICAgICAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTUpIHdpZHRoIDA6ICIhIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDMwKSB3aWR0aCAwOiAiRCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw0NSkgd2lkdGggMDogIk8iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsNjApIHdpZHRoIDA6ICJDIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDc1KSB3aWR0aCAwOiAiVCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCw5MCkgd2lkdGggMDogIlkiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MTA1KSB3aWR0aCAwOiAiUCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
MjApIHdpZHRoIDA6ICJFIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEz
NSkgd2lkdGggMDogImgiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTUw
KSB3aWR0aCAwOiAidCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNjUp
IHdpZHRoIDA6ICJtIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4MCkg
d2lkdGggMDogImwiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTk1KSB3
aWR0aCAwOiAiPiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMTApIHdp
ZHRoIDA6ICI8IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIyNSkgd2lk
dGggMDogImgiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjQwKSB3aWR0
aCAwOiAidCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyNTUpIHdpZHRo
IDA6ICJtIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDI3MCkgd2lkdGgg
MDogImwiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjg1KSB3aWR0aCAw
OiAiPiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMDApIHdpZHRoIDA6
ICI8IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMxNSkgd2lkdGggMDog
ImgiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzMwKSB3aWR0aCAwOiAi
ZSIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNDUpIHdpZHRoIDA6ICJh
IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2MCkgd2lkdGggMDogImQi
CisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzc1KSB3aWR0aCAwOiAiPiIK
KyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOTApIHdpZHRoIDA6ICI8Igor
ICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQwNSkgd2lkdGggMDogInQiCisg
ICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDIwKSB3aWR0aCAwOiAiaSIKKyAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MzUpIHdpZHRoIDA6ICJ0IgorICAg
ICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ1MCkgd2lkdGggMDogImwiCisgICAg
ICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDY1KSB3aWR0aCAwOiAiZSIKKyAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0ODApIHdpZHRoIDA6ICI+IgorICAgICAg
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ5NSkgd2lkdGggMDogIkYiCisgICAgICAg
ICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTEwKSB3aWR0aCAwOiAiQSIKKyAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1MjUpIHdpZHRoIDA6ICJJIgorICAgICAgICAg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDU0MCkgd2lkdGggMDogIkwiCisgICAgICAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTU1KSB3aWR0aCAwOiAiPCIKKyAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1NzApIHdpZHRoIDA6ICIvIgorICAgICAgICAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDU4NSkgd2lkdGggMDogInQiCisgICAgICAgICAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjAwKSB3aWR0aCAwOiAiaSIKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2MTUpIHdpZHRoIDA6ICJ0IgorICAgICAgICAgICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDYzMCkgd2lkdGggMDogImwiCisgICAgICAgICAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsNjQ1KSB3aWR0aCAwOiAiZSIKKyAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCw2NjApIHdpZHRoIDA6ICI+IgorICAgICAgICAgICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDY3NSkgd2lkdGggMDogIjwiCisgICAgICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsNjkwKSB3aWR0aCAwOiAiLyIKKyAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCw3MDUpIHdpZHRoIDA6ICJoIgorICAgICAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDcyMCkgd2lkdGggMDogImUiCisgICAgICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsNzM1KSB3aWR0aCAwOiAiYSIKKyAgICAgICAgICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCw3NTApIHdpZHRoIDA6ICJkIgorICAgICAgICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDc2NSkgd2lkdGggMDogIj4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsNzgwKSB3aWR0aCAwOiAiPCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCw3OTUpIHdpZHRoIDA6ICJiIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDgxMCkgd2lkdGggMDogIm8iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsODI1KSB3aWR0aCAwOiAiZCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw4NDApIHdpZHRoIDA6ICJ5IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDg1NSkgd2lkdGggMDogIj4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsODcwKSB3aWR0aCAwOiAiPCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCw4ODUpIHdpZHRoIDA6ICJwIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDkwMCkgd2lkdGggMDogIj4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsOTE1KSB3aWR0aCAwOiAiRiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCw5MzApIHdpZHRoIDA6ICJBIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDk0NSkgd2lkdGggMDogIkkiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
OTYwKSB3aWR0aCAwOiAiTCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5
NzUpIHdpZHRoIDA6ICI8IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDk5
MCkgd2lkdGggMDogIi8iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTAw
NSkgd2lkdGggMDogInAiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTAy
MCkgd2lkdGggMDogIj4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTAz
NSkgd2lkdGggMDogIjwiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTA1
MCkgd2lkdGggMDogInMiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTA2
NSkgd2lkdGggMDogImMiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTA4
MCkgd2lkdGggMDogInIiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTA5
NSkgd2lkdGggMDogImkiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEx
MCkgd2lkdGggMDogInAiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEy
NSkgd2lkdGggMDogInQiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTE0
MCkgd2lkdGggMDogIj4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTE1
NSkgd2lkdGggMDogInAiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTE3
MCkgd2lkdGggMDogImEiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTE4
NSkgd2lkdGggMDogInIiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTIw
MCkgd2lkdGggMDogImUiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTIx
NSkgd2lkdGggMDogIm4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTIz
MCkgd2lkdGggMDogInQiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI0
NSkgd2lkdGggMDogIi4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI2
MCkgd2lkdGggMDogIm4iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI3
NSkgd2lkdGggMDogIm8iCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI5
MCkgd2lkdGggMDogInQiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTMw
NSkgd2lkdGggMDogImkiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTMy
MCkgd2lkdGggMDogImYiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTMz
NSkgd2lkdGggMDogInkiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTM1
MCkgd2lkdGggMDogIigiCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTM2
NSkgd2lkdGggMDogIlwiIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEz
ODApIHdpZHRoIDA6ICJyIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEz
OTUpIHdpZHRoIDA6ICJlIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0
MTApIHdpZHRoIDA6ICJzIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0
MjUpIHdpZHRoIDA6ICJvIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0
NDApIHdpZHRoIDA6ICJ1IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0
NTUpIHdpZHRoIDA6ICJyIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0
NzApIHdpZHRoIDA6ICJjIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0
ODUpIHdpZHRoIDA6ICJlIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
MDApIHdpZHRoIDA6ICJzIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
MTUpIHdpZHRoIDA6ICIvIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
MzApIHdpZHRoIDA6ICJhIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
NDUpIHdpZHRoIDA6ICJjIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
NjApIHdpZHRoIDA6ICJpIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
NzUpIHdpZHRoIDA6ICJkIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE1
OTApIHdpZHRoIDA6ICIzIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
MDUpIHdpZHRoIDA6ICIvIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
MjApIHdpZHRoIDA6ICJlIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
MzUpIHdpZHRoIDA6ICJtIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
NTApIHdpZHRoIDA6ICJwIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
NjUpIHdpZHRoIDA6ICJ0IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
ODApIHdpZHRoIDA6ICJ5IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2
OTUpIHdpZHRoIDA6ICIuIgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3
MTApIHdpZHRoIDA6ICJ0IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3
MjUpIHdpZHRoIDA6ICJ4IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3
NDApIHdpZHRoIDA6ICJ0IgorICAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3
NTUpIHdpZHRoIDA6ICJcIiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
NzcwKSB3aWR0aCAwOiAiKSIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
Nzg1KSB3aWR0aCAwOiAiPCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODAwKSB3aWR0aCAwOiAiLyIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODE1KSB3aWR0aCAwOiAicyIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODMwKSB3aWR0aCAwOiAiYyIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODQ1KSB3aWR0aCAwOiAiciIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODYwKSB3aWR0aCAwOiAiaSIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODc1KSB3aWR0aCAwOiAicCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
ODkwKSB3aWR0aCAwOiAidCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTA1KSB3aWR0aCAwOiAiPiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTIwKSB3aWR0aCAwOiAiPCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTM1KSB3aWR0aCAwOiAiLyIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTUwKSB3aWR0aCAwOiAiYiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTY1KSB3aWR0aCAwOiAibyIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTgwKSB3aWR0aCAwOiAiZCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OTk1KSB3aWR0aCAwOiAieSIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MDEwKSB3aWR0aCAwOiAiPiIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MDI1KSB3aWR0aCAwOiAiPCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MDQwKSB3aWR0aCAwOiAiLyIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MDU1KSB3aWR0aCAwOiAiaCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MDcwKSB3aWR0aCAwOiAidCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MDg1KSB3aWR0aCAwOiAibSIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MTAwKSB3aWR0aCAwOiAibCIKKyAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MTE1KSB3aWR0aCAwOiAiPiIKKyAgICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJBTUV9IGF0
ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDh4OAorICAg
ICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgICBsYXll
ciBhdCAoMCwwKSBzaXplIDh4OAorICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSAweDgKKyAgICAgICAgICAgICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQxLDMzNCkgc2l6
ZSA1NjJ4MAorICAgICAgICBSZW5kZXJCbG9jayB7Rk9STX0gYXQgKDAsMCkgc2l6ZSA1NjJ4MAor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQxLDMzNCkgc2l6ZSA1NjJ4MAorICAg
ICAgICBSZW5kZXJJbmxpbmUge01BUH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJs
b2NrIChhbm9ueW1vdXMpIGF0ICg0MSwzMzQpIHNpemUgNTYyeDAKKyAgICAgICAgUmVuZGVyVGFi
bGUge1RBQkxFfSBhdCAoMCwwKSBzaXplIDF4MAorICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlv
biB7VEJPRFl9IGF0ICgwLDApIHNpemUgMXgwCisgICAgICAgICAgICBSZW5kZXJUYWJsZVJvdyB7
VFJ9IGF0ICgwLDApIHNpemUgMXgwCisgICAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9
IGF0ICgwLDApIHNpemUgMXgwIFtyPTAgYz0wIHJzPTEgY3M9MV0KKyAgICAgICAgICAgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAxeDAKKyAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICg0MSwzMzQpIHNpemUgNTYyeDAKKyAgICAgICAgUmVuZGVySW5saW5lIHtNQVB9
IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDEs
MzM0KSBzaXplIDU2MngyNAorICAgICAgICBSZW5kZXJCbG9jayB7QX0gYXQgKDAsMCkgc2l6ZSA1
NjJ4MjQgW2NvbG9yPSNGRjAwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
OTYsMSkgc2l6ZSAxNjl4MjIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxOTYsMSkgd2lkdGgg
MTY5OiAiTElOS1RFU1QgRkFJTEVEIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDQxLDM1OCkgc2l6ZSA1NjJ4MAorICAgICAgICBSZW5kZXJJbmxpbmUge01BUH0gYXQgKDAsMCkg
c2l6ZSAweDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDQxLDM1OCkgc2l6ZSA1ODJ4OTggW2NvbG9yPSM4MDgw
ODBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxKSBzaXplIDExNngxNworICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDExNjogIlRvIHBhc3MgdGhlIHRlc3QsIgor
ICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtTUEFOfSBhdCAoNTYyLDApIHNpemUgMjB4
MjAgW2JnY29sb3I9I0ZGRkZGRl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMTYs
MSkgc2l6ZSA1NjJ4NTUKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTE2LDEpIHdpZHRoIDQ0Njog
IiBhIGJyb3dzZXIgbXVzdCB1c2UgaXRzIGRlZmF1bHQgc2V0dGluZ3MsIHRoZSBhbmltYXRpb24g
aGFzIHRvIGJlIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCA1NjE6ICJzbW9v
dGgsIHRoZSBzY29yZSBoYXMgdG8gZW5kIG9uIDEwMC8xMDAsIGFuZCB0aGUgZmluYWwgcGFnZSBo
YXMgdG8gbG9vayBleGFjdGx5LCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOSkgd2lkdGgg
MTMxOiAicGl4ZWwgZm9yIHBpeGVsLCBsaWtlICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBh
dCAoMCwwKSBzaXplIDE2OHgxNyBbY29sb3I9IzAwMDBGRl0KKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDEzMSwzOSkgc2l6ZSAxNjh4MTcKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgxMzEsMzkpIHdpZHRoIDE2ODogInRoaXMgcmVmZXJlbmNlIHJlbmRlcmluZyIKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyOTksMzkpIHNpemUgNHgxNworICAgICAgICAgIHRleHQg
cnVuIGF0ICgyOTksMzkpIHdpZHRoIDQ6ICIuIgorbGF5ZXIgYXQgKDYzOSwxNykgc2l6ZSAyMHgy
MAorICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgYXQgKDYzOSwxNykgc2l6ZSAyMHgyMCBbY29s
b3I9I0ZGRkZGRl0gW2JnY29sb3I9I0ZGMDBGRl0KKyAgICBSZW5kZXJUZXh0IGF0ICgwLDApIHNp
emUgMjB4MjAKKyAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwOiAiWCIKK2xheWVyIGF0
ICgxMzAsODQpIHNpemUgMzAweDE1MAorICBSZW5kZXJQYXJ0T2JqZWN0IHtPQkpFQ1R9IGF0ICgx
MzAsODQpIHNpemUgMzAweDE1MAorICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAorICAg
ICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDMwMHgxNTAKKyAgICBsYXllciBhdCAoMCwwKSBz
aXplIDMwMHgxNgorICAgICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE2
CisgICAgICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDE2KSBzaXplIDI4NHgwCisgICAgICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMjg0eDAKK2xheWVyIGF0ICg2MzksMTcp
IHNpemUgMjB4MjAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIGF0ICg2MzksMTcpIHNpemUg
MjB4MjAgW2NvbG9yPSNGRkZGRkZdIFtiZ2NvbG9yPSNGRjAwRkZdCisgICAgUmVuZGVyVGV4dCBh
dCAoMCwwKSBzaXplIDIweDIwCisgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDogIlgi
CitsYXllciBhdCAoMTAsMTApIHNpemUgODR4NDUKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgxMCwxMCkgc2l6ZSA4NHg0NSBbY29sb3I9IzAwMDAwMDAwXQorICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDg0eDQ0CisgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA4NDogIkZBSUwiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvYWNpZDMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hY2lkMy5odG1sCmlu
ZGV4IGZiMGUwODEuLjQwMDg0NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9hY2lkMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hY2lkMy5o
dG1sCkBAIC0yLDYgKzIsOSBAQAogPGh0bWw+CiAgPHRpdGxlPlRoZSBBY2lkMyBUZXN0PC90aXRs
ZT4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAKICAgdmFyIHN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7CiAgPC9zY3JpcHQ+CiAgPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KQEAgLTIyLDcgKzI1LDcgQEAKICAgI2luc3RydWN0aW9ucyB7IG1h
cmdpbi10b3A6IDA7IGZvbnQtc2l6ZTogMC44ZW07IGNvbG9yOiBncmF5OyBjb2xvcjogLWFjaWQz
LWJvZ3VzOyBoZWlnaHQ6IDYuMTI1ZW07IH0gLyogKGxlZnQ6NTdweCwgdG9wOjIzMHB4KzEuMio1
KjIwKzAgPSAzNTBweCkgKi8KICAgI2luc3RydWN0aW9ucyB7IG1hcmdpbi1yaWdodDogLTIwcHg7
IHBhZGRpbmctcmlnaHQ6IDIwcHg7IGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNl
NjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQUlBQUFBQzY0cGFBQUFBQkdkQlRV
RUFBSyUyRklOd1dLNlFBQUFBbHdTRmx6QUFBQVNBQUFBRWdBUnNsclBnQUFBQnRKUkVGVU9NdGol
MkZNOUFQbUNpUU8lMkJvNWxITm81cEhOVk5CTXdBaW5BRW5JV3c4OWdBQUFDSjZWRmgwVTI5bWRI
ZGhjbVVBQUhqYWMwekpUMHBWOE14TlRFOE5TazFNcVFRQUw1d0YxSzRNcVUwQUFBQUFTVVZPUks1
Q1lJSSUzRCkgbm8tcmVwZWF0IHRvcCByaWdodDsgfQogICAjaW5zdHJ1Y3Rpb25zIHNwYW4geyBm
bG9hdDogcmlnaHQ7IHdpZHRoOiAyMHB4OyBtYXJnaW4tcmlnaHQ6IC0yMHB4OyBiYWNrZ3JvdW5k
OiB3aGl0ZTsgaGVpZ2h0OiAyMHB4OyB9Ci0gIEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIkFj
aWRBaGVtVGVzdCI7IHNyYzogdXJsKGZvbnQudHRmKTsgfQorICBAZm9udC1mYWNlIHsgZm9udC1m
YW1pbHk6ICJBY2lkQWhlbVRlc3QiOyBzcmM6IHVybChyZXNvdXJjZXMvYWNpZDMvZm9udC50dGYp
OyB9CiAgIG1hcDo6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTdweDsgbGVmdDog
NjM5cHg7IGNvbnRlbnQ6ICJYIjsgYmFja2dyb3VuZDogZnVjaHNpYTsgY29sb3I6IHdoaXRlOyBm
b250OiAyMHB4LzEgQWNpZEFoZW1UZXN0OyB9CiAgIGlmcmFtZSB7IGZsb2F0OiBsZWZ0OyBoZWln
aHQ6IDA7IHdpZHRoOiAwOyB9IC8qIGhpZGUgaWZyYW1lcyBidXQgZG9uJ3QgbWFrZSB0aGVtIGRp
c3BsYXk6IG5vbmUgKi8KICAgb2JqZWN0IHsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAxMzAuNXB4
OyB0b3A6IDg0LjNweDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0gLyogc2hvdyBvYmplY3Rz
IGlmIHRoZXkgaGF2ZSBjb250ZW50ICovCkBAIC0xMzYsNyArMTM5LDcgQEAKICA8L3N0eWxlPgog
CiAgPCEtLSBwYXJ0IG9mIHRoZSBIVFRQIHRlc3RzIC0tPgotIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iZW1wdHkuY3NzIj48IS0tIHRleHQvaHRtbCBmaWxlIChzaG91bGQgYmUgaWdub3Jl
ZCwgPGgxPiB3aWxsIGdvIHJlZCBpZiBpdCBpc24ndCkgLS0+CisgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJyZXNvdXJjZXMvYWNpZDMvZW1wdHkuY3NzIj48IS0tIHRleHQvaHRtbCBmaWxl
IChzaG91bGQgYmUgaWdub3JlZCwgPGgxPiB3aWxsIGdvIHJlZCBpZiBpdCBpc24ndCkgLS0+CiAK
ICA8IS0tIHRoZSBuZXh0IGZpdmUgc2NyaXB0IGJsb2NrcyBhcmUgcGFydCBvZiBvbmUgb2YgdGhl
IHRlc3RzIC0tPgogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KQEAgLTQ3OSw3ICs0
ODIsNyBAQAogICAgICAgZXhwZWN0KHcubmV4dE5vZGUoKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3RyJylbMF0pOwogICAgICAgZXhwZWN0KHcubmV4dE5vZGUoKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJylbMF0pOwogICAgICAgZXhwZWN0KHcubmV4dE5vZGUo
KSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVs3XSk7Ci0gICAgICBleHBlY3Qo
dy5uZXh0Tm9kZSgpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzhdKTsgLy8g
aW5zdHJ1Y3Rpb25zLmluYyBwYXJhZ3JhcGgKKyAgICAgIGV4cGVjdCh3Lm5leHROb2RlKCksIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbOF0pOyAvLyByZXNvdXJjZXMvYWNpZDMv
aW5zdHJ1Y3Rpb25zLmluYyBwYXJhZ3JhcGgKICAgICAgIGV4cGVjdCh3LnByZXZpb3VzU2libGlu
ZygpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWFwJylbMF0pOwogICAgICAgZXhw
ZWN0KHcucHJldmlvdXNOb2RlKCkuZGF0YSwgIjEwMCIpOwogICAgICAgZXhwZWN0KHcucGFyZW50
Tm9kZSgpLnRhZ05hbWUsICJTUEFOIik7CkBAIC03OTMsNyArNzk2LDcgQEAKICAgICAvLyBIVFRQ
CiAgICAgZnVuY3Rpb24gKCkgewogICAgICAgLy8gdGVzdCAxNDogSFRUUCAtIENvbnRlbnQtVHlw
ZTogaW1hZ2UvcG5nCi0gICAgICBhc3NlcnQoIW5vdGlmaWNhdGlvbnNbJ2VtcHR5LnBuZyddLCAi
cHJpdmlsZWdlIGVzY2FsYXRpb24gc2VjdXJpdHkgYnVnOiBQTkcgcmFuIHNjcmlwdCIpOworICAg
ICAgYXNzZXJ0KCFub3RpZmljYXRpb25zWydyZXNvdXJjZXMvYWNpZDMvZW1wdHkucG5nJ10sICJw
cml2aWxlZ2UgZXNjYWxhdGlvbiBzZWN1cml0eSBidWc6IFBORyByYW4gc2NyaXB0Iik7CiAgICAg
ICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBd
OwogICAgICAgYXNzZXJ0KGlmcmFtZSwgIm5vIDxpZnJhbWU+IHN1cHBvcnQiKTsKICAgICAgIGlm
IChpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnREb2N1bWVudCkgewpAQCAtODA3LDcgKzgxMCw3IEBA
CiAgICAgfSwKICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAvLyB0ZXN0IDE1OiBIVFRQIC0gQ29u
dGVudC1UeXBlOiB0ZXh0L3BsYWluCi0gICAgICBhc3NlcnQoIW5vdGlmaWNhdGlvbnNbJ2VtcHR5
LnR4dCddLCAicHJpdmlsZWdlIGVzY2FsYXRpb24gc2VjdXJpdHkgYnVnOiB0ZXh0IGZpbGUgcmFu
IHNjcmlwdCIpOworICAgICAgYXNzZXJ0KCFub3RpZmljYXRpb25zWydyZXNvdXJjZXMvYWNpZDMv
ZW1wdHkudHh0J10sICJwcml2aWxlZ2UgZXNjYWxhdGlvbiBzZWN1cml0eSBidWc6IHRleHQgZmls
ZSByYW4gc2NyaXB0Iik7CiAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2lmcmFtZScpWzFdOwogICAgICAgYXNzZXJ0KGlmcmFtZSwgIm5vIDxpZnJhbWU+
IHN1cHBvcnQiKTsKICAgICAgIGlmIChpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnREb2N1bWVudCkg
ewpAQCAtODI1LDEwICs4MjgsMTAgQEAKICAgICAgIG9DLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJGQUlMIikpOwogICAgICAgdmFyIG9CID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnb2JqZWN0Jyk7CiAgICAgICB2YXIgb0EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdv
YmplY3QnKTsKLSAgICAgIG9BLmRhdGEgPSAic3VwcG9ydC1hLnBuZyI7Ci0gICAgICBvQi5kYXRh
ID0gInN1cHBvcnQtYi5wbmciOworICAgICAgb0EuZGF0YSA9ICJyZXNvdXJjZXMvYWNpZDMvc3Vw
cG9ydC1hLnBuZyI7CisgICAgICBvQi5kYXRhID0gInJlc291cmNlcy9hY2lkMy9zdXBwb3J0LWIu
cG5nIjsKICAgICAgIG9CLmFwcGVuZENoaWxkKG9DKTsKLSAgICAgIG9DLmRhdGEgPSAic3VwcG9y
dC1jLnBuZyI7CisgICAgICBvQy5kYXRhID0gInJlc291cmNlcy9hY2lkMy9zdXBwb3J0LWMucG5n
IjsKICAgICAgIG9BLmFwcGVuZENoaWxkKG9CKTsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJtYXAiKVswXS5hcHBlbmRDaGlsZChvQSk7CiAgICAgICAvLyBhc3N1bWluZyB0
aGUgYWJvdmUgZGlkbid0IHJhaXNlIGFueSBleGNlcHRpb25zLCB0aGlzIHRlc3QgaGFzIHBhc3Nl
ZApAQCAtMjI5OSwzNyArMjMwMiwzNyBAQAogICAgICAgLy8gc3ZnIGlmcmFtZQogICAgICAgaWZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICBpZnJhbWUub25s
b2FkID0gZnVuY3Rpb24gKCkgeyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0gJzEnIH07Ci0gICAg
ICBpZnJhbWUuc3JjID0gInN2Zy54bWwiOworICAgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMv
YWNpZDMvc3ZnLnhtbCI7CiAgICAgICBrdW5nRnVEZWF0aEdyaXAuYXBwZW5kQ2hpbGQoaWZyYW1l
KTsKICAgICAgIC8vIG9iamVjdCBpZnJhbWUKICAgICAgIG9iamVjdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ29iamVjdCcpOwogICAgICAgb2JqZWN0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsg
a3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICcyJyB9OwotICAgICAgb2JqZWN0LmRhdGEgPSAic3Zn
LnhtbCI7CisgICAgICBvYmplY3QuZGF0YSA9ICJyZXNvdXJjZXMvYWNpZDMvc3ZnLnhtbCI7CiAg
ICAgICBrdW5nRnVEZWF0aEdyaXAuYXBwZW5kQ2hpbGQob2JqZWN0KTsKICAgICAgIC8vIHhtbCBp
ZnJhbWUKICAgICAgIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwog
ICAgICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxl
ICs9ICczJyB9OwotICAgICAgaWZyYW1lLnNyYyA9ICJlbXB0eS54bWwiOworICAgICAgaWZyYW1l
LnNyYyA9ICJyZXNvdXJjZXMvYWNpZDMvZW1wdHkueG1sIjsKICAgICAgIGt1bmdGdURlYXRoR3Jp
cC5hcHBlbmRDaGlsZChpZnJhbWUpOwogICAgICAgLy8gaHRtbCBpZnJhbWUKICAgICAgIGlmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgaWZyYW1lLm9ubG9h
ZCA9IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICc0JyB9OwotICAgICAg
aWZyYW1lLnNyYyA9ICJlbXB0eS5odG1sIjsKKyAgICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2Vz
L2FjaWQzL2VtcHR5Lmh0bWwiOwogICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKGlm
cmFtZSk7CiAgICAgICAvLyBodG1sIGlmcmFtZQogICAgICAgaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICBpZnJhbWUub25sb2FkID0gZnVuY3Rpb24gKCkg
eyBrdW5nRnVEZWF0aEdyaXAudGl0bGUgKz0gJzUnIH07Ci0gICAgICBpZnJhbWUuc3JjID0gInho
dG1sLjEiOworICAgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvYWNpZDMveGh0bWwuMSI7CiAg
ICAgICBrdW5nRnVEZWF0aEdyaXAuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKICAgICAgIC8vIGh0bWwg
aWZyYW1lCiAgICAgICBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsK
ICAgICAgIGlmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGt1bmdGdURlYXRoR3JpcC50aXRs
ZSArPSAnNicgfTsKLSAgICAgIGlmcmFtZS5zcmMgPSAieGh0bWwuMiI7CisgICAgICBpZnJhbWUu
c3JjID0gInJlc291cmNlcy9hY2lkMy94aHRtbC4yIjsKICAgICAgIGt1bmdGdURlYXRoR3JpcC5h
cHBlbmRDaGlsZChpZnJhbWUpOwogICAgICAgLy8gaHRtbCBpZnJhbWUKICAgICAgIGlmcmFtZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgaWZyYW1lLm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsga3VuZ0Z1RGVhdGhHcmlwLnRpdGxlICs9ICc3JyB9OwotICAgICAgaWZy
YW1lLnNyYyA9ICJ4aHRtbC4zIjsKKyAgICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL2FjaWQz
L3hodG1sLjMiOwogICAgICAga3VuZ0Z1RGVhdGhHcmlwLmFwcGVuZENoaWxkKGlmcmFtZSk7CiAg
ICAgICAvLyBhZGQgdGhlIGxvdCB0byB0aGUgZG9jdW1lbnQKICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdtYXAnKVswXS5hcHBlbmRDaGlsZChrdW5nRnVEZWF0aEdyaXApOwpA
QCAtMjc2OCw3ICsyNzcxLDcgQEAKICAgICAgIC8vIFRoZSBnZXRSb3RhdGlvbk9mQ2hhcls0XSBt
ZXRob2QgZmV0Y2hlcyB0aGUgbWlkcG9pbnQgcm90YXRpb24KICAgICAgIC8vIG9mIGEgZ2x5cGgg
ZGVmaW5lZCBieSBhIGNoYXJhY3RlciAoaW4gdGhpcyB0ZXN0Y2FzZSB0aGVyZSBpcwogICAgICAg
Ly8gYSBzaW1wbGUgMToxIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlIHR3bykuIFRoZSBwYXRo
IGlzCi0gICAgICAvLyBkZWZpbmVkIGluIHRoZSBzdmcueG1sIGZpbGUsIGFuZCBjb25zaXN0cyBv
ZiBmaXJzdCBhIGxpbmUKKyAgICAgIC8vIGRlZmluZWQgaW4gdGhlIHJlc291cmNlcy9hY2lkMy9z
dmcueG1sIGZpbGUsIGFuZCBjb25zaXN0cyBvZiBmaXJzdCBhIGxpbmUKICAgICAgIC8vIGdvaW5n
IGRvd24sIHRoZW4gZm9sbG93ZWQgYnkgYSBsaW5lIHRoYXQgaGFzIGEgNDUgZGVncmVlCiAgICAg
ICAvLyBzbG9wZSBhbmQgdGhlbiBmb2xsb3dlZCBieSBhIGhvcml6b250YWwgbGluZS4gVGhlIGxl
bmd0aCBvZgogICAgICAgLy8gZWFjaCBwYXRoIHNlZ21lbnQgaGF2ZSBiZWVuIHBhaXJlZCB3aXRo
IHRoZSBhZHZhbmNlIG9mIGVhY2gKQEAgLTM0MzgsNiArMzQ0MSw5IEBACiAgICAgICBsb2cgKz0g
IlRvdGFsIGVsYXBzZWQgdGltZTogIiArIGVsYXBzZWRUaW1lLnRvRml4ZWQoMikgKyAicyI7CiAg
ICAgICBpZiAoZXJyb3JzID09IDApCiAgICAgICAgIGxvZyArPSAiTm8gSlMgZXJyb3JzIGFuZCBu
byB0aW1pbmcgaXNzdWVzLiBXYXMgdGhlIHJlbmRlcmluZyBwaXhlbC1mb3ItcGl4ZWwgcGVyZmVj
dCB0b28/IjsKKyAgICAgIAorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgfQog
ICBmdW5jdGlvbiByZXBvcnQoZXZlbnQpIHsKQEAgLTM0NjUsOCArMzQ3MSw4IEBACiAgIDwvZGl2
PgogICA8cCBpZD0icmVzdWx0Ij48c3BhbiBpZD0ic2NvcmUiPkpTPC9zcGFuPjxzcGFuIGlkPSJz
bGFzaCIgY2xhc3M9ImhpZGRlbiI+Lzwvc3Bhbj48c3Bhbj4/PC9zcGFuPjwvcD4KICAgPCEtLSBU
aGUgZm9sbG93aW5nIGxpbmUgaXMgdXNlZCBpbiBhIG51bWJlciBvZiB0aGUgdGVzdHMuIEl0IGlz
IGRvbmUgdXNpbmcgZG9jdW1lbnQud3JpdGUoKSB0byBzaWRlc3RlcCBjb21wbGFpbnRzIG9mIHZh
bGlkaXR5LiAtLT4KLSAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmRvY3VtZW50Lndy
aXRlKCc8bWFwIG5hbWU9IiI+PGFyZWEgaHJlZj0iIiBzaGFwZT0icmVjdCIgY29vcmRzPSIyLDIs
NCw0IiBhbHQ9IjxcJz4iPjxpZnJhbWUgc3JjPSJlbXB0eS5wbmciPkZBSUw8XC9pZnJhbWU+PGlm
cmFtZSBzcmM9ImVtcHR5LnR4dCI+RkFJTDxcL2lmcmFtZT48aWZyYW1lIHNyYz0iZW1wdHkuaHRt
bCIgaWQ9InNlbGVjdG9ycyI+PFwvaWZyYW1lPjxmb3JtIGFjdGlvbj0iIiBuYW1lPSJmb3JtIj48
aW5wdXQgdHlwZT1ISURERU4+PFwvZm9ybT48dGFibGU+PHRyPjx0ZD48cD48XC90Ym9keT4gPFwv
dGFibGU+PFwvbWFwPicpOzwvc2NyaXB0PgotICA8cCBpZD0iaW5zdHJ1Y3Rpb25zIj48IS0tI2lu
Y2x1ZGUgdmlydHVhbD0iaW5zdHJ1Y3Rpb25zLmluYyItLT48L3A+CisgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij5kb2N1bWVudC53cml0ZSgnPG1hcCBuYW1lPSIiPjxhcmVhIGhyZWY9
IiIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMiwyLDQsNCIgYWx0PSI8XCc+Ij48aWZyYW1lIHNyYz0i
cmVzb3VyY2VzL2FjaWQzL2VtcHR5LnBuZyI+RkFJTDxcL2lmcmFtZT48aWZyYW1lIHNyYz0icmVz
b3VyY2VzL2FjaWQzL2VtcHR5LnR4dCI+RkFJTDxcL2lmcmFtZT48aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL2FjaWQzL2VtcHR5Lmh0bWwiIGlkPSJzZWxlY3RvcnMiPjxcL2lmcmFtZT48Zm9ybSBhY3Rp
b249IiIgbmFtZT0iZm9ybSI+PGlucHV0IHR5cGU9SElEREVOPjxcL2Zvcm0+PHRhYmxlPjx0cj48
dGQ+PHA+PFwvdGJvZHk+IDxcL3RhYmxlPjxcL21hcD4nKTs8L3NjcmlwdD4KKyAgPHAgaWQ9Imlu
c3RydWN0aW9ucyI+PCEtLSNpbmNsdWRlIHZpcnR1YWw9InJlc291cmNlcy9hY2lkMy9pbnN0cnVj
dGlvbnMuaW5jIi0tPjwvcD4KICAgPHAgaWQ9InJlbW92ZS1sYXN0LWNoaWxkLXRlc3QiPlNjcmlw
dGluZyBtdXN0IGJlIGVuYWJsZWQgdG8gdXNlIHRoaXMgdGVzdC48L3A+CiAgPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9h
Y2lkMy8uaHRhY2Nlc3MgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Fj
aWQzLy5odGFjY2VzcwppbmRleCAwNmE3ODUzLi5mM2U5ZDVmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzLy5odGFjY2VzcworKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzLy5odGFjY2VzcwpAQCAtMzQs
OSArMzQsOSBAQAogICBGb3JjZVR5cGUgdGV4dC94bWwKIDwvZmlsZXM+CiAKLUVycm9yRG9jdW1l
bnQgNDA0IC9zdXBwb3J0LWEucG5nLjQwNAorPElmTW9kdWxlIG1vZF9pbmNsdWRlLmM+CisgIEFk
ZFR5cGUgdGV4dC9odG1sIC5odG1sCisgIEFkZE91dHB1dEZpbHRlciBJTkNMVURFUyAuaHRtbAor
PC9JZk1vZHVsZT4KIAotUmVkaXJlY3QgcGVybWFuZW50IC90ZXN0cy9ldmlsL2FjaWQvMDAzL05P
VF9SRUFEWV9QTEVBU0VfRE9fTk9UX1VTRS5odG1sIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMv
ZXZpbC9hY2lkLzAwMy8KLQotRXhwaXJlc0FjdGl2ZSBPbgotRXhwaXJlc0RlZmF1bHQgIm5vdyBw
bHVzIDEgeWVhciIKK0Vycm9yRG9jdW1lbnQgNDA0IC9taXNjL3Jlc291cmNlcy9hY2lkMy9zdXBw
b3J0LWEucG5nLjQwNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jl
c291cmNlcy9hY2lkMy9lbXB0eS50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2FjaWQzL2VtcHR5LnR4dAppbmRleCA5NTdkNmY4Li5jMGY1MTdhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL2VtcHR5LnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQzL2VtcHR5LnR4
dApAQCAtMSArMSBAQAotPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPkZBSUw8L3Rp
dGxlPjwvaGVhZD48Ym9keT48cD5GQUlMPC9wPjxzY3JpcHQ+cGFyZW50Lm5vdGlmeSgiZW1wdHku
dHh0Iik8L3NjcmlwdD48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
KzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjx0aXRsZT5GQUlMPC90aXRsZT48L2hlYWQ+PGJv
ZHk+PHA+RkFJTDwvcD48c2NyaXB0PnBhcmVudC5ub3RpZnkoInJlc291cmNlcy9hY2lkMy9lbXB0
eS50eHQiKTwvc2NyaXB0PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9hY2lk
My9pbnN0cnVjdGlvbnMuaW5jIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNl
cy9hY2lkMy9pbnN0cnVjdGlvbnMuaW5jCmluZGV4IDlmMWY1M2MuLmFjMGJhYzEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYWNpZDMvaW5zdHJ1Y3Rp
b25zLmluYworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2FjaWQz
L2luc3RydWN0aW9ucy5pbmMKQEAgLTEgKzEgQEAKLVRvIHBhc3MgdGhlIHRlc3QsPHNwYW4+PC9z
cGFuPiBhIGJyb3dzZXIgbXVzdCB1c2UgaXRzIGRlZmF1bHQgc2V0dGluZ3MsIHRoZSBhbmltYXRp
b24gaGFzIHRvIGJlIHNtb290aCwgdGhlIHNjb3JlIGhhcyB0byBlbmQgb24gMTAwLzEwMCwgYW5k
IHRoZSBmaW5hbCBwYWdlIGhhcyB0byBsb29rIGV4YWN0bHksIHBpeGVsIGZvciBwaXhlbCwgbGlr
ZSA8YSBocmVmPSJyZWZlcmVuY2UuaHRtbCI+dGhpcyByZWZlcmVuY2UgcmVuZGVyaW5nPC9hPi4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitUbyBwYXNzIHRoZSB0ZXN0LDxzcGFuPjwvc3Bh
bj4gYSBicm93c2VyIG11c3QgdXNlIGl0cyBkZWZhdWx0IHNldHRpbmdzLCB0aGUgYW5pbWF0aW9u
IGhhcyB0byBiZSBzbW9vdGgsIHRoZSBzY29yZSBoYXMgdG8gZW5kIG9uIDEwMC8xMDAsIGFuZCB0
aGUgZmluYWwgcGFnZSBoYXMgdG8gbG9vayBleGFjdGx5LCBwaXhlbCBmb3IgcGl4ZWwsIGxpa2Ug
PGEgaHJlZj0icmVzb3VyY2VzL2FjaWQzL3JlZmVyZW5jZS5odG1sIj50aGlzIHJlZmVyZW5jZSBy
ZW5kZXJpbmc8L2E+LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="8795"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>