<?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>225177</bug_id>
          
          <creation_ts>2021-04-28 17:35:27 -0700</creation_ts>
          <short_desc>Update WPT tests in html/canvas/element/wide-gamut-canvas</short_desc>
          <delta_ts>2021-04-29 09:05:19 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225140</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1755257</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-28 17:35:27 -0700</bug_when>
    <thetext>Update WPT tests in html/canvas/element/wide-gamut-canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755258</commentid>
    <comment_count>1</comment_count>
      <attachid>427315</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-28 17:37:45 -0700</bug_when>
    <thetext>Created attachment 427315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755259</commentid>
    <comment_count>2</comment_count>
      <attachid>427316</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-28 17:42:32 -0700</bug_when>
    <thetext>Created attachment 427316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755390</commentid>
    <comment_count>3</comment_count>
      <attachid>427316</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-29 08:19:58 -0700</bug_when>
    <thetext>Comment on attachment 427316
Patch

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

&gt; LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3-expected.txt:5
&gt; +FAIL test getImageData with display-p3 and uint8 from display p3 uint8 canvas assert_approx_equals: expected 62 +/- 2 but got 50

Do you know why this fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755391</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-29 08:28:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 427316 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427316&amp;action=review
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3-expected.txt:5
&gt; &gt; +FAIL test getImageData with display-p3 and uint8 from display p3 uint8 canvas assert_approx_equals: expected 62 +/- 2 but got 50
&gt; 
&gt; Do you know why this fails?

Yeah, we don&apos;t support P3 canvas at all yet. Any passes in this directory are just the test not fully testing what it thinks it is testing. 

Working toward adding P3 canvas in https://bugs.webkit.org/show_bug.cgi?id=225140.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755392</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-29 08:28:32 -0700</bug_when>
    <thetext>And thank you for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755407</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-29 09:04:26 -0700</bug_when>
    <thetext>Committed r276776 (237160@main): &lt;https://commits.webkit.org/237160@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427316.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755409</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-29 09:05:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/77323985&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427315</attachid>
            <date>2021-04-28 17:37:45 -0700</date>
            <delta_ts>2021-04-28 17:42:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225177-20210428173744.patch</filename>
            <type>text/plain</type>
            <size>146919</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NzQyKQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ5IEBACisyMDIxLTA0LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVcGRhdGUgV1BUIHRlc3RzIGluIGh0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHRlc3RzLgorCisgICAgICAgICog
cmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbjoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy50by5wMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50
by5zcmdiLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi5w
My5jYW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9CbG9i
LndpdGgucHV0SW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNl
LnAzLnRvRGF0YVVSTC5wMy5jYW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iu
c3BhY2UucDMudG9EYXRhVVJMLndpdGgucHV0SW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzL0ltYWdlRGF0YS1maWRlbGl0eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
SW1hZ2VEYXRhLWZpZGVsaXR5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9y
TWFuYWdlZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvck1hbmFnZWQtdG9CbG9iLXRvRGF0YVVS
TC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC10
b0Jsb2ItdG9EYXRhVVJMLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yc3Bh
Y2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29s
b3JzcGFjZS1hcmd1bWVudHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY3JlYXRl
SW1hZ2VCaXRtYXAtZV9zcmdiLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52
YXMtY3JlYXRlSW1hZ2VCaXRtYXAtZV9zcmdiLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2Fu
dmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1jb2xvck1hbmFnZWQtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jcmVhdGVQdXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2Vk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXctaGlnaC1iaXQtZGVwdGgtaW1h
Z2VzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJp
dC1kZXB0aC1pbWFnZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdl
LWVfc3JnYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFn
ZS1lX3NyZ2IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLW9mZnNj
cmVlbkNhbnZhcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJ
bWFnZS1vZmZzY3JlZW5DYW52YXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZ2V0
SW1hZ2VEYXRhLWVfc3JnYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFz
LWdldEltYWdlRGF0YS1lX3NyZ2IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURhdGEt
Y29sb3JNYW5hZ2VkQmVoYXZpb3ItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2lt
YWdlRGF0YS1jb2xvck1hbmFnZWRCZWhhdmlvci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2lt
YWdlRGF0YS1jb2xvclNwYWNlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFn
ZURhdGEtY29sb3JTcGFjZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlZGF0YS1uby1j
b2xvci1zZXR0aW5ncy1jcmFzaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1h
Z2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
dHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
L3RyYW5zZmVyRnJvbUltYWdlQml0bWFwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvdzNjLWlt
cG9ydC5sb2c6CisKIDIwMjEtMDQtMjggIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbY3NzLWdyaWRdIEFjY3VyaXplIGV4cGVjdGVkIHJlc3VsdCB0byAwLjUgcGl4ZWwg
Zm9yIHNvbWUgY29udGVudFNwYWNlQXJvdW5kIHRlc3RzIGluIGFic3BvcwpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhw
ZWN0YXRpb25zLmpzb24JKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9yZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQsNiArMjQ0LDcgQEAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
d2luZG93cy90YXJnZXRpbmctY3Jvc3Mtb3JpZ2luLW5lc3RlZC1icm93c2luZy1jb250ZXh0cy5o
dG1sIjogInNraXAiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzIjogImlt
cG9ydCIsIAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudCI6ICJp
bXBvcnQiLCAKKyAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lk
ZS1nYW11dC1jYW52YXMiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9vZmZzY3JlZW4iOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9yZXNvdXJjZXMiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy90b29scyI6ICJpbXBvcnQiLCAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5w
My5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PCEtLSBETyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9j
YW52YXMvdG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9y
LnNwYWNlLnAzLnRvLnAzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2Nh
bnZhcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9o
dG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmNzcyI+Cis8Ym9keSBjbGFzcz0ic2hv
d19vdXRwdXQiPgorCis8aDE+MmQuY29sb3Iuc3BhY2UucDMudG8ucDM8L2gxPgorPHAgY2xhc3M9
ImRlc2MiPnRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBk
aXNwbGF5IHAzIHVpbnQ4IGNhbnZhczwvcD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwg
b3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhl
aWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+
PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rl
c3QoInRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNw
bGF5IHAzIHVpbnQ4IGNhbnZhcyIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsK
KwordmFyIGNvbG9yX3N0eWxlID0gJ3JnYig1MCwgMTAwLCAxNTApJzsKK3ZhciBlcHNpbG9uID0g
MjsKKy8vIFswLjI0MzA0LCAwLjM4ODE4LCAwLjU3MjI3LCAxLjBdICogMjU1ID0gWzYyLCA5OSwg
MTQ2LCAyNTVdCit2YXIgcGl4ZWxfZXhwZWN0ZWQgPSBbNjIsIDk5LCAxNDYsIDI1NV07CitjdHgu
ZmlsbFN0eWxlID0gY29sb3Jfc3R5bGU7CitjdHguZmlsbFJlY3QoMCwgMCwgMTAsIDEwKTsKKwor
dmFyIHBpeGVsID0gY3R4LmdldEltYWdlRGF0YSg1LCA1LCAxLCAxLCB7Y29sb3JTcGFjZTogImRp
c3BsYXktcDMiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifSkuZGF0YTsKK19hc3NlcnRTYW1lKHBp
eGVsLmxlbmd0aCwgcGl4ZWxfZXhwZWN0ZWQubGVuZ3RoLCAicGl4ZWwubGVuZ3RoIiwgInBpeGVs
X2V4cGVjdGVkLmxlbmd0aCIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMocGl4ZWxbMF0sIHBpeGVs
X2V4cGVjdGVkWzBdLCAyKTsKK2Fzc2VydF9hcHByb3hfZXF1YWxzKHBpeGVsWzFdLCBwaXhlbF9l
eHBlY3RlZFsxXSwgMik7Cithc3NlcnRfYXBwcm94X2VxdWFscyhwaXhlbFsyXSwgcGl4ZWxfZXhw
ZWN0ZWRbMl0sIDIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMocGl4ZWxbM10sIHBpeGVsX2V4cGVj
dGVkWzNdLCAyKTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3Njcmlw
dD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRv
LnNyZ2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29s
b3Iuc3BhY2UucDMudG8uc3JnYi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5zcmdiLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlz
IHRlc3QgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5
LiAtLT4KKzx0aXRsZT5DYW52YXMgdGVzdDogMmQuY29sb3Iuc3BhY2UucDMudG8uc3JnYjwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2Ny
aXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2Vz
L2NhbnZhcy10ZXN0cy5jc3MiPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKworPGgxPjJk
LmNvbG9yLnNwYWNlLnAzLnRvLnNyZ2I8L2gxPgorPHAgY2xhc3M9ImRlc2MiPnRlc3QgZ2V0SW1h
Z2VEYXRhIHdpdGggc3JzYiBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhczwv
cD4KKworCis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9
ImMiIGNsYXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxs
YmFjayI+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+
PC91bD4KKzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rlc3QoInRlc3QgZ2V0SW1hZ2VEYXRhIHdp
dGggc3JzYiBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcyIpOworX2FkZFRl
c3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsKKwordmFyIGNvbG9yX3N0eWxlID0gJ3JnYig1MCwg
MTAwLCAxNTApJzsKK3ZhciBlcHNpbG9uID0gMjsKK3ZhciBwaXhlbF9leHBlY3RlZCA9IFs1MCwg
MTAwLCAxNTAsIDI1NV07CitjdHguZmlsbFN0eWxlID0gY29sb3Jfc3R5bGU7CitjdHguZmlsbFJl
Y3QoMCwgMCwgMTAsIDEwKTsKKwordmFyIHBpeGVsID0gY3R4LmdldEltYWdlRGF0YSg1LCA1LCAx
LCAxLCB7Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifSkuZGF0YTsK
K19hc3NlcnRTYW1lKHBpeGVsLmxlbmd0aCwgcGl4ZWxfZXhwZWN0ZWQubGVuZ3RoLCAicGl4ZWwu
bGVuZ3RoIiwgInBpeGVsX2V4cGVjdGVkLmxlbmd0aCIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMo
cGl4ZWxbMF0sIHBpeGVsX2V4cGVjdGVkWzBdLCAyKTsKK2Fzc2VydF9hcHByb3hfZXF1YWxzKHBp
eGVsWzFdLCBwaXhlbF9leHBlY3RlZFsxXSwgMik7Cithc3NlcnRfYXBwcm94X2VxdWFscyhwaXhl
bFsyXSwgcGl4ZWxfZXhwZWN0ZWRbMl0sIDIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMocGl4ZWxb
M10sIHBpeGVsX2V4cGVjdGVkWzNdLCAyKTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXkt
cDMifSk7Cis8L3NjcmlwdD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnRvQmxvYi5wMy5jYW52YXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9CbG9iLnAzLmNhbnZhcy5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFj
ZS5wMy50b0Jsb2IucDMuY2FudmFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5D
YW52YXMgdGVzdDogMmQuY29sb3Iuc3BhY2UucDMudG9CbG9iLnAzLmNhbnZhczwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZh
cy10ZXN0cy5jc3MiPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9y
LnNwYWNlLnAzLnRvQmxvYi5wMy5jYW52YXM8L2gxPgorPHAgY2xhc3M9ImRlc2MiPnRlc3QgaWYg
dG9ibG9iIHJldHVybnMgcDMgZGF0YSBmcm9tIHAzIGNvbG9yIHNwYWNlIGNhbnZhczwvcD4KKwor
Cis8cCBjbGFzcz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNs
YXNzPSJvdXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+
RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4K
KzxzY3JpcHQ+Cit2YXIgdCA9IGFzeW5jX3Rlc3QoInRlc3QgaWYgdG9ibG9iIHJldHVybnMgcDMg
ZGF0YSBmcm9tIHAzIGNvbG9yIHNwYWNlIGNhbnZhcyIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2Fu
dmFzLCBjdHgpIHsKKworY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAxKSI7Citj
dHguZmlsbFJlY3QoMCwgMCwgMSwgMSk7CitjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1NSwg
MjcsIDApIjsKK2N0eC5maWxsUmVjdCgxLCAwLCAxLCAxKTsKK2N0eC5maWxsU3R5bGUgPSAicmdi
YSgyNywgMjcsIDE1NSwgMC41KSI7CitjdHguZmlsbFJlY3QoMCwgMSwgMSwgMSk7CitjdHguZmls
bFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywgMC41KSI7CitjdHguZmlsbFJlY3QoMSwgMSwgMSwg
MSk7CitleHBlY3RlZFBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMiwge2NvbG9y
U3BhY2U6ICJkaXNwbGF5LXAzIn0pLmRhdGE7CisKK3ZhciBpbWFnZSA9IG5ldyBJbWFnZSgpOwor
aW1hZ2Uub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbigpIHsKKyAgICB2YXIgZHN0
Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgZHN0Q2FudmFz
LndpZHRoID0gMjsKKyAgICBkc3RDYW52YXMuaGVpZ2h0ID0gMjsKKyAgICB2YXIgY3R4ID0gZHN0
Q2FudmFzLmdldENvbnRleHQoJzJkJywge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pOworICAg
IGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOworICAgIHZhciBhY3R1YWxQaXhlbHMgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KS5kYXRh
OworICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQ
aXhlbHMsIDIpOworfSk7CisKK2NhbnZhcy50b0Jsb2IoZnVuY3Rpb24oYmxvYikgeworICAgIHZh
ciB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMOworICAgIGltYWdl
LnNyYyA9IHVybENyZWF0b3IuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworfSwgJ2ltYWdlL3BuZycs
IDEpOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9CbG9iLndp
dGgucHV0SW1hZ2VEYXRhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi53aXRoLnB1dEltYWdlRGF0YS5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50
b0Jsb2Iud2l0aC5wdXRJbWFnZURhdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gRE8gTk9UIEVESVQhIFRoaXMgdGVzdCBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgL2h0bWwvY2FudmFzL3Rvb2xzL2dlbnRlc3QucHkuIC0tPgorPHRpdGxl
PkNhbnZhcyB0ZXN0OiAyZC5jb2xvci5zcGFjZS5wMy50b0Jsb2Iud2l0aC5wdXRJbWFnZURhdGE8
L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2h0bWwvY2FudmFzL3Jlc291
cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4KKzxib2R5IGNsYXNzPSJzaG93X291dHB1dCI+CisKKzxo
MT4yZC5jb2xvci5zcGFjZS5wMy50b0Jsb2Iud2l0aC5wdXRJbWFnZURhdGE8L2gxPgorPHAgY2xh
c3M9ImRlc2MiPlVzZSBwdXRJbWFnZURhdGEgdG8gcHV0IHNvbWUgcDMgZGF0YSBpbiBjYW52YXMg
YW5kIHRlc3QgaWYgdG9CbG9iIHJldHVybnMgdGhlIHNhbWUgZGF0YTwvcD4KKworCis8cCBjbGFz
cz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJvdXRw
dXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAoZmFs
bGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3JpcHQ+
Cit2YXIgdCA9IGFzeW5jX3Rlc3QoIlVzZSBwdXRJbWFnZURhdGEgdG8gcHV0IHNvbWUgcDMgZGF0
YSBpbiBjYW52YXMgYW5kIHRlc3QgaWYgdG9CbG9iIHJldHVybnMgdGhlIHNhbWUgZGF0YSIpOwor
X2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsKKworY2FudmFzLndpZHRoID0gMjsKK2Nh
bnZhcy5oZWlnaHQgPSAyOworCisvLyBDcmVhdGUgYW4gSW1hZ2VEYXRhIHVzaW5nIGNyZWF0ZUlt
YWdlRGF0YSBhbmQgcG9wdWxhdGUgaXRzIGRhdGEgYXJyYXkuCit2YXIgaW1hZ2VfZGF0YSA9IGN0
eC5jcmVhdGVJbWFnZURhdGEoY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCB7Y29sb3JTcGFj
ZTogImRpc3BsYXktcDMifSk7Cit2YXIgY29sb3JfZGF0YSA9IFtbMjU1LCAxMDAsIDE1MCwgMS4w
XSwgWzI1NSwgMTAwLCAxNTAsIDAuNV0sCisgICAgICAgICAgICAgICAgIFsyNTUsIDEwMCwgMTUw
LCAwLjVdLCBbMjU1LCAxMDAsIDE1MCwgMF1dOwordmFyIGRhdGEgPSBpbWFnZV9kYXRhLmRhdGE7
Citmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoIC8gNDsgKytpKSB7CisgIGRhdGFbNCpp
ICsgMF0gPSBjb2xvcl9kYXRhW2ldWzBdOworICBkYXRhWzQqaSArIDFdID0gY29sb3JfZGF0YVtp
XVsxXTsKKyAgZGF0YVs0KmkgKyAyXSA9IGNvbG9yX2RhdGFbaV1bMl07CisgIGRhdGFbNCppICsg
M10gPSBjb2xvcl9kYXRhW2ldWzNdOworfQorY3R4LnB1dEltYWdlRGF0YShpbWFnZV9kYXRhLCAw
LCAwKTsKK2V4cGVjdGVkUGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyLCB7Y29s
b3JTcGFjZTogImRpc3BsYXktcDMifSkuZGF0YTsKKwordmFyIGltYWdlID0gbmV3IEltYWdlKCk7
CitpbWFnZS5vbmxvYWQgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKCkgeworICAgIHZhciBk
c3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBkc3RDYW52
YXMud2lkdGggPSAyOworICAgIGRzdENhbnZhcy5oZWlnaHQgPSAyOworICAgIHZhciBjdHggPSBk
c3RDYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cisg
ICAgY3R4LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7CisgICAgdmFyIGFjdHVhbFBpeGVscyA9IGN0
eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMiwge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pLmRh
dGE7CisgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxzLCBleHBlY3Rl
ZFBpeGVscywgMik7Cit9KTsKK2NhbnZhcy50b0Jsb2IoZnVuY3Rpb24oYmxvYikgeworICAgIHZh
ciB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMOworICAgIGltYWdl
LnNyYyA9IHVybENyZWF0b3IuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworfSwgJ2ltYWdlL3BuZycs
IDEpOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9EYXRhVVJM
LnAzLmNhbnZhcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMuY2FudmFzLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvRGF0YVVSTC5w
My5jYW52YXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0gRE8gTk9UIEVESVQhIFRoaXMgdGVzdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
L2h0bWwvY2FudmFzL3Rvb2xzL2dlbnRlc3QucHkuIC0tPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAy
ZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMuY2FudmFzPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvaHRt
bC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmNz
cyI+Cis8Ym9keSBjbGFzcz0ic2hvd19vdXRwdXQiPgorCis8aDE+MmQuY29sb3Iuc3BhY2UucDMu
dG9EYXRhVVJMLnAzLmNhbnZhczwvaDE+Cis8cCBjbGFzcz0iZGVzYyI+dGVzdCBpZiB0b2Jsb2Ig
cmV0dXJucyBwMyBkYXRhIGZyb20gY2FudmFzIHdpdGggcDMgY29sb3Igc3BhY2U8L3A+CisKKwor
PHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBjbGFz
cz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFsbGJhY2siPkZB
SUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+Cis8
c2NyaXB0PgordmFyIHQgPSBhc3luY190ZXN0KCJ0ZXN0IGlmIHRvYmxvYiByZXR1cm5zIHAzIGRh
dGEgZnJvbSBjYW52YXMgd2l0aCBwMyBjb2xvciBzcGFjZSIpOworX2FkZFRlc3QoZnVuY3Rpb24o
Y2FudmFzLCBjdHgpIHsKKworY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAxKSI7
CitjdHguZmlsbFJlY3QoMCwgMCwgMSwgMSk7CitjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1
NSwgMjcsIDApIjsKK2N0eC5maWxsUmVjdCgxLCAwLCAxLCAxKTsKK2N0eC5maWxsU3R5bGUgPSAi
cmdiYSgyNywgMjcsIDE1NSwgMC41KSI7CitjdHguZmlsbFJlY3QoMCwgMSwgMSwgMSk7CitjdHgu
ZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywgMC41KSI7CitjdHguZmlsbFJlY3QoMSwgMSwg
MSwgMSk7CitleHBlY3RlZFBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMiwge2Nv
bG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pLmRhdGE7CisKK3ZhciBpbWFnZSA9IG5ldyBJbWFnZSgp
OworaW1hZ2Uub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbigpIHsKKyAgICB2YXIg
ZHN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgZHN0Q2Fu
dmFzLndpZHRoID0gMjsKKyAgICBkc3RDYW52YXMuaGVpZ2h0ID0gMjsKKyAgICB2YXIgY3R4ID0g
ZHN0Q2FudmFzLmdldENvbnRleHQoJzJkJywge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pOwor
ICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOworICAgIHZhciBhY3R1YWxQaXhlbHMgPSBj
dHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KS5k
YXRhOworICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0
ZWRQaXhlbHMsIDIpOworfSk7CitpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKCk7CisKKwor
fSwge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pOworPC9zY3JpcHQ+CisKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwud2l0aC5wdXRJ
bWFnZURhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQu
Y29sb3Iuc3BhY2UucDMudG9EYXRhVVJMLndpdGgucHV0SW1hZ2VEYXRhLmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvRGF0
YVVSTC53aXRoLnB1dEltYWdlRGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBiZWVu
IGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0bGU+
Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNlLnAzLnRvRGF0YVVSTC53aXRoLnB1dEltYWdlRGF0
YTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVz
b3VyY2VzL2NhbnZhcy10ZXN0cy5jc3MiPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKwor
PGgxPjJkLmNvbG9yLnNwYWNlLnAzLnRvRGF0YVVSTC53aXRoLnB1dEltYWdlRGF0YTwvaDE+Cis8
cCBjbGFzcz0iZGVzYyI+VXNlIHB1dEltYWdlRGF0YSB0byBwdXQgc29tZSBwMyBkYXRhIGluIGNh
bnZhcyBhbmQgdGVzdCBpZiB0b0RhdGFVUkwgcmV0dXJucyB0aGUgc2FtZSBkYXRhPC9wPgorCisK
KzxwIGNsYXNzPSJvdXRwdXQiPkFjdHVhbCBvdXRwdXQ6PC9wPgorPGNhbnZhcyBpZD0iYyIgY2xh
c3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5G
QUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHVsIGlkPSJkIj48L3VsPgor
PHNjcmlwdD4KK3ZhciB0ID0gYXN5bmNfdGVzdCgiVXNlIHB1dEltYWdlRGF0YSB0byBwdXQgc29t
ZSBwMyBkYXRhIGluIGNhbnZhcyBhbmQgdGVzdCBpZiB0b0RhdGFVUkwgcmV0dXJucyB0aGUgc2Ft
ZSBkYXRhIik7CitfYWRkVGVzdChmdW5jdGlvbihjYW52YXMsIGN0eCkgeworCitjYW52YXMud2lk
dGggPSAyOworY2FudmFzLmhlaWdodCA9IDI7CisKKy8vIENyZWF0ZSBhbiBJbWFnZURhdGEgdXNp
bmcgY3JlYXRlSW1hZ2VEYXRhIGFuZCBwb3B1bGF0ZSBpdHMgZGF0YSBhcnJheS4KK3ZhciBpbWFn
ZV9kYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YShjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQs
IHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKK3ZhciBjb2xvcl9kYXRhID0gW1syNTUsIDEw
MCwgMTUwLCAxLjBdLCBbMjU1LCAxMDAsIDE1MCwgMC41XSwKKyAgICAgICAgICAgICAgICAgWzI1
NSwgMTAwLCAxNTAsIDAuNV0sIFsyNTUsIDEwMCwgMTUwLCAwXV07Cit2YXIgZGF0YSA9IGltYWdl
X2RhdGEuZGF0YTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggLyA0OyArK2kpIHsK
KyAgZGF0YVs0KmkgKyAwXSA9IGNvbG9yX2RhdGFbaV1bMF07CisgIGRhdGFbNCppICsgMV0gPSBj
b2xvcl9kYXRhW2ldWzFdOworICBkYXRhWzQqaSArIDJdID0gY29sb3JfZGF0YVtpXVsyXTsKKyAg
ZGF0YVs0KmkgKyAzXSA9IGNvbG9yX2RhdGFbaV1bM107Cit9CitjdHgucHV0SW1hZ2VEYXRhKGlt
YWdlX2RhdGEsIDAsIDApOworZXhwZWN0ZWRQaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAs
IDIsIDIsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KS5kYXRhOworCit2YXIgaW1hZ2UgPSBu
ZXcgSW1hZ2UoKTsKK2ltYWdlLm9ubG9hZCA9IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oKSB7
CisgICAgdmFyIGRzdENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwor
ICAgIGRzdENhbnZhcy53aWR0aCA9IDI7CisgICAgZHN0Q2FudmFzLmhlaWdodCA9IDI7CisgICAg
dmFyIGN0eCA9IGRzdENhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtjb2xvclNwYWNlOiAiZGlzcGxh
eS1wMyJ9KTsKKyAgICBjdHguZHJhd0ltYWdlKGltYWdlLCAwLCAwKTsKKyAgICB2YXIgYWN0dWFs
UGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyLCB7Y29sb3JTcGFjZTogImRpc3Bs
YXktcDMifSkuZGF0YTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWxQaXhl
bHMsIGV4cGVjdGVkUGl4ZWxzLCAyKTsKK30pOworaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVS
TCgpOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvSW1hZ2VEYXRhLWZpZGVsaXR5LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvSW1hZ2VEYXRhLWZp
ZGVsaXR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzL0ltYWdlRGF0YS1maWRlbGl0eS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2ICswLDAgQEAKLQotUEFTUyBWZXJpZnkgdGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0
YSByb3VuZCB0cmlwIHByZXNlcnZlcyBjb2xvciB2YWx1ZXMgd2hlbiBpbWFnZSBtZXRhZGF0YSBo
YXMgbm8gY29sb3Igc3BhY2UgYW5kIGNhbnZhcyB1c2VzIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNl
LgotUEFTUyBWZXJpZnkgdGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0YSByb3VuZCB0cmlwIHBy
ZXNlcnZlcyBjb2xvciB2YWx1ZXMgd2hlbiBpbWFnZSBtZXRhZGF0YSBoYXMgc3JnYiBjb2xvciBz
cGFjZSBhbmQgY2FudmFzIHVzZXMgdGhlIHNyZ2IgY29sb3Igc3BhY2UuCi1QQVNTIFZlcmlmeSB0
aGF0IGRyYXdJbWFnZS0+Z2V0SW1hZ2VEYXRhIHJvdW5kIHRyaXAgcHJlc2VydmVzIGNvbG9yIHZh
bHVlcyB3aGVuIGltYWdlIG1ldGFkYXRhIGhhcyBubyBjb2xvciBzcGFjZSBhbmQgY2FudmFzIHVz
ZXMgdGhlIHNyZ2IgY29sb3Igc3BhY2UuCi1QQVNTIFZlcmlmeSB0aGF0IGRyYXdJbWFnZS0+Z2V0
SW1hZ2VEYXRhIHJvdW5kIHRyaXAgcHJlc2VydmVzIGNvbG9yIHZhbHVlcyB3aGVuIGltYWdlIG1l
dGFkYXRhIGhhcyBzcmdiIGNvbG9yIHNwYWNlIGFuZCBjYW52YXMgdXNlcyB0aGUgZGVmYXVsdCBj
b2xvciBzcGFjZS4KLQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL0ltYWdlRGF0YS1m
aWRlbGl0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9JbWFn
ZURhdGEtZmlkZWxpdHkuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzL0ltYWdlRGF0YS1maWRlbGl0eS5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTI2
ICswLDAgQEAKLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1hc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgdmFyIGltYWdlID0gbmV3
IEltYWdlKCk7Ci0gIC8vIFRoaXMgaW1hZ2UgaXMgMjU2IGJ5IDEgYW5kIGNvbnRhaW5zIGFuIG9w
YXF1ZSBncmF5c2NhbGUgcmFtcCBmcm9tIDAgdG8gMjU1LgotICAvLyBUaGUgaW1hZ2UgaGFzIG5v
IGVtYmVkZGVkIGNvbG9yIHByb2ZpbGUuCi0gIGltYWdlLnNyYyA9ICJkYXRhOmltYWdlL3BuZzti
YXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBQUJDQVlBQUFBeCIgKwotICAgICJX
WEIzQUFBQUcwbEVRVlE0VDJOa1lHRDR6OGpJeURDS1I4TmdOQTJNdkRRQUFQaVBBLzV0WjhHK0FB
QUFBRWxGVGtTdVFtQ0MiOwotCi0gIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHZh
ciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMu
d2lkdGggPSAyNTY7Ci0gICAgY2FudmFzLmhlaWdodCA9IDE7Ci0gICAgdmFyIGN0eCA9IGNhbnZh
cy5nZXRDb250ZXh0KCcyZCcpOwotICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAg
IHZhciBpbWcgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDI1NiwgMSk7Ci0gICAgdC5zdGVwKGZ1
bmN0aW9uKCkgewotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAg
ICBhc3NlcnRfZXF1YWxzKGltZy5kYXRhWzQgKiBpXSwgaSwgInJlZCBjb21wb25lbnQiKTsKLSAg
ICAgICAgYXNzZXJ0X2VxdWFscyhpbWcuZGF0YVs0ICogaSArIDFdLCBpLCAiZ3JlZW4gY29tcG9u
ZW50Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAyXSwgaSwgImJs
dWUgY29tcG9uZW50Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAz
XSwgMjU1LCAiYWxwaGEgY29tcG9uZW50Iik7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgdC5kb25l
KCk7Ci0gIH0KLX0sICJWZXJpZnkgdGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0YSByb3VuZCB0
cmlwIHByZXNlcnZlcyBjb2xvciB2YWx1ZXMgIiArCi0gICAgIndoZW4gaW1hZ2UgbWV0YWRhdGEg
aGFzIG5vIGNvbG9yIHNwYWNlIGFuZCBjYW52YXMgdXNlcyB0aGUgZGVmYXVsdCAiICsKLSAgICAi
Y29sb3Igc3BhY2UuIik7Ci0KLWFzeW5jX3Rlc3QoZnVuY3Rpb24odCkgewotICB2YXIgaW1hZ2Ug
PSBuZXcgSW1hZ2UoKTsKLSAgLy8gVGhpcyBpbWFnZSBpcyAyNTYgYnkgMSBhbmQgY29udGFpbnMg
YW4gb3BhcXVlIGdyYXlzY2FsZSByYW1wIGZyb20gMCB0byAyNTUuCi0gIC8vIFRoZSBpbWFnZSBo
YXMgYW4gZW1iZWRkZWQgc1JHQiBjb2xvciBwcm9maWxlLgotICBpbWFnZS5zcmMgPQotICAgICAg
ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFBQkNB
WUFBQUF4V1hCM0FBQUEiICsKLSAgICAgICJHMGxFUVZRNFQyTmtZR0Q0ejhqSXlEQ0tSOE5nTkEy
TXZEUUFBUGlQQS81dFo4RytBQUFBbzNwVVdIUlNZWGNnY0hKdlptIiArCi0gICAgICAibHNaU0Iw
ZVhCbElFRlFVREVBQUhpY1pVNWJDc013RFB2M0tYb0V2L0k2VHJhbXBUQzIwZnQvTEU3V0VUSkJr
SzFZUXJDWCIgKwotICAgICAgIlp6bVArL0krWDl2eEtMQVl5Q0dvQzlFbjc3RkNWMTBST1dOSHJN
OGhVVzdjUVowMFYvMDI2dERaTVJLYlVRWUR0NGxKSnIiICsKLSAgICAgICIyRnhlQ1RKYzVCVjRz
dk5FNE54bDFUbjhOMUxDZ01Jb0tKMnNIdm8yNXNIZksvb2RZVDAybHVDV01QK0FBNU0wS2JOcjYx
IiArCi0gICAgICAiUHdBQUFBQkpSVTVFcmtKZ2dnPT0iOwotCi0gIGltYWdlLm9ubG9hZCA9IGZ1
bmN0aW9uKCkgewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKLSAgICBjYW52YXMud2lkdGggPSAyNTY7Ci0gICAgY2FudmFzLmhlaWdodCA9IDE7Ci0g
ICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtjb2xvclNwYWNlOiAnc3JnYid9
KTsKLSAgICBjdHguZHJhd0ltYWdlKGltYWdlLCAwLCAwKTsKLSAgICB2YXIgaW1nID0gY3R4Lmdl
dEltYWdlRGF0YSgwLCAwLCAyNTYsIDEpOwotICAgIHQuc3RlcChmdW5jdGlvbigpIHsKLSAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhp
bWcuZGF0YVs0ICogaV0sIGksICJyZWQgY29tcG9uZW50Iik7Ci0gICAgICAgIGFzc2VydF9lcXVh
bHMoaW1nLmRhdGFbNCAqIGkgKyAxXSwgaSwgImdyZWVuIGNvbXBvbmVudCIpOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKGltZy5kYXRhWzQgKiBpICsgMl0sIGksICJibHVlIGNvbXBvbmVudCIpOwot
ICAgICAgICBhc3NlcnRfZXF1YWxzKGltZy5kYXRhWzQgKiBpICsgM10sIDI1NSwgImFscGhhIGNv
bXBvbmVudCIpOwotICAgICAgfQotICAgIH0pOwotICAgIHQuZG9uZSgpOwotICB9Ci19LCAiVmVy
aWZ5IHRoYXQgZHJhd0ltYWdlLT5nZXRJbWFnZURhdGEgcm91bmQgdHJpcCBwcmVzZXJ2ZXMgY29s
b3IgdmFsdWVzICIgKwotICAgICJ3aGVuIGltYWdlIG1ldGFkYXRhIGhhcyBzcmdiIGNvbG9yIHNw
YWNlIGFuZCBjYW52YXMgdXNlcyB0aGUgc3JnYiAiICsKLSAgICAiY29sb3Igc3BhY2UuIik7Ci0K
LWFzeW5jX3Rlc3QoZnVuY3Rpb24odCkgewotICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAg
Ly8gVGhpcyBpbWFnZSBpcyAyNTYgYnkgMSBhbmQgY29udGFpbnMgYW4gb3BhcXVlIGdyYXlzY2Fs
ZSByYW1wIGZyb20gMCB0byAyNTUuCi0gIC8vIFRoZSBpbWFnZSBoYXMgbm8gZW1iZWRkZWQgY29s
b3IgcHJvZmlsZS4KLSAgaW1hZ2Uuc3JjID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFBQkNBWUFBQUF4IiArCi0gICAgIldYQjNBQUFBRzBsRVFW
UTRUMk5rWUdENHo4akl5RENLUjhOZ05BMk12RFFBQVBpUEEvNXRaOEcrQUFBQUFFbEZUa1N1UW1D
QyI7Ci0KLSAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwotICAgIGNhbnZhcy53aWR0aCA9IDI1NjsK
LSAgICBjYW52YXMuaGVpZ2h0ID0gMTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQo
JzJkJywge2NvbG9yU3BhY2U6ICdzcmdiJ30pOwotICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAs
IDApOwotICAgIHZhciBpbWcgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDI1NiwgMSk7Ci0gICAg
dC5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykg
ewotICAgICAgICBhc3NlcnRfZXF1YWxzKGltZy5kYXRhWzQgKiBpXSwgaSwgInJlZCBjb21wb25l
bnQiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhpbWcuZGF0YVs0ICogaSArIDFdLCBpLCAiZ3Jl
ZW4gY29tcG9uZW50Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAy
XSwgaSwgImJsdWUgY29tcG9uZW50Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFb
NCAqIGkgKyAzXSwgMjU1LCAiYWxwaGEgY29tcG9uZW50Iik7Ci0gICAgICB9Ci0gICAgfSk7Ci0g
ICAgdC5kb25lKCk7Ci0gIH0KLX0sICJWZXJpZnkgdGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0
YSByb3VuZCB0cmlwIHByZXNlcnZlcyBjb2xvciB2YWx1ZXMgIiArCi0gICAgIndoZW4gaW1hZ2Ug
bWV0YWRhdGEgaGFzIG5vIGNvbG9yIHNwYWNlIGFuZCBjYW52YXMgdXNlcyB0aGUgc3JnYiAiICsK
LSAgICAiY29sb3Igc3BhY2UuIik7Ci0KLQotYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7Ci0gIHZh
ciBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAvLyBUaGlzIGltYWdlIGlzIDI1NiBieSAxIGFuZCBj
b250YWlucyBhbiBvcGFxdWUgZ3JheXNjYWxlIHJhbXAgZnJvbSAwIHRvIDI1NS4KLSAgLy8gVGhl
IGltYWdlIGhhcyBhbiBlbWJlZGRlZCBzUkdCIGNvbG9yIHByb2ZpbGUuCi0gIGltYWdlLnNyYyA9
Ci0gICAgICAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFR
QUFBQUFCQ0FZQUFBQXhXWEIzQUFBQSIgKwotICAgICAgIkcwbEVRVlE0VDJOa1lHRDR6OGpJeURD
S1I4TmdOQTJNdkRRQUFQaVBBLzV0WjhHK0FBQUFvM3BVV0hSU1lYY2djSEp2Wm0iICsKLSAgICAg
ICJsc1pTQjBlWEJsSUVGUVVERUFBSGljWlU1YkNzTXdEUHYzS1hvRXYvSTZUcmFtcFRDMjBmdC9M
RTdXRVRKQmtLMVlRckNYIiArCi0gICAgICAiWnptUCsvSStYOXZ4S0xBWXlDR29DOUVuNzdGQ1Yx
MFJPV05Ick04aFVXN2NRWjAwVi8wMjZ0RFpNUktiVVFZRHQ0bEpKciIgKwotICAgICAgIjJGeGVD
VEpjNUJWNHN2TkU0TnhsMVRuOE4xTENnTUlvS0oyc0h2bzI1c0hmSy9vZFlUMDJsdUNXTVArQUE1
TTBLYk5yNjEiICsKLSAgICAgICJQd0FBQUFCSlJVNUVya0pnZ2c9PSI7Ci0KLSAgaW1hZ2Uub25s
b2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2NhbnZhcycpOwotICAgIGNhbnZhcy53aWR0aCA9IDI1NjsKLSAgICBjYW52YXMuaGVpZ2h0
ID0gMTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgY3R4LmRy
YXdJbWFnZShpbWFnZSwgMCwgMCk7Ci0gICAgdmFyIGltZyA9IGN0eC5nZXRJbWFnZURhdGEoMCwg
MCwgMjU2LCAxKTsKLSAgICB0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGld
LCBpLCAicmVkIGNvbXBvbmVudCIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGltZy5kYXRhWzQg
KiBpICsgMV0sIGksICJncmVlbiBjb21wb25lbnQiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhp
bWcuZGF0YVs0ICogaSArIDJdLCBpLCAiYmx1ZSBjb21wb25lbnQiKTsKLSAgICAgICAgYXNzZXJ0
X2VxdWFscyhpbWcuZGF0YVs0ICogaSArIDNdLCAyNTUsICJhbHBoYSBjb21wb25lbnQiKTsKLSAg
ICAgIH0KLSAgICB9KTsKLSAgICB0LmRvbmUoKTsKLSAgfQotfSwgIlZlcmlmeSB0aGF0IGRyYXdJ
bWFnZS0+Z2V0SW1hZ2VEYXRhIHJvdW5kIHRyaXAgcHJlc2VydmVzIGNvbG9yIHZhbHVlcyAiICsK
LSAgICAid2hlbiBpbWFnZSBtZXRhZGF0YSBoYXMgc3JnYiBjb2xvciBzcGFjZSBhbmQgY2FudmFz
IHVzZXMgdGhlIGRlZmF1bHQgIiArCi0gICAgImNvbG9yIHNwYWNlLiIpOwotPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC1jb252ZXJ0
VG9CbG9iLXJvdW5kdHJpcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvck1hbmFnZWQtY29udmVydFRvQmxvYi1yb3VuZHRyaXAt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52
YXMvY2FudmFzLWNvbG9yTWFuYWdlZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw2ICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoVElNRU9V
VCksIG1lc3NhZ2UgPSBudWxsCi0KLUZBSUwgT3ZlcmFsbCB0ZXN0IHNyY0NhbnZhcy5jb252ZXJ0
VG9CbG9iIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NyY0NhbnZhcy5jb252ZXJ0VG9CbG9iKHRl
c3RTY2VuYXJpby5lbmNvZGVPcHRpb25zKScsICdzcmNDYW52YXMuY29udmVydFRvQmxvYicgaXMg
dW5kZWZpbmVkKQotTk9UUlVOIFRlc3QgY2FudmFzIGNvbnZlcnRUb0Jsb2IoKTogbWltZVR5cGU6
IGltYWdlL3BuZywgYmxvYlBpeGVsRm9ybWF0OiB1aW50OCwgc291cmNlIGNvbG9yIHNwYWNlOiBz
cmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMC41Ci0KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLWNvbnZlcnRUb0Jsb2Itcm91bmR0cmlw
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xv
ck1hbmFnZWQtY29udmVydFRvQmxvYi1yb3VuZHRyaXAuaHRtbAkocmV2aXNpb24gMjc2NzE2KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvck1hbmFnZWQtY29udmVydFRv
QmxvYi1yb3VuZHRyaXAuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE1MSArMCwwIEBACi08IURP
Q1RZUEUgSFRNTD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci0KLS8vIE5vIG1hdHRlciB3aGF0IGlzIHRoZSBjb2xvciBzcGFjZSBh
bmQgcGl4ZWwgZm9ybWF0IG9mIHRoZSBjb2xvciBtYW5hZ2VkCi0vLyBjYW52YXMsIHRvQmxvYigp
IGFuZCB0b0RhdGFVUkwoKSBhbHdheXMgY3JlYXRlIHRoZSBibG9iIGluIHNSR0IgY29sb3IKLS8v
IHNwYWNlLCBhbmQgcmVzcGVjdCB0aGUgbGVnYWN5IGJlaGF2aW9yIGJ5IG5vdCBpbmNsdWRpbmcg
YW55IGNvbG9yIHNwYWNlCi0vLyBpbmZvcm1hdGlvbiBpbiB0aGUgYmxvYi9kYXRhIHVybC4KLQot
dmFyIG9wYXF1ZVJlZmVyZW5jZVB4aWVscywgdHJhbnNwYXJlbnRSZWZlcmVuY2VQaXhlbHM7Ci0K
LWZ1bmN0aW9uIHRlc3RQaXhlbHMoYWN0dWFsUGl4ZWxzLCByZWZQaXhlbHMsIHRlc3RTY2VuYXJp
bykKLXsKLSAgICAvLyBOYXJyb3dpbmcgZG93biB0aGUgc291cmNlIG9mIGV4cGVjdGVkIGVycm9y
OgotICAgIC8vIC0gQWxwaGEgdmFsdWVzIHNob3VsZCBhbHdheXMgbWF0Y2guCi0gICAgLy8gLSBD
b2xvciBjb21wb25lbnRzIHNob3VsZCBiZSBhY2NlcHRhYmx5IGNsb3NlLgotICAgIGlmICh0ZXN0
U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbS5waXhlbEZvcm1hdCA9PSAndWludDgnKSB7Ci0gICAg
ICAgIGxldCB0b2xlcmFuY2VfY29sb3IgPSA0OwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGFjdHVhbFBpeGVscy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgLy8gQWxwaGEgY2hhbm5l
bAotICAgICAgICAgICAgaWYgKGkgJSA0ID09IDMpCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhY3R1YWxQaXhlbHNbaV0sIHJlZlBpeGVsc1tpXSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxzW2ldLCByZWZQ
aXhlbHNbaV0sIHRvbGVyYW5jZV9jb2xvcik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBGb3IgaGFsZiBmbG9hdCBiYWNrZWQgY2FudmFzLCB3ZSBleHBlY3QgdGhlIGVycm9y
IDwgMC4wMS4KLSAgICAgICAgbGV0IHRvbGVyYW5jZV9jb2xvciA9IDAuMDE7Ci0gICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsUGl4ZWxzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICAvLyBBbHBoYSBjaGFubmVsCi0gICAgICAgICAgICBpZiAoaSAlIDQgPT0gMykKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbFBpeGVsc1tpXSwgcmVmUGl4ZWxzW2ldKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1
YWxQaXhlbHNbaV0sIHJlZlBpeGVsc1tpXSwgdG9sZXJhbmNlX2NvbG9yKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHRlc3RTY2VuYXJpbykKLXsKLSAgICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFz
LndpZHRoID0gMjsKLSAgICBjYW52YXMuaGVpZ2h0ID0gMjsKLSAgICByZXR1cm4gY2FudmFzOwot
fQotCi1mdW5jdGlvbiBnZW5lcmF0ZUZpbGxTdHlsZShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkg
ewotICAgIHJldHVybiAicmdiYSgiICsgcmVkICsgIiwiICsgZ3JlZW4gKyAiLCIgKyBibHVlICsg
IiwiICsgYWxwaGEgKyAiKSI7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdQYXR0ZXJuT25DYW52c2EoY3R4
LCBhbHBoYSwgY29tcG9zaXRlT3ZlckJsYWNrKSB7Ci0gICAgaWYgKGNvbXBvc2l0ZU92ZXJCbGFj
aykgewotICAgICAgICBjdHguZmlsbFN0eWxlID0gZ2VuZXJhdGVGaWxsU3R5bGUoMCwgMCwgMCwg
MSk7Ci0gICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAyLCAyKTsKLSAgICB9Ci0gICAgY3R4LmZp
bGxTdHlsZSA9IGdlbmVyYXRlRmlsbFN0eWxlKDE1NSwgMjcsIDI3LCBhbHBoYSk7Ci0gICAgY3R4
LmZpbGxSZWN0KDAsIDAsIDEsIDEpOwotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5lcmF0ZUZpbGxT
dHlsZSgyNywgMTU1LCAyNywgYWxwaGEpOwotICAgIGN0eC5maWxsUmVjdCgxLCAwLCAxLCAxKTsK
LSAgICBjdHguZmlsbFN0eWxlID0gZ2VuZXJhdGVGaWxsU3R5bGUoMjcsIDI3LCAxNTUsIGFscGhh
KTsKLSAgICBjdHguZmlsbFJlY3QoMCwgMSwgMSwgMSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9IGdl
bmVyYXRlRmlsbFN0eWxlKDI3LCAyNywgMjcsIGFscGhhKTsKLSAgICBjdHguZmlsbFJlY3QoMSwg
MSwgMSwgMSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTY2VuYXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJp
bykgewotICAgIHZhciBzdHIgPSAibWltZVR5cGU6ICIgKyB0ZXN0U2NlbmFyaW8uZW5jb2RlT3B0
aW9ucy50eXBlICsKLSAgICAgICAgIiwgYmxvYlBpeGVsRm9ybWF0OiAiICsgdGVzdFNjZW5hcmlv
LmVuY29kZU9wdGlvbnMucGl4ZWxGb3JtYXQgKwotICAgICAgICAiLCBzb3VyY2UgY29sb3Igc3Bh
Y2U6ICIgKyB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbS5jb2xvclNwYWNlICsKLSAgICAg
ICAgIiwgcGl4ZWwgZm9ybWF0OiAiICsgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yUGFyYW0ucGl4
ZWxGb3JtYXQgKwotICAgICAgICAiLCBhbHBoYTogIiArIHRlc3RTY2VuYXJpby5hbHBoYTsKLSAg
ICByZXR1cm4gc3RyOwotfQotCi1mdW5jdGlvbiBydW5Db252ZXJ0VG9CbG9iVGVzdCh0ZXN0U2Nl
bmFyaW8pIHsKLSAgICB2YXIgc3JjQ2FudmFzID0gY3JlYXRlQ2FudmFzKHRlc3RTY2VuYXJpbyk7
Ci0gICAgdmFyIGN0eCA9IHNyY0NhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHRlc3RTY2VuYXJpby5j
YW52YXNDb2xvclBhcmFtKTsKLSAgICB2YXIgY29tcG9zaXRlT3ZlckJsYWNrID0gKHRlc3RTY2Vu
YXJpby5lbmNvZGVPcHRpb25zLnR5cGUgPT0gImltYWdlL2pwZWciKTsKLSAgICBkcmF3UGF0dGVy
bk9uQ2FudnNhKGN0eCwgdGVzdFNjZW5hcmlvLmFscGhhLCBjb21wb3NpdGVPdmVyQmxhY2spOwot
ICAgIHZhciByZWZQaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIpLmRhdGFVbmlv
bjsKLQotICAgIHZhciB0ID0gYXN5bmNfdGVzdCgiVGVzdCBjYW52YXMgY29udmVydFRvQmxvYigp
OiAiICsKLSAgICAgICAgdGVzdFNjZW5hcmlvVG9TdHJpbmcodGVzdFNjZW5hcmlvKSk7Ci0KLSAg
ICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgICBpbWFnZS5vbmxvYWQgPSB0LnN0ZXBfZnVu
Y19kb25lKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZHN0Q2FudmFzID0gY3JlYXRlQ2FudmFz
KHRlc3RTY2VuYXJpbyk7Ci0gICAgICAgIHZhciBkc3RDdHggPSBkc3RDYW52YXMuZ2V0Q29udGV4
dCgnMmQnLCB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbSk7Ci0gICAgICAgIGRzdEN0eC5k
cmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgICAgICB2YXIgYWN0dWFsUGl4ZWxzID0gZHN0Q3R4
LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5kYXRhVW5pb247Ci0gICAgICAgIHRlc3RQaXhlbHMo
YWN0dWFsUGl4ZWxzLCByZWZQaXhlbHMsIHRlc3RTY2VuYXJpbyk7Ci0gICAgfSk7Ci0KLSAgICBz
cmNDYW52YXMuY29udmVydFRvQmxvYih0ZXN0U2NlbmFyaW8uZW5jb2RlT3B0aW9ucykudGhlbigK
LSAgICAgICAgdC5zdGVwX2Z1bmMoZnVuY3Rpb24oYmxvYikgewotICAgICAgICAgICAgdmFyIHVy
bENyZWF0b3IgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7Ci0gICAgICAgICAgICBp
bWFnZS5zcmMgPSB1cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKLSAgICAgICAgfSks
Ci0gICAgICAgIHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJjb252ZXJ0VG9CbG9iIGZhaWxlZC4iKTsKLSAgICAgICAgfSkKLSAgICApOwot
fQotCi1mdW5jdGlvbiBydW5BbGxUZXN0cygpIHsKLQotICAgIHZhciBtaW1lVHlwZXMgPSBbJ2lt
YWdlL3BuZycsICdpbWFnZS9qcGVnJywgJ2ltYWdlL3dlYnAnXTsKLSAgICB2YXIgYmxvYlBpeGVs
Rm9ybWF0cyA9IFsndWludDgnLCAndWludDE2J107Ci0KLSAgICB2YXIgZW5jb2RlT3B0aW9uc1Nl
dCA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWltZVR5cGVzLmxlbmd0aDsgaSsrKQot
ICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGJsb2JQaXhlbEZvcm1hdHMubGVuZ3RoOyBrKysp
IHsKLSAgICAgICAgICAgIHZhciBlbmNvZGVPcHRpb25zID0ge307Ci0gICAgICAgICAgICBlbmNv
ZGVPcHRpb25zLnF1YWxpdHkgPSAxOwotICAgICAgICAgICAgZW5jb2RlT3B0aW9ucy50eXBlID0g
bWltZVR5cGVzW2ldOwotICAgICAgICAgICAgZW5jb2RlT3B0aW9ucy5waXhlbEZvcm1hdCA9IGJs
b2JQaXhlbEZvcm1hdHNba107Ci0gICAgICAgICAgICBlbmNvZGVPcHRpb25zU2V0LnB1c2goZW5j
b2RlT3B0aW9ucyk7Ci0gICAgICAgIH0KLQotICAgIHZhciBjYW52YXNDb2xvclBhcmFtcyA9IFsK
LSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6ICd1aW50OCd9LAotICAg
ICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDogJ2Zsb2F0MTYnfSwKLSAgICBd
OwotICAgIHZhciBhbHBoYVZhbHVlcyA9IFswLjUsIDFdOwotCi0gICAgLy8gVGhlICpjb3JyZWN0
KiB3YXkgdG8gdGVzdCBjb252ZXJ0VG9CbG9iKCkgaXMgdG8gZGlyZWN0bHkgZXhhbWluZSB0aGUK
LSAgICAvLyBpbWFnZSBmaWxlIGZvciB0aGUgZXhwZWN0ZWQgY29sb3Igc3BhY2UgYW5kIHBpeGVs
cy4gU2luY2UgdGhpcyBpcyBub3QKLSAgICAvLyBlYXN5IHRvIGRvIGluIGphdmFzY3JpcHQsIHdl
IHVzZSBhIHJvdW5kLXRyaXAgdGVzdCBoZXJlIGFuZCBsZWF2ZSB0aGUKLSAgICAvLyBtb3JlIHRo
b3JvdWdoIHRlc3RpbmcgdG8gdW5pdCB0ZXN0cy4KLQotICAgIHZhciB0ZXN0U2NlbmFyaW9TZXQg
PSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVuY29kZU9wdGlvbnNTZXQubGVuZ3RoOyBp
KyspCi0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FudmFzQ29sb3JQYXJhbXMubGVuZ3Ro
OyBqKyspCi0gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGFscGhhVmFsdWVzLmxlbmd0
aDsgaysrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRlc3RTY2VuYXJpbyA9IHt9OwotICAgICAg
ICAgICAgICAgIHRlc3RTY2VuYXJpby5lbmNvZGVPcHRpb25zID0gZW5jb2RlT3B0aW9uc1NldFtp
XTsKLSAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbSA9IGNhbnZh
c0NvbG9yUGFyYW1zW2pdOwotICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5hbHBoYSA9IGFs
cGhhVmFsdWVzW2tdOwotICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpb1NldC5wdXNoKHRlc3RT
Y2VuYXJpbyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RT
Y2VuYXJpb1NldC5sZW5ndGg7IGkrKykKLSAgICAgICAgcnVuQ29udmVydFRvQmxvYlRlc3QodGVz
dFNjZW5hcmlvU2V0W2ldKTsKLX0KLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBydW5BbGxUZXN0
cygpOwotfSwgIk92ZXJhbGwgdGVzdCIpOwotCi08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLXRvQmxvYi10b0RhdGFVUkwtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29s
b3JNYW5hZ2VkLXRvQmxvYi10b0RhdGFVUkwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC10b0Jsb2It
dG9EYXRhVVJMLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDI3ICswLDAgQEAKLQot
UEFTUyBPdmVyYWxsIHRlc3QKLVBBU1MgVGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kg
YmVoYXZpb3IgaW4gICAgICAgICBjb2xvciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGlt
YWdlL2pwZWcsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1aW50OCwg
YWxwaGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlv
ciBpbiAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvanBl
Zywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTog
MQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAg
ICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvanBlZywgc291cmNl
IGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAwLjUKLVBB
U1MgVGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBj
b2xvciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGltYWdlL2pwZWcsIHNvdXJjZSBjb2xv
ciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2LCBhbHBoYTogMQotUEFTUyBUZXN0
IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1h
bmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvcG5nLCBzb3VyY2UgY29sb3Igc3BhY2U6
IHNyZ2IsIHBpeGVsIGZvcm1hdDogdWludDgsIGFscGhhOiAwLjUKLVBBU1MgVGVzdCBpZiB0b0Js
b2IoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBjb2xvciBtYW5hZ2VkIGNh
bnZhczogSW1hZ2VGb3JtYXQ6IGltYWdlL3BuZywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBw
aXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3Bl
Y3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFn
ZUZvcm1hdDogaW1hZ2UvcG5nLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1h
dDogZmxvYXQxNiwgYWxwaGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxl
Z2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1h
dDogaW1hZ2UvcG5nLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogZmxv
YXQxNiwgYWxwaGE6IDEKLVBBU1MgVGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kgYmVo
YXZpb3IgaW4gICAgICAgICBjb2xvciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGltYWdl
L3dlYnAsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1aW50OCwgYWxw
aGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBp
biAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwg
c291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMQot
UEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAg
IGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwgc291cmNlIGNv
bG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAwLjUKLVBBU1Mg
VGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBjb2xv
ciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGltYWdlL3dlYnAsIHNvdXJjZSBjb2xvciBz
cGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2LCBhbHBoYTogMQotUEFTUyBUZXN0IGlm
IHRvRGF0YVVSTCgpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGluIGNvbG9yIG1h
bmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvanBlZywgc291cmNlIGNvbG9yIHNwYWNl
OiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMC41Ci1QQVNTIFRlc3QgaWYgdG9E
YXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdl
ZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS9qcGVnLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNy
Z2IsIHBpeGVsIGZvcm1hdDogdWludDgsIGFscGhhOiAxCi1QQVNTIFRlc3QgaWYgdG9EYXRhVVJM
KCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52
YXM6IEltYWdlRm9ybWF0OiBpbWFnZS9qcGVnLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBp
eGVsIGZvcm1hdDogZmxvYXQxNiwgYWxwaGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgp
IHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFz
OiBJbWFnZUZvcm1hdDogaW1hZ2UvanBlZywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhl
bCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAxCi1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVz
cGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IElt
YWdlRm9ybWF0OiBpbWFnZS9wbmcsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9y
bWF0OiB1aW50OCwgYWxwaGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgpIHJlc3BlY3Rz
IGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZv
cm1hdDogaW1hZ2UvcG5nLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDog
dWludDgsIGFscGhhOiAxCi1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5
IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBp
bWFnZS9wbmcsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2
LCBhbHBoYTogMC41Ci1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJl
aGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFn
ZS9wbmcsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2LCBh
bHBoYTogMQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlv
ciAgICAgICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2Vi
cCwgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTog
MC41Ci1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAg
ICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS93ZWJwLCBz
b3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogdWludDgsIGFscGhhOiAxCi1Q
QVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAg
aW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS93ZWJwLCBzb3VyY2Ug
Y29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogZmxvYXQxNiwgYWxwaGE6IDAuNQotUEFT
UyBUZXN0IGlmIHRvRGF0YVVSTCgpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGlu
IGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwgc291cmNlIGNv
bG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAxCi0KSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLXRvQmxvYi10b0Rh
dGFVUkwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFz
LWNvbG9yTWFuYWdlZC10b0Jsb2ItdG9EYXRhVVJMLmh0bWwJKHJldmlzaW9uIDI3NjcxNikKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLXRvQmxvYi10b0Rh
dGFVUkwuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE0NyArMCwwIEBACi08IURPQ1RZUEUgSFRN
TD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0KLS8vIE5vIG1hdHRlciB3aGF0IGlzIHRoZSBjb2xvciBzcGFjZSBhbmQgcGl4ZWwg
Zm9ybWF0IG9mIHRoZSBjb2xvciBtYW5hZ2VkCi0vLyBjYW52YXMsIHRvQmxvYigpIGFuZCB0b0Rh
dGFVUkwoKSBhbHdheXMgY3JlYXRlIHRoZSBibG9iIGluIHNSR0IgY29sb3IKLS8vIHNwYWNlLCBh
bmQgcmVzcGVjdCB0aGUgbGVnYWN5IGJlaGF2aW9yIGJ5IG5vdCBpbmNsdWRpbmcgYW55IGNvbG9y
IHNwYWNlCi0vLyBpbmZvcm1hdGlvbiBpbiB0aGUgYmxvYi9kYXRhIHVybC4KLQotdmFyIG9wYXF1
ZVJlZmVyZW5jZVB4aWVscywgdHJhbnNwYXJlbnRSZWZlcmVuY2VQaXhlbHM7Ci0KLWZ1bmN0aW9u
IHRlc3RQaXhlbHMoYWN0dWFsUGl4ZWxzLCBhbHBoYSkKLXsKLSAgICBpZiAoYWxwaGEgPT0gMSkK
LSAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxzLCBvcGFxdWVS
ZWZlcmVuY2VQeGllbHMsIDEpOwotICAgIGVsc2UKLSAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJv
eF9lcXVhbHMoYWN0dWFsUGl4ZWxzLCB0cmFuc3BhcmVudFJlZmVyZW5jZVBpeGVscywgMik7Ci19
Ci0KLWZ1bmN0aW9uIGdlbmVyYXRlRmlsbFN0eWxlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSB7
Ci0gICAgcmV0dXJuICJyZ2JhKCIgKyByZWQgKyAiLCIgKyBncmVlbiArICIsIiArIGJsdWUgKyAi
LCIgKyBhbHBoYSArICIpIjsKLX0KLQotZnVuY3Rpb24gY29udGV4dERyYXdIZWxwZXIoY3R4LCBh
bHBoYSkgewotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgxNTUsIDI3LCAy
NywgYWxwaGEpOwotICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxLCAxKTsKLSAgICBjdHguZmlsbFN0
eWxlID0gZ2VuZXJhdGVGaWxsU3R5bGUoMjcsIDE1NSwgMjcsIGFscGhhKTsKLSAgICBjdHguZmls
bFJlY3QoMSwgMCwgMSwgMSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9IGdlbmVyYXRlRmlsbFN0eWxl
KDI3LCAyNywgMTU1LCBhbHBoYSk7Ci0gICAgY3R4LmZpbGxSZWN0KDAsIDEsIDEsIDEpOwotICAg
IGN0eC5maWxsU3R5bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgyNywgMjcsIDI3LCBhbHBoYSk7Ci0g
ICAgY3R4LmZpbGxSZWN0KDEsIDEsIDEsIDEpOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlUmVmZXJl
bmNlRXhwZWN0ZWRSZXN1bHRzKCkgewotICAgIHZhciBjYW52YXMxID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzMS53aWR0aCA9IDI7Ci0gICAgY2FudmFzMS5o
ZWlnaHQgPSAyOwotICAgIHZhciBjdHgxID0gY2FudmFzMS5nZXRDb250ZXh0KCcyZCcpOwotICAg
IGNvbnRleHREcmF3SGVscGVyKGN0eDEsIDEpOwotICAgIG9wYXF1ZVJlZmVyZW5jZVB4aWVscyA9
IGN0eDEuZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIpLmRhdGE7Ci0KLSAgICB2YXIgY2FudmFzMiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNhbnZhczIud2lkdGggPSAy
OwotICAgIGNhbnZhczIuaGVpZ2h0ID0gMjsKLSAgICB2YXIgY3R4MiA9IGNhbnZhczIuZ2V0Q29u
dGV4dCgnMmQnKTsKLSAgICBjb250ZXh0RHJhd0hlbHBlcihjdHgyLCAwLjUpOwotICAgIHRyYW5z
cGFyZW50UmVmZXJlbmNlUGl4ZWxzID0gY3R4Mi5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMikuZGF0
YTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHRlc3RTY2VuYXJpbykKLXsKLSAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzLndp
ZHRoID0gMjsKLSAgICBjYW52YXMuaGVpZ2h0ID0gMjsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdl
dENvbnRleHQoJzJkJywge2NvbG9yU3BhY2U6IHRlc3RTY2VuYXJpby5jb2xvclNwYWNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQ6IHRlc3RTY2Vu
YXJpby5waXhlbEZvcm1hdH0pOwotICAgIGNvbnRleHREcmF3SGVscGVyKGN0eCwgdGVzdFNjZW5h
cmlvLmFscGhhKTsKLSAgICByZXR1cm4gY2FudmFzOwotfQotCi1mdW5jdGlvbiB0ZXN0U2NlbmFy
aW9Ub1N0cmluZyh0ZXN0U2NlbmFyaW8pIHsKLSAgICB2YXIgc3RyID0gIkltYWdlRm9ybWF0OiAi
ICsgdGVzdFNjZW5hcmlvLmltYWdlRm9ybWF0ICsKLSAgICAgICAgIiwgc291cmNlIGNvbG9yIHNw
YWNlOiAiICsgdGVzdFNjZW5hcmlvLmNvbG9yU3BhY2UgKwotICAgICAgICAiLCBwaXhlbCBmb3Jt
YXQ6ICIgKyB0ZXN0U2NlbmFyaW8ucGl4ZWxGb3JtYXQgKwotICAgICAgICAiLCBhbHBoYTogIiAr
IHRlc3RTY2VuYXJpby5hbHBoYTsKLSAgICBpZiAodGVzdFNjZW5hcmlvLmhhc093blByb3BlcnR5
KCdjb2xvclNwYWNlQ29udmVyc2lvbicpKQotICAgICAgICBzdHIgPSBzdHIgKyAiLCBpbnRlcm1l
ZGlhdGUgY29sb3Igc3BhY2U6ICIgKwotICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5jb2xv
clNwYWNlQ29udmVyc2lvbjsKLSAgICByZXR1cm4gc3RyOwotfQotCi1mdW5jdGlvbiBydW5Ub0Js
b2JUZXN0KHRlc3RTY2VuYXJpbykgewotICAgIHZhciBzcmNDYW52YXMgPSBjcmVhdGVDYW52YXMo
dGVzdFNjZW5hcmlvKTsKLSAgICB2YXIgdF9ibG9iID0gYXN5bmNfdGVzdCgiVGVzdCBpZiB0b0Js
b2IoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gXAotICAgICAgICBjb2xvciBtYW5hZ2Vk
IGNhbnZhczogIiArIHRlc3RTY2VuYXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJpbykpOwotCi0gICAg
dmFyIGltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAgaW1hZ2Uub25sb2FkID0gdF9ibG9iLnN0ZXBf
ZnVuY19kb25lKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZHN0Q2FudmFzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgIGRzdENhbnZhcy53aWR0aCA9IDI7Ci0g
ICAgICAgIGRzdENhbnZhcy5oZWlnaHQgPSAyOwotICAgICAgICB2YXIgY3R4ID0gZHN0Q2FudmFz
LmdldENvbnRleHQoJzJkJyk7Ci0gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwot
ICAgICAgICB2YXIgYWN0dWFsUGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5k
YXRhOwotICAgICAgICB0ZXN0UGl4ZWxzKGFjdHVhbFBpeGVscywgdGVzdFNjZW5hcmlvLmFscGhh
KTsKLSAgICB9KTsKLQotICAgIHNyY0NhbnZhcy50b0Jsb2IoZnVuY3Rpb24oYmxvYikgewotICAg
ICAgICB2YXIgdXJsQ3JlYXRvciA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDsKLSAg
ICAgICAgaW1hZ2Uuc3JjID0gdXJsQ3JlYXRvci5jcmVhdGVPYmplY3RVUkwoYmxvYik7Ci0gICAg
fSwgJ2ltYWdlL3BuZycsIDEpOwotfQotCi1mdW5jdGlvbiBydW5Ub0RhdGFVUkxUZXN0KHRlc3RT
Y2VuYXJpbykgewotICAgIHZhciBzcmNDYW52YXMgPSBjcmVhdGVDYW52YXModGVzdFNjZW5hcmlv
KTsKLSAgICB2YXIgdF9kYXRhVVJMID0gYXN5bmNfdGVzdCgiVGVzdCBpZiB0b0RhdGFVUkwoKSBy
ZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgXAotICAgICAgICBpbiBjb2xvciBtYW5hZ2VkIGNhbnZh
czogIiArIHRlc3RTY2VuYXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJpbykpOwotCi0gICAgdmFyIGlt
YWdlID0gbmV3IEltYWdlKCk7Ci0gICAgaW1hZ2Uub25sb2FkID0gdF9kYXRhVVJMLnN0ZXBfZnVu
Y19kb25lKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZHN0Q2FudmFzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgIGRzdENhbnZhcy53aWR0aCA9IDI7Ci0gICAg
ICAgIGRzdENhbnZhcy5oZWlnaHQgPSAyOwotICAgICAgICB2YXIgY3R4ID0gZHN0Q2FudmFzLmdl
dENvbnRleHQoJzJkJyk7Ci0gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAg
ICAgICB2YXIgYWN0dWFsUGl4ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5kYXRh
OwotICAgICAgICB0ZXN0UGl4ZWxzKGFjdHVhbFBpeGVscywgdGVzdFNjZW5hcmlvLmFscGhhKTsK
LSAgICB9KTsKLSAgICBpbWFnZS5zcmMgPSBzcmNDYW52YXMudG9EYXRhVVJMKCk7Ci19Ci0KLWZ1
bmN0aW9uIHJ1bkFsbFRlc3RzKCkgewotICAgIHByZXBhcmVSZWZlcmVuY2VFeHBlY3RlZFJlc3Vs
dHMoKTsKLQotICAgIHZhciBpbWFnZUZvcm1hdHMgPSBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5n
JywgJ2ltYWdlL3dlYnAnXTsKLSAgICB2YXIgY29sb3JTcGFjZXMgPSBbCi0gICAgICAgIHtjb2xv
clNwYWNlOiAnc3JnYicsIHBpeGVsRm9ybWF0OiAndWludDgnfSwKLSAgICAgICAge2NvbG9yU3Bh
Y2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6ICdmbG9hdDE2J30sCi0gICAgXTsKLSAgICB2YXIgYWxw
aGFWYWx1ZXMgPSBbMC41LCAxXTsKLQotICAgIHZhciB0ZXN0U2NlbmFyaW9TZXQgPSBbXTsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdlRm9ybWF0cy5sZW5ndGg7IGkrKykKLSAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBjb2xvclNwYWNlcy5sZW5ndGg7IGorKykKLSAgICAgICAgICAg
IGZvciAodmFyIGsgPSAwOyBrIDwgYWxwaGFWYWx1ZXMubGVuZ3RoOyBrKyspIHsKLSAgICAgICAg
ICAgICAgICB2YXIgdGVzdFNjZW5hcmlvID0ge307Ci0gICAgICAgICAgICAgICAgdGVzdFNjZW5h
cmlvLmltYWdlRm9ybWF0ID0gaW1hZ2VGb3JtYXRzW2ldOwotICAgICAgICAgICAgICAgIHRlc3RT
Y2VuYXJpby5jb2xvclNwYWNlID0gY29sb3JTcGFjZXNbal0uY29sb3JTcGFjZTsKLSAgICAgICAg
ICAgICAgICB0ZXN0U2NlbmFyaW8ucGl4ZWxGb3JtYXQgPSBjb2xvclNwYWNlc1tqXS5waXhlbEZv
cm1hdDsKLSAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uYWxwaGEgPSBhbHBoYVZhbHVlc1tr
XTsKLSAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW9TZXQucHVzaCh0ZXN0U2NlbmFyaW8pOwot
ICAgICAgICAgICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9TZXQu
bGVuZ3RoOyBpKyspCi0gICAgICAgIHJ1blRvQmxvYlRlc3QodGVzdFNjZW5hcmlvU2V0W2ldKTsK
LQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFNjZW5hcmlvU2V0Lmxlbmd0aDsgaSsrKQot
ICAgICAgICBydW5Ub0RhdGFVUkxUZXN0KHRlc3RTY2VuYXJpb1NldFtpXSk7Ci19Ci0KLXRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gICAgcnVuQWxsVGVzdHMoKTsKLX0sICJPdmVyYWxsIHRlc3QiKTsKLQot
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yc3Bh
Y2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvY2FudmFzLWNvbG9yc3BhY2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvcnNwYWNl
LWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw4ICswLDAgQEAKLQot
RkFJTCBUZXN0IGRlZmF1bHQgY29udGV4dCBjcmVhdGlvbiBwYXJhbWV0ZXJzOiBzcmdiL3VpbnQ4
IGN0eC5nZXRDb250ZXh0QXR0cmlidXRlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZ2V0
Q29udGV4dEF0dHJpYnV0ZXMoKScsICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMnIGlzIHVuZGVm
aW5lZCkKLUZBSUwgVGVzdCBDYW52YXNDb2xvclNwYWNlIHZhbHVlIHNyZ2IgY3R4LmdldENvbnRl
eHRBdHRyaWJ1dGVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2N0eC5nZXRDb250ZXh0QXR0cmli
dXRlcygpJywgJ2N0eC5nZXRDb250ZXh0QXR0cmlidXRlcycgaXMgdW5kZWZpbmVkKQotRkFJTCBU
ZXN0IENhbnZhc1BpeGVsRm9ybWF0IHZhbHVlIHVpbnQ4IGN0eC5nZXRDb250ZXh0QXR0cmlidXRl
cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKScsICdj
dHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgVGVzdCBDYW52YXNQ
aXhlbEZvcm1hdCB2YWx1ZSBmbG9hdDE2IGN0eC5nZXRDb250ZXh0QXR0cmlidXRlcyBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKScsICdjdHguZ2V0Q29u
dGV4dEF0dHJpYnV0ZXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgVGVzdCBzdXBwb3J0ZWQgY29sb3Ig
c2V0dGluZ3Mgc3JnYi91aW50OCBjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnY3R4LmdldENvbnRleHRBdHRyaWJ1dGVzKCknLCAnY3R4LmdldENvbnRleHRB
dHRyaWJ1dGVzJyBpcyB1bmRlZmluZWQpCi1GQUlMIFRlc3Qgc3VwcG9ydGVkIGNvbG9yIHNldHRp
bmdzIHNyZ2IvZmxvYXQxNiBjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnY3R4LmdldENvbnRleHRBdHRyaWJ1dGVzKCknLCAnY3R4LmdldENvbnRleHRBdHRy
aWJ1dGVzJyBpcyB1bmRlZmluZWQpCi0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9j
YW52YXMtY29sb3JzcGFjZS1hcmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lk
ZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yc3BhY2UtYXJndW1lbnRzLmh0bWwJKHJldmlzaW9u
IDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JzcGFjZS1h
cmd1bWVudHMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ4ICswLDAgQEAKLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLQotdmFy
IHRlc3RTY2VuYXJpb3MgPSBbCi0gICAge3Rlc3REZXNjcmlwdGlvbjogIlRlc3QgZGVmYXVsdCBj
b250ZXh0IGNyZWF0aW9uIHBhcmFtZXRlcnM6IHNyZ2IvdWludDgiLAotICAgICAgICBjYW52YXND
b2xvclNldHRpbmdzOiB7fSwKLSAgICAgICAgZXhwZWN0ZWRDb2xvclNldHRpbmdzOiB7Y29sb3JT
cGFjZTogInNyZ2IiLCBwaXhlbEZvcm1hdDogInVpbnQ4In19LAotICAgIHt0ZXN0RGVzY3JpcHRp
b246ICJUZXN0IENhbnZhc0NvbG9yU3BhY2UgdmFsdWUgc3JnYiIsCi0gICAgICAgIGNhbnZhc0Nv
bG9yU2V0dGluZ3M6IHtjb2xvclNwYWNlOiAic3JnYiJ9LAotICAgICAgICBleHBlY3RlZENvbG9y
U2V0dGluZ3M6IHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0OiAidWludDgifX0sCi0K
LSAgICB7dGVzdERlc2NyaXB0aW9uOiAiVGVzdCBDYW52YXNQaXhlbEZvcm1hdCB2YWx1ZSB1aW50
OCIsCi0gICAgICAgIGNhbnZhc0NvbG9yU2V0dGluZ3M6IHtwaXhlbEZvcm1hdDogInVpbnQ4In0s
Ci0gICAgICAgIGV4cGVjdGVkQ29sb3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJzcmdiIiwgcGl4
ZWxGb3JtYXQ6ICJ1aW50OCJ9fSwKLSAgICB7dGVzdERlc2NyaXB0aW9uOiAiVGVzdCBDYW52YXNQ
aXhlbEZvcm1hdCB2YWx1ZSBmbG9hdDE2IiwKLSAgICAgICAgY2FudmFzQ29sb3JTZXR0aW5nczog
e3BpeGVsRm9ybWF0OiAiZmxvYXQxNiJ9LAotICAgICAgICBleHBlY3RlZENvbG9yU2V0dGluZ3M6
IHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0OiAiZmxvYXQxNiJ9fSwKLQotICAgIHt0
ZXN0RGVzY3JpcHRpb246ICJUZXN0IHN1cHBvcnRlZCBjb2xvciBzZXR0aW5ncyBzcmdiL3VpbnQ4
IiwKLSAgICAgICAgY2FudmFzQ29sb3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJzcmdiIiwgcGl4
ZWxGb3JtYXQ6ICJ1aW50OCJ9LAotICAgICAgICBleHBlY3RlZENvbG9yU2V0dGluZ3M6IHtjb2xv
clNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0OiAidWludDgifX0sCi0gICAge3Rlc3REZXNjcmlw
dGlvbjogIlRlc3Qgc3VwcG9ydGVkIGNvbG9yIHNldHRpbmdzIHNyZ2IvZmxvYXQxNiIsCi0gICAg
ICAgIGNhbnZhc0NvbG9yU2V0dGluZ3M6IHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0
OiAiZmxvYXQxNiJ9LAotICAgICAgICBleHBlY3RlZENvbG9yU2V0dGluZ3M6IHtjb2xvclNwYWNl
OiAic3JnYiIsIHBpeGVsRm9ybWF0OiAiZmxvYXQxNiJ9fSwKLV07Ci0KLWZ1bmN0aW9uIHJ1blRl
c3RTY2VuYXJpbyh0ZXN0U2NlbmFyaW8pIHsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC4gY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7
Ci0gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB0ZXN0U2NlbmFyaW8u
Y2FudmFzQ29sb3JTZXR0aW5ncyk7Ci0gICAgICAgIHZhciBjb250ZXh0QXR0cmlidXRlcyA9IGN0
eC5nZXRDb250ZXh0QXR0cmlidXRlcygpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHRB
dHRyaWJ1dGVzLmNvbG9yU3BhY2UsCi0gICAgICAgICAgICB0ZXN0U2NlbmFyaW8uZXhwZWN0ZWRD
b2xvclNldHRpbmdzLmNvbG9yU3BhY2UpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHRB
dHRyaWJ1dGVzLnBpeGVsRm9ybWF0LAotICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmV4cGVjdGVk
Q29sb3JTZXR0aW5ncy5waXhlbEZvcm1hdCk7Ci0gICAgfSwgdGVzdFNjZW5hcmlvLnRlc3REZXNj
cmlwdGlvbik7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkFsbFRlc3RzKCkgewotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGVzdFNjZW5hcmlvcy5sZW5ndGg7IGkrKykKLSAgICAgICAgcnVuVGVzdFNjZW5h
cmlvKHRlc3RTY2VuYXJpb3NbaV0pOwotfQotCi1ydW5BbGxUZXN0cygpOwotPC9zY3JpcHQ+Ci0K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY3JlYXRlSW1hZ2VCaXRtYXAt
ZV9zcmdiLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52
YXMvY2FudmFzLWNyZWF0ZUltYWdlQml0bWFwLWVfc3JnYi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY3JlYXRlSW1hZ2VC
aXRtYXAtZV9zcmdiLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAK
LUNPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiB0ZXN0Q2FudmFzLmNvbnZlcnRUb0Jsb2IgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAndGVzdENhbnZhcy5jb252ZXJ0VG9CbG9iKGVuY29kZU9wdGlv
bnMpJywgJ3Rlc3RDYW52YXMuY29udmVydFRvQmxvYicgaXMgdW5kZWZpbmVkKQotCi1IYXJuZXNz
IEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFR5cGVFcnJvcjogdGVzdENhbnZhcy5jb252ZXJ0VG9C
bG9iIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3Rlc3RDYW52YXMuY29udmVydFRvQmxvYihlbmNv
ZGVPcHRpb25zKScsICd0ZXN0Q2FudmFzLmNvbnZlcnRUb0Jsb2InIGlzIHVuZGVmaW5lZCkKLQot
RkFJTCBjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBIVE1M
SW1hZ2VFbGVtZW50IChCTVAsIEdJRiwgSUNPLCBKUEcsIFBORywgV0VCUCkgd2l0aCByZXNpemUu
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5s
ZW5ndGgnKSIKLUZBSUwgY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3Bh
cmVudCBzUkdCIEhUTUxJbWFnZUVsZW1lbnQgKEJNUCwgSUNPLCBQTkcsIFdFQlApIHdpdGggcmVz
aXplLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0
ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1
YWwubGVuZ3RoJykiCi1GQUlMIGNyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGEgc1JH
QiBTVkcgaW1hZ2Ugd2l0aCByZXNpemUuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKSIKLVRJTUVPVVQgY3JlYXRlSW1hZ2VCaXRt
YXAgaW4gZS1zUkdCIGZyb20gYSBzUkdCIEhUTUxWaWRlb0VsZW1lbnQgd2l0aCByZXNpemUuIFRl
c3QgdGltZWQgb3V0Ci1OT1RSVU4gY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYW4g
b3BhcXVlIHNSR0IgSFRNTENhbnZhc0VsZW1lbnQgd2l0aCByZXNpemUuCi1OT1RSVU4gY3JlYXRl
SW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYW4gb3BhcXVlIGUtc1JHQiBIVE1MQ2FudmFzRWxl
bWVudCB3aXRoIHJlc2l6ZS4KLU5PVFJVTiBjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJv
bSBhIHRyYW5zcGFyZW50IHNSR0IgSFRNTENhbnZhc0VsZW1lbnQgd2l0aCByZXNpemUuCi1OT1RS
VU4gY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBlLXNSR0Ig
SFRNTENhbnZhc0VsZW1lbnQgd2l0aCByZXNpemUuCi1OT1RSVU4gY3JlYXRlSW1hZ2VCaXRtYXAg
aW4gZS1zUkdCIGZyb20gYW4gb3BhcXVlIHNSR0IgQmxvYiB3aXRoIHJlc2l6ZS4KLU5PVFJVTiBj
cmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50IHNSR0IgQmxvYiB3
aXRoIHJlc2l6ZS4KLU5PVFJVTiBjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBjb2xv
ciBtYW5hZ2VkIEJsb2Igd2l0aCByZXNpemUuIGJsb2JQaXhlbEZvcm1hdDogdWludDgsIHRyYW5z
cGFyZW5jeTogZmFsc2UKLQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1j
cmVhdGVJbWFnZUJpdG1hcC1lX3NyZ2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZUltYWdlQml0bWFwLWVfc3JnYi5odG1sCShyZXZpc2lv
biAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZUltYWdl
Qml0bWFwLWVfc3JnYi5odG1sCShub25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLQotdmFyIHRyYW5zcGFyZW50QmxhY2sgPSBbMCwgMCwgMCwgMF07Ci0K
LXZhciBlX3NSR0JfUmVkID0gICBbMSwgMCwgMCwgMV07IC8vIHNSR0IoMjU1LDAsMCwyNTUpCi12
YXIgZV9zUkdCX0dyZWVuID0gWzAsIDEsIDAsIDFdOyAvLyBzUkdCKDAsMjU1LDAsMjU1KQotdmFy
IGVfc1JHQl9CbHVlID0gIFswLCAwLCAxLCAxXTsgLy8gc1JHQigwLDAsMjU1LDI1NSkKLXZhciBl
X3NSR0JfQmxhY2sgPSBbMCwgMCwgMCwgMV07IC8vIHNSR0IoMCwwLDAsMjU1KQotCi0vLyBzUkdC
KDE1NSwyNywyNywyNTUpCi12YXIgZV9zUkdCX09wYXF1ZVJlZCA9IFswLjYwNzQyMiwgMC4xMDU4
MzUsIDAuMTA1ODM1LCAxXTsKLS8vIHNSR0IoMjcsMTU1LDI3LDI1NSkKLXZhciBlX3NSR0JfT3Bh
cXVlR3JlZW4gPSBbMC4xMDU4MzUsIDAuNjA3NDIyLCAwLjEwNTgzNSwgMV07Ci0vLyBzUkdCKDI3
LDI3LDE1NSwyNTUpCi12YXIgZV9zUkdCX09wYXF1ZUJsdWUgPSBbMC4xMDU4MzUsIDAuMTA1ODM1
LCAwLjYwNzQyMiwgMV07Ci0vLyBzUkdCKDI3LDI3LDI3LDI1NSkKLXZhciBlX3NSR0JfT3BhcXVl
QmxhY2sgPSBbMC4xMDU4MzUsIDAuMTA1ODM1LCAwLjEwNTgzNSwgMV07Ci0KLS8vIHNSR0IoMTU1
LDI3LDI3LDEyOCkKLXZhciBlX3NSR0JfVHJhbnNwYXJlbnRSZWQgPSBbMC42MDc0MjIsIDAuMTA1
ODM1LCAwLjEwNTgzNSwgMC41MDE5NTNdOwotLy8gc1JHQigyNywgMTU1LCAyNywgMTI4KQotdmFy
IGVfc1JHQl9UcmFuc3BhcmVudEdyZWVuID0gWzAuMTA1ODM1LCAwLjYwNzQyMiwgMC4xMDU4MzUs
IDAuNTAxOTUzXTsKLS8vIHNSR0IoMjcsIDI3LCAxNTUsIDEyOCkKLXZhciBlX3NSR0JfVHJhbnNw
YXJlbnRCbHVlID0gWzAuMTA1ODM1LCAwLjEwNTgzNSwgMC42MDc0MjIsIDAuNTAxOTUzXTsKLS8v
IHNSR0IoMjcsIDI3LCAyNywgMTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEJsYWNrID0gWzAu
MTA1ODM1LCAwLjEwNTgzNSwgMC4xMDU4MzUsIDAuNTAxOTUzXTsKLQotLy8gc1JHQigyMjYsMzEs
MzEsMTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudFJlZEltYWdlID0gWzAuODg2MjMwLCAwLjEy
MTUyMSwgMC4xMjE1MjEsIDAuNTAxOTUzXTsKLS8vIHNSR0IoMjI2LDMxLDMxLDEyOCkKLXZhciBl
X3NSR0JfVHJhbnNwYXJlbnRHcmVlbkltYWdlID0gWzAuMTIxNTIxLCAwLjg4NjIzMCwgMC4xMjE1
MjEsIDAuNTAxOTUzXTsKLS8vIHNSR0IoMjI2LDMxLDMxLDEyOCkKLXZhciBlX3NSR0JfVHJhbnNw
YXJlbnRCbHVlSW1hZ2UgPSBbMC4xMjE1MjEsIDAuMTIxNTIxLCAwLjg4NjIzMCwgMC41MDE5NTNd
OwotLy8gc1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEJsYWNrSW1h
Z2UgPSBbMC4xMjE1MjEsIDAuMTIxNTIxLCAwLjEyMTUyMSwgMC41MDE5NTNdOwotCi1mdW5jdGlv
biB0ZXN0UGl4ZWxzKGN0eCwgdGVzdHMsIHNvdXJjZVR5cGUpCi17Ci0gICAgdmFyIGFjdHVhbCwg
ZXhwZWN0ZWQsIHRvbGVyYW5jZSA9IDAuMDI1OwotICAgIGlmIChzb3VyY2VUeXBlID09PSAndmlk
ZW8nKQotICAgICAgICB0b2xlcmFuY2UgPSAwLjAzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgYWN0dWFsID0gY3R4LmdldEltYWdlRGF0YSh0
ZXN0c1tpXVswXSwgdGVzdHNbaV1bMV0sIDEsIDEpLmRhdGFVbmlvbjsKLSAgICAgICAgZXhwZWN0
ZWQgPSB0ZXN0c1tpXVsyXTsKLSAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLmxlbmd0aCA9PT0g
ZXhwZWN0ZWQubGVuZ3RoKTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3R1YWwubGVu
Z3RoOyBqKyspCi0gICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGFjdHVhbFtqXSwgZXhw
ZWN0ZWRbal0sIHRvbGVyYW5jZSwgdGVzdHNbaV1bM10pOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y2hlY2tOb0Nyb3AoaW1hZ2VCaXRtYXAsIGNvbG9ySW5mbywgc291cmNlVHlwZSkKLXsKLSAgICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgY2FudmFz
LndpZHRoID0gNTA7Ci0gICAgY2FudmFzLmhlaWdodCA9IDUwOwotICAgIHZhciBjdHggPSBjYW52
YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZv
cm1hdDonZmxvYXQxNid9KTsKLSAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwg
Y2FudmFzLmhlaWdodCk7Ci0gICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7Ci0g
ICAgdmFyIHRlc3RzOwotICAgIGlmIChjb2xvckluZm8gPT0gJ2Z1bGxDb2xvcicpCi0gICAgICAg
IHRlc3RzID0gW1swLCAwLCBlX3NSR0JfUmVkLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdC
IHJlZC4iXSwKLSAgICAgICAgICAgICAgICAgWzM5LCAwLCBlX3NSR0JfR3JlZW4sICJUaGlzIHBp
eGVsIHNob3VsZCBiZSBlLXNSR0IgZ3JlZW4uIl0sCi0gICAgICAgICAgICAgICAgIFswLCAzOSwg
ZV9zUkdCX0JsdWUsICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgYmx1ZS4iXSwKLSAgICAg
ICAgICAgICAgICAgWzM5LCAzOSwgZV9zUkdCX0JsYWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUg
ZS1zUkdCIGJsYWNrLiJdLAotICAgICAgICAgICAgICAgICBbNDEsIDQxLCB0cmFuc3BhcmVudEJs
YWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVs
c2UgaWYgKGNvbG9ySW5mbyA9PSAnb3BhcXVlJykKLSAgICAgICAgdGVzdHMgPSBbWzAsIDAsIGVf
c1JHQl9PcGFxdWVSZWQsCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQg
YmUgZS1zUkdCIGxpa2UgcmVkLiJdLAotICAgICAgICAgICAgICAgICBbMzksIDAsIGVfc1JHQl9P
cGFxdWVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBl
LXNSR0IgbGlrZSBncmVlbi4iXSwKLSAgICAgICAgICAgICAgICAgWzAsIDM5LCBlX3NSR0JfT3Bh
cXVlQmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNS
R0IgbGlrZSBibHVlLiJdLAotICAgICAgICAgICAgICAgICBbMzksIDM5LCBlX3NSR0JfT3BhcXVl
QmxhY2ssCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdC
IGxpa2UgYmxhY2suIl0sCi0gICAgICAgICAgICAgICAgIFs0MSwgNDEsIHRyYW5zcGFyZW50Qmxh
Y2ssICJUaGlzIHBpeGVsIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjay4iXV07Ci0gICAgZWxz
ZSBpZiAoY29sb3JJbmZvID09ICd0cmFuc3BhcmVudCcpCi0gICAgICAgIHRlc3RzID0gW1swLCAw
LCBlX3NSR0JfVHJhbnNwYXJlbnRSZWQsCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhl
bCBzaG91bGQgYmUgZS1zUkdCIHRyYW5zcGFyZW50IHJlZC4iXSwKLSAgICAgICAgICAgICAgICAg
WzM5LCAwLCBlX3NSR0JfVHJhbnNwYXJlbnRHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICJU
aGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgZ3JlZW4uIl0sCi0gICAgICAg
ICAgICAgICAgIFswLCAzOSwgZV9zUkdCX1RyYW5zcGFyZW50Qmx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmx1ZS4iXSwK
LSAgICAgICAgICAgICAgICAgWzM5LCAzOSwgZV9zUkdCX1RyYW5zcGFyZW50QmxhY2ssCi0gICAg
ICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHRyYW5zcGFyZW50
IGJsYWNrLiJdLAotICAgICAgICAgICAgICAgICBbNDEsIDQxLCB0cmFuc3BhcmVudEJsYWNrLAot
ICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIHRyYW5zcGFyZW50IGJs
YWNrLiJdXTsKLSAgICBlbHNlIGlmIChjb2xvckluZm8gPT09ICd0cmFuc3BhcmVudC1pbWFnZScp
Ci0gICAgICAgIHRlc3RzID0gW1swLCAwLCBlX3NSR0JfVHJhbnNwYXJlbnRSZWRJbWFnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJl
bnQgcmVkLiJdLAotICAgICAgICAgICAgICAgICBbMzksIDAsIGVfc1JHQl9UcmFuc3BhcmVudEdy
ZWVuSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1z
UkdCIHRyYW5zcGFyZW50IGdyZWVuLiJdLAotICAgICAgICAgICAgICAgICBbMCwgMzksIGVfc1JH
Ql9UcmFuc3BhcmVudEJsdWVJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVs
IHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmx1ZS4iXSwKLSAgICAgICAgICAgICAgICAg
WzM5LCAzOSwgZV9zUkdCX1RyYW5zcGFyZW50QmxhY2tJbWFnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmxhY2suIl0sCi0g
ICAgICAgICAgICAgICAgIFs0MSwgNDEsIHRyYW5zcGFyZW50QmxhY2ssCi0gICAgICAgICAgICAg
ICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAg
IHRlc3RQaXhlbHMoY3R4LCB0ZXN0cywgc291cmNlVHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
Q3JvcChpbWFnZUJpdG1hcCwgY29sb3JJbmZvLCBzb3VyY2VUeXBlKQotewotICAgIHZhciBjYW52
YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMud2lkdGgg
PSA1MDsKLSAgICBjYW52YXMuaGVpZ2h0ID0gNTA7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRD
b250ZXh0KCcyZCcsCi0gICAgICAgIHtjb2xvclNwYWNlOiAnc3JnYicsIHBpeGVsRm9ybWF0Oidm
bG9hdDE2J30pOwotICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMu
aGVpZ2h0KTsKLSAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKLSAgICB2YXIg
dGVzdHM7Ci0gICAgaWYgKGNvbG9ySW5mbyA9PT0gJ2Z1bGxDb2xvcicpCi0gICAgICAgIHRlc3Rz
ID0gW1swLCAwLCBlX3NSR0JfUmVkLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHJlZC4i
XSwKLSAgICAgICAgICAgICAgICAgWzE5LCAwLCBlX3NSR0JfR3JlZW4sICJUaGlzIHBpeGVsIHNo
b3VsZCBiZSBlLXNSR0IgZ3JlZW4uIl0sCi0gICAgICAgICAgICAgICAgIFswLCAxOSwgZV9zUkdC
X0JsdWUsICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgYmx1ZS4iXSwKLSAgICAgICAgICAg
ICAgICAgWzE5LCAxOSwgZV9zUkdCX0JsYWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdC
IGJsYWNrLiJdLAotICAgICAgICAgICAgICAgICBbMjEsIDIxLCB0cmFuc3BhcmVudEJsYWNrLCAi
VGhpcyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVsc2UgaWYg
KGNvbG9ySW5mbyA9PT0gJ29wYXF1ZScpCi0gICAgICAgIHRlc3RzID0gW1swLCAwLCBlX3NSR0Jf
T3BhcXVlUmVkLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUt
c1JHQiBsaWtlIHJlZC4iXSwKLSAgICAgICAgICAgICAgICAgWzE5LCAwLCBlX3NSR0JfT3BhcXVl
R3JlZW4sCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdC
IGxpa2UgZ3JlZW4uIl0sCi0gICAgICAgICAgICAgICAgIFswLCAxOSwgZV9zUkdCX09wYXF1ZUJs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGxp
a2UgYmx1ZS4iXSwKLSAgICAgICAgICAgICAgICAgWzE5LCAxOSwgZV9zUkdCX09wYXF1ZUJsYWNr
LAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiBsaWtl
IGJsYWNrLiJdLAotICAgICAgICAgICAgICAgICBbMjEsIDIxLCB0cmFuc3BhcmVudEJsYWNrLCAi
VGhpcyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVsc2UgaWYg
KGNvbG9ySW5mbyA9PT0gJ3RyYW5zcGFyZW50JykKLSAgICAgICAgdGVzdHMgPSBbWzAsIDAsIGVf
c1JHQl9UcmFuc3BhcmVudFJlZCwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNo
b3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgcmVkLiJdLAotICAgICAgICAgICAgICAgICBbMTks
IDAsIGVfc1JHQl9UcmFuc3BhcmVudEdyZWVuLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMg
cGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiB0cmFuc3BhcmVudCBncmVlbi4iXSwKLSAgICAgICAgICAg
ICAgICAgWzAsIDE5LCBlX3NSR0JfVHJhbnNwYXJlbnRCbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiB0cmFuc3BhcmVudCBibHVlLiJdLAotICAg
ICAgICAgICAgICAgICBbMTksIDE5LCBlX3NSR0JfVHJhbnNwYXJlbnRCbGFjaywKLSAgICAgICAg
ICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmxh
Y2suIl0sCi0gICAgICAgICAgICAgICAgIFsyMSwgMjEsIHRyYW5zcGFyZW50QmxhY2ssCi0gICAg
ICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2su
Il1dOwotICAgIGVsc2UgaWYgKGNvbG9ySW5mbyA9PT0gJ3RyYW5zcGFyZW50LWltYWdlJykKLSAg
ICAgICAgdGVzdHMgPSBbWzAsIDAsIGVfc1JHQl9UcmFuc3BhcmVudFJlZEltYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiB0cmFuc3BhcmVudCBy
ZWQuIl0sCi0gICAgICAgICAgICAgICAgIFsxOSwgMCwgZV9zUkdCX1RyYW5zcGFyZW50R3JlZW5J
bWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0Ig
dHJhbnNwYXJlbnQgZ3JlZW4uIl0sCi0gICAgICAgICAgICAgICAgIFswLCAxOSwgZV9zUkdCX1Ry
YW5zcGFyZW50Qmx1ZUltYWdlLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hv
dWxkIGJlIGUtc1JHQiB0cmFuc3BhcmVudCBibHVlLiJdLAotICAgICAgICAgICAgICAgICBbMTks
IDE5LCBlX3NSR0JfVHJhbnNwYXJlbnRCbGFja0ltYWdlLAotICAgICAgICAgICAgICAgICAgICAg
IlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiB0cmFuc3BhcmVudCBibGFjay4iXSwKLSAgICAg
ICAgICAgICAgICAgWzIxLCAyMSwgdHJhbnNwYXJlbnRCbGFjaywKLSAgICAgICAgICAgICAgICAg
ICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjay4iXV07Ci0gICAgdGVz
dFBpeGVscyhjdHgsIHRlc3RzLCBzb3VyY2VUeXBlKTsKLX0KLQotCi1mdW5jdGlvbiBjb21wYXJl
Qml0bWFwcyhiaXRtYXAxLCBiaXRtYXAyKQotewotICAgIHZhciBjYW52YXMxID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgdmFyIGNhbnZhczIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMxLndpZHRoID0gNTA7Ci0gICAgY2FudmFz
MS5oZWlnaHQgPSA1MDsKLSAgICBjYW52YXMyLndpZHRoID0gNTA7Ci0gICAgY2FudmFzMi5oZWln
aHQgPSA1MDsKLSAgICB2YXIgY3R4MSA9IGNhbnZhczEuZ2V0Q29udGV4dCgnMmQnLAotICAgICAg
ICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAgICB2YXIg
Y3R4MiA9IGNhbnZhczIuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3Ny
Z2InLCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAgICBjdHgxLmNsZWFyUmVjdCgwLCAwLCBj
YW52YXMxLndpZHRoLCBjYW52YXMxLmhlaWdodCk7Ci0gICAgY3R4Mi5jbGVhclJlY3QoMCwgMCwg
Y2FudmFzMi53aWR0aCwgY2FudmFzMi5oZWlnaHQpOwotICAgIGN0eDEuZHJhd0ltYWdlKGJpdG1h
cDEsIDAsIDApOwotICAgIGN0eDIuZHJhd0ltYWdlKGJpdG1hcDIsIDAsIDApOwotICAgIHZhciBk
YXRhMSA9IGN0eDEuZ2V0SW1hZ2VEYXRhKDAsIDAsIDUwLCA1MCkuZGF0YVVuaW9uOwotICAgIHZh
ciBkYXRhMiA9IGN0eDIuZ2V0SW1hZ2VEYXRhKDAsIDAsIDUwLCA1MCkuZGF0YVVuaW9uOwotICAg
IHZhciBkYXRhTWF0Y2hlZCA9IHRydWU7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhMS5s
ZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoZGF0YTFbaV0gIT0gZGF0YTJbaV0pIHsKLSAgICAg
ICAgICAgIGRhdGFNYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLSAgICBhc3NlcnRfZmFsc2UoZGF0YU1hdGNoZWQpOwotfQotCi1mdW5jdGlvbiB0
ZXN0SW1hZ2VCaXRtYXAoc291cmNlLCBjb2xvckluZm8sIHNvdXJjZVR5cGUpCi17Ci0gICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgY3JlYXRlSW1hZ2VCaXRtYXAoc291cmNlLCB7cmVz
aXplV2lkdGg6IDQwLCByZXNpemVIZWlnaHQ6IDQwLCByZXNpemVRdWFsaXR5OiAiaGlnaCJ9KSwK
LSAgICAgICAgY3JlYXRlSW1hZ2VCaXRtYXAoc291cmNlLCB7cmVzaXplV2lkdGg6IDQwLCByZXNp
emVIZWlnaHQ6IDQwLCByZXNpemVRdWFsaXR5OiAibWVkaXVtIn0pLAotICAgICAgICBjcmVhdGVJ
bWFnZUJpdG1hcChzb3VyY2UsIHtyZXNpemVXaWR0aDogNDAsIHJlc2l6ZUhlaWdodDogNDAsIHJl
c2l6ZVF1YWxpdHk6ICJsb3cifSksCi0gICAgICAgIGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwg
e3Jlc2l6ZVdpZHRoOiA0MCwgcmVzaXplSGVpZ2h0OiA0MCwgcmVzaXplUXVhbGl0eTogInBpeGVs
YXRlZCJ9KSwKLSAgICAgICAgY3JlYXRlSW1hZ2VCaXRtYXAoc291cmNlLCA1LCA1LCAxMCwgMTAs
IHsKLSAgICAgICAgICAgIHJlc2l6ZVdpZHRoOiAyMCwgcmVzaXplSGVpZ2h0OiAyMCwgcmVzaXpl
UXVhbGl0eTogImhpZ2gifSksCi0gICAgICAgIGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwgNSwg
NSwgMTAsIDEwLCB7Ci0gICAgICAgICAgICByZXNpemVXaWR0aDogMjAsIHJlc2l6ZUhlaWdodDog
MjAsIHJlc2l6ZVF1YWxpdHk6ICJtZWRpdW0ifSksCi0gICAgICAgIGNyZWF0ZUltYWdlQml0bWFw
KHNvdXJjZSwgNSwgNSwgMTAsIDEwLCB7Ci0gICAgICAgICAgICByZXNpemVXaWR0aDogMjAsIHJl
c2l6ZUhlaWdodDogMjAsIHJlc2l6ZVF1YWxpdHk6ICJsb3cifSksCi0gICAgICAgIGNyZWF0ZUlt
YWdlQml0bWFwKHNvdXJjZSwgNSwgNSwgMTAsIDEwLCB7Ci0gICAgICAgICAgICByZXNpemVXaWR0
aDogMjAsIHJlc2l6ZUhlaWdodDogMjAsIHJlc2l6ZVF1YWxpdHk6ICJwaXhlbGF0ZWQifSksCi0g
ICAgXSkudGhlbigoW25vQ3JvcEhpZ2gsIG5vQ3JvcE1lZGl1bSwgbm9Dcm9wTG93LCBub0Nyb3BQ
aXhlbGF0ZWQsIGNyb3BIaWdoLAotICAgICAgICAgICAgICBjcm9wTWVkaXVtLCBjcm9wTG93LCBj
cm9wUGl4ZWxhdGVkXSkgPT4gewotICAgICAgICBjaGVja05vQ3JvcChub0Nyb3BIaWdoLCBjb2xv
ckluZm8sIHNvdXJjZVR5cGUpOwotICAgICAgICBjaGVja05vQ3JvcChub0Nyb3BNZWRpdW0sIGNv
bG9ySW5mbywgc291cmNlVHlwZSk7Ci0gICAgICAgIGNoZWNrTm9Dcm9wKG5vQ3JvcExvdywgY29s
b3JJbmZvLCBzb3VyY2VUeXBlKTsKLSAgICAgICAgY2hlY2tOb0Nyb3Aobm9Dcm9wUGl4ZWxhdGVk
LCBjb2xvckluZm8sIHNvdXJjZVR5cGUpOwotICAgICAgICBjaGVja0Nyb3AoY3JvcEhpZ2gsIGNv
bG9ySW5mbywgc291cmNlVHlwZSk7Ci0gICAgICAgIGNoZWNrQ3JvcChjcm9wTWVkaXVtLCBjb2xv
ckluZm8sIHNvdXJjZVR5cGUpOwotICAgICAgICBjaGVja0Nyb3AoY3JvcExvdywgY29sb3JJbmZv
LCBzb3VyY2VUeXBlKTsKLSAgICAgICAgY2hlY2tDcm9wKGNyb3BQaXhlbGF0ZWQsIGNvbG9ySW5m
bywgc291cmNlVHlwZSk7Ci0gICAgICAgIC8vIEJydXRlLWZvcmNlIGNvbXBhcmlzb24gYW1vbmcg
YWxsIGJpdG1hcHMgaXMgdG9vIGV4cGVuc2l2ZS4KLSAgICAgICAgLy8gSW4gY2FzZSBvZiBTVkcs
IHJlc2l6ZSBxdWFsaXR5IGRvZXMgbm90IGFmZmVjdCB0aGUgaW1hZ2VzLCBzbyBhbGwKLSAgICAg
ICAgLy8gb2YgdGhlbSBhcmUgdGhlIHNhbWUgYW5kIHRoZSB0ZXN0cyBmYWlsLiBTaW5jZSwgd2Ug
aWdub3JlIHRoaXMgdGVzdAotICAgICAgICAvLyBzZXQgZm9yIFNWRy4KLSAgICAgICAgaWYgKHNv
dXJjZVR5cGUgIT0gJ3N2ZycpIHsKLSAgICAgICAgICAgIGNvbXBhcmVCaXRtYXBzKG5vQ3JvcEhp
Z2gsIG5vQ3JvcE1lZGl1bSk7Ci0gICAgICAgICAgICBjb21wYXJlQml0bWFwcyhub0Nyb3BMb3cs
IG5vQ3JvcFBpeGVsYXRlZCk7Ci0gICAgICAgICAgICBjb21wYXJlQml0bWFwcyhjcm9wSGlnaCwg
Y3JvcE1lZGl1bSk7Ci0gICAgICAgICAgICBjb21wYXJlQml0bWFwcyhjcm9wTG93LCBjcm9wUGl4
ZWxhdGVkKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0SW1hZ2VCaXRt
YXBUcmFuc3BhcmVudChzb3VyY2UpCi17Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcChzb3Vy
Y2UsICd0cmFuc3BhcmVudCcsICdnZW5lcmFsJyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbWFnZUJp
dG1hcEZyb21UcmFuc3BhcmVudEltYWdlKHNvdXJjZSkKLXsKLSAgICByZXR1cm4gdGVzdEltYWdl
Qml0bWFwKHNvdXJjZSwgJ3RyYW5zcGFyZW50LWltYWdlJywgJ2dlbmVyYWwnKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdEltYWdlQml0bWFwVmlkZW9Tb3VyY2Uoc291cmNlKQotewotICAgIHJldHVybiB0
ZXN0SW1hZ2VCaXRtYXAoc291cmNlLCAnZnVsbENvbG9yJywgJ3ZpZGVvJyk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RJbWFnZUJpdG1hcE9wYXF1ZShzb3VyY2UpCi17Ci0gICAgcmV0dXJuIHRlc3RJbWFn
ZUJpdG1hcChzb3VyY2UsICdvcGFxdWUnLCAnZ2VuZXJhbCcpOwotfQotCi1mdW5jdGlvbiB0ZXN0
SW1hZ2VCaXRtYXBGcm9tU1ZHKHNvdXJjZSkKLXsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFw
KHNvdXJjZSwgJ29wYXF1ZScsICdzdmcnKTsKLX0KLQotZnVuY3Rpb24gaW5pdGlhbGl6ZVRlc3RD
YW52YXMoY2FudmFzQ29sb3JTcGFjZSwgY2FudmFzUGl4ZWxGb3JtYXQpCi17Ci0gICAgdmFyIHRl
c3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICB0ZXN0Q2Fu
dmFzLndpZHRoID0gMjA7Ci0gICAgdGVzdENhbnZhcy5oZWlnaHQgPSAyMDsKLSAgICB2YXIgdGVz
dEN0eCA9IHRlc3RDYW52YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTog
Y2FudmFzQ29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQ6Y2FudmFzUGl4ZWxGb3JtYXR9KTsKLSAgICB0
ZXN0Q3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAxKSI7Ci0gICAgdGVzdEN0eC5m
aWxsUmVjdCgwLCAwLCAxMCwgMTApOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcs
IDE1NSwgMjcsIDEpIjsKLSAgICB0ZXN0Q3R4LmZpbGxSZWN0KDEwLCAwLCAxMCwgMTApOwotICAg
IHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAxNTUsIDEpIjsKLSAgICB0ZXN0Q3R4
LmZpbGxSZWN0KDAsIDEwLCAxMCwgMTApOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEo
MjcsIDI3LCAyNywgMSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMTAsIDEwLCAxMCwgMTApOwot
ICAgIHJldHVybiB0ZXN0Q2FudmFzOwotfQotCi1mdW5jdGlvbiBpbml0aWFsaXplVGVzdENhbnZh
c1RyYW5zcGFyZW50KGNhbnZhc0NvbG9yU3BhY2UsIGNhbnZhc1BpeGVsRm9ybWF0KQotewotICAg
IHZhciB0ZXN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAg
dGVzdENhbnZhcy53aWR0aCA9IDIwOwotICAgIHRlc3RDYW52YXMuaGVpZ2h0ID0gMjA7Ci0gICAg
dmFyIHRlc3RDdHggPSB0ZXN0Q2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9y
U3BhY2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7
Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgxNTUsIDI3LCAyNywgMC41KSI7Ci0gICAg
dGVzdEN0eC5maWxsUmVjdCgwLCAwLCAxMCwgMTApOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0g
InJnYmEoMjcsIDE1NSwgMjcsIDAuNSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMTAsIDAsIDEw
LCAxMCk7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDE1NSwgMC41KSI7
Ci0gICAgdGVzdEN0eC5maWxsUmVjdCgwLCAxMCwgMTAsIDEwKTsKLSAgICB0ZXN0Q3R4LmZpbGxT
dHlsZSA9ICJyZ2JhKDI3LCAyNywgMjcsIDAuNSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMTAs
IDEwLCAxMCwgMTApOwotICAgIHJldHVybiB0ZXN0Q2FudmFzOwotfQotCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotCi0vLyBIVE1MSW1hZ2VFbGVtZW50IC0gT3BhcXVlIHNSR0IKLS8vIEZpbGUg
Zm9ybWF0czogQml0bWFwLCBHSUYsIElDTywgSlBFRywgUE5HLCBXRUJQCi1wcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsnYm1wJywgJ2dpZicsICdpY28n
LCAnanBnJywgJ3BuZycsICd3ZWJwJ10ubWFwKAotICAgICAgICBleHQgPT4gbmV3IFByb21pc2Uo
KHJlc29sdmUscmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2Uo
KTsKLSAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHJlc29sdmUoaW1hZ2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW1hZ2Uuc3Jj
ID0gJ3Jlc291cmNlcy9wYXR0ZXJuLXNyZ2IuJyArIGV4dDsKLSAgICAgICAgfSkudGhlbih0ZXN0
SW1hZ2VCaXRtYXBPcGFxdWUpKSk7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZy
b20gYW4gb3BhcXVlIHNSR0IgSFRNTEltYWdlRWxlbWVudCAoQk1QLCBcCi1HSUYsIElDTywgSlBH
LCBQTkcsIFdFQlApIHdpdGggcmVzaXplLicpOwotCi0vLyBIVE1MSW1hZ2VFbGVtZW50IC0gVHJh
bnNwYXJlbnQgc1JHQgotLy8gRmlsZSBmb3JtYXRzOiBCaXRtYXAsIEdJRiwgSUNPLCBQTkcsIFdF
QlAKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWydi
bXAnLCAnaWNvJywgJ3BuZycsICd3ZWJwJ10ubWFwKAotICAgICAgICBleHQgPT4gbmV3IFByb21p
c2UoKHJlc29sdmUscmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKLSAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIHJlc29sdmUoaW1hZ2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW1hZ2Uu
c3JjID0gJ3Jlc291cmNlcy9wYXR0ZXJuLXNyZ2ItdHJhbnNwYXJlbnQuJyArIGV4dDsKLSAgICAg
ICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBGcm9tVHJhbnNwYXJlbnRJbWFnZSkpKTsKLX0sICdj
cmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50IHNSR0IgSFRNTElt
YWdlRWxlbWVudCBcCi0oQk1QLCBJQ08sIFBORywgV0VCUCkgd2l0aCByZXNpemUuJyk7Ci0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIFNWRyBJbWFnZSAtIHNSR0IKLXByb21pc2VfdGVz
dChmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4gewotICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgICAgICAgaW1hZ2Uub25s
b2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXNvbHZlKGltYWdlKTsKLSAgICAgICAg
fQotICAgICAgICBpbWFnZS5zcmMgPSAncmVzb3VyY2VzL3BhdHRlcm4tc3JnYi5zdmcnCi0gICAg
fSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBGcm9tU1ZHKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBp
biBlLXNSR0IgZnJvbSBhIHNSR0IgU1ZHIGltYWdlIHdpdGggcmVzaXplLicpOwotCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotCi0vLyBIVE1MVmlkZW9FbGVtZW50IC0gc1JHQgotcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7Ci0gICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVv
Iik7Ci0gICAgICAgIHZpZGVvLm9uY2FucGxheXRocm91Z2ggPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHJlc29sdmUodmlkZW8pOwotICAgICAgICB9Ci0gICAgICAgIHZpZGVvLnByZWxvYWQg
PSAiYXV0byI7Ci0gICAgICAgIHZpZGVvLnNyYyA9ICdyZXNvdXJjZXMvcGF0dGVybi1zcmdiLWZ1
bGxjb2xvci5vZ3YnCi0gICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBWaWRlb1NvdXJjZSk7Ci19
LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSBzUkdCIEhUTUxWaWRlb0VsZW1l
bnQgd2l0aCByZXNpemUuJyk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIEhUTUxD
YW52YXNFbGVtZW50IC0gT3BhcXVlIHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAg
ICB2YXIgdGVzdENhbnZhcyA9IGluaXRpYWxpemVUZXN0Q2FudmFzKCdzcmdiJywgJ3VpbnQ4Jyk7
Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcE9wYXF1ZSh0ZXN0Q2FudmFzKTsKLX0sICdjcmVh
dGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBIVE1MQ2FudmFzRWxl
bWVudCB3aXRoIHJlc2l6ZS4nKTsKLQotLy8gSFRNTENhbnZhc0VsZW1lbnQgLSBPcGFxdWUgZS1z
UkdCCi1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRlc3RDYW52YXMgPSBpbml0
aWFsaXplVGVzdENhbnZhcygnc3JnYicsICdmbG9hdDE2Jyk7Ci0gICAgcmV0dXJuIHRlc3RJbWFn
ZUJpdG1hcE9wYXF1ZSh0ZXN0Q2FudmFzKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNS
R0IgZnJvbSBhbiBvcGFxdWUgZS1zUkdCIEhUTUxDYW52YXNFbGVtZW50IHdpdGggcmVzaXplLicp
OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBIVE1MQ2FudmFzRWxlbWVudCAtIFRy
YW5zcGFyZW50IHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGVzdENh
bnZhcyA9IGluaXRpYWxpemVUZXN0Q2FudmFzVHJhbnNwYXJlbnQoJ3NyZ2InLCAndWludDgnKTsK
LSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFwVHJhbnNwYXJlbnQodGVzdENhbnZhcyk7Ci19LCAn
Y3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBzUkdCIEhUTUxD
YW52YXNFbGVtZW50IHdpdGggcmVzaXplLicpOwotCi0vLyBIVE1MQ2FudmFzRWxlbWVudCAtIFRy
YW5zcGFyZW50IGUtc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0ZXN0
Q2FudmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXNUcmFuc3BhcmVudCgnc3JnYicsICdmbG9hdDE2
Jyk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcFRyYW5zcGFyZW50KHRlc3RDYW52YXMpOwot
fSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGEgdHJhbnNwYXJlbnQgZS1zUkdC
IEhUTUxDYW52YXNFbGVtZW50IHdpdGggcmVzaXplLicpOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLQotLy8gQmxvYiBmcm9tIGZpbGUgLSBPcGFxdWUgc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKCkgewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0g
ICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9wZW4o
IkdFVCIsICdyZXNvdXJjZXMvcGF0dGVybi1zcmdiLnBuZycpOwotICAgICAgICB4aHIucmVzcG9u
c2VUeXBlID0gJ2Jsb2InOwotICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICB4aHIub25sb2Fk
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXNvbHZlKHhoci5yZXNwb25zZSk7Ci0gICAg
ICAgIH07Ci0gICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpOwotfSwgJ2NyZWF0ZUlt
YWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGFuIG9wYXF1ZSBzUkdCIEJsb2Igd2l0aCByZXNpemUu
Jyk7Ci0KLS8vIEJsb2IgZm9ybSBmaWxlIC0gVHJhbnNwYXJlbnQgc1JHQgotcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7Ci0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhy
Lm9wZW4oIkdFVCIsICdyZXNvdXJjZXMvcGF0dGVybi1zcmdiLXRyYW5zcGFyZW50LnBuZycpOwot
ICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InOwotICAgICAgICB4aHIuc2VuZCgpOwot
ICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXNvbHZlKHho
ci5yZXNwb25zZSk7Ci0gICAgICAgIH07Ci0gICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBGcm9t
VHJhbnNwYXJlbnRJbWFnZSk7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20g
YSB0cmFuc3BhcmVudCBzUkdCIEJsb2Igd2l0aCByZXNpemUuJyk7Ci0KLS8vIENvbG9yIG1hbmFn
ZWQgYmxvYiBmcm9tIGNhbnZhcwotZnVuY3Rpb24gdGVzdENyZWF0ZUltYWdlQml0bWFwRnJvbUNv
bG9yTWFuYWdlZEJsb2IocGl4ZWxGb3JtYXQsIGlzVHJhbnNwYXJlbnQpIHsKLSAgICBsZXQgY2Fu
dmFzUGl4ZWxGb3JtYXQgPSAndWludDgnOwotICAgIGlmIChwaXhlbEZvcm1hdCA9PSAndWludDE2
JykKLSAgICAgICAgY2FudmFzUGl4ZWxGb3JtYXQgPSAnZmxvYXQxNic7Ci0gICAgdmFyIHRlc3RD
YW52YXM7Ci0gICAgaWYgKGlzVHJhbnNwYXJlbnQpCi0gICAgICB0ZXN0Q2FudmFzID0gaW5pdGlh
bGl6ZVRlc3RDYW52YXNUcmFuc3BhcmVudCgnc3JnYicsIGNhbnZhc1BpeGVsRm9ybWF0KTsKLSAg
ICBlbHNlCi0gICAgICB0ZXN0Q2FudmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXMoJ3NyZ2InLCBj
YW52YXNQaXhlbEZvcm1hdCk7Ci0gICAgdmFyIGVuY29kZU9wdGlvbnMgPSB7fTsKLSAgICBlbmNv
ZGVPcHRpb25zLnF1YWxpdHkgPSAxOwotICAgIGVuY29kZU9wdGlvbnMudHlwZSA9ICdpbWFnZS9w
bmcnOwotICAgIGVuY29kZU9wdGlvbnMucGl4ZWxGb3JtYXQgPSBwaXhlbEZvcm1hdDsKLQotICAg
IHZhciB0ID0gYXN5bmNfdGVzdCgnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gY29s
b3IgbWFuYWdlZCBCbG9iJyArCi0gICAgICAgICcgd2l0aCByZXNpemUuIGJsb2JQaXhlbEZvcm1h
dDogJyArIHBpeGVsRm9ybWF0ICsKLSAgICAgICAgJywgdHJhbnNwYXJlbmN5OiAnICsgaXNUcmFu
c3BhcmVudCk7Ci0gICAgdGVzdENhbnZhcy5jb252ZXJ0VG9CbG9iKGVuY29kZU9wdGlvbnMpLnRo
ZW4oCi0gICAgICAgIHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oYmxvYikgewotICAgICAgICAg
ICAgaWYgKGlzVHJhbnNwYXJlbnQpCi0gICAgICAgICAgICAgICAgdGVzdEltYWdlQml0bWFwVHJh
bnNwYXJlbnQoYmxvYik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdElt
YWdlQml0bWFwT3BhcXVlKGJsb2IpOwotICAgICAgICB9KSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkFs
bENyZWF0ZUltYWdlQml0bWFwRnJvbUNvbG9yTWFuYWdlZEJsb2JUZXN0cygpIHsKLSAgICB2YXIg
YmxvYlBpeGVsRm9ybWF0cyA9IFsndWludDgnLCAndWludDE2J107Ci0gICAgdmFyIHRyYW5zcGFy
ZW5jaWVzID0gW2ZhbHNlLCB0cnVlXTsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJsb2JQaXhl
bEZvcm1hdHMubGVuZ3RoOyBqKyspCi0gICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdHJhbnNw
YXJlbmNpZXMubGVuZ3RoOyBrKyspIHsKLSAgICAgICAgICAgIHRlc3RDcmVhdGVJbWFnZUJpdG1h
cEZyb21Db2xvck1hbmFnZWRCbG9iKAotICAgICAgICAgICAgICAgIGJsb2JQaXhlbEZvcm1hdHNb
al0sIHRyYW5zcGFyZW5jaWVzW2tdKTsKLSAgICAgICAgfQotfQotCi1ydW5BbGxDcmVhdGVJbWFn
ZUJpdG1hcEZyb21Db2xvck1hbmFnZWRCbG9iVGVzdHMoKTsKLQotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLQotLy8gSW1hZ2VEYXRhIC0gT3BhcXVlIHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlv
bigpIHsKLSAgICB2YXIgY2FudmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXMoJ3NyZ2InLCAndWlu
dDgnKTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgdmFyIGRh
dGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIwLCAyMCk7Ci0gICAgcmV0dXJuIHRlc3RJbWFn
ZUJpdG1hcE9wYXF1ZShkYXRhKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJv
bSBhbiBvcGFxdWUgc1JHQiBJbWFnZURhdGEgd2l0aCByZXNpemUuJyk7Ci0KLS8vIEltYWdlRGF0
YSAtIE9wYXF1ZSBlLXNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2Fu
dmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXMoJ3NyZ2InLCAnZmxvYXQxNicpOwotICAgIHZhciBj
dHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2In
LCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAgICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURh
dGEoMCwgMCwgMjAsIDIwKTsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFwT3BhcXVlKGRhdGEp
OwotfSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGFuIG9wYXF1ZSBlLXNSR0Ig
SW1hZ2VEYXRhIHdpdGggcmVzaXplLicpOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0v
LyBJbWFnZURhdGEgLSBUcmFuc3BhcmVudCBzUkdCCi1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGNhbnZhcyA9IGluaXRpYWxpemVUZXN0Q2FudmFzVHJhbnNwYXJlbnQoJ3NyZ2In
LCAndWludDgnKTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAg
dmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIwLCAyMCk7Ci0gICAgcmV0dXJuIHRl
c3RJbWFnZUJpdG1hcFRyYW5zcGFyZW50KGRhdGEpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFwIGlu
IGUtc1JHQiBmcm9tIGEgdHJhbnNwYXJlbnQgc1JHQiBJbWFnZURhdGEgd2l0aCByZXNpemUuJyk7
Ci0KLS8vIEltYWdlRGF0YSAtIFRyYW5zcGFyZW50IGUtc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKCkgewotICAgIHZhciBjYW52YXMgPSBpbml0aWFsaXplVGVzdENhbnZhc1RyYW5zcGFyZW50
KCdzcmdiJywgJ2Zsb2F0MTYnKTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJk
JywKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6J2Zsb2F0MTYnfSk7
Ci0gICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIwLCAyMCk7Ci0gICAgcmV0
dXJuIHRlc3RJbWFnZUJpdG1hcFRyYW5zcGFyZW50KGRhdGEpOwotfSwgJ2NyZWF0ZUltYWdlQml0
bWFwIGluIGUtc1JHQiBmcm9tIGEgdHJhbnNwYXJlbnQgZS1zUkdCIEltYWdlRGF0YSB3aXRoIHJl
c2l6ZS4nKTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gSW1hZ2VCaXRtYXAgLSBP
cGFxdWUgc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0ZXN0Q2FudmFz
ID0gaW5pdGlhbGl6ZVRlc3RDYW52YXMoJ3NyZ2InLCAndWludDgnKTsKLSAgICByZXR1cm4gY3Jl
YXRlSW1hZ2VCaXRtYXAodGVzdENhbnZhcykudGhlbih0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpOwot
fSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGFuIG9wYXF1ZSBzUkdCIEltYWdl
Qml0bWFwIHdpdGggcmVzaXplLicpOwotCi0vLyBJbWFnZUJpdG1hcCAtIE9wYXF1ZSBlLXNSR0IK
LXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGVzdENhbnZhcyA9IGluaXRpYWxp
emVUZXN0Q2FudmFzKCdzcmdiJywgJ2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gY3JlYXRlSW1hZ2VC
aXRtYXAodGVzdENhbnZhcykudGhlbih0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpOwotfSwgJ2NyZWF0
ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGFuIG9wYXF1ZSBlLXNSR0IgSW1hZ2VCaXRtYXAg
d2l0aCByZXNpemUuJyk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIEltYWdlQml0
bWFwIC0gVHJhbnNwYXJlbnQgc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZh
ciB0ZXN0Q2FudmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXNUcmFuc3BhcmVudCgnc3JnYicsICd1
aW50OCcpOwotICAgIHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcCh0ZXN0Q2FudmFzKS50aGVuKHRl
c3RJbWFnZUJpdG1hcFRyYW5zcGFyZW50KTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNS
R0IgZnJvbSBhIHRyYW5zcGFyZW50IHNSR0IgSW1hZ2VCaXRtYXAgd2l0aCByZXNpemUuJyk7Ci0K
LS8vIEltYWdlQml0bWFwIC0gVHJhbnNwYXJlbnQgZS1zUkdCCi1wcm9taXNlX3Rlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHRlc3RDYW52YXMgPSBpbml0aWFsaXplVGVzdENhbnZhc1RyYW5zcGFy
ZW50KCdzcmdiJywgJ2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAodGVz
dENhbnZhcykudGhlbih0ZXN0SW1hZ2VCaXRtYXBUcmFuc3BhcmVudCk7Ci19LCAnY3JlYXRlSW1h
Z2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBlLXNSR0IgSW1hZ2VCaXRtYXAg
d2l0aCByZXNpemUuJyk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWZ1bmN0aW9uIGlu
aXRpYWxpemVPZmZzY3JlZW5DYW52YXMoY2FudmFzQ29sb3JTcGFjZSwgY2FudmFzUGl4ZWxGb3Jt
YXQpCi17Ci0gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
OwotICAgIGNhbnZhcy53aWR0aCA9IDIwOwotICAgIGNhbnZhcy5oZWlnaHQgPSAyMDsKLSAgICB2
YXIgb2Zmc2NyZWVuID0gY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7Ci0gICAg
dmFyIGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcsCi0gICAgICAgIHtjb2xvclNwYWNl
OiBjYW52YXNDb2xvclNwYWNlLCBwaXhlbEZvcm1hdDpjYW52YXNQaXhlbEZvcm1hdH0pOwotICAg
IGN0eC5maWxsU3R5bGUgPSAicmdiYSgxNTUsIDI3LCAyNywgMSkiOwotICAgIGN0eC5maWxsUmVj
dCgwLCAwLCAxMCwgMTApOwotICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMTU1LCAyNywg
MSkiOwotICAgIGN0eC5maWxsUmVjdCgxMCwgMCwgMTAsIDEwKTsKLSAgICBjdHguZmlsbFN0eWxl
ID0gInJnYmEoMjcsIDI3LCAxNTUsIDEpIjsKLSAgICBjdHguZmlsbFJlY3QoMCwgMTAsIDEwLCAx
MCk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMjcsIDEpIjsKLSAgICBjdHgu
ZmlsbFJlY3QoMTAsIDEwLCAxMCwgMTApOwotICAgIHJldHVybiBvZmZzY3JlZW47Ci19Ci0KLS8v
T2Zmc2NyZWVuQ2FudmFzIC0gT3BhcXVlIHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsK
LSAgICB2YXIgb2Zmc2NyZWVuID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhcygnc3JnYicsICd1
aW50OCcpOwotICAgIHJldHVybiB0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUob2Zmc2NyZWVuKTsKLX0s
ICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBPZmZzY3Jl
ZW5DYW52YXMgd2l0aCByZXNpemUuJyk7Ci0KLS8vT2Zmc2NyZWVuQ2FudmFzIC0gT3BhcXVlIGUt
c1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBvZmZzY3JlZW4gPSBpbml0
aWFsaXplT2Zmc2NyZWVuQ2FudmFzKCdzcmdiJywgJ2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gdGVz
dEltYWdlQml0bWFwT3BhcXVlKG9mZnNjcmVlbik7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4g
ZS1zUkdCIGZyb20gYW4gb3BhcXVlIGUtc1JHQiBPZmZzY3JlZW5DYW52YXMgd2l0aCByZXNpemUu
Jyk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWZ1bmN0aW9uIGluaXRpYWxpemVPZmZz
Y3JlZW5DYW52YXNUcmFuc3BhcmVudChjYW52YXNDb2xvclNwYWNlLCBjYW52YXNQaXhlbEZvcm1h
dCkKLXsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
Ci0gICAgY2FudmFzLndpZHRoID0gMjA7Ci0gICAgY2FudmFzLmhlaWdodCA9IDIwOwotICAgIHZh
ciBvZmZzY3JlZW4gPSBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4oKTsKLSAgICB2
YXIgY3R4ID0gb2Zmc2NyZWVuLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6
IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAg
Y3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAwLjUpIjsKLSAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTAsIDEwKTsKLSAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1NSwgMjcs
IDAuNSkiOwotICAgIGN0eC5maWxsUmVjdCgxMCwgMCwgMTAsIDEwKTsKLSAgICBjdHguZmlsbFN0
eWxlID0gInJnYmEoMjcsIDI3LCAxNTUsIDAuNSkiOwotICAgIGN0eC5maWxsUmVjdCgwLCAxMCwg
MTAsIDEwKTsKLSAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywgMC41KSI7Ci0g
ICAgY3R4LmZpbGxSZWN0KDEwLCAxMCwgMTAsIDEwKTsKLSAgICByZXR1cm4gb2Zmc2NyZWVuOwot
fQotCi0vL09mZnNjcmVlbkNhbnZhcyAtIFRyYW5zcGFyZW50IHNSR0IKLXByb21pc2VfdGVzdChm
dW5jdGlvbigpIHsKLSAgICB2YXIgb2Zmc2NyZWVuID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZh
c1RyYW5zcGFyZW50KCdzcmdiJywgJ3VpbnQ4Jyk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1h
cFRyYW5zcGFyZW50KG9mZnNjcmVlbik7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdC
IGZyb20gYSB0cmFuc3BhcmVudCBzUkdCIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHJlc2l6ZS4nKTsK
LQotLy9PZmZzY3JlZW5DYW52YXMgLSBUcmFuc3BhcmVudCBlLXNSR0IKLXByb21pc2VfdGVzdChm
dW5jdGlvbigpIHsKLSAgICB2YXIgb2Zmc2NyZWVuID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZh
c1RyYW5zcGFyZW50KCdzcmdiJywgJ2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0
bWFwVHJhbnNwYXJlbnQob2Zmc2NyZWVuKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNS
R0IgZnJvbSBhIHRyYW5zcGFyZW50IGUtc1JHQiBPZmZzY3JlZW5DYW52YXMgd2l0aCByZXNpemUu
Jyk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jcmVhdGVQdXRHZXRJbWFnZURhdGEtY29sb3JNYW5h
Z2VkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
Y2FudmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1jb2xvck1hbmFnZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0
ZVB1dEdldEltYWdlRGF0YS1jb2xvck1hbmFnZWQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
QEAgLTEsMTIgKzAsMCBAQAotCi1GQUlMIFRlc3QgY29sb3IgbWFuYWdlZCBjcmV0YXRlSW1hZ2VE
YXRhOiB7c3JnYiwgdWludDh9IC0+IHtzcmdiLCB1aW50OH0gaW1hZ2VEYXRhLmdldENvbG9yU2V0
dGluZ3MgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3Mo
KScsICdpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncycgaXMgdW5kZWZpbmVkKQotRkFJTCBUZXN0
IGNvbG9yIG1hbmFnZWQgY3JldGF0ZUltYWdlRGF0YToge3NyZ2IsIGZsb2F0MTZ9IC0+IHtzcmdi
LCBmbG9hdDMyfSBpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncyBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygpJywgJ2ltYWdlRGF0YS5nZXRDb2xvclNl
dHRpbmdzJyBpcyB1bmRlZmluZWQpCi1GQUlMIFRlc3QgY29sb3IgbWFuYWdlZCBnZXRJbWFnZURh
dGE6IHtzcmdiLCB1aW50OH0gLT4ge3NyZ2IsIHVpbnQ4fSBpbWFnZURhdGEuZ2V0Q29sb3JTZXR0
aW5ncyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygp
JywgJ2ltYWdlRGF0YS5nZXRDb2xvclNldHRpbmdzJyBpcyB1bmRlZmluZWQpCi1GQUlMIFRlc3Qg
Y29sb3IgbWFuYWdlZCBnZXRJbWFnZURhdGE6IHtzcmdiLCBmbG9hdDE2fSAtPiB7c3JnYiwgZmxv
YXQzMn0gaW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3MgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
aW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3MoKScsICdpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5n
cycgaXMgdW5kZWZpbmVkKQotRkFJTCBUZXN0IGNvbG9yIG1hbmFnZWQgcHV0SW1hZ2VEYXRhOiB7
c3JnYiwgdWludDh9IC0+IHtzcmdiLCB1aW50OH0gVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1m
aW5pdGUKLUZBSUwgVGVzdCBjb2xvciBtYW5hZ2VkIHB1dEltYWdlRGF0YToge3NyZ2IsIHVpbnQ4
fSAtPiB7c3JnYiwgZmxvYXQxNn0gVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUKLUZB
SUwgVGVzdCBjb2xvciBtYW5hZ2VkIHB1dEltYWdlRGF0YToge3NyZ2IsIHVpbnQxNn0gLT4ge3Ny
Z2IsIHVpbnQ4fSBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotRkFJTCBUZXN0IGNv
bG9yIG1hbmFnZWQgcHV0SW1hZ2VEYXRhOiB7c3JnYiwgdWludDE2fSAtPiB7c3JnYiwgZmxvYXQx
Nn0gVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUKLUZBSUwgVGVzdCBjb2xvciBtYW5h
Z2VkIHB1dEltYWdlRGF0YToge3NyZ2IsIGZsb2F0MzJ9IC0+IHtzcmdiLCB1aW50OH0gVGhlIHBy
b3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUKLUZBSUwgVGVzdCBjb2xvciBtYW5hZ2VkIHB1dElt
YWdlRGF0YToge3NyZ2IsIGZsb2F0MzJ9IC0+IHtzcmdiLCBmbG9hdDE2fSBUaGUgcHJvdmlkZWQg
dmFsdWUgaXMgbm9uLWZpbml0ZQotCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2Fu
dmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1jb2xvck1hbmFnZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1j
b2xvck1hbmFnZWQuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQt
Y2FudmFzL2NhbnZhcy1jcmVhdGVQdXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2VkLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxNDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08Ym9keT4KLTxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci0KLXZhciB4V2lkdGggPSB4SGVpZ2h0ID0gMTA7Ci0KLWZ1bmN0aW9uIGNoZWNrSW1hZ2VEYXRh
KGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSkgewotICB2YXIgaW1hZ2VEYXRhQ29sb3JT
ZXR0aW5ncyA9IGltYWdlRGF0YS5nZXRDb2xvclNldHRpbmdzKCk7Ci0gIGFzc2VydF9lcXVhbHMo
Y2FudmFzQ29sb3JTZXR0aW5ncy5jb2xvclNwYWNlLCBpbWFnZURhdGFDb2xvclNldHRpbmdzLmNv
bG9yU3BhY2UpOwotICBpZiAoY2FudmFzQ29sb3JTZXR0aW5ncy5waXhlbEZvcm1hdCA9PSAidWlu
dDgiKSB7Ci0gICAgYXNzZXJ0X2VxdWFscygidWludDgiLCBpbWFnZURhdGFDb2xvclNldHRpbmdz
LnN0b3JhZ2VGb3JtYXQpOwotICAgIGFzc2VydF9lcXVhbHMoaW1hZ2VEYXRhLmRhdGEubGVuZ3Ro
LCA0ICogeFdpZHRoICogeEhlaWdodCk7Ci0gIH0gZWxzZSB7Ci0gICAgYXNzZXJ0X2VxdWFscygi
ZmxvYXQzMiIsIGltYWdlRGF0YUNvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhpbWFnZURhdGEuZGF0YVVuaW9uLmxlbmd0aCwgNCAqIHhXaWR0aCAqIHhIZWln
aHQpOwotICB9Ci19Ci0KLS8vIFRlc3QgY3JlYXRlSW1hZ2VEYXRhIHdoZW4gdGhlIGNhbnZhcyBp
cyBjb2xvciBtYW5hZ2VkCi12YXIgaGVscGVySW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YSh4V2lk
dGgsIHhIZWlnaHQpOwotZnVuY3Rpb24gcnVuVGVzdENyZWF0ZUltYWdlRGF0YShjYW52YXNDb2xv
clNldHRpbmdzKSB7Ci0gIHZhciBhQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7Ci0gIGFDYW52YXMud2lkdGggPSB4V2lkdGg7Ci0gIGFDYW52YXMuaGVpZ2h0ID0geEhl
aWdodDsKLSAgdmFyIGN0eCA9IGFDYW52YXMuZ2V0Q29udGV4dCgnMmQnLCBjYW52YXNDb2xvclNl
dHRpbmdzKTsKLSAgdmFyIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoeFdpZHRoLCB4
SGVpZ2h0KTsKLSAgY2hlY2tJbWFnZURhdGEoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRh
KTsKLQotICBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKGhlbHBlckltYWdlRGF0YSk7
Ci0gIGNoZWNrSW1hZ2VEYXRhKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSk7Ci19Ci0K
LXZhciB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhID0gWwotICBbIlRlc3QgY29sb3IgbWFu
YWdlZCBjcmV0YXRlSW1hZ2VEYXRhOiB7c3JnYiwgdWludDh9IC0+IHtzcmdiLCB1aW50OH0iLAot
ICAgICAge2NvbG9yU3BhY2U6ICJzcmdiIiwgcGl4ZWxGb3JtYXQ6ICJ1aW50OCJ9XSwKLSAgWyJU
ZXN0IGNvbG9yIG1hbmFnZWQgY3JldGF0ZUltYWdlRGF0YToge3NyZ2IsIGZsb2F0MTZ9IC0+IHtz
cmdiLCBmbG9hdDMyfSIsCi0gICAgICB7Y29sb3JTcGFjZTogInNyZ2IiLCBwaXhlbEZvcm1hdDog
ImZsb2F0MTYifV0sCi1dOwotCi1mdW5jdGlvbiBydW5DcmVhdGVJbWFnZURhdGFUZXN0cygpIHsK
LSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhLmxlbmd0
aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0Q3Jl
YXRlSW1hZ2VEYXRhKHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFbaV1bMV0pOwotICAgIH0s
IHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFbaV1bMF0pOwotICB9Ci19Ci1ydW5DcmVhdGVJ
bWFnZURhdGFUZXN0cygpOwotCi0vLyBUZXN0IGdldEltYWdlRGF0YSB3aGVuIHRoZSBjYW52YXMg
aXMgY29sb3IgbWFuYWdlZAotZnVuY3Rpb24gcnVuVGVzdEdldEltYWdlRGF0YShjYW52YXNDb2xv
clNldHRpbmdzKSB7Ci0gIHZhciBhQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7Ci0gIGFDYW52YXMud2lkdGggPSB4V2lkdGg7Ci0gIGFDYW52YXMuaGVpZ2h0ID0geEhl
aWdodDsKLSAgdmFyIGN0eCA9IGFDYW52YXMuZ2V0Q29udGV4dCgnMmQnLCBjYW52YXNDb2xvclNl
dHRpbmdzKTsKLSAgdmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgeFdpZHRo
LCB4SGVpZ2h0KTsKLSAgY2hlY2tJbWFnZURhdGEoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VE
YXRhKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJpb3NHZXRJbWFnZURhdGEgPSBbCi0gIFsiVGVzdCBj
b2xvciBtYW5hZ2VkIGdldEltYWdlRGF0YToge3NyZ2IsIHVpbnQ4fSAtPiB7c3JnYiwgdWludDh9
IiwKLSAgICAgIHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0OiAidWludDgifV0sCi0g
IFsiVGVzdCBjb2xvciBtYW5hZ2VkIGdldEltYWdlRGF0YToge3NyZ2IsIGZsb2F0MTZ9IC0+IHtz
cmdiLCBmbG9hdDMyfSIsCi0gICAgICB7Y29sb3JTcGFjZTogInNyZ2IiLCBwaXhlbEZvcm1hdDog
ImZsb2F0MTYifV0sCi1dOwotCi1mdW5jdGlvbiBydW5HZXRJbWFnZURhdGFUZXN0cygpIHsKLSAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zR2V0SW1hZ2VEYXRhLmxlbmd0aDsgaSsr
KXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0R2V0SW1hZ2VE
YXRhKHRlc3RTY2VuYXJpb3NHZXRJbWFnZURhdGFbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJp
b3NHZXRJbWFnZURhdGFbaV1bMF0pOwotICB9Ci19Ci1ydW5HZXRJbWFnZURhdGFUZXN0cygpOwot
Ci0vLyBUZXN0IHB1dEltYWdlRGF0YSB3aGVuIHRoZSBjYW52YXMgaXMgY29sb3IgbWFuYWdlZC4K
LQotdmFyIGRhdGFVOCA9IG5ldyBVaW50OENsYW1wZWRBcnJheSg0ICogeFdpZHRoICogeEhlaWdo
dCk7Ci12YXIgZGF0YVUxNiA9IG5ldyBVaW50MTZBcnJheSg0ICogeFdpZHRoICogeEhlaWdodCk7
Ci12YXIgZGF0YUYzMiA9IG5ldyBGbG9hdDMyQXJyYXkoNCAqIHhXaWR0aCAqIHhIZWlnaHQpOwot
ZnVuY3Rpb24gcHJlcGFyZURhdGFBcnJheXMoKSB7Ci0gIGZvciAoaSA9IDA7IGkgPCA0ICogeFdp
ZHRoICogeEhlaWdodDsgaSsrKSB7Ci0gICAgZGF0YVU4W2ldID0gKGkgJSA0ID09IDMpID8gMjU1
IDogaSAlIDI1NjsKLSAgICBkYXRhVTE2W2ldID0gZGF0YVU4W2ldICogMjU3OwotICAgIGRhdGFG
MzJbaV0gPSBkYXRhVThbaV0gLyAyNTUuMDsKLSAgfQotfQotCi12YXIgdGVzdFNjZW5hcmlvc1B1
dEltYWdlRGF0YSA9IFtdOwotZnVuY3Rpb24gcHJlcGFyZVRlc3RTY2VuYXJpb3NQdXRJbWFnZURh
dGEoKSB7Ci0gIHZhciBjb2xvclNwYWNlcyA9IFsic3JnYiJdOwotICB2YXIgaW1hZ2VEYXRhU3Rv
cmFnZUZvcm1hdHMgPSBbInVpbnQ4IiwgInVpbnQxNiIsICJmbG9hdDMyIl07Ci0gIHZhciBjYW52
YXNQaXhlbEZvcm1hdHMgPSBbInVpbnQ4IiwgImZsb2F0MTYiXTsKLQotICBmb3IgKGkgPSAwOyBp
IDwgY29sb3JTcGFjZXMubGVuZ3RoOyBpKyspCi0gICAgZm9yIChqID0gMDsgaiA8IGltYWdlRGF0
YVN0b3JhZ2VGb3JtYXRzLmxlbmd0aDsgaisrKQotICAgICAgZm9yIChrID0gMDsgayA8IGNvbG9y
U3BhY2VzLmxlbmd0aDsgaysrKQotICAgICAgICBmb3IgKGwgPSAwOyBsIDwgY2FudmFzUGl4ZWxG
b3JtYXRzLmxlbmd0aDsgbCsrKSB7Ci0gICAgICAgICAgdGVzdFRpdGxlID0gIlRlc3QgY29sb3Ig
bWFuYWdlZCBwdXRJbWFnZURhdGE6ICIuY29uY2F0KAotICAgICAgICAgICAgInsiLCBjb2xvclNw
YWNlc1tpXSwgIiwgIiwgaW1hZ2VEYXRhU3RvcmFnZUZvcm1hdHNbal0sICJ9IC0+IHsiLCBjb2xv
clNwYWNlc1trXSwKLSAgICAgICAgICAgICIsICIsIGNhbnZhc1BpeGVsRm9ybWF0c1tsXSwgIn0i
KTsKLSAgICAgICAgICBpbWFnZURhdGFDb2xvclNldHRpbmdzID0KLSAgICAgICAgICAgIHtjb2xv
clNwYWNlOiBjb2xvclNwYWNlc1tpXSwgc3RvcmFnZUZvcm1hdDogaW1hZ2VEYXRhU3RvcmFnZUZv
cm1hdHNbal19OwotICAgICAgICAgIGNhbnZhc0NvbG9yU2V0dGluZ3MgPQotICAgICAgICAgICAg
e2NvbG9yU3BhY2U6IGNvbG9yU3BhY2VzW2tdLCBwaXhlbEZvcm1hdDogY2FudmFzUGl4ZWxGb3Jt
YXRzW2xdfTsKLSAgICAgICAgICB0ZXN0U2NlbmFyaW9zUHV0SW1hZ2VEYXRhLnB1c2goW3Rlc3RU
aXRsZSwgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncywgY2FudmFzQ29sb3JTZXR0aW5nc10pOwotICAg
ICAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFB1dEltYWdlRGF0YShkYXRhLCBpbWFnZURh
dGFDb2xvclNldHRpbmdzLCBjYW52YXNDb2xvclNldHRpbmdzKSB7Ci0gIC8vIGNyZWF0ZSBjb2xv
ciBtYW5hZ2VkIGNhbnZhcwotICB2YXIgYUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOwotICBhQ2FudmFzLndpZHRoID0geFdpZHRoOwotICBhQ2FudmFzLmhlaWdodCA9
IHhIZWlnaHQ7Ci0gIHZhciBjdHggPSBhQ2FudmFzLmdldENvbnRleHQoJzJkJywgY2FudmFzQ29s
b3JTZXR0aW5ncyk7Ci0gIC8vIGNyZWF0ZSBjb2xvciBtYW5hZ2VkIEltYWdlRGF0YQotICB2YXIg
aW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YShkYXRhLCB4V2lkdGgsIHhIZWlnaHQsIGlt
YWdlRGF0YUNvbG9yU2V0dGluZ3MpOwotICAvLyBwdXQgaW1hZ2UgZGF0YSBpbnRvIGNhbnZhcy4g
dGVzdCBzdWNjZWVkcyBpZiB0aGlzIGRvZXMgbm90IGNyYXNoLgotICBjdHgucHV0SW1hZ2VEYXRh
KGltYWdlRGF0YSwgMCwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RQdXRJbWFnZURhdGEoaW1h
Z2VEYXRhQ29sb3JTZXR0aW5ncywgY2FudmFzQ29sb3JTZXR0aW5ncykgewotICBjcmVhdGVBbmRQ
dXRJbWFnZURhdGEoZGF0YVU4LCBpbWFnZURhdGFDb2xvclNldHRpbmdzLCBjYW52YXNDb2xvclNl
dHRpbmdzKTsKLSAgY3JlYXRlQW5kUHV0SW1hZ2VEYXRhKGRhdGFVMTYsIGltYWdlRGF0YUNvbG9y
U2V0dGluZ3MsIGNhbnZhc0NvbG9yU2V0dGluZ3MpOwotICBjcmVhdGVBbmRQdXRJbWFnZURhdGEo
ZGF0YUYzMiwgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncywgY2FudmFzQ29sb3JTZXR0aW5ncyk7Ci19
Ci0KLXByZXBhcmVEYXRhQXJyYXlzKCk7Ci1wcmVwYXJlVGVzdFNjZW5hcmlvc1B1dEltYWdlRGF0
YSgpOwotCi1mdW5jdGlvbiBydW5QdXRJbWFnZURhdGFUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0ZXN0U2NlbmFyaW9zUHV0SW1hZ2VEYXRhLmxlbmd0aDsgaSsrKXsKLSAgICB2YXIg
dCA9IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0UHV0SW1hZ2VEYXRhKHRlc3RTY2Vu
YXJpb3NQdXRJbWFnZURhdGFbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NQdXRJbWFnZURh
dGFbaV1bMF0pOwotICB9Ci19Ci1ydW5QdXRJbWFnZURhdGFUZXN0cygpOwotCi08L3NjcmlwdD4K
LTwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdo
LWJpdC1kZXB0aC1pbWFnZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJpdC1kZXB0aC1pbWFnZXMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFz
LWRyYXctaGlnaC1iaXQtZGVwdGgtaW1hZ2VzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQzICswLDAgQEAKLQotUEFTUyBPdmVyYWxsIHRlc3QKLUZBSUwgQ2FudmFzIGNvbG9yIHBh
cmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfc1JHQl9vcGFxdWUucG5nIHZzIDJ4
Ml8xNmJpdF9zUkdCX29wYXF1ZS5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1
aW50OC4gVGVzdGluZyAyeDJfOGJpdF9zUkdCX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X2ludGVy
bGFjZWRfc1JHQl9vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWlu
dDguIFRlc3RpbmcgMngyXzhiaXRfc1JHQl90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X3NS
R0JfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDgu
IFRlc3RpbmcgMngyXzhiaXRfc1JHQl90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X2ludGVy
bGFjZWRfc1JHQl90cmFuc3BhcmVudC5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdi
LCB1aW50OC4gVGVzdGluZyAyeDJfOGJpdF9BZG9iZVJHQl9vcGFxdWUucG5nIHZzIDJ4Ml8xNmJp
dF9BZG9iZVJHQl9vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWlu
dDguIFRlc3RpbmcgMngyXzhiaXRfQWRvYmVSR0Jfb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfaW50
ZXJsYWNlZF9BZG9iZVJHQl9vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3Jn
YiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfQWRvYmVSR0JfdHJhbnNwYXJlbnQucG5nIHZzIDJ4
Ml8xNmJpdF9BZG9iZVJHQl90cmFuc3BhcmVudC5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1z
OiBzcmdiLCB1aW50OC4gVGVzdGluZyAyeDJfOGJpdF9BZG9iZVJHQl90cmFuc3BhcmVudC5wbmcg
dnMgMngyXzE2Yml0X2ludGVybGFjZWRfQWRvYmVSR0JfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2Fu
dmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAz
X29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X0Rpc3BsYXlQM19vcGFxdWUucG5nIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFz
IGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX29w
YXF1ZS5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFjZWRfRGlzcGxheVAzX29wYXF1ZS5wbmcgdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKQotRkFJ
TCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50OC4gVGVzdGluZyAyeDJfOGJpdF9EaXNw
bGF5UDNfdHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9EaXNwbGF5UDNfdHJhbnNwYXJlbnQu
cG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3Ro
JykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhi
aXRfRGlzcGxheVAzX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9EaXNw
bGF5UDNfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWlu
dDguIFRlc3RpbmcgMngyXzhiaXRfUHJvUGhvdG9fb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfUHJv
UGhvdG9fb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
YWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4LiBU
ZXN0aW5nIDJ4Ml84Yml0X1Byb1Bob3RvX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFj
ZWRfUHJvUGhvdG9fb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVp
bnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1Byb1Bob3RvX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZi
aXRfUHJvUGhvdG9fdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3Jn
YiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfUHJvUGhvdG9fdHJhbnNwYXJlbnQucG5nIHZzIDJ4
Ml8xNmJpdF9pbnRlcmxhY2VkX1Byb1Bob3RvX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBj
b2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1JlYzIwMjBfb3BhcXVl
LnBuZyB2cyAyeDJfMTZiaXRfUmVjMjAyMF9vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBh
cmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfUmVjMjAyMF9vcGFxdWUucG5nIHZz
IDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX1JlYzIwMjBfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xv
ciBwYXJhbXM6IHNyZ2IsIHVpbnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1JlYzIwMjBfdHJhbnNwYXJl
bnQucG5nIHZzIDJ4Ml8xNmJpdF9SZWMyMDIwX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBj
b2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1JlYzIwMjBfdHJhbnNw
YXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX1JlYzIwMjBfdHJhbnNwYXJlbnQucG5n
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykK
LUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJp
dF9zUkdCX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X3NSR0Jfb3BhcXVlLnBuZyB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZh
cyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfc1JHQl9vcGFx
dWUucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX3NSR0Jfb3BhcXVlLnBuZyB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZh
cyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfc1JHQl90cmFu
c3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X3NSR0JfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFz
IGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9zUkdCX3RyYW5z
cGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9zUkdCX3RyYW5zcGFyZW50LnBuZyB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1G
QUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRf
QWRvYmVSR0Jfb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfQWRvYmVSR0Jfb3BhcXVlLnBuZyB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlM
IENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfQWRv
YmVSR0Jfb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9BZG9iZVJHQl9vcGFxdWUu
cG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3Ro
JykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJf
OGJpdF9BZG9iZVJHQl90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X0Fkb2JlUkdCX3RyYW5z
cGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFs
Lmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3Rp
bmcgMngyXzhiaXRfQWRvYmVSR0JfdHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxh
Y2VkX0Fkb2JlUkdCX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNy
Z2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX29wYXF1ZS5wbmcgdnMgMngy
XzE2Yml0X0Rpc3BsYXlQM19vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3Jn
YiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9EaXNwbGF5UDNfb3BhcXVlLnBuZyB2cyAyeDJf
MTZiaXRfaW50ZXJsYWNlZF9EaXNwbGF5UDNfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBw
YXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX3RyYW5zcGFy
ZW50LnBuZyB2cyAyeDJfMTZiaXRfRGlzcGxheVAzX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZh
cyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAz
X3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9EaXNwbGF5UDNfdHJhbnNw
YXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwu
bGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGlu
ZyAyeDJfOGJpdF9Qcm9QaG90b19vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9Qcm9QaG90b19vcGFx
dWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVu
Z3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAy
eDJfOGJpdF9Qcm9QaG90b19vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX1Byb1Bo
b3RvX29wYXF1ZS5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2Fj
dHVhbC5sZW5ndGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCBmbG9hdDE2LiBU
ZXN0aW5nIDJ4Ml84Yml0X1Byb1Bob3RvX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfUHJv
UGhvdG9fdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxv
YXQxNi4gVGVzdGluZyAyeDJfOGJpdF9Qcm9QaG90b190cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2
Yml0X2ludGVybGFjZWRfUHJvUGhvdG9fdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9y
IHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9SZWMyMDIwX29wYXF1ZS5w
bmcgdnMgMngyXzE2Yml0X1JlYzIwMjBfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJh
bXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfUmVjMjAyMF9vcGFxdWUucG5nIHZz
IDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX1JlYzIwMjBfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xv
ciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfUmVjMjAyMF90cmFuc3Bh
cmVudC5wbmcgdnMgMngyXzE2Yml0X1JlYzIwMjBfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFz
IGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9SZWMyMDIwX3Ry
YW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9SZWMyMDIwX3RyYW5zcGFyZW50
LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0
aCcpCi0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJp
dC1kZXB0aC1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52
YXMvY2FudmFzLWRyYXctaGlnaC1iaXQtZGVwdGgtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDI3Njcx
NikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJpdC1kZXB0
aC1pbWFnZXMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDExMSArMCwwIEBACi08IURPQ1RZUEUg
SFRNTD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci0KLXZhciB0ZXN0SW1hZ2VzUGF0aCA9ICJyZXNvdXJjZXMvcG5nLTE2Yml0LyI7
Ci0KLS8vIFNvdXJjZSBvZiBwaXhlbCBjb21wYXJpc29uIGVycm9yIGluIHRoZXNlIHRlc3RzOgot
Ly8gLSBjb2xvciBjb252ZXJzaW9uIGZyb20gZGlmZmVyZW50IGNvbG9yIHByb2ZpbGVzIChzUkdC
LCBBZG9iZSBSR0IsIERpc3BsYXkgUDMsCi0vLyAgIFByb1Bob3RvIGFuZCBSZWMgMjAyMCkgdG8g
dGFyZ2V0IGNhbnZhcyBjb2xvciBzcGFjZSAoc1JHQiwgZS1zUkdCKS4KLS8vIC0gY29tcGFyaW5n
IHRoZSByZXN1bHQgb2YgZHJhd2luZyA4IGJpdCBhbmQgMTYgYml0IFBOR3Mgd2l0aCBlYWNoIG90
aGVyLgotdmFyIGRlZmF1bHRDb2xvckNvbnZlcnNpb25Ub2xlcmFuY2UgPSA4OwotdmFyIHdpZGVH
YW11dENvbG9yQ29udmVyc2lvblRvbGVyYW5jZSA9IDAuMDU7Ci0KLWZ1bmN0aW9uIHJ1blRlc3Qo
dGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFyIF84Yml0SW1hZ2VTcmMgPSB0ZXN0SW1hZ2VzUGF0aCAr
IHRlc3RTY2VuYXJpby5fOGJpdEltYWdlUGF0aDsKLSAgICB2YXIgXzE2Yml0SW1hZ2VTcmMgPSB0
ZXN0SW1hZ2VzUGF0aCArIHRlc3RTY2VuYXJpby5fMTZiaXRJbWFnZVBhdGg7Ci0gICAgdmFyIHRv
bGVyYW5jZSA9IGRlZmF1bHRDb2xvckNvbnZlcnNpb25Ub2xlcmFuY2U7Ci0gICAgaWYgKHRlc3RT
Y2VuYXJpby5jYW52YXNDb2xvclBhcmFtcy5waXhlbEZvcm1hdCA9PSAnZmxvYXQxNicpCi0gICAg
ICAgIHRvbGVyYW5jZSA9IHdpZGVHYW11dENvbG9yQ29udmVyc2lvblRvbGVyYW5jZTsKLQotICAg
IHZhciBfOGJpdEltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAgdmFyIF8xNmJpdEltYWdlID0gbmV3
IEltYWdlKCk7Ci0gICAgdmFyIHRfaW1hZ2UgPSBhc3luY190ZXN0KHRlc3RTY2VuYXJpb1RvU3Ry
aW5nKHRlc3RTY2VuYXJpbykpOwotICAgIF84Yml0SW1hZ2Uub25sb2FkID0gdF9pbWFnZS5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIF8xNmJpdEltYWdlLm9ubG9hZCA9IHRfaW1hZ2Uu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHJlZkNhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAgICAgICAgcmVmQ2FudmFzLndpZHRo
ID0gcmVmQ2FudmFzLmhlaWdodCA9IDI7Ci0gICAgICAgICAgICB2YXIgcmVmQ3R4ID0gcmVmQ2Fu
dmFzLmdldENvbnRleHQoCi0gICAgICAgICAgICAgICAgJzJkJywgdGVzdFNjZW5hcmlvLmNhbnZh
c0NvbG9yUGFyYW1zKTsKLSAgICAgICAgICAgIHJlZkN0eC5kcmF3SW1hZ2UoXzhiaXRJbWFnZSwg
MCwgMCk7Ci0gICAgICAgICAgICB2YXIgcmVmUGl4ZWxzID0gcmVmQ3R4LmdldEltYWdlRGF0YSgw
LCAwLCAyLCAyKS5kYXRhVW5pb247Ci0KLSAgICAgICAgICAgIHZhciB0ZXN0Q2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgICAgICB0ZXN0Q2FudmFzLndp
ZHRoID0gdGVzdENhbnZhcy5oZWlnaHQgPSAyOwotICAgICAgICAgICAgdmFyIHRlc3RDdHggPSB0
ZXN0Q2FudmFzLmdldENvbnRleHQoCi0gICAgICAgICAgICAgICAgJzJkJywgdGVzdFNjZW5hcmlv
LmNhbnZhc0NvbG9yUGFyYW1zKTsKLSAgICAgICAgICAgIHRlc3RDdHguZHJhd0ltYWdlKF8xNmJp
dEltYWdlLCAwLCAwKTsKLSAgICAgICAgICAgIHZhciB0ZXN0UGl4ZWxzID0gdGVzdEN0eC5nZXRJ
bWFnZURhdGEoMCwgMCwgMiwgMikuZGF0YVVuaW9uOwotCi0gICAgICAgICAgICBhc3NlcnRfYXJy
YXlfYXBwcm94X2VxdWFscyhyZWZQaXhlbHMsIHRlc3RQaXhlbHMsIHRvbGVyYW5jZSk7Ci0KLSAg
ICAgICAgICAgIHRfaW1hZ2UuZG9uZSgpOwotICAgICAgICB9KTsKLSAgICAgICAgXzE2Yml0SW1h
Z2Uuc3JjID0gXzE2Yml0SW1hZ2VTcmM7Ci0gICAgfSk7Ci0gICAgXzhiaXRJbWFnZS5zcmMgPSBf
OGJpdEltYWdlU3JjOwotfQotCi1mdW5jdGlvbiBydW5BbGxUZXN0cygpIHsKLSAgICB2YXIgcG5n
Q29sb3JTcGFjZXMgPSBbCi0gICAgICAgICJfc1JHQiIsCi0gICAgICAgICJfQWRvYmVSR0IiLAot
ICAgICAgICAiX0Rpc3BsYXlQMyIsCi0gICAgICAgICJfUHJvUGhvdG8iLAotICAgICAgICAiX1Jl
YzIwMjAiLAotICAgIF07Ci0gICAgdmFyIHBuZ1RyYW5zcGFyZW5jeVN0YXR1cyA9IFsKLSAgICAg
ICAgIl9vcGFxdWUiLAotICAgICAgICAiX3RyYW5zcGFyZW50IiwKLSAgICBdOwotICAgIHZhciBw
bmdJbnRlcmxhY2VTdGF0dXMgPSBbCi0gICAgICAgICIiLCAgLy8gbm9uLWludGVybGFjZWQKLSAg
ICAgICAgIl9pbnRlcmxhY2VkIiwKLSAgICBdOwotCi0KLSAgICB2YXIgXzhiaXRQbmdQcmVmaXgg
PSAiMngyXzhiaXQiOwotICAgIHZhciBfMTZiaXRQbmdQcmVmaXggPSAiMngyXzE2Yml0IjsKLQot
ICAgIHZhciBjYW52YXNDb2xvclBhcmFtcyA9IFsKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdi
JywgcGl4ZWxGb3JtYXQ6ICd1aW50OCd9LAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBw
aXhlbEZvcm1hdDogJ2Zsb2F0MTYnfSwKLSAgICBdOwotCi0gICAgdmFyIHRlc3RTY2VuYXJpb1Nl
dCA9IFtdOwotICAgIHZhciBpZCA9IDE7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYW52YXND
b2xvclBhcmFtcy5sZW5ndGg7IGkrKykgewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBu
Z0NvbG9yU3BhY2VzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsg
ayA8IHBuZ1RyYW5zcGFyZW5jeVN0YXR1cy5sZW5ndGg7IGsrKykgewotICAgICAgICAgICAgICAg
IGZvciAodmFyIG0gPSAwOyBtIDwgcG5nSW50ZXJsYWNlU3RhdHVzLmxlbmd0aDsgbSsrKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciB0ZXN0U2NlbmFyaW8gPSB7fTsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yUGFyYW1zID0gY2FudmFzQ29sb3JQYXJhbXNb
aV07Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5fOGJpdEltYWdlUGF0aCA9IF84
Yml0UG5nUHJlZml4ICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBuZ0NvbG9yU3BhY2VzW2pd
ICsgcG5nVHJhbnNwYXJlbmN5U3RhdHVzW2tdICsgIi5wbmciOwotICAgICAgICAgICAgICAgICAg
ICB0ZXN0U2NlbmFyaW8uXzE2Yml0SW1hZ2VQYXRoID0gXzE2Yml0UG5nUHJlZml4ICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHBuZ0ludGVybGFjZVN0YXR1c1ttXSArIHBuZ0NvbG9yU3BhY2Vz
W2pdICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBuZ1RyYW5zcGFyZW5jeVN0YXR1c1trXSAr
ICIucG5nIjsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvU2V0LnB1c2godGVzdFNj
ZW5hcmlvKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RTY2VuYXJpb1NldC5sZW5ndGg7IGkr
KykKLSAgICAgICAgcnVuVGVzdCh0ZXN0U2NlbmFyaW9TZXRbaV0pOwotfQotCi1mdW5jdGlvbiB0
ZXN0U2NlbmFyaW9Ub1N0cmluZyh0ZXN0U2NlbmFyaW8pIHsKLSAgICB2YXIgc3RyID0gIkNhbnZh
cyBjb2xvciBwYXJhbXM6ICIgKwotICAgICAgICB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJh
bXMuY29sb3JTcGFjZSArICIsICIgKwotICAgICAgICB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQ
YXJhbXMucGl4ZWxGb3JtYXQgKyAiLiBUZXN0aW5nICIgKwotICAgICAgICB0ZXN0U2NlbmFyaW8u
XzhiaXRJbWFnZVBhdGggKyAiIHZzICIgKyB0ZXN0U2NlbmFyaW8uXzE2Yml0SW1hZ2VQYXRoOwot
ICAgIHJldHVybiBzdHI7Ci19Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgcnVuQWxsVGVzdHMo
KTsKLX0sICJPdmVyYWxsIHRlc3QiKTsKLQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1lX3NyZ2ItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWVfc3JnYi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy9jYW52YXMtZHJhd0ltYWdlLWVfc3JnYi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAt
MSwzICswLDAgQEAKLQotRkFJTCBEcmF3IFNSR0IgaW1hZ2Ugb24gYW4gZS1zUkdCIGNhbnZhcyBh
bmQgcmVhZCBiYWNrIHRoZSBlLXNSR0IgcGl4ZWxzLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykiCi0KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93
aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWVfc3JnYi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWVfc3JnYi5odG1s
CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRy
YXdJbWFnZS1lX3NyZ2IuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDUzICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLQotLy8gc1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9UcmFu
c3BhcmVudFJlZCA9IFswLjg4NjIzMCwgMC4xMjE1MjEsIDAuMTIxNTIxLCAwLjUwMTk1M107Ci0v
LyBzUkdCKDIyNiwzMSwzMSwxMjgpCi12YXIgZV9zUkdCX1RyYW5zcGFyZW50R3JlZW4gPSBbMC4x
MjE1MjEsIDAuODg2MjMwLCAwLjEyMTUyMSwgMC41MDE5NTNdOwotLy8gc1JHQigyMjYsMzEsMzEs
MTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEJsdWUgPSBbMC4xMjE1MjEsIDAuMTIxNTIxLCAw
Ljg4NjIzMCwgMC41MDE5NTNdOwotLy8gc1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9U
cmFuc3BhcmVudEJsYWNrID0gWzAuMTIxNTIxLCAwLjEyMTUyMSwgMC4xMjE1MjEsIDAuNTAxOTUz
XTsKLQotZnVuY3Rpb24gdGVzdFBpeGVscyhjdHgsIHRlc3RzKQotewotICAgIHZhciBhY3R1YWws
IGV4cGVjdGVkLCB0b2xlcmFuY2UgPSAwLjAxOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVz
dHMubGVuZ3RoOyBpKyspIHsKLSAgICAgIGFjdHVhbCA9IGN0eC5nZXRJbWFnZURhdGEodGVzdHNb
aV0ueCwgdGVzdHNbaV0ueSwgMSwgMSkuZGF0YVVuaW9uOwotICAgICAgZXhwZWN0ZWQgPSB0ZXN0
c1tpXS5jb2xvcjsKLSAgICAgIGFzc2VydF90cnVlKGFjdHVhbC5sZW5ndGggPT09IGV4cGVjdGVk
Lmxlbmd0aCk7Ci0gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFjdHVhbC5sZW5ndGg7IGorKykK
LSAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsW2pdLCBleHBlY3RlZFtqXSwgdG9s
ZXJhbmNlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRyYXdTUkdCSW1hZ2VPbkV4dGVuZGVkU1JH
QkNhbnZhcyhzb3VyY2UpCi17Ci0gIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdjYW52YXMnKTsKLSAgY2FudmFzLndpZHRoID0gMjA7Ci0gIGNhbnZhcy5oZWlnaHQgPSAyMDsK
LSAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICB7Y29sb3JTcGFjZTog
J3NyZ2InLCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAgY3R4LmRyYXdJbWFnZShzb3VyY2Us
IDAsIDApOwotICB2YXIgdGVzdHMgPSBbe3g6IDUsIHk6IDUsIGNvbG9yOiBlX3NSR0JfVHJhbnNw
YXJlbnRSZWR9LAotICAgICAgICAgICAgICAge3g6IDE1LCB5OiA1LCBjb2xvcjogZV9zUkdCX1Ry
YW5zcGFyZW50R3JlZW59LAotICAgICAgICAgICAgICAge3g6IDUsIHk6IDE1LCBjb2xvcjogZV9z
UkdCX1RyYW5zcGFyZW50Qmx1ZX0sCi0gICAgICAgICAgICAgICB7eDogMTUsIHk6IDE1LCBjb2xv
cjogZV9zUkdCX1RyYW5zcGFyZW50QmxhY2t9XTsKLSAgdGVzdFBpeGVscyhjdHgsIHRlc3RzKTsK
LX0KLQotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4gewotICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGlt
YWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgcmVzb2x2ZShpbWFnZSk7Ci0gICAgfQot
ICAgIGltYWdlLnNyYyA9ICdyZXNvdXJjZXMvcGF0dGVybi1zZW1pdHJhbnNwYXJlbnQtc3JnYi5w
bmcnCi0gIH0pLnRoZW4oZHJhd1NSR0JJbWFnZU9uRXh0ZW5kZWRTUkdCQ2FudmFzKTsKLX0sICdE
cmF3IFNSR0IgaW1hZ2Ugb24gYW4gZS1zUkdCIGNhbnZhcyBhbmQgcmVhZCBiYWNrIHRoZSBlLXNS
R0IgcGl4ZWxzLicpOwotCi08L3NjcmlwdD4KLQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzL2NhbnZhcy1kcmF3SW1hZ2Utb2Zmc2NyZWVuQ2FudmFzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1vZmZzY3Jl
ZW5DYW52YXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1vZmZzY3JlZW5DYW52YXMtZXhwZWN0ZWQudHh0
CShub25leGlzdGVudCkKQEAgLTEsNiArMCwwIEBACi0KLUZBSUwgVGVzdCBkcmF3aW5nIGNvbG9y
IG1hbmFnZWQgT2Zmc2NyZWVuQ2FudmFzOiBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50
ODsgIE9mZnNjcmVlbkNhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4IGNhbnZhcy50cmFu
c2ZlckNvbnRyb2xUb09mZnNjcmVlbiBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjYW52YXMudHJh
bnNmZXJDb250cm9sVG9PZmZzY3JlZW4oKScsICdjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZz
Y3JlZW4nIGlzIHVuZGVmaW5lZCkKLUZBSUwgVGVzdCBkcmF3aW5nIGNvbG9yIG1hbmFnZWQgT2Zm
c2NyZWVuQ2FudmFzOiBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50ODsgIE9mZnNjcmVl
bkNhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYgY2FudmFzLnRyYW5zZmVyQ29udHJv
bFRvT2Zmc2NyZWVuIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2NhbnZhcy50cmFuc2ZlckNvbnRy
b2xUb09mZnNjcmVlbigpJywgJ2NhbnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbicgaXMg
dW5kZWZpbmVkKQotRkFJTCBUZXN0IGRyYXdpbmcgY29sb3IgbWFuYWdlZCBPZmZzY3JlZW5DYW52
YXM6IENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTY7ICBPZmZzY3JlZW5DYW52YXMg
Y29sb3IgcGFyYW1zOiBzcmdiLCB1aW50OCBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3Jl
ZW4gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2Ny
ZWVuKCknLCAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIFRlc3QgZHJhd2luZyBjb2xvciBtYW5hZ2VkIE9mZnNjcmVlbkNhbnZhczogQ2FudmFz
IGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNjsgIE9mZnNjcmVlbkNhbnZhcyBjb2xvciBwYXJh
bXM6IHNyZ2IsIGZsb2F0MTYgY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ2NhbnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpJywg
J2NhbnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbicgaXMgdW5kZWZpbmVkKQotCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1vZmZzY3JlZW5DYW52
YXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRy
YXdJbWFnZS1vZmZzY3JlZW5DYW52YXMuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1kcmF3SW1hZ2Utb2Zmc2NyZWVuQ2FudmFzLmh0bWwJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwxNzYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1m
dW5jdGlvbiBpbml0aWFsaXplQmxhbmtDYW52YXMoY2FudmFzQ29sb3JTcGFjZSwgY2FudmFzUGl4
ZWxGb3JtYXQpCi17Ci0gICAgdmFyIHRlc3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKLSAgICB0ZXN0Q2FudmFzLndpZHRoID0gNDsKLSAgICB0ZXN0Q2FudmFzLmhl
aWdodCA9IDQ7Ci0gICAgdmFyIHRlc3RDdHggPSB0ZXN0Q2FudmFzLmdldENvbnRleHQoJzJkJywK
LSAgICAgICAge2NvbG9yU3BhY2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZh
c1BpeGVsRm9ybWF0fSk7Ci0gICAgcmV0dXJuIHRlc3RDdHg7Ci19Ci0KLWZ1bmN0aW9uIGluaXRp
YWxpemVDYW52YXMoY2FudmFzQ29sb3JTcGFjZSwgY2FudmFzUGl4ZWxGb3JtYXQpCi17Ci0gICAg
dmFyIHRlc3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICB0
ZXN0Q2FudmFzLndpZHRoID0gNDsKLSAgICB0ZXN0Q2FudmFzLmhlaWdodCA9IDQ7Ci0gICAgdmFy
IHRlc3RDdHggPSB0ZXN0Q2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3Bh
Y2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0g
ICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgxNTUsIDI3LCAyNywgMSkiOwotICAgIHRlc3RD
dHguZmlsbFJlY3QoMCwgMCwgMiwgMik7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgy
NywgMTU1LCAyNywgMSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMiwgMCwgMiwgMik7Ci0gICAg
dGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDE1NSwgMSkiOwotICAgIHRlc3RDdHgu
ZmlsbFJlY3QoMCwgMiwgMiwgMik7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywg
MjcsIDI3LCAxKSI7Ci0gICAgdGVzdEN0eC5maWxsUmVjdCgyLCAyLCAyLCAyKTsKLSAgICByZXR1
cm4gdGVzdEN0eDsKLX0KLQotZnVuY3Rpb24gaW5pdGlhbGl6ZUNhbnZhc1RyYW5zcGFyZW50KGNh
bnZhc0NvbG9yU3BhY2UsIGNhbnZhc1BpeGVsRm9ybWF0KQotewotICAgIHZhciB0ZXN0Q2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgdGVzdENhbnZhcy53aWR0
aCA9IDQ7Ci0gICAgdGVzdENhbnZhcy5oZWlnaHQgPSA0OwotICAgIHZhciB0ZXN0Q3R4ID0gdGVz
dENhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICAgIHtjb2xvclNwYWNlOiBjYW52YXNDb2xv
clNwYWNlLCBwaXhlbEZvcm1hdDpjYW52YXNQaXhlbEZvcm1hdH0pOwotICAgIHRlc3RDdHguZmls
bFN0eWxlID0gInJnYmEoMTU1LCAyNywgMjcsIDAuNSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3Qo
MCwgMCwgMiwgMik7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMTU1LCAyNywg
MC41KSI7Ci0gICAgdGVzdEN0eC5maWxsUmVjdCgyLCAwLCAyLCAyKTsKLSAgICB0ZXN0Q3R4LmZp
bGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMTU1LCAwLjUpIjsKLSAgICB0ZXN0Q3R4LmZpbGxSZWN0
KDAsIDIsIDIsIDIpOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywg
MC41KSI7Ci0gICAgdGVzdEN0eC5maWxsUmVjdCgyLCAyLCAyLCAyKTsKLSAgICByZXR1cm4gdGVz
dEN0eDsKLX0KLQotCi1mdW5jdGlvbiBpbml0aWFsaXplT2Zmc2NyZWVuQ2FudmFzKGNhbnZhc0Nv
bG9yU3BhY2UsIGNhbnZhc1BpeGVsRm9ybWF0KQotewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBjYW52YXMud2lkdGggPSA0OwotICAgIGNh
bnZhcy5oZWlnaHQgPSA0OwotICAgIHZhciBvZmZzY3JlZW4gPSBjYW52YXMudHJhbnNmZXJDb250
cm9sVG9PZmZzY3JlZW4oKTsKLSAgICB2YXIgY3R4ID0gb2Zmc2NyZWVuLmdldENvbnRleHQoJzJk
JywKLSAgICAgICAge2NvbG9yU3BhY2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNh
bnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3
LCAxKSI7Ci0gICAgY3R4LmZpbGxSZWN0KDAsIDAsIDIsIDIpOwotICAgIGN0eC5maWxsU3R5bGUg
PSAicmdiYSgyNywgMTU1LCAyNywgMSkiOwotICAgIGN0eC5maWxsUmVjdCgyLCAwLCAyLCAyKTsK
LSAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAxNTUsIDEpIjsKLSAgICBjdHguZmls
bFJlY3QoMCwgMiwgMiwgMik7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMjcs
IDEpIjsKLSAgICBjdHguZmlsbFJlY3QoMiwgMiwgMiwgMik7Ci0gICAgcmV0dXJuIG9mZnNjcmVl
bjsKLX0KLQotZnVuY3Rpb24gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhc1RyYW5zcGFyZW50KGNh
bnZhc0NvbG9yU3BhY2UsIGNhbnZhc1BpeGVsRm9ybWF0KQotewotICAgIHZhciBjYW52YXMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBjYW52YXMud2lkdGggPSA0Owot
ICAgIGNhbnZhcy5oZWlnaHQgPSA0OwotICAgIHZhciBvZmZzY3JlZW4gPSBjYW52YXMudHJhbnNm
ZXJDb250cm9sVG9PZmZzY3JlZW4oKTsKLSAgICB2YXIgY3R4ID0gb2Zmc2NyZWVuLmdldENvbnRl
eHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwg
MjcsIDI3LCAwLjUpIjsKLSAgICBjdHguZmlsbFJlY3QoMCwgMCwgMiwgMik7Ci0gICAgY3R4LmZp
bGxTdHlsZSA9ICJyZ2JhKDI3LCAxNTUsIDI3LCAwLjUpIjsKLSAgICBjdHguZmlsbFJlY3QoMiwg
MCwgMiwgMik7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMTU1LCAwLjUpIjsK
LSAgICBjdHguZmlsbFJlY3QoMCwgMiwgMiwgMik7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2Jh
KDI3LCAyNywgMjcsIDAuNSkiOwotICAgIGN0eC5maWxsUmVjdCgyLCAyLCAyLCAyKTsKLSAgICBy
ZXR1cm4gb2Zmc2NyZWVuOwotfQotCi1mdW5jdGlvbiB0ZXN0UGl4ZWxzKHRlc3RDdHgsIHJlZkN0
eCwgcGl4ZWxGb3JtYXQsIGlzVHJuYXNwYXJlbnQpCi17Ci0gICAgdmFyIGFjdHVhbCA9IHRlc3RD
dHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDQsIDQpLmRhdGFVbmlvbjsKLSAgICB2YXIgZXhwZWN0ZWQg
PSByZWZDdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDQsIDQpLmRhdGFVbmlvbjsKLQotICAgIHZhciB0
b2xlcmFuY2UgPSA0OwotICAgIGlmIChwaXhlbEZvcm1hdCA9PT0gJ2Zsb2F0MTYnKQotICAgICAg
ICB0b2xlcmFuY2UgPSAwLjAyOwotICAgIGlmIChpc1RybmFzcGFyZW50KQotICAgICAgICB0b2xl
cmFuY2UgPSB0b2xlcmFuY2UgKiAyOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFj
dHVhbCwgZXhwZWN0ZWQsIHRvbGVyYW5jZSk7Ci19Ci0KLQotZnVuY3Rpb24gcnVuRHJhd09mZnNj
cmVlbkNhbnZhc1Rlc3RPcGFxdWUodGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFyIGNhbnZhc19jdHhf
b3BhcXVlID0gaW5pdGlhbGl6ZUNhbnZhcygKLSAgICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc0Nv
bG9yU3BhY2UsIHRlc3RTY2VuYXJpby5jYW52YXNQaXhlbEZvcm1hdCk7Ci0KLSAgICB2YXIgY2Fu
dmFzX2N0eF9ibGFuayA9IGluaXRpYWxpemVCbGFua0NhbnZhcygKLSAgICAgICAgdGVzdFNjZW5h
cmlvLmNhbnZhc0NvbG9yU3BhY2UsIHRlc3RTY2VuYXJpby5jYW52YXNQaXhlbEZvcm1hdCk7Ci0g
ICAgdmFyIG9mZnNjcmVlbl9jYW52YXNfb3BhcXVlID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZh
cygKLSAgICAgICAgdGVzdFNjZW5hcmlvLmltYWdlQ29sb3JTcGFjZSwgdGVzdFNjZW5hcmlvLmlt
YWdlUGl4ZWxGb3JtYXQpOwotICAgIGNhbnZhc19jdHhfYmxhbmsuZHJhd0ltYWdlKG9mZnNjcmVl
bl9jYW52YXNfb3BhcXVlLCAwLCAwKTsKLSAgICB0ZXN0UGl4ZWxzKGNhbnZhc19jdHhfYmxhbmss
IGNhbnZhc19jdHhfb3BhcXVlLAotICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc1Bp
eGVsRm9ybWF0LCBmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkRyYXdPZmZzY3JlZW5DYW52YXNU
ZXN0VHJhbnNwYXJlbnQodGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFyIGNhbnZhc19jdHhfdHJhbnNw
YXJlbnQgPSBpbml0aWFsaXplQ2FudmFzVHJhbnNwYXJlbnQoCi0gICAgICAgIHRlc3RTY2VuYXJp
by5jYW52YXNDb2xvclNwYWNlLCB0ZXN0U2NlbmFyaW8uY2FudmFzUGl4ZWxGb3JtYXQpOwotCi0g
ICAgdmFyIGNhbnZhc19jdHhfYmxhbmsgPSBpbml0aWFsaXplQmxhbmtDYW52YXMoCi0gICAgICAg
IHRlc3RTY2VuYXJpby5jYW52YXNDb2xvclNwYWNlLCB0ZXN0U2NlbmFyaW8uY2FudmFzUGl4ZWxG
b3JtYXQpOwotICAgIHZhciBvZmZzY3JlZW5fY2FudmFzX3RyYW5zcGFyZW50ID0gaW5pdGlhbGl6
ZU9mZnNjcmVlbkNhbnZhc1RyYW5zcGFyZW50KAotICAgICAgICB0ZXN0U2NlbmFyaW8uaW1hZ2VD
b2xvclNwYWNlLCB0ZXN0U2NlbmFyaW8uaW1hZ2VQaXhlbEZvcm1hdCk7Ci0gICAgY2FudmFzX2N0
eF9ibGFuay5kcmF3SW1hZ2Uob2Zmc2NyZWVuX2NhbnZhc190cmFuc3BhcmVudCwgMCwgMCk7Ci0g
ICAgdGVzdFBpeGVscyhjYW52YXNfY3R4X2JsYW5rLCBjYW52YXNfY3R4X3RyYW5zcGFyZW50LAot
ICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc1BpeGVsRm9ybWF0LCB0cnVlKTsKLX0K
LQotZnVuY3Rpb24gcnVuQWxsVGVzdHMoKSB7Ci0gICAgdmFyIGNhbnZhc0NvbG9yU3BhY2VzID0g
WydzcmdiJ107Ci0gICAgdmFyIGNhbnZhc1BpeGVsRm9ybWF0cyA9IFsndWludDgnLCAnZmxvYXQx
NiddOwotCi0gICAgdmFyIHRlc3RTY2VuYXJpb1NldCA9IFtdOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2FudmFzQ29sb3JTcGFjZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBjYW52YXNQaXhlbEZvcm1hdHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAg
IHZhciBjYW52YXNfY29sb3Jfc3BhY2UgPSBjYW52YXNDb2xvclNwYWNlc1tpXTsKLSAgICAgICAg
ICAgIHZhciBjYW52YXNfcGl4ZWxfZm9ybWF0ID0gY2FudmFzUGl4ZWxGb3JtYXRzW2pdOwotICAg
ICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBjYW52YXNDb2xvclNwYWNlcy5sZW5ndGg7IGsr
KykgewotICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgY2FudmFzUGl4ZWxGb3Jt
YXRzLmxlbmd0aDsgbSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZV9ob3N0X2Nv
bG9yX3NwYWNlID0gY2FudmFzQ29sb3JTcGFjZXNba107Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBpbWFnZV9ob3N0X3BpeGVsX2Zvcm1hdCA9IGNhbnZhc1BpeGVsRm9ybWF0c1ttXTsKLQotICAg
ICAgICAgICAgICAgICAgICB2YXIgdGVzdFNjZW5hcmlvID0ge307Ci0gICAgICAgICAgICAgICAg
ICAgIHRlc3RTY2VuYXJpby5jYW52YXNDb2xvclNwYWNlID0gY2FudmFzX2NvbG9yX3NwYWNlOwot
ICAgICAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uY2FudmFzUGl4ZWxGb3JtYXQgPSBjYW52
YXNfcGl4ZWxfZm9ybWF0OwotICAgICAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uaW1hZ2VD
b2xvclNwYWNlID0gaW1hZ2VfaG9zdF9jb2xvcl9zcGFjZTsKLSAgICAgICAgICAgICAgICAgICAg
dGVzdFNjZW5hcmlvLmltYWdlUGl4ZWxGb3JtYXQgPSBpbWFnZV9ob3N0X3BpeGVsX2Zvcm1hdDsK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvU2V0LnB1c2godGVzdFNjZW5hcmlvKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RTY2VuYXJpb1NldC5sZW5ndGg7IGkrKykgewotICAg
ICAgICB0ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgIHJ1bkRyYXdPZmZzY3JlZW5DYW52
YXNUZXN0T3BhcXVlKHRlc3RTY2VuYXJpb1NldFtpXSk7Ci0gICAgICAgICAgICBydW5EcmF3T2Zm
c2NyZWVuQ2FudmFzVGVzdFRyYW5zcGFyZW50KHRlc3RTY2VuYXJpb1NldFtpXSk7Ci0gICAgICAg
IH0sIHRlc3RTY2VuYXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJpb1NldFtpXSkpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gdGVzdFNjZW5hcmlvVG9TdHJpbmcodGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFy
IHN0ciA9ICJUZXN0IGRyYXdpbmcgY29sb3IgbWFuYWdlZCBPZmZzY3JlZW5DYW52YXM6ICIgKwot
ICAgICAgICAiQ2FudmFzIGNvbG9yIHBhcmFtczogIiArCi0gICAgICAgIHRlc3RTY2VuYXJpby5j
YW52YXNDb2xvclNwYWNlICsgIiwgIiArCi0gICAgICAgIHRlc3RTY2VuYXJpby5jYW52YXNQaXhl
bEZvcm1hdCArCi0gICAgICAgICI7ICBPZmZzY3JlZW5DYW52YXMgY29sb3IgcGFyYW1zOiAiICsK
LSAgICAgICAgdGVzdFNjZW5hcmlvLmltYWdlQ29sb3JTcGFjZSArICIsICIgKwotICAgICAgICB0
ZXN0U2NlbmFyaW8uaW1hZ2VQaXhlbEZvcm1hdDsKLSAgICByZXR1cm4gc3RyOwotfQotCi1ydW5B
bGxUZXN0cygpOwotPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtZV9zcmdiLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWdl
dEltYWdlRGF0YS1lX3NyZ2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1lX3NyZ2ItZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKQEAgLTEsNiArMCwwIEBACi0KLUZBSUwgdGVzdHMgZHJhd2luZyBT
UkdCIGNvbG9yIG9uIGUtc1JHQiBjYW52YXMgYW5kIGdldHRpbmcgZS1zUkdCIGltYWdlIGRhdGEu
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykK
LUZBSUwgdGVzdHMgcHV0dGluZyBhbmQgZ2V0dGluZyBpbi1yYW5nZSBlLXNSR0IgaW1hZ2UgZGF0
YSBvbiBlLXNSR0IgY2FudmFzLiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotRkFJ
TCB0ZXN0cyBwdXR0aW5nIGFuZCBnZXR0aW5nIG91dC1vZi1yYW5nZSBlLXNSR0IgaW1hZ2UgZGF0
YSBvbiBlLXNSR0IgY2FudmFzLiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotRkFJ
TCB0ZXN0cyBwdXR0aW5nIFNSR0IgaW1hZ2UgZGF0YSBvbiBlLXNSR0IgY2FudmFzIGFuZCBnZXR0
aW5nIGUtc1JHQiBpbWFnZSBkYXRhLiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQot
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1lX3Ny
Z2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWdl
dEltYWdlRGF0YS1lX3NyZ2IuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtZV9zcmdiLmh0bWwJKG5vbmV4aXN0ZW50
KQpAQCAtMSw5NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxib2R5PgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXRlc3QoZHJh
d1NSR0JUaGVuR2V0SW1hZ2VEYXRhX2Vfc1JHQiwgJ3Rlc3RzIGRyYXdpbmcgU1JHQiBjb2xvciBv
biBlLXNSR0IgXAotY2FudmFzIGFuZCBnZXR0aW5nIGUtc1JHQiBpbWFnZSBkYXRhLicpOwotdGVz
dChwdXRJbWFnZURhdGFfZV9zUkdCVGhlbkdldEltYWdlRGF0YV9lX3NSR0JfSW5SYW5nZSwgJ3Rl
c3RzIHB1dHRpbmcgYW5kIFwKLWdldHRpbmcgaW4tcmFuZ2UgZS1zUkdCIGltYWdlIGRhdGEgb24g
ZS1zUkdCIGNhbnZhcy4nKTsKLXRlc3QocHV0SW1hZ2VEYXRhX2Vfc1JHQlRoZW5HZXRJbWFnZURh
dGFfZV9zUkdCX091dE9mUmFuZ2UsICd0ZXN0cyBwdXR0aW5nIGFuZCBcCi1nZXR0aW5nIG91dC1v
Zi1yYW5nZSBlLXNSR0IgaW1hZ2UgZGF0YSBvbiBlLXNSR0IgY2FudmFzLicpOwotdGVzdChwdXRJ
bWFnZURhdGFTUkdCVGhlbkdldEltYWdlRGF0YV9lX3NSR0IsICd0ZXN0cyBwdXR0aW5nIFNSR0Ig
aW1hZ2UgZGF0YSBcCi1vbiBlLXNSR0IgY2FudmFzIGFuZCBnZXR0aW5nIGUtc1JHQiBpbWFnZSBk
YXRhLicpOwotCi1mdW5jdGlvbiBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4
cGVjdGVkLCBlcHNpbG9uKQotewotICBhc3NlcnRfdHJ1ZShhY3R1YWwubGVuZ3RoID09PSBleHBl
Y3RlZC5sZW5ndGgpOwotICBmb3IgKHZhciBpPTA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspCi0g
ICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSwgZXBzaWxvbik7
Ci19Ci0KLWZ1bmN0aW9uIGRyYXdTUkdCVGhlbkdldEltYWdlRGF0YV9lX3NSR0IoKSB7Ci0gICAg
dmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwotICAgIGNhbnZh
cy53aWR0aCA9IDEwOwotICAgIGNhbnZhcy5oZWlnaHQgPSAxMDsKLSAgICB2YXIgY3R4ID0gY2Fu
dmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxG
b3JtYXQ6J2Zsb2F0MTYnfSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDUxLCAxMDIsIDE1
MywgMC44KSc7Ci0gICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwLCAxMCk7Ci0gICAgdmFyIHBpeGVs
ID0gY3R4LmdldEltYWdlRGF0YSg1LCA1LCAxLCAxKS5kYXRhVW5pb247Ci0gICAgLy8gQ2hlY2sg
YWdhaW5zdCB0aGUgc2FtZSBjb2xvciBpbiBlLXNSR0IuIDAuMDEgcHJvdGVjdHMgdGhlIHRlc3Qg
YWdhaW5zdAotICAgIC8vIGNvbG9yIGNvbnZlcnNpb24gZGV2aWF0aW9ucy4KLSAgICBhc3NlcnRf
YXJyYXlfYXBwcm94X2VxdWFscyhwaXhlbCwgWzAuMiwgMC40LCAwLjYsIDAuOF0sIDAuMDEpOwot
fQotCi1mdW5jdGlvbiBwdXRJbWFnZURhdGFfZV9zUkdCVGhlbkdldEltYWdlRGF0YV9lX3NSR0Jf
SW5SYW5nZSgpIHsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2Fu
dmFzJyk7Ci0gICAgY2FudmFzLndpZHRoID0gMTA7Ci0gICAgY2FudmFzLmhlaWdodCA9IDEwOwot
ICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFj
ZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KQotICAgIHZhciBkYXRhX2Vfc1JHQiA9
IG5ldyBGbG9hdDMyQXJyYXkoNCk7Ci0gICAgZGF0YV9lX3NSR0JbMF0gPSAwLjI7Ci0gICAgZGF0
YV9lX3NSR0JbMV0gPSAwLjQ7Ci0gICAgZGF0YV9lX3NSR0JbMl0gPSAwLjY7Ci0gICAgZGF0YV9l
X3NSR0JbM10gPSAwLjg7Ci0gICAgdmFyIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEo
ZGF0YV9lX3NSR0IsIDEsIDEsCi0gICAgICAgIHtjb2xvclNwYWNlOiAnc3JnYicsIHN0b3JhZ2VG
b3JtYXQ6J2Zsb2F0MzInfSk7Ci0gICAgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDUsIDUp
OwotICAgIHZhciBwaXhlbCA9IGN0eC5nZXRJbWFnZURhdGEoNSwgNSwgMSwgMSkuZGF0YVVuaW9u
OwotICAgIC8vIENoZWNrIGFnYWluc3QgdGhlIHNhbWUgY29sb3IgaW4gZS1zUkdCLiAwLjAwMSBw
cm90ZWN0cyB0aGUgdGVzdCBhZ2FpbnN0Ci0gICAgLy8gcm91bmRpbmcgZXJyb3JzLgotICAgIGFz
c2VydF9hcnJheV9hcHByb3hfZXF1YWxzKHBpeGVsLCBbMC4yLCAwLjQsIDAuNiwgMC44XSwgMC4w
MSk7Ci19Ci0KLWZ1bmN0aW9uIHB1dEltYWdlRGF0YV9lX3NSR0JUaGVuR2V0SW1hZ2VEYXRhX2Vf
c1JHQl9PdXRPZlJhbmdlKCkgewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMud2lkdGggPSAxMDsKLSAgICBjYW52YXMuaGVpZ2h0
ID0gMTA7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICAgIHtj
b2xvclNwYWNlOiAnc3JnYicsIHBpeGVsRm9ybWF0OidmbG9hdDE2J30pCi0gICAgdmFyIGRhdGFf
ZV9zUkdCID0gbmV3IEZsb2F0MzJBcnJheSg0KTsKLSAgICBkYXRhX2Vfc1JHQlswXSA9IDEuMzsK
LSAgICBkYXRhX2Vfc1JHQlsxXSA9IC0xLjEzOwotICAgIGRhdGFfZV9zUkdCWzJdID0gMC43Owot
ICAgIGRhdGFfZV9zUkdCWzNdID0gMS44OwotICAgIHZhciBpbWFnZURhdGEgPSBjdHguY3JlYXRl
SW1hZ2VEYXRhKGRhdGFfZV9zUkdCLCAxLCAxLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2In
LCBzdG9yYWdlRm9ybWF0OidmbG9hdDMyJ30pOwotICAgIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VE
YXRhLCA1LCA1KTsKLSAgICB2YXIgcGl4ZWwgPSBjdHguZ2V0SW1hZ2VEYXRhKDUsIDUsIDEsIDEp
LmRhdGFVbmlvbjsKLSAgICAvLyBDaGVjayBhZ2FpbnN0IHRoZSBzYW1lIGNvbG9yIGluIGUtc1JH
Qi4gMC4wMDEgcHJvdGVjdHMgdGhlIHRlc3QgYWdhaW5zdAotICAgIC8vIHJvdW5kaW5nIGVycm9y
cy4KLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhwaXhlbCwgWzEuMywgLTEuMTMsIDAu
NywgMS44XSwgMC4wMSk7Ci19Ci0KLWZ1bmN0aW9uIHB1dEltYWdlRGF0YVNSR0JUaGVuR2V0SW1h
Z2VEYXRhX2Vfc1JHQigpIHsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7Ci0gICAgY2FudmFzLndpZHRoID0gMTA7Ci0gICAgY2FudmFzLmhlaWdodCA9
IDEwOwotICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29s
b3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAgICB2YXIgZGF0YVNS
R0IgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoNCk7Ci0gICAgZGF0YVNSR0JbMF0gPSA1MTsKLSAg
ICBkYXRhU1JHQlsxXSA9IDEwMjsKLSAgICBkYXRhU1JHQlsyXSA9IDE1MzsKLSAgICBkYXRhU1JH
QlszXSA9IDIwNDsKLSAgICB2YXIgaW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YShkYXRh
U1JHQiwgMSwgMSwKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgc3RvcmFnZUZvcm1hdDon
dWludDgnfSk7Ci0gICAgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDUsIDUpOwotICAgIHZh
ciBwaXhlbCA9IGN0eC5nZXRJbWFnZURhdGEoNSwgNSwgMSwgMSkuZGF0YVVuaW9uOwotICAgIC8v
IENoZWNrIGFnYWluc3QgdGhlIHNhbWUgY29sb3IgaW4gZS1zUkdCLiAwLjAxIHByb3RlY3RzIHRo
ZSB0ZXN0IGFnYWluc3QKLSAgICAvLyBjb2xvciBjb252ZXJzaW9uIGRldmlhdGlvbnMuCi0gICAg
YXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMocGl4ZWwsIFswLjIsIDAuNCwgMC42LCAwLjhdLCAw
LjAxKTsKLX0KLTwvc2NyaXB0PgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzL2ltYWdlRGF0YS1jb2xvck1hbmFnZWRCZWhhdmlvci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlRGF0YS1jb2xvck1hbmFnZWRCZWhh
dmlvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy9pbWFnZURhdGEtY29sb3JNYW5hZ2VkQmVoYXZpb3ItZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3NyZ2JJbWFnZURhdGFVOC5kYXRh
VW5pb25baSo0K2pdID0gc3JnYlBpeGVsc1tpXVtqXScpCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwp
LCBtZXNzYWdlID0gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnc3JnYkltYWdlRGF0YVU4LmRhdGFVbmlvbltpKjQral0gPSBzcmdiUGl4ZWxzW2ldW2pd
JykKLQotCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yTWFu
YWdlZEJlaGF2aW9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
L2ltYWdlRGF0YS1jb2xvck1hbmFnZWRCZWhhdmlvci5odG1sCShyZXZpc2lvbiAyNzY3MTYpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yTWFuYWdlZEJlaGF2aW9y
Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNjQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotCi12YXIgc3JnYlBpeGVscyA9Ci0gICAgW1sxNTUsMjcsMjcsMTI4LCAic3JnYlJlZCJdLCAg
WzI3LDE1NSwyNywxMjgsICJzcmdiR3JlZW4iXSwKLSAgICAgWzI3LDI3LDE1NSwxMjgsICJzcmdi
Qmx1ZSJdLCBbMjcsMjcsMjcsMTI4LCAic3JnYkJsYWNrIl1dOwotCi12YXIgZV9zcmdiUGl4ZWxz
ID0KLSAgICBbWzAuNjA3NDIyLCAwLjEyMTUyMSwgMC4xMjE1MjEsIDAuNTAxOTUzLCAiZV9zUmdi
UmVkIl0sCi0gICAgIFswLjEyMTUyMSwgMC42MDc0MjIsIDAuMTIxNTIxLCAwLjUwMTk1MywgImVf
c1JnYkdyZWVuIl0sCi0gICAgIFswLjEyMTUyMSwgMC4xMjE1MjEsIDAuNjA3NDIyLCAwLjUwMTk1
MywgImVfc1JnYkJsdWUiXSwKLSAgICAgWzAuMTIxNTIxLCAwLjEyMTUyMSwgMC4xMjE1MjEsIDAu
NTAxOTUzLCAiZV9zUmdiQmxhY2siXV07Ci0KLXZhciB4V2lkdGggPSB4SGVpZ2h0ID0gMjsKLXZh
ciBjb2xvckNvcnJlY3Rpb25Ub2xlcmFuY2VTUkdCID0gMTsKLS8vIFRoZSBlcnJvciBsZXZlbCBp
biBTUkdCLT5XQ0dfVTgtPlNSR0IgaXMgaGlnaGVyIHRoYW4gbm9ybWFsIGNvbG9yIGNvcnJlY3Rp
b24KLS8vIG9wZXJhdGlvbnMgYXMgdGhlIHBpeGVscyBhcmUgY2xpcHBlZCBpbiBXQ0cgd2hlbiBV
OCBzdG9yYWdlIGlzIHVzZWQgaW5zdGVhZAotLy8gb2YgRjE2IHN0b3JhZ2UuCi12YXIgY29sb3JD
b3JyZWN0aW9uVG9sZXJhbmNlV0NHX1U4dG9TUkdCX1U4ID0gNjsKLXZhciBjb2xvckNvcnJlY3Rp
b25Ub2xlcmFuY2VXQ0cgPSAwLjAyOwotCi1mdW5jdGlvbiB0ZXN0QmxhbmtQaXhlbHMoYWN0dWFs
RGF0YSwgd2lkdGgsIGhlaWdodCkKLXsKLSAgdmFyIG1lc3NhZ2UgPSAiVGhpcyBwaXhlbCBzaG91
bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2siOwotICB2YXIgYmxhbmtEYXRhID0gbmV3IEFycmF5KDQg
KiB3aWR0aCAqIGhlaWdodCkuZmlsbCgwKTsKLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhhY3R1YWxE
YXRhLCBibGFua0RhdGEsIG1lc3NhZ2UpOwotfQotCi1mdW5jdGlvbiB0ZXN0UGl4ZWxzKGFjdHVh
bERhdGEsIGV4cGVjdGVkUGl4ZWxzLCB0b2xlcmFuY2UpCi17Ci0gIGFzc2VydF9lcXVhbHMoYWN0
dWFsRGF0YS5sZW5ndGgsIDQgKiB4V2lkdGggKiB4SGVpZ2h0KTsKLSAgZm9yICh2YXIgaSA9IDA7
IGkgPCB4V2lkdGggKiB4SGVpZ2h0OyBpKyspIHsKLSAgICB2YXIgbWVzc2FnZSA9ICJUaGlzIHBp
eGVsIHNob3VsZCBiZSAiICsgZXhwZWN0ZWRQaXhlbHNbaV1bNF07Ci0gICAgZm9yICh2YXIgaiA9
IDA7IGogPCA0OyBqKyspCi0gICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxEYXRhW2kq
NCtqXSwgZXhwZWN0ZWRQaXhlbHNbaV1bal0sIHRvbGVyYW5jZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrSW1hZ2VEYXRhQ29s
b3JTZXR0aW5ncyhjYW52YXNDb2xvclNldHRpbmdzLCBpbWFnZURhdGEpIHsKLSAgdmFyIGltYWdl
RGF0YUNvbG9yU2V0dGluZ3MgPSBpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygpOwotICBhc3Nl
cnRfZXF1YWxzKGNhbnZhc0NvbG9yU2V0dGluZ3MuY29sb3JTcGFjZSwKLSAgICAgICAgICAgICAg
ICBpbWFnZURhdGFDb2xvclNldHRpbmdzLmNvbG9yU3BhY2UpOwotICBpZiAoY2FudmFzQ29sb3JT
ZXR0aW5ncy5waXhlbEZvcm1hdCA9PSAidWludDgiKQotICAgIGFzc2VydF9lcXVhbHMoInVpbnQ4
IiwgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncy5zdG9yYWdlRm9ybWF0KTsKLSAgZWxzZQotICAgIGFz
c2VydF9lcXVhbHMoImZsb2F0MzIiLCBpbWFnZURhdGFDb2xvclNldHRpbmdzLnN0b3JhZ2VGb3Jt
YXQpOwotfQotCi1mdW5jdGlvbiBjaGVja0ltYWdlRGF0YUNvbG9yVmFsdWVzKGNhbnZhc0NvbG9y
U2V0dGluZ3MsIGltYWdlRGF0YSwgaXNCbGFuayA9ICcnLAotICB3aWR0aCA9IHhXaWR0aCwgaGVp
Z2h0ID0geEhlaWdodCwgaXNXQ0dfVTh0b1NSR0JfVTggPSAnJykgewotICB2YXIgZGF0YSA9IGlt
YWdlRGF0YS5kYXRhVW5pb247Ci0gIGlmIChpc0JsYW5rID09PSAnaXNCbGFuaycpIHsKLSAgICB0
ZXN0QmxhbmtQaXhlbHMoZGF0YSwgd2lkdGgsIGhlaWdodCk7Ci0gIH0gZWxzZSB7Ci0gICAgdmFy
IGV4cGVjdGVkUGl4ZWxzID0gc3JnYlBpeGVsczsKLSAgICB2YXIgdG9sZXJhbmNlID0gY29sb3JD
b3JyZWN0aW9uVG9sZXJhbmNlU1JHQjsKLSAgICBpZiAoaXNXQ0dfVTh0b1NSR0JfVTggPT09ICdp
c1dDR19VOHRvU1JHQl9VOCcpCi0gICAgICB0b2xlcmFuY2UgPSBjb2xvckNvcnJlY3Rpb25Ub2xl
cmFuY2VXQ0dfVTh0b1NSR0JfVTg7Ci0gICAgaWYgKGNhbnZhc0NvbG9yU2V0dGluZ3MucGl4ZWxG
b3JtYXQgIT0gInVpbnQ4IikgewotICAgICAgZXhwZWN0ZWRQaXhlbHMgPSBlX3NyZ2JQaXhlbHM7
Ci0gICAgICB0b2xlcmFuY2UgPSBjb2xvckNvcnJlY3Rpb25Ub2xlcmFuY2VXQ0c7Ci0gICAgfQot
ICAgIHRlc3RQaXhlbHMoZGF0YSwgZXhwZWN0ZWRQaXhlbHMsIHRvbGVyYW5jZSk7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbG9yTWFuYWdlZENhbnZhcyhjYW52YXNDb2xvclNldHRp
bmdzKQotewotICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7
Ci0gIGNhbnZhcy53aWR0aCA9IHhXaWR0aDsKLSAgY2FudmFzLmhlaWdodCA9IHhIZWlnaHQ7Ci0g
IHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgIHtjb2xvclNwYWNlOiBjYW52
YXNDb2xvclNldHRpbmdzLmNvbG9yU3BhY2UsCi0gICAgIHBpeGVsRm9ybWF0OiBjYW52YXNDb2xv
clNldHRpbmdzLnBpeGVsRm9ybWF0fSk7Ci0gIGN0eC5maWxsU3R5bGUgPSAicmdiYSgxNTUsIDI3
LCAyNywgMC41KSI7Ci0gIGN0eC5maWxsUmVjdCgwLCAwLCB4V2lkdGgvMiwgeEhlaWdodC8yKTsK
LSAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAxNTUsIDI3LCAwLjUpIjsKLSAgY3R4LmZpbGxS
ZWN0KHhXaWR0aC8yLCAwLCB4V2lkdGgvMiwgeEhlaWdodC8yKTsKLSAgY3R4LmZpbGxTdHlsZSA9
ICJyZ2JhKDI3LCAyNywgMTU1LCAwLjUpIjsKLSAgY3R4LmZpbGxSZWN0KDAsIHhIZWlnaHQvMiwg
eFdpZHRoLzIsIHhIZWlnaHQvMik7Ci0gIGN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDI3
LCAwLjUpIjsKLSAgY3R4LmZpbGxSZWN0KHhXaWR0aC8yLCB4SGVpZ2h0LzIsIHhXaWR0aC8yLCB4
SGVpZ2h0LzIpOwotICByZXR1cm4gY2FudmFzOwotfQotCi12YXIgY2FudmFzQ29sb3JTZXR0aW5n
c1NldCA9IFsKLSAge25hbWU6ICJTUkdCIiwgY29sb3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJz
cmdiIiwgcGl4ZWxGb3JtYXQ6ICJ1aW50OCJ9fSwKLSAge25hbWU6ICJlLVNSR0IiLCBjb2xvclNl
dHRpbmdzOiB7Y29sb3JTcGFjZTogInNyZ2IiLCBwaXhlbEZvcm1hdDogImZsb2F0MTYifX0sCi1d
OwotCi12YXIgc3JnYkltYWdlRGF0YVU4LCBlX3NyZ2JJbWFnZURhdGFVMTYsIGVfc3JnYkltYWdl
RGF0YUYzMjsKLQotZnVuY3Rpb24gUHJlcGFyZVByZWRlZmluZWRJbWFnZURhdGFPYmplY3RzKCkg
ewotICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gIHZh
ciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgc3JnYkltYWdlRGF0YVU4ID0gY3R4
LmNyZWF0ZUltYWdlRGF0YSh4V2lkdGgsIHhIZWlnaHQsCi0gICAge2NvbG9yU3BhY2U6ICJzcmdi
Iiwgc3RvcmFnZUZvcm1hdDogInVpbnQ4In0pOwotICBlX3NyZ2JJbWFnZURhdGFVMTYgPSBjdHgu
Y3JlYXRlSW1hZ2VEYXRhKHhXaWR0aCwgeEhlaWdodCwKLSAgICB7Y29sb3JTcGFjZTogInNyZ2Ii
LCBzdG9yYWdlRm9ybWF0OiAidWludDE2In0pOwotICBlX3NyZ2JJbWFnZURhdGFGMzIgPSBjdHgu
Y3JlYXRlSW1hZ2VEYXRhKHhXaWR0aCwgeEhlaWdodCwKLSAgICB7Y29sb3JTcGFjZTogInNyZ2Ii
LCBzdG9yYWdlRm9ybWF0OiAiZmxvYXQzMiJ9KTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHhX
aWR0aCAqIHhIZWlnaHQ7IGkrKykKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKykgewot
ICAgICAgc3JnYkltYWdlRGF0YVU4LmRhdGFVbmlvbltpKjQral0gPSBzcmdiUGl4ZWxzW2ldW2pd
OwotICAgICAgZV9zcmdiSW1hZ2VEYXRhVTE2LmRhdGFVbmlvbltpKjQral0gPQotICAgICAgICAg
IE1hdGgucm91bmQoZV9zcmdiUGl4ZWxzW2ldW2pdICogNjU1MzUpOwotICAgICAgZV9zcmdiSW1h
Z2VEYXRhRjMyLmRhdGFVbmlvbltpKjQral0gPSBlX3NyZ2JQaXhlbHNbaV1bal07Ci0gICAgfQot
fQotCi1QcmVwYXJlUHJlZGVmaW5lZEltYWdlRGF0YU9iamVjdHMoKTsKLXZhciBpbWFnZURhdGFD
b2xvclNldHRpbmdzU2V0ID0gWwotICB7bmFtZTogIlNSR0IgVTgiLCBjb2xvclNldHRpbmdzOiB7
Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifSwKLSAgICAgIGltYWdl
RGF0YTogc3JnYkltYWdlRGF0YVU4fSwKLSAge25hbWU6ICJlLVNSR0IgVTE2IiwgY29sb3JTZXR0
aW5nczoge2NvbG9yU3BhY2U6ICJzcmdiIiwKLSAgICAgIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50MTYi
fSwgaW1hZ2VEYXRhOiBlX3NyZ2JJbWFnZURhdGFVMTZ9LAotICB7bmFtZTogImUtU1JHQiBGMzIi
LCBjb2xvclNldHRpbmdzOiB7Y29sb3JTcGFjZTogInNyZ2IiLAotICAgICAgc3RvcmFnZUZvcm1h
dDogImZsb2F0MzIifSwgaW1hZ2VEYXRhOiBlX3NyZ2JJbWFnZURhdGFGMzJ9LAotXTsKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gKiBJbWFnZURhdGEgaW1hZ2VkYXRhID0gY3R4LmNy
ZWF0ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KTsKLS8vIE5vIGNvbG9yIGNvbnZlcnNpb24uIGlt
YWdlZGF0YSBmb2xsb3dzIHRoZSBjb2xvciBzZXR0aW5ncyBvZiB0aGUgY2FudmFzLgotCi1mdW5j
dGlvbiBydW5UZXN0Q3JlYXRlSW1hZ2VEYXRhV0goY2FudmFzQ29sb3JTZXR0aW5ncykgewotICB2
YXIgY2FudmFzID0gaW5pdGlhbGl6ZUNvbG9yTWFuYWdlZENhbnZhcyhjYW52YXNDb2xvclNldHRp
bmdzKTsKLSAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwotICB2YXIgaW1hZ2VE
YXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YSh4V2lkdGgsIHhIZWlnaHQpOwotICBjaGVja0ltYWdl
RGF0YUNvbG9yU2V0dGluZ3MoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRhKTsKLX0KLQot
dmFyIHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFXSCA9IFtdOwotZm9yICh2YXIgaSA9IDA7
IGkgPCBjYW52YXNDb2xvclNldHRpbmdzU2V0Lmxlbmd0aDsgaSsrKSB7Ci0gIHZhciBtZXNzYWdl
ID0gIlRlc3QgY3JldGF0ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KSBmcm9tICIgKwotICAgICAg
ICAgICAgICAgIGNhbnZhc0NvbG9yU2V0dGluZ3NTZXRbaV0ubmFtZSArICIgY2FudmFzICI7Ci0g
IHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFXSC4KLSAgICAgIHB1c2goW21lc3NhZ2UsIGNh
bnZhc0NvbG9yU2V0dGluZ3NTZXRbaV0uY29sb3JTZXR0aW5nc10pOwotfQotCi1mdW5jdGlvbiBy
dW5UZXN0Q3JlYXRlSW1hZ2VEYXRhV0hUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0gubGVuZ3RoOyBpKyspewotICAgIHZhciB0ID0g
dGVzdChmdW5jdGlvbigpIHsKLSAgICAgIHJ1blRlc3RDcmVhdGVJbWFnZURhdGFXSCh0ZXN0U2Nl
bmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0hbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NDcmVh
dGVJbWFnZURhdGFXSFtpXVswXSk7Ci0gIH0KLX0KLXJ1blRlc3RDcmVhdGVJbWFnZURhdGFXSFRl
c3RzKCk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vICogSW1hZ2VEYXRhIGltYWdl
ZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoc3gsIHN5LCBzdywgc2gpOwotLy8gTm8gY29sb3IgY29u
dmVyc2lvbi4gaW1hZ2VkYXRhIGZvbGxvd3MgdGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52
YXMuCi0KLWZ1bmN0aW9uIHJ1blRlc3RHZXRJbWFnZURhdGFYWVdIKGNhbnZhc0NvbG9yU2V0dGlu
Z3MpIHsKLSAgdmFyIGNhbnZhcyA9IGluaXRpYWxpemVDb2xvck1hbmFnZWRDYW52YXMoY2FudmFz
Q29sb3JTZXR0aW5ncyk7Ci0gIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAg
dmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgeFdpZHRoLCB4SGVpZ2h0KTsK
LSAgY2hlY2tJbWFnZURhdGFDb2xvclNldHRpbmdzKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdl
RGF0YSk7Ci0gIGNoZWNrSW1hZ2VEYXRhQ29sb3JWYWx1ZXMoY2FudmFzQ29sb3JTZXR0aW5ncywg
aW1hZ2VEYXRhKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJpb3NHZXRJbWFnZURhdGFYWVdIID0gW107
Ci1mb3IgKHZhciBpID0gMDsgaSA8IGNhbnZhc0NvbG9yU2V0dGluZ3NTZXQubGVuZ3RoOyBpKysp
IHsKLSAgdmFyIG1lc3NhZ2UgPSAiVGVzdCBnZXRJbWFnZURhdGEoc3gsIHN5LCBzdywgc2gpIGZy
b20gIiArCi0gICAgICAgICAgICAgICAgY2FudmFzQ29sb3JTZXR0aW5nc1NldFtpXS5uYW1lICsg
IiBjYW52YXMgIjsKLSAgdGVzdFNjZW5hcmlvc0dldEltYWdlRGF0YVhZV0guCi0gICAgICBwdXNo
KFttZXNzYWdlLCBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLmNvbG9yU2V0dGluZ3NdKTsKLX0K
LQotZnVuY3Rpb24gcnVuVGVzdEdldEltYWdlRGF0YVhZV0hUZXN0cygpIHsKLSAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zR2V0SW1hZ2VEYXRhWFlXSC5sZW5ndGg7IGkrKyl7Ci0g
ICAgdmFyIHQgPSB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgcnVuVGVzdEdldEltYWdlRGF0YVhZ
V0godGVzdFNjZW5hcmlvc0dldEltYWdlRGF0YVhZV0hbaV1bMV0pOwotICAgIH0sIHRlc3RTY2Vu
YXJpb3NHZXRJbWFnZURhdGFYWVdIW2ldWzBdKTsKLSAgfQotfQotcnVuVGVzdEdldEltYWdlRGF0
YVhZV0hUZXN0cygpOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyAqIHZvaWQgY3R4
LnB1dEltYWdlRGF0YShpbWFnZWRhdGEsIGR4LCBkeSwgLi4uKTsKLS8vIENvbG9yIGNvbnZlcnNp
b24sIGlmIG5lZWRlZCwgdG8gdGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuCi0KLWZ1
bmN0aW9uIHJ1blRlc3RQdXRJbWFnZURhdGFEeER5KGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdl
RGF0YSkgewotICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7
Ci0gIGNhbnZhcy53aWR0aCA9IHhXaWR0aCAqIDI7Ci0gIGNhbnZhcy5oZWlnaHQgPSB4SGVpZ2h0
ICogMjsKLSAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICB7Y29sb3JT
cGFjZTogY2FudmFzQ29sb3JTZXR0aW5ncy5jb2xvclNwYWNlLAotICAgICAgIHBpeGVsRm9ybWF0
OiBjYW52YXNDb2xvclNldHRpbmdzLnBpeGVsRm9ybWF0fSk7Ci0gIGN0eC5wdXRJbWFnZURhdGEo
aW1hZ2VEYXRhLCB4V2lkdGgvMiwgeEhlaWdodC8yKTsKLSAgdmFyIGN0eEltYWdlRGF0YSA9IGN0
eC5nZXRJbWFnZURhdGEoeFdpZHRoLzIsIHhIZWlnaHQvMiwgeFdpZHRoLCB4SGVpZ2h0KTsKLSAg
Y2hlY2tJbWFnZURhdGFDb2xvclNldHRpbmdzKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGN0eEltYWdl
RGF0YSk7Ci0gIGNoZWNrSW1hZ2VEYXRhQ29sb3JWYWx1ZXMoY2FudmFzQ29sb3JTZXR0aW5ncywg
Y3R4SW1hZ2VEYXRhLCAnbm9CbGFuaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeFdp
ZHRoLCB4SGVpZ2h0LCAnaXNXQ0dfVTh0b1NSR0JfVTgnKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJp
b3NQdXRJbWFnZURhdGFEeER5ID0gW107Ci1mb3IgKHZhciBpID0gMDsgaSA8IGNhbnZhc0NvbG9y
U2V0dGluZ3NTZXQubGVuZ3RoOyBpKyspIHsKLSAgZm9yICh2YXIgaiA9IDA7IGogPCBpbWFnZURh
dGFDb2xvclNldHRpbmdzU2V0Lmxlbmd0aDsgaisrKSB7Ci0gICAgdmFyIG1lc3NhZ2UgPSAiVGVz
dCBwdXRJbWFnZURhdGEoaW1hZ2VkYXRhLCBkeCwgZHkpOiAiICsKLSAgICAgICAgICAgICAgICBj
YW52YXNDb2xvclNldHRpbmdzU2V0W2ldLm5hbWUgKyAiIGNhbnZhcywgIiArCi0gICAgICAgICAg
ICAgICAgaW1hZ2VEYXRhQ29sb3JTZXR0aW5nc1NldFtqXS5uYW1lICsgIiBJbWFnZURhdGEiOwot
ICAgIHRlc3RTY2VuYXJpb3NQdXRJbWFnZURhdGFEeER5LgotICAgICAgICBwdXNoKFttZXNzYWdl
LCBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLmNvbG9yU2V0dGluZ3MsCi0gICAgICAgICAgICAg
IGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXRbal0uaW1hZ2VEYXRhXSk7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gcnVuVGVzdFB1dEltYWdlRGF0YUR4RHlUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0ZXN0U2NlbmFyaW9zUHV0SW1hZ2VEYXRhRHhEeS5sZW5ndGg7IGkrKyl7Ci0gICAgdmFy
IHQgPSB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgcnVuVGVzdFB1dEltYWdlRGF0YUR4RHkoCi0g
ICAgICAgIHRlc3RTY2VuYXJpb3NQdXRJbWFnZURhdGFEeER5W2ldWzFdLCB0ZXN0U2NlbmFyaW9z
UHV0SW1hZ2VEYXRhRHhEeVtpXVsyXSk7Ci0gICAgfSwgdGVzdFNjZW5hcmlvc1B1dEltYWdlRGF0
YUR4RHlbaV1bMF0pOwotICB9Ci19Ci1ydW5UZXN0UHV0SW1hZ2VEYXRhRHhEeVRlc3RzKCk7Ci0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vICogSW1hZ2VEYXRhIGltYWdlRGF0YSA9IGN0
eC5jcmVhdGVJbWFnZURhdGEoaW1hZ2VkYXRhKTsKLS8vIENvbG9yIGNvbnZlcnNpb24sIGlmIG5l
ZWRlZCwgdG8gdGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuIFRoZQotLy8gcmV0dXJu
ZWQgaW1hZ2VEYXRhIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjay4KLQotZnVuY3Rpb24gcnVu
VGVzdENyZWF0ZUltYWdlRGF0YUZyb21JbWFnZURhdGEoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1h
Z2VEYXRhKSB7Ci0gIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKLSAgY2FudmFzLndpZHRoID0geFdpZHRoICogMjsKLSAgY2FudmFzLmhlaWdodCA9IHhIZWln
aHQgKiAyOwotICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgIHtjb2xv
clNwYWNlOiBjYW52YXNDb2xvclNldHRpbmdzLmNvbG9yU3BhY2UsCi0gICAgICAgcGl4ZWxGb3Jt
YXQ6IGNhbnZhc0NvbG9yU2V0dGluZ3MucGl4ZWxGb3JtYXR9KTsKLSAgdmFyIGN0eEltYWdlRGF0
YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoaW1hZ2VEYXRhKTsKLSAgY2hlY2tJbWFnZURhdGFDb2xv
clNldHRpbmdzKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGN0eEltYWdlRGF0YSk7Ci0gIGNoZWNrSW1h
Z2VEYXRhQ29sb3JWYWx1ZXMoY2FudmFzQ29sb3JTZXR0aW5ncywgY3R4SW1hZ2VEYXRhLCAnaXNC
bGFuaycpOwotfQotCi12YXIgdGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0YUZyb21JbWFnZURh
dGEgPSBbXTsKLWZvciAodmFyIGkgPSAwOyBpIDwgY2FudmFzQ29sb3JTZXR0aW5nc1NldC5sZW5n
dGg7IGkrKykgewotICBmb3IgKHZhciBqID0gMDsgaiA8IGltYWdlRGF0YUNvbG9yU2V0dGluZ3NT
ZXQubGVuZ3RoOyBqKyspIHsKLSAgICB2YXIgbWVzc2FnZSA9ICJUZXN0IGNyZWF0ZUltYWdlRGF0
YShpbWFnZWRhdGEpOiAiICsKLSAgICAgICAgICAgICAgICBjYW52YXNDb2xvclNldHRpbmdzU2V0
W2ldLm5hbWUgKyAiIGNhbnZhcywgIiArCi0gICAgICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JT
ZXR0aW5nc1NldFtqXS5uYW1lICsgIiBJbWFnZURhdGEiOwotICAgIHRlc3RTY2VuYXJpb3NDcmVh
dGVJbWFnZURhdGFGcm9tSW1hZ2VEYXRhLgotICAgICAgICBwdXNoKFttZXNzYWdlLCBjYW52YXND
b2xvclNldHRpbmdzU2V0W2ldLmNvbG9yU2V0dGluZ3MsCi0gICAgICAgICAgICAgIGltYWdlRGF0
YUNvbG9yU2V0dGluZ3NTZXRbal0uaW1hZ2VEYXRhXSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVu
VGVzdENyZWF0ZUltYWdlRGF0YUZyb21JbWFnZURhdGFUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhRnJvbUltYWdlRGF0YS5sZW5ndGg7
IGkrKyl7Ci0gICAgdmFyIHQgPSB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgcnVuVGVzdENyZWF0
ZUltYWdlRGF0YUZyb21JbWFnZURhdGEoCi0gICAgICAgIHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFn
ZURhdGFGcm9tSW1hZ2VEYXRhW2ldWzFdLAotICAgICAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1h
Z2VEYXRhRnJvbUltYWdlRGF0YVtpXVsyXSk7Ci0gICAgfSwgdGVzdFNjZW5hcmlvc0NyZWF0ZUlt
YWdlRGF0YUZyb21JbWFnZURhdGFbaV1bMF0pOwotICB9Ci19Ci1ydW5UZXN0Q3JlYXRlSW1hZ2VE
YXRhRnJvbUltYWdlRGF0YVRlc3RzKCk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8v
ICpJbWFnZURhdGEgY3R4LmNyZWF0ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbWFnZURhdGFD
b2xvclNldHRpbmdzKTsKLS8vIE5vIGNvbG9yIGNvbnZlcnNpb24gdG8gdGhlIGNvbG9yIHNldHRp
bmdzIG9mIHRoZSBjYW52YXMuIEJsYW5rIEltYWdlRGF0YQotLy8gc2hvdWxkIGJlIGNyZWF0ZWQg
YmFzZWQgb24gaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncy4KLQotZnVuY3Rpb24gcnVuVGVzdENyZWF0
ZUltYWdlRGF0YVdIQyhjYW52YXNDb2xvclNldHRpbmdzLCBpbWFnZURhdGFDb2xvclNldHRpbmdz
KSB7Ci0gIHZhciBjYW52YXMgPSBpbml0aWFsaXplQ29sb3JNYW5hZ2VkQ2FudmFzKGNhbnZhc0Nv
bG9yU2V0dGluZ3MpOwotICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gIHdp
ZHRoID0gaGVpZ2h0ID0gMzsKLSAgdmFyIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEo
d2lkdGgsIGhlaWdodCwgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncyk7Ci0gIHZhciBjb2xvclNldHRp
bmdzID0gaW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3MoKTsKLSAgYXNzZXJ0X2VxdWFscyhjb2xv
clNldHRpbmdzLmNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JTZXR0
aW5ncy5jb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICJjb2xvclNwYWNlIHNob3VsZCBtYXRj
aCIpOwotICBhc3NlcnRfZXF1YWxzKGNvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCwKLSAgICAg
ICAgICAgICAgICBpbWFnZURhdGFDb2xvclNldHRpbmdzLnN0b3JhZ2VGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgInN0b3JhZ2VGb3JtYXQgc2hvdWxkIG1hdGNoIik7Ci0gIHZhciBibGFua0RhdGEg
PSBuZXcgQXJyYXkoNCAqIHdpZHRoICogaGVpZ2h0KS5maWxsKDApOwotICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGltYWdlRGF0YS5kYXRhVW5pb24sIGJsYW5rRGF0YSwKLSAgICAgICAgICAgICAgICAg
ICAgICAiSW1hZ2VEYXRhIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjayIpOwotfQotCi12YXIg
dGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0YVdIQyA9IFtdOwotZm9yICh2YXIgaSA9IDA7IGkg
PCBjYW52YXNDb2xvclNldHRpbmdzU2V0Lmxlbmd0aDsgaSsrKSB7Ci0gIGZvciAodmFyIGogPSAw
OyBqIDwgaW1hZ2VEYXRhQ29sb3JTZXR0aW5nc1NldC5sZW5ndGg7IGorKykgewotICAgIG1lc3Nh
Z2UgPSAiVGVzdCBjcmVhdGVJbWFnZURhdGEod2lkdGgsIGhlaWdodCwgaW1hZ2VEYXRhQ29sb3JT
ZXR0aW5ncyk6ICIgKwotICAgICAgICAgICAgICBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLm5h
bWUgKyAiIGNhbnZhcywgIiArCi0gICAgICAgICAgICAgIGltYWdlRGF0YUNvbG9yU2V0dGluZ3NT
ZXRbal0ubmFtZSArICIgSW1hZ2VEYXRhIjsKLSAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VE
YXRhV0hDLgotICAgICAgICBwdXNoKFttZXNzYWdlLCBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ld
LmNvbG9yU2V0dGluZ3MsCi0gICAgICAgICAgICAgIGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXRb
al0uY29sb3JTZXR0aW5nc10pOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RDcmVhdGVJbWFn
ZURhdGFXSENUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zQ3Jl
YXRlSW1hZ2VEYXRhV0hDLmxlbmd0aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgICBydW5UZXN0Q3JlYXRlSW1hZ2VEYXRhV0hDKAotICAgICAgICB0ZXN0U2NlbmFy
aW9zQ3JlYXRlSW1hZ2VEYXRhV0hDW2ldWzFdLAotICAgICAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRl
SW1hZ2VEYXRhV0hDW2ldWzJdKTsKLSAgICB9LCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRh
V0hDW2ldWzBdKTsKLSAgfQotfQotcnVuVGVzdENyZWF0ZUltYWdlRGF0YVdIQ1Rlc3RzKCk7Ci0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vICpJbWFnZURhdGEgY3R4LmNyZWF0ZUltYWdl
RGF0YShkYXRhLCB3aWR0aCwgaGVpZ2h0LCBpbWFnZURhdGFDb2xvclNldHRpbmdzKTsKLS8vIE5v
IGNvbG9yIGNvbnZlcnNpb24gdG8gdGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuIElt
YWdlRGF0YSBpcyBjcmVhdGVkCi0vLyBmcm9tIHBhcmFtICJkYXRhIiB3aXRoIHByb3BlciBzdG9y
YWdlIGZvcm1hdCBhbmQgaXMgdGFnZ2VkIHdpdGggdGhlCi0vLyBDYW52YXNDb2xvclNwYWNlIHdo
aWNoIGlzIGdpdmVuIGluIGltYWdlRGF0YUNvbG9yU2V0dGluZ3MuCi0KLWZ1bmN0aW9uIHJ1blRl
c3RDcmVhdGVJbWFnZURhdGFEV0hDKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSkgewot
ICB2YXIgZGF0YSA9IGltYWdlRGF0YS5kYXRhVW5pb247Ci0gIHdpZHRoID0geFdpZHRoOwotICBo
ZWlnaHQgPSB4SGVpZ2h0OwotICB2YXIgY29sb3JTZXR0aW5ncyA9IGltYWdlRGF0YS5nZXRDb2xv
clNldHRpbmdzKCk7Ci0KLSAgdmFyIGNhbnZhcyA9IGluaXRpYWxpemVDb2xvck1hbmFnZWRDYW52
YXMoY2FudmFzQ29sb3JTZXR0aW5ncyk7Ci0gIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgn
MmQnKTsKLSAgdmFyIG5ld0ltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoZGF0YSwgd2lk
dGgsIGhlaWdodCwgY29sb3JTZXR0aW5ncyk7Ci0gIHZhciBuZXdDb2xvclNldHRpbmdzID0gbmV3
SW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3MoKTsKLSAgYXNzZXJ0X2VxdWFscyhuZXdDb2xvclNl
dHRpbmdzLmNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncy5jb2xvclNw
YWNlLAotICAgICAgICAgICAgICAgICJjb2xvclNwYWNlIHNob3VsZCBtYXRjaCIpOwotICBhc3Nl
cnRfZXF1YWxzKG5ld0NvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCwKLSAgICAgICAgICAgICAg
ICBjb2xvclNldHRpbmdzLnN0b3JhZ2VGb3JtYXQsCi0gICAgICAgICAgICAgICAgInN0b3JhZ2VG
b3JtYXQgc2hvdWxkIG1hdGNoIik7Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMobmV3SW1hZ2VEYXRh
LmRhdGFVbmlvbiwgaW1hZ2VEYXRhLmRhdGFVbmlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAi
SW1hZ2VEYXRhIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjayIpOwotfQotCi12YXIgdGVzdFNj
ZW5hcmlvc0NyZWF0ZUltYWdlRGF0YURXSEMgPSBbXTsKLWZvciAodmFyIGkgPSAwOyBpIDwgY2Fu
dmFzQ29sb3JTZXR0aW5nc1NldC5sZW5ndGg7IGkrKykgewotICBmb3IgKHZhciBqID0gMDsgaiA8
IGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXQubGVuZ3RoOyBqKyspIHsKLSAgICBtZXNzYWdlID0g
IlRlc3QgY3JlYXRlSW1hZ2VEYXRhKGRhdGEsIHdpZHRoLCBoZWlnaHQsIGltYWdlRGF0YUNvbG9y
U2V0dGluZ3MpOiAiICsKLSAgICAgICAgICAgICAgY2FudmFzQ29sb3JTZXR0aW5nc1NldFtpXS5u
YW1lICsgIiBjYW52YXMsICIgKwotICAgICAgICAgICAgICBpbWFnZURhdGFDb2xvclNldHRpbmdz
U2V0W2pdLm5hbWUgKyAiIEltYWdlRGF0YSI7Ci0gICAgdGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdl
RGF0YURXSEMuCi0gICAgICAgIHB1c2goW21lc3NhZ2UsIGNhbnZhc0NvbG9yU2V0dGluZ3NTZXRb
aV0uY29sb3JTZXR0aW5ncywKLSAgICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JTZXR0aW5nc1Nl
dFtqXS5pbWFnZURhdGFdKTsKLSAgfQotfQotCi1mdW5jdGlvbiBydW5UZXN0Q3JlYXRlSW1hZ2VE
YXRhRFdIQ1Rlc3RzKCkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RTY2VuYXJpb3NDcmVh
dGVJbWFnZURhdGFEV0hDLmxlbmd0aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgICBydW5UZXN0Q3JlYXRlSW1hZ2VEYXRhRFdIQygKLSAgICAgICAgdGVzdFNjZW5h
cmlvc0NyZWF0ZUltYWdlRGF0YURXSENbaV1bMV0sCi0gICAgICAgIHRlc3RTY2VuYXJpb3NDcmVh
dGVJbWFnZURhdGFEV0hDW2ldWzJdKTsKLSAgICB9LCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VE
YXRhRFdIQ1tpXVswXSk7Ci0gIH0KLX0KLXJ1blRlc3RDcmVhdGVJbWFnZURhdGFEV0hDVGVzdHMo
KTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yU3BhY2UtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURhdGEtY29sb3JTcGFjZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy9pbWFnZURhdGEtY29sb3JTcGFjZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw4
ICswLDAgQEAKLQotRkFJTCBUZXN0IGRlZmF1bHQgY29sb3Igc2V0dGluZ3M6IHt1bmRlZmluZWQs
IHVuZGVmaW5lZH0gLT4ge3NyZ2IsIHVpbnQ4fSBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBp
cyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlMIFRlc3QgZGVmYXVsdCBjb2xvciBzcGFj
ZToge3VuZGVmaW5lZCwgZmxvYXQzMn0gLT4ge3NyZ2IsIGZsb2F0MzJ9IGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJbb2JqZWN0IEZsb2F0MzJBcnJheV0iIGJ1dCBnb3QgIltvYmplY3QgVW5kZWZp
bmVkXSIKLUZBSUwgVGVzdCBkZWZhdWx0IHN0b3JhZ2UgZm9ybWF0OiB7c3JnYiwgdW5kZWZpbmVk
fSAtPiB7c3JnYiwgdWludDh9IGFzc2VydF9hcnJheV9lcXVhbHM6IHZhbHVlIGlzIHVuZGVmaW5l
ZCwgZXhwZWN0ZWQgYXJyYXkKLUZBSUwgVGVzdCBjb2xvciBzZXR0aW5nczoge3NyZ2IsIHVpbnQ4
fSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iIGJ1
dCBnb3QgIltvYmplY3QgVW5kZWZpbmVkXSIKLUZBSUwgVGVzdCBjb2xvciBzZXR0aW5nczoge3Ny
Z2IsIHVpbnQxNn0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIltvYmplY3QgVWludDE2QXJyYXld
IiBidXQgZ290ICJbb2JqZWN0IFVuZGVmaW5lZF0iCi1GQUlMIFRlc3QgY29sb3Igc2V0dGluZ3M6
IHtzcmdiLCBmbG9hdDMyfSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiW29iamVjdCBGbG9hdDMy
QXJyYXldIiBidXQgZ290ICJbb2JqZWN0IFVuZGVmaW5lZF0iCi0KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy9pbWFnZURhdGEtY29sb3JTcGFjZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxl
bWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURhdGEtY29sb3JTcGFjZS5odG1sCShyZXZpc2lv
biAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yU3Bh
Y2UuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGJvZHk+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotCi12YXIgZGF0YVU4ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KFsyNTUsIDE5
MiwgMTI4LCA2NF0pOwotdmFyIGRhdGFVMTYgPSBuZXcgVWludDE2QXJyYXkoWzY1NTM1LCAyNTYq
MTkyLCAyNTYqMTI4LCAyNTYqNjRdKTsKLXZhciBkYXRhRjMyID0gbmV3IEZsb2F0MzJBcnJheShb
MS4wLCAwLjc1LCAwLjUsIDAuMjVdKTsKLQotZnVuY3Rpb24gY2hlY2tEYXRhVHlwZUFnYWluc3RT
dG9yYWdlRm9ybWF0KGRhdGEsIHN0b3JhZ2VGb3JtYXQpIHsKLSAgaWYgKHN0b3JhZ2VGb3JtYXQg
PT0gInVpbnQ4IikKLSAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChkYXRhKSwgIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIik7Ci0gIGVsc2UgaWYgKHN0
b3JhZ2VGb3JtYXQgPT0gInVpbnQxNiIpCi0gICAgYXNzZXJ0X2VxdWFscyhPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwoZGF0YSksICJbb2JqZWN0IFVpbnQxNkFycmF5XSIpOwotICBlbHNl
IGlmIChzdG9yYWdlRm9ybWF0ID09ICJmbG9hdDMyIikKLSAgICBhc3NlcnRfZXF1YWxzKE9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRhKSwgIltvYmplY3QgRmxvYXQzMkFycmF5XSIp
OwotfQotCi1mdW5jdGlvbiBjaGVja0NvbG9yU2V0dGluZ3MoY29sb3JTZXR0aW5ncywgY29sb3JT
cGFjZSwgc3RvcmFnZUZvcm1hdCkgewotICBhc3NlcnRfZXF1YWxzKGNvbG9yU2V0dGluZ3MuY29s
b3JTcGFjZSwgY29sb3JTcGFjZSk7Ci0gIGFzc2VydF9lcXVhbHMoY29sb3JTZXR0aW5ncy5zdG9y
YWdlRm9ybWF0LCBzdG9yYWdlRm9ybWF0KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdChjb2xvclNl
dHRpbmdzLCBleHBlY3RlZENvbG9yU2V0dGluZ3MpIHsKLSAgdmFyIGNhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQo
IjJkIik7Ci0KLSAgaW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YSgxLCAxLCBjb2xvclNl
dHRpbmdzKTsKLSAgY2hlY2tEYXRhVHlwZUFnYWluc3RTdG9yYWdlRm9ybWF0KGltYWdlRGF0YS5k
YXRhVW5pb24sIGNvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCk7Ci0gIGFzc2VydF9hcnJheV9l
cXVhbHMoaW1hZ2VEYXRhLmRhdGFVbmlvbiwgWzAsIDAsIDAsIDBdKTsKLSAgY2hlY2tDb2xvclNl
dHRpbmdzKGltYWdlRGF0YS5nZXRDb2xvclNldHRpbmdzKCksIGV4cGVjdGVkQ29sb3JTZXR0aW5n
cy5jb2xvclNwYWNlLCBleHBlY3RlZENvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCk7Ci0KLSAg
aW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YShkYXRhVTgsIDEsIDEsIGNvbG9yU2V0dGlu
Z3MpOwotICBhc3NlcnRfZXF1YWxzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbWFn
ZURhdGEuZGF0YVVuaW9uKSwgIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIik7Ci0gIGFzc2Vy
dF9hcnJheV9lcXVhbHMoaW1hZ2VEYXRhLmRhdGFVbmlvbiwgZGF0YVU4KTsKLSAgY2hlY2tDb2xv
clNldHRpbmdzKGltYWdlRGF0YS5nZXRDb2xvclNldHRpbmdzKCksIGV4cGVjdGVkQ29sb3JTZXR0
aW5ncy5jb2xvclNwYWNlLCAidWludDgiKTsKLQotICBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1h
Z2VEYXRhKGRhdGFVMTYsIDEsIDEsIGNvbG9yU2V0dGluZ3MpOwotICBhc3NlcnRfZXF1YWxzKE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbWFnZURhdGEuZGF0YVVuaW9uKSwgIltvYmpl
Y3QgVWludDE2QXJyYXldIik7Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMoaW1hZ2VEYXRhLmRhdGFV
bmlvbiwgZGF0YVUxNik7Ci0gIGNoZWNrQ29sb3JTZXR0aW5ncyhpbWFnZURhdGEuZ2V0Q29sb3JT
ZXR0aW5ncygpLCBleHBlY3RlZENvbG9yU2V0dGluZ3MuY29sb3JTcGFjZSwgInVpbnQxNiIpOwot
Ci0gIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoZGF0YUYzMiwgMSwgMSwgY29sb3JT
ZXR0aW5ncyk7Ci0gIGFzc2VydF9lcXVhbHMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
KGltYWdlRGF0YS5kYXRhVW5pb24pLCAiW29iamVjdCBGbG9hdDMyQXJyYXldIik7Ci0gIGFzc2Vy
dF9hcnJheV9lcXVhbHMoaW1hZ2VEYXRhLmRhdGFVbmlvbiwgZGF0YUYzMik7Ci0gIGNoZWNrQ29s
b3JTZXR0aW5ncyhpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygpLCBleHBlY3RlZENvbG9yU2V0
dGluZ3MuY29sb3JTcGFjZSwgImZsb2F0MzIiKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJpb3MgPSBb
Ci0gICAgWyJUZXN0IGRlZmF1bHQgY29sb3Igc2V0dGluZ3M6IHt1bmRlZmluZWQsIHVuZGVmaW5l
ZH0gLT4ge3NyZ2IsIHVpbnQ4fSIsIHt9LCB7Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9y
bWF0OiAidWludDgifV0sCi0KLSAgICBbIlRlc3QgZGVmYXVsdCBjb2xvciBzcGFjZToge3VuZGVm
aW5lZCwgZmxvYXQzMn0gLT4ge3NyZ2IsIGZsb2F0MzJ9Iiwge3N0b3JhZ2VGb3JtYXQ6ICJmbG9h
dDMyIn0sIHtjb2xvclNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn1dLAot
ICAgIFsiVGVzdCBkZWZhdWx0IHN0b3JhZ2UgZm9ybWF0OiB7c3JnYiwgdW5kZWZpbmVkfSAtPiB7
c3JnYiwgdWludDh9Iiwge2NvbG9yU3BhY2U6ICJzcmdiIn0sIHtjb2xvclNwYWNlOiAic3JnYiIs
IHN0b3JhZ2VGb3JtYXQ6ICJ1aW50OCJ9XSwKLQotICAgIFsiVGVzdCBjb2xvciBzZXR0aW5nczog
e3NyZ2IsIHVpbnQ4fSIsIHtjb2xvclNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50
OCJ9LCB7Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifV0sCi0gICAg
WyJUZXN0IGNvbG9yIHNldHRpbmdzOiB7c3JnYiwgdWludDE2fSIsIHtjb2xvclNwYWNlOiAic3Jn
YiIsIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50MTYifSwge2NvbG9yU3BhY2U6ICJzcmdiIiwgc3RvcmFn
ZUZvcm1hdDogInVpbnQxNiJ9XSwKLSAgICBbIlRlc3QgY29sb3Igc2V0dGluZ3M6IHtzcmdiLCBm
bG9hdDMyfSIsIHtjb2xvclNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn0s
IHtjb2xvclNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn1dLAotXTsKLQot
ZnVuY3Rpb24gcnVuQWxsVGVzdHMoKSB7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFNjZW5h
cmlvcy5sZW5ndGg7IGkrKyl7Ci0gICAgdmFyIHQgPSB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAg
cnVuVGVzdCh0ZXN0U2NlbmFyaW9zW2ldWzFdLCB0ZXN0U2NlbmFyaW9zW2ldWzJdKTsKLSAgICB9
LCB0ZXN0U2NlbmFyaW9zW2ldWzBdKTsKLSAgfQotfQotcnVuQWxsVGVzdHMoKTsKLQotPC9zY3Jp
cHQ+Ci08L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VkYXRhLW5v
LWNvbG9yLXNldHRpbmdzLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvaW1hZ2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2lt
YWdlZGF0YS1uby1jb2xvci1zZXR0aW5ncy1jcmFzaC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQpAQCAtMSw0ICswLDAgQEAKLQotRkFJTCBQdXR0aW5nIGEgZmxvYXQtMzIgSW1hZ2VEYXRhIHdp
dGggbm8gY29sb3Igc2V0dGluZ3Mgb24gYSBjb250ZXh0IDJEIHNob3VsZCBub3QgY3Jhc2guIFRo
ZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlCi1GQUlMIFB1dHRpbmcgYSB1aW50LTE2IElt
YWdlRGF0YSB3aXRoIG5vIGNvbG9yIHNldHRpbmdzIG9uIGEgY29udGV4dCAyRCBzaG91bGQgbm90
IGNyYXNoLiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotCkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvaW1hZ2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlZGF0YS1uby1jb2xv
ci1zZXR0aW5ncy1jcmFzaC5odG1sCShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvaW1hZ2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci10ZXN0KGZ1bmN0
aW9uKCkgewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge30pCi0g
ICAgdmFyIGRhdGFGbG9hdDMyID0gbmV3IEZsb2F0MzJBcnJheSg0KTsKLSAgICB2YXIgaW1hZ2VE
YXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YShkYXRhRmxvYXQzMiwgMSwgMSwKLSAgICAgICAge30p
OwotICAgIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCA1LCA1KTsKLSAgICB2YXIgZGF0YSA9
IGN0eC5nZXRJbWFnZURhdGEoNSw1LDEsMSkuZGF0YVVuaW9uOwotfSwgIlB1dHRpbmcgYSBmbG9h
dC0zMiBJbWFnZURhdGEgd2l0aCBubyBjb2xvciBzZXR0aW5ncyBvbiBhIGNvbnRleHQgMkQgc2hv
dWxkIG5vdCBjcmFzaC4iKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcsCi0gICAgICAgIHt9KQotICAgIHZhciBkYXRhVWludDE2ID0gbmV3IFVp
bnQxNkFycmF5KDQpOwotICAgIHZhciBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKGRh
dGFVaW50MTYsIDEsIDEsCi0gICAgICAgIHt9KTsKLSAgICBjdHgucHV0SW1hZ2VEYXRhKGltYWdl
RGF0YSwgNSwgNSk7Ci0gICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDUsNSwxLDEpLmRh
dGFVbmlvbjsKLX0sICJQdXR0aW5nIGEgdWludC0xNiBJbWFnZURhdGEgd2l0aCBubyBjb2xvciBz
ZXR0aW5ncyBvbiBhIGNvbnRleHQgMkQgc2hvdWxkIG5vdCBjcmFzaC4iKTsKLTwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy90cmFuc2ZlckZyb21JbWFnZUJpdG1hcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzL3RyYW5zZmVyRnJvbUltYWdlQml0bWFwLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL3RyYW5zZmVy
RnJvbUltYWdlQml0bWFwLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwICswLDAg
QEAKLQotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNv
bG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMC41LCBpbnRlcm1l
ZGlhdGUgY29sb3Igc3BhY2U6IG5vbmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpIgotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6
IHVpbnQ4LCBhbHBoYTogMC41LCBpbnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IGRlZmF1bHQgcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0
aCcpIgotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNv
bG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMSwgaW50ZXJtZWRp
YXRlIGNvbG9yIHNwYWNlOiBub25lIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKSIKLUZBSUwgVGVzdGluZyBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQ6IFNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1
aW50OCwgYWxwaGE6IDEsIGludGVybWVkaWF0ZSBjb2xvciBzcGFjZTogZGVmYXVsdCBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJyki
Ci1GQUlMIFRlc3RpbmcgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OiBTb3VyY2UgY29sb3Ig
c3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogZmxvYXQxNiwgYWxwaGE6IDAuNSwgaW50ZXJtZWRp
YXRlIGNvbG9yIHNwYWNlOiBub25lIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKSIKLUZBSUwgVGVzdGluZyBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQ6IFNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBm
bG9hdDE2LCBhbHBoYTogMC41LCBpbnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IGRlZmF1bHQgcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0
aCcpIgotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNv
bG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAxLCBpbnRlcm1l
ZGlhdGUgY29sb3Igc3BhY2U6IG5vbmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpIgotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6
IGZsb2F0MTYsIGFscGhhOiAxLCBpbnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IGRlZmF1bHQgcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0
aCcpIgotCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvdHJhbnNmZXJGcm9tSW1hZ2VC
aXRtYXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvdHJhbnNm
ZXJGcm9tSW1hZ2VCaXRtYXAuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzL3RyYW5zZmVyRnJvbUltYWdlQml0bWFwLmh0bWwJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi0vLyBUaGlzIHRlc3QgZXhh
bWluZXMgdGhlIGNvbG9yIG1hbmFnZWQgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LgotLy8g
IC0gV2UgZmlyc3QgZHJhdyBvbiAyRCBjYW52YXMgd2l0aCBkaWZmZXJlbnQgY29sb3Igc3BhY2Ug
YW5kIGFscGhhCi0vLyAgICBwcm9wZXJ0aWVzLgotLy8gIC0gTmV4dCwgdGhlIGNhbnZhcyBpcyB1
c2VkIGFzIGEgc291cmNlIGltYWdlIHRvIGNyZWF0ZSBhbiBJbWFnZUJpdG1hcC4KLS8vICAgIERp
ZmZlcmVudCBjb2xvclNwYWNlQ29udmVyc2lvbiB2YWx1ZXMgYXJlIHRlc3RlZCB3aGVuIGNyZWF0
aW5nIHRoZQotLy8gICAgaW50ZXJtZWRpYXRlIEltYWdlQml0bWFwIG9iamVjdC4KLS8vICAtIE5l
eHQsIEltYWdlQml0bWFwIGlzIHRyYW5zZmVycmVkIHRvIGFuIEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dC4KLS8vICAtIFNpbmNlIHdlIGNhbm5vdCByZWFkIGJhY2sgcGl4ZWxzIGZyb20gSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LCB3ZQotLy8gICAgZHJhdyBpdCB0byBhbm90aGVyIDJE
IGNhbnZhcyBhbmQgcmVhZCBiYWNrIHRoZSBwaXhlbHMuCi0vLyAgLSBGaW5hbGx5LCB3ZSBjb21w
YXJlIHRoZSBwaXhlbHMgcmVhZCBmcm9tIHRoZSBmaXJzdCAyRCBjYW52YXMgd2l0aCB0aG9zZQot
Ly8gICAgcmVhZCBmcm9tIHRoZSBmaW5hbCAyRCBjYW52YXMuIFdlIGV4cGVjdCB0aGVtIHRvIG1h
dGNoIHdpdGggc29tZQotLy8gICAgdG9sZXJhbmNlLgotCi1mdW5jdGlvbiB0ZXN0UGl4ZWxzKGFj
dHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMsIHRlc3RTY2VuYXJpbykKLXsKLSAgICB2YXIgdG9s
ZXJhbmNlID0gMDsKLSAgICBpZiAodGVzdFNjZW5hcmlvLnBpeGVsRm9ybWF0ID09ICJmbG9hdDE2
IikKLSAgICAgICAgdG9sZXJhbmNlID0gMC4wMTsKLQotICAgIGFzc2VydF9hcnJheV9hcHByb3hf
ZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMsIHRvbGVyYW5jZSk7Ci19Ci0KLWZ1
bmN0aW9uIGdlbmVyYXRlRmlsbFN0eWxlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSB7Ci0gICAg
cmV0dXJuICJyZ2JhKCIgKyByZWQgKyAiLCIgKyBncmVlbiArICIsIiArIGJsdWUgKyAiLCIgKyBh
bHBoYSArICIpIjsKLX0KLQotZnVuY3Rpb24gZ2VuZXJhdGVFeHBlY3RlZFJlc3VsdCh0ZXN0U2Nl
bmFyaW8sIGNhbnZhcykKLXsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywg
e2NvbG9yU3BhY2U6IHRlc3RTY2VuYXJpby5jb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQ6IHRlc3RTY2VuYXJpby5waXhlbEZvcm1h
dH0pOwotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgxNTUsIDI3LCAyNywg
dGVzdFNjZW5hcmlvLmFscGhhKTsKLSAgICBjdHguZmlsbFJlY3QoMCwgMCwgMSwgMSk7Ci0gICAg
Y3R4LmZpbGxTdHlsZSA9IGdlbmVyYXRlRmlsbFN0eWxlKDI3LCAxNTUsIDI3LCB0ZXN0U2NlbmFy
aW8uYWxwaGEpOwotICAgIGN0eC5maWxsUmVjdCgxLCAwLCAxLCAxKTsKLSAgICBjdHguZmlsbFN0
eWxlID0gZ2VuZXJhdGVGaWxsU3R5bGUoMjcsIDI3LCAxNTUsIHRlc3RTY2VuYXJpby5hbHBoYSk7
Ci0gICAgY3R4LmZpbGxSZWN0KDAsIDEsIDEsIDEpOwotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5l
cmF0ZUZpbGxTdHlsZSgyNywgMjcsIDI3LCB0ZXN0U2NlbmFyaW8uYWxwaGEpOwotICAgIGN0eC5m
aWxsUmVjdCgxLCAxLCAxLCAxKTsKLSAgICByZXR1cm4gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAy
LCAyKS5kYXRhVW5pb247Ci19Ci0KLWZ1bmN0aW9uIGdlbmVyYXRlVGVzdE5hbWUodGVzdFNjZW5h
cmlvKSB7Ci0gICAgdmFyIHN0ciA9ICJUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDoiICsKLSAgICAgICAgICAgICAgIiBTb3VyY2UgY29sb3Igc3BhY2U6ICIgKyB0ZXN0U2NlbmFy
aW8uY29sb3JTcGFjZSArCi0gICAgICAgICAgICAgICIsIHBpeGVsIGZvcm1hdDogIiArIHRlc3RT
Y2VuYXJpby5waXhlbEZvcm1hdCArCi0gICAgICAgICAgICAgICIsIGFscGhhOiAiICsgdGVzdFNj
ZW5hcmlvLmFscGhhICsKLSAgICAgICAgICAgICAgIiwgaW50ZXJtZWRpYXRlIGNvbG9yIHNwYWNl
OiAiICsKLSAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmNvbG9yU3BhY2VDb252ZXJzaW9uOwot
ICAgIHJldHVybiBzdHI7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRyYW5zZmVyRnJvbUltYWdlQml0bWFw
VGVzdCh0ZXN0U2NlbmFyaW8pIHsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzLndpZHRoID0gMjsKLSAgICBjYW52YXMuaGVpZ2h0
ID0gMjsKLSAgICB2YXIgZXhwZWN0ZWRQaXhlbHMgPSBnZW5lcmF0ZUV4cGVjdGVkUmVzdWx0KHRl
c3RTY2VuYXJpbywgY2FudmFzKTsKLQotICAgIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAg
ICAgICAgdmFyIG9wdGlvbnMgPSB7Y29sb3JTcGFjZUNvbnZlcnNpb246IHRlc3RTY2VuYXJpby5j
b2xvclNwYWNlQ29udmVyc2lvbn07Ci0gICAgICAgIHZhciBwcm9taXNlID0gY3JlYXRlSW1hZ2VC
aXRtYXAoY2FudmFzLCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9t
aXNlXSkudGhlbigoW2ltYWdlYml0bWFwXSkgPT4gewotICAgICAgICAgICAgdmFyIGRzdENhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAgICAgICAgZHN0Q2Fu
dmFzLndpZHRoID0gMjsKLSAgICAgICAgICAgIGRzdENhbnZhcy5oZWlnaHQgPSAyOwotICAgICAg
ICAgICAgdmFyIGRzdEN0eCA9IGRzdENhbnZhcy5nZXRDb250ZXh0KCdiaXRtYXByZW5kZXJlcicp
OwotICAgICAgICAgICAgZHN0Q3R4LnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGltYWdlYml0bWFw
KTsKLQotICAgICAgICAgICAgLy8gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IGRvZXMgbm90
IGhhdmUgSW1hZ2VEYXRhLCBzbyB3ZSBkcmF3Ci0gICAgICAgICAgICAvLyBpdCBvbiBhbm90aGVy
IGNhbnZhcyBhbmQgcmVhZCBiYWNrIHRoZSBkYXRhLgotICAgICAgICAgICAgdmFyIGZpbmFsQ2Fu
dmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgICAgICBmaW5h
bENhbnZhcy53aWR0aCA9IDI7Ci0gICAgICAgICAgICBmaW5hbENhbnZhcy5oZWlnaHQgPSAyOwot
ICAgICAgICAgICAgdmFyIGN0eCA9IGZpbmFsQ2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAg
ICAgICAgICAgICB7Y29sb3JTcGFjZTogdGVzdFNjZW5hcmlvLmNvbG9yU3BhY2UsCi0gICAgICAg
ICAgICAgICAgIHBpeGVsRm9ybWF0OiB0ZXN0U2NlbmFyaW8ucGl4ZWxGb3JtYXR9KTsKLSAgICAg
ICAgICAgIGN0eC5kcmF3SW1hZ2UoZHN0Q2FudmFzLCAwLCAwKTsKLSAgICAgICAgICAgIHZhciBh
Y3R1YWxQaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIpLmRhdGFVbmlvbjsKLSAg
ICAgICAgICAgIHRlc3RQaXhlbHMoYWN0dWFsUGl4ZWxzLCBleHBlY3RlZFBpeGVscywgdGVzdFNj
ZW5hcmlvKTsKLSAgICAgICAgfSk7Ci0gICAgICAgfSwgZ2VuZXJhdGVUZXN0TmFtZSh0ZXN0U2Nl
bmFyaW8pKTsKLX0KLQotCi1mdW5jdGlvbiBydW5BbGxUZXN0cygpIHsKLSAgICB2YXIgY29sb3JT
cGFjZXMgPSBbCi0gICAgICAgIHtjb2xvclNwYWNlOiAnc3JnYicsIHBpeGVsRm9ybWF0OiAndWlu
dDgnfSwKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6ICdmbG9hdDE2
J30sCi0gICAgICAgIF07Ci0gICAgdmFyIGFscGhhVmFsdWVzID0gWzAuNSwgMV07Ci0gICAgdmFy
IGNvbG9yU3BhY2VDb252ZXJzaW9ucyA9IFsnbm9uZScsICdkZWZhdWx0J107Ci0KLSAgICB2YXIg
dGVzdFNjZW5hcmlvcyA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sb3JTcGFjZXMu
bGVuZ3RoOyBpKyspCi0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWxwaGFWYWx1ZXMubGVu
Z3RoOyBqKyspCi0gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGNvbG9yU3BhY2VDb252
ZXJzaW9ucy5sZW5ndGg7IGsrKykgewotICAgICAgICAgICAgICAgIHZhciB0ZXN0U2NlbmFyaW8g
PSB7fTsKLSAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uY29sb3JTcGFjZSA9IGNvbG9yU3Bh
Y2VzW2ldLmNvbG9yU3BhY2U7Ci0gICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLnBpeGVsRm9y
bWF0ID0gY29sb3JTcGFjZXNbaV0ucGl4ZWxGb3JtYXQ7Ci0gICAgICAgICAgICAgICAgdGVzdFNj
ZW5hcmlvLmFscGhhID0gYWxwaGFWYWx1ZXNbal07Ci0gICAgICAgICAgICAgICAgdGVzdFNjZW5h
cmlvLmNvbG9yU3BhY2VDb252ZXJzaW9uID0gY29sb3JTcGFjZUNvbnZlcnNpb25zW2tdOwotICAg
ICAgICAgICAgICAgIHRlc3RTY2VuYXJpb3MucHVzaCh0ZXN0U2NlbmFyaW8pOwotICAgICAgICAg
ICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zLmxlbmd0aDsgaSsr
KQotICAgICAgICBydW5UcmFuc2ZlckZyb21JbWFnZUJpdG1hcFRlc3QodGVzdFNjZW5hcmlvc1tp
XSk7Ci19Ci0KLXJ1bkFsbFRlc3RzKCk7Ci0KLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy93M2MtaW1wb3J0LmxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvdzNjLWltcG9ydC5sb2cJKHJl
dmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy93M2MtaW1wb3J0Lmxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMTQsMTcgKzE0LDkgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZQogTm9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9JbWFnZURhdGEtZmlkZWxpdHkuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxl
bWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLWNvbnZlcnRUb0Jsb2It
cm91bmR0cmlwLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFu
YWdlZC10b0Jsb2ItdG9EYXRhVVJMLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2Fu
dmFzLWNvbG9yc3BhY2UtYXJndW1lbnRzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
Y2FudmFzLWNyZWF0ZUltYWdlQml0bWFwLWVfc3JnYi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQt
Y2FudmFzL2NhbnZhcy1jcmVhdGVQdXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2VkLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXctaGlnaC1iaXQtZGVwdGgtaW1hZ2Vz
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1lX3NyZ2Iu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLW9mZnNjcmVl
bkNhbnZhcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1nZXRJbWFnZURh
dGEtZV9zcmdiLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9y
TWFuYWdlZEJlaGF2aW9yLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRh
LWNvbG9yU3BhY2UuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZWRhdGEtbm8t
Y29sb3Itc2V0dGluZ3MtY3Jhc2guaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy90cmFu
c2ZlckZyb21JbWFnZUJpdG1hcC5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnRvLnAzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29s
b3Iuc3BhY2UucDMudG8uc3JnYi5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnRvQmxvYi5wMy5jYW52YXMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNh
bnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0Jsb2Iud2l0aC5wdXRJbWFnZURhdGEuaHRtbAorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxl
bWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMuY2Fu
dmFzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9E
YXRhVVJMLndpdGgucHV0SW1hZ2VEYXRhLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427316</attachid>
            <date>2021-04-28 17:42:32 -0700</date>
            <delta_ts>2021-04-29 09:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225177-20210428174232.patch</filename>
            <type>text/plain</type>
            <size>151344</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NzQyKQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ5IEBACisyMDIxLTA0LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVcGRhdGUgV1BUIHRlc3RzIGluIGh0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHRlc3RzLgorCisgICAgICAgICog
cmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbjoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy50by5wMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50
by5zcmdiLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi5w
My5jYW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9CbG9i
LndpdGgucHV0SW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNl
LnAzLnRvRGF0YVVSTC5wMy5jYW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iu
c3BhY2UucDMudG9EYXRhVVJMLndpdGgucHV0SW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzL0ltYWdlRGF0YS1maWRlbGl0eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
SW1hZ2VEYXRhLWZpZGVsaXR5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9y
TWFuYWdlZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvck1hbmFnZWQtdG9CbG9iLXRvRGF0YVVS
TC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC10
b0Jsb2ItdG9EYXRhVVJMLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yc3Bh
Y2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29s
b3JzcGFjZS1hcmd1bWVudHMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY3JlYXRl
SW1hZ2VCaXRtYXAtZV9zcmdiLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52
YXMtY3JlYXRlSW1hZ2VCaXRtYXAtZV9zcmdiLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2Fu
dmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1jb2xvck1hbmFnZWQtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jcmVhdGVQdXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2Vk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXctaGlnaC1iaXQtZGVwdGgtaW1h
Z2VzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJp
dC1kZXB0aC1pbWFnZXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdl
LWVfc3JnYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFn
ZS1lX3NyZ2IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLW9mZnNj
cmVlbkNhbnZhcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJ
bWFnZS1vZmZzY3JlZW5DYW52YXMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZ2V0
SW1hZ2VEYXRhLWVfc3JnYi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFz
LWdldEltYWdlRGF0YS1lX3NyZ2IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURhdGEt
Y29sb3JNYW5hZ2VkQmVoYXZpb3ItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2lt
YWdlRGF0YS1jb2xvck1hbmFnZWRCZWhhdmlvci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2lt
YWdlRGF0YS1jb2xvclNwYWNlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFn
ZURhdGEtY29sb3JTcGFjZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlZGF0YS1uby1j
b2xvci1zZXR0aW5ncy1jcmFzaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1h
Z2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
dHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
L3RyYW5zZmVyRnJvbUltYWdlQml0bWFwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvdzNjLWlt
cG9ydC5sb2c6CisKIDIwMjEtMDQtMjggIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbY3NzLWdyaWRdIEFjY3VyaXplIGV4cGVjdGVkIHJlc3VsdCB0byAwLjUgcGl4ZWwg
Zm9yIHNvbWUgY29udGVudFNwYWNlQXJvdW5kIHRlc3RzIGluIGFic3BvcwpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhw
ZWN0YXRpb25zLmpzb24JKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9yZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQsNiArMjQ0LDcgQEAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
d2luZG93cy90YXJnZXRpbmctY3Jvc3Mtb3JpZ2luLW5lc3RlZC1icm93c2luZy1jb250ZXh0cy5o
dG1sIjogInNraXAiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzIjogImlt
cG9ydCIsIAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudCI6ICJp
bXBvcnQiLCAKKyAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lk
ZS1nYW11dC1jYW52YXMiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9vZmZzY3JlZW4iOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9yZXNvdXJjZXMiOiAiaW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy90b29scyI6ICJpbXBvcnQiLCAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29s
b3Iuc3BhY2UucDMudG8ucDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NiBAQAorMmQuY29sb3Iuc3BhY2UucDMudG8ucDMKK3Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlz
cGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcworQWN0dWFsIG91
dHB1dDoKKworRkFJTCB0ZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4
IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMgYXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVj
dGVkIDYyICsvLSAyIGJ1dCBnb3QgNTAKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
LzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIERP
IE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IC9odG1sL2NhbnZhcy90
b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMgdGVzdDogMmQuY29sb3Iuc3BhY2Uu
cDMudG8ucDM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRl
c3RzLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2h0bWwvY2Fu
dmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuY3NzIj4KKzxib2R5IGNsYXNzPSJzaG93X291dHB1
dCI+CisKKzxoMT4yZC5jb2xvci5zcGFjZS5wMy50by5wMzwvaDE+Cis8cCBjbGFzcz0iZGVzYyI+
dGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBmcm9tIGRpc3BsYXkg
cDMgdWludDggY2FudmFzPC9wPgorCisKKzxwIGNsYXNzPSJvdXRwdXQiPkFjdHVhbCBvdXRwdXQ6
PC9wPgorPGNhbnZhcyBpZD0iYyIgY2xhc3M9Im91dHB1dCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1
MCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZh
cz4KKworPHVsIGlkPSJkIj48L3VsPgorPHNjcmlwdD4KK3ZhciB0ID0gYXN5bmNfdGVzdCgidGVz
dCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBmcm9tIGRpc3BsYXkgcDMg
dWludDggY2FudmFzIik7CitfYWRkVGVzdChmdW5jdGlvbihjYW52YXMsIGN0eCkgeworCit2YXIg
Y29sb3Jfc3R5bGUgPSAncmdiKDUwLCAxMDAsIDE1MCknOwordmFyIGVwc2lsb24gPSAyOworLy8g
WzAuMjQzMDQsIDAuMzg4MTgsIDAuNTcyMjcsIDEuMF0gKiAyNTUgPSBbNjIsIDk5LCAxNDYsIDI1
NV0KK3ZhciBwaXhlbF9leHBlY3RlZCA9IFs2MiwgOTksIDE0NiwgMjU1XTsKK2N0eC5maWxsU3R5
bGUgPSBjb2xvcl9zdHlsZTsKK2N0eC5maWxsUmVjdCgwLCAwLCAxMCwgMTApOworCit2YXIgcGl4
ZWwgPSBjdHguZ2V0SW1hZ2VEYXRhKDUsIDUsIDEsIDEsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1w
MyIsIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50OCJ9KS5kYXRhOworX2Fzc2VydFNhbWUocGl4ZWwubGVu
Z3RoLCBwaXhlbF9leHBlY3RlZC5sZW5ndGgsICJwaXhlbC5sZW5ndGgiLCAicGl4ZWxfZXhwZWN0
ZWQubGVuZ3RoIik7Cithc3NlcnRfYXBwcm94X2VxdWFscyhwaXhlbFswXSwgcGl4ZWxfZXhwZWN0
ZWRbMF0sIDIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMocGl4ZWxbMV0sIHBpeGVsX2V4cGVjdGVk
WzFdLCAyKTsKK2Fzc2VydF9hcHByb3hfZXF1YWxzKHBpeGVsWzJdLCBwaXhlbF9leHBlY3RlZFsy
XSwgMik7Cithc3NlcnRfYXBwcm94X2VxdWFscyhwaXhlbFszXSwgcGl4ZWxfZXhwZWN0ZWRbM10s
IDIpOworCisKK30sIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG8uc3JnYi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnRvLnNyZ2ItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5zcmdiLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKzJkLmNvbG9yLnNwYWNlLnAzLnRvLnNy
Z2IKK3Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JzYiBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAz
IHVpbnQ4IGNhbnZhcworQWN0dWFsIG91dHB1dDoKKworUEFTUyB0ZXN0IGdldEltYWdlRGF0YSB3
aXRoIHNyc2IgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMKKwpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnNyZ2IuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMu
dG8uc3JnYi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy50by5zcmdiLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRs
ZT5DYW52YXMgdGVzdDogMmQuY29sb3Iuc3BhY2UucDMudG8uc3JnYjwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0
cy5jc3MiPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9yLnNwYWNl
LnAzLnRvLnNyZ2I8L2gxPgorPHAgY2xhc3M9ImRlc2MiPnRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGgg
c3JzYiBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhczwvcD4KKworCis8cCBj
bGFzcz0ib3V0cHV0Ij5BY3R1YWwgb3V0cHV0OjwvcD4KKzxjYW52YXMgaWQ9ImMiIGNsYXNzPSJv
dXRwdXQiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjxwIGNsYXNzPSJmYWxsYmFjayI+RkFJTCAo
ZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzx1bCBpZD0iZCI+PC91bD4KKzxzY3Jp
cHQ+Cit2YXIgdCA9IGFzeW5jX3Rlc3QoInRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JzYiBhbmQg
dWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcyIpOworX2FkZFRlc3QoZnVuY3Rpb24o
Y2FudmFzLCBjdHgpIHsKKwordmFyIGNvbG9yX3N0eWxlID0gJ3JnYig1MCwgMTAwLCAxNTApJzsK
K3ZhciBlcHNpbG9uID0gMjsKK3ZhciBwaXhlbF9leHBlY3RlZCA9IFs1MCwgMTAwLCAxNTAsIDI1
NV07CitjdHguZmlsbFN0eWxlID0gY29sb3Jfc3R5bGU7CitjdHguZmlsbFJlY3QoMCwgMCwgMTAs
IDEwKTsKKwordmFyIHBpeGVsID0gY3R4LmdldEltYWdlRGF0YSg1LCA1LCAxLCAxLCB7Y29sb3JT
cGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifSkuZGF0YTsKK19hc3NlcnRTYW1l
KHBpeGVsLmxlbmd0aCwgcGl4ZWxfZXhwZWN0ZWQubGVuZ3RoLCAicGl4ZWwubGVuZ3RoIiwgInBp
eGVsX2V4cGVjdGVkLmxlbmd0aCIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMocGl4ZWxbMF0sIHBp
eGVsX2V4cGVjdGVkWzBdLCAyKTsKK2Fzc2VydF9hcHByb3hfZXF1YWxzKHBpeGVsWzFdLCBwaXhl
bF9leHBlY3RlZFsxXSwgMik7Cithc3NlcnRfYXBwcm94X2VxdWFscyhwaXhlbFsyXSwgcGl4ZWxf
ZXhwZWN0ZWRbMl0sIDIpOworYXNzZXJ0X2FwcHJveF9lcXVhbHMocGl4ZWxbM10sIHBpeGVsX2V4
cGVjdGVkWzNdLCAyKTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3Nj
cmlwdD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAz
LnRvQmxvYi5wMy5jYW52YXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0Jsb2IucDMuY2FudmFzLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iu
c3BhY2UucDMudG9CbG9iLnAzLmNhbnZhcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy50b0Jsb2IucDMuY2FudmFzCit0ZXN0IGlm
IHRvYmxvYiByZXR1cm5zIHAzIGRhdGEgZnJvbSBwMyBjb2xvciBzcGFjZSBjYW52YXMKK0FjdHVh
bCBvdXRwdXQ6CisKK1BBU1MgdGVzdCBpZiB0b2Jsb2IgcmV0dXJucyBwMyBkYXRhIGZyb20gcDMg
Y29sb3Igc3BhY2UgY2FudmFzCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5j
b2xvci5zcGFjZS5wMy50b0Jsb2IucDMuY2FudmFzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi5wMy5jYW52YXMuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3Bh
Y2UucDMudG9CbG9iLnAzLmNhbnZhcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLSBETyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBiZWVu
IGdlbmVyYXRlZCBieSAvaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0bGU+
Q2FudmFzIHRlc3Q6IDJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi5wMy5jYW52YXM8L3RpdGxlPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2h0bWwvY2FudmFzL3Jlc291cmNlcy9jYW52
YXMtdGVzdHMuY3NzIj4KKzxib2R5IGNsYXNzPSJzaG93X291dHB1dCI+CisKKzxoMT4yZC5jb2xv
ci5zcGFjZS5wMy50b0Jsb2IucDMuY2FudmFzPC9oMT4KKzxwIGNsYXNzPSJkZXNjIj50ZXN0IGlm
IHRvYmxvYiByZXR1cm5zIHAzIGRhdGEgZnJvbSBwMyBjb2xvciBzcGFjZSBjYW52YXM8L3A+CisK
KworPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBj
bGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFsbGJhY2si
PkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+
Cis8c2NyaXB0PgordmFyIHQgPSBhc3luY190ZXN0KCJ0ZXN0IGlmIHRvYmxvYiByZXR1cm5zIHAz
IGRhdGEgZnJvbSBwMyBjb2xvciBzcGFjZSBjYW52YXMiKTsKK19hZGRUZXN0KGZ1bmN0aW9uKGNh
bnZhcywgY3R4KSB7CisKK2N0eC5maWxsU3R5bGUgPSAicmdiYSgxNTUsIDI3LCAyNywgMSkiOwor
Y3R4LmZpbGxSZWN0KDAsIDAsIDEsIDEpOworY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAxNTUs
IDI3LCAwKSI7CitjdHguZmlsbFJlY3QoMSwgMCwgMSwgMSk7CitjdHguZmlsbFN0eWxlID0gInJn
YmEoMjcsIDI3LCAxNTUsIDAuNSkiOworY3R4LmZpbGxSZWN0KDAsIDEsIDEsIDEpOworY3R4LmZp
bGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMjcsIDAuNSkiOworY3R4LmZpbGxSZWN0KDEsIDEsIDEs
IDEpOworZXhwZWN0ZWRQaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIsIHtjb2xv
clNwYWNlOiAiZGlzcGxheS1wMyJ9KS5kYXRhOworCit2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsK
K2ltYWdlLm9ubG9hZCA9IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oKSB7CisgICAgdmFyIGRz
dENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGRzdENhbnZh
cy53aWR0aCA9IDI7CisgICAgZHN0Q2FudmFzLmhlaWdodCA9IDI7CisgICAgdmFyIGN0eCA9IGRz
dENhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKyAg
ICBjdHguZHJhd0ltYWdlKGltYWdlLCAwLCAwKTsKKyAgICB2YXIgYWN0dWFsUGl4ZWxzID0gY3R4
LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyLCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSkuZGF0
YTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWxQaXhlbHMsIGV4cGVjdGVk
UGl4ZWxzLCAyKTsKK30pOworCitjYW52YXMudG9CbG9iKGZ1bmN0aW9uKGJsb2IpIHsKKyAgICB2
YXIgdXJsQ3JlYXRvciA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDsKKyAgICBpbWFn
ZS5zcmMgPSB1cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKK30sICdpbWFnZS9wbmcn
LCAxKTsKKworCit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi53
aXRoLnB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi53aXRoLnB1dEltYWdlRGF0YS1l
eHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJk
LmNvbG9yLnNwYWNlLnAzLnRvQmxvYi53aXRoLnB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACisyZC5jb2xvci5zcGFjZS5wMy50b0Jsb2Iud2l0
aC5wdXRJbWFnZURhdGEKK1VzZSBwdXRJbWFnZURhdGEgdG8gcHV0IHNvbWUgcDMgZGF0YSBpbiBj
YW52YXMgYW5kIHRlc3QgaWYgdG9CbG9iIHJldHVybnMgdGhlIHNhbWUgZGF0YQorQWN0dWFsIG91
dHB1dDoKKworUEFTUyBVc2UgcHV0SW1hZ2VEYXRhIHRvIHB1dCBzb21lIHAzIGRhdGEgaW4gY2Fu
dmFzIGFuZCB0ZXN0IGlmIHRvQmxvYiByZXR1cm5zIHRoZSBzYW1lIGRhdGEKKwpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi53aXRoLnB1dElt
YWdlRGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5j
b2xvci5zcGFjZS5wMy50b0Jsb2Iud2l0aC5wdXRJbWFnZURhdGEuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9CbG9iLndp
dGgucHV0SW1hZ2VEYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8IS0tIERPIE5PVCBFRElUISBUaGlzIHRlc3QgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IC9odG1sL2NhbnZhcy90b29scy9nZW50ZXN0LnB5LiAtLT4KKzx0aXRsZT5DYW52YXMg
dGVzdDogMmQuY29sb3Iuc3BhY2UucDMudG9CbG9iLndpdGgucHV0SW1hZ2VEYXRhPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9odG1sL2NhbnZhcy9yZXNvdXJjZXMvY2Fu
dmFzLXRlc3RzLmNzcyI+Cis8Ym9keSBjbGFzcz0ic2hvd19vdXRwdXQiPgorCis8aDE+MmQuY29s
b3Iuc3BhY2UucDMudG9CbG9iLndpdGgucHV0SW1hZ2VEYXRhPC9oMT4KKzxwIGNsYXNzPSJkZXNj
Ij5Vc2UgcHV0SW1hZ2VEYXRhIHRvIHB1dCBzb21lIHAzIGRhdGEgaW4gY2FudmFzIGFuZCB0ZXN0
IGlmIHRvQmxvYiByZXR1cm5zIHRoZSBzYW1lIGRhdGE8L3A+CisKKworPHAgY2xhc3M9Im91dHB1
dCI+QWN0dWFsIG91dHB1dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBjbGFzcz0ib3V0cHV0IiB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjUwIj48cCBjbGFzcz0iZmFsbGJhY2siPkZBSUwgKGZhbGxiYWNrIGNv
bnRlbnQpPC9wPjwvY2FudmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+Cis8c2NyaXB0PgordmFyIHQg
PSBhc3luY190ZXN0KCJVc2UgcHV0SW1hZ2VEYXRhIHRvIHB1dCBzb21lIHAzIGRhdGEgaW4gY2Fu
dmFzIGFuZCB0ZXN0IGlmIHRvQmxvYiByZXR1cm5zIHRoZSBzYW1lIGRhdGEiKTsKK19hZGRUZXN0
KGZ1bmN0aW9uKGNhbnZhcywgY3R4KSB7CisKK2NhbnZhcy53aWR0aCA9IDI7CitjYW52YXMuaGVp
Z2h0ID0gMjsKKworLy8gQ3JlYXRlIGFuIEltYWdlRGF0YSB1c2luZyBjcmVhdGVJbWFnZURhdGEg
YW5kIHBvcHVsYXRlIGl0cyBkYXRhIGFycmF5LgordmFyIGltYWdlX2RhdGEgPSBjdHguY3JlYXRl
SW1hZ2VEYXRhKGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwge2NvbG9yU3BhY2U6ICJkaXNw
bGF5LXAzIn0pOwordmFyIGNvbG9yX2RhdGEgPSBbWzI1NSwgMTAwLCAxNTAsIDEuMF0sIFsyNTUs
IDEwMCwgMTUwLCAwLjVdLAorICAgICAgICAgICAgICAgICBbMjU1LCAxMDAsIDE1MCwgMC41XSwg
WzI1NSwgMTAwLCAxNTAsIDBdXTsKK3ZhciBkYXRhID0gaW1hZ2VfZGF0YS5kYXRhOworZm9yICh2
YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aCAvIDQ7ICsraSkgeworICBkYXRhWzQqaSArIDBdID0g
Y29sb3JfZGF0YVtpXVswXTsKKyAgZGF0YVs0KmkgKyAxXSA9IGNvbG9yX2RhdGFbaV1bMV07Cisg
IGRhdGFbNCppICsgMl0gPSBjb2xvcl9kYXRhW2ldWzJdOworICBkYXRhWzQqaSArIDNdID0gY29s
b3JfZGF0YVtpXVszXTsKK30KK2N0eC5wdXRJbWFnZURhdGEoaW1hZ2VfZGF0YSwgMCwgMCk7Citl
eHBlY3RlZFBpeGVscyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMiwge2NvbG9yU3BhY2U6
ICJkaXNwbGF5LXAzIn0pLmRhdGE7CisKK3ZhciBpbWFnZSA9IG5ldyBJbWFnZSgpOworaW1hZ2Uu
b25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbigpIHsKKyAgICB2YXIgZHN0Q2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgZHN0Q2FudmFzLndpZHRo
ID0gMjsKKyAgICBkc3RDYW52YXMuaGVpZ2h0ID0gMjsKKyAgICB2YXIgY3R4ID0gZHN0Q2FudmFz
LmdldENvbnRleHQoJzJkJywge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pOworICAgIGN0eC5k
cmF3SW1hZ2UoaW1hZ2UsIDAsIDApOworICAgIHZhciBhY3R1YWxQaXhlbHMgPSBjdHguZ2V0SW1h
Z2VEYXRhKDAsIDAsIDIsIDIsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KS5kYXRhOworICAg
IGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMs
IDIpOworfSk7CitjYW52YXMudG9CbG9iKGZ1bmN0aW9uKGJsb2IpIHsKKyAgICB2YXIgdXJsQ3Jl
YXRvciA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDsKKyAgICBpbWFnZS5zcmMgPSB1
cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKK30sICdpbWFnZS9wbmcnLCAxKTsKKwor
Cit9LCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSk7Cis8L3NjcmlwdD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvRGF0YVVSTC5wMy5jYW52
YXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMuY2FudmFzLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9E
YXRhVVJMLnAzLmNhbnZhcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
IEBACisyZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMuY2FudmFzCit0ZXN0IGlmIHRvYmxv
YiByZXR1cm5zIHAzIGRhdGEgZnJvbSBjYW52YXMgd2l0aCBwMyBjb2xvciBzcGFjZQorQWN0dWFs
IG91dHB1dDoKKworUEFTUyB0ZXN0IGlmIHRvYmxvYiByZXR1cm5zIHAzIGRhdGEgZnJvbSBjYW52
YXMgd2l0aCBwMyBjb2xvciBzcGFjZQorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
MmQuY29sb3Iuc3BhY2UucDMudG9EYXRhVVJMLnAzLmNhbnZhcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMu
Y2FudmFzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJk
LmNvbG9yLnNwYWNlLnAzLnRvRGF0YVVSTC5wMy5jYW52YXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gRE8gTk9UIEVESVQhIFRoaXMg
dGVzdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgL2h0bWwvY2FudmFzL3Rvb2xzL2dlbnRlc3QucHku
IC0tPgorPHRpdGxlPkNhbnZhcyB0ZXN0OiAyZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMu
Y2FudmFzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0
cy5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9odG1sL2NhbnZh
cy9yZXNvdXJjZXMvY2FudmFzLXRlc3RzLmNzcyI+Cis8Ym9keSBjbGFzcz0ic2hvd19vdXRwdXQi
PgorCis8aDE+MmQuY29sb3Iuc3BhY2UucDMudG9EYXRhVVJMLnAzLmNhbnZhczwvaDE+Cis8cCBj
bGFzcz0iZGVzYyI+dGVzdCBpZiB0b2Jsb2IgcmV0dXJucyBwMyBkYXRhIGZyb20gY2FudmFzIHdp
dGggcDMgY29sb3Igc3BhY2U8L3A+CisKKworPHAgY2xhc3M9Im91dHB1dCI+QWN0dWFsIG91dHB1
dDo8L3A+Cis8Y2FudmFzIGlkPSJjIiBjbGFzcz0ib3V0cHV0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjUwIj48cCBjbGFzcz0iZmFsbGJhY2siPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2Fu
dmFzPgorCis8dWwgaWQ9ImQiPjwvdWw+Cis8c2NyaXB0PgordmFyIHQgPSBhc3luY190ZXN0KCJ0
ZXN0IGlmIHRvYmxvYiByZXR1cm5zIHAzIGRhdGEgZnJvbSBjYW52YXMgd2l0aCBwMyBjb2xvciBz
cGFjZSIpOworX2FkZFRlc3QoZnVuY3Rpb24oY2FudmFzLCBjdHgpIHsKKworY3R4LmZpbGxTdHls
ZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAxKSI7CitjdHguZmlsbFJlY3QoMCwgMCwgMSwgMSk7Citj
dHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1NSwgMjcsIDApIjsKK2N0eC5maWxsUmVjdCgxLCAw
LCAxLCAxKTsKK2N0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDE1NSwgMC41KSI7CitjdHgu
ZmlsbFJlY3QoMCwgMSwgMSwgMSk7CitjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywg
MC41KSI7CitjdHguZmlsbFJlY3QoMSwgMSwgMSwgMSk7CitleHBlY3RlZFBpeGVscyA9IGN0eC5n
ZXRJbWFnZURhdGEoMCwgMCwgMiwgMiwge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pLmRhdGE7
CisKK3ZhciBpbWFnZSA9IG5ldyBJbWFnZSgpOworaW1hZ2Uub25sb2FkID0gdC5zdGVwX2Z1bmNf
ZG9uZShmdW5jdGlvbigpIHsKKyAgICB2YXIgZHN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CisgICAgZHN0Q2FudmFzLndpZHRoID0gMjsKKyAgICBkc3RDYW52YXMu
aGVpZ2h0ID0gMjsKKyAgICB2YXIgY3R4ID0gZHN0Q2FudmFzLmdldENvbnRleHQoJzJkJywge2Nv
bG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0pOworICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAp
OworICAgIHZhciBhY3R1YWxQaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIsIHtj
b2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KS5kYXRhOworICAgIGFzc2VydF9hcnJheV9hcHByb3hf
ZXF1YWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQaXhlbHMsIDIpOworfSk7CitpbWFnZS5zcmMg
PSBjYW52YXMudG9EYXRhVVJMKCk7CisKKworfSwge2NvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIn0p
OworPC9zY3JpcHQ+CisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy50b0RhdGFVUkwud2l0aC5wdXRJbWFnZURhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0RhdGFV
Ukwud2l0aC5wdXRJbWFnZURhdGEtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwud2l0aC5wdXRJ
bWFnZURhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorMmQu
Y29sb3Iuc3BhY2UucDMudG9EYXRhVVJMLndpdGgucHV0SW1hZ2VEYXRhCitVc2UgcHV0SW1hZ2VE
YXRhIHRvIHB1dCBzb21lIHAzIGRhdGEgaW4gY2FudmFzIGFuZCB0ZXN0IGlmIHRvRGF0YVVSTCBy
ZXR1cm5zIHRoZSBzYW1lIGRhdGEKK0FjdHVhbCBvdXRwdXQ6CisKK1BBU1MgVXNlIHB1dEltYWdl
RGF0YSB0byBwdXQgc29tZSBwMyBkYXRhIGluIGNhbnZhcyBhbmQgdGVzdCBpZiB0b0RhdGFVUkwg
cmV0dXJucyB0aGUgc2FtZSBkYXRhCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwud2l0aC5wdXRJbWFnZURhdGEuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9EYXRh
VVJMLndpdGgucHV0SW1hZ2VEYXRhLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvRGF0YVVSTC53aXRoLnB1dEltYWdlRGF0
YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PCEtLSBETyBOT1QgRURJVCEgVGhpcyB0ZXN0IGhhcyBiZWVuIGdlbmVyYXRlZCBieSAvaHRtbC9j
YW52YXMvdG9vbHMvZ2VudGVzdC5weS4gLS0+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IDJkLmNvbG9y
LnNwYWNlLnAzLnRvRGF0YVVSTC53aXRoLnB1dEltYWdlRGF0YTwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2h0
bWwvY2FudmFzL3Jlc291cmNlcy9jYW52YXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIvaHRtbC9jYW52YXMvcmVzb3VyY2VzL2NhbnZhcy10ZXN0cy5j
c3MiPgorPGJvZHkgY2xhc3M9InNob3dfb3V0cHV0Ij4KKworPGgxPjJkLmNvbG9yLnNwYWNlLnAz
LnRvRGF0YVVSTC53aXRoLnB1dEltYWdlRGF0YTwvaDE+Cis8cCBjbGFzcz0iZGVzYyI+VXNlIHB1
dEltYWdlRGF0YSB0byBwdXQgc29tZSBwMyBkYXRhIGluIGNhbnZhcyBhbmQgdGVzdCBpZiB0b0Rh
dGFVUkwgcmV0dXJucyB0aGUgc2FtZSBkYXRhPC9wPgorCisKKzxwIGNsYXNzPSJvdXRwdXQiPkFj
dHVhbCBvdXRwdXQ6PC9wPgorPGNhbnZhcyBpZD0iYyIgY2xhc3M9Im91dHB1dCIgd2lkdGg9IjEw
MCIgaGVpZ2h0PSI1MCI+PHAgY2xhc3M9ImZhbGxiYWNrIj5GQUlMIChmYWxsYmFjayBjb250ZW50
KTwvcD48L2NhbnZhcz4KKworPHVsIGlkPSJkIj48L3VsPgorPHNjcmlwdD4KK3ZhciB0ID0gYXN5
bmNfdGVzdCgiVXNlIHB1dEltYWdlRGF0YSB0byBwdXQgc29tZSBwMyBkYXRhIGluIGNhbnZhcyBh
bmQgdGVzdCBpZiB0b0RhdGFVUkwgcmV0dXJucyB0aGUgc2FtZSBkYXRhIik7CitfYWRkVGVzdChm
dW5jdGlvbihjYW52YXMsIGN0eCkgeworCitjYW52YXMud2lkdGggPSAyOworY2FudmFzLmhlaWdo
dCA9IDI7CisKKy8vIENyZWF0ZSBhbiBJbWFnZURhdGEgdXNpbmcgY3JlYXRlSW1hZ2VEYXRhIGFu
ZCBwb3B1bGF0ZSBpdHMgZGF0YSBhcnJheS4KK3ZhciBpbWFnZV9kYXRhID0gY3R4LmNyZWF0ZUlt
YWdlRGF0YShjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIHtjb2xvclNwYWNlOiAiZGlzcGxh
eS1wMyJ9KTsKK3ZhciBjb2xvcl9kYXRhID0gW1syNTUsIDEwMCwgMTUwLCAxLjBdLCBbMjU1LCAx
MDAsIDE1MCwgMC41XSwKKyAgICAgICAgICAgICAgICAgWzI1NSwgMTAwLCAxNTAsIDAuNV0sIFsy
NTUsIDEwMCwgMTUwLCAwXV07Cit2YXIgZGF0YSA9IGltYWdlX2RhdGEuZGF0YTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggLyA0OyArK2kpIHsKKyAgZGF0YVs0KmkgKyAwXSA9IGNv
bG9yX2RhdGFbaV1bMF07CisgIGRhdGFbNCppICsgMV0gPSBjb2xvcl9kYXRhW2ldWzFdOworICBk
YXRhWzQqaSArIDJdID0gY29sb3JfZGF0YVtpXVsyXTsKKyAgZGF0YVs0KmkgKyAzXSA9IGNvbG9y
X2RhdGFbaV1bM107Cit9CitjdHgucHV0SW1hZ2VEYXRhKGltYWdlX2RhdGEsIDAsIDApOworZXhw
ZWN0ZWRQaXhlbHMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIsIHtjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyJ9KS5kYXRhOworCit2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKK2ltYWdlLm9u
bG9hZCA9IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oKSB7CisgICAgdmFyIGRzdENhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGRzdENhbnZhcy53aWR0aCA9
IDI7CisgICAgZHN0Q2FudmFzLmhlaWdodCA9IDI7CisgICAgdmFyIGN0eCA9IGRzdENhbnZhcy5n
ZXRDb250ZXh0KCcyZCcsIHtjb2xvclNwYWNlOiAiZGlzcGxheS1wMyJ9KTsKKyAgICBjdHguZHJh
d0ltYWdlKGltYWdlLCAwLCAwKTsKKyAgICB2YXIgYWN0dWFsUGl4ZWxzID0gY3R4LmdldEltYWdl
RGF0YSgwLCAwLCAyLCAyLCB7Y29sb3JTcGFjZTogImRpc3BsYXktcDMifSkuZGF0YTsKKyAgICBh
c3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWxQaXhlbHMsIGV4cGVjdGVkUGl4ZWxzLCAy
KTsKK30pOworaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTCgpOworCisKK30sIHtjb2xvclNw
YWNlOiAiZGlzcGxheS1wMyJ9KTsKKzwvc2NyaXB0PgorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvSW1hZ2VEYXRhLWZpZGVsaXR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvSW1hZ2VEYXRhLWZpZGVsaXR5LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL0ltYWdlRGF0YS1m
aWRlbGl0eS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw2ICswLDAgQEAKLQotUEFT
UyBWZXJpZnkgdGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0YSByb3VuZCB0cmlwIHByZXNlcnZl
cyBjb2xvciB2YWx1ZXMgd2hlbiBpbWFnZSBtZXRhZGF0YSBoYXMgbm8gY29sb3Igc3BhY2UgYW5k
IGNhbnZhcyB1c2VzIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlLgotUEFTUyBWZXJpZnkgdGhhdCBk
cmF3SW1hZ2UtPmdldEltYWdlRGF0YSByb3VuZCB0cmlwIHByZXNlcnZlcyBjb2xvciB2YWx1ZXMg
d2hlbiBpbWFnZSBtZXRhZGF0YSBoYXMgc3JnYiBjb2xvciBzcGFjZSBhbmQgY2FudmFzIHVzZXMg
dGhlIHNyZ2IgY29sb3Igc3BhY2UuCi1QQVNTIFZlcmlmeSB0aGF0IGRyYXdJbWFnZS0+Z2V0SW1h
Z2VEYXRhIHJvdW5kIHRyaXAgcHJlc2VydmVzIGNvbG9yIHZhbHVlcyB3aGVuIGltYWdlIG1ldGFk
YXRhIGhhcyBubyBjb2xvciBzcGFjZSBhbmQgY2FudmFzIHVzZXMgdGhlIHNyZ2IgY29sb3Igc3Bh
Y2UuCi1QQVNTIFZlcmlmeSB0aGF0IGRyYXdJbWFnZS0+Z2V0SW1hZ2VEYXRhIHJvdW5kIHRyaXAg
cHJlc2VydmVzIGNvbG9yIHZhbHVlcyB3aGVuIGltYWdlIG1ldGFkYXRhIGhhcyBzcmdiIGNvbG9y
IHNwYWNlIGFuZCBjYW52YXMgdXNlcyB0aGUgZGVmYXVsdCBjb2xvciBzcGFjZS4KLQpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL0ltYWdlRGF0YS1maWRlbGl0eS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9JbWFnZURhdGEtZmlkZWxpdHkuaHRtbAko
cmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL0ltYWdlRGF0YS1m
aWRlbGl0eS5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTI2ICswLDAgQEAKLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1hc3luY190
ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7Ci0gIC8vIFRoaXMg
aW1hZ2UgaXMgMjU2IGJ5IDEgYW5kIGNvbnRhaW5zIGFuIG9wYXF1ZSBncmF5c2NhbGUgcmFtcCBm
cm9tIDAgdG8gMjU1LgotICAvLyBUaGUgaW1hZ2UgaGFzIG5vIGVtYmVkZGVkIGNvbG9yIHByb2Zp
bGUuCi0gIGltYWdlLnNyYyA9ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFB
TlNVaEVVZ0FBQVFBQUFBQUJDQVlBQUFBeCIgKwotICAgICJXWEIzQUFBQUcwbEVRVlE0VDJOa1lH
RDR6OGpJeURDS1I4TmdOQTJNdkRRQUFQaVBBLzV0WjhHK0FBQUFBRWxGVGtTdVFtQ0MiOwotCi0g
IGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMud2lkdGggPSAyNTY7Ci0gICAgY2Fu
dmFzLmhlaWdodCA9IDE7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwot
ICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgIHZhciBpbWcgPSBjdHguZ2V0SW1h
Z2VEYXRhKDAsIDAsIDI1NiwgMSk7Ci0gICAgdC5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGltZy5k
YXRhWzQgKiBpXSwgaSwgInJlZCBjb21wb25lbnQiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhp
bWcuZGF0YVs0ICogaSArIDFdLCBpLCAiZ3JlZW4gY29tcG9uZW50Iik7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAyXSwgaSwgImJsdWUgY29tcG9uZW50Iik7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAzXSwgMjU1LCAiYWxwaGEgY29tcG9u
ZW50Iik7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgdC5kb25lKCk7Ci0gIH0KLX0sICJWZXJpZnkg
dGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0YSByb3VuZCB0cmlwIHByZXNlcnZlcyBjb2xvciB2
YWx1ZXMgIiArCi0gICAgIndoZW4gaW1hZ2UgbWV0YWRhdGEgaGFzIG5vIGNvbG9yIHNwYWNlIGFu
ZCBjYW52YXMgdXNlcyB0aGUgZGVmYXVsdCAiICsKLSAgICAiY29sb3Igc3BhY2UuIik7Ci0KLWFz
eW5jX3Rlc3QoZnVuY3Rpb24odCkgewotICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgLy8g
VGhpcyBpbWFnZSBpcyAyNTYgYnkgMSBhbmQgY29udGFpbnMgYW4gb3BhcXVlIGdyYXlzY2FsZSBy
YW1wIGZyb20gMCB0byAyNTUuCi0gIC8vIFRoZSBpbWFnZSBoYXMgYW4gZW1iZWRkZWQgc1JHQiBj
b2xvciBwcm9maWxlLgotICBpbWFnZS5zcmMgPQotICAgICAgImRhdGE6aW1hZ2UvcG5nO2Jhc2U2
NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFBQkNBWUFBQUF4V1hCM0FBQUEiICsKLSAg
ICAgICJHMGxFUVZRNFQyTmtZR0Q0ejhqSXlEQ0tSOE5nTkEyTXZEUUFBUGlQQS81dFo4RytBQUFB
bzNwVVdIUlNZWGNnY0hKdlptIiArCi0gICAgICAibHNaU0IwZVhCbElFRlFVREVBQUhpY1pVNWJD
c013RFB2M0tYb0V2L0k2VHJhbXBUQzIwZnQvTEU3V0VUSkJrSzFZUXJDWCIgKwotICAgICAgIlp6
bVArL0krWDl2eEtMQVl5Q0dvQzlFbjc3RkNWMTBST1dOSHJNOGhVVzdjUVowMFYvMDI2dERaTVJL
YlVRWUR0NGxKSnIiICsKLSAgICAgICIyRnhlQ1RKYzVCVjRzdk5FNE54bDFUbjhOMUxDZ01Jb0tK
MnNIdm8yNXNIZksvb2RZVDAybHVDV01QK0FBNU0wS2JOcjYxIiArCi0gICAgICAiUHdBQUFBQkpS
VTVFcmtKZ2dnPT0iOwotCi0gIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBj
YW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMud2lk
dGggPSAyNTY7Ci0gICAgY2FudmFzLmhlaWdodCA9IDE7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcsIHtjb2xvclNwYWNlOiAnc3JnYid9KTsKLSAgICBjdHguZHJhd0ltYWdl
KGltYWdlLCAwLCAwKTsKLSAgICB2YXIgaW1nID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyNTYs
IDEpOwotICAgIHQuc3RlcChmdW5jdGlvbigpIHsKLSAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjU2OyBpKyspIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhpbWcuZGF0YVs0ICogaV0sIGksICJy
ZWQgY29tcG9uZW50Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAx
XSwgaSwgImdyZWVuIGNvbXBvbmVudCIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGltZy5kYXRh
WzQgKiBpICsgMl0sIGksICJibHVlIGNvbXBvbmVudCIpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KGltZy5kYXRhWzQgKiBpICsgM10sIDI1NSwgImFscGhhIGNvbXBvbmVudCIpOwotICAgICAgfQot
ICAgIH0pOwotICAgIHQuZG9uZSgpOwotICB9Ci19LCAiVmVyaWZ5IHRoYXQgZHJhd0ltYWdlLT5n
ZXRJbWFnZURhdGEgcm91bmQgdHJpcCBwcmVzZXJ2ZXMgY29sb3IgdmFsdWVzICIgKwotICAgICJ3
aGVuIGltYWdlIG1ldGFkYXRhIGhhcyBzcmdiIGNvbG9yIHNwYWNlIGFuZCBjYW52YXMgdXNlcyB0
aGUgc3JnYiAiICsKLSAgICAiY29sb3Igc3BhY2UuIik7Ci0KLWFzeW5jX3Rlc3QoZnVuY3Rpb24o
dCkgewotICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgLy8gVGhpcyBpbWFnZSBpcyAyNTYg
YnkgMSBhbmQgY29udGFpbnMgYW4gb3BhcXVlIGdyYXlzY2FsZSByYW1wIGZyb20gMCB0byAyNTUu
Ci0gIC8vIFRoZSBpbWFnZSBoYXMgbm8gZW1iZWRkZWQgY29sb3IgcHJvZmlsZS4KLSAgaW1hZ2Uu
c3JjID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFB
QUFBQkNBWUFBQUF4IiArCi0gICAgIldYQjNBQUFBRzBsRVFWUTRUMk5rWUdENHo4akl5RENLUjhO
Z05BMk12RFFBQVBpUEEvNXRaOEcrQUFBQUFFbEZUa1N1UW1DQyI7Ci0KLSAgaW1hZ2Uub25sb2Fk
ID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2NhbnZhcycpOwotICAgIGNhbnZhcy53aWR0aCA9IDI1NjsKLSAgICBjYW52YXMuaGVpZ2h0ID0g
MTsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywge2NvbG9yU3BhY2U6ICdz
cmdiJ30pOwotICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgIHZhciBpbWcgPSBj
dHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDI1NiwgMSk7Ci0gICAgdC5zdGVwKGZ1bmN0aW9uKCkgewot
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAgICBhc3NlcnRfZXF1
YWxzKGltZy5kYXRhWzQgKiBpXSwgaSwgInJlZCBjb21wb25lbnQiKTsKLSAgICAgICAgYXNzZXJ0
X2VxdWFscyhpbWcuZGF0YVs0ICogaSArIDFdLCBpLCAiZ3JlZW4gY29tcG9uZW50Iik7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAyXSwgaSwgImJsdWUgY29tcG9uZW50
Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGkgKyAzXSwgMjU1LCAiYWxw
aGEgY29tcG9uZW50Iik7Ci0gICAgICB9Ci0gICAgfSk7Ci0gICAgdC5kb25lKCk7Ci0gIH0KLX0s
ICJWZXJpZnkgdGhhdCBkcmF3SW1hZ2UtPmdldEltYWdlRGF0YSByb3VuZCB0cmlwIHByZXNlcnZl
cyBjb2xvciB2YWx1ZXMgIiArCi0gICAgIndoZW4gaW1hZ2UgbWV0YWRhdGEgaGFzIG5vIGNvbG9y
IHNwYWNlIGFuZCBjYW52YXMgdXNlcyB0aGUgc3JnYiAiICsKLSAgICAiY29sb3Igc3BhY2UuIik7
Ci0KLQotYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7Ci0gIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgp
OwotICAvLyBUaGlzIGltYWdlIGlzIDI1NiBieSAxIGFuZCBjb250YWlucyBhbiBvcGFxdWUgZ3Jh
eXNjYWxlIHJhbXAgZnJvbSAwIHRvIDI1NS4KLSAgLy8gVGhlIGltYWdlIGhhcyBhbiBlbWJlZGRl
ZCBzUkdCIGNvbG9yIHByb2ZpbGUuCi0gIGltYWdlLnNyYyA9Ci0gICAgICAiZGF0YTppbWFnZS9w
bmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUFCQ0FZQUFBQXhXWEIzQUFB
QSIgKwotICAgICAgIkcwbEVRVlE0VDJOa1lHRDR6OGpJeURDS1I4TmdOQTJNdkRRQUFQaVBBLzV0
WjhHK0FBQUFvM3BVV0hSU1lYY2djSEp2Wm0iICsKLSAgICAgICJsc1pTQjBlWEJsSUVGUVVERUFB
SGljWlU1YkNzTXdEUHYzS1hvRXYvSTZUcmFtcFRDMjBmdC9MRTdXRVRKQmtLMVlRckNYIiArCi0g
ICAgICAiWnptUCsvSStYOXZ4S0xBWXlDR29DOUVuNzdGQ1YxMFJPV05Ick04aFVXN2NRWjAwVi8w
MjZ0RFpNUktiVVFZRHQ0bEpKciIgKwotICAgICAgIjJGeGVDVEpjNUJWNHN2TkU0TnhsMVRuOE4x
TENnTUlvS0oyc0h2bzI1c0hmSy9vZFlUMDJsdUNXTVArQUE1TTBLYk5yNjEiICsKLSAgICAgICJQ
d0FBQUFCSlJVNUVya0pnZ2c9PSI7Ci0KLSAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwotICAgIGNh
bnZhcy53aWR0aCA9IDI1NjsKLSAgICBjYW52YXMuaGVpZ2h0ID0gMTsKLSAgICB2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgY3R4LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7
Ci0gICAgdmFyIGltZyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMjU2LCAxKTsKLSAgICB0LnN0
ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0g
ICAgICAgIGFzc2VydF9lcXVhbHMoaW1nLmRhdGFbNCAqIGldLCBpLCAicmVkIGNvbXBvbmVudCIp
OwotICAgICAgICBhc3NlcnRfZXF1YWxzKGltZy5kYXRhWzQgKiBpICsgMV0sIGksICJncmVlbiBj
b21wb25lbnQiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhpbWcuZGF0YVs0ICogaSArIDJdLCBp
LCAiYmx1ZSBjb21wb25lbnQiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhpbWcuZGF0YVs0ICog
aSArIDNdLCAyNTUsICJhbHBoYSBjb21wb25lbnQiKTsKLSAgICAgIH0KLSAgICB9KTsKLSAgICB0
LmRvbmUoKTsKLSAgfQotfSwgIlZlcmlmeSB0aGF0IGRyYXdJbWFnZS0+Z2V0SW1hZ2VEYXRhIHJv
dW5kIHRyaXAgcHJlc2VydmVzIGNvbG9yIHZhbHVlcyAiICsKLSAgICAid2hlbiBpbWFnZSBtZXRh
ZGF0YSBoYXMgc3JnYiBjb2xvciBzcGFjZSBhbmQgY2FudmFzIHVzZXMgdGhlIGRlZmF1bHQgIiAr
Ci0gICAgImNvbG9yIHNwYWNlLiIpOwotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1j
b2xvck1hbmFnZWQtY29udmVydFRvQmxvYi1yb3VuZHRyaXAtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdl
ZC1jb252ZXJ0VG9CbG9iLXJvdW5kdHJpcC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAt
MSw2ICswLDAgQEAKLQotSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCi0K
LUZBSUwgT3ZlcmFsbCB0ZXN0IHNyY0NhbnZhcy5jb252ZXJ0VG9CbG9iIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ3NyY0NhbnZhcy5jb252ZXJ0VG9CbG9iKHRlc3RTY2VuYXJpby5lbmNvZGVPcHRp
b25zKScsICdzcmNDYW52YXMuY29udmVydFRvQmxvYicgaXMgdW5kZWZpbmVkKQotTk9UUlVOIFRl
c3QgY2FudmFzIGNvbnZlcnRUb0Jsb2IoKTogbWltZVR5cGU6IGltYWdlL3BuZywgYmxvYlBpeGVs
Rm9ybWF0OiB1aW50OCwgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVp
bnQ4LCBhbHBoYTogMC41Ci0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMt
Y29sb3JNYW5hZ2VkLWNvbnZlcnRUb0Jsb2Itcm91bmR0cmlwLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvck1hbmFnZWQtY29udmVydFRvQmxv
Yi1yb3VuZHRyaXAuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQt
Y2FudmFzL2NhbnZhcy1jb2xvck1hbmFnZWQtY29udmVydFRvQmxvYi1yb3VuZHRyaXAuaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDE1MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLS8v
IE5vIG1hdHRlciB3aGF0IGlzIHRoZSBjb2xvciBzcGFjZSBhbmQgcGl4ZWwgZm9ybWF0IG9mIHRo
ZSBjb2xvciBtYW5hZ2VkCi0vLyBjYW52YXMsIHRvQmxvYigpIGFuZCB0b0RhdGFVUkwoKSBhbHdh
eXMgY3JlYXRlIHRoZSBibG9iIGluIHNSR0IgY29sb3IKLS8vIHNwYWNlLCBhbmQgcmVzcGVjdCB0
aGUgbGVnYWN5IGJlaGF2aW9yIGJ5IG5vdCBpbmNsdWRpbmcgYW55IGNvbG9yIHNwYWNlCi0vLyBp
bmZvcm1hdGlvbiBpbiB0aGUgYmxvYi9kYXRhIHVybC4KLQotdmFyIG9wYXF1ZVJlZmVyZW5jZVB4
aWVscywgdHJhbnNwYXJlbnRSZWZlcmVuY2VQaXhlbHM7Ci0KLWZ1bmN0aW9uIHRlc3RQaXhlbHMo
YWN0dWFsUGl4ZWxzLCByZWZQaXhlbHMsIHRlc3RTY2VuYXJpbykKLXsKLSAgICAvLyBOYXJyb3dp
bmcgZG93biB0aGUgc291cmNlIG9mIGV4cGVjdGVkIGVycm9yOgotICAgIC8vIC0gQWxwaGEgdmFs
dWVzIHNob3VsZCBhbHdheXMgbWF0Y2guCi0gICAgLy8gLSBDb2xvciBjb21wb25lbnRzIHNob3Vs
ZCBiZSBhY2NlcHRhYmx5IGNsb3NlLgotICAgIGlmICh0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQ
YXJhbS5waXhlbEZvcm1hdCA9PSAndWludDgnKSB7Ci0gICAgICAgIGxldCB0b2xlcmFuY2VfY29s
b3IgPSA0OwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbFBpeGVscy5sZW5ndGg7
IGkrKykgewotICAgICAgICAgICAgLy8gQWxwaGEgY2hhbm5lbAotICAgICAgICAgICAgaWYgKGkg
JSA0ID09IDMpCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhY3R1YWxQaXhlbHNbaV0s
IHJlZlBpeGVsc1tpXSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxzW2ldLCByZWZQaXhlbHNbaV0sIHRvbGVyYW5jZV9j
b2xvcik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGb3IgaGFsZiBmbG9h
dCBiYWNrZWQgY2FudmFzLCB3ZSBleHBlY3QgdGhlIGVycm9yIDwgMC4wMS4KLSAgICAgICAgbGV0
IHRvbGVyYW5jZV9jb2xvciA9IDAuMDE7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0
dWFsUGl4ZWxzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAvLyBBbHBoYSBjaGFubmVsCi0g
ICAgICAgICAgICBpZiAoaSAlIDQgPT0gMykKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGFjdHVhbFBpeGVsc1tpXSwgcmVmUGl4ZWxzW2ldKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxQaXhlbHNbaV0sIHJlZlBpeGVs
c1tpXSwgdG9sZXJhbmNlX2NvbG9yKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y3JlYXRlQ2FudmFzKHRlc3RTY2VuYXJpbykKLXsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzLndpZHRoID0gMjsKLSAgICBjYW52
YXMuaGVpZ2h0ID0gMjsKLSAgICByZXR1cm4gY2FudmFzOwotfQotCi1mdW5jdGlvbiBnZW5lcmF0
ZUZpbGxTdHlsZShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkgewotICAgIHJldHVybiAicmdiYSgi
ICsgcmVkICsgIiwiICsgZ3JlZW4gKyAiLCIgKyBibHVlICsgIiwiICsgYWxwaGEgKyAiKSI7Ci19
Ci0KLWZ1bmN0aW9uIGRyYXdQYXR0ZXJuT25DYW52c2EoY3R4LCBhbHBoYSwgY29tcG9zaXRlT3Zl
ckJsYWNrKSB7Ci0gICAgaWYgKGNvbXBvc2l0ZU92ZXJCbGFjaykgewotICAgICAgICBjdHguZmls
bFN0eWxlID0gZ2VuZXJhdGVGaWxsU3R5bGUoMCwgMCwgMCwgMSk7Ci0gICAgICAgIGN0eC5maWxs
UmVjdCgwLCAwLCAyLCAyKTsKLSAgICB9Ci0gICAgY3R4LmZpbGxTdHlsZSA9IGdlbmVyYXRlRmls
bFN0eWxlKDE1NSwgMjcsIDI3LCBhbHBoYSk7Ci0gICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEsIDEp
OwotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgyNywgMTU1LCAyNywgYWxw
aGEpOwotICAgIGN0eC5maWxsUmVjdCgxLCAwLCAxLCAxKTsKLSAgICBjdHguZmlsbFN0eWxlID0g
Z2VuZXJhdGVGaWxsU3R5bGUoMjcsIDI3LCAxNTUsIGFscGhhKTsKLSAgICBjdHguZmlsbFJlY3Qo
MCwgMSwgMSwgMSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9IGdlbmVyYXRlRmlsbFN0eWxlKDI3LCAy
NywgMjcsIGFscGhhKTsKLSAgICBjdHguZmlsbFJlY3QoMSwgMSwgMSwgMSk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RTY2VuYXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJpbykgewotICAgIHZhciBzdHIgPSAi
bWltZVR5cGU6ICIgKyB0ZXN0U2NlbmFyaW8uZW5jb2RlT3B0aW9ucy50eXBlICsKLSAgICAgICAg
IiwgYmxvYlBpeGVsRm9ybWF0OiAiICsgdGVzdFNjZW5hcmlvLmVuY29kZU9wdGlvbnMucGl4ZWxG
b3JtYXQgKwotICAgICAgICAiLCBzb3VyY2UgY29sb3Igc3BhY2U6ICIgKyB0ZXN0U2NlbmFyaW8u
Y2FudmFzQ29sb3JQYXJhbS5jb2xvclNwYWNlICsKLSAgICAgICAgIiwgcGl4ZWwgZm9ybWF0OiAi
ICsgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yUGFyYW0ucGl4ZWxGb3JtYXQgKwotICAgICAgICAi
LCBhbHBoYTogIiArIHRlc3RTY2VuYXJpby5hbHBoYTsKLSAgICByZXR1cm4gc3RyOwotfQotCi1m
dW5jdGlvbiBydW5Db252ZXJ0VG9CbG9iVGVzdCh0ZXN0U2NlbmFyaW8pIHsKLSAgICB2YXIgc3Jj
Q2FudmFzID0gY3JlYXRlQ2FudmFzKHRlc3RTY2VuYXJpbyk7Ci0gICAgdmFyIGN0eCA9IHNyY0Nh
bnZhcy5nZXRDb250ZXh0KCcyZCcsIHRlc3RTY2VuYXJpby5jYW52YXNDb2xvclBhcmFtKTsKLSAg
ICB2YXIgY29tcG9zaXRlT3ZlckJsYWNrID0gKHRlc3RTY2VuYXJpby5lbmNvZGVPcHRpb25zLnR5
cGUgPT0gImltYWdlL2pwZWciKTsKLSAgICBkcmF3UGF0dGVybk9uQ2FudnNhKGN0eCwgdGVzdFNj
ZW5hcmlvLmFscGhhLCBjb21wb3NpdGVPdmVyQmxhY2spOwotICAgIHZhciByZWZQaXhlbHMgPSBj
dHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDIpLmRhdGFVbmlvbjsKLQotICAgIHZhciB0ID0gYXN5
bmNfdGVzdCgiVGVzdCBjYW52YXMgY29udmVydFRvQmxvYigpOiAiICsKLSAgICAgICAgdGVzdFNj
ZW5hcmlvVG9TdHJpbmcodGVzdFNjZW5hcmlvKSk7Ci0KLSAgICB2YXIgaW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKLSAgICBpbWFnZS5vbmxvYWQgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKCkgewot
ICAgICAgICB2YXIgZHN0Q2FudmFzID0gY3JlYXRlQ2FudmFzKHRlc3RTY2VuYXJpbyk7Ci0gICAg
ICAgIHZhciBkc3RDdHggPSBkc3RDYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB0ZXN0U2NlbmFyaW8u
Y2FudmFzQ29sb3JQYXJhbSk7Ci0gICAgICAgIGRzdEN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAp
OwotICAgICAgICB2YXIgYWN0dWFsUGl4ZWxzID0gZHN0Q3R4LmdldEltYWdlRGF0YSgwLCAwLCAy
LCAyKS5kYXRhVW5pb247Ci0gICAgICAgIHRlc3RQaXhlbHMoYWN0dWFsUGl4ZWxzLCByZWZQaXhl
bHMsIHRlc3RTY2VuYXJpbyk7Ci0gICAgfSk7Ci0KLSAgICBzcmNDYW52YXMuY29udmVydFRvQmxv
Yih0ZXN0U2NlbmFyaW8uZW5jb2RlT3B0aW9ucykudGhlbigKLSAgICAgICAgdC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oYmxvYikgewotICAgICAgICAgICAgdmFyIHVybENyZWF0b3IgPSB3aW5kb3cuVVJM
IHx8IHdpbmRvdy53ZWJraXRVUkw7Ci0gICAgICAgICAgICBpbWFnZS5zcmMgPSB1cmxDcmVhdG9y
LmNyZWF0ZU9iamVjdFVSTChibG9iKTsKLSAgICAgICAgfSksCi0gICAgICAgIHQuc3RlcF9mdW5j
X2RvbmUoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJjb252ZXJ0VG9C
bG9iIGZhaWxlZC4iKTsKLSAgICAgICAgfSkKLSAgICApOwotfQotCi1mdW5jdGlvbiBydW5BbGxU
ZXN0cygpIHsKLQotICAgIHZhciBtaW1lVHlwZXMgPSBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVn
JywgJ2ltYWdlL3dlYnAnXTsKLSAgICB2YXIgYmxvYlBpeGVsRm9ybWF0cyA9IFsndWludDgnLCAn
dWludDE2J107Ci0KLSAgICB2YXIgZW5jb2RlT3B0aW9uc1NldCA9IFtdOwotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbWltZVR5cGVzLmxlbmd0aDsgaSsrKQotICAgICAgICBmb3IgKHZhciBrID0g
MDsgayA8IGJsb2JQaXhlbEZvcm1hdHMubGVuZ3RoOyBrKyspIHsKLSAgICAgICAgICAgIHZhciBl
bmNvZGVPcHRpb25zID0ge307Ci0gICAgICAgICAgICBlbmNvZGVPcHRpb25zLnF1YWxpdHkgPSAx
OwotICAgICAgICAgICAgZW5jb2RlT3B0aW9ucy50eXBlID0gbWltZVR5cGVzW2ldOwotICAgICAg
ICAgICAgZW5jb2RlT3B0aW9ucy5waXhlbEZvcm1hdCA9IGJsb2JQaXhlbEZvcm1hdHNba107Ci0g
ICAgICAgICAgICBlbmNvZGVPcHRpb25zU2V0LnB1c2goZW5jb2RlT3B0aW9ucyk7Ci0gICAgICAg
IH0KLQotICAgIHZhciBjYW52YXNDb2xvclBhcmFtcyA9IFsKLSAgICAgICAge2NvbG9yU3BhY2U6
ICdzcmdiJywgcGl4ZWxGb3JtYXQ6ICd1aW50OCd9LAotICAgICAgICB7Y29sb3JTcGFjZTogJ3Ny
Z2InLCBwaXhlbEZvcm1hdDogJ2Zsb2F0MTYnfSwKLSAgICBdOwotICAgIHZhciBhbHBoYVZhbHVl
cyA9IFswLjUsIDFdOwotCi0gICAgLy8gVGhlICpjb3JyZWN0KiB3YXkgdG8gdGVzdCBjb252ZXJ0
VG9CbG9iKCkgaXMgdG8gZGlyZWN0bHkgZXhhbWluZSB0aGUKLSAgICAvLyBpbWFnZSBmaWxlIGZv
ciB0aGUgZXhwZWN0ZWQgY29sb3Igc3BhY2UgYW5kIHBpeGVscy4gU2luY2UgdGhpcyBpcyBub3QK
LSAgICAvLyBlYXN5IHRvIGRvIGluIGphdmFzY3JpcHQsIHdlIHVzZSBhIHJvdW5kLXRyaXAgdGVz
dCBoZXJlIGFuZCBsZWF2ZSB0aGUKLSAgICAvLyBtb3JlIHRob3JvdWdoIHRlc3RpbmcgdG8gdW5p
dCB0ZXN0cy4KLQotICAgIHZhciB0ZXN0U2NlbmFyaW9TZXQgPSBbXTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGVuY29kZU9wdGlvbnNTZXQubGVuZ3RoOyBpKyspCi0gICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgY2FudmFzQ29sb3JQYXJhbXMubGVuZ3RoOyBqKyspCi0gICAgICAgICAgICBm
b3IgKHZhciBrID0gMDsgayA8IGFscGhhVmFsdWVzLmxlbmd0aDsgaysrKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHRlc3RTY2VuYXJpbyA9IHt9OwotICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJp
by5lbmNvZGVPcHRpb25zID0gZW5jb2RlT3B0aW9uc1NldFtpXTsKLSAgICAgICAgICAgICAgICB0
ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbSA9IGNhbnZhc0NvbG9yUGFyYW1zW2pdOwotICAg
ICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5hbHBoYSA9IGFscGhhVmFsdWVzW2tdOwotICAgICAg
ICAgICAgICAgIHRlc3RTY2VuYXJpb1NldC5wdXNoKHRlc3RTY2VuYXJpbyk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RTY2VuYXJpb1NldC5sZW5ndGg7IGkr
KykKLSAgICAgICAgcnVuQ29udmVydFRvQmxvYlRlc3QodGVzdFNjZW5hcmlvU2V0W2ldKTsKLX0K
LQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBydW5BbGxUZXN0cygpOwotfSwgIk92ZXJhbGwgdGVz
dCIpOwotCi08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMt
Y29sb3JNYW5hZ2VkLXRvQmxvYi10b0RhdGFVUkwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLXRvQmxvYi10b0Rh
dGFVUkwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11
dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC10b0Jsb2ItdG9EYXRhVVJMLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCkBAIC0xLDI3ICswLDAgQEAKLQotUEFTUyBPdmVyYWxsIHRlc3QKLVBB
U1MgVGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBj
b2xvciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGltYWdlL2pwZWcsIHNvdXJjZSBjb2xv
ciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1aW50OCwgYWxwaGE6IDAuNQotUEFTUyBUZXN0
IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1h
bmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvanBlZywgc291cmNlIGNvbG9yIHNwYWNl
OiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMQotUEFTUyBUZXN0IGlmIHRvQmxv
YigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2Fu
dmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvanBlZywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBw
aXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAwLjUKLVBBU1MgVGVzdCBpZiB0b0Jsb2IoKSBy
ZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBjb2xvciBtYW5hZ2VkIGNhbnZhczog
SW1hZ2VGb3JtYXQ6IGltYWdlL2pwZWcsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwg
Zm9ybWF0OiBmbG9hdDE2LCBhbHBoYTogMQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3Rz
IGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZv
cm1hdDogaW1hZ2UvcG5nLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDog
dWludDgsIGFscGhhOiAwLjUKLVBBU1MgVGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kg
YmVoYXZpb3IgaW4gICAgICAgICBjb2xvciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGlt
YWdlL3BuZywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBh
bHBoYTogMQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBp
biAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvcG5nLCBz
b3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogZmxvYXQxNiwgYWxwaGE6IDAu
NQotUEFTUyBUZXN0IGlmIHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAg
ICAgIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvcG5nLCBzb3VyY2Ug
Y29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogZmxvYXQxNiwgYWxwaGE6IDEKLVBBU1Mg
VGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBjb2xv
ciBtYW5hZ2VkIGNhbnZhczogSW1hZ2VGb3JtYXQ6IGltYWdlL3dlYnAsIHNvdXJjZSBjb2xvciBz
cGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1aW50OCwgYWxwaGE6IDAuNQotUEFTUyBUZXN0IGlm
IHRvQmxvYigpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1hbmFn
ZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwgc291cmNlIGNvbG9yIHNwYWNlOiBz
cmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMQotUEFTUyBUZXN0IGlmIHRvQmxvYigp
IHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciBpbiAgICAgICAgIGNvbG9yIG1hbmFnZWQgY2FudmFz
OiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhl
bCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAwLjUKLVBBU1MgVGVzdCBpZiB0b0Jsb2IoKSByZXNw
ZWN0cyBsZWdhY3kgYmVoYXZpb3IgaW4gICAgICAgICBjb2xvciBtYW5hZ2VkIGNhbnZhczogSW1h
Z2VGb3JtYXQ6IGltYWdlL3dlYnAsIHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9y
bWF0OiBmbG9hdDE2LCBhbHBoYTogMQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgpIHJlc3BlY3Rz
IGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZv
cm1hdDogaW1hZ2UvanBlZywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6
IHVpbnQ4LCBhbHBoYTogMC41Ci1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVn
YWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0
OiBpbWFnZS9qcGVnLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogdWlu
dDgsIGFscGhhOiAxCi1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJl
aGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFn
ZS9qcGVnLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogZmxvYXQxNiwg
YWxwaGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgpIHJlc3BlY3RzIGxlZ2FjeSBiZWhh
dmlvciAgICAgICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uv
anBlZywgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFs
cGhhOiAxCi1QQVNTIFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9y
ICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS9wbmcs
IHNvdXJjZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1aW50OCwgYWxwaGE6IDAu
NQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciAgICAg
ICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2UvcG5nLCBzb3Vy
Y2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZvcm1hdDogdWludDgsIGFscGhhOiAxCi1QQVNT
IFRlc3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4g
Y29sb3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS9wbmcsIHNvdXJjZSBjb2xv
ciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2LCBhbHBoYTogMC41Ci1QQVNTIFRl
c3QgaWYgdG9EYXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29s
b3IgbWFuYWdlZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS9wbmcsIHNvdXJjZSBjb2xvciBz
cGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2LCBhbHBoYTogMQotUEFTUyBUZXN0IGlm
IHRvRGF0YVVSTCgpIHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGluIGNvbG9yIG1h
bmFnZWQgY2FudmFzOiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwgc291cmNlIGNvbG9yIHNwYWNl
OiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMC41Ci1QQVNTIFRlc3QgaWYgdG9E
YXRhVVJMKCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdl
ZCBjYW52YXM6IEltYWdlRm9ybWF0OiBpbWFnZS93ZWJwLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNy
Z2IsIHBpeGVsIGZvcm1hdDogdWludDgsIGFscGhhOiAxCi1QQVNTIFRlc3QgaWYgdG9EYXRhVVJM
KCkgcmVzcGVjdHMgbGVnYWN5IGJlaGF2aW9yICAgICAgICAgaW4gY29sb3IgbWFuYWdlZCBjYW52
YXM6IEltYWdlRm9ybWF0OiBpbWFnZS93ZWJwLCBzb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBp
eGVsIGZvcm1hdDogZmxvYXQxNiwgYWxwaGE6IDAuNQotUEFTUyBUZXN0IGlmIHRvRGF0YVVSTCgp
IHJlc3BlY3RzIGxlZ2FjeSBiZWhhdmlvciAgICAgICAgIGluIGNvbG9yIG1hbmFnZWQgY2FudmFz
OiBJbWFnZUZvcm1hdDogaW1hZ2Uvd2VicCwgc291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhl
bCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAxCi0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNh
bnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLXRvQmxvYi10b0RhdGFVUkwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC10b0Jsb2It
dG9EYXRhVVJMLmh0bWwJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNh
bnZhcy9jYW52YXMtY29sb3JNYW5hZ2VkLXRvQmxvYi10b0RhdGFVUkwuaHRtbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE0NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLS8vIE5vIG1hdHRl
ciB3aGF0IGlzIHRoZSBjb2xvciBzcGFjZSBhbmQgcGl4ZWwgZm9ybWF0IG9mIHRoZSBjb2xvciBt
YW5hZ2VkCi0vLyBjYW52YXMsIHRvQmxvYigpIGFuZCB0b0RhdGFVUkwoKSBhbHdheXMgY3JlYXRl
IHRoZSBibG9iIGluIHNSR0IgY29sb3IKLS8vIHNwYWNlLCBhbmQgcmVzcGVjdCB0aGUgbGVnYWN5
IGJlaGF2aW9yIGJ5IG5vdCBpbmNsdWRpbmcgYW55IGNvbG9yIHNwYWNlCi0vLyBpbmZvcm1hdGlv
biBpbiB0aGUgYmxvYi9kYXRhIHVybC4KLQotdmFyIG9wYXF1ZVJlZmVyZW5jZVB4aWVscywgdHJh
bnNwYXJlbnRSZWZlcmVuY2VQaXhlbHM7Ci0KLWZ1bmN0aW9uIHRlc3RQaXhlbHMoYWN0dWFsUGl4
ZWxzLCBhbHBoYSkKLXsKLSAgICBpZiAoYWxwaGEgPT0gMSkKLSAgICAgICAgYXNzZXJ0X2FycmF5
X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxzLCBvcGFxdWVSZWZlcmVuY2VQeGllbHMsIDEpOwot
ICAgIGVsc2UKLSAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsUGl4ZWxz
LCB0cmFuc3BhcmVudFJlZmVyZW5jZVBpeGVscywgMik7Ci19Ci0KLWZ1bmN0aW9uIGdlbmVyYXRl
RmlsbFN0eWxlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSB7Ci0gICAgcmV0dXJuICJyZ2JhKCIg
KyByZWQgKyAiLCIgKyBncmVlbiArICIsIiArIGJsdWUgKyAiLCIgKyBhbHBoYSArICIpIjsKLX0K
LQotZnVuY3Rpb24gY29udGV4dERyYXdIZWxwZXIoY3R4LCBhbHBoYSkgewotICAgIGN0eC5maWxs
U3R5bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgxNTUsIDI3LCAyNywgYWxwaGEpOwotICAgIGN0eC5m
aWxsUmVjdCgwLCAwLCAxLCAxKTsKLSAgICBjdHguZmlsbFN0eWxlID0gZ2VuZXJhdGVGaWxsU3R5
bGUoMjcsIDE1NSwgMjcsIGFscGhhKTsKLSAgICBjdHguZmlsbFJlY3QoMSwgMCwgMSwgMSk7Ci0g
ICAgY3R4LmZpbGxTdHlsZSA9IGdlbmVyYXRlRmlsbFN0eWxlKDI3LCAyNywgMTU1LCBhbHBoYSk7
Ci0gICAgY3R4LmZpbGxSZWN0KDAsIDEsIDEsIDEpOwotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5l
cmF0ZUZpbGxTdHlsZSgyNywgMjcsIDI3LCBhbHBoYSk7Ci0gICAgY3R4LmZpbGxSZWN0KDEsIDEs
IDEsIDEpOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlUmVmZXJlbmNlRXhwZWN0ZWRSZXN1bHRzKCkg
ewotICAgIHZhciBjYW52YXMxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0g
ICAgY2FudmFzMS53aWR0aCA9IDI7Ci0gICAgY2FudmFzMS5oZWlnaHQgPSAyOwotICAgIHZhciBj
dHgxID0gY2FudmFzMS5nZXRDb250ZXh0KCcyZCcpOwotICAgIGNvbnRleHREcmF3SGVscGVyKGN0
eDEsIDEpOwotICAgIG9wYXF1ZVJlZmVyZW5jZVB4aWVscyA9IGN0eDEuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDIsIDIpLmRhdGE7Ci0KLSAgICB2YXIgY2FudmFzMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOwotICAgIGNhbnZhczIud2lkdGggPSAyOwotICAgIGNhbnZhczIuaGVpZ2h0
ID0gMjsKLSAgICB2YXIgY3R4MiA9IGNhbnZhczIuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBjb250
ZXh0RHJhd0hlbHBlcihjdHgyLCAwLjUpOwotICAgIHRyYW5zcGFyZW50UmVmZXJlbmNlUGl4ZWxz
ID0gY3R4Mi5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMikuZGF0YTsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlQ2FudmFzKHRlc3RTY2VuYXJpbykKLXsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzLndpZHRoID0gMjsKLSAgICBjYW52YXMu
aGVpZ2h0ID0gMjsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywge2NvbG9y
U3BhY2U6IHRlc3RTY2VuYXJpby5jb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQ6IHRlc3RTY2VuYXJpby5waXhlbEZvcm1hdH0pOwot
ICAgIGNvbnRleHREcmF3SGVscGVyKGN0eCwgdGVzdFNjZW5hcmlvLmFscGhhKTsKLSAgICByZXR1
cm4gY2FudmFzOwotfQotCi1mdW5jdGlvbiB0ZXN0U2NlbmFyaW9Ub1N0cmluZyh0ZXN0U2NlbmFy
aW8pIHsKLSAgICB2YXIgc3RyID0gIkltYWdlRm9ybWF0OiAiICsgdGVzdFNjZW5hcmlvLmltYWdl
Rm9ybWF0ICsKLSAgICAgICAgIiwgc291cmNlIGNvbG9yIHNwYWNlOiAiICsgdGVzdFNjZW5hcmlv
LmNvbG9yU3BhY2UgKwotICAgICAgICAiLCBwaXhlbCBmb3JtYXQ6ICIgKyB0ZXN0U2NlbmFyaW8u
cGl4ZWxGb3JtYXQgKwotICAgICAgICAiLCBhbHBoYTogIiArIHRlc3RTY2VuYXJpby5hbHBoYTsK
LSAgICBpZiAodGVzdFNjZW5hcmlvLmhhc093blByb3BlcnR5KCdjb2xvclNwYWNlQ29udmVyc2lv
bicpKQotICAgICAgICBzdHIgPSBzdHIgKyAiLCBpbnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6ICIg
KwotICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5jb2xvclNwYWNlQ29udmVyc2lvbjsKLSAg
ICByZXR1cm4gc3RyOwotfQotCi1mdW5jdGlvbiBydW5Ub0Jsb2JUZXN0KHRlc3RTY2VuYXJpbykg
ewotICAgIHZhciBzcmNDYW52YXMgPSBjcmVhdGVDYW52YXModGVzdFNjZW5hcmlvKTsKLSAgICB2
YXIgdF9ibG9iID0gYXN5bmNfdGVzdCgiVGVzdCBpZiB0b0Jsb2IoKSByZXNwZWN0cyBsZWdhY3kg
YmVoYXZpb3IgaW4gXAotICAgICAgICBjb2xvciBtYW5hZ2VkIGNhbnZhczogIiArIHRlc3RTY2Vu
YXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJpbykpOwotCi0gICAgdmFyIGltYWdlID0gbmV3IEltYWdl
KCk7Ci0gICAgaW1hZ2Uub25sb2FkID0gdF9ibG9iLnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKCkg
ewotICAgICAgICB2YXIgZHN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFz
Iik7Ci0gICAgICAgIGRzdENhbnZhcy53aWR0aCA9IDI7Ci0gICAgICAgIGRzdENhbnZhcy5oZWln
aHQgPSAyOwotICAgICAgICB2YXIgY3R4ID0gZHN0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0g
ICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgICAgICB2YXIgYWN0dWFsUGl4
ZWxzID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5kYXRhOwotICAgICAgICB0ZXN0UGl4
ZWxzKGFjdHVhbFBpeGVscywgdGVzdFNjZW5hcmlvLmFscGhhKTsKLSAgICB9KTsKLQotICAgIHNy
Y0NhbnZhcy50b0Jsb2IoZnVuY3Rpb24oYmxvYikgewotICAgICAgICB2YXIgdXJsQ3JlYXRvciA9
IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDsKLSAgICAgICAgaW1hZ2Uuc3JjID0gdXJs
Q3JlYXRvci5jcmVhdGVPYmplY3RVUkwoYmxvYik7Ci0gICAgfSwgJ2ltYWdlL3BuZycsIDEpOwot
fQotCi1mdW5jdGlvbiBydW5Ub0RhdGFVUkxUZXN0KHRlc3RTY2VuYXJpbykgewotICAgIHZhciBz
cmNDYW52YXMgPSBjcmVhdGVDYW52YXModGVzdFNjZW5hcmlvKTsKLSAgICB2YXIgdF9kYXRhVVJM
ID0gYXN5bmNfdGVzdCgiVGVzdCBpZiB0b0RhdGFVUkwoKSByZXNwZWN0cyBsZWdhY3kgYmVoYXZp
b3IgXAotICAgICAgICBpbiBjb2xvciBtYW5hZ2VkIGNhbnZhczogIiArIHRlc3RTY2VuYXJpb1Rv
U3RyaW5nKHRlc3RTY2VuYXJpbykpOwotCi0gICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7Ci0g
ICAgaW1hZ2Uub25sb2FkID0gdF9kYXRhVVJMLnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKCkgewot
ICAgICAgICB2YXIgZHN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
Ci0gICAgICAgIGRzdENhbnZhcy53aWR0aCA9IDI7Ci0gICAgICAgIGRzdENhbnZhcy5oZWlnaHQg
PSAyOwotICAgICAgICB2YXIgY3R4ID0gZHN0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAg
ICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwotICAgICAgICB2YXIgYWN0dWFsUGl4ZWxz
ID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5kYXRhOwotICAgICAgICB0ZXN0UGl4ZWxz
KGFjdHVhbFBpeGVscywgdGVzdFNjZW5hcmlvLmFscGhhKTsKLSAgICB9KTsKLSAgICBpbWFnZS5z
cmMgPSBzcmNDYW52YXMudG9EYXRhVVJMKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkFsbFRlc3RzKCkg
ewotICAgIHByZXBhcmVSZWZlcmVuY2VFeHBlY3RlZFJlc3VsdHMoKTsKLQotICAgIHZhciBpbWFn
ZUZvcm1hdHMgPSBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5nJywgJ2ltYWdlL3dlYnAnXTsKLSAg
ICB2YXIgY29sb3JTcGFjZXMgPSBbCi0gICAgICAgIHtjb2xvclNwYWNlOiAnc3JnYicsIHBpeGVs
Rm9ybWF0OiAndWludDgnfSwKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxGb3Jt
YXQ6ICdmbG9hdDE2J30sCi0gICAgXTsKLSAgICB2YXIgYWxwaGFWYWx1ZXMgPSBbMC41LCAxXTsK
LQotICAgIHZhciB0ZXN0U2NlbmFyaW9TZXQgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGltYWdlRm9ybWF0cy5sZW5ndGg7IGkrKykKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBj
b2xvclNwYWNlcy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwg
YWxwaGFWYWx1ZXMubGVuZ3RoOyBrKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgdGVzdFNjZW5h
cmlvID0ge307Ci0gICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmltYWdlRm9ybWF0ID0gaW1h
Z2VGb3JtYXRzW2ldOwotICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5jb2xvclNwYWNlID0g
Y29sb3JTcGFjZXNbal0uY29sb3JTcGFjZTsKLSAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8u
cGl4ZWxGb3JtYXQgPSBjb2xvclNwYWNlc1tqXS5waXhlbEZvcm1hdDsKLSAgICAgICAgICAgICAg
ICB0ZXN0U2NlbmFyaW8uYWxwaGEgPSBhbHBoYVZhbHVlc1trXTsKLSAgICAgICAgICAgICAgICB0
ZXN0U2NlbmFyaW9TZXQucHVzaCh0ZXN0U2NlbmFyaW8pOwotICAgICAgICAgICAgfQotCi0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9TZXQubGVuZ3RoOyBpKyspCi0gICAgICAg
IHJ1blRvQmxvYlRlc3QodGVzdFNjZW5hcmlvU2V0W2ldKTsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGVzdFNjZW5hcmlvU2V0Lmxlbmd0aDsgaSsrKQotICAgICAgICBydW5Ub0RhdGFVUkxU
ZXN0KHRlc3RTY2VuYXJpb1NldFtpXSk7Ci19Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgcnVu
QWxsVGVzdHMoKTsKLX0sICJPdmVyYWxsIHRlc3QiKTsKLQotPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yc3BhY2UtYXJndW1lbnRzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9y
c3BhY2UtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jb2xvcnNwYWNlLWFyZ3VtZW50cy1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw4ICswLDAgQEAKLQotRkFJTCBUZXN0IGRlZmF1bHQgY29u
dGV4dCBjcmVhdGlvbiBwYXJhbWV0ZXJzOiBzcmdiL3VpbnQ4IGN0eC5nZXRDb250ZXh0QXR0cmli
dXRlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKScs
ICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgVGVzdCBDYW52
YXNDb2xvclNwYWNlIHZhbHVlIHNyZ2IgY3R4LmdldENvbnRleHRBdHRyaWJ1dGVzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ2N0eC5nZXRDb250ZXh0QXR0cmlidXRlcygpJywgJ2N0eC5nZXRDb250
ZXh0QXR0cmlidXRlcycgaXMgdW5kZWZpbmVkKQotRkFJTCBUZXN0IENhbnZhc1BpeGVsRm9ybWF0
IHZhbHVlIHVpbnQ4IGN0eC5nZXRDb250ZXh0QXR0cmlidXRlcyBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKScsICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0
ZXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgVGVzdCBDYW52YXNQaXhlbEZvcm1hdCB2YWx1ZSBmbG9h
dDE2IGN0eC5nZXRDb250ZXh0QXR0cmlidXRlcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHgu
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKScsICdjdHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMnIGlzIHVu
ZGVmaW5lZCkKLUZBSUwgVGVzdCBzdXBwb3J0ZWQgY29sb3Igc2V0dGluZ3Mgc3JnYi91aW50OCBj
dHguZ2V0Q29udGV4dEF0dHJpYnV0ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY3R4LmdldENv
bnRleHRBdHRyaWJ1dGVzKCknLCAnY3R4LmdldENvbnRleHRBdHRyaWJ1dGVzJyBpcyB1bmRlZmlu
ZWQpCi1GQUlMIFRlc3Qgc3VwcG9ydGVkIGNvbG9yIHNldHRpbmdzIHNyZ2IvZmxvYXQxNiBjdHgu
Z2V0Q29udGV4dEF0dHJpYnV0ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY3R4LmdldENvbnRl
eHRBdHRyaWJ1dGVzKCknLCAnY3R4LmdldENvbnRleHRBdHRyaWJ1dGVzJyBpcyB1bmRlZmluZWQp
Ci0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JzcGFjZS1hcmd1
bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFz
LWNvbG9yc3BhY2UtYXJndW1lbnRzLmh0bWwJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93
aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY29sb3JzcGFjZS1hcmd1bWVudHMuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQ4ICswLDAgQEAKLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLQotdmFyIHRlc3RTY2VuYXJpb3MgPSBbCi0g
ICAge3Rlc3REZXNjcmlwdGlvbjogIlRlc3QgZGVmYXVsdCBjb250ZXh0IGNyZWF0aW9uIHBhcmFt
ZXRlcnM6IHNyZ2IvdWludDgiLAotICAgICAgICBjYW52YXNDb2xvclNldHRpbmdzOiB7fSwKLSAg
ICAgICAgZXhwZWN0ZWRDb2xvclNldHRpbmdzOiB7Y29sb3JTcGFjZTogInNyZ2IiLCBwaXhlbEZv
cm1hdDogInVpbnQ4In19LAotICAgIHt0ZXN0RGVzY3JpcHRpb246ICJUZXN0IENhbnZhc0NvbG9y
U3BhY2UgdmFsdWUgc3JnYiIsCi0gICAgICAgIGNhbnZhc0NvbG9yU2V0dGluZ3M6IHtjb2xvclNw
YWNlOiAic3JnYiJ9LAotICAgICAgICBleHBlY3RlZENvbG9yU2V0dGluZ3M6IHtjb2xvclNwYWNl
OiAic3JnYiIsIHBpeGVsRm9ybWF0OiAidWludDgifX0sCi0KLSAgICB7dGVzdERlc2NyaXB0aW9u
OiAiVGVzdCBDYW52YXNQaXhlbEZvcm1hdCB2YWx1ZSB1aW50OCIsCi0gICAgICAgIGNhbnZhc0Nv
bG9yU2V0dGluZ3M6IHtwaXhlbEZvcm1hdDogInVpbnQ4In0sCi0gICAgICAgIGV4cGVjdGVkQ29s
b3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJzcmdiIiwgcGl4ZWxGb3JtYXQ6ICJ1aW50OCJ9fSwK
LSAgICB7dGVzdERlc2NyaXB0aW9uOiAiVGVzdCBDYW52YXNQaXhlbEZvcm1hdCB2YWx1ZSBmbG9h
dDE2IiwKLSAgICAgICAgY2FudmFzQ29sb3JTZXR0aW5nczoge3BpeGVsRm9ybWF0OiAiZmxvYXQx
NiJ9LAotICAgICAgICBleHBlY3RlZENvbG9yU2V0dGluZ3M6IHtjb2xvclNwYWNlOiAic3JnYiIs
IHBpeGVsRm9ybWF0OiAiZmxvYXQxNiJ9fSwKLQotICAgIHt0ZXN0RGVzY3JpcHRpb246ICJUZXN0
IHN1cHBvcnRlZCBjb2xvciBzZXR0aW5ncyBzcmdiL3VpbnQ4IiwKLSAgICAgICAgY2FudmFzQ29s
b3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJzcmdiIiwgcGl4ZWxGb3JtYXQ6ICJ1aW50OCJ9LAot
ICAgICAgICBleHBlY3RlZENvbG9yU2V0dGluZ3M6IHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVs
Rm9ybWF0OiAidWludDgifX0sCi0gICAge3Rlc3REZXNjcmlwdGlvbjogIlRlc3Qgc3VwcG9ydGVk
IGNvbG9yIHNldHRpbmdzIHNyZ2IvZmxvYXQxNiIsCi0gICAgICAgIGNhbnZhc0NvbG9yU2V0dGlu
Z3M6IHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0OiAiZmxvYXQxNiJ9LAotICAgICAg
ICBleHBlY3RlZENvbG9yU2V0dGluZ3M6IHtjb2xvclNwYWNlOiAic3JnYiIsIHBpeGVsRm9ybWF0
OiAiZmxvYXQxNiJ9fSwKLV07Ci0KLWZ1bmN0aW9uIHJ1blRlc3RTY2VuYXJpbyh0ZXN0U2NlbmFy
aW8pIHsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBjYW52YXMg
PSBkb2N1bWVudC4gY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgICAgIHZhciBjdHggPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnLCB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JTZXR0aW5ncyk7
Ci0gICAgICAgIHZhciBjb250ZXh0QXR0cmlidXRlcyA9IGN0eC5nZXRDb250ZXh0QXR0cmlidXRl
cygpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHRBdHRyaWJ1dGVzLmNvbG9yU3BhY2Us
Ci0gICAgICAgICAgICB0ZXN0U2NlbmFyaW8uZXhwZWN0ZWRDb2xvclNldHRpbmdzLmNvbG9yU3Bh
Y2UpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHRBdHRyaWJ1dGVzLnBpeGVsRm9ybWF0
LAotICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmV4cGVjdGVkQ29sb3JTZXR0aW5ncy5waXhlbEZv
cm1hdCk7Ci0gICAgfSwgdGVzdFNjZW5hcmlvLnRlc3REZXNjcmlwdGlvbik7Ci19Ci0KLWZ1bmN0
aW9uIHJ1bkFsbFRlc3RzKCkgewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFNjZW5hcmlv
cy5sZW5ndGg7IGkrKykKLSAgICAgICAgcnVuVGVzdFNjZW5hcmlvKHRlc3RTY2VuYXJpb3NbaV0p
OwotfQotCi1ydW5BbGxUZXN0cygpOwotPC9zY3JpcHQ+Ci0KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy9jYW52YXMtY3JlYXRlSW1hZ2VCaXRtYXAtZV9zcmdiLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZUltYWdl
Qml0bWFwLWVfc3JnYi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93
aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtY3JlYXRlSW1hZ2VCaXRtYXAtZV9zcmdiLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogVHlw
ZUVycm9yOiB0ZXN0Q2FudmFzLmNvbnZlcnRUb0Jsb2IgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
dGVzdENhbnZhcy5jb252ZXJ0VG9CbG9iKGVuY29kZU9wdGlvbnMpJywgJ3Rlc3RDYW52YXMuY29u
dmVydFRvQmxvYicgaXMgdW5kZWZpbmVkKQotCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2Fn
ZSA9IFR5cGVFcnJvcjogdGVzdENhbnZhcy5jb252ZXJ0VG9CbG9iIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ3Rlc3RDYW52YXMuY29udmVydFRvQmxvYihlbmNvZGVPcHRpb25zKScsICd0ZXN0Q2Fu
dmFzLmNvbnZlcnRUb0Jsb2InIGlzIHVuZGVmaW5lZCkKLQotRkFJTCBjcmVhdGVJbWFnZUJpdG1h
cCBpbiBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBIVE1MSW1hZ2VFbGVtZW50IChCTVAsIEdJ
RiwgSUNPLCBKUEcsIFBORywgV0VCUCkgd2l0aCByZXNpemUuIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKSIKLUZBSUwgY3JlYXRl
SW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBzUkdCIEhUTUxJbWFnZUVs
ZW1lbnQgKEJNUCwgSUNPLCBQTkcsIFdFQlApIHdpdGggcmVzaXplLiBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykiCi1GQUlMIGNy
ZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGEgc1JHQiBTVkcgaW1hZ2Ugd2l0aCByZXNp
emUuIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVh
bC5sZW5ndGgnKSIKLVRJTUVPVVQgY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSBz
UkdCIEhUTUxWaWRlb0VsZW1lbnQgd2l0aCByZXNpemUuIFRlc3QgdGltZWQgb3V0Ci1OT1RSVU4g
Y3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYW4gb3BhcXVlIHNSR0IgSFRNTENhbnZh
c0VsZW1lbnQgd2l0aCByZXNpemUuCi1OT1RSVU4gY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdC
IGZyb20gYW4gb3BhcXVlIGUtc1JHQiBIVE1MQ2FudmFzRWxlbWVudCB3aXRoIHJlc2l6ZS4KLU5P
VFJVTiBjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50IHNSR0Ig
SFRNTENhbnZhc0VsZW1lbnQgd2l0aCByZXNpemUuCi1OT1RSVU4gY3JlYXRlSW1hZ2VCaXRtYXAg
aW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBlLXNSR0IgSFRNTENhbnZhc0VsZW1lbnQgd2l0
aCByZXNpemUuCi1OT1RSVU4gY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYW4gb3Bh
cXVlIHNSR0IgQmxvYiB3aXRoIHJlc2l6ZS4KLU5PVFJVTiBjcmVhdGVJbWFnZUJpdG1hcCBpbiBl
LXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50IHNSR0IgQmxvYiB3aXRoIHJlc2l6ZS4KLU5PVFJVTiBj
cmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBjb2xvciBtYW5hZ2VkIEJsb2Igd2l0aCBy
ZXNpemUuIGJsb2JQaXhlbEZvcm1hdDogdWludDgsIHRyYW5zcGFyZW5jeTogZmFsc2UKLQpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jcmVhdGVJbWFnZUJpdG1hcC1lX3Ny
Z2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNy
ZWF0ZUltYWdlQml0bWFwLWVfc3JnYi5odG1sCShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZUltYWdlQml0bWFwLWVfc3JnYi5odG1sCShu
b25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotdmFy
IHRyYW5zcGFyZW50QmxhY2sgPSBbMCwgMCwgMCwgMF07Ci0KLXZhciBlX3NSR0JfUmVkID0gICBb
MSwgMCwgMCwgMV07IC8vIHNSR0IoMjU1LDAsMCwyNTUpCi12YXIgZV9zUkdCX0dyZWVuID0gWzAs
IDEsIDAsIDFdOyAvLyBzUkdCKDAsMjU1LDAsMjU1KQotdmFyIGVfc1JHQl9CbHVlID0gIFswLCAw
LCAxLCAxXTsgLy8gc1JHQigwLDAsMjU1LDI1NSkKLXZhciBlX3NSR0JfQmxhY2sgPSBbMCwgMCwg
MCwgMV07IC8vIHNSR0IoMCwwLDAsMjU1KQotCi0vLyBzUkdCKDE1NSwyNywyNywyNTUpCi12YXIg
ZV9zUkdCX09wYXF1ZVJlZCA9IFswLjYwNzQyMiwgMC4xMDU4MzUsIDAuMTA1ODM1LCAxXTsKLS8v
IHNSR0IoMjcsMTU1LDI3LDI1NSkKLXZhciBlX3NSR0JfT3BhcXVlR3JlZW4gPSBbMC4xMDU4MzUs
IDAuNjA3NDIyLCAwLjEwNTgzNSwgMV07Ci0vLyBzUkdCKDI3LDI3LDE1NSwyNTUpCi12YXIgZV9z
UkdCX09wYXF1ZUJsdWUgPSBbMC4xMDU4MzUsIDAuMTA1ODM1LCAwLjYwNzQyMiwgMV07Ci0vLyBz
UkdCKDI3LDI3LDI3LDI1NSkKLXZhciBlX3NSR0JfT3BhcXVlQmxhY2sgPSBbMC4xMDU4MzUsIDAu
MTA1ODM1LCAwLjEwNTgzNSwgMV07Ci0KLS8vIHNSR0IoMTU1LDI3LDI3LDEyOCkKLXZhciBlX3NS
R0JfVHJhbnNwYXJlbnRSZWQgPSBbMC42MDc0MjIsIDAuMTA1ODM1LCAwLjEwNTgzNSwgMC41MDE5
NTNdOwotLy8gc1JHQigyNywgMTU1LCAyNywgMTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEdy
ZWVuID0gWzAuMTA1ODM1LCAwLjYwNzQyMiwgMC4xMDU4MzUsIDAuNTAxOTUzXTsKLS8vIHNSR0Io
MjcsIDI3LCAxNTUsIDEyOCkKLXZhciBlX3NSR0JfVHJhbnNwYXJlbnRCbHVlID0gWzAuMTA1ODM1
LCAwLjEwNTgzNSwgMC42MDc0MjIsIDAuNTAxOTUzXTsKLS8vIHNSR0IoMjcsIDI3LCAyNywgMTI4
KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEJsYWNrID0gWzAuMTA1ODM1LCAwLjEwNTgzNSwgMC4x
MDU4MzUsIDAuNTAxOTUzXTsKLQotLy8gc1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9U
cmFuc3BhcmVudFJlZEltYWdlID0gWzAuODg2MjMwLCAwLjEyMTUyMSwgMC4xMjE1MjEsIDAuNTAx
OTUzXTsKLS8vIHNSR0IoMjI2LDMxLDMxLDEyOCkKLXZhciBlX3NSR0JfVHJhbnNwYXJlbnRHcmVl
bkltYWdlID0gWzAuMTIxNTIxLCAwLjg4NjIzMCwgMC4xMjE1MjEsIDAuNTAxOTUzXTsKLS8vIHNS
R0IoMjI2LDMxLDMxLDEyOCkKLXZhciBlX3NSR0JfVHJhbnNwYXJlbnRCbHVlSW1hZ2UgPSBbMC4x
MjE1MjEsIDAuMTIxNTIxLCAwLjg4NjIzMCwgMC41MDE5NTNdOwotLy8gc1JHQigyMjYsMzEsMzEs
MTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEJsYWNrSW1hZ2UgPSBbMC4xMjE1MjEsIDAuMTIx
NTIxLCAwLjEyMTUyMSwgMC41MDE5NTNdOwotCi1mdW5jdGlvbiB0ZXN0UGl4ZWxzKGN0eCwgdGVz
dHMsIHNvdXJjZVR5cGUpCi17Ci0gICAgdmFyIGFjdHVhbCwgZXhwZWN0ZWQsIHRvbGVyYW5jZSA9
IDAuMDI1OwotICAgIGlmIChzb3VyY2VUeXBlID09PSAndmlkZW8nKQotICAgICAgICB0b2xlcmFu
Y2UgPSAwLjAzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgYWN0dWFsID0gY3R4LmdldEltYWdlRGF0YSh0ZXN0c1tpXVswXSwgdGVzdHNbaV1b
MV0sIDEsIDEpLmRhdGFVbmlvbjsKLSAgICAgICAgZXhwZWN0ZWQgPSB0ZXN0c1tpXVsyXTsKLSAg
ICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsLmxlbmd0aCA9PT0gZXhwZWN0ZWQubGVuZ3RoKTsKLSAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhY3R1YWwubGVuZ3RoOyBqKyspCi0gICAgICAgICAg
IGFzc2VydF9hcHByb3hfZXF1YWxzKGFjdHVhbFtqXSwgZXhwZWN0ZWRbal0sIHRvbGVyYW5jZSwg
dGVzdHNbaV1bM10pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tOb0Nyb3AoaW1hZ2VCaXRt
YXAsIGNvbG9ySW5mbywgc291cmNlVHlwZSkKLXsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgY2FudmFzLndpZHRoID0gNTA7Ci0gICAgY2Fu
dmFzLmhlaWdodCA9IDUwOwotICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLAot
ICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAg
ICBjdHguY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0gICAg
Y3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7Ci0gICAgdmFyIHRlc3RzOwotICAgIGlm
IChjb2xvckluZm8gPT0gJ2Z1bGxDb2xvcicpCi0gICAgICAgIHRlc3RzID0gW1swLCAwLCBlX3NS
R0JfUmVkLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHJlZC4iXSwKLSAgICAgICAgICAg
ICAgICAgWzM5LCAwLCBlX3NSR0JfR3JlZW4sICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0Ig
Z3JlZW4uIl0sCi0gICAgICAgICAgICAgICAgIFswLCAzOSwgZV9zUkdCX0JsdWUsICJUaGlzIHBp
eGVsIHNob3VsZCBiZSBlLXNSR0IgYmx1ZS4iXSwKLSAgICAgICAgICAgICAgICAgWzM5LCAzOSwg
ZV9zUkdCX0JsYWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGJsYWNrLiJdLAotICAg
ICAgICAgICAgICAgICBbNDEsIDQxLCB0cmFuc3BhcmVudEJsYWNrLCAiVGhpcyBwaXhlbCBzaG91
bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVsc2UgaWYgKGNvbG9ySW5mbyA9PSAn
b3BhcXVlJykKLSAgICAgICAgdGVzdHMgPSBbWzAsIDAsIGVfc1JHQl9PcGFxdWVSZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGxpa2UgcmVkLiJd
LAotICAgICAgICAgICAgICAgICBbMzksIDAsIGVfc1JHQl9PcGFxdWVHcmVlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgbGlrZSBncmVlbi4iXSwK
LSAgICAgICAgICAgICAgICAgWzAsIDM5LCBlX3NSR0JfT3BhcXVlQmx1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgbGlrZSBibHVlLiJdLAotICAg
ICAgICAgICAgICAgICBbMzksIDM5LCBlX3NSR0JfT3BhcXVlQmxhY2ssCi0gICAgICAgICAgICAg
ICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGxpa2UgYmxhY2suIl0sCi0gICAg
ICAgICAgICAgICAgIFs0MSwgNDEsIHRyYW5zcGFyZW50QmxhY2ssICJUaGlzIHBpeGVsIHNob3Vs
ZCBiZSB0cmFuc3BhcmVudCBibGFjay4iXV07Ci0gICAgZWxzZSBpZiAoY29sb3JJbmZvID09ICd0
cmFuc3BhcmVudCcpCi0gICAgICAgIHRlc3RzID0gW1swLCAwLCBlX3NSR0JfVHJhbnNwYXJlbnRS
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHRy
YW5zcGFyZW50IHJlZC4iXSwKLSAgICAgICAgICAgICAgICAgWzM5LCAwLCBlX3NSR0JfVHJhbnNw
YXJlbnRHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBl
LXNSR0IgdHJhbnNwYXJlbnQgZ3JlZW4uIl0sCi0gICAgICAgICAgICAgICAgIFswLCAzOSwgZV9z
UkdCX1RyYW5zcGFyZW50Qmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNo
b3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmx1ZS4iXSwKLSAgICAgICAgICAgICAgICAgWzM5
LCAzOSwgZV9zUkdCX1RyYW5zcGFyZW50QmxhY2ssCi0gICAgICAgICAgICAgICAgICAgICAiVGhp
cyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHRyYW5zcGFyZW50IGJsYWNrLiJdLAotICAgICAgICAg
ICAgICAgICBbNDEsIDQxLCB0cmFuc3BhcmVudEJsYWNrLAotICAgICAgICAgICAgICAgICAgICAg
IlRoaXMgcGl4ZWwgc2hvdWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrLiJdXTsKLSAgICBlbHNlIGlm
IChjb2xvckluZm8gPT09ICd0cmFuc3BhcmVudC1pbWFnZScpCi0gICAgICAgIHRlc3RzID0gW1sw
LCAwLCBlX3NSR0JfVHJhbnNwYXJlbnRSZWRJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICJU
aGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgcmVkLiJdLAotICAgICAgICAg
ICAgICAgICBbMzksIDAsIGVfc1JHQl9UcmFuc3BhcmVudEdyZWVuSW1hZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHRyYW5zcGFyZW50IGdyZWVu
LiJdLAotICAgICAgICAgICAgICAgICBbMCwgMzksIGVfc1JHQl9UcmFuc3BhcmVudEJsdWVJbWFn
ZSwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJh
bnNwYXJlbnQgYmx1ZS4iXSwKLSAgICAgICAgICAgICAgICAgWzM5LCAzOSwgZV9zUkdCX1RyYW5z
cGFyZW50QmxhY2tJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3Vs
ZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmxhY2suIl0sCi0gICAgICAgICAgICAgICAgIFs0MSwg
NDEsIHRyYW5zcGFyZW50QmxhY2ssCi0gICAgICAgICAgICAgICAgICAgICAiVGhpcyBwaXhlbCBz
aG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIHRlc3RQaXhlbHMoY3R4LCB0ZXN0
cywgc291cmNlVHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3JvcChpbWFnZUJpdG1hcCwgY29s
b3JJbmZvLCBzb3VyY2VUeXBlKQotewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdjYW52YXMnKTsKLSAgICBjYW52YXMud2lkdGggPSA1MDsKLSAgICBjYW52YXMuaGVp
Z2h0ID0gNTA7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICAg
IHtjb2xvclNwYWNlOiAnc3JnYicsIHBpeGVsRm9ybWF0OidmbG9hdDE2J30pOwotICAgIGN0eC5j
bGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKLSAgICBjdHguZHJh
d0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKLSAgICB2YXIgdGVzdHM7Ci0gICAgaWYgKGNvbG9y
SW5mbyA9PT0gJ2Z1bGxDb2xvcicpCi0gICAgICAgIHRlc3RzID0gW1swLCAwLCBlX3NSR0JfUmVk
LCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIHJlZC4iXSwKLSAgICAgICAgICAgICAgICAg
WzE5LCAwLCBlX3NSR0JfR3JlZW4sICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgZ3JlZW4u
Il0sCi0gICAgICAgICAgICAgICAgIFswLCAxOSwgZV9zUkdCX0JsdWUsICJUaGlzIHBpeGVsIHNo
b3VsZCBiZSBlLXNSR0IgYmx1ZS4iXSwKLSAgICAgICAgICAgICAgICAgWzE5LCAxOSwgZV9zUkdC
X0JsYWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGJsYWNrLiJdLAotICAgICAgICAg
ICAgICAgICBbMjEsIDIxLCB0cmFuc3BhcmVudEJsYWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUg
dHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVsc2UgaWYgKGNvbG9ySW5mbyA9PT0gJ29wYXF1
ZScpCi0gICAgICAgIHRlc3RzID0gW1swLCAwLCBlX3NSR0JfT3BhcXVlUmVkLAotICAgICAgICAg
ICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiBsaWtlIHJlZC4iXSwKLSAg
ICAgICAgICAgICAgICAgWzE5LCAwLCBlX3NSR0JfT3BhcXVlR3JlZW4sCi0gICAgICAgICAgICAg
ICAgICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGxpa2UgZ3JlZW4uIl0sCi0gICAg
ICAgICAgICAgICAgIFswLCAxOSwgZV9zUkdCX09wYXF1ZUJsdWUsCi0gICAgICAgICAgICAgICAg
ICAgICAiVGhpcyBwaXhlbCBzaG91bGQgYmUgZS1zUkdCIGxpa2UgYmx1ZS4iXSwKLSAgICAgICAg
ICAgICAgICAgWzE5LCAxOSwgZV9zUkdCX09wYXF1ZUJsYWNrLAotICAgICAgICAgICAgICAgICAg
ICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiBsaWtlIGJsYWNrLiJdLAotICAgICAgICAg
ICAgICAgICBbMjEsIDIxLCB0cmFuc3BhcmVudEJsYWNrLCAiVGhpcyBwaXhlbCBzaG91bGQgYmUg
dHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVsc2UgaWYgKGNvbG9ySW5mbyA9PT0gJ3RyYW5z
cGFyZW50JykKLSAgICAgICAgdGVzdHMgPSBbWzAsIDAsIGVfc1JHQl9UcmFuc3BhcmVudFJlZCwK
LSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNw
YXJlbnQgcmVkLiJdLAotICAgICAgICAgICAgICAgICBbMTksIDAsIGVfc1JHQl9UcmFuc3BhcmVu
dEdyZWVuLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JH
QiB0cmFuc3BhcmVudCBncmVlbi4iXSwKLSAgICAgICAgICAgICAgICAgWzAsIDE5LCBlX3NSR0Jf
VHJhbnNwYXJlbnRCbHVlLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxk
IGJlIGUtc1JHQiB0cmFuc3BhcmVudCBibHVlLiJdLAotICAgICAgICAgICAgICAgICBbMTksIDE5
LCBlX3NSR0JfVHJhbnNwYXJlbnRCbGFjaywKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBp
eGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgYmxhY2suIl0sCi0gICAgICAgICAgICAg
ICAgIFsyMSwgMjEsIHRyYW5zcGFyZW50QmxhY2ssCi0gICAgICAgICAgICAgICAgICAgICAiVGhp
cyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2suIl1dOwotICAgIGVsc2UgaWYgKGNv
bG9ySW5mbyA9PT0gJ3RyYW5zcGFyZW50LWltYWdlJykKLSAgICAgICAgdGVzdHMgPSBbWzAsIDAs
IGVfc1JHQl9UcmFuc3BhcmVudFJlZEltYWdlLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMg
cGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiB0cmFuc3BhcmVudCByZWQuIl0sCi0gICAgICAgICAgICAg
ICAgIFsxOSwgMCwgZV9zUkdCX1RyYW5zcGFyZW50R3JlZW5JbWFnZSwKLSAgICAgICAgICAgICAg
ICAgICAgICJUaGlzIHBpeGVsIHNob3VsZCBiZSBlLXNSR0IgdHJhbnNwYXJlbnQgZ3JlZW4uIl0s
Ci0gICAgICAgICAgICAgICAgIFswLCAxOSwgZV9zUkdCX1RyYW5zcGFyZW50Qmx1ZUltYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJlIGUtc1JHQiB0cmFuc3Bh
cmVudCBibHVlLiJdLAotICAgICAgICAgICAgICAgICBbMTksIDE5LCBlX3NSR0JfVHJhbnNwYXJl
bnRCbGFja0ltYWdlLAotICAgICAgICAgICAgICAgICAgICAgIlRoaXMgcGl4ZWwgc2hvdWxkIGJl
IGUtc1JHQiB0cmFuc3BhcmVudCBibGFjay4iXSwKLSAgICAgICAgICAgICAgICAgWzIxLCAyMSwg
dHJhbnNwYXJlbnRCbGFjaywKLSAgICAgICAgICAgICAgICAgICAgICJUaGlzIHBpeGVsIHNob3Vs
ZCBiZSB0cmFuc3BhcmVudCBibGFjay4iXV07Ci0gICAgdGVzdFBpeGVscyhjdHgsIHRlc3RzLCBz
b3VyY2VUeXBlKTsKLX0KLQotCi1mdW5jdGlvbiBjb21wYXJlQml0bWFwcyhiaXRtYXAxLCBiaXRt
YXAyKQotewotICAgIHZhciBjYW52YXMxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7Ci0gICAgdmFyIGNhbnZhczIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
LSAgICBjYW52YXMxLndpZHRoID0gNTA7Ci0gICAgY2FudmFzMS5oZWlnaHQgPSA1MDsKLSAgICBj
YW52YXMyLndpZHRoID0gNTA7Ci0gICAgY2FudmFzMi5oZWlnaHQgPSA1MDsKLSAgICB2YXIgY3R4
MSA9IGNhbnZhczEuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2In
LCBwaXhlbEZvcm1hdDonZmxvYXQxNid9KTsKLSAgICB2YXIgY3R4MiA9IGNhbnZhczIuZ2V0Q29u
dGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDonZmxv
YXQxNid9KTsKLSAgICBjdHgxLmNsZWFyUmVjdCgwLCAwLCBjYW52YXMxLndpZHRoLCBjYW52YXMx
LmhlaWdodCk7Ci0gICAgY3R4Mi5jbGVhclJlY3QoMCwgMCwgY2FudmFzMi53aWR0aCwgY2FudmFz
Mi5oZWlnaHQpOwotICAgIGN0eDEuZHJhd0ltYWdlKGJpdG1hcDEsIDAsIDApOwotICAgIGN0eDIu
ZHJhd0ltYWdlKGJpdG1hcDIsIDAsIDApOwotICAgIHZhciBkYXRhMSA9IGN0eDEuZ2V0SW1hZ2VE
YXRhKDAsIDAsIDUwLCA1MCkuZGF0YVVuaW9uOwotICAgIHZhciBkYXRhMiA9IGN0eDIuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDUwLCA1MCkuZGF0YVVuaW9uOwotICAgIHZhciBkYXRhTWF0Y2hlZCA9IHRy
dWU7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhMS5sZW5ndGg7IGkrKykgewotICAgICAg
ICBpZiAoZGF0YTFbaV0gIT0gZGF0YTJbaV0pIHsKLSAgICAgICAgICAgIGRhdGFNYXRjaGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBhc3NlcnRf
ZmFsc2UoZGF0YU1hdGNoZWQpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW1hZ2VCaXRtYXAoc291cmNl
LCBjb2xvckluZm8sIHNvdXJjZVR5cGUpCi17Ci0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAg
ICAgICAgY3JlYXRlSW1hZ2VCaXRtYXAoc291cmNlLCB7cmVzaXplV2lkdGg6IDQwLCByZXNpemVI
ZWlnaHQ6IDQwLCByZXNpemVRdWFsaXR5OiAiaGlnaCJ9KSwKLSAgICAgICAgY3JlYXRlSW1hZ2VC
aXRtYXAoc291cmNlLCB7cmVzaXplV2lkdGg6IDQwLCByZXNpemVIZWlnaHQ6IDQwLCByZXNpemVR
dWFsaXR5OiAibWVkaXVtIn0pLAotICAgICAgICBjcmVhdGVJbWFnZUJpdG1hcChzb3VyY2UsIHty
ZXNpemVXaWR0aDogNDAsIHJlc2l6ZUhlaWdodDogNDAsIHJlc2l6ZVF1YWxpdHk6ICJsb3cifSks
Ci0gICAgICAgIGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwge3Jlc2l6ZVdpZHRoOiA0MCwgcmVz
aXplSGVpZ2h0OiA0MCwgcmVzaXplUXVhbGl0eTogInBpeGVsYXRlZCJ9KSwKLSAgICAgICAgY3Jl
YXRlSW1hZ2VCaXRtYXAoc291cmNlLCA1LCA1LCAxMCwgMTAsIHsKLSAgICAgICAgICAgIHJlc2l6
ZVdpZHRoOiAyMCwgcmVzaXplSGVpZ2h0OiAyMCwgcmVzaXplUXVhbGl0eTogImhpZ2gifSksCi0g
ICAgICAgIGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwgNSwgNSwgMTAsIDEwLCB7Ci0gICAgICAg
ICAgICByZXNpemVXaWR0aDogMjAsIHJlc2l6ZUhlaWdodDogMjAsIHJlc2l6ZVF1YWxpdHk6ICJt
ZWRpdW0ifSksCi0gICAgICAgIGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwgNSwgNSwgMTAsIDEw
LCB7Ci0gICAgICAgICAgICByZXNpemVXaWR0aDogMjAsIHJlc2l6ZUhlaWdodDogMjAsIHJlc2l6
ZVF1YWxpdHk6ICJsb3cifSksCi0gICAgICAgIGNyZWF0ZUltYWdlQml0bWFwKHNvdXJjZSwgNSwg
NSwgMTAsIDEwLCB7Ci0gICAgICAgICAgICByZXNpemVXaWR0aDogMjAsIHJlc2l6ZUhlaWdodDog
MjAsIHJlc2l6ZVF1YWxpdHk6ICJwaXhlbGF0ZWQifSksCi0gICAgXSkudGhlbigoW25vQ3JvcEhp
Z2gsIG5vQ3JvcE1lZGl1bSwgbm9Dcm9wTG93LCBub0Nyb3BQaXhlbGF0ZWQsIGNyb3BIaWdoLAot
ICAgICAgICAgICAgICBjcm9wTWVkaXVtLCBjcm9wTG93LCBjcm9wUGl4ZWxhdGVkXSkgPT4gewot
ICAgICAgICBjaGVja05vQ3JvcChub0Nyb3BIaWdoLCBjb2xvckluZm8sIHNvdXJjZVR5cGUpOwot
ICAgICAgICBjaGVja05vQ3JvcChub0Nyb3BNZWRpdW0sIGNvbG9ySW5mbywgc291cmNlVHlwZSk7
Ci0gICAgICAgIGNoZWNrTm9Dcm9wKG5vQ3JvcExvdywgY29sb3JJbmZvLCBzb3VyY2VUeXBlKTsK
LSAgICAgICAgY2hlY2tOb0Nyb3Aobm9Dcm9wUGl4ZWxhdGVkLCBjb2xvckluZm8sIHNvdXJjZVR5
cGUpOwotICAgICAgICBjaGVja0Nyb3AoY3JvcEhpZ2gsIGNvbG9ySW5mbywgc291cmNlVHlwZSk7
Ci0gICAgICAgIGNoZWNrQ3JvcChjcm9wTWVkaXVtLCBjb2xvckluZm8sIHNvdXJjZVR5cGUpOwot
ICAgICAgICBjaGVja0Nyb3AoY3JvcExvdywgY29sb3JJbmZvLCBzb3VyY2VUeXBlKTsKLSAgICAg
ICAgY2hlY2tDcm9wKGNyb3BQaXhlbGF0ZWQsIGNvbG9ySW5mbywgc291cmNlVHlwZSk7Ci0gICAg
ICAgIC8vIEJydXRlLWZvcmNlIGNvbXBhcmlzb24gYW1vbmcgYWxsIGJpdG1hcHMgaXMgdG9vIGV4
cGVuc2l2ZS4KLSAgICAgICAgLy8gSW4gY2FzZSBvZiBTVkcsIHJlc2l6ZSBxdWFsaXR5IGRvZXMg
bm90IGFmZmVjdCB0aGUgaW1hZ2VzLCBzbyBhbGwKLSAgICAgICAgLy8gb2YgdGhlbSBhcmUgdGhl
IHNhbWUgYW5kIHRoZSB0ZXN0cyBmYWlsLiBTaW5jZSwgd2UgaWdub3JlIHRoaXMgdGVzdAotICAg
ICAgICAvLyBzZXQgZm9yIFNWRy4KLSAgICAgICAgaWYgKHNvdXJjZVR5cGUgIT0gJ3N2ZycpIHsK
LSAgICAgICAgICAgIGNvbXBhcmVCaXRtYXBzKG5vQ3JvcEhpZ2gsIG5vQ3JvcE1lZGl1bSk7Ci0g
ICAgICAgICAgICBjb21wYXJlQml0bWFwcyhub0Nyb3BMb3csIG5vQ3JvcFBpeGVsYXRlZCk7Ci0g
ICAgICAgICAgICBjb21wYXJlQml0bWFwcyhjcm9wSGlnaCwgY3JvcE1lZGl1bSk7Ci0gICAgICAg
ICAgICBjb21wYXJlQml0bWFwcyhjcm9wTG93LCBjcm9wUGl4ZWxhdGVkKTsKLSAgICAgICAgfQot
ICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0SW1hZ2VCaXRtYXBUcmFuc3BhcmVudChzb3VyY2Up
Ci17Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcChzb3VyY2UsICd0cmFuc3BhcmVudCcsICdn
ZW5lcmFsJyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbWFnZUJpdG1hcEZyb21UcmFuc3BhcmVudElt
YWdlKHNvdXJjZSkKLXsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFwKHNvdXJjZSwgJ3RyYW5z
cGFyZW50LWltYWdlJywgJ2dlbmVyYWwnKTsKLX0KLQotZnVuY3Rpb24gdGVzdEltYWdlQml0bWFw
VmlkZW9Tb3VyY2Uoc291cmNlKQotewotICAgIHJldHVybiB0ZXN0SW1hZ2VCaXRtYXAoc291cmNl
LCAnZnVsbENvbG9yJywgJ3ZpZGVvJyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbWFnZUJpdG1hcE9w
YXF1ZShzb3VyY2UpCi17Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcChzb3VyY2UsICdvcGFx
dWUnLCAnZ2VuZXJhbCcpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW1hZ2VCaXRtYXBGcm9tU1ZHKHNv
dXJjZSkKLXsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFwKHNvdXJjZSwgJ29wYXF1ZScsICdz
dmcnKTsKLX0KLQotZnVuY3Rpb24gaW5pdGlhbGl6ZVRlc3RDYW52YXMoY2FudmFzQ29sb3JTcGFj
ZSwgY2FudmFzUGl4ZWxGb3JtYXQpCi17Ci0gICAgdmFyIHRlc3RDYW52YXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICB0ZXN0Q2FudmFzLndpZHRoID0gMjA7Ci0gICAg
dGVzdENhbnZhcy5oZWlnaHQgPSAyMDsKLSAgICB2YXIgdGVzdEN0eCA9IHRlc3RDYW52YXMuZ2V0
Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogY2FudmFzQ29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQ6Y2FudmFzUGl4ZWxGb3JtYXR9KTsKLSAgICB0ZXN0Q3R4LmZpbGxTdHlsZSA9ICJy
Z2JhKDE1NSwgMjcsIDI3LCAxKSI7Ci0gICAgdGVzdEN0eC5maWxsUmVjdCgwLCAwLCAxMCwgMTAp
OwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1NSwgMjcsIDEpIjsKLSAgICB0
ZXN0Q3R4LmZpbGxSZWN0KDEwLCAwLCAxMCwgMTApOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0g
InJnYmEoMjcsIDI3LCAxNTUsIDEpIjsKLSAgICB0ZXN0Q3R4LmZpbGxSZWN0KDAsIDEwLCAxMCwg
MTApOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywgMSkiOwotICAg
IHRlc3RDdHguZmlsbFJlY3QoMTAsIDEwLCAxMCwgMTApOwotICAgIHJldHVybiB0ZXN0Q2FudmFz
OwotfQotCi1mdW5jdGlvbiBpbml0aWFsaXplVGVzdENhbnZhc1RyYW5zcGFyZW50KGNhbnZhc0Nv
bG9yU3BhY2UsIGNhbnZhc1BpeGVsRm9ybWF0KQotewotICAgIHZhciB0ZXN0Q2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgdGVzdENhbnZhcy53aWR0aCA9IDIw
OwotICAgIHRlc3RDYW52YXMuaGVpZ2h0ID0gMjA7Ci0gICAgdmFyIHRlc3RDdHggPSB0ZXN0Q2Fu
dmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6IGNhbnZhc0NvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAgdGVzdEN0eC5maWxsU3R5
bGUgPSAicmdiYSgxNTUsIDI3LCAyNywgMC41KSI7Ci0gICAgdGVzdEN0eC5maWxsUmVjdCgwLCAw
LCAxMCwgMTApOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1NSwgMjcsIDAu
NSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMTAsIDAsIDEwLCAxMCk7Ci0gICAgdGVzdEN0eC5m
aWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDE1NSwgMC41KSI7Ci0gICAgdGVzdEN0eC5maWxsUmVj
dCgwLCAxMCwgMTAsIDEwKTsKLSAgICB0ZXN0Q3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywg
MjcsIDAuNSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMTAsIDEwLCAxMCwgMTApOwotICAgIHJl
dHVybiB0ZXN0Q2FudmFzOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBIVE1M
SW1hZ2VFbGVtZW50IC0gT3BhcXVlIHNSR0IKLS8vIEZpbGUgZm9ybWF0czogQml0bWFwLCBHSUYs
IElDTywgSlBFRywgUE5HLCBXRUJQCi1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Ci0gICAgcmV0
dXJuIFByb21pc2UuYWxsKFsnYm1wJywgJ2dpZicsICdpY28nLCAnanBnJywgJ3BuZycsICd3ZWJw
J10ubWFwKAotICAgICAgICBleHQgPT4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7
Ci0gICAgICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgICAgICAgICAgIGltYWdl
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJlc29sdmUoaW1hZ2UpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaW1hZ2Uuc3JjID0gJ3Jlc291cmNlcy9wYXR0ZXJu
LXNyZ2IuJyArIGV4dDsKLSAgICAgICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpKSk7
Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYW4gb3BhcXVlIHNSR0IgSFRN
TEltYWdlRWxlbWVudCAoQk1QLCBcCi1HSUYsIElDTywgSlBHLCBQTkcsIFdFQlApIHdpdGggcmVz
aXplLicpOwotCi0vLyBIVE1MSW1hZ2VFbGVtZW50IC0gVHJhbnNwYXJlbnQgc1JHQgotLy8gRmls
ZSBmb3JtYXRzOiBCaXRtYXAsIEdJRiwgSUNPLCBQTkcsIFdFQlAKLXByb21pc2VfdGVzdChmdW5j
dGlvbigpIHsKLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWydibXAnLCAnaWNvJywgJ3BuZycsICd3
ZWJwJ10ubWFwKAotICAgICAgICBleHQgPT4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9
PiB7Ci0gICAgICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKLSAgICAgICAgICAgIGlt
YWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJlc29sdmUoaW1hZ2Up
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW1hZ2Uuc3JjID0gJ3Jlc291cmNlcy9wYXR0
ZXJuLXNyZ2ItdHJhbnNwYXJlbnQuJyArIGV4dDsKLSAgICAgICAgfSkudGhlbih0ZXN0SW1hZ2VC
aXRtYXBGcm9tVHJhbnNwYXJlbnRJbWFnZSkpKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBl
LXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50IHNSR0IgSFRNTEltYWdlRWxlbWVudCBcCi0oQk1QLCBJ
Q08sIFBORywgV0VCUCkgd2l0aCByZXNpemUuJyk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0KLS8vIFNWRyBJbWFnZSAtIHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICB2YXIgaW1h
Z2UgPSBuZXcgSW1hZ2UoKTsKLSAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICByZXNvbHZlKGltYWdlKTsKLSAgICAgICAgfQotICAgICAgICBpbWFnZS5zcmMg
PSAncmVzb3VyY2VzL3BhdHRlcm4tc3JnYi5zdmcnCi0gICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRt
YXBGcm9tU1ZHKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhIHNSR0Ig
U1ZHIGltYWdlIHdpdGggcmVzaXplLicpOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0v
LyBIVE1MVmlkZW9FbGVtZW50IC0gc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIHZhciB2
aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7Ci0gICAgICAgIHZpZGVvLm9u
Y2FucGxheXRocm91Z2ggPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJlc29sdmUodmlkZW8p
OwotICAgICAgICB9Ci0gICAgICAgIHZpZGVvLnByZWxvYWQgPSAiYXV0byI7Ci0gICAgICAgIHZp
ZGVvLnNyYyA9ICdyZXNvdXJjZXMvcGF0dGVybi1zcmdiLWZ1bGxjb2xvci5vZ3YnCi0gICAgfSku
dGhlbih0ZXN0SW1hZ2VCaXRtYXBWaWRlb1NvdXJjZSk7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAg
aW4gZS1zUkdCIGZyb20gYSBzUkdCIEhUTUxWaWRlb0VsZW1lbnQgd2l0aCByZXNpemUuJyk7Ci0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIEhUTUxDYW52YXNFbGVtZW50IC0gT3BhcXVl
IHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGVzdENhbnZhcyA9IGlu
aXRpYWxpemVUZXN0Q2FudmFzKCdzcmdiJywgJ3VpbnQ4Jyk7Ci0gICAgcmV0dXJuIHRlc3RJbWFn
ZUJpdG1hcE9wYXF1ZSh0ZXN0Q2FudmFzKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNS
R0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBIVE1MQ2FudmFzRWxlbWVudCB3aXRoIHJlc2l6ZS4nKTsK
LQotLy8gSFRNTENhbnZhc0VsZW1lbnQgLSBPcGFxdWUgZS1zUkdCCi1wcm9taXNlX3Rlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHRlc3RDYW52YXMgPSBpbml0aWFsaXplVGVzdENhbnZhcygnc3Jn
YicsICdmbG9hdDE2Jyk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcE9wYXF1ZSh0ZXN0Q2Fu
dmFzKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgZS1z
UkdCIEhUTUxDYW52YXNFbGVtZW50IHdpdGggcmVzaXplLicpOwotCi0vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotCi0vLyBIVE1MQ2FudmFzRWxlbWVudCAtIFRyYW5zcGFyZW50IHNSR0IKLXByb21p
c2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgdGVzdENhbnZhcyA9IGluaXRpYWxpemVUZXN0
Q2FudmFzVHJhbnNwYXJlbnQoJ3NyZ2InLCAndWludDgnKTsKLSAgICByZXR1cm4gdGVzdEltYWdl
Qml0bWFwVHJhbnNwYXJlbnQodGVzdENhbnZhcyk7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4g
ZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBzUkdCIEhUTUxDYW52YXNFbGVtZW50IHdpdGggcmVz
aXplLicpOwotCi0vLyBIVE1MQ2FudmFzRWxlbWVudCAtIFRyYW5zcGFyZW50IGUtc1JHQgotcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0ZXN0Q2FudmFzID0gaW5pdGlhbGl6ZVRl
c3RDYW52YXNUcmFuc3BhcmVudCgnc3JnYicsICdmbG9hdDE2Jyk7Ci0gICAgcmV0dXJuIHRlc3RJ
bWFnZUJpdG1hcFRyYW5zcGFyZW50KHRlc3RDYW52YXMpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFw
IGluIGUtc1JHQiBmcm9tIGEgdHJhbnNwYXJlbnQgZS1zUkdCIEhUTUxDYW52YXNFbGVtZW50IHdp
dGggcmVzaXplLicpOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gQmxvYiBmcm9tIGZp
bGUgLSBPcGFxdWUgc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9wZW4oIkdFVCIsICdyZXNvdXJjZXMvcGF0
dGVybi1zcmdiLnBuZycpOwotICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InOwotICAg
ICAgICB4aHIuc2VuZCgpOwotICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICByZXNvbHZlKHhoci5yZXNwb25zZSk7Ci0gICAgICAgIH07Ci0gICAgfSkudGhlbih0
ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBm
cm9tIGFuIG9wYXF1ZSBzUkdCIEJsb2Igd2l0aCByZXNpemUuJyk7Ci0KLS8vIEJsb2IgZm9ybSBm
aWxlIC0gVHJhbnNwYXJlbnQgc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9wZW4oIkdFVCIsICdyZXNvdXJj
ZXMvcGF0dGVybi1zcmdiLXRyYW5zcGFyZW50LnBuZycpOwotICAgICAgICB4aHIucmVzcG9uc2VU
eXBlID0gJ2Jsb2InOwotICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICB4aHIub25sb2FkID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXNvbHZlKHhoci5yZXNwb25zZSk7Ci0gICAgICAg
IH07Ci0gICAgfSkudGhlbih0ZXN0SW1hZ2VCaXRtYXBGcm9tVHJhbnNwYXJlbnRJbWFnZSk7Ci19
LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBzUkdCIEJs
b2Igd2l0aCByZXNpemUuJyk7Ci0KLS8vIENvbG9yIG1hbmFnZWQgYmxvYiBmcm9tIGNhbnZhcwot
ZnVuY3Rpb24gdGVzdENyZWF0ZUltYWdlQml0bWFwRnJvbUNvbG9yTWFuYWdlZEJsb2IocGl4ZWxG
b3JtYXQsIGlzVHJhbnNwYXJlbnQpIHsKLSAgICBsZXQgY2FudmFzUGl4ZWxGb3JtYXQgPSAndWlu
dDgnOwotICAgIGlmIChwaXhlbEZvcm1hdCA9PSAndWludDE2JykKLSAgICAgICAgY2FudmFzUGl4
ZWxGb3JtYXQgPSAnZmxvYXQxNic7Ci0gICAgdmFyIHRlc3RDYW52YXM7Ci0gICAgaWYgKGlzVHJh
bnNwYXJlbnQpCi0gICAgICB0ZXN0Q2FudmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXNUcmFuc3Bh
cmVudCgnc3JnYicsIGNhbnZhc1BpeGVsRm9ybWF0KTsKLSAgICBlbHNlCi0gICAgICB0ZXN0Q2Fu
dmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52YXMoJ3NyZ2InLCBjYW52YXNQaXhlbEZvcm1hdCk7Ci0g
ICAgdmFyIGVuY29kZU9wdGlvbnMgPSB7fTsKLSAgICBlbmNvZGVPcHRpb25zLnF1YWxpdHkgPSAx
OwotICAgIGVuY29kZU9wdGlvbnMudHlwZSA9ICdpbWFnZS9wbmcnOwotICAgIGVuY29kZU9wdGlv
bnMucGl4ZWxGb3JtYXQgPSBwaXhlbEZvcm1hdDsKLQotICAgIHZhciB0ID0gYXN5bmNfdGVzdCgn
Y3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gY29sb3IgbWFuYWdlZCBCbG9iJyArCi0g
ICAgICAgICcgd2l0aCByZXNpemUuIGJsb2JQaXhlbEZvcm1hdDogJyArIHBpeGVsRm9ybWF0ICsK
LSAgICAgICAgJywgdHJhbnNwYXJlbmN5OiAnICsgaXNUcmFuc3BhcmVudCk7Ci0gICAgdGVzdENh
bnZhcy5jb252ZXJ0VG9CbG9iKGVuY29kZU9wdGlvbnMpLnRoZW4oCi0gICAgICAgIHQuc3RlcF9m
dW5jX2RvbmUoZnVuY3Rpb24oYmxvYikgewotICAgICAgICAgICAgaWYgKGlzVHJhbnNwYXJlbnQp
Ci0gICAgICAgICAgICAgICAgdGVzdEltYWdlQml0bWFwVHJhbnNwYXJlbnQoYmxvYik7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEltYWdlQml0bWFwT3BhcXVlKGJsb2Ip
OwotICAgICAgICB9KSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkFsbENyZWF0ZUltYWdlQml0bWFwRnJv
bUNvbG9yTWFuYWdlZEJsb2JUZXN0cygpIHsKLSAgICB2YXIgYmxvYlBpeGVsRm9ybWF0cyA9IFsn
dWludDgnLCAndWludDE2J107Ci0gICAgdmFyIHRyYW5zcGFyZW5jaWVzID0gW2ZhbHNlLCB0cnVl
XTsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJsb2JQaXhlbEZvcm1hdHMubGVuZ3RoOyBqKysp
Ci0gICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdHJhbnNwYXJlbmNpZXMubGVuZ3RoOyBrKysp
IHsKLSAgICAgICAgICAgIHRlc3RDcmVhdGVJbWFnZUJpdG1hcEZyb21Db2xvck1hbmFnZWRCbG9i
KAotICAgICAgICAgICAgICAgIGJsb2JQaXhlbEZvcm1hdHNbal0sIHRyYW5zcGFyZW5jaWVzW2td
KTsKLSAgICAgICAgfQotfQotCi1ydW5BbGxDcmVhdGVJbWFnZUJpdG1hcEZyb21Db2xvck1hbmFn
ZWRCbG9iVGVzdHMoKTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gSW1hZ2VEYXRh
IC0gT3BhcXVlIHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FudmFz
ID0gaW5pdGlhbGl6ZVRlc3RDYW52YXMoJ3NyZ2InLCAndWludDgnKTsKLSAgICB2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRh
KDAsIDAsIDIwLCAyMCk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcE9wYXF1ZShkYXRhKTsK
LX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBJbWFn
ZURhdGEgd2l0aCByZXNpemUuJyk7Ci0KLS8vIEltYWdlRGF0YSAtIE9wYXF1ZSBlLXNSR0IKLXBy
b21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FudmFzID0gaW5pdGlhbGl6ZVRlc3RD
YW52YXMoJ3NyZ2InLCAnZmxvYXQxNicpOwotICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDonZmxvYXQx
Nid9KTsKLSAgICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMjAsIDIwKTsKLSAg
ICByZXR1cm4gdGVzdEltYWdlQml0bWFwT3BhcXVlKGRhdGEpOwotfSwgJ2NyZWF0ZUltYWdlQml0
bWFwIGluIGUtc1JHQiBmcm9tIGFuIG9wYXF1ZSBlLXNSR0IgSW1hZ2VEYXRhIHdpdGggcmVzaXpl
LicpOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBJbWFnZURhdGEgLSBUcmFuc3Bh
cmVudCBzUkdCCi1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGNhbnZhcyA9IGlu
aXRpYWxpemVUZXN0Q2FudmFzVHJhbnNwYXJlbnQoJ3NyZ2InLCAndWludDgnKTsKLSAgICB2YXIg
Y3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1h
Z2VEYXRhKDAsIDAsIDIwLCAyMCk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcFRyYW5zcGFy
ZW50KGRhdGEpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGEgdHJhbnNw
YXJlbnQgc1JHQiBJbWFnZURhdGEgd2l0aCByZXNpemUuJyk7Ci0KLS8vIEltYWdlRGF0YSAtIFRy
YW5zcGFyZW50IGUtc1JHQgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBjYW52
YXMgPSBpbml0aWFsaXplVGVzdENhbnZhc1RyYW5zcGFyZW50KCdzcmdiJywgJ2Zsb2F0MTYnKTsK
LSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3Bh
Y2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6J2Zsb2F0MTYnfSk7Ci0gICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDIwLCAyMCk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcFRy
YW5zcGFyZW50KGRhdGEpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JHQiBmcm9tIGEg
dHJhbnNwYXJlbnQgZS1zUkdCIEltYWdlRGF0YSB3aXRoIHJlc2l6ZS4nKTsKLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLQotLy8gSW1hZ2VCaXRtYXAgLSBPcGFxdWUgc1JHQgotcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0ZXN0Q2FudmFzID0gaW5pdGlhbGl6ZVRlc3RDYW52
YXMoJ3NyZ2InLCAndWludDgnKTsKLSAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAodGVzdENh
bnZhcykudGhlbih0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFw
IGluIGUtc1JHQiBmcm9tIGFuIG9wYXF1ZSBzUkdCIEltYWdlQml0bWFwIHdpdGggcmVzaXplLicp
OwotCi0vLyBJbWFnZUJpdG1hcCAtIE9wYXF1ZSBlLXNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlv
bigpIHsKLSAgICB2YXIgdGVzdENhbnZhcyA9IGluaXRpYWxpemVUZXN0Q2FudmFzKCdzcmdiJywg
J2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAodGVzdENhbnZhcykudGhl
bih0ZXN0SW1hZ2VCaXRtYXBPcGFxdWUpOwotfSwgJ2NyZWF0ZUltYWdlQml0bWFwIGluIGUtc1JH
QiBmcm9tIGFuIG9wYXF1ZSBlLXNSR0IgSW1hZ2VCaXRtYXAgd2l0aCByZXNpemUuJyk7Ci0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIEltYWdlQml0bWFwIC0gVHJhbnNwYXJlbnQgc1JH
QgotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciB0ZXN0Q2FudmFzID0gaW5pdGlh
bGl6ZVRlc3RDYW52YXNUcmFuc3BhcmVudCgnc3JnYicsICd1aW50OCcpOwotICAgIHJldHVybiBj
cmVhdGVJbWFnZUJpdG1hcCh0ZXN0Q2FudmFzKS50aGVuKHRlc3RJbWFnZUJpdG1hcFRyYW5zcGFy
ZW50KTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50
IHNSR0IgSW1hZ2VCaXRtYXAgd2l0aCByZXNpemUuJyk7Ci0KLS8vIEltYWdlQml0bWFwIC0gVHJh
bnNwYXJlbnQgZS1zUkdCCi1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRlc3RD
YW52YXMgPSBpbml0aWFsaXplVGVzdENhbnZhc1RyYW5zcGFyZW50KCdzcmdiJywgJ2Zsb2F0MTYn
KTsKLSAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAodGVzdENhbnZhcykudGhlbih0ZXN0SW1h
Z2VCaXRtYXBUcmFuc3BhcmVudCk7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZy
b20gYSB0cmFuc3BhcmVudCBlLXNSR0IgSW1hZ2VCaXRtYXAgd2l0aCByZXNpemUuJyk7Ci0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWZ1bmN0aW9uIGluaXRpYWxpemVPZmZzY3JlZW5DYW52
YXMoY2FudmFzQ29sb3JTcGFjZSwgY2FudmFzUGl4ZWxGb3JtYXQpCi17Ci0gICAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNhbnZhcy53aWR0aCA9
IDIwOwotICAgIGNhbnZhcy5oZWlnaHQgPSAyMDsKLSAgICB2YXIgb2Zmc2NyZWVuID0gY2FudmFz
LnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7Ci0gICAgdmFyIGN0eCA9IG9mZnNjcmVlbi5n
ZXRDb250ZXh0KCcyZCcsCi0gICAgICAgIHtjb2xvclNwYWNlOiBjYW52YXNDb2xvclNwYWNlLCBw
aXhlbEZvcm1hdDpjYW52YXNQaXhlbEZvcm1hdH0pOwotICAgIGN0eC5maWxsU3R5bGUgPSAicmdi
YSgxNTUsIDI3LCAyNywgMSkiOwotICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMCwgMTApOwotICAg
IGN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMTU1LCAyNywgMSkiOwotICAgIGN0eC5maWxsUmVj
dCgxMCwgMCwgMTAsIDEwKTsKLSAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAxNTUs
IDEpIjsKLSAgICBjdHguZmlsbFJlY3QoMCwgMTAsIDEwLCAxMCk7Ci0gICAgY3R4LmZpbGxTdHls
ZSA9ICJyZ2JhKDI3LCAyNywgMjcsIDEpIjsKLSAgICBjdHguZmlsbFJlY3QoMTAsIDEwLCAxMCwg
MTApOwotICAgIHJldHVybiBvZmZzY3JlZW47Ci19Ci0KLS8vT2Zmc2NyZWVuQ2FudmFzIC0gT3Bh
cXVlIHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgb2Zmc2NyZWVuID0g
aW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhcygnc3JnYicsICd1aW50OCcpOwotICAgIHJldHVybiB0
ZXN0SW1hZ2VCaXRtYXBPcGFxdWUob2Zmc2NyZWVuKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBp
biBlLXNSR0IgZnJvbSBhbiBvcGFxdWUgc1JHQiBPZmZzY3JlZW5DYW52YXMgd2l0aCByZXNpemUu
Jyk7Ci0KLS8vT2Zmc2NyZWVuQ2FudmFzIC0gT3BhcXVlIGUtc1JHQgotcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKCkgewotICAgIHZhciBvZmZzY3JlZW4gPSBpbml0aWFsaXplT2Zmc2NyZWVuQ2FudmFz
KCdzcmdiJywgJ2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFwT3BhcXVlKG9m
ZnNjcmVlbik7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYW4gb3BhcXVl
IGUtc1JHQiBPZmZzY3JlZW5DYW52YXMgd2l0aCByZXNpemUuJyk7Ci0KLS8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0KLWZ1bmN0aW9uIGluaXRpYWxpemVPZmZzY3JlZW5DYW52YXNUcmFuc3BhcmVu
dChjYW52YXNDb2xvclNwYWNlLCBjYW52YXNQaXhlbEZvcm1hdCkKLXsKLSAgICB2YXIgY2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY2FudmFzLndpZHRoID0g
MjA7Ci0gICAgY2FudmFzLmhlaWdodCA9IDIwOwotICAgIHZhciBvZmZzY3JlZW4gPSBjYW52YXMu
dHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4oKTsKLSAgICB2YXIgY3R4ID0gb2Zmc2NyZWVuLmdl
dENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2Jh
KDE1NSwgMjcsIDI3LCAwLjUpIjsKLSAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAsIDEwKTsKLSAg
ICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDE1NSwgMjcsIDAuNSkiOwotICAgIGN0eC5maWxs
UmVjdCgxMCwgMCwgMTAsIDEwKTsKLSAgICBjdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAx
NTUsIDAuNSkiOwotICAgIGN0eC5maWxsUmVjdCgwLCAxMCwgMTAsIDEwKTsKLSAgICBjdHguZmls
bFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywgMC41KSI7Ci0gICAgY3R4LmZpbGxSZWN0KDEwLCAx
MCwgMTAsIDEwKTsKLSAgICByZXR1cm4gb2Zmc2NyZWVuOwotfQotCi0vL09mZnNjcmVlbkNhbnZh
cyAtIFRyYW5zcGFyZW50IHNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIg
b2Zmc2NyZWVuID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhc1RyYW5zcGFyZW50KCdzcmdiJywg
J3VpbnQ4Jyk7Ci0gICAgcmV0dXJuIHRlc3RJbWFnZUJpdG1hcFRyYW5zcGFyZW50KG9mZnNjcmVl
bik7Ci19LCAnY3JlYXRlSW1hZ2VCaXRtYXAgaW4gZS1zUkdCIGZyb20gYSB0cmFuc3BhcmVudCBz
UkdCIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHJlc2l6ZS4nKTsKLQotLy9PZmZzY3JlZW5DYW52YXMg
LSBUcmFuc3BhcmVudCBlLXNSR0IKLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIg
b2Zmc2NyZWVuID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhc1RyYW5zcGFyZW50KCdzcmdiJywg
J2Zsb2F0MTYnKTsKLSAgICByZXR1cm4gdGVzdEltYWdlQml0bWFwVHJhbnNwYXJlbnQob2Zmc2Ny
ZWVuKTsKLX0sICdjcmVhdGVJbWFnZUJpdG1hcCBpbiBlLXNSR0IgZnJvbSBhIHRyYW5zcGFyZW50
IGUtc1JHQiBPZmZzY3JlZW5DYW52YXMgd2l0aCByZXNpemUuJyk7Ci0KLS8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0KLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2Nh
bnZhcy1jcmVhdGVQdXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2VkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZVB1dEdldElt
YWdlRGF0YS1jb2xvck1hbmFnZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1jb2xv
ck1hbmFnZWQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsMTIgKzAsMCBAQAotCi1G
QUlMIFRlc3QgY29sb3IgbWFuYWdlZCBjcmV0YXRlSW1hZ2VEYXRhOiB7c3JnYiwgdWludDh9IC0+
IHtzcmdiLCB1aW50OH0gaW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3MgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnaW1hZ2VEYXRhLmdldENvbG9yU2V0dGluZ3MoKScsICdpbWFnZURhdGEuZ2V0Q29s
b3JTZXR0aW5ncycgaXMgdW5kZWZpbmVkKQotRkFJTCBUZXN0IGNvbG9yIG1hbmFnZWQgY3JldGF0
ZUltYWdlRGF0YToge3NyZ2IsIGZsb2F0MTZ9IC0+IHtzcmdiLCBmbG9hdDMyfSBpbWFnZURhdGEu
Z2V0Q29sb3JTZXR0aW5ncyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbWFnZURhdGEuZ2V0Q29s
b3JTZXR0aW5ncygpJywgJ2ltYWdlRGF0YS5nZXRDb2xvclNldHRpbmdzJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIFRlc3QgY29sb3IgbWFuYWdlZCBnZXRJbWFnZURhdGE6IHtzcmdiLCB1aW50OH0gLT4g
e3NyZ2IsIHVpbnQ4fSBpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygpJywgJ2ltYWdlRGF0YS5nZXRDb2xv
clNldHRpbmdzJyBpcyB1bmRlZmluZWQpCi1GQUlMIFRlc3QgY29sb3IgbWFuYWdlZCBnZXRJbWFn
ZURhdGE6IHtzcmdiLCBmbG9hdDE2fSAtPiB7c3JnYiwgZmxvYXQzMn0gaW1hZ2VEYXRhLmdldENv
bG9yU2V0dGluZ3MgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW1hZ2VEYXRhLmdldENvbG9yU2V0
dGluZ3MoKScsICdpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncycgaXMgdW5kZWZpbmVkKQotRkFJ
TCBUZXN0IGNvbG9yIG1hbmFnZWQgcHV0SW1hZ2VEYXRhOiB7c3JnYiwgdWludDh9IC0+IHtzcmdi
LCB1aW50OH0gVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUKLUZBSUwgVGVzdCBjb2xv
ciBtYW5hZ2VkIHB1dEltYWdlRGF0YToge3NyZ2IsIHVpbnQ4fSAtPiB7c3JnYiwgZmxvYXQxNn0g
VGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUKLUZBSUwgVGVzdCBjb2xvciBtYW5hZ2Vk
IHB1dEltYWdlRGF0YToge3NyZ2IsIHVpbnQxNn0gLT4ge3NyZ2IsIHVpbnQ4fSBUaGUgcHJvdmlk
ZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotRkFJTCBUZXN0IGNvbG9yIG1hbmFnZWQgcHV0SW1hZ2VE
YXRhOiB7c3JnYiwgdWludDE2fSAtPiB7c3JnYiwgZmxvYXQxNn0gVGhlIHByb3ZpZGVkIHZhbHVl
IGlzIG5vbi1maW5pdGUKLUZBSUwgVGVzdCBjb2xvciBtYW5hZ2VkIHB1dEltYWdlRGF0YToge3Ny
Z2IsIGZsb2F0MzJ9IC0+IHtzcmdiLCB1aW50OH0gVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1m
aW5pdGUKLUZBSUwgVGVzdCBjb2xvciBtYW5hZ2VkIHB1dEltYWdlRGF0YToge3NyZ2IsIGZsb2F0
MzJ9IC0+IHtzcmdiLCBmbG9hdDE2fSBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQot
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZVB1dEdldEltYWdl
RGF0YS1jb2xvck1hbmFnZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1j
YW52YXMvY2FudmFzLWNyZWF0ZVB1dEdldEltYWdlRGF0YS1jb2xvck1hbmFnZWQuaHRtbAkocmV2
aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jcmVhdGVQ
dXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2VkLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNDIg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLXZhciB4V2lkdGggPSB4SGVp
Z2h0ID0gMTA7Ci0KLWZ1bmN0aW9uIGNoZWNrSW1hZ2VEYXRhKGNhbnZhc0NvbG9yU2V0dGluZ3Ms
IGltYWdlRGF0YSkgewotICB2YXIgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncyA9IGltYWdlRGF0YS5n
ZXRDb2xvclNldHRpbmdzKCk7Ci0gIGFzc2VydF9lcXVhbHMoY2FudmFzQ29sb3JTZXR0aW5ncy5j
b2xvclNwYWNlLCBpbWFnZURhdGFDb2xvclNldHRpbmdzLmNvbG9yU3BhY2UpOwotICBpZiAoY2Fu
dmFzQ29sb3JTZXR0aW5ncy5waXhlbEZvcm1hdCA9PSAidWludDgiKSB7Ci0gICAgYXNzZXJ0X2Vx
dWFscygidWludDgiLCBpbWFnZURhdGFDb2xvclNldHRpbmdzLnN0b3JhZ2VGb3JtYXQpOwotICAg
IGFzc2VydF9lcXVhbHMoaW1hZ2VEYXRhLmRhdGEubGVuZ3RoLCA0ICogeFdpZHRoICogeEhlaWdo
dCk7Ci0gIH0gZWxzZSB7Ci0gICAgYXNzZXJ0X2VxdWFscygiZmxvYXQzMiIsIGltYWdlRGF0YUNv
bG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhpbWFnZURhdGEu
ZGF0YVVuaW9uLmxlbmd0aCwgNCAqIHhXaWR0aCAqIHhIZWlnaHQpOwotICB9Ci19Ci0KLS8vIFRl
c3QgY3JlYXRlSW1hZ2VEYXRhIHdoZW4gdGhlIGNhbnZhcyBpcyBjb2xvciBtYW5hZ2VkCi12YXIg
aGVscGVySW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YSh4V2lkdGgsIHhIZWlnaHQpOwotZnVuY3Rp
b24gcnVuVGVzdENyZWF0ZUltYWdlRGF0YShjYW52YXNDb2xvclNldHRpbmdzKSB7Ci0gIHZhciBh
Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gIGFDYW52YXMud2lk
dGggPSB4V2lkdGg7Ci0gIGFDYW52YXMuaGVpZ2h0ID0geEhlaWdodDsKLSAgdmFyIGN0eCA9IGFD
YW52YXMuZ2V0Q29udGV4dCgnMmQnLCBjYW52YXNDb2xvclNldHRpbmdzKTsKLSAgdmFyIGltYWdl
RGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoeFdpZHRoLCB4SGVpZ2h0KTsKLSAgY2hlY2tJbWFn
ZURhdGEoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRhKTsKLQotICBpbWFnZURhdGEgPSBj
dHguY3JlYXRlSW1hZ2VEYXRhKGhlbHBlckltYWdlRGF0YSk7Ci0gIGNoZWNrSW1hZ2VEYXRhKGNh
bnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSk7Ci19Ci0KLXZhciB0ZXN0U2NlbmFyaW9zQ3Jl
YXRlSW1hZ2VEYXRhID0gWwotICBbIlRlc3QgY29sb3IgbWFuYWdlZCBjcmV0YXRlSW1hZ2VEYXRh
OiB7c3JnYiwgdWludDh9IC0+IHtzcmdiLCB1aW50OH0iLAotICAgICAge2NvbG9yU3BhY2U6ICJz
cmdiIiwgcGl4ZWxGb3JtYXQ6ICJ1aW50OCJ9XSwKLSAgWyJUZXN0IGNvbG9yIG1hbmFnZWQgY3Jl
dGF0ZUltYWdlRGF0YToge3NyZ2IsIGZsb2F0MTZ9IC0+IHtzcmdiLCBmbG9hdDMyfSIsCi0gICAg
ICB7Y29sb3JTcGFjZTogInNyZ2IiLCBwaXhlbEZvcm1hdDogImZsb2F0MTYifV0sCi1dOwotCi1m
dW5jdGlvbiBydW5DcmVhdGVJbWFnZURhdGFUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhLmxlbmd0aDsgaSsrKXsKLSAgICB2YXIgdCA9
IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0Q3JlYXRlSW1hZ2VEYXRhKHRlc3RTY2Vu
YXJpb3NDcmVhdGVJbWFnZURhdGFbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NDcmVhdGVJ
bWFnZURhdGFbaV1bMF0pOwotICB9Ci19Ci1ydW5DcmVhdGVJbWFnZURhdGFUZXN0cygpOwotCi0v
LyBUZXN0IGdldEltYWdlRGF0YSB3aGVuIHRoZSBjYW52YXMgaXMgY29sb3IgbWFuYWdlZAotZnVu
Y3Rpb24gcnVuVGVzdEdldEltYWdlRGF0YShjYW52YXNDb2xvclNldHRpbmdzKSB7Ci0gIHZhciBh
Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gIGFDYW52YXMud2lk
dGggPSB4V2lkdGg7Ci0gIGFDYW52YXMuaGVpZ2h0ID0geEhlaWdodDsKLSAgdmFyIGN0eCA9IGFD
YW52YXMuZ2V0Q29udGV4dCgnMmQnLCBjYW52YXNDb2xvclNldHRpbmdzKTsKLSAgdmFyIGltYWdl
RGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgeFdpZHRoLCB4SGVpZ2h0KTsKLSAgY2hlY2tJ
bWFnZURhdGEoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRhKTsKLX0KLQotdmFyIHRlc3RT
Y2VuYXJpb3NHZXRJbWFnZURhdGEgPSBbCi0gIFsiVGVzdCBjb2xvciBtYW5hZ2VkIGdldEltYWdl
RGF0YToge3NyZ2IsIHVpbnQ4fSAtPiB7c3JnYiwgdWludDh9IiwKLSAgICAgIHtjb2xvclNwYWNl
OiAic3JnYiIsIHBpeGVsRm9ybWF0OiAidWludDgifV0sCi0gIFsiVGVzdCBjb2xvciBtYW5hZ2Vk
IGdldEltYWdlRGF0YToge3NyZ2IsIGZsb2F0MTZ9IC0+IHtzcmdiLCBmbG9hdDMyfSIsCi0gICAg
ICB7Y29sb3JTcGFjZTogInNyZ2IiLCBwaXhlbEZvcm1hdDogImZsb2F0MTYifV0sCi1dOwotCi1m
dW5jdGlvbiBydW5HZXRJbWFnZURhdGFUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0U2NlbmFyaW9zR2V0SW1hZ2VEYXRhLmxlbmd0aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0R2V0SW1hZ2VEYXRhKHRlc3RTY2VuYXJpb3NHZXRJ
bWFnZURhdGFbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NHZXRJbWFnZURhdGFbaV1bMF0p
OwotICB9Ci19Ci1ydW5HZXRJbWFnZURhdGFUZXN0cygpOwotCi0vLyBUZXN0IHB1dEltYWdlRGF0
YSB3aGVuIHRoZSBjYW52YXMgaXMgY29sb3IgbWFuYWdlZC4KLQotdmFyIGRhdGFVOCA9IG5ldyBV
aW50OENsYW1wZWRBcnJheSg0ICogeFdpZHRoICogeEhlaWdodCk7Ci12YXIgZGF0YVUxNiA9IG5l
dyBVaW50MTZBcnJheSg0ICogeFdpZHRoICogeEhlaWdodCk7Ci12YXIgZGF0YUYzMiA9IG5ldyBG
bG9hdDMyQXJyYXkoNCAqIHhXaWR0aCAqIHhIZWlnaHQpOwotZnVuY3Rpb24gcHJlcGFyZURhdGFB
cnJheXMoKSB7Ci0gIGZvciAoaSA9IDA7IGkgPCA0ICogeFdpZHRoICogeEhlaWdodDsgaSsrKSB7
Ci0gICAgZGF0YVU4W2ldID0gKGkgJSA0ID09IDMpID8gMjU1IDogaSAlIDI1NjsKLSAgICBkYXRh
VTE2W2ldID0gZGF0YVU4W2ldICogMjU3OwotICAgIGRhdGFGMzJbaV0gPSBkYXRhVThbaV0gLyAy
NTUuMDsKLSAgfQotfQotCi12YXIgdGVzdFNjZW5hcmlvc1B1dEltYWdlRGF0YSA9IFtdOwotZnVu
Y3Rpb24gcHJlcGFyZVRlc3RTY2VuYXJpb3NQdXRJbWFnZURhdGEoKSB7Ci0gIHZhciBjb2xvclNw
YWNlcyA9IFsic3JnYiJdOwotICB2YXIgaW1hZ2VEYXRhU3RvcmFnZUZvcm1hdHMgPSBbInVpbnQ4
IiwgInVpbnQxNiIsICJmbG9hdDMyIl07Ci0gIHZhciBjYW52YXNQaXhlbEZvcm1hdHMgPSBbInVp
bnQ4IiwgImZsb2F0MTYiXTsKLQotICBmb3IgKGkgPSAwOyBpIDwgY29sb3JTcGFjZXMubGVuZ3Ro
OyBpKyspCi0gICAgZm9yIChqID0gMDsgaiA8IGltYWdlRGF0YVN0b3JhZ2VGb3JtYXRzLmxlbmd0
aDsgaisrKQotICAgICAgZm9yIChrID0gMDsgayA8IGNvbG9yU3BhY2VzLmxlbmd0aDsgaysrKQot
ICAgICAgICBmb3IgKGwgPSAwOyBsIDwgY2FudmFzUGl4ZWxGb3JtYXRzLmxlbmd0aDsgbCsrKSB7
Ci0gICAgICAgICAgdGVzdFRpdGxlID0gIlRlc3QgY29sb3IgbWFuYWdlZCBwdXRJbWFnZURhdGE6
ICIuY29uY2F0KAotICAgICAgICAgICAgInsiLCBjb2xvclNwYWNlc1tpXSwgIiwgIiwgaW1hZ2VE
YXRhU3RvcmFnZUZvcm1hdHNbal0sICJ9IC0+IHsiLCBjb2xvclNwYWNlc1trXSwKLSAgICAgICAg
ICAgICIsICIsIGNhbnZhc1BpeGVsRm9ybWF0c1tsXSwgIn0iKTsKLSAgICAgICAgICBpbWFnZURh
dGFDb2xvclNldHRpbmdzID0KLSAgICAgICAgICAgIHtjb2xvclNwYWNlOiBjb2xvclNwYWNlc1tp
XSwgc3RvcmFnZUZvcm1hdDogaW1hZ2VEYXRhU3RvcmFnZUZvcm1hdHNbal19OwotICAgICAgICAg
IGNhbnZhc0NvbG9yU2V0dGluZ3MgPQotICAgICAgICAgICAge2NvbG9yU3BhY2U6IGNvbG9yU3Bh
Y2VzW2tdLCBwaXhlbEZvcm1hdDogY2FudmFzUGl4ZWxGb3JtYXRzW2xdfTsKLSAgICAgICAgICB0
ZXN0U2NlbmFyaW9zUHV0SW1hZ2VEYXRhLnB1c2goW3Rlc3RUaXRsZSwgaW1hZ2VEYXRhQ29sb3JT
ZXR0aW5ncywgY2FudmFzQ29sb3JTZXR0aW5nc10pOwotICAgICAgICB9Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZUFuZFB1dEltYWdlRGF0YShkYXRhLCBpbWFnZURhdGFDb2xvclNldHRpbmdzLCBjYW52
YXNDb2xvclNldHRpbmdzKSB7Ci0gIC8vIGNyZWF0ZSBjb2xvciBtYW5hZ2VkIGNhbnZhcwotICB2
YXIgYUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICBhQ2FudmFz
LndpZHRoID0geFdpZHRoOwotICBhQ2FudmFzLmhlaWdodCA9IHhIZWlnaHQ7Ci0gIHZhciBjdHgg
PSBhQ2FudmFzLmdldENvbnRleHQoJzJkJywgY2FudmFzQ29sb3JTZXR0aW5ncyk7Ci0gIC8vIGNy
ZWF0ZSBjb2xvciBtYW5hZ2VkIEltYWdlRGF0YQotICB2YXIgaW1hZ2VEYXRhID0gY3R4LmNyZWF0
ZUltYWdlRGF0YShkYXRhLCB4V2lkdGgsIHhIZWlnaHQsIGltYWdlRGF0YUNvbG9yU2V0dGluZ3Mp
OwotICAvLyBwdXQgaW1hZ2UgZGF0YSBpbnRvIGNhbnZhcy4gdGVzdCBzdWNjZWVkcyBpZiB0aGlz
IGRvZXMgbm90IGNyYXNoLgotICBjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7Ci19
Ci0KLWZ1bmN0aW9uIHJ1blRlc3RQdXRJbWFnZURhdGEoaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncywg
Y2FudmFzQ29sb3JTZXR0aW5ncykgewotICBjcmVhdGVBbmRQdXRJbWFnZURhdGEoZGF0YVU4LCBp
bWFnZURhdGFDb2xvclNldHRpbmdzLCBjYW52YXNDb2xvclNldHRpbmdzKTsKLSAgY3JlYXRlQW5k
UHV0SW1hZ2VEYXRhKGRhdGFVMTYsIGltYWdlRGF0YUNvbG9yU2V0dGluZ3MsIGNhbnZhc0NvbG9y
U2V0dGluZ3MpOwotICBjcmVhdGVBbmRQdXRJbWFnZURhdGEoZGF0YUYzMiwgaW1hZ2VEYXRhQ29s
b3JTZXR0aW5ncywgY2FudmFzQ29sb3JTZXR0aW5ncyk7Ci19Ci0KLXByZXBhcmVEYXRhQXJyYXlz
KCk7Ci1wcmVwYXJlVGVzdFNjZW5hcmlvc1B1dEltYWdlRGF0YSgpOwotCi1mdW5jdGlvbiBydW5Q
dXRJbWFnZURhdGFUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9z
UHV0SW1hZ2VEYXRhLmxlbmd0aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgICBydW5UZXN0UHV0SW1hZ2VEYXRhKHRlc3RTY2VuYXJpb3NQdXRJbWFnZURhdGFbaV1b
MV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NQdXRJbWFnZURhdGFbaV1bMF0pOwotICB9Ci19Ci1y
dW5QdXRJbWFnZURhdGFUZXN0cygpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJpdC1kZXB0aC1pbWFnZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMt
ZHJhdy1oaWdoLWJpdC1kZXB0aC1pbWFnZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXctaGlnaC1iaXQtZGVwdGgt
aW1hZ2VzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLQotUEFT
UyBPdmVyYWxsIHRlc3QKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRl
c3RpbmcgMngyXzhiaXRfc1JHQl9vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9zUkdCX29wYXF1ZS5w
bmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgn
KQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50OC4gVGVzdGluZyAyeDJfOGJp
dF9zUkdCX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFjZWRfc1JHQl9vcGFxdWUucG5n
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykK
LUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRf
c1JHQl90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X3NSR0JfdHJhbnNwYXJlbnQucG5nIHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZB
SUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfc1JH
Ql90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFjZWRfc1JHQl90cmFuc3BhcmVu
dC5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5n
dGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50OC4gVGVzdGluZyAyeDJf
OGJpdF9BZG9iZVJHQl9vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9BZG9iZVJHQl9vcGFxdWUucG5n
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykK
LUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRf
QWRvYmVSR0Jfb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9BZG9iZVJHQl9vcGFx
dWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVu
Z3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngy
XzhiaXRfQWRvYmVSR0JfdHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9BZG9iZVJHQl90cmFu
c3BhcmVudC5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVh
bC5sZW5ndGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50OC4gVGVzdGlu
ZyAyeDJfOGJpdF9BZG9iZVJHQl90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFj
ZWRfQWRvYmVSR0JfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3Jn
YiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX29wYXF1ZS5wbmcgdnMgMngyXzE2
Yml0X0Rpc3BsYXlQM19vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwg
dWludDguIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0
X2ludGVybGFjZWRfRGlzcGxheVAzX29wYXF1ZS5wbmcgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKQotRkFJTCBDYW52YXMgY29sb3IgcGFyYW1z
OiBzcmdiLCB1aW50OC4gVGVzdGluZyAyeDJfOGJpdF9EaXNwbGF5UDNfdHJhbnNwYXJlbnQucG5n
IHZzIDJ4Ml8xNmJpdF9EaXNwbGF5UDNfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9y
IHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX3RyYW5zcGFy
ZW50LnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9EaXNwbGF5UDNfdHJhbnNwYXJlbnQucG5n
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykK
LUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngyXzhiaXRf
UHJvUGhvdG9fb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfUHJvUGhvdG9fb3BhcXVlLnBuZyB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlM
IENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1Byb1Bo
b3RvX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFjZWRfUHJvUGhvdG9fb3BhcXVlLnBu
ZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcp
Ci1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4LiBUZXN0aW5nIDJ4Ml84Yml0
X1Byb1Bob3RvX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfUHJvUGhvdG9fdHJhbnNwYXJl
bnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVu
Z3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRlc3RpbmcgMngy
XzhiaXRfUHJvUGhvdG9fdHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX1By
b1Bob3RvX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVp
bnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1JlYzIwMjBfb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfUmVj
MjAyMF9vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdh
Y3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgdWludDguIFRl
c3RpbmcgMngyXzhiaXRfUmVjMjAyMF9vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2Vk
X1JlYzIwMjBfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4
LiBUZXN0aW5nIDJ4Ml84Yml0X1JlYzIwMjBfdHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9S
ZWMyMDIwX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIHVp
bnQ4LiBUZXN0aW5nIDJ4Ml84Yml0X1JlYzIwMjBfdHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJp
dF9pbnRlcmxhY2VkX1JlYzIwMjBfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBh
cmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9zUkdCX29wYXF1ZS5wbmcgdnMg
MngyXzE2Yml0X3NSR0Jfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2Is
IGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfc1JHQl9vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9p
bnRlcmxhY2VkX3NSR0Jfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2Is
IGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfc1JHQl90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2
Yml0X3NSR0JfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwg
ZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9zUkdCX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZi
aXRfaW50ZXJsYWNlZF9zUkdCX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJh
bXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfQWRvYmVSR0Jfb3BhcXVlLnBuZyB2
cyAyeDJfMTZiaXRfQWRvYmVSR0Jfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6
IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfQWRvYmVSR0Jfb3BhcXVlLnBuZyB2cyAy
eDJfMTZiaXRfaW50ZXJsYWNlZF9BZG9iZVJHQl9vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9y
IHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9BZG9iZVJHQl90cmFuc3Bh
cmVudC5wbmcgdnMgMngyXzE2Yml0X0Fkb2JlUkdCX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZh
cyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfQWRvYmVSR0Jf
dHJhbnNwYXJlbnQucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX0Fkb2JlUkdCX3RyYW5zcGFy
ZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxl
bmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRlc3Rpbmcg
MngyXzhiaXRfRGlzcGxheVAzX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X0Rpc3BsYXlQM19vcGFx
dWUucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVu
Z3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAy
eDJfOGJpdF9EaXNwbGF5UDNfb3BhcXVlLnBuZyB2cyAyeDJfMTZiaXRfaW50ZXJsYWNlZF9EaXNw
bGF5UDNfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
YWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYu
IFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRf
RGlzcGxheVAzX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2Is
IGZsb2F0MTYuIFRlc3RpbmcgMngyXzhiaXRfRGlzcGxheVAzX3RyYW5zcGFyZW50LnBuZyB2cyAy
eDJfMTZiaXRfaW50ZXJsYWNlZF9EaXNwbGF5UDNfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFz
IGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9Qcm9QaG90b19v
cGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9Qcm9QaG90b19vcGFxdWUucG5nIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNv
bG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9Qcm9QaG90b19vcGFx
dWUucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2VkX1Byb1Bob3RvX29wYXF1ZS5wbmcgdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5sZW5ndGgnKQotRkFJTCBD
YW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCBmbG9hdDE2LiBUZXN0aW5nIDJ4Ml84Yml0X1Byb1Bo
b3RvX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJfMTZiaXRfUHJvUGhvdG9fdHJhbnNwYXJlbnQucG5n
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykK
LUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJp
dF9Qcm9QaG90b190cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0X2ludGVybGFjZWRfUHJvUGhv
dG9fdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwgZmxvYXQx
Ni4gVGVzdGluZyAyeDJfOGJpdF9SZWMyMDIwX29wYXF1ZS5wbmcgdnMgMngyXzE2Yml0X1JlYzIw
MjBfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0
dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYuIFRl
c3RpbmcgMngyXzhiaXRfUmVjMjAyMF9vcGFxdWUucG5nIHZzIDJ4Ml8xNmJpdF9pbnRlcmxhY2Vk
X1JlYzIwMjBfb3BhcXVlLnBuZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnYWN0dWFsLmxlbmd0aCcpCi1GQUlMIENhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0
MTYuIFRlc3RpbmcgMngyXzhiaXRfUmVjMjAyMF90cmFuc3BhcmVudC5wbmcgdnMgMngyXzE2Yml0
X1JlYzIwMjBfdHJhbnNwYXJlbnQucG5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwg
ZmxvYXQxNi4gVGVzdGluZyAyeDJfOGJpdF9SZWMyMDIwX3RyYW5zcGFyZW50LnBuZyB2cyAyeDJf
MTZiaXRfaW50ZXJsYWNlZF9SZWMyMDIwX3RyYW5zcGFyZW50LnBuZyB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpCi0KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93
aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJpdC1kZXB0aC1pbWFnZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXctaGlnaC1i
aXQtZGVwdGgtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy9jYW52YXMtZHJhdy1oaWdoLWJpdC1kZXB0aC1pbWFnZXMuaHRtbAkobm9uZXhp
c3RlbnQpCkBAIC0xLDExMSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLXZhciB0ZXN0
SW1hZ2VzUGF0aCA9ICJyZXNvdXJjZXMvcG5nLTE2Yml0LyI7Ci0KLS8vIFNvdXJjZSBvZiBwaXhl
bCBjb21wYXJpc29uIGVycm9yIGluIHRoZXNlIHRlc3RzOgotLy8gLSBjb2xvciBjb252ZXJzaW9u
IGZyb20gZGlmZmVyZW50IGNvbG9yIHByb2ZpbGVzIChzUkdCLCBBZG9iZSBSR0IsIERpc3BsYXkg
UDMsCi0vLyAgIFByb1Bob3RvIGFuZCBSZWMgMjAyMCkgdG8gdGFyZ2V0IGNhbnZhcyBjb2xvciBz
cGFjZSAoc1JHQiwgZS1zUkdCKS4KLS8vIC0gY29tcGFyaW5nIHRoZSByZXN1bHQgb2YgZHJhd2lu
ZyA4IGJpdCBhbmQgMTYgYml0IFBOR3Mgd2l0aCBlYWNoIG90aGVyLgotdmFyIGRlZmF1bHRDb2xv
ckNvbnZlcnNpb25Ub2xlcmFuY2UgPSA4OwotdmFyIHdpZGVHYW11dENvbG9yQ29udmVyc2lvblRv
bGVyYW5jZSA9IDAuMDU7Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodGVzdFNjZW5hcmlvKSB7Ci0gICAg
dmFyIF84Yml0SW1hZ2VTcmMgPSB0ZXN0SW1hZ2VzUGF0aCArIHRlc3RTY2VuYXJpby5fOGJpdElt
YWdlUGF0aDsKLSAgICB2YXIgXzE2Yml0SW1hZ2VTcmMgPSB0ZXN0SW1hZ2VzUGF0aCArIHRlc3RT
Y2VuYXJpby5fMTZiaXRJbWFnZVBhdGg7Ci0gICAgdmFyIHRvbGVyYW5jZSA9IGRlZmF1bHRDb2xv
ckNvbnZlcnNpb25Ub2xlcmFuY2U7Ci0gICAgaWYgKHRlc3RTY2VuYXJpby5jYW52YXNDb2xvclBh
cmFtcy5waXhlbEZvcm1hdCA9PSAnZmxvYXQxNicpCi0gICAgICAgIHRvbGVyYW5jZSA9IHdpZGVH
YW11dENvbG9yQ29udmVyc2lvblRvbGVyYW5jZTsKLQotICAgIHZhciBfOGJpdEltYWdlID0gbmV3
IEltYWdlKCk7Ci0gICAgdmFyIF8xNmJpdEltYWdlID0gbmV3IEltYWdlKCk7Ci0gICAgdmFyIHRf
aW1hZ2UgPSBhc3luY190ZXN0KHRlc3RTY2VuYXJpb1RvU3RyaW5nKHRlc3RTY2VuYXJpbykpOwot
ICAgIF84Yml0SW1hZ2Uub25sb2FkID0gdF9pbWFnZS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIF8xNmJpdEltYWdlLm9ubG9hZCA9IHRfaW1hZ2Uuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgdmFyIHJlZkNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOwotICAgICAgICAgICAgcmVmQ2FudmFzLndpZHRoID0gcmVmQ2FudmFzLmhlaWdodCA9
IDI7Ci0gICAgICAgICAgICB2YXIgcmVmQ3R4ID0gcmVmQ2FudmFzLmdldENvbnRleHQoCi0gICAg
ICAgICAgICAgICAgJzJkJywgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yUGFyYW1zKTsKLSAgICAg
ICAgICAgIHJlZkN0eC5kcmF3SW1hZ2UoXzhiaXRJbWFnZSwgMCwgMCk7Ci0gICAgICAgICAgICB2
YXIgcmVmUGl4ZWxzID0gcmVmQ3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5kYXRhVW5pb247
Ci0KLSAgICAgICAgICAgIHZhciB0ZXN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
Y2FudmFzIik7Ci0gICAgICAgICAgICB0ZXN0Q2FudmFzLndpZHRoID0gdGVzdENhbnZhcy5oZWln
aHQgPSAyOwotICAgICAgICAgICAgdmFyIHRlc3RDdHggPSB0ZXN0Q2FudmFzLmdldENvbnRleHQo
Ci0gICAgICAgICAgICAgICAgJzJkJywgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yUGFyYW1zKTsK
LSAgICAgICAgICAgIHRlc3RDdHguZHJhd0ltYWdlKF8xNmJpdEltYWdlLCAwLCAwKTsKLSAgICAg
ICAgICAgIHZhciB0ZXN0UGl4ZWxzID0gdGVzdEN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMiku
ZGF0YVVuaW9uOwotCi0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhyZWZQ
aXhlbHMsIHRlc3RQaXhlbHMsIHRvbGVyYW5jZSk7Ci0KLSAgICAgICAgICAgIHRfaW1hZ2UuZG9u
ZSgpOwotICAgICAgICB9KTsKLSAgICAgICAgXzE2Yml0SW1hZ2Uuc3JjID0gXzE2Yml0SW1hZ2VT
cmM7Ci0gICAgfSk7Ci0gICAgXzhiaXRJbWFnZS5zcmMgPSBfOGJpdEltYWdlU3JjOwotfQotCi1m
dW5jdGlvbiBydW5BbGxUZXN0cygpIHsKLSAgICB2YXIgcG5nQ29sb3JTcGFjZXMgPSBbCi0gICAg
ICAgICJfc1JHQiIsCi0gICAgICAgICJfQWRvYmVSR0IiLAotICAgICAgICAiX0Rpc3BsYXlQMyIs
Ci0gICAgICAgICJfUHJvUGhvdG8iLAotICAgICAgICAiX1JlYzIwMjAiLAotICAgIF07Ci0gICAg
dmFyIHBuZ1RyYW5zcGFyZW5jeVN0YXR1cyA9IFsKLSAgICAgICAgIl9vcGFxdWUiLAotICAgICAg
ICAiX3RyYW5zcGFyZW50IiwKLSAgICBdOwotICAgIHZhciBwbmdJbnRlcmxhY2VTdGF0dXMgPSBb
Ci0gICAgICAgICIiLCAgLy8gbm9uLWludGVybGFjZWQKLSAgICAgICAgIl9pbnRlcmxhY2VkIiwK
LSAgICBdOwotCi0KLSAgICB2YXIgXzhiaXRQbmdQcmVmaXggPSAiMngyXzhiaXQiOwotICAgIHZh
ciBfMTZiaXRQbmdQcmVmaXggPSAiMngyXzE2Yml0IjsKLQotICAgIHZhciBjYW52YXNDb2xvclBh
cmFtcyA9IFsKLSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6ICd1aW50
OCd9LAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDogJ2Zsb2F0MTYn
fSwKLSAgICBdOwotCi0gICAgdmFyIHRlc3RTY2VuYXJpb1NldCA9IFtdOwotICAgIHZhciBpZCA9
IDE7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYW52YXNDb2xvclBhcmFtcy5sZW5ndGg7IGkr
KykgewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBuZ0NvbG9yU3BhY2VzLmxlbmd0aDsg
aisrKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHBuZ1RyYW5zcGFyZW5jeVN0
YXR1cy5sZW5ndGg7IGsrKykgewotICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwg
cG5nSW50ZXJsYWNlU3RhdHVzLmxlbmd0aDsgbSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciB0ZXN0U2NlbmFyaW8gPSB7fTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmNh
bnZhc0NvbG9yUGFyYW1zID0gY2FudmFzQ29sb3JQYXJhbXNbaV07Ci0gICAgICAgICAgICAgICAg
ICAgIHRlc3RTY2VuYXJpby5fOGJpdEltYWdlUGF0aCA9IF84Yml0UG5nUHJlZml4ICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHBuZ0NvbG9yU3BhY2VzW2pdICsgcG5nVHJhbnNwYXJlbmN5U3Rh
dHVzW2tdICsgIi5wbmciOwotICAgICAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uXzE2Yml0
SW1hZ2VQYXRoID0gXzE2Yml0UG5nUHJlZml4ICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBu
Z0ludGVybGFjZVN0YXR1c1ttXSArIHBuZ0NvbG9yU3BhY2VzW2pdICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBuZ1RyYW5zcGFyZW5jeVN0YXR1c1trXSArICIucG5nIjsKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdFNjZW5hcmlvU2V0LnB1c2godGVzdFNjZW5hcmlvKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRlc3RTY2VuYXJpb1NldC5sZW5ndGg7IGkrKykKLSAgICAgICAgcnVuVGVzdCh0
ZXN0U2NlbmFyaW9TZXRbaV0pOwotfQotCi1mdW5jdGlvbiB0ZXN0U2NlbmFyaW9Ub1N0cmluZyh0
ZXN0U2NlbmFyaW8pIHsKLSAgICB2YXIgc3RyID0gIkNhbnZhcyBjb2xvciBwYXJhbXM6ICIgKwot
ICAgICAgICB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbXMuY29sb3JTcGFjZSArICIsICIg
KwotICAgICAgICB0ZXN0U2NlbmFyaW8uY2FudmFzQ29sb3JQYXJhbXMucGl4ZWxGb3JtYXQgKyAi
LiBUZXN0aW5nICIgKwotICAgICAgICB0ZXN0U2NlbmFyaW8uXzhiaXRJbWFnZVBhdGggKyAiIHZz
ICIgKyB0ZXN0U2NlbmFyaW8uXzE2Yml0SW1hZ2VQYXRoOwotICAgIHJldHVybiBzdHI7Ci19Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgcnVuQWxsVGVzdHMoKTsKLX0sICJPdmVyYWxsIHRlc3Qi
KTsKLQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRy
YXdJbWFnZS1lX3NyZ2ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWVfc3JnYi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWVf
c3JnYi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSwzICswLDAgQEAKLQotRkFJTCBE
cmF3IFNSR0IgaW1hZ2Ugb24gYW4gZS1zUkdCIGNhbnZhcyBhbmQgcmVhZCBiYWNrIHRoZSBlLXNS
R0IgcGl4ZWxzLiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdhY3R1YWwubGVuZ3RoJykiCi0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9jYW52
YXMtZHJhd0ltYWdlLWVfc3JnYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWVfc3JnYi5odG1sCShyZXZpc2lvbiAyNzY3MTYpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1lX3NyZ2IuaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDUzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotLy8g
c1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudFJlZCA9IFswLjg4NjIz
MCwgMC4xMjE1MjEsIDAuMTIxNTIxLCAwLjUwMTk1M107Ci0vLyBzUkdCKDIyNiwzMSwzMSwxMjgp
Ci12YXIgZV9zUkdCX1RyYW5zcGFyZW50R3JlZW4gPSBbMC4xMjE1MjEsIDAuODg2MjMwLCAwLjEy
MTUyMSwgMC41MDE5NTNdOwotLy8gc1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9UcmFu
c3BhcmVudEJsdWUgPSBbMC4xMjE1MjEsIDAuMTIxNTIxLCAwLjg4NjIzMCwgMC41MDE5NTNdOwot
Ly8gc1JHQigyMjYsMzEsMzEsMTI4KQotdmFyIGVfc1JHQl9UcmFuc3BhcmVudEJsYWNrID0gWzAu
MTIxNTIxLCAwLjEyMTUyMSwgMC4xMjE1MjEsIDAuNTAxOTUzXTsKLQotZnVuY3Rpb24gdGVzdFBp
eGVscyhjdHgsIHRlc3RzKQotewotICAgIHZhciBhY3R1YWwsIGV4cGVjdGVkLCB0b2xlcmFuY2Ug
PSAwLjAxOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKLSAg
ICAgIGFjdHVhbCA9IGN0eC5nZXRJbWFnZURhdGEodGVzdHNbaV0ueCwgdGVzdHNbaV0ueSwgMSwg
MSkuZGF0YVVuaW9uOwotICAgICAgZXhwZWN0ZWQgPSB0ZXN0c1tpXS5jb2xvcjsKLSAgICAgIGFz
c2VydF90cnVlKGFjdHVhbC5sZW5ndGggPT09IGV4cGVjdGVkLmxlbmd0aCk7Ci0gICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGFjdHVhbC5sZW5ndGg7IGorKykKLSAgICAgICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoYWN0dWFsW2pdLCBleHBlY3RlZFtqXSwgdG9sZXJhbmNlKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIGRyYXdTUkdCSW1hZ2VPbkV4dGVuZGVkU1JHQkNhbnZhcyhzb3VyY2UpCi17Ci0g
IHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgY2FudmFz
LndpZHRoID0gMjA7Ci0gIGNhbnZhcy5oZWlnaHQgPSAyMDsKLSAgdmFyIGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcsCi0gICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1hdDon
ZmxvYXQxNid9KTsKLSAgY3R4LmRyYXdJbWFnZShzb3VyY2UsIDAsIDApOwotICB2YXIgdGVzdHMg
PSBbe3g6IDUsIHk6IDUsIGNvbG9yOiBlX3NSR0JfVHJhbnNwYXJlbnRSZWR9LAotICAgICAgICAg
ICAgICAge3g6IDE1LCB5OiA1LCBjb2xvcjogZV9zUkdCX1RyYW5zcGFyZW50R3JlZW59LAotICAg
ICAgICAgICAgICAge3g6IDUsIHk6IDE1LCBjb2xvcjogZV9zUkdCX1RyYW5zcGFyZW50Qmx1ZX0s
Ci0gICAgICAgICAgICAgICB7eDogMTUsIHk6IDE1LCBjb2xvcjogZV9zUkdCX1RyYW5zcGFyZW50
QmxhY2t9XTsKLSAgdGVzdFBpeGVscyhjdHgsIHRlc3RzKTsKLX0KLQotcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKCkgewotICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewot
ICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpOwotICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9u
KCkgewotICAgICAgcmVzb2x2ZShpbWFnZSk7Ci0gICAgfQotICAgIGltYWdlLnNyYyA9ICdyZXNv
dXJjZXMvcGF0dGVybi1zZW1pdHJhbnNwYXJlbnQtc3JnYi5wbmcnCi0gIH0pLnRoZW4oZHJhd1NS
R0JJbWFnZU9uRXh0ZW5kZWRTUkdCQ2FudmFzKTsKLX0sICdEcmF3IFNSR0IgaW1hZ2Ugb24gYW4g
ZS1zUkdCIGNhbnZhcyBhbmQgcmVhZCBiYWNrIHRoZSBlLXNSR0IgcGl4ZWxzLicpOwotCi08L3Nj
cmlwdD4KLQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1kcmF3SW1hZ2Ut
b2Zmc2NyZWVuQ2FudmFzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1vZmZzY3JlZW5DYW52YXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRy
YXdJbWFnZS1vZmZzY3JlZW5DYW52YXMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEs
NiArMCwwIEBACi0KLUZBSUwgVGVzdCBkcmF3aW5nIGNvbG9yIG1hbmFnZWQgT2Zmc2NyZWVuQ2Fu
dmFzOiBDYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1aW50ODsgIE9mZnNjcmVlbkNhbnZhcyBj
b2xvciBwYXJhbXM6IHNyZ2IsIHVpbnQ4IGNhbnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVl
biBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3Jl
ZW4oKScsICdjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4nIGlzIHVuZGVmaW5lZCkK
LUZBSUwgVGVzdCBkcmF3aW5nIGNvbG9yIG1hbmFnZWQgT2Zmc2NyZWVuQ2FudmFzOiBDYW52YXMg
Y29sb3IgcGFyYW1zOiBzcmdiLCB1aW50ODsgIE9mZnNjcmVlbkNhbnZhcyBjb2xvciBwYXJhbXM6
IHNyZ2IsIGZsb2F0MTYgY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ2NhbnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpJywgJ2Nh
bnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbicgaXMgdW5kZWZpbmVkKQotRkFJTCBUZXN0
IGRyYXdpbmcgY29sb3IgbWFuYWdlZCBPZmZzY3JlZW5DYW52YXM6IENhbnZhcyBjb2xvciBwYXJh
bXM6IHNyZ2IsIGZsb2F0MTY7ICBPZmZzY3JlZW5DYW52YXMgY29sb3IgcGFyYW1zOiBzcmdiLCB1
aW50OCBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4gaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCknLCAnY2FudmFzLnRyYW5z
ZmVyQ29udHJvbFRvT2Zmc2NyZWVuJyBpcyB1bmRlZmluZWQpCi1GQUlMIFRlc3QgZHJhd2luZyBj
b2xvciBtYW5hZ2VkIE9mZnNjcmVlbkNhbnZhczogQ2FudmFzIGNvbG9yIHBhcmFtczogc3JnYiwg
ZmxvYXQxNjsgIE9mZnNjcmVlbkNhbnZhcyBjb2xvciBwYXJhbXM6IHNyZ2IsIGZsb2F0MTYgY2Fu
dmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2Nh
bnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpJywgJ2NhbnZhcy50cmFuc2ZlckNvbnRy
b2xUb09mZnNjcmVlbicgaXMgdW5kZWZpbmVkKQotCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1j
YW52YXMvY2FudmFzLWRyYXdJbWFnZS1vZmZzY3JlZW5DYW52YXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1vZmZzY3JlZW5DYW52
YXMuaHRtbAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2Nh
bnZhcy1kcmF3SW1hZ2Utb2Zmc2NyZWVuQ2FudmFzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NzYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBpbml0aWFsaXplQmxh
bmtDYW52YXMoY2FudmFzQ29sb3JTcGFjZSwgY2FudmFzUGl4ZWxGb3JtYXQpCi17Ci0gICAgdmFy
IHRlc3RDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICB0ZXN0
Q2FudmFzLndpZHRoID0gNDsKLSAgICB0ZXN0Q2FudmFzLmhlaWdodCA9IDQ7Ci0gICAgdmFyIHRl
c3RDdHggPSB0ZXN0Q2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6
IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAg
cmV0dXJuIHRlc3RDdHg7Ci19Ci0KLWZ1bmN0aW9uIGluaXRpYWxpemVDYW52YXMoY2FudmFzQ29s
b3JTcGFjZSwgY2FudmFzUGl4ZWxGb3JtYXQpCi17Ci0gICAgdmFyIHRlc3RDYW52YXMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICB0ZXN0Q2FudmFzLndpZHRoID0gNDsK
LSAgICB0ZXN0Q2FudmFzLmhlaWdodCA9IDQ7Ci0gICAgdmFyIHRlc3RDdHggPSB0ZXN0Q2FudmFz
LmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3BhY2U6IGNhbnZhc0NvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUg
PSAicmdiYSgxNTUsIDI3LCAyNywgMSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMCwgMCwgMiwg
Mik7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMTU1LCAyNywgMSkiOwotICAg
IHRlc3RDdHguZmlsbFJlY3QoMiwgMCwgMiwgMik7Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAi
cmdiYSgyNywgMjcsIDE1NSwgMSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMCwgMiwgMiwgMik7
Ci0gICAgdGVzdEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDI3LCAxKSI7Ci0gICAgdGVz
dEN0eC5maWxsUmVjdCgyLCAyLCAyLCAyKTsKLSAgICByZXR1cm4gdGVzdEN0eDsKLX0KLQotZnVu
Y3Rpb24gaW5pdGlhbGl6ZUNhbnZhc1RyYW5zcGFyZW50KGNhbnZhc0NvbG9yU3BhY2UsIGNhbnZh
c1BpeGVsRm9ybWF0KQotewotICAgIHZhciB0ZXN0Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7Ci0gICAgdGVzdENhbnZhcy53aWR0aCA9IDQ7Ci0gICAgdGVzdENhbnZh
cy5oZWlnaHQgPSA0OwotICAgIHZhciB0ZXN0Q3R4ID0gdGVzdENhbnZhcy5nZXRDb250ZXh0KCcy
ZCcsCi0gICAgICAgIHtjb2xvclNwYWNlOiBjYW52YXNDb2xvclNwYWNlLCBwaXhlbEZvcm1hdDpj
YW52YXNQaXhlbEZvcm1hdH0pOwotICAgIHRlc3RDdHguZmlsbFN0eWxlID0gInJnYmEoMTU1LCAy
NywgMjcsIDAuNSkiOwotICAgIHRlc3RDdHguZmlsbFJlY3QoMCwgMCwgMiwgMik7Ci0gICAgdGVz
dEN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMTU1LCAyNywgMC41KSI7Ci0gICAgdGVzdEN0eC5m
aWxsUmVjdCgyLCAwLCAyLCAyKTsKLSAgICB0ZXN0Q3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAy
NywgMTU1LCAwLjUpIjsKLSAgICB0ZXN0Q3R4LmZpbGxSZWN0KDAsIDIsIDIsIDIpOwotICAgIHRl
c3RDdHguZmlsbFN0eWxlID0gInJnYmEoMjcsIDI3LCAyNywgMC41KSI7Ci0gICAgdGVzdEN0eC5m
aWxsUmVjdCgyLCAyLCAyLCAyKTsKLSAgICByZXR1cm4gdGVzdEN0eDsKLX0KLQotCi1mdW5jdGlv
biBpbml0aWFsaXplT2Zmc2NyZWVuQ2FudmFzKGNhbnZhc0NvbG9yU3BhY2UsIGNhbnZhc1BpeGVs
Rm9ybWF0KQotewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52
YXMiKTsKLSAgICBjYW52YXMud2lkdGggPSA0OwotICAgIGNhbnZhcy5oZWlnaHQgPSA0OwotICAg
IHZhciBvZmZzY3JlZW4gPSBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4oKTsKLSAg
ICB2YXIgY3R4ID0gb2Zmc2NyZWVuLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2NvbG9yU3Bh
Y2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0fSk7Ci0g
ICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAxKSI7Ci0gICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIDIsIDIpOwotICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMTU1LCAyNywg
MSkiOwotICAgIGN0eC5maWxsUmVjdCgyLCAwLCAyLCAyKTsKLSAgICBjdHguZmlsbFN0eWxlID0g
InJnYmEoMjcsIDI3LCAxNTUsIDEpIjsKLSAgICBjdHguZmlsbFJlY3QoMCwgMiwgMiwgMik7Ci0g
ICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMjcsIDEpIjsKLSAgICBjdHguZmlsbFJl
Y3QoMiwgMiwgMiwgMik7Ci0gICAgcmV0dXJuIG9mZnNjcmVlbjsKLX0KLQotZnVuY3Rpb24gaW5p
dGlhbGl6ZU9mZnNjcmVlbkNhbnZhc1RyYW5zcGFyZW50KGNhbnZhc0NvbG9yU3BhY2UsIGNhbnZh
c1BpeGVsRm9ybWF0KQotewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKLSAgICBjYW52YXMud2lkdGggPSA0OwotICAgIGNhbnZhcy5oZWlnaHQgPSA0
OwotICAgIHZhciBvZmZzY3JlZW4gPSBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4o
KTsKLSAgICB2YXIgY3R4ID0gb2Zmc2NyZWVuLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge2Nv
bG9yU3BhY2U6IGNhbnZhc0NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0OmNhbnZhc1BpeGVsRm9ybWF0
fSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDE1NSwgMjcsIDI3LCAwLjUpIjsKLSAgICBj
dHguZmlsbFJlY3QoMCwgMCwgMiwgMik7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAx
NTUsIDI3LCAwLjUpIjsKLSAgICBjdHguZmlsbFJlY3QoMiwgMCwgMiwgMik7Ci0gICAgY3R4LmZp
bGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMTU1LCAwLjUpIjsKLSAgICBjdHguZmlsbFJlY3QoMCwg
MiwgMiwgMik7Ci0gICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMjcsIDAuNSkiOwot
ICAgIGN0eC5maWxsUmVjdCgyLCAyLCAyLCAyKTsKLSAgICByZXR1cm4gb2Zmc2NyZWVuOwotfQot
Ci1mdW5jdGlvbiB0ZXN0UGl4ZWxzKHRlc3RDdHgsIHJlZkN0eCwgcGl4ZWxGb3JtYXQsIGlzVHJu
YXNwYXJlbnQpCi17Ci0gICAgdmFyIGFjdHVhbCA9IHRlc3RDdHguZ2V0SW1hZ2VEYXRhKDAsIDAs
IDQsIDQpLmRhdGFVbmlvbjsKLSAgICB2YXIgZXhwZWN0ZWQgPSByZWZDdHguZ2V0SW1hZ2VEYXRh
KDAsIDAsIDQsIDQpLmRhdGFVbmlvbjsKLQotICAgIHZhciB0b2xlcmFuY2UgPSA0OwotICAgIGlm
IChwaXhlbEZvcm1hdCA9PT0gJ2Zsb2F0MTYnKQotICAgICAgICB0b2xlcmFuY2UgPSAwLjAyOwot
ICAgIGlmIChpc1RybmFzcGFyZW50KQotICAgICAgICB0b2xlcmFuY2UgPSB0b2xlcmFuY2UgKiAy
OwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIHRvbGVy
YW5jZSk7Ci19Ci0KLQotZnVuY3Rpb24gcnVuRHJhd09mZnNjcmVlbkNhbnZhc1Rlc3RPcGFxdWUo
dGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFyIGNhbnZhc19jdHhfb3BhcXVlID0gaW5pdGlhbGl6ZUNh
bnZhcygKLSAgICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yU3BhY2UsIHRlc3RTY2VuYXJp
by5jYW52YXNQaXhlbEZvcm1hdCk7Ci0KLSAgICB2YXIgY2FudmFzX2N0eF9ibGFuayA9IGluaXRp
YWxpemVCbGFua0NhbnZhcygKLSAgICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc0NvbG9yU3BhY2Us
IHRlc3RTY2VuYXJpby5jYW52YXNQaXhlbEZvcm1hdCk7Ci0gICAgdmFyIG9mZnNjcmVlbl9jYW52
YXNfb3BhcXVlID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhcygKLSAgICAgICAgdGVzdFNjZW5h
cmlvLmltYWdlQ29sb3JTcGFjZSwgdGVzdFNjZW5hcmlvLmltYWdlUGl4ZWxGb3JtYXQpOwotICAg
IGNhbnZhc19jdHhfYmxhbmsuZHJhd0ltYWdlKG9mZnNjcmVlbl9jYW52YXNfb3BhcXVlLCAwLCAw
KTsKLSAgICB0ZXN0UGl4ZWxzKGNhbnZhc19jdHhfYmxhbmssIGNhbnZhc19jdHhfb3BhcXVlLAot
ICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmNhbnZhc1BpeGVsRm9ybWF0LCBmYWxzZSk7Ci19
Ci0KLWZ1bmN0aW9uIHJ1bkRyYXdPZmZzY3JlZW5DYW52YXNUZXN0VHJhbnNwYXJlbnQodGVzdFNj
ZW5hcmlvKSB7Ci0gICAgdmFyIGNhbnZhc19jdHhfdHJhbnNwYXJlbnQgPSBpbml0aWFsaXplQ2Fu
dmFzVHJhbnNwYXJlbnQoCi0gICAgICAgIHRlc3RTY2VuYXJpby5jYW52YXNDb2xvclNwYWNlLCB0
ZXN0U2NlbmFyaW8uY2FudmFzUGl4ZWxGb3JtYXQpOwotCi0gICAgdmFyIGNhbnZhc19jdHhfYmxh
bmsgPSBpbml0aWFsaXplQmxhbmtDYW52YXMoCi0gICAgICAgIHRlc3RTY2VuYXJpby5jYW52YXND
b2xvclNwYWNlLCB0ZXN0U2NlbmFyaW8uY2FudmFzUGl4ZWxGb3JtYXQpOwotICAgIHZhciBvZmZz
Y3JlZW5fY2FudmFzX3RyYW5zcGFyZW50ID0gaW5pdGlhbGl6ZU9mZnNjcmVlbkNhbnZhc1RyYW5z
cGFyZW50KAotICAgICAgICB0ZXN0U2NlbmFyaW8uaW1hZ2VDb2xvclNwYWNlLCB0ZXN0U2NlbmFy
aW8uaW1hZ2VQaXhlbEZvcm1hdCk7Ci0gICAgY2FudmFzX2N0eF9ibGFuay5kcmF3SW1hZ2Uob2Zm
c2NyZWVuX2NhbnZhc190cmFuc3BhcmVudCwgMCwgMCk7Ci0gICAgdGVzdFBpeGVscyhjYW52YXNf
Y3R4X2JsYW5rLCBjYW52YXNfY3R4X3RyYW5zcGFyZW50LAotICAgICAgICAgICAgICAgdGVzdFNj
ZW5hcmlvLmNhbnZhc1BpeGVsRm9ybWF0LCB0cnVlKTsKLX0KLQotZnVuY3Rpb24gcnVuQWxsVGVz
dHMoKSB7Ci0gICAgdmFyIGNhbnZhc0NvbG9yU3BhY2VzID0gWydzcmdiJ107Ci0gICAgdmFyIGNh
bnZhc1BpeGVsRm9ybWF0cyA9IFsndWludDgnLCAnZmxvYXQxNiddOwotCi0gICAgdmFyIHRlc3RT
Y2VuYXJpb1NldCA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FudmFzQ29sb3JTcGFj
ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYW52YXNQaXhl
bEZvcm1hdHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgIHZhciBjYW52YXNfY29sb3Jfc3Bh
Y2UgPSBjYW52YXNDb2xvclNwYWNlc1tpXTsKLSAgICAgICAgICAgIHZhciBjYW52YXNfcGl4ZWxf
Zm9ybWF0ID0gY2FudmFzUGl4ZWxGb3JtYXRzW2pdOwotICAgICAgICAgICAgZm9yICh2YXIgayA9
IDA7IGsgPCBjYW52YXNDb2xvclNwYWNlcy5sZW5ndGg7IGsrKykgewotICAgICAgICAgICAgICAg
IGZvciAodmFyIG0gPSAwOyBtIDwgY2FudmFzUGl4ZWxGb3JtYXRzLmxlbmd0aDsgbSsrKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZV9ob3N0X2NvbG9yX3NwYWNlID0gY2FudmFzQ29s
b3JTcGFjZXNba107Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZV9ob3N0X3BpeGVsX2Zv
cm1hdCA9IGNhbnZhc1BpeGVsRm9ybWF0c1ttXTsKLQotICAgICAgICAgICAgICAgICAgICB2YXIg
dGVzdFNjZW5hcmlvID0ge307Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RTY2VuYXJpby5jYW52
YXNDb2xvclNwYWNlID0gY2FudmFzX2NvbG9yX3NwYWNlOwotICAgICAgICAgICAgICAgICAgICB0
ZXN0U2NlbmFyaW8uY2FudmFzUGl4ZWxGb3JtYXQgPSBjYW52YXNfcGl4ZWxfZm9ybWF0OwotICAg
ICAgICAgICAgICAgICAgICB0ZXN0U2NlbmFyaW8uaW1hZ2VDb2xvclNwYWNlID0gaW1hZ2VfaG9z
dF9jb2xvcl9zcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmltYWdlUGl4
ZWxGb3JtYXQgPSBpbWFnZV9ob3N0X3BpeGVsX2Zvcm1hdDsKLSAgICAgICAgICAgICAgICAgICAg
dGVzdFNjZW5hcmlvU2V0LnB1c2godGVzdFNjZW5hcmlvKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRlc3RTY2VuYXJpb1NldC5sZW5ndGg7IGkrKykgewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKHQp
IHsKLSAgICAgICAgICAgIHJ1bkRyYXdPZmZzY3JlZW5DYW52YXNUZXN0T3BhcXVlKHRlc3RTY2Vu
YXJpb1NldFtpXSk7Ci0gICAgICAgICAgICBydW5EcmF3T2Zmc2NyZWVuQ2FudmFzVGVzdFRyYW5z
cGFyZW50KHRlc3RTY2VuYXJpb1NldFtpXSk7Ci0gICAgICAgIH0sIHRlc3RTY2VuYXJpb1RvU3Ry
aW5nKHRlc3RTY2VuYXJpb1NldFtpXSkpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdFNjZW5h
cmlvVG9TdHJpbmcodGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFyIHN0ciA9ICJUZXN0IGRyYXdpbmcg
Y29sb3IgbWFuYWdlZCBPZmZzY3JlZW5DYW52YXM6ICIgKwotICAgICAgICAiQ2FudmFzIGNvbG9y
IHBhcmFtczogIiArCi0gICAgICAgIHRlc3RTY2VuYXJpby5jYW52YXNDb2xvclNwYWNlICsgIiwg
IiArCi0gICAgICAgIHRlc3RTY2VuYXJpby5jYW52YXNQaXhlbEZvcm1hdCArCi0gICAgICAgICI7
ICBPZmZzY3JlZW5DYW52YXMgY29sb3IgcGFyYW1zOiAiICsKLSAgICAgICAgdGVzdFNjZW5hcmlv
LmltYWdlQ29sb3JTcGFjZSArICIsICIgKwotICAgICAgICB0ZXN0U2NlbmFyaW8uaW1hZ2VQaXhl
bEZvcm1hdDsKLSAgICByZXR1cm4gc3RyOwotfQotCi1ydW5BbGxUZXN0cygpOwotPC9zY3JpcHQ+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtZV9zcmdiLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1lX3NyZ2ItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
Y2FudmFzLWdldEltYWdlRGF0YS1lX3NyZ2ItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAg
LTEsNiArMCwwIEBACi0KLUZBSUwgdGVzdHMgZHJhd2luZyBTUkdCIGNvbG9yIG9uIGUtc1JHQiBj
YW52YXMgYW5kIGdldHRpbmcgZS1zUkdCIGltYWdlIGRhdGEuIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykKLUZBSUwgdGVzdHMgcHV0dGluZyBh
bmQgZ2V0dGluZyBpbi1yYW5nZSBlLXNSR0IgaW1hZ2UgZGF0YSBvbiBlLXNSR0IgY2FudmFzLiBU
aGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotRkFJTCB0ZXN0cyBwdXR0aW5nIGFuZCBn
ZXR0aW5nIG91dC1vZi1yYW5nZSBlLXNSR0IgaW1hZ2UgZGF0YSBvbiBlLXNSR0IgY2FudmFzLiBU
aGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotRkFJTCB0ZXN0cyBwdXR0aW5nIFNSR0Ig
aW1hZ2UgZGF0YSBvbiBlLXNSR0IgY2FudmFzIGFuZCBnZXR0aW5nIGUtc1JHQiBpbWFnZSBkYXRh
LiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZQotCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1lX3NyZ2IuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS1lX3NyZ2IuaHRt
bAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1n
ZXRJbWFnZURhdGEtZV9zcmdiLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXRlc3QoZHJhd1NSR0JUaGVuR2V0SW1hZ2VEYXRh
X2Vfc1JHQiwgJ3Rlc3RzIGRyYXdpbmcgU1JHQiBjb2xvciBvbiBlLXNSR0IgXAotY2FudmFzIGFu
ZCBnZXR0aW5nIGUtc1JHQiBpbWFnZSBkYXRhLicpOwotdGVzdChwdXRJbWFnZURhdGFfZV9zUkdC
VGhlbkdldEltYWdlRGF0YV9lX3NSR0JfSW5SYW5nZSwgJ3Rlc3RzIHB1dHRpbmcgYW5kIFwKLWdl
dHRpbmcgaW4tcmFuZ2UgZS1zUkdCIGltYWdlIGRhdGEgb24gZS1zUkdCIGNhbnZhcy4nKTsKLXRl
c3QocHV0SW1hZ2VEYXRhX2Vfc1JHQlRoZW5HZXRJbWFnZURhdGFfZV9zUkdCX091dE9mUmFuZ2Us
ICd0ZXN0cyBwdXR0aW5nIGFuZCBcCi1nZXR0aW5nIG91dC1vZi1yYW5nZSBlLXNSR0IgaW1hZ2Ug
ZGF0YSBvbiBlLXNSR0IgY2FudmFzLicpOwotdGVzdChwdXRJbWFnZURhdGFTUkdCVGhlbkdldElt
YWdlRGF0YV9lX3NSR0IsICd0ZXN0cyBwdXR0aW5nIFNSR0IgaW1hZ2UgZGF0YSBcCi1vbiBlLXNS
R0IgY2FudmFzIGFuZCBnZXR0aW5nIGUtc1JHQiBpbWFnZSBkYXRhLicpOwotCi1mdW5jdGlvbiBh
c3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBlcHNpbG9uKQotewot
ICBhc3NlcnRfdHJ1ZShhY3R1YWwubGVuZ3RoID09PSBleHBlY3RlZC5sZW5ndGgpOwotICBmb3Ig
KHZhciBpPTA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspCi0gICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSwgZXBzaWxvbik7Ci19Ci0KLWZ1bmN0aW9uIGRyYXdT
UkdCVGhlbkdldEltYWdlRGF0YV9lX3NSR0IoKSB7Ci0gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwotICAgIGNhbnZhcy53aWR0aCA9IDEwOwotICAgIGNh
bnZhcy5oZWlnaHQgPSAxMDsKLSAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywK
LSAgICAgICAge2NvbG9yU3BhY2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6J2Zsb2F0MTYnfSk7Ci0g
ICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDUxLCAxMDIsIDE1MywgMC44KSc7Ci0gICAgY3R4LmZp
bGxSZWN0KDAsIDAsIDEwLCAxMCk7Ci0gICAgdmFyIHBpeGVsID0gY3R4LmdldEltYWdlRGF0YSg1
LCA1LCAxLCAxKS5kYXRhVW5pb247Ci0gICAgLy8gQ2hlY2sgYWdhaW5zdCB0aGUgc2FtZSBjb2xv
ciBpbiBlLXNSR0IuIDAuMDEgcHJvdGVjdHMgdGhlIHRlc3QgYWdhaW5zdAotICAgIC8vIGNvbG9y
IGNvbnZlcnNpb24gZGV2aWF0aW9ucy4KLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhw
aXhlbCwgWzAuMiwgMC40LCAwLjYsIDAuOF0sIDAuMDEpOwotfQotCi1mdW5jdGlvbiBwdXRJbWFn
ZURhdGFfZV9zUkdCVGhlbkdldEltYWdlRGF0YV9lX3NSR0JfSW5SYW5nZSgpIHsKLSAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgY2FudmFzLndp
ZHRoID0gMTA7Ci0gICAgY2FudmFzLmhlaWdodCA9IDEwOwotICAgIHZhciBjdHggPSBjYW52YXMu
Z2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhlbEZvcm1h
dDonZmxvYXQxNid9KQotICAgIHZhciBkYXRhX2Vfc1JHQiA9IG5ldyBGbG9hdDMyQXJyYXkoNCk7
Ci0gICAgZGF0YV9lX3NSR0JbMF0gPSAwLjI7Ci0gICAgZGF0YV9lX3NSR0JbMV0gPSAwLjQ7Ci0g
ICAgZGF0YV9lX3NSR0JbMl0gPSAwLjY7Ci0gICAgZGF0YV9lX3NSR0JbM10gPSAwLjg7Ci0gICAg
dmFyIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoZGF0YV9lX3NSR0IsIDEsIDEsCi0g
ICAgICAgIHtjb2xvclNwYWNlOiAnc3JnYicsIHN0b3JhZ2VGb3JtYXQ6J2Zsb2F0MzInfSk7Ci0g
ICAgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDUsIDUpOwotICAgIHZhciBwaXhlbCA9IGN0
eC5nZXRJbWFnZURhdGEoNSwgNSwgMSwgMSkuZGF0YVVuaW9uOwotICAgIC8vIENoZWNrIGFnYWlu
c3QgdGhlIHNhbWUgY29sb3IgaW4gZS1zUkdCLiAwLjAwMSBwcm90ZWN0cyB0aGUgdGVzdCBhZ2Fp
bnN0Ci0gICAgLy8gcm91bmRpbmcgZXJyb3JzLgotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1
YWxzKHBpeGVsLCBbMC4yLCAwLjQsIDAuNiwgMC44XSwgMC4wMSk7Ci19Ci0KLWZ1bmN0aW9uIHB1
dEltYWdlRGF0YV9lX3NSR0JUaGVuR2V0SW1hZ2VEYXRhX2Vfc1JHQl9PdXRPZlJhbmdlKCkgewot
ICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICBj
YW52YXMud2lkdGggPSAxMDsKLSAgICBjYW52YXMuaGVpZ2h0ID0gMTA7Ci0gICAgdmFyIGN0eCA9
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICAgIHtjb2xvclNwYWNlOiAnc3JnYicsIHBp
eGVsRm9ybWF0OidmbG9hdDE2J30pCi0gICAgdmFyIGRhdGFfZV9zUkdCID0gbmV3IEZsb2F0MzJB
cnJheSg0KTsKLSAgICBkYXRhX2Vfc1JHQlswXSA9IDEuMzsKLSAgICBkYXRhX2Vfc1JHQlsxXSA9
IC0xLjEzOwotICAgIGRhdGFfZV9zUkdCWzJdID0gMC43OwotICAgIGRhdGFfZV9zUkdCWzNdID0g
MS44OwotICAgIHZhciBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKGRhdGFfZV9zUkdC
LCAxLCAxLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBzdG9yYWdlRm9ybWF0OidmbG9h
dDMyJ30pOwotICAgIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCA1LCA1KTsKLSAgICB2YXIg
cGl4ZWwgPSBjdHguZ2V0SW1hZ2VEYXRhKDUsIDUsIDEsIDEpLmRhdGFVbmlvbjsKLSAgICAvLyBD
aGVjayBhZ2FpbnN0IHRoZSBzYW1lIGNvbG9yIGluIGUtc1JHQi4gMC4wMDEgcHJvdGVjdHMgdGhl
IHRlc3QgYWdhaW5zdAotICAgIC8vIHJvdW5kaW5nIGVycm9ycy4KLSAgICBhc3NlcnRfYXJyYXlf
YXBwcm94X2VxdWFscyhwaXhlbCwgWzEuMywgLTEuMTMsIDAuNywgMS44XSwgMC4wMSk7Ci19Ci0K
LWZ1bmN0aW9uIHB1dEltYWdlRGF0YVNSR0JUaGVuR2V0SW1hZ2VEYXRhX2Vfc1JHQigpIHsKLSAg
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgY2Fu
dmFzLndpZHRoID0gMTA7Ci0gICAgY2FudmFzLmhlaWdodCA9IDEwOwotICAgIHZhciBjdHggPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnLAotICAgICAgICB7Y29sb3JTcGFjZTogJ3NyZ2InLCBwaXhl
bEZvcm1hdDonZmxvYXQxNid9KTsKLSAgICB2YXIgZGF0YVNSR0IgPSBuZXcgVWludDhDbGFtcGVk
QXJyYXkoNCk7Ci0gICAgZGF0YVNSR0JbMF0gPSA1MTsKLSAgICBkYXRhU1JHQlsxXSA9IDEwMjsK
LSAgICBkYXRhU1JHQlsyXSA9IDE1MzsKLSAgICBkYXRhU1JHQlszXSA9IDIwNDsKLSAgICB2YXIg
aW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YShkYXRhU1JHQiwgMSwgMSwKLSAgICAgICAg
e2NvbG9yU3BhY2U6ICdzcmdiJywgc3RvcmFnZUZvcm1hdDondWludDgnfSk7Ci0gICAgY3R4LnB1
dEltYWdlRGF0YShpbWFnZURhdGEsIDUsIDUpOwotICAgIHZhciBwaXhlbCA9IGN0eC5nZXRJbWFn
ZURhdGEoNSwgNSwgMSwgMSkuZGF0YVVuaW9uOwotICAgIC8vIENoZWNrIGFnYWluc3QgdGhlIHNh
bWUgY29sb3IgaW4gZS1zUkdCLiAwLjAxIHByb3RlY3RzIHRoZSB0ZXN0IGFnYWluc3QKLSAgICAv
LyBjb2xvciBjb252ZXJzaW9uIGRldmlhdGlvbnMuCi0gICAgYXNzZXJ0X2FycmF5X2FwcHJveF9l
cXVhbHMocGl4ZWwsIFswLjIsIDAuNCwgMC42LCAwLjhdLCAwLjAxKTsKLX0KLTwvc2NyaXB0Pgot
PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlRGF0YS1jb2xvck1h
bmFnZWRCZWhhdmlvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzL2ltYWdlRGF0YS1jb2xvck1hbmFnZWRCZWhhdmlvci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURhdGEtY29s
b3JNYW5hZ2VkQmVoYXZpb3ItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKQEAgLTEsNSArMCww
IEBACi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ3NyZ2JJbWFnZURhdGFVOC5kYXRhVW5pb25baSo0K2pdID0gc3JnYlBp
eGVsc1tpXVtqXScpCi0KLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnc3JnYkltYWdlRGF0YVU4
LmRhdGFVbmlvbltpKjQral0gPSBzcmdiUGl4ZWxzW2ldW2pdJykKLQotCkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yTWFuYWdlZEJlaGF2aW9yLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlRGF0YS1jb2xvck1hbmFn
ZWRCZWhhdmlvci5odG1sCShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1j
YW52YXMvaW1hZ2VEYXRhLWNvbG9yTWFuYWdlZEJlaGF2aW9yLmh0bWwJKG5vbmV4aXN0ZW50KQpA
QCAtMSwzNjQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi12YXIgc3JnYlBpeGVscyA9
Ci0gICAgW1sxNTUsMjcsMjcsMTI4LCAic3JnYlJlZCJdLCAgWzI3LDE1NSwyNywxMjgsICJzcmdi
R3JlZW4iXSwKLSAgICAgWzI3LDI3LDE1NSwxMjgsICJzcmdiQmx1ZSJdLCBbMjcsMjcsMjcsMTI4
LCAic3JnYkJsYWNrIl1dOwotCi12YXIgZV9zcmdiUGl4ZWxzID0KLSAgICBbWzAuNjA3NDIyLCAw
LjEyMTUyMSwgMC4xMjE1MjEsIDAuNTAxOTUzLCAiZV9zUmdiUmVkIl0sCi0gICAgIFswLjEyMTUy
MSwgMC42MDc0MjIsIDAuMTIxNTIxLCAwLjUwMTk1MywgImVfc1JnYkdyZWVuIl0sCi0gICAgIFsw
LjEyMTUyMSwgMC4xMjE1MjEsIDAuNjA3NDIyLCAwLjUwMTk1MywgImVfc1JnYkJsdWUiXSwKLSAg
ICAgWzAuMTIxNTIxLCAwLjEyMTUyMSwgMC4xMjE1MjEsIDAuNTAxOTUzLCAiZV9zUmdiQmxhY2si
XV07Ci0KLXZhciB4V2lkdGggPSB4SGVpZ2h0ID0gMjsKLXZhciBjb2xvckNvcnJlY3Rpb25Ub2xl
cmFuY2VTUkdCID0gMTsKLS8vIFRoZSBlcnJvciBsZXZlbCBpbiBTUkdCLT5XQ0dfVTgtPlNSR0Ig
aXMgaGlnaGVyIHRoYW4gbm9ybWFsIGNvbG9yIGNvcnJlY3Rpb24KLS8vIG9wZXJhdGlvbnMgYXMg
dGhlIHBpeGVscyBhcmUgY2xpcHBlZCBpbiBXQ0cgd2hlbiBVOCBzdG9yYWdlIGlzIHVzZWQgaW5z
dGVhZAotLy8gb2YgRjE2IHN0b3JhZ2UuCi12YXIgY29sb3JDb3JyZWN0aW9uVG9sZXJhbmNlV0NH
X1U4dG9TUkdCX1U4ID0gNjsKLXZhciBjb2xvckNvcnJlY3Rpb25Ub2xlcmFuY2VXQ0cgPSAwLjAy
OwotCi1mdW5jdGlvbiB0ZXN0QmxhbmtQaXhlbHMoYWN0dWFsRGF0YSwgd2lkdGgsIGhlaWdodCkK
LXsKLSAgdmFyIG1lc3NhZ2UgPSAiVGhpcyBwaXhlbCBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxh
Y2siOwotICB2YXIgYmxhbmtEYXRhID0gbmV3IEFycmF5KDQgKiB3aWR0aCAqIGhlaWdodCkuZmls
bCgwKTsKLSAgYXNzZXJ0X2FycmF5X2VxdWFscyhhY3R1YWxEYXRhLCBibGFua0RhdGEsIG1lc3Nh
Z2UpOwotfQotCi1mdW5jdGlvbiB0ZXN0UGl4ZWxzKGFjdHVhbERhdGEsIGV4cGVjdGVkUGl4ZWxz
LCB0b2xlcmFuY2UpCi17Ci0gIGFzc2VydF9lcXVhbHMoYWN0dWFsRGF0YS5sZW5ndGgsIDQgKiB4
V2lkdGggKiB4SGVpZ2h0KTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4V2lkdGggKiB4SGVpZ2h0
OyBpKyspIHsKLSAgICB2YXIgbWVzc2FnZSA9ICJUaGlzIHBpeGVsIHNob3VsZCBiZSAiICsgZXhw
ZWN0ZWRQaXhlbHNbaV1bNF07Ci0gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspCi0gICAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxEYXRhW2kqNCtqXSwgZXhwZWN0ZWRQaXhlbHNb
aV1bal0sIHRvbGVyYW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOwot
ICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrSW1hZ2VEYXRhQ29sb3JTZXR0aW5ncyhjYW52YXNDb2xv
clNldHRpbmdzLCBpbWFnZURhdGEpIHsKLSAgdmFyIGltYWdlRGF0YUNvbG9yU2V0dGluZ3MgPSBp
bWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygpOwotICBhc3NlcnRfZXF1YWxzKGNhbnZhc0NvbG9y
U2V0dGluZ3MuY29sb3JTcGFjZSwKLSAgICAgICAgICAgICAgICBpbWFnZURhdGFDb2xvclNldHRp
bmdzLmNvbG9yU3BhY2UpOwotICBpZiAoY2FudmFzQ29sb3JTZXR0aW5ncy5waXhlbEZvcm1hdCA9
PSAidWludDgiKQotICAgIGFzc2VydF9lcXVhbHMoInVpbnQ4IiwgaW1hZ2VEYXRhQ29sb3JTZXR0
aW5ncy5zdG9yYWdlRm9ybWF0KTsKLSAgZWxzZQotICAgIGFzc2VydF9lcXVhbHMoImZsb2F0MzIi
LCBpbWFnZURhdGFDb2xvclNldHRpbmdzLnN0b3JhZ2VGb3JtYXQpOwotfQotCi1mdW5jdGlvbiBj
aGVja0ltYWdlRGF0YUNvbG9yVmFsdWVzKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSwg
aXNCbGFuayA9ICcnLAotICB3aWR0aCA9IHhXaWR0aCwgaGVpZ2h0ID0geEhlaWdodCwgaXNXQ0df
VTh0b1NSR0JfVTggPSAnJykgewotICB2YXIgZGF0YSA9IGltYWdlRGF0YS5kYXRhVW5pb247Ci0g
IGlmIChpc0JsYW5rID09PSAnaXNCbGFuaycpIHsKLSAgICB0ZXN0QmxhbmtQaXhlbHMoZGF0YSwg
d2lkdGgsIGhlaWdodCk7Ci0gIH0gZWxzZSB7Ci0gICAgdmFyIGV4cGVjdGVkUGl4ZWxzID0gc3Jn
YlBpeGVsczsKLSAgICB2YXIgdG9sZXJhbmNlID0gY29sb3JDb3JyZWN0aW9uVG9sZXJhbmNlU1JH
QjsKLSAgICBpZiAoaXNXQ0dfVTh0b1NSR0JfVTggPT09ICdpc1dDR19VOHRvU1JHQl9VOCcpCi0g
ICAgICB0b2xlcmFuY2UgPSBjb2xvckNvcnJlY3Rpb25Ub2xlcmFuY2VXQ0dfVTh0b1NSR0JfVTg7
Ci0gICAgaWYgKGNhbnZhc0NvbG9yU2V0dGluZ3MucGl4ZWxGb3JtYXQgIT0gInVpbnQ4Iikgewot
ICAgICAgZXhwZWN0ZWRQaXhlbHMgPSBlX3NyZ2JQaXhlbHM7Ci0gICAgICB0b2xlcmFuY2UgPSBj
b2xvckNvcnJlY3Rpb25Ub2xlcmFuY2VXQ0c7Ci0gICAgfQotICAgIHRlc3RQaXhlbHMoZGF0YSwg
ZXhwZWN0ZWRQaXhlbHMsIHRvbGVyYW5jZSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gaW5pdGlhbGl6
ZUNvbG9yTWFuYWdlZENhbnZhcyhjYW52YXNDb2xvclNldHRpbmdzKQotewotICB2YXIgY2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gIGNhbnZhcy53aWR0aCA9IHhX
aWR0aDsKLSAgY2FudmFzLmhlaWdodCA9IHhIZWlnaHQ7Ci0gIHZhciBjdHggPSBjYW52YXMuZ2V0
Q29udGV4dCgnMmQnLAotICAgIHtjb2xvclNwYWNlOiBjYW52YXNDb2xvclNldHRpbmdzLmNvbG9y
U3BhY2UsCi0gICAgIHBpeGVsRm9ybWF0OiBjYW52YXNDb2xvclNldHRpbmdzLnBpeGVsRm9ybWF0
fSk7Ci0gIGN0eC5maWxsU3R5bGUgPSAicmdiYSgxNTUsIDI3LCAyNywgMC41KSI7Ci0gIGN0eC5m
aWxsUmVjdCgwLCAwLCB4V2lkdGgvMiwgeEhlaWdodC8yKTsKLSAgY3R4LmZpbGxTdHlsZSA9ICJy
Z2JhKDI3LCAxNTUsIDI3LCAwLjUpIjsKLSAgY3R4LmZpbGxSZWN0KHhXaWR0aC8yLCAwLCB4V2lk
dGgvMiwgeEhlaWdodC8yKTsKLSAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKDI3LCAyNywgMTU1LCAw
LjUpIjsKLSAgY3R4LmZpbGxSZWN0KDAsIHhIZWlnaHQvMiwgeFdpZHRoLzIsIHhIZWlnaHQvMik7
Ci0gIGN0eC5maWxsU3R5bGUgPSAicmdiYSgyNywgMjcsIDI3LCAwLjUpIjsKLSAgY3R4LmZpbGxS
ZWN0KHhXaWR0aC8yLCB4SGVpZ2h0LzIsIHhXaWR0aC8yLCB4SGVpZ2h0LzIpOwotICByZXR1cm4g
Y2FudmFzOwotfQotCi12YXIgY2FudmFzQ29sb3JTZXR0aW5nc1NldCA9IFsKLSAge25hbWU6ICJT
UkdCIiwgY29sb3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJzcmdiIiwgcGl4ZWxGb3JtYXQ6ICJ1
aW50OCJ9fSwKLSAge25hbWU6ICJlLVNSR0IiLCBjb2xvclNldHRpbmdzOiB7Y29sb3JTcGFjZTog
InNyZ2IiLCBwaXhlbEZvcm1hdDogImZsb2F0MTYifX0sCi1dOwotCi12YXIgc3JnYkltYWdlRGF0
YVU4LCBlX3NyZ2JJbWFnZURhdGFVMTYsIGVfc3JnYkltYWdlRGF0YUYzMjsKLQotZnVuY3Rpb24g
UHJlcGFyZVByZWRlZmluZWRJbWFnZURhdGFPYmplY3RzKCkgewotICB2YXIgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gIHZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKLSAgc3JnYkltYWdlRGF0YVU4ID0gY3R4LmNyZWF0ZUltYWdlRGF0YSh4V2lk
dGgsIHhIZWlnaHQsCi0gICAge2NvbG9yU3BhY2U6ICJzcmdiIiwgc3RvcmFnZUZvcm1hdDogInVp
bnQ4In0pOwotICBlX3NyZ2JJbWFnZURhdGFVMTYgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKHhXaWR0
aCwgeEhlaWdodCwKLSAgICB7Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAidWlu
dDE2In0pOwotICBlX3NyZ2JJbWFnZURhdGFGMzIgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKHhXaWR0
aCwgeEhlaWdodCwKLSAgICB7Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAiZmxv
YXQzMiJ9KTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHhXaWR0aCAqIHhIZWlnaHQ7IGkrKykK
LSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKykgewotICAgICAgc3JnYkltYWdlRGF0YVU4
LmRhdGFVbmlvbltpKjQral0gPSBzcmdiUGl4ZWxzW2ldW2pdOwotICAgICAgZV9zcmdiSW1hZ2VE
YXRhVTE2LmRhdGFVbmlvbltpKjQral0gPQotICAgICAgICAgIE1hdGgucm91bmQoZV9zcmdiUGl4
ZWxzW2ldW2pdICogNjU1MzUpOwotICAgICAgZV9zcmdiSW1hZ2VEYXRhRjMyLmRhdGFVbmlvbltp
KjQral0gPSBlX3NyZ2JQaXhlbHNbaV1bal07Ci0gICAgfQotfQotCi1QcmVwYXJlUHJlZGVmaW5l
ZEltYWdlRGF0YU9iamVjdHMoKTsKLXZhciBpbWFnZURhdGFDb2xvclNldHRpbmdzU2V0ID0gWwot
ICB7bmFtZTogIlNSR0IgVTgiLCBjb2xvclNldHRpbmdzOiB7Y29sb3JTcGFjZTogInNyZ2IiLCBz
dG9yYWdlRm9ybWF0OiAidWludDgifSwKLSAgICAgIGltYWdlRGF0YTogc3JnYkltYWdlRGF0YVU4
fSwKLSAge25hbWU6ICJlLVNSR0IgVTE2IiwgY29sb3JTZXR0aW5nczoge2NvbG9yU3BhY2U6ICJz
cmdiIiwKLSAgICAgIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50MTYifSwgaW1hZ2VEYXRhOiBlX3NyZ2JJ
bWFnZURhdGFVMTZ9LAotICB7bmFtZTogImUtU1JHQiBGMzIiLCBjb2xvclNldHRpbmdzOiB7Y29s
b3JTcGFjZTogInNyZ2IiLAotICAgICAgc3RvcmFnZUZvcm1hdDogImZsb2F0MzIifSwgaW1hZ2VE
YXRhOiBlX3NyZ2JJbWFnZURhdGFGMzJ9LAotXTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LQotLy8gKiBJbWFnZURhdGEgaW1hZ2VkYXRhID0gY3R4LmNyZWF0ZUltYWdlRGF0YSh3aWR0aCwg
aGVpZ2h0KTsKLS8vIE5vIGNvbG9yIGNvbnZlcnNpb24uIGltYWdlZGF0YSBmb2xsb3dzIHRoZSBj
b2xvciBzZXR0aW5ncyBvZiB0aGUgY2FudmFzLgotCi1mdW5jdGlvbiBydW5UZXN0Q3JlYXRlSW1h
Z2VEYXRhV0goY2FudmFzQ29sb3JTZXR0aW5ncykgewotICB2YXIgY2FudmFzID0gaW5pdGlhbGl6
ZUNvbG9yTWFuYWdlZENhbnZhcyhjYW52YXNDb2xvclNldHRpbmdzKTsKLSAgdmFyIGN0eCA9IGNh
bnZhcy5nZXRDb250ZXh0KCcyZCcpOwotICB2YXIgaW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdl
RGF0YSh4V2lkdGgsIHhIZWlnaHQpOwotICBjaGVja0ltYWdlRGF0YUNvbG9yU2V0dGluZ3MoY2Fu
dmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRhKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJpb3NDcmVh
dGVJbWFnZURhdGFXSCA9IFtdOwotZm9yICh2YXIgaSA9IDA7IGkgPCBjYW52YXNDb2xvclNldHRp
bmdzU2V0Lmxlbmd0aDsgaSsrKSB7Ci0gIHZhciBtZXNzYWdlID0gIlRlc3QgY3JldGF0ZUltYWdl
RGF0YSh3aWR0aCwgaGVpZ2h0KSBmcm9tICIgKwotICAgICAgICAgICAgICAgIGNhbnZhc0NvbG9y
U2V0dGluZ3NTZXRbaV0ubmFtZSArICIgY2FudmFzICI7Ci0gIHRlc3RTY2VuYXJpb3NDcmVhdGVJ
bWFnZURhdGFXSC4KLSAgICAgIHB1c2goW21lc3NhZ2UsIGNhbnZhc0NvbG9yU2V0dGluZ3NTZXRb
aV0uY29sb3JTZXR0aW5nc10pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0Q3JlYXRlSW1hZ2VEYXRh
V0hUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1h
Z2VEYXRhV0gubGVuZ3RoOyBpKyspewotICAgIHZhciB0ID0gdGVzdChmdW5jdGlvbigpIHsKLSAg
ICAgIHJ1blRlc3RDcmVhdGVJbWFnZURhdGFXSCh0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRh
V0hbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFXSFtpXVswXSk7
Ci0gIH0KLX0KLXJ1blRlc3RDcmVhdGVJbWFnZURhdGFXSFRlc3RzKCk7Ci0KLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0KLS8vICogSW1hZ2VEYXRhIGltYWdlZGF0YSA9IGN0eC5nZXRJbWFnZURh
dGEoc3gsIHN5LCBzdywgc2gpOwotLy8gTm8gY29sb3IgY29udmVyc2lvbi4gaW1hZ2VkYXRhIGZv
bGxvd3MgdGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuCi0KLWZ1bmN0aW9uIHJ1blRl
c3RHZXRJbWFnZURhdGFYWVdIKGNhbnZhc0NvbG9yU2V0dGluZ3MpIHsKLSAgdmFyIGNhbnZhcyA9
IGluaXRpYWxpemVDb2xvck1hbmFnZWRDYW52YXMoY2FudmFzQ29sb3JTZXR0aW5ncyk7Ci0gIHZh
ciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgdmFyIGltYWdlRGF0YSA9IGN0eC5n
ZXRJbWFnZURhdGEoMCwgMCwgeFdpZHRoLCB4SGVpZ2h0KTsKLSAgY2hlY2tJbWFnZURhdGFDb2xv
clNldHRpbmdzKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSk7Ci0gIGNoZWNrSW1hZ2VE
YXRhQ29sb3JWYWx1ZXMoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRhKTsKLX0KLQotdmFy
IHRlc3RTY2VuYXJpb3NHZXRJbWFnZURhdGFYWVdIID0gW107Ci1mb3IgKHZhciBpID0gMDsgaSA8
IGNhbnZhc0NvbG9yU2V0dGluZ3NTZXQubGVuZ3RoOyBpKyspIHsKLSAgdmFyIG1lc3NhZ2UgPSAi
VGVzdCBnZXRJbWFnZURhdGEoc3gsIHN5LCBzdywgc2gpIGZyb20gIiArCi0gICAgICAgICAgICAg
ICAgY2FudmFzQ29sb3JTZXR0aW5nc1NldFtpXS5uYW1lICsgIiBjYW52YXMgIjsKLSAgdGVzdFNj
ZW5hcmlvc0dldEltYWdlRGF0YVhZV0guCi0gICAgICBwdXNoKFttZXNzYWdlLCBjYW52YXNDb2xv
clNldHRpbmdzU2V0W2ldLmNvbG9yU2V0dGluZ3NdKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdEdl
dEltYWdlRGF0YVhZV0hUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFy
aW9zR2V0SW1hZ2VEYXRhWFlXSC5sZW5ndGg7IGkrKyl7Ci0gICAgdmFyIHQgPSB0ZXN0KGZ1bmN0
aW9uKCkgewotICAgICAgcnVuVGVzdEdldEltYWdlRGF0YVhZV0godGVzdFNjZW5hcmlvc0dldElt
YWdlRGF0YVhZV0hbaV1bMV0pOwotICAgIH0sIHRlc3RTY2VuYXJpb3NHZXRJbWFnZURhdGFYWVdI
W2ldWzBdKTsKLSAgfQotfQotcnVuVGVzdEdldEltYWdlRGF0YVhZV0hUZXN0cygpOwotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyAqIHZvaWQgY3R4LnB1dEltYWdlRGF0YShpbWFnZWRh
dGEsIGR4LCBkeSwgLi4uKTsKLS8vIENvbG9yIGNvbnZlcnNpb24sIGlmIG5lZWRlZCwgdG8gdGhl
IGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuCi0KLWZ1bmN0aW9uIHJ1blRlc3RQdXRJbWFn
ZURhdGFEeER5KGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSkgewotICB2YXIgY2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gIGNhbnZhcy53aWR0aCA9IHhX
aWR0aCAqIDI7Ci0gIGNhbnZhcy5oZWlnaHQgPSB4SGVpZ2h0ICogMjsKLSAgdmFyIGN0eCA9IGNh
bnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAgICB7Y29sb3JTcGFjZTogY2FudmFzQ29sb3JTZXR0
aW5ncy5jb2xvclNwYWNlLAotICAgICAgIHBpeGVsRm9ybWF0OiBjYW52YXNDb2xvclNldHRpbmdz
LnBpeGVsRm9ybWF0fSk7Ci0gIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB4V2lkdGgvMiwg
eEhlaWdodC8yKTsKLSAgdmFyIGN0eEltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoeFdpZHRo
LzIsIHhIZWlnaHQvMiwgeFdpZHRoLCB4SGVpZ2h0KTsKLSAgY2hlY2tJbWFnZURhdGFDb2xvclNl
dHRpbmdzKGNhbnZhc0NvbG9yU2V0dGluZ3MsIGN0eEltYWdlRGF0YSk7Ci0gIGNoZWNrSW1hZ2VE
YXRhQ29sb3JWYWx1ZXMoY2FudmFzQ29sb3JTZXR0aW5ncywgY3R4SW1hZ2VEYXRhLCAnbm9CbGFu
aycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeFdpZHRoLCB4SGVpZ2h0LCAnaXNXQ0df
VTh0b1NSR0JfVTgnKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJpb3NQdXRJbWFnZURhdGFEeER5ID0g
W107Ci1mb3IgKHZhciBpID0gMDsgaSA8IGNhbnZhc0NvbG9yU2V0dGluZ3NTZXQubGVuZ3RoOyBp
KyspIHsKLSAgZm9yICh2YXIgaiA9IDA7IGogPCBpbWFnZURhdGFDb2xvclNldHRpbmdzU2V0Lmxl
bmd0aDsgaisrKSB7Ci0gICAgdmFyIG1lc3NhZ2UgPSAiVGVzdCBwdXRJbWFnZURhdGEoaW1hZ2Vk
YXRhLCBkeCwgZHkpOiAiICsKLSAgICAgICAgICAgICAgICBjYW52YXNDb2xvclNldHRpbmdzU2V0
W2ldLm5hbWUgKyAiIGNhbnZhcywgIiArCi0gICAgICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JT
ZXR0aW5nc1NldFtqXS5uYW1lICsgIiBJbWFnZURhdGEiOwotICAgIHRlc3RTY2VuYXJpb3NQdXRJ
bWFnZURhdGFEeER5LgotICAgICAgICBwdXNoKFttZXNzYWdlLCBjYW52YXNDb2xvclNldHRpbmdz
U2V0W2ldLmNvbG9yU2V0dGluZ3MsCi0gICAgICAgICAgICAgIGltYWdlRGF0YUNvbG9yU2V0dGlu
Z3NTZXRbal0uaW1hZ2VEYXRhXSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVuVGVzdFB1dEltYWdl
RGF0YUR4RHlUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zUHV0
SW1hZ2VEYXRhRHhEeS5sZW5ndGg7IGkrKyl7Ci0gICAgdmFyIHQgPSB0ZXN0KGZ1bmN0aW9uKCkg
ewotICAgICAgcnVuVGVzdFB1dEltYWdlRGF0YUR4RHkoCi0gICAgICAgIHRlc3RTY2VuYXJpb3NQ
dXRJbWFnZURhdGFEeER5W2ldWzFdLCB0ZXN0U2NlbmFyaW9zUHV0SW1hZ2VEYXRhRHhEeVtpXVsy
XSk7Ci0gICAgfSwgdGVzdFNjZW5hcmlvc1B1dEltYWdlRGF0YUR4RHlbaV1bMF0pOwotICB9Ci19
Ci1ydW5UZXN0UHV0SW1hZ2VEYXRhRHhEeVRlc3RzKCk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLS8vICogSW1hZ2VEYXRhIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoaW1h
Z2VkYXRhKTsKLS8vIENvbG9yIGNvbnZlcnNpb24sIGlmIG5lZWRlZCwgdG8gdGhlIGNvbG9yIHNl
dHRpbmdzIG9mIHRoZSBjYW52YXMuIFRoZQotLy8gcmV0dXJuZWQgaW1hZ2VEYXRhIHNob3VsZCBi
ZSB0cmFuc3BhcmVudCBibGFjay4KLQotZnVuY3Rpb24gcnVuVGVzdENyZWF0ZUltYWdlRGF0YUZy
b21JbWFnZURhdGEoY2FudmFzQ29sb3JTZXR0aW5ncywgaW1hZ2VEYXRhKSB7Ci0gIHZhciBjYW52
YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgY2FudmFzLndpZHRoID0g
eFdpZHRoICogMjsKLSAgY2FudmFzLmhlaWdodCA9IHhIZWlnaHQgKiAyOwotICB2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgIHtjb2xvclNwYWNlOiBjYW52YXNDb2xvclNl
dHRpbmdzLmNvbG9yU3BhY2UsCi0gICAgICAgcGl4ZWxGb3JtYXQ6IGNhbnZhc0NvbG9yU2V0dGlu
Z3MucGl4ZWxGb3JtYXR9KTsKLSAgdmFyIGN0eEltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURh
dGEoaW1hZ2VEYXRhKTsKLSAgY2hlY2tJbWFnZURhdGFDb2xvclNldHRpbmdzKGNhbnZhc0NvbG9y
U2V0dGluZ3MsIGN0eEltYWdlRGF0YSk7Ci0gIGNoZWNrSW1hZ2VEYXRhQ29sb3JWYWx1ZXMoY2Fu
dmFzQ29sb3JTZXR0aW5ncywgY3R4SW1hZ2VEYXRhLCAnaXNCbGFuaycpOwotfQotCi12YXIgdGVz
dFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0YUZyb21JbWFnZURhdGEgPSBbXTsKLWZvciAodmFyIGkg
PSAwOyBpIDwgY2FudmFzQ29sb3JTZXR0aW5nc1NldC5sZW5ndGg7IGkrKykgewotICBmb3IgKHZh
ciBqID0gMDsgaiA8IGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXQubGVuZ3RoOyBqKyspIHsKLSAg
ICB2YXIgbWVzc2FnZSA9ICJUZXN0IGNyZWF0ZUltYWdlRGF0YShpbWFnZWRhdGEpOiAiICsKLSAg
ICAgICAgICAgICAgICBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLm5hbWUgKyAiIGNhbnZhcywg
IiArCi0gICAgICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JTZXR0aW5nc1NldFtqXS5uYW1lICsg
IiBJbWFnZURhdGEiOwotICAgIHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFGcm9tSW1hZ2VE
YXRhLgotICAgICAgICBwdXNoKFttZXNzYWdlLCBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLmNv
bG9yU2V0dGluZ3MsCi0gICAgICAgICAgICAgIGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXRbal0u
aW1hZ2VEYXRhXSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVuVGVzdENyZWF0ZUltYWdlRGF0YUZy
b21JbWFnZURhdGFUZXN0cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9z
Q3JlYXRlSW1hZ2VEYXRhRnJvbUltYWdlRGF0YS5sZW5ndGg7IGkrKyl7Ci0gICAgdmFyIHQgPSB0
ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgcnVuVGVzdENyZWF0ZUltYWdlRGF0YUZyb21JbWFnZURh
dGEoCi0gICAgICAgIHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFGcm9tSW1hZ2VEYXRhW2ld
WzFdLAotICAgICAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhRnJvbUltYWdlRGF0YVtp
XVsyXSk7Ci0gICAgfSwgdGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0YUZyb21JbWFnZURhdGFb
aV1bMF0pOwotICB9Ci19Ci1ydW5UZXN0Q3JlYXRlSW1hZ2VEYXRhRnJvbUltYWdlRGF0YVRlc3Rz
KCk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vICpJbWFnZURhdGEgY3R4LmNyZWF0
ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbWFnZURhdGFDb2xvclNldHRpbmdzKTsKLS8vIE5v
IGNvbG9yIGNvbnZlcnNpb24gdG8gdGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuIEJs
YW5rIEltYWdlRGF0YQotLy8gc2hvdWxkIGJlIGNyZWF0ZWQgYmFzZWQgb24gaW1hZ2VEYXRhQ29s
b3JTZXR0aW5ncy4KLQotZnVuY3Rpb24gcnVuVGVzdENyZWF0ZUltYWdlRGF0YVdIQyhjYW52YXND
b2xvclNldHRpbmdzLCBpbWFnZURhdGFDb2xvclNldHRpbmdzKSB7Ci0gIHZhciBjYW52YXMgPSBp
bml0aWFsaXplQ29sb3JNYW5hZ2VkQ2FudmFzKGNhbnZhc0NvbG9yU2V0dGluZ3MpOwotICB2YXIg
Y3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gIHdpZHRoID0gaGVpZ2h0ID0gMzsKLSAg
dmFyIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEod2lkdGgsIGhlaWdodCwgaW1hZ2VE
YXRhQ29sb3JTZXR0aW5ncyk7Ci0gIHZhciBjb2xvclNldHRpbmdzID0gaW1hZ2VEYXRhLmdldENv
bG9yU2V0dGluZ3MoKTsKLSAgYXNzZXJ0X2VxdWFscyhjb2xvclNldHRpbmdzLmNvbG9yU3BhY2Us
Ci0gICAgICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncy5jb2xvclNwYWNlLAotICAg
ICAgICAgICAgICAgICJjb2xvclNwYWNlIHNob3VsZCBtYXRjaCIpOwotICBhc3NlcnRfZXF1YWxz
KGNvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCwKLSAgICAgICAgICAgICAgICBpbWFnZURhdGFD
b2xvclNldHRpbmdzLnN0b3JhZ2VGb3JtYXQsCi0gICAgICAgICAgICAgICAgInN0b3JhZ2VGb3Jt
YXQgc2hvdWxkIG1hdGNoIik7Ci0gIHZhciBibGFua0RhdGEgPSBuZXcgQXJyYXkoNCAqIHdpZHRo
ICogaGVpZ2h0KS5maWxsKDApOwotICBhc3NlcnRfYXJyYXlfZXF1YWxzKGltYWdlRGF0YS5kYXRh
VW5pb24sIGJsYW5rRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAiSW1hZ2VEYXRhIHNob3Vs
ZCBiZSB0cmFuc3BhcmVudCBibGFjayIpOwotfQotCi12YXIgdGVzdFNjZW5hcmlvc0NyZWF0ZUlt
YWdlRGF0YVdIQyA9IFtdOwotZm9yICh2YXIgaSA9IDA7IGkgPCBjYW52YXNDb2xvclNldHRpbmdz
U2V0Lmxlbmd0aDsgaSsrKSB7Ci0gIGZvciAodmFyIGogPSAwOyBqIDwgaW1hZ2VEYXRhQ29sb3JT
ZXR0aW5nc1NldC5sZW5ndGg7IGorKykgewotICAgIG1lc3NhZ2UgPSAiVGVzdCBjcmVhdGVJbWFn
ZURhdGEod2lkdGgsIGhlaWdodCwgaW1hZ2VEYXRhQ29sb3JTZXR0aW5ncyk6ICIgKwotICAgICAg
ICAgICAgICBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLm5hbWUgKyAiIGNhbnZhcywgIiArCi0g
ICAgICAgICAgICAgIGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXRbal0ubmFtZSArICIgSW1hZ2VE
YXRhIjsKLSAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0hDLgotICAgICAgICBwdXNo
KFttZXNzYWdlLCBjYW52YXNDb2xvclNldHRpbmdzU2V0W2ldLmNvbG9yU2V0dGluZ3MsCi0gICAg
ICAgICAgICAgIGltYWdlRGF0YUNvbG9yU2V0dGluZ3NTZXRbal0uY29sb3JTZXR0aW5nc10pOwot
ICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RDcmVhdGVJbWFnZURhdGFXSENUZXN0cygpIHsKLSAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0hDLmxlbmd0
aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0Q3Jl
YXRlSW1hZ2VEYXRhV0hDKAotICAgICAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0hD
W2ldWzFdLAotICAgICAgICB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0hDW2ldWzJdKTsK
LSAgICB9LCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhV0hDW2ldWzBdKTsKLSAgfQotfQot
cnVuVGVzdENyZWF0ZUltYWdlRGF0YVdIQ1Rlc3RzKCk7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLS8vICpJbWFnZURhdGEgY3R4LmNyZWF0ZUltYWdlRGF0YShkYXRhLCB3aWR0aCwgaGVp
Z2h0LCBpbWFnZURhdGFDb2xvclNldHRpbmdzKTsKLS8vIE5vIGNvbG9yIGNvbnZlcnNpb24gdG8g
dGhlIGNvbG9yIHNldHRpbmdzIG9mIHRoZSBjYW52YXMuIEltYWdlRGF0YSBpcyBjcmVhdGVkCi0v
LyBmcm9tIHBhcmFtICJkYXRhIiB3aXRoIHByb3BlciBzdG9yYWdlIGZvcm1hdCBhbmQgaXMgdGFn
Z2VkIHdpdGggdGhlCi0vLyBDYW52YXNDb2xvclNwYWNlIHdoaWNoIGlzIGdpdmVuIGluIGltYWdl
RGF0YUNvbG9yU2V0dGluZ3MuCi0KLWZ1bmN0aW9uIHJ1blRlc3RDcmVhdGVJbWFnZURhdGFEV0hD
KGNhbnZhc0NvbG9yU2V0dGluZ3MsIGltYWdlRGF0YSkgewotICB2YXIgZGF0YSA9IGltYWdlRGF0
YS5kYXRhVW5pb247Ci0gIHdpZHRoID0geFdpZHRoOwotICBoZWlnaHQgPSB4SGVpZ2h0OwotICB2
YXIgY29sb3JTZXR0aW5ncyA9IGltYWdlRGF0YS5nZXRDb2xvclNldHRpbmdzKCk7Ci0KLSAgdmFy
IGNhbnZhcyA9IGluaXRpYWxpemVDb2xvck1hbmFnZWRDYW52YXMoY2FudmFzQ29sb3JTZXR0aW5n
cyk7Ci0gIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgdmFyIG5ld0ltYWdl
RGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEoZGF0YSwgd2lkdGgsIGhlaWdodCwgY29sb3JTZXR0
aW5ncyk7Ci0gIHZhciBuZXdDb2xvclNldHRpbmdzID0gbmV3SW1hZ2VEYXRhLmdldENvbG9yU2V0
dGluZ3MoKTsKLSAgYXNzZXJ0X2VxdWFscyhuZXdDb2xvclNldHRpbmdzLmNvbG9yU3BhY2UsCi0g
ICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncy5jb2xvclNwYWNlLAotICAgICAgICAgICAgICAg
ICJjb2xvclNwYWNlIHNob3VsZCBtYXRjaCIpOwotICBhc3NlcnRfZXF1YWxzKG5ld0NvbG9yU2V0
dGluZ3Muc3RvcmFnZUZvcm1hdCwKLSAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzLnN0b3Jh
Z2VGb3JtYXQsCi0gICAgICAgICAgICAgICAgInN0b3JhZ2VGb3JtYXQgc2hvdWxkIG1hdGNoIik7
Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMobmV3SW1hZ2VEYXRhLmRhdGFVbmlvbiwgaW1hZ2VEYXRh
LmRhdGFVbmlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAiSW1hZ2VEYXRhIHNob3VsZCBiZSB0
cmFuc3BhcmVudCBibGFjayIpOwotfQotCi12YXIgdGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0
YURXSEMgPSBbXTsKLWZvciAodmFyIGkgPSAwOyBpIDwgY2FudmFzQ29sb3JTZXR0aW5nc1NldC5s
ZW5ndGg7IGkrKykgewotICBmb3IgKHZhciBqID0gMDsgaiA8IGltYWdlRGF0YUNvbG9yU2V0dGlu
Z3NTZXQubGVuZ3RoOyBqKyspIHsKLSAgICBtZXNzYWdlID0gIlRlc3QgY3JlYXRlSW1hZ2VEYXRh
KGRhdGEsIHdpZHRoLCBoZWlnaHQsIGltYWdlRGF0YUNvbG9yU2V0dGluZ3MpOiAiICsKLSAgICAg
ICAgICAgICAgY2FudmFzQ29sb3JTZXR0aW5nc1NldFtpXS5uYW1lICsgIiBjYW52YXMsICIgKwot
ICAgICAgICAgICAgICBpbWFnZURhdGFDb2xvclNldHRpbmdzU2V0W2pdLm5hbWUgKyAiIEltYWdl
RGF0YSI7Ci0gICAgdGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0YURXSEMuCi0gICAgICAgIHB1
c2goW21lc3NhZ2UsIGNhbnZhc0NvbG9yU2V0dGluZ3NTZXRbaV0uY29sb3JTZXR0aW5ncywKLSAg
ICAgICAgICAgICAgaW1hZ2VEYXRhQ29sb3JTZXR0aW5nc1NldFtqXS5pbWFnZURhdGFdKTsKLSAg
fQotfQotCi1mdW5jdGlvbiBydW5UZXN0Q3JlYXRlSW1hZ2VEYXRhRFdIQ1Rlc3RzKCkgewotICBm
b3IgKHZhciBpID0gMDsgaSA8IHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFEV0hDLmxlbmd0
aDsgaSsrKXsKLSAgICB2YXIgdCA9IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBydW5UZXN0Q3Jl
YXRlSW1hZ2VEYXRhRFdIQygKLSAgICAgICAgdGVzdFNjZW5hcmlvc0NyZWF0ZUltYWdlRGF0YURX
SENbaV1bMV0sCi0gICAgICAgIHRlc3RTY2VuYXJpb3NDcmVhdGVJbWFnZURhdGFEV0hDW2ldWzJd
KTsKLSAgICB9LCB0ZXN0U2NlbmFyaW9zQ3JlYXRlSW1hZ2VEYXRhRFdIQ1tpXVswXSk7Ci0gIH0K
LX0KLXJ1blRlc3RDcmVhdGVJbWFnZURhdGFEV0hDVGVzdHMoKTsKLQotLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1h
Z2VEYXRhLWNvbG9yU3BhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRl
LWdhbXV0LWNhbnZhcy9pbWFnZURhdGEtY29sb3JTcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3NjcxNikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURhdGEtY29sb3JTcGFj
ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw4ICswLDAgQEAKLQotRkFJTCBUZXN0
IGRlZmF1bHQgY29sb3Igc2V0dGluZ3M6IHt1bmRlZmluZWQsIHVuZGVmaW5lZH0gLT4ge3NyZ2Is
IHVpbnQ4fSBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVk
IGFycmF5Ci1GQUlMIFRlc3QgZGVmYXVsdCBjb2xvciBzcGFjZToge3VuZGVmaW5lZCwgZmxvYXQz
Mn0gLT4ge3NyZ2IsIGZsb2F0MzJ9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJbb2JqZWN0IEZs
b2F0MzJBcnJheV0iIGJ1dCBnb3QgIltvYmplY3QgVW5kZWZpbmVkXSIKLUZBSUwgVGVzdCBkZWZh
dWx0IHN0b3JhZ2UgZm9ybWF0OiB7c3JnYiwgdW5kZWZpbmVkfSAtPiB7c3JnYiwgdWludDh9IGFz
c2VydF9hcnJheV9lcXVhbHM6IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZB
SUwgVGVzdCBjb2xvciBzZXR0aW5nczoge3NyZ2IsIHVpbnQ4fSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iIGJ1dCBnb3QgIltvYmplY3QgVW5kZWZp
bmVkXSIKLUZBSUwgVGVzdCBjb2xvciBzZXR0aW5nczoge3NyZ2IsIHVpbnQxNn0gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIltvYmplY3QgVWludDE2QXJyYXldIiBidXQgZ290ICJbb2JqZWN0IFVu
ZGVmaW5lZF0iCi1GQUlMIFRlc3QgY29sb3Igc2V0dGluZ3M6IHtzcmdiLCBmbG9hdDMyfSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiW29iamVjdCBGbG9hdDMyQXJyYXldIiBidXQgZ290ICJbb2Jq
ZWN0IFVuZGVmaW5lZF0iCi0KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZURh
dGEtY29sb3JTcGFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy9pbWFnZURhdGEtY29sb3JTcGFjZS5odG1sCShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yU3BhY2UuaHRtbAkobm9uZXhpc3RlbnQp
CkBAIC0xLDcxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi12YXIgZGF0
YVU4ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KFsyNTUsIDE5MiwgMTI4LCA2NF0pOwotdmFyIGRh
dGFVMTYgPSBuZXcgVWludDE2QXJyYXkoWzY1NTM1LCAyNTYqMTkyLCAyNTYqMTI4LCAyNTYqNjRd
KTsKLXZhciBkYXRhRjMyID0gbmV3IEZsb2F0MzJBcnJheShbMS4wLCAwLjc1LCAwLjUsIDAuMjVd
KTsKLQotZnVuY3Rpb24gY2hlY2tEYXRhVHlwZUFnYWluc3RTdG9yYWdlRm9ybWF0KGRhdGEsIHN0
b3JhZ2VGb3JtYXQpIHsKLSAgaWYgKHN0b3JhZ2VGb3JtYXQgPT0gInVpbnQ4IikKLSAgICBhc3Nl
cnRfZXF1YWxzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRhKSwgIltvYmplY3Qg
VWludDhDbGFtcGVkQXJyYXldIik7Ci0gIGVsc2UgaWYgKHN0b3JhZ2VGb3JtYXQgPT0gInVpbnQx
NiIpCi0gICAgYXNzZXJ0X2VxdWFscyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0
YSksICJbb2JqZWN0IFVpbnQxNkFycmF5XSIpOwotICBlbHNlIGlmIChzdG9yYWdlRm9ybWF0ID09
ICJmbG9hdDMyIikKLSAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChkYXRhKSwgIltvYmplY3QgRmxvYXQzMkFycmF5XSIpOwotfQotCi1mdW5jdGlvbiBjaGVj
a0NvbG9yU2V0dGluZ3MoY29sb3JTZXR0aW5ncywgY29sb3JTcGFjZSwgc3RvcmFnZUZvcm1hdCkg
ewotICBhc3NlcnRfZXF1YWxzKGNvbG9yU2V0dGluZ3MuY29sb3JTcGFjZSwgY29sb3JTcGFjZSk7
Ci0gIGFzc2VydF9lcXVhbHMoY29sb3JTZXR0aW5ncy5zdG9yYWdlRm9ybWF0LCBzdG9yYWdlRm9y
bWF0KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdChjb2xvclNldHRpbmdzLCBleHBlY3RlZENvbG9y
U2V0dGluZ3MpIHsKLSAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh
cyIpOwotICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7Ci0KLSAgaW1hZ2VEYXRh
ID0gY3R4LmNyZWF0ZUltYWdlRGF0YSgxLCAxLCBjb2xvclNldHRpbmdzKTsKLSAgY2hlY2tEYXRh
VHlwZUFnYWluc3RTdG9yYWdlRm9ybWF0KGltYWdlRGF0YS5kYXRhVW5pb24sIGNvbG9yU2V0dGlu
Z3Muc3RvcmFnZUZvcm1hdCk7Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMoaW1hZ2VEYXRhLmRhdGFV
bmlvbiwgWzAsIDAsIDAsIDBdKTsKLSAgY2hlY2tDb2xvclNldHRpbmdzKGltYWdlRGF0YS5nZXRD
b2xvclNldHRpbmdzKCksIGV4cGVjdGVkQ29sb3JTZXR0aW5ncy5jb2xvclNwYWNlLCBleHBlY3Rl
ZENvbG9yU2V0dGluZ3Muc3RvcmFnZUZvcm1hdCk7Ci0KLSAgaW1hZ2VEYXRhID0gY3R4LmNyZWF0
ZUltYWdlRGF0YShkYXRhVTgsIDEsIDEsIGNvbG9yU2V0dGluZ3MpOwotICBhc3NlcnRfZXF1YWxz
KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbWFnZURhdGEuZGF0YVVuaW9uKSwgIltv
YmplY3QgVWludDhDbGFtcGVkQXJyYXldIik7Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMoaW1hZ2VE
YXRhLmRhdGFVbmlvbiwgZGF0YVU4KTsKLSAgY2hlY2tDb2xvclNldHRpbmdzKGltYWdlRGF0YS5n
ZXRDb2xvclNldHRpbmdzKCksIGV4cGVjdGVkQ29sb3JTZXR0aW5ncy5jb2xvclNwYWNlLCAidWlu
dDgiKTsKLQotICBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKGRhdGFVMTYsIDEsIDEs
IGNvbG9yU2V0dGluZ3MpOwotICBhc3NlcnRfZXF1YWxzKE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbChpbWFnZURhdGEuZGF0YVVuaW9uKSwgIltvYmplY3QgVWludDE2QXJyYXldIik7Ci0g
IGFzc2VydF9hcnJheV9lcXVhbHMoaW1hZ2VEYXRhLmRhdGFVbmlvbiwgZGF0YVUxNik7Ci0gIGNo
ZWNrQ29sb3JTZXR0aW5ncyhpbWFnZURhdGEuZ2V0Q29sb3JTZXR0aW5ncygpLCBleHBlY3RlZENv
bG9yU2V0dGluZ3MuY29sb3JTcGFjZSwgInVpbnQxNiIpOwotCi0gIGltYWdlRGF0YSA9IGN0eC5j
cmVhdGVJbWFnZURhdGEoZGF0YUYzMiwgMSwgMSwgY29sb3JTZXR0aW5ncyk7Ci0gIGFzc2VydF9l
cXVhbHMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGltYWdlRGF0YS5kYXRhVW5pb24p
LCAiW29iamVjdCBGbG9hdDMyQXJyYXldIik7Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMoaW1hZ2VE
YXRhLmRhdGFVbmlvbiwgZGF0YUYzMik7Ci0gIGNoZWNrQ29sb3JTZXR0aW5ncyhpbWFnZURhdGEu
Z2V0Q29sb3JTZXR0aW5ncygpLCBleHBlY3RlZENvbG9yU2V0dGluZ3MuY29sb3JTcGFjZSwgImZs
b2F0MzIiKTsKLX0KLQotdmFyIHRlc3RTY2VuYXJpb3MgPSBbCi0gICAgWyJUZXN0IGRlZmF1bHQg
Y29sb3Igc2V0dGluZ3M6IHt1bmRlZmluZWQsIHVuZGVmaW5lZH0gLT4ge3NyZ2IsIHVpbnQ4fSIs
IHt9LCB7Y29sb3JTcGFjZTogInNyZ2IiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifV0sCi0KLSAg
ICBbIlRlc3QgZGVmYXVsdCBjb2xvciBzcGFjZToge3VuZGVmaW5lZCwgZmxvYXQzMn0gLT4ge3Ny
Z2IsIGZsb2F0MzJ9Iiwge3N0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn0sIHtjb2xvclNwYWNlOiAi
c3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn1dLAotICAgIFsiVGVzdCBkZWZhdWx0IHN0
b3JhZ2UgZm9ybWF0OiB7c3JnYiwgdW5kZWZpbmVkfSAtPiB7c3JnYiwgdWludDh9Iiwge2NvbG9y
U3BhY2U6ICJzcmdiIn0sIHtjb2xvclNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50
OCJ9XSwKLQotICAgIFsiVGVzdCBjb2xvciBzZXR0aW5nczoge3NyZ2IsIHVpbnQ4fSIsIHtjb2xv
clNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJ1aW50OCJ9LCB7Y29sb3JTcGFjZTogInNy
Z2IiLCBzdG9yYWdlRm9ybWF0OiAidWludDgifV0sCi0gICAgWyJUZXN0IGNvbG9yIHNldHRpbmdz
OiB7c3JnYiwgdWludDE2fSIsIHtjb2xvclNwYWNlOiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJ1
aW50MTYifSwge2NvbG9yU3BhY2U6ICJzcmdiIiwgc3RvcmFnZUZvcm1hdDogInVpbnQxNiJ9XSwK
LSAgICBbIlRlc3QgY29sb3Igc2V0dGluZ3M6IHtzcmdiLCBmbG9hdDMyfSIsIHtjb2xvclNwYWNl
OiAic3JnYiIsIHN0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn0sIHtjb2xvclNwYWNlOiAic3JnYiIs
IHN0b3JhZ2VGb3JtYXQ6ICJmbG9hdDMyIn1dLAotXTsKLQotZnVuY3Rpb24gcnVuQWxsVGVzdHMo
KSB7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFNjZW5hcmlvcy5sZW5ndGg7IGkrKyl7Ci0g
ICAgdmFyIHQgPSB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgcnVuVGVzdCh0ZXN0U2NlbmFyaW9z
W2ldWzFdLCB0ZXN0U2NlbmFyaW9zW2ldWzJdKTsKLSAgICB9LCB0ZXN0U2NlbmFyaW9zW2ldWzBd
KTsKLSAgfQotfQotcnVuQWxsVGVzdHMoKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNo
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1h
Z2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc2
NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlZGF0YS1uby1jb2xvci1zZXR0
aW5ncy1jcmFzaC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ICswLDAgQEAKLQot
RkFJTCBQdXR0aW5nIGEgZmxvYXQtMzIgSW1hZ2VEYXRhIHdpdGggbm8gY29sb3Igc2V0dGluZ3Mg
b24gYSBjb250ZXh0IDJEIHNob3VsZCBub3QgY3Jhc2guIFRoZSBwcm92aWRlZCB2YWx1ZSBpcyBu
b24tZmluaXRlCi1GQUlMIFB1dHRpbmcgYSB1aW50LTE2IEltYWdlRGF0YSB3aXRoIG5vIGNvbG9y
IHNldHRpbmdzIG9uIGEgY29udGV4dCAyRCBzaG91bGQgbm90IGNyYXNoLiBUaGUgcHJvdmlkZWQg
dmFsdWUgaXMgbm9uLWZpbml0ZQotCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1h
Z2VkYXRhLW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzL2ltYWdlZGF0YS1uby1jb2xvci1zZXR0aW5ncy1jcmFzaC5odG1s
CShyZXZpc2lvbiAyNzY3MTYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VkYXRh
LW5vLWNvbG9yLXNldHRpbmdzLWNyYXNoLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNiArMCww
IEBACi08IURPQ1RZUEUgSFRNTD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci10ZXN0KGZ1bmN0aW9uKCkgewotICAgIHZhciBjYW52
YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKLSAgICB2YXIgY3R4ID0gY2Fu
dmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAge30pCi0gICAgdmFyIGRhdGFGbG9hdDMyID0g
bmV3IEZsb2F0MzJBcnJheSg0KTsKLSAgICB2YXIgaW1hZ2VEYXRhID0gY3R4LmNyZWF0ZUltYWdl
RGF0YShkYXRhRmxvYXQzMiwgMSwgMSwKLSAgICAgICAge30pOwotICAgIGN0eC5wdXRJbWFnZURh
dGEoaW1hZ2VEYXRhLCA1LCA1KTsKLSAgICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoNSw1
LDEsMSkuZGF0YVVuaW9uOwotfSwgIlB1dHRpbmcgYSBmbG9hdC0zMiBJbWFnZURhdGEgd2l0aCBu
byBjb2xvciBzZXR0aW5ncyBvbiBhIGNvbnRleHQgMkQgc2hvdWxkIG5vdCBjcmFzaC4iKTsKLQot
dGVzdChmdW5jdGlvbigpIHsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7Ci0gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsCi0gICAg
ICAgIHt9KQotICAgIHZhciBkYXRhVWludDE2ID0gbmV3IFVpbnQxNkFycmF5KDQpOwotICAgIHZh
ciBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKGRhdGFVaW50MTYsIDEsIDEsCi0gICAg
ICAgIHt9KTsKLSAgICBjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgNSwgNSk7Ci0gICAgdmFy
IGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDUsNSwxLDEpLmRhdGFVbmlvbjsKLX0sICJQdXR0aW5n
IGEgdWludC0xNiBJbWFnZURhdGEgd2l0aCBubyBjb2xvciBzZXR0aW5ncyBvbiBhIGNvbnRleHQg
MkQgc2hvdWxkIG5vdCBjcmFzaC4iKTsKLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy90cmFuc2ZlckZyb21JbWFnZUJp
dG1hcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
L3RyYW5zZmVyRnJvbUltYWdlQml0bWFwLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc2NzE2KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL3RyYW5zZmVyRnJvbUltYWdlQml0bWFwLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwICswLDAgQEAKLQotRkFJTCBUZXN0aW5nIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhl
bCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMC41LCBpbnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IG5v
bmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFs
Lmxlbmd0aCcpIgotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291
cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMC41LCBp
bnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IGRlZmF1bHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpIgotRkFJTCBUZXN0aW5nIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhl
bCBmb3JtYXQ6IHVpbnQ4LCBhbHBoYTogMSwgaW50ZXJtZWRpYXRlIGNvbG9yIHNwYWNlOiBub25l
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5s
ZW5ndGgnKSIKLUZBSUwgVGVzdGluZyBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ6IFNvdXJj
ZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiB1aW50OCwgYWxwaGE6IDEsIGludGVy
bWVkaWF0ZSBjb2xvciBzcGFjZTogZGVmYXVsdCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdhY3R1YWwubGVuZ3RoJykiCi1GQUlMIFRlc3RpbmcgSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0OiBTb3VyY2UgY29sb3Igc3BhY2U6IHNyZ2IsIHBpeGVsIGZv
cm1hdDogZmxvYXQxNiwgYWxwaGE6IDAuNSwgaW50ZXJtZWRpYXRlIGNvbG9yIHNwYWNlOiBub25l
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FjdHVhbC5s
ZW5ndGgnKSIKLUZBSUwgVGVzdGluZyBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ6IFNvdXJj
ZSBjb2xvciBzcGFjZTogc3JnYiwgcGl4ZWwgZm9ybWF0OiBmbG9hdDE2LCBhbHBoYTogMC41LCBp
bnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IGRlZmF1bHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpIgotRkFJTCBUZXN0aW5nIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhl
bCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAxLCBpbnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IG5v
bmUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFs
Lmxlbmd0aCcpIgotRkFJTCBUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDogU291
cmNlIGNvbG9yIHNwYWNlOiBzcmdiLCBwaXhlbCBmb3JtYXQ6IGZsb2F0MTYsIGFscGhhOiAxLCBp
bnRlcm1lZGlhdGUgY29sb3Igc3BhY2U6IGRlZmF1bHQgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYWN0dWFsLmxlbmd0aCcpIgotCkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvdHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvdHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAuaHRt
bAkocmV2aXNpb24gMjc2NzE2KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL3RyYW5zZmVy
RnJvbUltYWdlQml0bWFwLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTUgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUw+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0PgotCi0vLyBUaGlzIHRlc3QgZXhhbWluZXMgdGhlIGNvbG9yIG1hbmFn
ZWQgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LgotLy8gIC0gV2UgZmlyc3QgZHJhdyBvbiAy
RCBjYW52YXMgd2l0aCBkaWZmZXJlbnQgY29sb3Igc3BhY2UgYW5kIGFscGhhCi0vLyAgICBwcm9w
ZXJ0aWVzLgotLy8gIC0gTmV4dCwgdGhlIGNhbnZhcyBpcyB1c2VkIGFzIGEgc291cmNlIGltYWdl
IHRvIGNyZWF0ZSBhbiBJbWFnZUJpdG1hcC4KLS8vICAgIERpZmZlcmVudCBjb2xvclNwYWNlQ29u
dmVyc2lvbiB2YWx1ZXMgYXJlIHRlc3RlZCB3aGVuIGNyZWF0aW5nIHRoZQotLy8gICAgaW50ZXJt
ZWRpYXRlIEltYWdlQml0bWFwIG9iamVjdC4KLS8vICAtIE5leHQsIEltYWdlQml0bWFwIGlzIHRy
YW5zZmVycmVkIHRvIGFuIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC4KLS8vICAtIFNpbmNl
IHdlIGNhbm5vdCByZWFkIGJhY2sgcGl4ZWxzIGZyb20gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250
ZXh0LCB3ZQotLy8gICAgZHJhdyBpdCB0byBhbm90aGVyIDJEIGNhbnZhcyBhbmQgcmVhZCBiYWNr
IHRoZSBwaXhlbHMuCi0vLyAgLSBGaW5hbGx5LCB3ZSBjb21wYXJlIHRoZSBwaXhlbHMgcmVhZCBm
cm9tIHRoZSBmaXJzdCAyRCBjYW52YXMgd2l0aCB0aG9zZQotLy8gICAgcmVhZCBmcm9tIHRoZSBm
aW5hbCAyRCBjYW52YXMuIFdlIGV4cGVjdCB0aGVtIHRvIG1hdGNoIHdpdGggc29tZQotLy8gICAg
dG9sZXJhbmNlLgotCi1mdW5jdGlvbiB0ZXN0UGl4ZWxzKGFjdHVhbFBpeGVscywgZXhwZWN0ZWRQ
aXhlbHMsIHRlc3RTY2VuYXJpbykKLXsKLSAgICB2YXIgdG9sZXJhbmNlID0gMDsKLSAgICBpZiAo
dGVzdFNjZW5hcmlvLnBpeGVsRm9ybWF0ID09ICJmbG9hdDE2IikKLSAgICAgICAgdG9sZXJhbmNl
ID0gMC4wMTsKLQotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbFBpeGVscywg
ZXhwZWN0ZWRQaXhlbHMsIHRvbGVyYW5jZSk7Ci19Ci0KLWZ1bmN0aW9uIGdlbmVyYXRlRmlsbFN0
eWxlKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSB7Ci0gICAgcmV0dXJuICJyZ2JhKCIgKyByZWQg
KyAiLCIgKyBncmVlbiArICIsIiArIGJsdWUgKyAiLCIgKyBhbHBoYSArICIpIjsKLX0KLQotZnVu
Y3Rpb24gZ2VuZXJhdGVFeHBlY3RlZFJlc3VsdCh0ZXN0U2NlbmFyaW8sIGNhbnZhcykKLXsKLSAg
ICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywge2NvbG9yU3BhY2U6IHRlc3RTY2Vu
YXJpby5jb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGl4ZWxGb3JtYXQ6IHRlc3RTY2VuYXJpby5waXhlbEZvcm1hdH0pOwotICAgIGN0eC5maWxsU3R5
bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgxNTUsIDI3LCAyNywgdGVzdFNjZW5hcmlvLmFscGhhKTsK
LSAgICBjdHguZmlsbFJlY3QoMCwgMCwgMSwgMSk7Ci0gICAgY3R4LmZpbGxTdHlsZSA9IGdlbmVy
YXRlRmlsbFN0eWxlKDI3LCAxNTUsIDI3LCB0ZXN0U2NlbmFyaW8uYWxwaGEpOwotICAgIGN0eC5m
aWxsUmVjdCgxLCAwLCAxLCAxKTsKLSAgICBjdHguZmlsbFN0eWxlID0gZ2VuZXJhdGVGaWxsU3R5
bGUoMjcsIDI3LCAxNTUsIHRlc3RTY2VuYXJpby5hbHBoYSk7Ci0gICAgY3R4LmZpbGxSZWN0KDAs
IDEsIDEsIDEpOwotICAgIGN0eC5maWxsU3R5bGUgPSBnZW5lcmF0ZUZpbGxTdHlsZSgyNywgMjcs
IDI3LCB0ZXN0U2NlbmFyaW8uYWxwaGEpOwotICAgIGN0eC5maWxsUmVjdCgxLCAxLCAxLCAxKTsK
LSAgICByZXR1cm4gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAyKS5kYXRhVW5pb247Ci19Ci0K
LWZ1bmN0aW9uIGdlbmVyYXRlVGVzdE5hbWUodGVzdFNjZW5hcmlvKSB7Ci0gICAgdmFyIHN0ciA9
ICJUZXN0aW5nIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDoiICsKLSAgICAgICAgICAgICAg
IiBTb3VyY2UgY29sb3Igc3BhY2U6ICIgKyB0ZXN0U2NlbmFyaW8uY29sb3JTcGFjZSArCi0gICAg
ICAgICAgICAgICIsIHBpeGVsIGZvcm1hdDogIiArIHRlc3RTY2VuYXJpby5waXhlbEZvcm1hdCAr
Ci0gICAgICAgICAgICAgICIsIGFscGhhOiAiICsgdGVzdFNjZW5hcmlvLmFscGhhICsKLSAgICAg
ICAgICAgICAgIiwgaW50ZXJtZWRpYXRlIGNvbG9yIHNwYWNlOiAiICsKLSAgICAgICAgICAgICAg
dGVzdFNjZW5hcmlvLmNvbG9yU3BhY2VDb252ZXJzaW9uOwotICAgIHJldHVybiBzdHI7Ci19Ci0K
LWZ1bmN0aW9uIHJ1blRyYW5zZmVyRnJvbUltYWdlQml0bWFwVGVzdCh0ZXN0U2NlbmFyaW8pIHsK
LSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAg
Y2FudmFzLndpZHRoID0gMjsKLSAgICBjYW52YXMuaGVpZ2h0ID0gMjsKLSAgICB2YXIgZXhwZWN0
ZWRQaXhlbHMgPSBnZW5lcmF0ZUV4cGVjdGVkUmVzdWx0KHRlc3RTY2VuYXJpbywgY2FudmFzKTsK
LQotICAgIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSB7
Y29sb3JTcGFjZUNvbnZlcnNpb246IHRlc3RTY2VuYXJpby5jb2xvclNwYWNlQ29udmVyc2lvbn07
Ci0gICAgICAgIHZhciBwcm9taXNlID0gY3JlYXRlSW1hZ2VCaXRtYXAoY2FudmFzLCBvcHRpb25z
KTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlXSkudGhlbigoW2ltYWdlYml0
bWFwXSkgPT4gewotICAgICAgICAgICAgdmFyIGRzdENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOwotICAgICAgICAgICAgZHN0Q2FudmFzLndpZHRoID0gMjsKLSAgICAg
ICAgICAgIGRzdENhbnZhcy5oZWlnaHQgPSAyOwotICAgICAgICAgICAgdmFyIGRzdEN0eCA9IGRz
dENhbnZhcy5nZXRDb250ZXh0KCdiaXRtYXByZW5kZXJlcicpOwotICAgICAgICAgICAgZHN0Q3R4
LnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGltYWdlYml0bWFwKTsKLQotICAgICAgICAgICAgLy8g
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0IGRvZXMgbm90IGhhdmUgSW1hZ2VEYXRhLCBzbyB3
ZSBkcmF3Ci0gICAgICAgICAgICAvLyBpdCBvbiBhbm90aGVyIGNhbnZhcyBhbmQgcmVhZCBiYWNr
IHRoZSBkYXRhLgotICAgICAgICAgICAgdmFyIGZpbmFsQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgICAgICBmaW5hbENhbnZhcy53aWR0aCA9IDI7Ci0g
ICAgICAgICAgICBmaW5hbENhbnZhcy5oZWlnaHQgPSAyOwotICAgICAgICAgICAgdmFyIGN0eCA9
IGZpbmFsQ2FudmFzLmdldENvbnRleHQoJzJkJywKLSAgICAgICAgICAgICAgICB7Y29sb3JTcGFj
ZTogdGVzdFNjZW5hcmlvLmNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0
OiB0ZXN0U2NlbmFyaW8ucGl4ZWxGb3JtYXR9KTsKLSAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2Uo
ZHN0Q2FudmFzLCAwLCAwKTsKLSAgICAgICAgICAgIHZhciBhY3R1YWxQaXhlbHMgPSBjdHguZ2V0
SW1hZ2VEYXRhKDAsIDAsIDIsIDIpLmRhdGFVbmlvbjsKLSAgICAgICAgICAgIHRlc3RQaXhlbHMo
YWN0dWFsUGl4ZWxzLCBleHBlY3RlZFBpeGVscywgdGVzdFNjZW5hcmlvKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgfSwgZ2VuZXJhdGVUZXN0TmFtZSh0ZXN0U2NlbmFyaW8pKTsKLX0KLQotCi1mdW5j
dGlvbiBydW5BbGxUZXN0cygpIHsKLSAgICB2YXIgY29sb3JTcGFjZXMgPSBbCi0gICAgICAgIHtj
b2xvclNwYWNlOiAnc3JnYicsIHBpeGVsRm9ybWF0OiAndWludDgnfSwKLSAgICAgICAge2NvbG9y
U3BhY2U6ICdzcmdiJywgcGl4ZWxGb3JtYXQ6ICdmbG9hdDE2J30sCi0gICAgICAgIF07Ci0gICAg
dmFyIGFscGhhVmFsdWVzID0gWzAuNSwgMV07Ci0gICAgdmFyIGNvbG9yU3BhY2VDb252ZXJzaW9u
cyA9IFsnbm9uZScsICdkZWZhdWx0J107Ci0KLSAgICB2YXIgdGVzdFNjZW5hcmlvcyA9IFtdOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sb3JTcGFjZXMubGVuZ3RoOyBpKyspCi0gICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgYWxwaGFWYWx1ZXMubGVuZ3RoOyBqKyspCi0gICAgICAgICAg
ICBmb3IgKHZhciBrID0gMDsgayA8IGNvbG9yU3BhY2VDb252ZXJzaW9ucy5sZW5ndGg7IGsrKykg
ewotICAgICAgICAgICAgICAgIHZhciB0ZXN0U2NlbmFyaW8gPSB7fTsKLSAgICAgICAgICAgICAg
ICB0ZXN0U2NlbmFyaW8uY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VzW2ldLmNvbG9yU3BhY2U7Ci0g
ICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLnBpeGVsRm9ybWF0ID0gY29sb3JTcGFjZXNbaV0u
cGl4ZWxGb3JtYXQ7Ci0gICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmFscGhhID0gYWxwaGFW
YWx1ZXNbal07Ci0gICAgICAgICAgICAgICAgdGVzdFNjZW5hcmlvLmNvbG9yU3BhY2VDb252ZXJz
aW9uID0gY29sb3JTcGFjZUNvbnZlcnNpb25zW2tdOwotICAgICAgICAgICAgICAgIHRlc3RTY2Vu
YXJpb3MucHVzaCh0ZXN0U2NlbmFyaW8pOwotICAgICAgICAgICAgfQotCi0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0ZXN0U2NlbmFyaW9zLmxlbmd0aDsgaSsrKQotICAgICAgICBydW5UcmFuc2Zl
ckZyb21JbWFnZUJpdG1hcFRlc3QodGVzdFNjZW5hcmlvc1tpXSk7Ci19Ci0KLXJ1bkFsbFRlc3Rz
KCk7Ci0KLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy93M2MtaW1wb3J0LmxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
d2lkZS1nYW11dC1jYW52YXMvdzNjLWltcG9ydC5sb2cJKHJldmlzaW9uIDI3NjcxNikKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxl
bWVudC93aWRlLWdhbXV0LWNhbnZhcy93M2MtaW1wb3J0LmxvZwkod29ya2luZyBjb3B5KQpAQCAt
MTQsMTcgKzE0LDkgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZQog
Tm9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy9JbWFnZURhdGEtZmlkZWxpdHkuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy9jYW52YXMtY29sb3JNYW5hZ2VkLWNvbnZlcnRUb0Jsb2Itcm91bmR0cmlwLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yTWFuYWdlZC10b0Jsb2ItdG9EYXRhVVJM
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNvbG9yc3BhY2UtYXJndW1l
bnRzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvY2FudmFzLWNyZWF0ZUltYWdlQml0
bWFwLWVfc3JnYi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1jcmVhdGVQ
dXRHZXRJbWFnZURhdGEtY29sb3JNYW5hZ2VkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52
YXMvY2FudmFzLWRyYXctaGlnaC1iaXQtZGVwdGgtaW1hZ2VzLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1n
YW11dC1jYW52YXMvY2FudmFzLWRyYXdJbWFnZS1lX3NyZ2IuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy9jYW52YXMtZHJhd0ltYWdlLW9mZnNjcmVlbkNhbnZhcy5odG1sCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzL2NhbnZhcy1nZXRJbWFnZURhdGEtZV9zcmdiLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yTWFuYWdlZEJlaGF2aW9yLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvaW1hZ2VEYXRhLWNvbG9yU3BhY2UuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxl
bWVudC93aWRlLWdhbXV0LWNhbnZhcy9pbWFnZWRhdGEtbm8tY29sb3Itc2V0dGluZ3MtY3Jhc2gu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy90cmFuc2ZlckZyb21JbWFnZUJpdG1hcC5o
dG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLmh0
bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG8uc3JnYi5o
dG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvQmxvYi5w
My5jYW52YXMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5w
My50b0Jsb2Iud2l0aC5wdXRJbWFnZURhdGEuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy8yZC5jb2xvci5zcGFjZS5wMy50b0RhdGFVUkwucDMuY2FudmFzLmh0bWwKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lk
ZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG9EYXRhVVJMLndpdGgucHV0SW1hZ2VE
YXRhLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>